- Moved the terget->velz assignment to the end of A_VileAttack to remove the

influence of vertical thrust from the radius attack, since ZDoom does
  explosions in three dimensions, but Doom only did it in two.
- Fixed: The last three parameters to A_VileAttack had their references off
  by one. Most notably as a result, the blast radius was used as the thrust,
  so it sent you flying far faster than it should have.


SVN r1745 (trunk)
This commit is contained in:
Randy Heit 2009-08-02 04:11:48 +00:00
parent 1e554a1fcc
commit 8330a69212
2 changed files with 12 additions and 7 deletions

View File

@ -1,4 +1,10 @@
August 1, 2009
- Moved the terget->velz assignment to the end of A_VileAttack to remove the
influence of vertical thrust from the radius attack, since ZDoom does
explosions in three dimensions, but Doom only did it in two.
- Fixed: The last three parameters to A_VileAttack had their references off
by one. Most notably as a result, the blast radius was used as the thrust,
so it sent you flying far faster than it should have.
- Restored the reactiontime countdown for A_SpawnFly, since some Dehacked
mod could conceivable rely on it. The deadline is now kept in special2
and used in preference as long as it is non-zero.

View File

@ -103,16 +103,16 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileTarget)
//
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
{
ACTION_PARAM_START(5);
ACTION_PARAM_START(6);
ACTION_PARAM_SOUND(snd,0);
ACTION_PARAM_INT(dmg,1);
ACTION_PARAM_INT(blastdmg,2);
ACTION_PARAM_INT(blastrad,2);
ACTION_PARAM_FIXED(thrust,3);
ACTION_PARAM_NAME(dmgtype,4);
ACTION_PARAM_INT(blastrad,3);
ACTION_PARAM_FIXED(thrust,4);
ACTION_PARAM_NAME(dmgtype,5);
AActor *fire, *target;
int an;
angle_t an;
if (NULL == (target = self->target))
return;
@ -125,10 +125,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
S_Sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
P_TraceBleed (dmg, target);
P_DamageMobj (target, self, self, dmg, NAME_None);
target->velz = Scale(thrust, 1000, target->Mass);
an = self->angle >> ANGLETOFINESHIFT;
fire = self->tracer;
if (fire != NULL)
@ -140,4 +138,5 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
P_RadiusAttack (fire, self, blastdmg, blastrad, dmgtype, false);
}
target->velz = Scale(thrust, 1000, target->Mass);
}