From 8330a6921261d79bad4e8072c677fe8007f9470f Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sun, 2 Aug 2009 04:11:48 +0000 Subject: [PATCH] - 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) --- docs/rh-log.txt | 6 ++++++ src/g_doom/a_archvile.cpp | 13 ++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 30e01edac9..c4a996d500 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -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. diff --git a/src/g_doom/a_archvile.cpp b/src/g_doom/a_archvile.cpp index ac620284c2..53e0ea2022 100644 --- a/src/g_doom/a_archvile.cpp +++ b/src/g_doom/a_archvile.cpp @@ -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); }