mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-20 18:42:26 +00:00
- Exhumed: pActor->s() in wasp.cpp
This commit is contained in:
parent
eda75a38d2
commit
046ff607dc
1 changed files with 52 additions and 58 deletions
|
@ -34,57 +34,54 @@ static actionSeq WaspSeq[] = {
|
|||
{29, 1}
|
||||
};
|
||||
|
||||
void SetWaspVel(spritetype* pSprite)
|
||||
void SetWaspVel(DExhumedActor* pActor)
|
||||
{
|
||||
pSprite->xvel = bcos(pSprite->ang);
|
||||
pSprite->yvel = bsin(pSprite->ang);
|
||||
pActor->spr.xvel = bcos(pActor->spr.ang);
|
||||
pActor->spr.yvel = bsin(pActor->spr.ang);
|
||||
}
|
||||
|
||||
DExhumedActor* BuildWasp(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle, bool bEggWasp)
|
||||
{
|
||||
spritetype* pSprite;
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 107);
|
||||
pSprite = &pActor->s();
|
||||
|
||||
pSprite->pos.X = x;
|
||||
pSprite->pos.Y = y;
|
||||
pSprite->pos.Z = z;
|
||||
pActor->spr.pos.X = x;
|
||||
pActor->spr.pos.Y = y;
|
||||
pActor->spr.pos.Z = z;
|
||||
}
|
||||
else
|
||||
{
|
||||
pSprite = &pActor->s();
|
||||
nAngle = pSprite->ang;
|
||||
nAngle = pActor->spr.ang;
|
||||
ChangeActorStat(pActor, 107);
|
||||
}
|
||||
|
||||
pSprite->shade = -12;
|
||||
pSprite->cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pSprite->pal = pSprite->sector()->ceilingpal;
|
||||
pSprite->clipdist = 70;
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.clipdist = 70;
|
||||
|
||||
if (bEggWasp)
|
||||
{
|
||||
pSprite->xrepeat = 20;
|
||||
pSprite->yrepeat = 20;
|
||||
pActor->spr.xrepeat = 20;
|
||||
pActor->spr.yrepeat = 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
pSprite->xrepeat = 50;
|
||||
pSprite->yrepeat = 50;
|
||||
pActor->spr.xrepeat = 50;
|
||||
pActor->spr.yrepeat = 50;
|
||||
}
|
||||
|
||||
pSprite->xoffset = 0;
|
||||
pSprite->yoffset = 0;
|
||||
pSprite->picnum = 1;
|
||||
pSprite->ang = nAngle;
|
||||
pSprite->xvel = 0;
|
||||
pSprite->yvel = 0;
|
||||
pSprite->zvel = 0;
|
||||
pSprite->hitag = 0;
|
||||
pSprite->lotag = runlist_HeadRun() + 1;
|
||||
pSprite->extra = -1;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.picnum = 1;
|
||||
pActor->spr.ang = nAngle;
|
||||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
pActor->spr.zvel = 0;
|
||||
pActor->spr.hitag = 0;
|
||||
pActor->spr.lotag = runlist_HeadRun() + 1;
|
||||
pActor->spr.extra = -1;
|
||||
|
||||
// GrabTimeSlot(3);
|
||||
|
||||
|
@ -109,7 +106,7 @@ DExhumedActor* BuildWasp(DExhumedActor* pActor, int x, int y, int z, sectortype*
|
|||
pActor->nVel = 0;
|
||||
pActor->nAngle2 = RandomSize(7) + 127;
|
||||
|
||||
pSprite->owner = runlist_AddRunRec(pSprite->lotag - 1, pActor, 0x1E0000);
|
||||
pActor->spr.owner = runlist_AddRunRec(pActor->spr.lotag - 1, pActor, 0x1E0000);
|
||||
|
||||
pActor->nRun = runlist_AddRunRec(NewRun, pActor, 0x1E0000);
|
||||
|
||||
|
@ -131,9 +128,8 @@ void AIWasp::RadialDamage(RunListEvent* ev)
|
|||
{
|
||||
auto pActor = ev->pObjActor;
|
||||
if (!pActor) return;
|
||||
auto pSprite = &pActor->s();
|
||||
|
||||
if (!(pSprite->cstat & CSTAT_SPRITE_BLOCK_ALL))
|
||||
if (!(pActor->spr.cstat & CSTAT_SPRITE_BLOCK_ALL))
|
||||
return;
|
||||
|
||||
ev->nDamage = runlist_CheckRadialDamage(pActor);
|
||||
|
@ -144,7 +140,6 @@ void AIWasp::Damage(RunListEvent* ev)
|
|||
{
|
||||
auto pActor = ev->pObjActor;
|
||||
if (!pActor) return;
|
||||
auto pSprite = &pActor->s();
|
||||
|
||||
if (!ev->nDamage) {
|
||||
return;
|
||||
|
@ -163,12 +158,12 @@ void AIWasp::Damage(RunListEvent* ev)
|
|||
}
|
||||
|
||||
pActor->nAction = 1;
|
||||
pSprite->ang += RandomSize(9) + 768;
|
||||
pSprite->ang &= kAngleMask;
|
||||
pActor->spr.ang += RandomSize(9) + 768;
|
||||
pActor->spr.ang &= kAngleMask;
|
||||
|
||||
pActor->nVel = 3000;
|
||||
|
||||
pSprite->zvel = (-20) - RandomSize(6);
|
||||
pActor->spr.zvel = (-20) - RandomSize(6);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -176,12 +171,12 @@ void AIWasp::Damage(RunListEvent* ev)
|
|||
pActor->nAction = 4;
|
||||
pActor->nFrame = 0;
|
||||
|
||||
pSprite->cstat = 0;
|
||||
pSprite->ang = (pSprite->ang + 1024) & kAngleMask;
|
||||
pActor->spr.cstat = 0;
|
||||
pActor->spr.ang = (pActor->spr.ang + 1024) & kAngleMask;
|
||||
|
||||
SetWaspVel(pSprite);
|
||||
SetWaspVel(pActor);
|
||||
|
||||
pSprite->zvel = 512;
|
||||
pActor->spr.zvel = 512;
|
||||
|
||||
nCreaturesKilled++;
|
||||
}
|
||||
|
@ -193,7 +188,6 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
{
|
||||
auto pActor = ev->pObjActor;
|
||||
if (!pActor) return;
|
||||
auto pSprite = &pActor->s();
|
||||
int nAction = pActor->nAction;
|
||||
|
||||
DExhumedActor* pTarget = nullptr;
|
||||
|
@ -202,7 +196,7 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
|
||||
int nSeq = SeqOffsets[kSeqWasp] + WaspSeq[nAction].a;
|
||||
|
||||
pSprite->picnum = seq_GetSeqPicnum2(nSeq, pActor->nFrame);
|
||||
pActor->spr.picnum = seq_GetSeqPicnum2(nSeq, pActor->nFrame);
|
||||
|
||||
seq_MoveSequence(pActor, nSeq, pActor->nFrame);
|
||||
|
||||
|
@ -234,7 +228,7 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
|
||||
case 0:
|
||||
{
|
||||
pSprite->zvel = bsin(pActor->nAngle, -4);
|
||||
pActor->spr.zvel = bsin(pActor->nAngle, -4);
|
||||
|
||||
pActor->nAngle += pActor->nAngle2;
|
||||
pActor->nAngle &= kAngleMask;
|
||||
|
@ -250,7 +244,7 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
}
|
||||
else
|
||||
{
|
||||
pSprite->zvel = 0;
|
||||
pActor->spr.zvel = 0;
|
||||
pActor->nAction = 1;
|
||||
pActor->nFrame = 0;
|
||||
pActor->nVel = 1500;
|
||||
|
@ -294,8 +288,8 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
{
|
||||
if (nChaseVal.actor() == pTarget)
|
||||
{
|
||||
pSprite->xvel = 0;
|
||||
pSprite->yvel = 0;
|
||||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
runlist_DamageEnemy(pTarget, pActor, pActor->nDamage);
|
||||
pActor->nAction = 2;
|
||||
pActor->nFrame = 0;
|
||||
|
@ -312,9 +306,9 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
{
|
||||
if (bVal)
|
||||
{
|
||||
pSprite->ang += RandomSize(9) + 768;
|
||||
pSprite->ang &= kAngleMask;
|
||||
pSprite->zvel = (-20) - RandomSize(6);
|
||||
pActor->spr.ang += RandomSize(9) + 768;
|
||||
pActor->spr.ang &= kAngleMask;
|
||||
pActor->spr.zvel = (-20) - RandomSize(6);
|
||||
|
||||
pActor->nAction = 1;
|
||||
pActor->nVel = 3000;
|
||||
|
@ -327,9 +321,9 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
|
||||
//if (nMove.type != kHitNone) // The code messed up the return value so this check always was true.
|
||||
{
|
||||
pSprite->xvel = 0;
|
||||
pSprite->yvel = 0;
|
||||
pSprite->zvel = 1024;
|
||||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
pActor->spr.zvel = 1024;
|
||||
pActor->nAction = 5;
|
||||
pActor->nFrame = 0;
|
||||
}
|
||||
|
@ -338,21 +332,21 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
}
|
||||
case 5:
|
||||
{
|
||||
auto pSector =pSprite->sector();
|
||||
auto pSector =pActor->spr.sector();
|
||||
|
||||
pSprite->pos.Z += pSprite->zvel;
|
||||
pActor->spr.pos.Z += pActor->spr.zvel;
|
||||
|
||||
if (pSprite->pos.Z >= pSector->floorz)
|
||||
if (pActor->spr.pos.Z >= pSector->floorz)
|
||||
{
|
||||
if (pSector->pBelow != nullptr)
|
||||
{
|
||||
BuildSplash(pActor, pSector);
|
||||
pSprite->cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
pActor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
|
||||
pSprite->xvel = 0;
|
||||
pSprite->yvel = 0;
|
||||
pSprite->zvel = 0;
|
||||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
pActor->spr.zvel = 0;
|
||||
pActor->nAction = 6;
|
||||
pActor->nFrame = 0;
|
||||
runlist_SubRunRec(pActor->nRun);
|
||||
|
|
Loading…
Reference in a new issue