- after looking at the most recent Vavoom update I realized that A_FastChase should not

use the multi-purpose special2 as counter for strafing so I added a new variable
  for this purpose.
- forgot to save p_lnspec.cpp before last commut.


SVN r574 (trunk)
This commit is contained in:
Christoph Oelckers 2007-11-28 13:53:55 +00:00
parent 0c5731223c
commit aeee07218c
5 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,8 @@
November 28, 2007 (Changes by Graf Zahl)
- after looking at the most recent Vavoom update I realized that A_FastChase should not
use the multi-purpose special2 as counter for strafing so I added a new variable
for this purpose.
November 24, 2007 (Changes by Graf Zahl) November 24, 2007 (Changes by Graf Zahl)
- added Floor_MoveToValue and Ceiling_MoveToValue action specials. - added Floor_MoveToValue and Ceiling_MoveToValue action specials.

View File

@ -692,6 +692,7 @@ public:
fixed_t bouncefactor; // Strife's grenades use 50%, Hexen's Flechettes 70. fixed_t bouncefactor; // Strife's grenades use 50%, Hexen's Flechettes 70.
int bouncecount; // Strife's grenades only bounce twice before exploding int bouncecount; // Strife's grenades only bounce twice before exploding
fixed_t gravity; // [GRB] Gravity factor fixed_t gravity; // [GRB] Gravity factor
int FastChaseStrafeCount;
// a linked list of sectors where this object appears // a linked list of sectors where this object appears
struct msecnode_s *touching_sectorlist; // phares 3/14/98 struct msecnode_s *touching_sectorlist; // phares 3/14/98

View File

@ -1963,13 +1963,13 @@ void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missi
if (fastchase && !dontmove) if (fastchase && !dontmove)
{ {
if (actor->special2 > 0) if (actor->FastChaseStrafeCount > 0)
{ {
actor->special2--; actor->FastChaseStrafeCount--;
} }
else else
{ {
actor->special2 = 0; actor->FastChaseStrafeCount = 0;
actor->momx = 0; actor->momx = 0;
actor->momy = 0; actor->momy = 0;
fixed_t dist = P_AproxDistance (actor->x - actor->target->x, actor->y - actor->target->y); fixed_t dist = P_AproxDistance (actor->x - actor->target->x, actor->y - actor->target->y);
@ -1982,7 +1982,7 @@ void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missi
else ang -= ANGLE_90; else ang -= ANGLE_90;
actor->momx = 13 * finecosine[ang>>ANGLETOFINESHIFT]; actor->momx = 13 * finecosine[ang>>ANGLETOFINESHIFT];
actor->momy = 13 * finesine[ang>>ANGLETOFINESHIFT]; actor->momy = 13 * finesine[ang>>ANGLETOFINESHIFT];
actor->special2 = 3; // strafe time actor->FastChaseStrafeCount = 3; // strafe time
} }
} }
} }
@ -2056,7 +2056,7 @@ void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missi
// //
// class bosses don't do this when strafing // class bosses don't do this when strafing
if ((!fastchase || !actor->special2) && !dontmove) if ((!fastchase || !actor->FastChaseStrafeCount) && !dontmove)
{ {
// CANTLEAVEFLOORPIC handling was completely missing in the non-serpent functions. // CANTLEAVEFLOORPIC handling was completely missing in the non-serpent functions.
fixed_t oldX = actor->x; fixed_t oldX = actor->x;

View File

@ -2798,7 +2798,7 @@ lnSpecFunc LineSpecials[256] =
LS_ClearForceField, LS_ClearForceField,
LS_Floor_RaiseByValueTimes8, LS_Floor_RaiseByValueTimes8,
LS_Floor_LowerByValueTimes8, LS_Floor_LowerByValueTimes8,
LS_Floor_MoveToValue LS_Floor_MoveToValue,
LS_Ceiling_Waggle, LS_Ceiling_Waggle,
LS_Teleport_ZombieChanger, LS_Teleport_ZombieChanger,
LS_Ceiling_LowerByValue, LS_Ceiling_LowerByValue,

View File

@ -315,7 +315,8 @@ void AActor::Serialize (FArchive &arc)
<< meleethreshold << meleethreshold
<< meleerange << meleerange
<< DamageType << DamageType
<< gravity; << gravity
<< FastChaseStrafeCount;
if (arc.IsStoring ()) if (arc.IsStoring ())
{ {