mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- Exhumed: separate AngleChase abuse from zvel variable.
This commit is contained in:
parent
bd520e63dd
commit
446b02c11b
6 changed files with 16 additions and 11 deletions
|
@ -622,6 +622,7 @@ void DExhumedActor::Serialize(FSerializer& arc)
|
|||
("index2", nIndex2)
|
||||
("channel", nChannel)
|
||||
("damage", nDamage)
|
||||
("angle2", angle2)
|
||||
|
||||
("turn", nTurn)
|
||||
("x", x)
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
union { int16_t nIndex2; int16_t nAngle2; }; // index2 is for scorpion, angle2 is for wasp.
|
||||
union { int16_t nChannel; int16_t nVel; }; // channel is for scorpion, vel is for wasp.
|
||||
union { int16_t nDamage; int16_t nAction2; }; // nAction2 is for the queen.
|
||||
int/*DAngle*/ angle2; // used by the queen
|
||||
|
||||
// for the grenade.
|
||||
int nTurn;
|
||||
|
|
|
@ -363,10 +363,12 @@ void StartRegenerate(DExhumedActor* pActor)
|
|||
auto pos = Regenerates.Find(pActor);
|
||||
if (pos >= Regenerates.Size())
|
||||
{
|
||||
// ?? CHECKME
|
||||
pActor->spr.xvel = pActor->spr.xrepeat;
|
||||
pActor->set_int_zvel(pActor->spr.shade);
|
||||
pActor->spr.yvel = pActor->spr.pal;
|
||||
#if 0
|
||||
// ?? CHECKME (looks like broken multiplayer stuff - fields get never set properly.)
|
||||
pActor->spr. xvel = pActor->spr.xrepeat;
|
||||
pActor->spr. zvel = pActor->spr.shade;
|
||||
pActor->spr. yvel = pActor->spr.pal;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1111,7 +1111,7 @@ Collision AngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int ebx, int
|
|||
|
||||
if (pActor2 == nullptr)
|
||||
{
|
||||
pActor->clear_zvel();
|
||||
pActor->angle2 = 0;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
else
|
||||
|
@ -1150,14 +1150,14 @@ Collision AngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int ebx, int
|
|||
}
|
||||
|
||||
nAngle = (nAngDelta + pActor->int_ang()) & kAngleMask;
|
||||
int nAngDeltaD = AngleDelta(pActor->int_zvel(), var_18, 24);
|
||||
int nAngDeltaD = AngleDelta(pActor->angle2, var_18, 24);
|
||||
|
||||
pActor->set_int_zvel((pActor->int_zvel() + nAngDeltaD) & kAngleMask);
|
||||
pActor->angle2 = (pActor->angle2 + nAngDeltaD) & kAngleMask;
|
||||
}
|
||||
|
||||
pActor->set_int_ang(nAngle);
|
||||
|
||||
int eax = abs(bcos(pActor->int_zvel()));
|
||||
int eax = abs(bcos(pActor->angle2));
|
||||
|
||||
int x = ((bcos(nAngle) * ebx) >> 14) * eax;
|
||||
int y = ((bsin(nAngle) * ebx) >> 14) * eax;
|
||||
|
|
|
@ -290,7 +290,7 @@ Collision QueenAngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int val
|
|||
|
||||
if (pActor2 == nullptr)
|
||||
{
|
||||
pActor->clear_zvel();
|
||||
pActor->angle2 = 0;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
else
|
||||
|
@ -325,12 +325,12 @@ Collision QueenAngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int val
|
|||
|
||||
nAngle = (nAngDelta + pActor->int_ang()) & kAngleMask;
|
||||
|
||||
pActor->set_int_zvel((AngleDelta(pActor->int_zvel(), var_14, 24) + pActor->int_zvel()) & kAngleMask); // not really avelocity
|
||||
pActor->angle2 = (AngleDelta(pActor->angle2, var_14, 24) + pActor->angle2) & kAngleMask;
|
||||
}
|
||||
|
||||
pActor->set_int_ang(nAngle);
|
||||
|
||||
int da = pActor->int_zvel();
|
||||
int da = pActor->angle2;
|
||||
int x = abs(bcos(da));
|
||||
|
||||
int v26 = x * ((val1 * bcos(nAngle)) >> 14);
|
||||
|
|
|
@ -242,6 +242,7 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
}
|
||||
else
|
||||
{
|
||||
pActor->angle2 = 0;
|
||||
pActor->clear_zvel();
|
||||
pActor->nAction = 1;
|
||||
pActor->nFrame = 0;
|
||||
|
|
Loading…
Reference in a new issue