- 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 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 - Restored the reactiontime countdown for A_SpawnFly, since some Dehacked
mod could conceivable rely on it. The deadline is now kept in special2 mod could conceivable rely on it. The deadline is now kept in special2
and used in preference as long as it is non-zero. 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) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
{ {
ACTION_PARAM_START(5); ACTION_PARAM_START(6);
ACTION_PARAM_SOUND(snd,0); ACTION_PARAM_SOUND(snd,0);
ACTION_PARAM_INT(dmg,1); ACTION_PARAM_INT(dmg,1);
ACTION_PARAM_INT(blastdmg,2); ACTION_PARAM_INT(blastdmg,2);
ACTION_PARAM_INT(blastrad,2); ACTION_PARAM_INT(blastrad,3);
ACTION_PARAM_FIXED(thrust,3); ACTION_PARAM_FIXED(thrust,4);
ACTION_PARAM_NAME(dmgtype,4); ACTION_PARAM_NAME(dmgtype,5);
AActor *fire, *target; AActor *fire, *target;
int an; angle_t an;
if (NULL == (target = self->target)) if (NULL == (target = self->target))
return; return;
@ -125,10 +125,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
S_Sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM); S_Sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
P_TraceBleed (dmg, target); P_TraceBleed (dmg, target);
P_DamageMobj (target, self, self, dmg, NAME_None); P_DamageMobj (target, self, self, dmg, NAME_None);
target->velz = Scale(thrust, 1000, target->Mass);
an = self->angle >> ANGLETOFINESHIFT; an = self->angle >> ANGLETOFINESHIFT;
fire = self->tracer; fire = self->tracer;
if (fire != NULL) if (fire != NULL)
@ -140,4 +138,5 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
P_RadiusAttack (fire, self, blastdmg, blastrad, dmgtype, false); P_RadiusAttack (fire, self, blastdmg, blastrad, dmgtype, false);
} }
target->velz = Scale(thrust, 1000, target->Mass);
} }