mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-26 05:51:30 +00:00
refactored SEQ callbacks as well.
This commit is contained in:
parent
11f094c7fb
commit
2c08ee0c5d
37 changed files with 517 additions and 756 deletions
|
@ -1914,7 +1914,7 @@ static void actNapalmMove(DBloodActor* actor)
|
|||
actor->spr.Angles.Yaw = (ang + rndang).Normalized360();
|
||||
auto spawned = actFireThing(actor, 0., 0., -0.5774, kThingNapalmBall, t1);
|
||||
spawned->SetOwner(actor->GetOwner());
|
||||
seqSpawn(61, spawned, nNapalmClient);
|
||||
seqSpawn(61, spawned, AF(NapalmSeqCallback));
|
||||
spawned->xspr.data4 = spawnparam[i];
|
||||
}
|
||||
}
|
||||
|
@ -1957,7 +1957,7 @@ static bool actKillDudeStage1(DBloodActor* actor, DAMAGE_TYPE damageType)
|
|||
break;
|
||||
#endif
|
||||
case kDudeCerberusTwoHead: // Cerberus
|
||||
seqSpawn(getDudeInfo(actor)->seqStartID + 1, actor, -1);
|
||||
seqSpawn(getDudeInfo(actor)->seqStartID + 1, actor, nullptr);
|
||||
return true;
|
||||
|
||||
case kDudeCultistTommy:
|
||||
|
@ -2184,12 +2184,12 @@ static void zombieAxeNormalDeath(DBloodActor* actor, int nSeq)
|
|||
sfxPlay3DSound(actor, 1107 + Random(2), -1, 0);
|
||||
if (nSeq == 2)
|
||||
{
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, AF(DudeToGibCallback1));
|
||||
spawnGibs(actor, GIBTYPE_27, -0xccccc);
|
||||
}
|
||||
else if (nSeq == 1 && Chance(0x4000))
|
||||
{
|
||||
seqSpawn(pDudeInfo->seqStartID + 7, actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 7, actor, AF(DudeToGibCallback1));
|
||||
evPostActor(actor, 0, AF(fxZombieBloodSpurt));
|
||||
sfxPlay3DSound(actor, 362, -1, 0);
|
||||
actor->xspr.data1 = 35;
|
||||
|
@ -2197,9 +2197,9 @@ static void zombieAxeNormalDeath(DBloodActor* actor, int nSeq)
|
|||
|
||||
spawnGibs(actor, GIBTYPE_27, -0x111111);
|
||||
}
|
||||
else if (nSeq == 14)seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
else if (nSeq == 3) seqSpawn(pDudeInfo->seqStartID + 13, actor, nDudeToGibClient2);
|
||||
else seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nDudeToGibClient1);
|
||||
else if (nSeq == 14)seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nullptr);
|
||||
else if (nSeq == 3) seqSpawn(pDudeInfo->seqStartID + 13, actor, AF(DudeToGibCallback2));
|
||||
else seqSpawn(pDudeInfo->seqStartID + nSeq, actor, AF(DudeToGibCallback1));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2218,10 +2218,10 @@ static void burningCultistDeath(DBloodActor* actor, int nSeq)
|
|||
{
|
||||
for (int i = 0; i < 3; i++)
|
||||
GibSprite(actor, GIBTYPE_7, nullptr, nullptr);
|
||||
seqSpawn(pDudeInfo->seqStartID + 16 - Random(1), actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 16 - Random(1), actor, AF(DudeToGibCallback1));
|
||||
}
|
||||
else
|
||||
seqSpawn(pDudeInfo->seqStartID + 15, actor, nDudeToGibClient2);
|
||||
seqSpawn(pDudeInfo->seqStartID + 15, actor, AF(DudeToGibCallback2));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2241,11 +2241,11 @@ void zombieAxeBurningDeath(DBloodActor* actor, int nSeq)
|
|||
|
||||
if (Chance(0x8000))
|
||||
{
|
||||
seqSpawn(pDudeInfo->seqStartID + 13, actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 13, actor, AF(DudeToGibCallback1));
|
||||
spawnGibs(actor, GIBTYPE_27, -0xccccc);
|
||||
}
|
||||
else
|
||||
seqSpawn(pDudeInfo->seqStartID + 13, actor, nDudeToGibClient2);
|
||||
seqSpawn(pDudeInfo->seqStartID + 13, actor, AF(DudeToGibCallback2));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2261,14 +2261,14 @@ static void zombieButcherDeath(DBloodActor* actor, int nSeq)
|
|||
if (nSeq == 14)
|
||||
{
|
||||
sfxPlay3DSound(actor, 1206, -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + 11, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 11, actor);
|
||||
return;
|
||||
}
|
||||
sfxPlay3DSound(actor, 1204 + Random(2), -1, 0);
|
||||
if (nSeq == 3)
|
||||
seqSpawn(pDudeInfo->seqStartID + 10, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 10, actor);
|
||||
else
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2281,7 +2281,7 @@ static void genericDeath(DBloodActor* actor, int nSeq, int sound1, int seqnum)
|
|||
{
|
||||
if (Chance(0x4000) && nSeq == 3) sfxPlay3DSound(actor, sound1 + 2, -1, 0);
|
||||
else sfxPlay3DSound(actor, sound1 + Random(2), -1, 0);
|
||||
seqSpawn(seqnum, actor, -1);
|
||||
seqSpawn(seqnum, actor);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2331,7 +2331,7 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
|
|||
case kDudeCultistTesla:
|
||||
case kDudeCultistTNT:
|
||||
sfxPlay3DSound(actor, 1018 + Random(2), -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nSeq == 3 ? nDudeToGibClient2 : nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nSeq == 3 ? AF(DudeToGibCallback2) : AF(DudeToGibCallback1));
|
||||
break;
|
||||
|
||||
case kDudeBurningCultist:
|
||||
|
@ -2362,7 +2362,7 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
|
|||
|
||||
case kDudeBurningInnocent:
|
||||
damageType = kDamageExplode;
|
||||
seqSpawn(pDudeInfo->seqStartID + 7, actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 7, actor, AF(DudeToGibCallback1));
|
||||
break;
|
||||
|
||||
case kDudeZombieButcher:
|
||||
|
@ -2406,7 +2406,7 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
|
|||
|
||||
case kDudeSpiderMother:
|
||||
sfxPlay3DSound(actor, 1850, -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
break;
|
||||
|
||||
case kDudeGillBeast:
|
||||
|
@ -2437,15 +2437,15 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
|
|||
break;
|
||||
case kDudeTentacleGreen:
|
||||
sfxPlay3DSound(actor, damage == 5 ? 2471 : 2472, -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
break;
|
||||
case kDudePodFire:
|
||||
sfxPlay3DSound(actor, damage == 5 ? 2451 : 2452, -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
break;
|
||||
case kDudeTentacleFire:
|
||||
sfxPlay3DSound(actor, 2501, -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -2462,26 +2462,26 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
|
|||
|
||||
case kDudeTchernobog:
|
||||
sfxPlay3DSound(actor, 2380, -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
break;
|
||||
|
||||
case kDudeBurningTinyCaleb:
|
||||
damageType = kDamageExplode;
|
||||
seqSpawn(pDudeInfo->seqStartID + 11, actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 11, actor, AF(DudeToGibCallback1));
|
||||
break;
|
||||
|
||||
case kDudeBeast:
|
||||
sfxPlay3DSound(actor, 9000 + Random(2), -1, 0);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nSeq == 3 ? nDudeToGibClient2 : nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, nSeq == 3 ? AF(DudeToGibCallback2) : AF(DudeToGibCallback1));
|
||||
break;
|
||||
|
||||
case kDudeBurningBeast:
|
||||
damageType = kDamageExplode;
|
||||
seqSpawn(pDudeInfo->seqStartID + 12, actor, nDudeToGibClient1);
|
||||
seqSpawn(pDudeInfo->seqStartID + 12, actor, AF(DudeToGibCallback1));
|
||||
break;
|
||||
|
||||
default:
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID + nSeq, actor);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2598,20 +2598,20 @@ static int actDamageThing(DBloodActor* source, DBloodActor* actor, int damage, D
|
|||
}
|
||||
break;
|
||||
case kTrapMachinegun:
|
||||
seqSpawn(28, actor, -1);
|
||||
seqSpawn(28, actor);
|
||||
break;
|
||||
|
||||
case kThingFluorescent:
|
||||
seqSpawn(12, actor, -1);
|
||||
seqSpawn(12, actor);
|
||||
GibSprite(actor, GIBTYPE_6, nullptr, nullptr);
|
||||
break;
|
||||
|
||||
case kThingSpiderWeb:
|
||||
seqSpawn(15, actor, -1);
|
||||
seqSpawn(15, actor);
|
||||
break;
|
||||
|
||||
case kThingMetalGrate:
|
||||
seqSpawn(21, actor, -1);
|
||||
seqSpawn(21, actor);
|
||||
GibSprite(actor, GIBTYPE_4, nullptr, nullptr);
|
||||
break;
|
||||
|
||||
|
@ -2625,12 +2625,12 @@ static int actDamageThing(DBloodActor* source, DBloodActor* actor, int damage, D
|
|||
break;
|
||||
|
||||
case 0:
|
||||
seqSpawn(25, actor, nTreeToGibClient);
|
||||
seqSpawn(25, actor, AF(TreeToGibCallback));
|
||||
sfxPlay3DSound(actor, 351, -1, 0);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
seqSpawn(26, actor, nTreeToGibClient);
|
||||
seqSpawn(26, actor, AF(TreeToGibCallback));
|
||||
sfxPlay3DSound(actor, 351, -1, 0);
|
||||
break;
|
||||
}
|
||||
|
@ -2756,7 +2756,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
actPostSprite(missileActor, kStatDecoration);
|
||||
if (missileActor->spr.Angles.Yaw == DAngle180) sfxPlay3DSound(missileActor, 307, -1, 0);
|
||||
missileActor->ChangeType(kSpriteDecoration);
|
||||
seqSpawn(9, missileActor, -1);
|
||||
seqSpawn(9, missileActor);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2923,7 +2923,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
sfxKill3DSound(missileActor, -1, -1);
|
||||
sfxPlay3DSectorSound(missileActor->spr.pos, 522, missileActor->sector());
|
||||
actPostSprite(missileActor, kStatDebris);
|
||||
seqSpawn(20, missileActor, -1);
|
||||
seqSpawn(20, missileActor);
|
||||
if (hitCode == 3 && actorHit && actorHit->hasX())
|
||||
{
|
||||
if (actorHit->spr.statnum == kStatDude)
|
||||
|
@ -2938,7 +2938,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
actPostSprite(missileActor, kStatDebris);
|
||||
missileActor->spr.cstat &= ~CSTAT_SPRITE_ALIGNMENT_WALL;
|
||||
missileActor->ChangeType(kSpriteDecoration);
|
||||
seqSpawn(20, missileActor, -1);
|
||||
seqSpawn(20, missileActor);
|
||||
if (hitCode == 3 && actorHit && actorHit->hasX())
|
||||
{
|
||||
if (actorHit->spr.statnum == kStatDude)
|
||||
|
@ -4242,7 +4242,7 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
{
|
||||
case kMissileFireballNapalm:
|
||||
nType = kExplosionNapalm;
|
||||
seqSpawn(4, actor, -1);
|
||||
seqSpawn(4, actor);
|
||||
if (Chance(0x8000)) actor->spr.cstat |= CSTAT_SPRITE_XFLIP;
|
||||
sfxPlay3DSound(actor, 303, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
|
@ -4250,7 +4250,7 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
|
||||
case kMissileFlareAlt:
|
||||
nType = kExplosionFireball;
|
||||
seqSpawn(9, actor, -1);
|
||||
seqSpawn(9, actor);
|
||||
if (Chance(0x8000)) actor->spr.cstat |= CSTAT_SPRITE_XFLIP;
|
||||
sfxPlay3DSound(actor, 306, 24 + (actor->GetIndex() & 3), FX_GlobalChannel);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
|
@ -4259,15 +4259,15 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
case kMissileFireballCerberus:
|
||||
case kMissileFireballTchernobog:
|
||||
nType = kExplosionFireball;
|
||||
seqSpawn(5, actor, -1);
|
||||
seqSpawn(5, actor);
|
||||
sfxPlay3DSound(actor, 304, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
break;
|
||||
|
||||
case kThingArmedTNTStick:
|
||||
nType = kExplosionSmall;
|
||||
if (actor->hit.florhit.type == kHitNone) seqSpawn(4, actor, -1);
|
||||
else seqSpawn(3, actor, -1);
|
||||
if (actor->hit.florhit.type == kHitNone) seqSpawn(4, actor);
|
||||
else seqSpawn(3, actor);
|
||||
sfxPlay3DSound(actor, 303, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
break;
|
||||
|
@ -4279,16 +4279,16 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
case kModernThingTNTProx:
|
||||
#endif
|
||||
nType = kExplosionStandard;
|
||||
if (actor->hit.florhit.type == kHitNone) seqSpawn(4, actor, -1);
|
||||
if (actor->hit.florhit.type == kHitNone) seqSpawn(4, actor);
|
||||
else
|
||||
seqSpawn(3, actor, -1);
|
||||
seqSpawn(3, actor);
|
||||
sfxPlay3DSound(actor, 304, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
break;
|
||||
|
||||
case kThingArmedSpray:
|
||||
nType = kExplosionSpray;
|
||||
seqSpawn(5, actor, -1);
|
||||
seqSpawn(5, actor);
|
||||
sfxPlay3DSound(actor, 307, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
break;
|
||||
|
@ -4305,7 +4305,7 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
else actPostSprite(actor, kStatFree);
|
||||
|
||||
nType = kExplosionLarge;
|
||||
seqSpawn(4, spawned, -1);
|
||||
seqSpawn(4, spawned);
|
||||
actor = spawned;
|
||||
|
||||
sfxPlay3DSound(actor, 305, -1, 0);
|
||||
|
@ -4341,13 +4341,13 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (getSequence(nSeq)) seqSpawn(nSeq, actor, -1);
|
||||
if (getSequence(nSeq)) seqSpawn(nSeq, actor);
|
||||
sfxPlay3DSound(actor, nSnd, -1, 0);
|
||||
break;
|
||||
}
|
||||
case kThingPodFireBall:
|
||||
nType = kExplosionFireball;
|
||||
seqSpawn(9, actor, -1);
|
||||
seqSpawn(9, actor);
|
||||
sfxPlay3DSound(actor, 307, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
fxSpawnPodStuff(actor, 240);
|
||||
|
@ -4355,7 +4355,7 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
|
||||
default:
|
||||
nType = kExplosionStandard;
|
||||
seqSpawn(4, actor, -1);
|
||||
seqSpawn(4, actor);
|
||||
if (Chance(0x8000)) actor->spr.cstat |= CSTAT_SPRITE_XFLIP;
|
||||
sfxPlay3DSound(actor, 303, -1, 0);
|
||||
GibSprite(actor, GIBTYPE_5, nullptr, nullptr);
|
||||
|
@ -4567,7 +4567,7 @@ static void actCheckThings()
|
|||
break;
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
case kModernThingThrowableRock:
|
||||
seqSpawn(24, actor, -1);
|
||||
seqSpawn(24, actor);
|
||||
if (hit.type == kHitSprite)
|
||||
{
|
||||
actor->spr.scale = DVector2(0.5, 0.5);
|
||||
|
@ -4576,7 +4576,7 @@ static void actCheckThings()
|
|||
break;
|
||||
#endif
|
||||
case kThingBone:
|
||||
seqSpawn(24, actor, -1);
|
||||
seqSpawn(24, actor);
|
||||
if (hit.type == kHitSprite)
|
||||
{
|
||||
actDamageSprite(actor->GetOwner(), hit.actor(), kDamageFall, 12);
|
||||
|
@ -5115,7 +5115,7 @@ DBloodActor* actSpawnDude(DBloodActor* source, int nType, double dist)
|
|||
spawned->xspr.health = getDudeInfo(nDude + kDudeBase)->startHealth << 4;
|
||||
spawned->xspr.respawn = 1;
|
||||
if (getSequence(getDudeInfo(nDude + kDudeBase)->seqStartID))
|
||||
seqSpawn(getDudeInfo(nDude + kDudeBase)->seqStartID, spawned, -1);
|
||||
seqSpawn(getDudeInfo(nDude + kDudeBase)->seqStartID, spawned);
|
||||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
// add a way to inherit some values of spawner type 18 by dude.
|
||||
|
@ -5719,17 +5719,17 @@ void MakeSplash(DBloodActor* actor)
|
|||
switch (nSurface)
|
||||
{
|
||||
case kSurfWater:
|
||||
seqSpawn(6, actor, -1);
|
||||
seqSpawn(6, actor);
|
||||
sfxPlay3DSound(actor, 356, -1, 0);
|
||||
break;
|
||||
default:
|
||||
seqSpawn(7, actor, -1);
|
||||
seqSpawn(7, actor);
|
||||
sfxPlay3DSound(actor, 354, -1, 0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case kThingDripBlood:
|
||||
seqSpawn(8, actor, -1);
|
||||
seqSpawn(8, actor);
|
||||
sfxPlay3DSound(actor, 354, -1, 0);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -203,6 +203,7 @@ bool IsUnderwaterSector(sectortype* pSector);
|
|||
}
|
||||
#define AF(func) DBloodActor_##func##_VMPtr
|
||||
|
||||
void callActorFunction(VMFunction* callback, DBloodActor* actor);
|
||||
|
||||
#define xx(n) inline PClassActor* n##Class;
|
||||
#include "classnames.h"
|
||||
|
|
|
@ -32,8 +32,8 @@ BEGIN_BLD_NS
|
|||
|
||||
void RecoilDude(DBloodActor* actor);
|
||||
|
||||
AISTATE genIdle = { kAiStateGenIdle, 0, -1, 0, NULL, NULL, NULL, NULL };
|
||||
AISTATE genRecoil = { kAiStateRecoil, 5, -1, 20, NULL, NULL, NULL, &genIdle };
|
||||
AISTATE genIdle = { kAiStateGenIdle, 0, nullptr, 0, NULL, NULL, NULL, NULL };
|
||||
AISTATE genRecoil = { kAiStateRecoil, 5, nullptr, 20, NULL, NULL, NULL, &genIdle };
|
||||
|
||||
const int gCultTeslaFireChance[5] = { 0x2000, 0x4000, 0x8000, 0xa000, 0xe000 };
|
||||
|
||||
|
@ -91,7 +91,7 @@ void aiNewState(DBloodActor* actor, AISTATE* pAIState)
|
|||
{
|
||||
seqStartId += pAIState->seqId;
|
||||
if (getSequence(seqStartId))
|
||||
seqSpawn(seqStartId, actor, pAIState->funcId);
|
||||
seqSpawn(seqStartId, actor, *pAIState->funcId);
|
||||
}
|
||||
|
||||
if (pAIState->enterFunc)
|
||||
|
|
|
@ -32,7 +32,7 @@ BEGIN_BLD_NS
|
|||
struct AISTATE {
|
||||
int stateType; // By NoOne: current type of state. Basically required for kModernDudeTargetChanger, but can be used for something else.
|
||||
int seqId;
|
||||
int funcId; // seq callback
|
||||
VMNativeFunction** funcId;
|
||||
int stateTicks;
|
||||
void(*enterFunc)(DBloodActor *);
|
||||
void(*moveFunc)(DBloodActor *);
|
||||
|
|
|
@ -42,24 +42,24 @@ static void batMoveFly(DBloodActor*);
|
|||
static void batMoveToCeil(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE batIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, batThinkTarget, NULL };
|
||||
AISTATE batFlyIdle = { kAiStateIdle, 6, -1, 0, NULL, NULL, batThinkTarget, NULL };
|
||||
AISTATE batChase = { kAiStateChase, 6, -1, 0, NULL, batMoveForward, batThinkChase, &batFlyIdle };
|
||||
AISTATE batPonder = { kAiStateOther, 6, -1, 0, NULL, NULL, batThinkPonder, NULL };
|
||||
AISTATE batGoto = { kAiStateMove, 6, -1, 600, NULL, batMoveForward, batThinkGoto, &batFlyIdle };
|
||||
AISTATE batBite = { kAiStateChase, 7, nBatBiteClient, 60, NULL, NULL, NULL, &batPonder };
|
||||
AISTATE batRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &batChase };
|
||||
AISTATE batSearch = { kAiStateSearch, 6, -1, 120, NULL, batMoveForward, batThinkSearch, &batFlyIdle };
|
||||
AISTATE batSwoop = { kAiStateOther, 6, -1, 60, NULL, batMoveSwoop, batThinkChase, &batChase };
|
||||
AISTATE batFly = { kAiStateMove, 6, -1, 0, NULL, batMoveFly, batThinkChase, &batChase };
|
||||
AISTATE batTurn = { kAiStateMove, 6, -1, 60, NULL, aiMoveTurn, NULL, &batChase };
|
||||
AISTATE batHide = { kAiStateOther, 6, -1, 0, NULL, batMoveToCeil, batMoveForward, NULL };
|
||||
AISTATE batDodgeUp = { kAiStateMove, 6, -1, 120, NULL, batMoveDodgeUp, 0, &batChase };
|
||||
AISTATE batDodgeUpRight = { kAiStateMove, 6, -1, 90, NULL, batMoveDodgeUp, 0, &batChase };
|
||||
AISTATE batDodgeUpLeft = { kAiStateMove, 6, -1, 90, NULL, batMoveDodgeUp, 0, &batChase };
|
||||
AISTATE batDodgeDown = { kAiStateMove, 6, -1, 120, NULL, batMoveDodgeDown, 0, &batChase };
|
||||
AISTATE batDodgeDownRight = { kAiStateMove, 6, -1, 90, NULL, batMoveDodgeDown, 0, &batChase };
|
||||
AISTATE batDodgeDownLeft = { kAiStateMove, 6, -1, 90, NULL, batMoveDodgeDown, 0, &batChase };
|
||||
AISTATE batIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, batThinkTarget, NULL };
|
||||
AISTATE batFlyIdle = { kAiStateIdle, 6, nullptr, 0, NULL, NULL, batThinkTarget, NULL };
|
||||
AISTATE batChase = { kAiStateChase, 6, nullptr, 0, NULL, batMoveForward, batThinkChase, &batFlyIdle };
|
||||
AISTATE batPonder = { kAiStateOther, 6, nullptr, 0, NULL, NULL, batThinkPonder, NULL };
|
||||
AISTATE batGoto = { kAiStateMove, 6, nullptr, 600, NULL, batMoveForward, batThinkGoto, &batFlyIdle };
|
||||
AISTATE batBite = { kAiStateChase, 7, &AF(batBiteSeqCallback), 60, NULL, NULL, NULL, &batPonder };
|
||||
AISTATE batRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &batChase };
|
||||
AISTATE batSearch = { kAiStateSearch, 6, nullptr, 120, NULL, batMoveForward, batThinkSearch, &batFlyIdle };
|
||||
AISTATE batSwoop = { kAiStateOther, 6, nullptr, 60, NULL, batMoveSwoop, batThinkChase, &batChase };
|
||||
AISTATE batFly = { kAiStateMove, 6, nullptr, 0, NULL, batMoveFly, batThinkChase, &batChase };
|
||||
AISTATE batTurn = { kAiStateMove, 6, nullptr, 60, NULL, aiMoveTurn, NULL, &batChase };
|
||||
AISTATE batHide = { kAiStateOther, 6, nullptr, 0, NULL, batMoveToCeil, batMoveForward, NULL };
|
||||
AISTATE batDodgeUp = { kAiStateMove, 6, nullptr, 120, NULL, batMoveDodgeUp, 0, &batChase };
|
||||
AISTATE batDodgeUpRight = { kAiStateMove, 6, nullptr, 90, NULL, batMoveDodgeUp, 0, &batChase };
|
||||
AISTATE batDodgeUpLeft = { kAiStateMove, 6, nullptr, 90, NULL, batMoveDodgeUp, 0, &batChase };
|
||||
AISTATE batDodgeDown = { kAiStateMove, 6, nullptr, 120, NULL, batMoveDodgeDown, 0, &batChase };
|
||||
AISTATE batDodgeDownRight = { kAiStateMove, 6, nullptr, 90, NULL, batMoveDodgeDown, 0, &batChase };
|
||||
AISTATE batDodgeDownLeft = { kAiStateMove, 6, nullptr, 90, NULL, batMoveDodgeDown, 0, &batChase };
|
||||
|
||||
void batBiteSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -40,27 +40,27 @@ static void sub_628A0(DBloodActor*);
|
|||
static void sub_62AE0(DBloodActor*);
|
||||
static void sub_62D7C(DBloodActor*);
|
||||
|
||||
AISTATE beastIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE beastChase = { kAiStateChase, 8, -1, 0, NULL, beastMoveForward, beastThinkChase, NULL };
|
||||
AISTATE beastDodge = { kAiStateMove, 8, -1, 60, NULL, aiMoveDodge, NULL, &beastChase };
|
||||
AISTATE beastGoto = { kAiStateMove, 8, -1, 600, NULL, beastMoveForward, beastThinkGoto, &beastIdle };
|
||||
AISTATE beastSlash = { kAiStateChase, 6, nSlashClient, 120, NULL, NULL, NULL, &beastChase };
|
||||
AISTATE beastStomp = { kAiStateChase, 7, nStompClient, 120, NULL, NULL, NULL, &beastChase };
|
||||
AISTATE beastSearch = { kAiStateSearch, 8, -1, 120, NULL, beastMoveForward, beastThinkSearch, &beastIdle };
|
||||
AISTATE beastRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &beastDodge };
|
||||
AISTATE beastTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &beastDodge };
|
||||
AISTATE beastSwimIdle = { kAiStateIdle, 9, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE beastSwimChase = { kAiStateChase, 9, -1, 0, NULL, sub_628A0, beastThinkSwimChase, NULL };
|
||||
AISTATE beastSwimDodge = { kAiStateMove, 9, -1, 90, NULL, aiMoveDodge, NULL, &beastSwimChase };
|
||||
AISTATE beastSwimGoto = { kAiStateMove, 9, -1, 600, NULL, beastMoveForward, beastThinkSwimGoto, &beastSwimIdle };
|
||||
AISTATE beastSwimSearch = { kAiStateSearch, 9, -1, 120, NULL, beastMoveForward, beastThinkSearch, &beastSwimIdle };
|
||||
AISTATE beastSwimSlash = { kAiStateChase, 9, nSlashClient, 0, NULL, NULL, beastThinkSwimChase, &beastSwimChase };
|
||||
AISTATE beastSwimRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &beastSwimDodge };
|
||||
AISTATE beastMorphToBeast = { kAiStateOther, -1, -1, 0, MorphToBeast, NULL, NULL, &beastIdle };
|
||||
AISTATE beastMorphFromCultist = { kAiStateOther, 2576, -1, 0, NULL, NULL, NULL, &beastMorphToBeast };
|
||||
AISTATE beast138FB4 = { kAiStateOther, 9, -1, 120, NULL, sub_62AE0, beastThinkSwimChase, &beastSwimChase };
|
||||
AISTATE beast138FD0 = { kAiStateOther, 9, -1, 0, NULL, sub_62D7C, beastThinkSwimChase, &beastSwimChase };
|
||||
AISTATE beast138FEC = { kAiStateOther, 9, -1, 120, NULL, aiMoveTurn, NULL, &beastSwimChase };
|
||||
AISTATE beastIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE beastChase = { kAiStateChase, 8, nullptr, 0, NULL, beastMoveForward, beastThinkChase, NULL };
|
||||
AISTATE beastDodge = { kAiStateMove, 8, nullptr, 60, NULL, aiMoveDodge, NULL, &beastChase };
|
||||
AISTATE beastGoto = { kAiStateMove, 8, nullptr, 600, NULL, beastMoveForward, beastThinkGoto, &beastIdle };
|
||||
AISTATE beastSlash = { kAiStateChase, 6, &AF(SlashSeqCallback), 120, NULL, NULL, NULL, &beastChase };
|
||||
AISTATE beastStomp = { kAiStateChase, 7, &AF(StompSeqCallback), 120, NULL, NULL, NULL, &beastChase };
|
||||
AISTATE beastSearch = { kAiStateSearch, 8, nullptr, 120, NULL, beastMoveForward, beastThinkSearch, &beastIdle };
|
||||
AISTATE beastRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &beastDodge };
|
||||
AISTATE beastTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &beastDodge };
|
||||
AISTATE beastSwimIdle = { kAiStateIdle, 9, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE beastSwimChase = { kAiStateChase, 9, nullptr, 0, NULL, sub_628A0, beastThinkSwimChase, NULL };
|
||||
AISTATE beastSwimDodge = { kAiStateMove, 9, nullptr, 90, NULL, aiMoveDodge, NULL, &beastSwimChase };
|
||||
AISTATE beastSwimGoto = { kAiStateMove, 9, nullptr, 600, NULL, beastMoveForward, beastThinkSwimGoto, &beastSwimIdle };
|
||||
AISTATE beastSwimSearch = { kAiStateSearch, 9, nullptr, 120, NULL, beastMoveForward, beastThinkSearch, &beastSwimIdle };
|
||||
AISTATE beastSwimSlash = { kAiStateChase, 9, &AF(SlashSeqCallback), 0, NULL, NULL, beastThinkSwimChase, &beastSwimChase };
|
||||
AISTATE beastSwimRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &beastSwimDodge };
|
||||
AISTATE beastMorphToBeast = { kAiStateOther, -1, nullptr, 0, MorphToBeast, NULL, NULL, &beastIdle };
|
||||
AISTATE beastMorphFromCultist = { kAiStateOther, 2576, nullptr, 0, NULL, NULL, NULL, &beastMorphToBeast };
|
||||
AISTATE beast138FB4 = { kAiStateOther, 9, nullptr, 120, NULL, sub_62AE0, beastThinkSwimChase, &beastSwimChase };
|
||||
AISTATE beast138FD0 = { kAiStateOther, 9, nullptr, 0, NULL, sub_62D7C, beastThinkSwimChase, &beastSwimChase };
|
||||
AISTATE beast138FEC = { kAiStateOther, 9, nullptr, 120, NULL, aiMoveTurn, NULL, &beastSwimChase };
|
||||
|
||||
void SlashSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -42,24 +42,24 @@ static void eelMoveAscend(DBloodActor* actor);
|
|||
static void eelMoveToCeil(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE eelIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, eelThinkTarget, NULL };
|
||||
AISTATE eelFlyIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, eelThinkTarget, NULL };
|
||||
AISTATE eelChase = { kAiStateChase, 0, -1, 0, NULL, eelMoveForward, eelThinkChase, &eelIdle };
|
||||
AISTATE eelPonder = { kAiStateOther, 0, -1, 0, NULL, NULL, eelThinkPonder, NULL };
|
||||
AISTATE eelGoto = { kAiStateMove, 0, -1, 600, NULL, NULL, eelThinkGoto, &eelIdle };
|
||||
AISTATE eelBite = { kAiStateChase, 7, nEelBiteClient, 60, NULL, NULL, NULL, &eelChase };
|
||||
AISTATE eelRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &eelChase };
|
||||
AISTATE eelSearch = { kAiStateSearch, 0, -1, 120, NULL, eelMoveForward, eelThinkSearch, &eelIdle };
|
||||
AISTATE eelSwoop = { kAiStateOther, 0, -1, 60, NULL, eelMoveSwoop, eelThinkChase, &eelChase };
|
||||
AISTATE eelFly = { kAiStateMove, 0, -1, 0, NULL, eelMoveAscend, eelThinkChase, &eelChase };
|
||||
AISTATE eelTurn = { kAiStateMove, 0, -1, 60, NULL, aiMoveTurn, NULL, &eelChase };
|
||||
AISTATE eelHide = { kAiStateOther, 0, -1, 0, NULL, eelMoveToCeil, eelMoveForward, NULL };
|
||||
AISTATE eelDodgeUp = { kAiStateMove, 0, -1, 120, NULL, eelMoveDodgeUp, NULL, &eelChase };
|
||||
AISTATE eelDodgeUpRight = { kAiStateMove, 0, -1, 90, NULL, eelMoveDodgeUp, NULL, &eelChase };
|
||||
AISTATE eelDodgeUpLeft = { kAiStateMove, 0, -1, 90, NULL, eelMoveDodgeUp, NULL, &eelChase };
|
||||
AISTATE eelDodgeDown = { kAiStateMove, 0, -1, 120, NULL, eelMoveDodgeDown, NULL, &eelChase };
|
||||
AISTATE eelDodgeDownRight = { kAiStateMove, 0, -1, 90, NULL, eelMoveDodgeDown, NULL, &eelChase };
|
||||
AISTATE eelDodgeDownLeft = { kAiStateMove, 0, -1, 90, NULL, eelMoveDodgeDown, NULL, &eelChase };
|
||||
AISTATE eelIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, eelThinkTarget, NULL };
|
||||
AISTATE eelFlyIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, eelThinkTarget, NULL };
|
||||
AISTATE eelChase = { kAiStateChase, 0, nullptr, 0, NULL, eelMoveForward, eelThinkChase, &eelIdle };
|
||||
AISTATE eelPonder = { kAiStateOther, 0, nullptr, 0, NULL, NULL, eelThinkPonder, NULL };
|
||||
AISTATE eelGoto = { kAiStateMove, 0, nullptr, 600, NULL, NULL, eelThinkGoto, &eelIdle };
|
||||
AISTATE eelBite = { kAiStateChase, 7, &AF(eelBiteSeqCallback), 60, NULL, NULL, NULL, &eelChase };
|
||||
AISTATE eelRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &eelChase };
|
||||
AISTATE eelSearch = { kAiStateSearch, 0, nullptr, 120, NULL, eelMoveForward, eelThinkSearch, &eelIdle };
|
||||
AISTATE eelSwoop = { kAiStateOther, 0, nullptr, 60, NULL, eelMoveSwoop, eelThinkChase, &eelChase };
|
||||
AISTATE eelFly = { kAiStateMove, 0, nullptr, 0, NULL, eelMoveAscend, eelThinkChase, &eelChase };
|
||||
AISTATE eelTurn = { kAiStateMove, 0, nullptr, 60, NULL, aiMoveTurn, NULL, &eelChase };
|
||||
AISTATE eelHide = { kAiStateOther, 0, nullptr, 0, NULL, eelMoveToCeil, eelMoveForward, NULL };
|
||||
AISTATE eelDodgeUp = { kAiStateMove, 0, nullptr, 120, NULL, eelMoveDodgeUp, NULL, &eelChase };
|
||||
AISTATE eelDodgeUpRight = { kAiStateMove, 0, nullptr, 90, NULL, eelMoveDodgeUp, NULL, &eelChase };
|
||||
AISTATE eelDodgeUpLeft = { kAiStateMove, 0, nullptr, 90, NULL, eelMoveDodgeUp, NULL, &eelChase };
|
||||
AISTATE eelDodgeDown = { kAiStateMove, 0, nullptr, 120, NULL, eelMoveDodgeDown, NULL, &eelChase };
|
||||
AISTATE eelDodgeDownRight = { kAiStateMove, 0, nullptr, 90, NULL, eelMoveDodgeDown, NULL, &eelChase };
|
||||
AISTATE eelDodgeDownLeft = { kAiStateMove, 0, nullptr, 90, NULL, eelMoveDodgeDown, NULL, &eelChase };
|
||||
|
||||
void eelBiteSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -33,42 +33,42 @@ static void burnThinkSearch(DBloodActor*);
|
|||
static void burnThinkGoto(DBloodActor*);
|
||||
static void burnThinkChase(DBloodActor*);
|
||||
|
||||
AISTATE cultistBurnIdle = { kAiStateIdle, 3, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistBurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE cultistBurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &cultistBurnSearch };
|
||||
AISTATE cultistBurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, &cultistBurnSearch };
|
||||
AISTATE cultistBurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &cultistBurnChase };
|
||||
AISTATE cultistBurnIdle = { kAiStateIdle, 3, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistBurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE cultistBurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &cultistBurnSearch };
|
||||
AISTATE cultistBurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, &cultistBurnSearch };
|
||||
AISTATE cultistBurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &cultistBurnChase };
|
||||
|
||||
AISTATE zombieABurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE zombieABurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &zombieABurnSearch };
|
||||
AISTATE zombieABurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, NULL };
|
||||
AISTATE zombieABurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &zombieABurnChase };
|
||||
AISTATE zombieABurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE zombieABurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &zombieABurnSearch };
|
||||
AISTATE zombieABurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, NULL };
|
||||
AISTATE zombieABurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &zombieABurnChase };
|
||||
|
||||
AISTATE zombieFBurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE zombieFBurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &zombieFBurnSearch };
|
||||
AISTATE zombieFBurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, NULL };
|
||||
AISTATE zombieFBurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &zombieFBurnChase };
|
||||
AISTATE zombieFBurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE zombieFBurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &zombieFBurnSearch };
|
||||
AISTATE zombieFBurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, NULL };
|
||||
AISTATE zombieFBurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &zombieFBurnChase };
|
||||
|
||||
AISTATE innocentBurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE innocentBurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &zombieFBurnSearch };
|
||||
AISTATE innocentBurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, NULL };
|
||||
AISTATE innocentBurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &zombieFBurnChase };
|
||||
AISTATE innocentBurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE innocentBurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &zombieFBurnSearch };
|
||||
AISTATE innocentBurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, NULL };
|
||||
AISTATE innocentBurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &zombieFBurnChase };
|
||||
|
||||
AISTATE beastBurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE beastBurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &beastBurnSearch };
|
||||
AISTATE beastBurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, &beastBurnSearch };
|
||||
AISTATE beastBurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &beastBurnChase };
|
||||
AISTATE beastBurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE beastBurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &beastBurnSearch };
|
||||
AISTATE beastBurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, &beastBurnSearch };
|
||||
AISTATE beastBurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &beastBurnChase };
|
||||
|
||||
AISTATE tinycalebBurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE tinycalebBurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &tinycalebBurnSearch };
|
||||
AISTATE tinycalebBurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, &tinycalebBurnSearch };
|
||||
AISTATE tinycalebBurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &tinycalebBurnChase };
|
||||
AISTATE tinycalebBurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE tinycalebBurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &tinycalebBurnSearch };
|
||||
AISTATE tinycalebBurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, &tinycalebBurnSearch };
|
||||
AISTATE tinycalebBurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &tinycalebBurnChase };
|
||||
|
||||
AISTATE genDudeBurnIdle = { kAiStateIdle, 3, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE genDudeBurnChase = { kAiStateChase, 3, -1, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE genDudeBurnGoto = { kAiStateMove, 3, -1, 3600, NULL, aiMoveForward, burnThinkGoto, &genDudeBurnSearch };
|
||||
AISTATE genDudeBurnSearch = { kAiStateSearch, 3, -1, 3600, NULL, aiMoveForward, burnThinkSearch, &genDudeBurnSearch };
|
||||
AISTATE genDudeBurnAttack = { kAiStateChase, 3, nBurnClient, 120, NULL, NULL, NULL, &genDudeBurnChase };
|
||||
AISTATE genDudeBurnIdle = { kAiStateIdle, 3, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE genDudeBurnChase = { kAiStateChase, 3, nullptr, 0, NULL, aiMoveForward, burnThinkChase, NULL };
|
||||
AISTATE genDudeBurnGoto = { kAiStateMove, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkGoto, &genDudeBurnSearch };
|
||||
AISTATE genDudeBurnSearch = { kAiStateSearch, 3, nullptr, 3600, NULL, aiMoveForward, burnThinkSearch, &genDudeBurnSearch };
|
||||
AISTATE genDudeBurnAttack = { kAiStateChase, 3, &AF(BurnSeqCallback), 120, NULL, NULL, NULL, &genDudeBurnChase };
|
||||
|
||||
void BurnSeqCallback(DBloodActor*)
|
||||
{
|
||||
|
|
|
@ -38,24 +38,24 @@ static void sub_65D04(DBloodActor*);
|
|||
static void sub_65F44(DBloodActor*);
|
||||
static void sub_661E0(DBloodActor*);
|
||||
|
||||
AISTATE tinycalebIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE tinycalebChase = { kAiStateChase, 6, -1, 0, NULL, aiMoveForward, calebThinkChase, NULL };
|
||||
AISTATE tinycalebDodge = { kAiStateMove, 6, -1, 90, NULL, aiMoveDodge, NULL, &tinycalebChase };
|
||||
AISTATE tinycalebGoto = { kAiStateMove, 6, -1, 600, NULL, aiMoveForward, calebThinkGoto, &tinycalebIdle };
|
||||
AISTATE tinycalebAttack = { kAiStateChase, 0, nAttackClient, 120, NULL, NULL, NULL, &tinycalebChase };
|
||||
AISTATE tinycalebSearch = { kAiStateSearch, 6, -1, 120, NULL, aiMoveForward, calebThinkSearch, &tinycalebIdle };
|
||||
AISTATE tinycalebRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &tinycalebDodge };
|
||||
AISTATE tinycalebTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &tinycalebDodge };
|
||||
AISTATE tinycalebSwimIdle = { kAiStateIdle, 10, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE tinycalebSwimChase = { kAiStateChase, 8, -1, 0, NULL, sub_65D04, calebThinkSwimChase, NULL };
|
||||
AISTATE tinycalebSwimDodge = { kAiStateMove, 8, -1, 90, NULL, aiMoveDodge, NULL, &tinycalebSwimChase };
|
||||
AISTATE tinycalebSwimGoto = { kAiStateMove, 8, -1, 600, NULL, aiMoveForward, calebThinkSwimGoto, &tinycalebSwimIdle };
|
||||
AISTATE tinycalebSwimSearch = { kAiStateSearch, 8, -1, 120, NULL, aiMoveForward, calebThinkSearch, &tinycalebSwimIdle };
|
||||
AISTATE tinycalebSwimAttack = { kAiStateChase, 10, nAttackClient, 0, NULL, NULL, NULL, &tinycalebSwimChase };
|
||||
AISTATE tinycalebSwimRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &tinycalebSwimDodge };
|
||||
AISTATE tinycaleb139660 = { kAiStateOther, 8, -1, 120, NULL, sub_65F44, calebThinkSwimChase, &tinycalebSwimChase };
|
||||
AISTATE tinycaleb13967C = { kAiStateOther, 8, -1, 0, NULL, sub_661E0, calebThinkSwimChase, &tinycalebSwimChase };
|
||||
AISTATE tinycaleb139698 = { kAiStateOther, 8, -1, 120, NULL, aiMoveTurn, NULL, &tinycalebSwimChase };
|
||||
AISTATE tinycalebIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE tinycalebChase = { kAiStateChase, 6, nullptr, 0, NULL, aiMoveForward, calebThinkChase, NULL };
|
||||
AISTATE tinycalebDodge = { kAiStateMove, 6, nullptr, 90, NULL, aiMoveDodge, NULL, &tinycalebChase };
|
||||
AISTATE tinycalebGoto = { kAiStateMove, 6, nullptr, 600, NULL, aiMoveForward, calebThinkGoto, &tinycalebIdle };
|
||||
AISTATE tinycalebAttack = { kAiStateChase, 0, &AF(SeqAttackCallback), 120, NULL, NULL, NULL, &tinycalebChase };
|
||||
AISTATE tinycalebSearch = { kAiStateSearch, 6, nullptr, 120, NULL, aiMoveForward, calebThinkSearch, &tinycalebIdle };
|
||||
AISTATE tinycalebRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &tinycalebDodge };
|
||||
AISTATE tinycalebTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &tinycalebDodge };
|
||||
AISTATE tinycalebSwimIdle = { kAiStateIdle, 10, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE tinycalebSwimChase = { kAiStateChase, 8, nullptr, 0, NULL, sub_65D04, calebThinkSwimChase, NULL };
|
||||
AISTATE tinycalebSwimDodge = { kAiStateMove, 8, nullptr, 90, NULL, aiMoveDodge, NULL, &tinycalebSwimChase };
|
||||
AISTATE tinycalebSwimGoto = { kAiStateMove, 8, nullptr, 600, NULL, aiMoveForward, calebThinkSwimGoto, &tinycalebSwimIdle };
|
||||
AISTATE tinycalebSwimSearch = { kAiStateSearch, 8, nullptr, 120, NULL, aiMoveForward, calebThinkSearch, &tinycalebSwimIdle };
|
||||
AISTATE tinycalebSwimAttack = { kAiStateChase, 10, &AF(SeqAttackCallback), 0, NULL, NULL, NULL, &tinycalebSwimChase };
|
||||
AISTATE tinycalebSwimRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &tinycalebSwimDodge };
|
||||
AISTATE tinycaleb139660 = { kAiStateOther, 8, nullptr, 120, NULL, sub_65F44, calebThinkSwimChase, &tinycalebSwimChase };
|
||||
AISTATE tinycaleb13967C = { kAiStateOther, 8, nullptr, 0, NULL, sub_661E0, calebThinkSwimChase, &tinycalebSwimChase };
|
||||
AISTATE tinycaleb139698 = { kAiStateOther, 8, nullptr, 120, NULL, aiMoveTurn, NULL, &tinycalebSwimChase };
|
||||
|
||||
void SeqAttackCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -35,25 +35,25 @@ static void cerberusThinkGoto(DBloodActor* actor);
|
|||
static void cerberusThinkChase(DBloodActor* actor);
|
||||
|
||||
|
||||
AISTATE cerberusIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, cerberusThinkTarget, NULL };
|
||||
AISTATE cerberusSearch = { kAiStateSearch, 7, -1, 1800, NULL, aiMoveForward, cerberusThinkSearch, &cerberusIdle };
|
||||
AISTATE cerberusChase = { kAiStateChase, 7, -1, 0, NULL, aiMoveForward, cerberusThinkChase, NULL };
|
||||
AISTATE cerberusRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &cerberusSearch };
|
||||
AISTATE cerberusTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &cerberusSearch };
|
||||
AISTATE cerberusGoto = { kAiStateMove, 7, -1, 600, NULL, aiMoveForward, cerberusThinkGoto, &cerberusIdle };
|
||||
AISTATE cerberusBite = { kAiStateChase, 6, nCerberusBiteClient, 60, NULL, NULL, NULL, &cerberusChase };
|
||||
AISTATE cerberusBurn = { kAiStateChase, 6, nCerberusBurnClient, 60, NULL, NULL, NULL, &cerberusChase };
|
||||
AISTATE cerberus3Burn = { kAiStateChase, 6, nCerberusBurnClient2, 60, NULL, NULL, NULL, &cerberusChase };
|
||||
AISTATE cerberus2Idle = { kAiStateIdle, 0, -1, 0, NULL, NULL, cerberusThinkTarget, NULL };
|
||||
AISTATE cerberus2Search = { kAiStateSearch, 7, -1, 1800, NULL, aiMoveForward, cerberusThinkSearch, &cerberus2Idle };
|
||||
AISTATE cerberus2Chase = { kAiStateChase, 7, -1, 0, NULL, aiMoveForward, cerberusThinkChase, NULL };
|
||||
AISTATE cerberus2Recoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &cerberus2Search };
|
||||
AISTATE cerberus2Goto = { kAiStateMove, 7, -1, 600, NULL, aiMoveForward, cerberusThinkGoto, &cerberus2Idle };
|
||||
AISTATE cerberus2Bite = { kAiStateChase, 6, nCerberusBiteClient, 60, NULL, NULL, NULL, &cerberus2Chase };
|
||||
AISTATE cerberus2Burn = { kAiStateChase, 6, nCerberusBurnClient, 60, NULL, NULL, NULL, &cerberus2Chase };
|
||||
AISTATE cerberus4Burn = { kAiStateChase, 6, nCerberusBurnClient2, 60, NULL, NULL, NULL, &cerberus2Chase };
|
||||
AISTATE cerberus139890 = { kAiStateOther, 7, -1, 120, NULL, aiMoveTurn, NULL, &cerberusChase };
|
||||
AISTATE cerberus1398AC = { kAiStateOther, 7, -1, 120, NULL, aiMoveTurn, NULL, &cerberusChase };
|
||||
AISTATE cerberusIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, cerberusThinkTarget, NULL };
|
||||
AISTATE cerberusSearch = { kAiStateSearch, 7, nullptr, 1800, NULL, aiMoveForward, cerberusThinkSearch, &cerberusIdle };
|
||||
AISTATE cerberusChase = { kAiStateChase, 7, nullptr, 0, NULL, aiMoveForward, cerberusThinkChase, NULL };
|
||||
AISTATE cerberusRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &cerberusSearch };
|
||||
AISTATE cerberusTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &cerberusSearch };
|
||||
AISTATE cerberusGoto = { kAiStateMove, 7, nullptr, 600, NULL, aiMoveForward, cerberusThinkGoto, &cerberusIdle };
|
||||
AISTATE cerberusBite = { kAiStateChase, 6, &AF(cerberusBiteSeqCallback), 60, NULL, NULL, NULL, &cerberusChase };
|
||||
AISTATE cerberusBurn = { kAiStateChase, 6, &AF(cerberusBurnSeqCallback), 60, NULL, NULL, NULL, &cerberusChase };
|
||||
AISTATE cerberus3Burn = { kAiStateChase, 6, &AF(cerberusBurnSeqCallback2), 60, NULL, NULL, NULL, &cerberusChase };
|
||||
AISTATE cerberus2Idle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, cerberusThinkTarget, NULL };
|
||||
AISTATE cerberus2Search = { kAiStateSearch, 7, nullptr, 1800, NULL, aiMoveForward, cerberusThinkSearch, &cerberus2Idle };
|
||||
AISTATE cerberus2Chase = { kAiStateChase, 7, nullptr, 0, NULL, aiMoveForward, cerberusThinkChase, NULL };
|
||||
AISTATE cerberus2Recoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &cerberus2Search };
|
||||
AISTATE cerberus2Goto = { kAiStateMove, 7, nullptr, 600, NULL, aiMoveForward, cerberusThinkGoto, &cerberus2Idle };
|
||||
AISTATE cerberus2Bite = { kAiStateChase, 6, &AF(cerberusBiteSeqCallback), 60, NULL, NULL, NULL, &cerberus2Chase };
|
||||
AISTATE cerberus2Burn = { kAiStateChase, 6, &AF(cerberusBurnSeqCallback), 60, NULL, NULL, NULL, &cerberus2Chase };
|
||||
AISTATE cerberus4Burn = { kAiStateChase, 6, &AF(cerberusBurnSeqCallback2), 60, NULL, NULL, NULL, &cerberus2Chase };
|
||||
AISTATE cerberus139890 = { kAiStateOther, 7, nullptr, 120, NULL, aiMoveTurn, NULL, &cerberusChase };
|
||||
AISTATE cerberus1398AC = { kAiStateOther, 7, nullptr, 120, NULL, aiMoveTurn, NULL, &cerberusChase };
|
||||
|
||||
static constexpr double Cerberus_XYOff = 350. / 16;
|
||||
static constexpr double Cerberus_ZOff = 100. / 256;
|
||||
|
|
|
@ -33,45 +33,45 @@ static void cultThinkSearch(DBloodActor*);
|
|||
static void cultThinkGoto(DBloodActor*);
|
||||
static void cultThinkChase(DBloodActor*);
|
||||
|
||||
AISTATE cultistIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistProneIdle = { kAiStateIdle, 17, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE fanaticProneIdle = { kAiStateIdle, 17, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistProneIdle3 = { kAiStateIdle, 17, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistChase = { kAiStateChase, 9, -1, 0, NULL, aiMoveForward, cultThinkChase, NULL };
|
||||
AISTATE fanaticChase = { kAiStateChase, 0, -1, 0, NULL, aiMoveTurn, cultThinkChase, NULL };
|
||||
AISTATE cultistDodge = { kAiStateMove, 9, -1, 90, NULL, aiMoveDodge, NULL, &cultistChase };
|
||||
AISTATE cultistGoto = { kAiStateMove, 9, -1, 600, NULL, aiMoveForward, cultThinkGoto, &cultistIdle };
|
||||
AISTATE cultistProneChase = { kAiStateChase, 14, -1, 0, NULL, aiMoveForward, cultThinkChase, NULL };
|
||||
AISTATE cultistProneDodge = { kAiStateMove, 14, -1, 90, NULL, aiMoveDodge, NULL, &cultistProneChase };
|
||||
AISTATE cultistTThrow = { kAiStateChase, 7, nThrowClient, 120, NULL, NULL, NULL, &cultistTFire };
|
||||
AISTATE cultistSThrow = { kAiStateChase, 7, nThrowClient, 120, NULL, NULL, NULL, &cultistSFire };
|
||||
AISTATE cultistTsThrow = { kAiStateChase, 7, nThrowClient, 120, NULL, NULL, NULL, &cultistTsFire };
|
||||
AISTATE cultistDThrow = { kAiStateChase, 7, nThrowClient, 120, NULL, NULL, NULL, &cultistChase };
|
||||
AISTATE cultist139A78 = { kAiStateChase, 7, n68170Client, 120, NULL, NULL, NULL, &cultistChase };
|
||||
AISTATE cultist139A94 = { kAiStateChase, 7, n68230Client, 120, NULL, NULL, NULL, &cultistIdle };
|
||||
AISTATE cultist139AB0 = { kAiStateChase, 7, n68230Client, 120, NULL, NULL, cultThinkSearch, &cultist139A94 };
|
||||
AISTATE cultist139ACC = { kAiStateChase, 7, n68230Client, 120, NULL, NULL, cultThinkSearch, &cultist139AB0 };
|
||||
AISTATE cultist139AE8 = { kAiStateChase, 7, n68230Client, 120, NULL, NULL, cultThinkSearch, &cultist139AE8 };
|
||||
AISTATE cultistSearch = { kAiStateSearch, 9, -1, 1800, NULL, aiMoveForward, cultThinkSearch, &cultistIdle };
|
||||
AISTATE cultistSFire = { kAiStateChase, 6, nShotClient, 60, NULL, NULL, NULL, &cultistChase };
|
||||
AISTATE cultistTFire = { kAiStateChase, 6, nTommyClient, 0, NULL, aiMoveTurn, cultThinkChase, &cultistTFire };
|
||||
AISTATE cultistTsFire = { kAiStateChase, 6, nTeslaClient, 0, NULL, aiMoveTurn, cultThinkChase, &cultistChase };
|
||||
AISTATE cultistSProneFire = { kAiStateChase, 8, nShotClient, 60, NULL, NULL, NULL, &cultistProneChase };
|
||||
AISTATE cultistTProneFire = { kAiStateChase, 8, nTommyClient, 0, NULL, aiMoveTurn, cultThinkChase, &cultistTProneFire };
|
||||
AISTATE cultistTsProneFire = { kAiStateChase, 8, nTeslaClient, 0, NULL, aiMoveTurn, NULL, &cultistTsProneFire }; // vanilla, broken
|
||||
AISTATE cultistTsProneFireFixed = { kAiStateChase, 8, nTeslaClient, 0, NULL, aiMoveTurn, cultThinkChase, &cultistTsProneFireFixed };
|
||||
AISTATE cultistRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &cultistDodge };
|
||||
AISTATE cultistProneRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &cultistProneDodge };
|
||||
AISTATE cultistTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &cultistDodge };
|
||||
AISTATE cultistSwimIdle = { kAiStateIdle, 13, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistSwimChase = { kAiStateChase, 13, -1, 0, NULL, aiMoveForward, cultThinkChase, NULL };
|
||||
AISTATE cultistSwimDodge = { kAiStateMove, 13, -1, 90, NULL, aiMoveDodge, NULL, &cultistSwimChase };
|
||||
AISTATE cultistSwimGoto = { kAiStateMove, 13, -1, 600, NULL, aiMoveForward, cultThinkGoto, &cultistSwimIdle };
|
||||
AISTATE cultistSwimSearch = { kAiStateSearch, 13, -1, 1800, NULL, aiMoveForward, cultThinkSearch, &cultistSwimIdle };
|
||||
AISTATE cultistSSwimFire = { kAiStateChase, 8, nShotClient, 60, NULL, NULL, NULL, &cultistSwimChase };
|
||||
AISTATE cultistTSwimFire = { kAiStateChase, 8, nTommyClient, 0, NULL, aiMoveTurn, cultThinkChase, &cultistTSwimFire };
|
||||
AISTATE cultistTsSwimFire = { kAiStateChase, 8, nTeslaClient, 0, NULL, aiMoveTurn, cultThinkChase, &cultistTsSwimFire };
|
||||
AISTATE cultistSwimRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &cultistSwimDodge };
|
||||
AISTATE cultistIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistProneIdle = { kAiStateIdle, 17, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE fanaticProneIdle = { kAiStateIdle, 17, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistProneIdle3 = { kAiStateIdle, 17, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistChase = { kAiStateChase, 9, nullptr, 0, NULL, aiMoveForward, cultThinkChase, NULL };
|
||||
AISTATE fanaticChase = { kAiStateChase, 0, nullptr, 0, NULL, aiMoveTurn, cultThinkChase, NULL };
|
||||
AISTATE cultistDodge = { kAiStateMove, 9, nullptr, 90, NULL, aiMoveDodge, NULL, &cultistChase };
|
||||
AISTATE cultistGoto = { kAiStateMove, 9, nullptr, 600, NULL, aiMoveForward, cultThinkGoto, &cultistIdle };
|
||||
AISTATE cultistProneChase = { kAiStateChase, 14, nullptr, 0, NULL, aiMoveForward, cultThinkChase, NULL };
|
||||
AISTATE cultistProneDodge = { kAiStateMove, 14, nullptr, 90, NULL, aiMoveDodge, NULL, &cultistProneChase };
|
||||
AISTATE cultistTThrow = { kAiStateChase, 7, &AF(cultThrowSeqCallback), 120, NULL, NULL, NULL, &cultistTFire };
|
||||
AISTATE cultistSThrow = { kAiStateChase, 7, &AF(cultThrowSeqCallback), 120, NULL, NULL, NULL, &cultistSFire };
|
||||
AISTATE cultistTsThrow = { kAiStateChase, 7, &AF(cultThrowSeqCallback), 120, NULL, NULL, NULL, &cultistTsFire };
|
||||
AISTATE cultistDThrow = { kAiStateChase, 7, &AF(cultThrowSeqCallback), 120, NULL, NULL, NULL, &cultistChase };
|
||||
AISTATE cultist139A78 = { kAiStateChase, 7, &AF(cultThrowSeqCallback2), 120, NULL, NULL, NULL, &cultistChase };
|
||||
AISTATE cultist139A94 = { kAiStateChase, 7, &AF(cultThrowSeqCallback3), 120, NULL, NULL, NULL, &cultistIdle };
|
||||
AISTATE cultist139AB0 = { kAiStateChase, 7, &AF(cultThrowSeqCallback3), 120, NULL, NULL, cultThinkSearch, &cultist139A94 };
|
||||
AISTATE cultist139ACC = { kAiStateChase, 7, &AF(cultThrowSeqCallback3), 120, NULL, NULL, cultThinkSearch, &cultist139AB0 };
|
||||
AISTATE cultist139AE8 = { kAiStateChase, 7, &AF(cultThrowSeqCallback3), 120, NULL, NULL, cultThinkSearch, &cultist139AE8 };
|
||||
AISTATE cultistSearch = { kAiStateSearch, 9, nullptr, 1800, NULL, aiMoveForward, cultThinkSearch, &cultistIdle };
|
||||
AISTATE cultistSFire = { kAiStateChase, 6, &AF(ShotSeqCallback), 60, NULL, NULL, NULL, &cultistChase };
|
||||
AISTATE cultistTFire = { kAiStateChase, 6, &AF(TommySeqCallback), 0, NULL, aiMoveTurn, cultThinkChase, &cultistTFire };
|
||||
AISTATE cultistTsFire = { kAiStateChase, 6, &AF(TeslaSeqCallback), 0, NULL, aiMoveTurn, cultThinkChase, &cultistChase };
|
||||
AISTATE cultistSProneFire = { kAiStateChase, 8, &AF(ShotSeqCallback), 60, NULL, NULL, NULL, &cultistProneChase };
|
||||
AISTATE cultistTProneFire = { kAiStateChase, 8, &AF(TommySeqCallback), 0, NULL, aiMoveTurn, cultThinkChase, &cultistTProneFire };
|
||||
AISTATE cultistTsProneFire = { kAiStateChase, 8, &AF(TeslaSeqCallback), 0, NULL, aiMoveTurn, NULL, &cultistTsProneFire }; // vanilla, broken
|
||||
AISTATE cultistTsProneFireFixed = { kAiStateChase, 8, &AF(TeslaSeqCallback), 0, NULL, aiMoveTurn, cultThinkChase, &cultistTsProneFireFixed };
|
||||
AISTATE cultistRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &cultistDodge };
|
||||
AISTATE cultistProneRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &cultistProneDodge };
|
||||
AISTATE cultistTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &cultistDodge };
|
||||
AISTATE cultistSwimIdle = { kAiStateIdle, 13, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE cultistSwimChase = { kAiStateChase, 13, nullptr, 0, NULL, aiMoveForward, cultThinkChase, NULL };
|
||||
AISTATE cultistSwimDodge = { kAiStateMove, 13, nullptr, 90, NULL, aiMoveDodge, NULL, &cultistSwimChase };
|
||||
AISTATE cultistSwimGoto = { kAiStateMove, 13, nullptr, 600, NULL, aiMoveForward, cultThinkGoto, &cultistSwimIdle };
|
||||
AISTATE cultistSwimSearch = { kAiStateSearch, 13, nullptr, 1800, NULL, aiMoveForward, cultThinkSearch, &cultistSwimIdle };
|
||||
AISTATE cultistSSwimFire = { kAiStateChase, 8, &AF(ShotSeqCallback), 60, NULL, NULL, NULL, &cultistSwimChase };
|
||||
AISTATE cultistTSwimFire = { kAiStateChase, 8, &AF(TommySeqCallback), 0, NULL, aiMoveTurn, cultThinkChase, &cultistTSwimFire };
|
||||
AISTATE cultistTsSwimFire = { kAiStateChase, 8, &AF(TeslaSeqCallback), 0, NULL, aiMoveTurn, cultThinkChase, &cultistTsSwimFire };
|
||||
AISTATE cultistSwimRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &cultistSwimDodge };
|
||||
|
||||
void TommySeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -43,32 +43,32 @@ static void gargMoveSwoop(DBloodActor*);
|
|||
static void gargMoveFly(DBloodActor*);
|
||||
static void playStatueBreakSnd(DBloodActor*);
|
||||
|
||||
AISTATE gargoyleFIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, gargThinkTarget, NULL };
|
||||
AISTATE gargoyleStatueIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, NULL, NULL };
|
||||
AISTATE gargoyleFChase = { kAiStateChase, 0, -1, 0, NULL, gargMoveForward, gargThinkChase, &gargoyleFIdle };
|
||||
AISTATE gargoyleFGoto = { kAiStateMove, 0, -1, 600, NULL, gargMoveForward, gargThinkGoto, &gargoyleFIdle };
|
||||
AISTATE gargoyleFSlash = { kAiStateChase, 6, nSlashFClient, 120, NULL, NULL, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFThrow = { kAiStateChase, 6, nThrowFClient, 120, NULL, NULL, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleSThrow = { kAiStateChase, 6, nThrowSClient, 120, NULL, gargMoveForward, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleSBlast = { kAiStateChase, 7, nBlastSClient, 60, NULL, gargMoveSlow, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFSearch = { kAiStateSearch, 0, -1, 120, NULL, gargMoveForward, gargThinkSearch, &gargoyleFIdle };
|
||||
AISTATE gargoyleFMorph2 = { kAiStateOther, -1, -1, 0, entryFStatue, NULL, NULL, &gargoyleFIdle };
|
||||
AISTATE gargoyleFMorph = { kAiStateOther, 6, -1, 0, NULL, NULL, NULL, &gargoyleFMorph2 };
|
||||
AISTATE gargoyleSMorph2 = { kAiStateOther, -1, -1, 0, entrySStatue, NULL, NULL, &gargoyleFIdle };
|
||||
AISTATE gargoyleSMorph = { kAiStateOther, 6, -1, 0, NULL, NULL, NULL, &gargoyleSMorph2 };
|
||||
AISTATE gargoyleSwoop = { kAiStateOther, 0, -1, 120, NULL, gargMoveSwoop, gargThinkChase, &gargoyleFChase };
|
||||
AISTATE gargoyleFly = { kAiStateMove, 0, -1, 120, NULL, gargMoveFly, gargThinkChase, &gargoyleFChase };
|
||||
AISTATE gargoyleTurn = { kAiStateMove, 0, -1, 120, NULL, aiMoveTurn, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleDodgeUp = { kAiStateMove, 0, -1, 60, NULL, gargMoveDodgeUp, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeUpRight = { kAiStateMove, 0, -1, 90, NULL, gargMoveDodgeUp, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeUpLeft = { kAiStateMove, 0, -1, 90, NULL, gargMoveDodgeUp, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleDodgeDown = { kAiStateMove, 0, -1, 120, NULL, gargMoveDodgeDown, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeDownRight = { kAiStateMove, 0, -1, 90, NULL, gargMoveDodgeDown, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeDownLeft = { kAiStateMove, 0, -1, 90, NULL, gargMoveDodgeDown, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, gargThinkTarget, NULL };
|
||||
AISTATE gargoyleStatueIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, NULL, NULL };
|
||||
AISTATE gargoyleFChase = { kAiStateChase, 0, nullptr, 0, NULL, gargMoveForward, gargThinkChase, &gargoyleFIdle };
|
||||
AISTATE gargoyleFGoto = { kAiStateMove, 0, nullptr, 600, NULL, gargMoveForward, gargThinkGoto, &gargoyleFIdle };
|
||||
AISTATE gargoyleFSlash = { kAiStateChase, 6, &AF(SlashFSeqCallback), 120, NULL, NULL, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFThrow = { kAiStateChase, 6, &AF(ThrowFSeqCallback), 120, NULL, NULL, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleSThrow = { kAiStateChase, 6, &AF(ThrowSSeqCallback), 120, NULL, gargMoveForward, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleSBlast = { kAiStateChase, 7, &AF(BlastSSeqCallback), 60, NULL, gargMoveSlow, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFSearch = { kAiStateSearch, 0, nullptr, 120, NULL, gargMoveForward, gargThinkSearch, &gargoyleFIdle };
|
||||
AISTATE gargoyleFMorph2 = { kAiStateOther, -1, nullptr, 0, entryFStatue, NULL, NULL, &gargoyleFIdle };
|
||||
AISTATE gargoyleFMorph = { kAiStateOther, 6, nullptr, 0, NULL, NULL, NULL, &gargoyleFMorph2 };
|
||||
AISTATE gargoyleSMorph2 = { kAiStateOther, -1, nullptr, 0, entrySStatue, NULL, NULL, &gargoyleFIdle };
|
||||
AISTATE gargoyleSMorph = { kAiStateOther, 6, nullptr, 0, NULL, NULL, NULL, &gargoyleSMorph2 };
|
||||
AISTATE gargoyleSwoop = { kAiStateOther, 0, nullptr, 120, NULL, gargMoveSwoop, gargThinkChase, &gargoyleFChase };
|
||||
AISTATE gargoyleFly = { kAiStateMove, 0, nullptr, 120, NULL, gargMoveFly, gargThinkChase, &gargoyleFChase };
|
||||
AISTATE gargoyleTurn = { kAiStateMove, 0, nullptr, 120, NULL, aiMoveTurn, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleDodgeUp = { kAiStateMove, 0, nullptr, 60, NULL, gargMoveDodgeUp, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeUpRight = { kAiStateMove, 0, nullptr, 90, NULL, gargMoveDodgeUp, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeUpLeft = { kAiStateMove, 0, nullptr, 90, NULL, gargMoveDodgeUp, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleDodgeDown = { kAiStateMove, 0, nullptr, 120, NULL, gargMoveDodgeDown, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeDownRight = { kAiStateMove, 0, nullptr, 90, NULL, gargMoveDodgeDown, NULL, &gargoyleFChase };
|
||||
AISTATE gargoyleFDodgeDownLeft = { kAiStateMove, 0, nullptr, 90, NULL, gargMoveDodgeDown, NULL, &gargoyleFChase };
|
||||
|
||||
AISTATE statueFBreakSEQ = { kAiStateOther, 5, -1, 0, entryFStatue, NULL, playStatueBreakSnd, &gargoyleFMorph2 };
|
||||
AISTATE statueSBreakSEQ = { kAiStateOther, 5, -1, 0, entrySStatue, NULL, playStatueBreakSnd, &gargoyleSMorph2 };
|
||||
AISTATE statueFBreakSEQ = { kAiStateOther, 5, nullptr, 0, entryFStatue, NULL, playStatueBreakSnd, &gargoyleFMorph2 };
|
||||
AISTATE statueSBreakSEQ = { kAiStateOther, 5, nullptr, 0, entrySStatue, NULL, playStatueBreakSnd, &gargoyleSMorph2 };
|
||||
|
||||
static void playStatueBreakSnd(DBloodActor* actor) {
|
||||
|
||||
|
|
|
@ -41,24 +41,24 @@ static void ghostMoveSwoop(DBloodActor*);
|
|||
static void ghostMoveFly(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE ghostIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, ghostThinkTarget, NULL };
|
||||
AISTATE ghostChase = { kAiStateChase, 0, -1, 0, NULL, ghostMoveForward, ghostThinkChase, &ghostIdle };
|
||||
AISTATE ghostGoto = { kAiStateMove, 0, -1, 600, NULL, ghostMoveForward, ghostThinkGoto, &ghostIdle };
|
||||
AISTATE ghostSlash = { kAiStateChase, 6, nGhostSlashClient, 120, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostThrow = { kAiStateChase, 6, nGhostThrowClient, 120, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostBlast = { kAiStateChase, 6, nGhostBlastClient, 120, NULL, ghostMoveSlow, NULL, &ghostChase };
|
||||
AISTATE ghostRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostSearch = { kAiStateSearch, 0, -1, 120, NULL, ghostMoveForward, ghostThinkSearch, &ghostIdle };
|
||||
AISTATE ghostSwoop = { kAiStateOther, 0, -1, 120, NULL, ghostMoveSwoop, ghostThinkChase, &ghostChase };
|
||||
AISTATE ghostFly = { kAiStateMove, 0, -1, 0, NULL, ghostMoveFly, ghostThinkChase, &ghostChase };
|
||||
AISTATE ghostTurn = { kAiStateMove, 0, -1, 120, NULL, aiMoveTurn, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeUp = { kAiStateMove, 0, -1, 60, NULL, ghostMoveDodgeUp, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeUpRight = { kAiStateMove, 0, -1, 90, NULL, ghostMoveDodgeUp, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeUpLeft = { kAiStateMove, 0, -1, 90, NULL, ghostMoveDodgeUp, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeDown = { kAiStateMove, 0, -1, 120, NULL, ghostMoveDodgeDown, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeDownRight = { kAiStateMove, 0, -1, 90, NULL, ghostMoveDodgeDown, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeDownLeft = { kAiStateMove, 0, -1, 90, NULL, ghostMoveDodgeDown, NULL, &ghostChase };
|
||||
AISTATE ghostIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, ghostThinkTarget, NULL };
|
||||
AISTATE ghostChase = { kAiStateChase, 0, nullptr, 0, NULL, ghostMoveForward, ghostThinkChase, &ghostIdle };
|
||||
AISTATE ghostGoto = { kAiStateMove, 0, nullptr, 600, NULL, ghostMoveForward, ghostThinkGoto, &ghostIdle };
|
||||
AISTATE ghostSlash = { kAiStateChase, 6, &AF(ghostSlashSeqCallback), 120, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostThrow = { kAiStateChase, 6, &AF(ghostThrowSeqCallback), 120, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostBlast = { kAiStateChase, 6, &AF(ghostBlastSeqCallback), 120, NULL, ghostMoveSlow, NULL, &ghostChase };
|
||||
AISTATE ghostRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &ghostChase };
|
||||
AISTATE ghostSearch = { kAiStateSearch, 0, nullptr, 120, NULL, ghostMoveForward, ghostThinkSearch, &ghostIdle };
|
||||
AISTATE ghostSwoop = { kAiStateOther, 0, nullptr, 120, NULL, ghostMoveSwoop, ghostThinkChase, &ghostChase };
|
||||
AISTATE ghostFly = { kAiStateMove, 0, nullptr, 0, NULL, ghostMoveFly, ghostThinkChase, &ghostChase };
|
||||
AISTATE ghostTurn = { kAiStateMove, 0, nullptr, 120, NULL, aiMoveTurn, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeUp = { kAiStateMove, 0, nullptr, 60, NULL, ghostMoveDodgeUp, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeUpRight = { kAiStateMove, 0, nullptr, 90, NULL, ghostMoveDodgeUp, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeUpLeft = { kAiStateMove, 0, nullptr, 90, NULL, ghostMoveDodgeUp, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeDown = { kAiStateMove, 0, nullptr, 120, NULL, ghostMoveDodgeDown, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeDownRight = { kAiStateMove, 0, nullptr, 90, NULL, ghostMoveDodgeDown, NULL, &ghostChase };
|
||||
AISTATE ghostDodgeDownLeft = { kAiStateMove, 0, nullptr, 90, NULL, ghostMoveDodgeDown, NULL, &ghostChase };
|
||||
|
||||
void ghostSlashSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -39,23 +39,23 @@ static void sub_6CD74(DBloodActor*);
|
|||
static void sub_6D03C(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE gillBeastIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE gillBeastChase = { kAiStateChase, 9, -1, 0, NULL, aiMoveForward, gillThinkChase, NULL };
|
||||
AISTATE gillBeastDodge = { kAiStateMove, 9, -1, 90, NULL, aiMoveDodge, NULL, &gillBeastChase };
|
||||
AISTATE gillBeastGoto = { kAiStateMove, 9, -1, 600, NULL, aiMoveForward, gillThinkGoto, &gillBeastIdle };
|
||||
AISTATE gillBeastBite = { kAiStateChase, 6, nGillBiteClient, 120, NULL, NULL, NULL, &gillBeastChase };
|
||||
AISTATE gillBeastSearch = { kAiStateMove, 9, -1, 120, NULL, aiMoveForward, gillThinkSearch, &gillBeastIdle };
|
||||
AISTATE gillBeastRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &gillBeastDodge };
|
||||
AISTATE gillBeastSwimIdle = { kAiStateIdle, 10, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE gillBeastSwimChase = { kAiStateChase, 10, -1, 0, NULL, sub_6CB00, gillThinkSwimChase, NULL };
|
||||
AISTATE gillBeastSwimDodge = { kAiStateMove, 10, -1, 90, NULL, aiMoveDodge, NULL, &gillBeastSwimChase };
|
||||
AISTATE gillBeastSwimGoto = { kAiStateMove, 10, -1, 600, NULL, aiMoveForward, gillThinkSwimGoto, &gillBeastSwimIdle };
|
||||
AISTATE gillBeastSwimSearch = { kAiStateSearch, 10, -1, 120, NULL, aiMoveForward, gillThinkSearch, &gillBeastSwimIdle };
|
||||
AISTATE gillBeastSwimBite = { kAiStateChase, 7, nGillBiteClient, 0, NULL, NULL, gillThinkSwimChase, &gillBeastSwimChase };
|
||||
AISTATE gillBeastSwimRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &gillBeastSwimDodge };
|
||||
AISTATE gillBeast13A138 = { kAiStateOther, 10, -1, 120, NULL, sub_6CD74, gillThinkSwimChase, &gillBeastSwimChase };
|
||||
AISTATE gillBeast13A154 = { kAiStateOther, 10, -1, 0, NULL, sub_6D03C, gillThinkSwimChase, &gillBeastSwimChase };
|
||||
AISTATE gillBeast13A170 = { kAiStateOther, 10, -1, 120, NULL, NULL, aiMoveTurn, &gillBeastSwimChase };
|
||||
AISTATE gillBeastIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE gillBeastChase = { kAiStateChase, 9, nullptr, 0, NULL, aiMoveForward, gillThinkChase, NULL };
|
||||
AISTATE gillBeastDodge = { kAiStateMove, 9, nullptr, 90, NULL, aiMoveDodge, NULL, &gillBeastChase };
|
||||
AISTATE gillBeastGoto = { kAiStateMove, 9, nullptr, 600, NULL, aiMoveForward, gillThinkGoto, &gillBeastIdle };
|
||||
AISTATE gillBeastBite = { kAiStateChase, 6, &AF(GillBiteSeqCallback), 120, NULL, NULL, NULL, &gillBeastChase };
|
||||
AISTATE gillBeastSearch = { kAiStateMove, 9, nullptr, 120, NULL, aiMoveForward, gillThinkSearch, &gillBeastIdle };
|
||||
AISTATE gillBeastRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &gillBeastDodge };
|
||||
AISTATE gillBeastSwimIdle = { kAiStateIdle, 10, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE gillBeastSwimChase = { kAiStateChase, 10, nullptr, 0, NULL, sub_6CB00, gillThinkSwimChase, NULL };
|
||||
AISTATE gillBeastSwimDodge = { kAiStateMove, 10, nullptr, 90, NULL, aiMoveDodge, NULL, &gillBeastSwimChase };
|
||||
AISTATE gillBeastSwimGoto = { kAiStateMove, 10, nullptr, 600, NULL, aiMoveForward, gillThinkSwimGoto, &gillBeastSwimIdle };
|
||||
AISTATE gillBeastSwimSearch = { kAiStateSearch, 10, nullptr, 120, NULL, aiMoveForward, gillThinkSearch, &gillBeastSwimIdle };
|
||||
AISTATE gillBeastSwimBite = { kAiStateChase, 7, &AF(GillBiteSeqCallback), 0, NULL, NULL, gillThinkSwimChase, &gillBeastSwimChase };
|
||||
AISTATE gillBeastSwimRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &gillBeastSwimDodge };
|
||||
AISTATE gillBeast13A138 = { kAiStateOther, 10, nullptr, 120, NULL, sub_6CD74, gillThinkSwimChase, &gillBeastSwimChase };
|
||||
AISTATE gillBeast13A154 = { kAiStateOther, 10, nullptr, 0, NULL, sub_6D03C, gillThinkSwimChase, &gillBeastSwimChase };
|
||||
AISTATE gillBeast13A170 = { kAiStateOther, 10, nullptr, 120, NULL, NULL, aiMoveTurn, &gillBeastSwimChase };
|
||||
|
||||
void GillBiteSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -33,13 +33,13 @@ static void handThinkSearch(DBloodActor*);
|
|||
static void handThinkGoto(DBloodActor*);
|
||||
static void handThinkChase(DBloodActor*);
|
||||
|
||||
AISTATE handIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE hand13A3B4 = { kAiStateOther, 0, -1, 0, NULL, NULL, NULL, NULL };
|
||||
AISTATE handSearch = { kAiStateMove, 6, -1, 600, NULL, aiMoveForward, handThinkSearch, &handIdle };
|
||||
AISTATE handChase = { kAiStateChase, 6, -1, 0, NULL, aiMoveForward, handThinkChase, NULL };
|
||||
AISTATE handRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &handSearch };
|
||||
AISTATE handGoto = { kAiStateMove, 6, -1, 1800, NULL, aiMoveForward, handThinkGoto, &handIdle };
|
||||
AISTATE handJump = { kAiStateChase, 7, nJumpClient, 120, NULL, NULL, NULL, &handChase };
|
||||
AISTATE handIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE hand13A3B4 = { kAiStateOther, 0, nullptr, 0, NULL, NULL, NULL, NULL };
|
||||
AISTATE handSearch = { kAiStateMove, 6, nullptr, 600, NULL, aiMoveForward, handThinkSearch, &handIdle };
|
||||
AISTATE handChase = { kAiStateChase, 6, nullptr, 0, NULL, aiMoveForward, handThinkChase, NULL };
|
||||
AISTATE handRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &handSearch };
|
||||
AISTATE handGoto = { kAiStateMove, 6, nullptr, 1800, NULL, aiMoveForward, handThinkGoto, &handIdle };
|
||||
AISTATE handJump = { kAiStateChase, 7, &AF(HandJumpSeqCallback), 120, NULL, NULL, NULL, &handChase };
|
||||
|
||||
void HandJumpSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -33,14 +33,14 @@ static void houndThinkSearch(DBloodActor*);
|
|||
static void houndThinkGoto(DBloodActor*);
|
||||
static void houndThinkChase(DBloodActor*);
|
||||
|
||||
AISTATE houndIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE houndSearch = { kAiStateMove, 8, -1, 1800, NULL, aiMoveForward, houndThinkSearch, &houndIdle };
|
||||
AISTATE houndChase = { kAiStateChase, 8, -1, 0, NULL, aiMoveForward, houndThinkChase, NULL };
|
||||
AISTATE houndRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &houndSearch };
|
||||
AISTATE houndTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &houndSearch };
|
||||
AISTATE houndGoto = { kAiStateMove, 8, -1, 600, NULL, aiMoveForward, houndThinkGoto, &houndIdle };
|
||||
AISTATE houndBite = { kAiStateChase, 6, nHoundBiteClient, 60, NULL, NULL, NULL, &houndChase };
|
||||
AISTATE houndBurn = { kAiStateChase, 7, nHoundBurnClient, 60, NULL, NULL, NULL, &houndChase };
|
||||
AISTATE houndIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE houndSearch = { kAiStateMove, 8, nullptr, 1800, NULL, aiMoveForward, houndThinkSearch, &houndIdle };
|
||||
AISTATE houndChase = { kAiStateChase, 8, nullptr, 0, NULL, aiMoveForward, houndThinkChase, NULL };
|
||||
AISTATE houndRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &houndSearch };
|
||||
AISTATE houndTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &houndSearch };
|
||||
AISTATE houndGoto = { kAiStateMove, 8, nullptr, 600, NULL, aiMoveForward, houndThinkGoto, &houndIdle };
|
||||
AISTATE houndBite = { kAiStateChase, 6, &AF(houndBiteSeqCallback), 60, NULL, NULL, NULL, &houndChase };
|
||||
AISTATE houndBurn = { kAiStateChase, 7, &AF(houndBurnSeqCallback), 60, NULL, NULL, NULL, &houndChase };
|
||||
|
||||
void houndBiteSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -33,12 +33,12 @@ static void innocThinkSearch(DBloodActor*);
|
|||
static void innocThinkGoto(DBloodActor*);
|
||||
static void innocThinkChase(DBloodActor*);
|
||||
|
||||
AISTATE innocentIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE innocentSearch = { kAiStateSearch, 6, -1, 1800, NULL, aiMoveForward, innocThinkSearch, &innocentIdle };
|
||||
AISTATE innocentChase = { kAiStateChase, 6, -1, 0, NULL, aiMoveForward, innocThinkChase, NULL };
|
||||
AISTATE innocentRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &innocentChase };
|
||||
AISTATE innocentTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &innocentChase };
|
||||
AISTATE innocentGoto = { kAiStateMove, 6, -1, 600, NULL, aiMoveForward, innocThinkGoto, &innocentIdle };
|
||||
AISTATE innocentIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE innocentSearch = { kAiStateSearch, 6, nullptr, 1800, NULL, aiMoveForward, innocThinkSearch, &innocentIdle };
|
||||
AISTATE innocentChase = { kAiStateChase, 6, nullptr, 0, NULL, aiMoveForward, innocThinkChase, NULL };
|
||||
AISTATE innocentRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &innocentChase };
|
||||
AISTATE innocentTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &innocentChase };
|
||||
AISTATE innocentGoto = { kAiStateMove, 6, nullptr, 600, NULL, aiMoveForward, innocThinkGoto, &innocentIdle };
|
||||
|
||||
static void innocThinkSearch(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -33,22 +33,22 @@ static void aiPodSearch(DBloodActor* actor);
|
|||
static void aiPodMove(DBloodActor* actor);
|
||||
static void aiPodChase(DBloodActor* actor);
|
||||
|
||||
AISTATE podIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE podMove = { kAiStateMove, 7, -1, 3600, NULL, aiMoveTurn, aiPodMove, &podSearch };
|
||||
AISTATE podSearch = { kAiStateSearch, 0, -1, 3600, NULL, aiMoveTurn, aiPodSearch, &podSearch };
|
||||
AISTATE podStartChase = { kAiStateChase, 8, nPodStartChaseClient, 600, NULL, NULL, NULL, &podChase };
|
||||
AISTATE podRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &podChase };
|
||||
AISTATE podChase = { kAiStateChase, 6, -1, 0, NULL, aiMoveTurn, aiPodChase, NULL };
|
||||
AISTATE tentacleIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE tentacle13A6A8 = { kAiStateOther, 7, dword_279B3C, 0, NULL, NULL, NULL, &tentacle13A6C4 };
|
||||
AISTATE tentacle13A6C4 = { kAiStateOther, -1, -1, 0, NULL, NULL, NULL, &tentacleChase };
|
||||
AISTATE tentacle13A6E0 = { kAiStateOther, 8, dword_279B40, 0, NULL, NULL, NULL, &tentacle13A6FC };
|
||||
AISTATE tentacle13A6FC = { kAiStateOther, -1, -1, 0, NULL, NULL, NULL, &tentacleIdle };
|
||||
AISTATE tentacleMove = { kAiStateOther, 8, -1, 3600, NULL, aiMoveTurn, aiPodMove, &tentacleSearch };
|
||||
AISTATE tentacleSearch = { kAiStateOther, 0, -1, 3600, NULL, aiMoveTurn, aiPodSearch, NULL };
|
||||
AISTATE tentacleStartChase = { kAiStateOther, 6, nTentacleStartSearchClient, 120, NULL, NULL, NULL, &tentacleChase };
|
||||
AISTATE tentacleRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &tentacleChase };
|
||||
AISTATE tentacleChase = { kAiStateChase, 6, -1, 0, NULL, aiMoveTurn, aiPodChase, NULL };
|
||||
AISTATE podIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE podMove = { kAiStateMove, 7, nullptr, 3600, NULL, aiMoveTurn, aiPodMove, &podSearch };
|
||||
AISTATE podSearch = { kAiStateSearch, 0, nullptr, 3600, NULL, aiMoveTurn, aiPodSearch, &podSearch };
|
||||
AISTATE podStartChase = { kAiStateChase, 8, &AF(podAttack), 600, NULL, NULL, NULL, &podChase };
|
||||
AISTATE podRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &podChase };
|
||||
AISTATE podChase = { kAiStateChase, 6, nullptr, 0, NULL, aiMoveTurn, aiPodChase, NULL };
|
||||
AISTATE tentacleIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE tentacle13A6A8 = { kAiStateOther, 7, &AF(podPlaySound1), 0, NULL, NULL, NULL, &tentacle13A6C4 };
|
||||
AISTATE tentacle13A6C4 = { kAiStateOther, -1, nullptr, 0, NULL, NULL, NULL, &tentacleChase };
|
||||
AISTATE tentacle13A6E0 = { kAiStateOther, 8, &AF(podPlaySound2), 0, NULL, NULL, NULL, &tentacle13A6FC };
|
||||
AISTATE tentacle13A6FC = { kAiStateOther, -1, nullptr, 0, NULL, NULL, NULL, &tentacleIdle };
|
||||
AISTATE tentacleMove = { kAiStateOther, 8, nullptr, 3600, NULL, aiMoveTurn, aiPodMove, &tentacleSearch };
|
||||
AISTATE tentacleSearch = { kAiStateOther, 0, nullptr, 3600, NULL, aiMoveTurn, aiPodSearch, NULL };
|
||||
AISTATE tentacleStartChase = { kAiStateOther, 6, &AF(podExplode), 120, NULL, NULL, NULL, &tentacleChase };
|
||||
AISTATE tentacleRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &tentacleChase };
|
||||
AISTATE tentacleChase = { kAiStateChase, 6, nullptr, 0, NULL, aiMoveTurn, aiPodChase, NULL };
|
||||
|
||||
void podPlaySound1(DBloodActor* actor)
|
||||
{
|
||||
|
@ -84,7 +84,7 @@ void podAttack(DBloodActor* actor)
|
|||
pMissile = actFireThing(actor, 0., -500., dv.Z / 32768 - 0.22125, kThingPodGreenBall, nDist * (2048. / 64800));
|
||||
}
|
||||
if (pMissile)
|
||||
seqSpawn(68, pMissile, -1);
|
||||
seqSpawn(68, pMissile);
|
||||
break;
|
||||
case kDudePodFire:
|
||||
dv.Z += 31.25;
|
||||
|
@ -94,7 +94,7 @@ void podAttack(DBloodActor* actor)
|
|||
pMissile = actFireThing(actor, 0., -500., dv.Z / 32768 - 0.22125, kThingPodFireBall, nDist * (2048. / 64800));
|
||||
}
|
||||
if (pMissile)
|
||||
seqSpawn(22, pMissile, -1);
|
||||
seqSpawn(22, pMissile);
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
|
|
|
@ -33,13 +33,13 @@ static void ratThinkSearch(DBloodActor*);
|
|||
static void ratThinkGoto(DBloodActor*);
|
||||
static void ratThinkChase(DBloodActor*);
|
||||
|
||||
AISTATE ratIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE ratSearch = { kAiStateSearch, 7, -1, 1800, NULL, aiMoveForward, ratThinkSearch, &ratIdle };
|
||||
AISTATE ratChase = { kAiStateChase, 7, -1, 0, NULL, aiMoveForward, ratThinkChase, NULL };
|
||||
AISTATE ratDodge = { kAiStateMove, 7, -1, 0, NULL, NULL, NULL, &ratChase };
|
||||
AISTATE ratRecoil = { kAiStateRecoil, 7, -1, 0, NULL, NULL, NULL, &ratDodge };
|
||||
AISTATE ratGoto = { kAiStateMove, 7, -1, 600, NULL, aiMoveForward, ratThinkGoto, &ratIdle };
|
||||
AISTATE ratBite = { kAiStateChase, 6, nRatBiteClient, 120, NULL, NULL, NULL, &ratChase };
|
||||
AISTATE ratIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE ratSearch = { kAiStateSearch, 7, nullptr, 1800, NULL, aiMoveForward, ratThinkSearch, &ratIdle };
|
||||
AISTATE ratChase = { kAiStateChase, 7, nullptr, 0, NULL, aiMoveForward, ratThinkChase, NULL };
|
||||
AISTATE ratDodge = { kAiStateMove, 7, nullptr, 0, NULL, NULL, NULL, &ratChase };
|
||||
AISTATE ratRecoil = { kAiStateRecoil, 7, nullptr, 0, NULL, NULL, NULL, &ratDodge };
|
||||
AISTATE ratGoto = { kAiStateMove, 7, nullptr, 600, NULL, aiMoveForward, ratThinkGoto, &ratIdle };
|
||||
AISTATE ratBite = { kAiStateChase, 6, &AF(ratBiteSeqCallback), 120, NULL, NULL, NULL, &ratChase };
|
||||
|
||||
void ratBiteSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -34,14 +34,14 @@ static void spidThinkGoto(DBloodActor*);
|
|||
static void spidThinkChase(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE spidIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE spidChase = { kAiStateChase, 7, -1, 0, NULL, aiMoveForward, spidThinkChase, NULL };
|
||||
AISTATE spidDodge = { kAiStateMove, 7, -1, 90, NULL, aiMoveDodge, NULL, &spidChase };
|
||||
AISTATE spidGoto = { kAiStateMove, 7, -1, 600, NULL, aiMoveForward, spidThinkGoto, &spidIdle };
|
||||
AISTATE spidSearch = { kAiStateSearch, 7, -1, 1800, NULL, aiMoveForward, spidThinkSearch, &spidIdle };
|
||||
AISTATE spidBite = { kAiStateChase, 6, nSpidBiteClient, 60, NULL, NULL, NULL, &spidChase };
|
||||
AISTATE spidJump = { kAiStateChase, 8, nSpidJumpClient, 60, NULL, aiMoveForward, NULL, &spidChase };
|
||||
AISTATE spidBirth = { kAiStateOther, 0, nSpidBirthClient, 60, NULL, NULL, NULL, &spidIdle };
|
||||
AISTATE spidIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE spidChase = { kAiStateChase, 7, nullptr, 0, NULL, aiMoveForward, spidThinkChase, NULL };
|
||||
AISTATE spidDodge = { kAiStateMove, 7, nullptr, 90, NULL, aiMoveDodge, NULL, &spidChase };
|
||||
AISTATE spidGoto = { kAiStateMove, 7, nullptr, 600, NULL, aiMoveForward, spidThinkGoto, &spidIdle };
|
||||
AISTATE spidSearch = { kAiStateSearch, 7, nullptr, 1800, NULL, aiMoveForward, spidThinkSearch, &spidIdle };
|
||||
AISTATE spidBite = { kAiStateChase, 6, &AF(SpidBiteSeqCallback), 60, NULL, NULL, NULL, &spidChase };
|
||||
AISTATE spidJump = { kAiStateChase, 8, &AF(SpidJumpSeqCallback), 60, NULL, aiMoveForward, NULL, &spidChase };
|
||||
AISTATE spidBirth = { kAiStateOther, 0, &AF(SpidBirthSeqCallback), 60, NULL, NULL, NULL, &spidIdle };
|
||||
|
||||
static void spidBlindEffect(DBloodActor* actor, int nBlind, int max)
|
||||
{
|
||||
|
|
|
@ -35,15 +35,15 @@ static void sub_72850(DBloodActor*);
|
|||
static void tchernobogThinkChase(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE tchernobogIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, sub_725A4, NULL };
|
||||
AISTATE tchernobogSearch = { kAiStateSearch, 8, -1, 1800, NULL, aiMoveForward, sub_72580, &tchernobogIdle };
|
||||
AISTATE tchernobogChase = { kAiStateChase, 8, -1, 0, NULL, aiMoveForward, tchernobogThinkChase, NULL };
|
||||
AISTATE tchernobogRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &tchernobogSearch };
|
||||
AISTATE tcherno13A9B8 = { kAiStateMove, 8, -1, 600, NULL, aiMoveForward, sub_72850, &tchernobogIdle };
|
||||
AISTATE tcherno13A9D4 = { kAiStateMove, 6, dword_279B54, 60, NULL, NULL, NULL, &tchernobogChase };
|
||||
AISTATE tcherno13A9F0 = { kAiStateChase, 6, dword_279B58, 60, NULL, NULL, NULL, &tchernobogChase };
|
||||
AISTATE tcherno13AA0C = { kAiStateChase, 7, dword_279B5C, 60, NULL, NULL, NULL, &tchernobogChase };
|
||||
AISTATE tcherno13AA28 = { kAiStateChase, 8, -1, 60, NULL, aiMoveTurn, NULL, &tchernobogChase };
|
||||
AISTATE tchernobogIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, sub_725A4, NULL };
|
||||
AISTATE tchernobogSearch = { kAiStateSearch, 8, nullptr, 1800, NULL, aiMoveForward, sub_72580, &tchernobogIdle };
|
||||
AISTATE tchernobogChase = { kAiStateChase, 8, nullptr, 0, NULL, aiMoveForward, tchernobogThinkChase, NULL };
|
||||
AISTATE tchernobogRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &tchernobogSearch };
|
||||
AISTATE tcherno13A9B8 = { kAiStateMove, 8, nullptr, 600, NULL, aiMoveForward, sub_72850, &tchernobogIdle };
|
||||
AISTATE tcherno13A9D4 = { kAiStateMove, 6, &AF(tchernobogBurnSeqCallback), 60, NULL, NULL, NULL, &tchernobogChase };
|
||||
AISTATE tcherno13A9F0 = { kAiStateChase, 6, &AF(tchernobogBurnSeqCallback2), 60, NULL, NULL, NULL, &tchernobogChase };
|
||||
AISTATE tcherno13AA0C = { kAiStateChase, 7, &AF(tchernobogFire), 60, NULL, NULL, NULL, &tchernobogChase };
|
||||
AISTATE tcherno13AA28 = { kAiStateChase, 8, nullptr, 60, NULL, aiMoveTurn, NULL, &tchernobogChase };
|
||||
|
||||
static constexpr double Tchernnobog_XYOff = 350. / 16;
|
||||
|
||||
|
|
|
@ -39,54 +39,54 @@ static void unicultThinkGoto(DBloodActor*);
|
|||
static void unicultThinkChase(DBloodActor*);
|
||||
static void forcePunch(DBloodActor*);
|
||||
|
||||
AISTATE genDudeIdleL = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE genDudeIdleW = { kAiStateIdle, 13, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE genDudeIdleL = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE genDudeIdleW = { kAiStateIdle, 13, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
// ---------------------
|
||||
AISTATE genDudeSearchL = { kAiStateSearch, 9, -1, 600, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleL };
|
||||
AISTATE genDudeSearchW = { kAiStateSearch, 13, -1, 600, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleW };
|
||||
AISTATE genDudeSearchL = { kAiStateSearch, 9, nullptr, 600, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleL };
|
||||
AISTATE genDudeSearchW = { kAiStateSearch, 13, nullptr, 600, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleW };
|
||||
// ---------------------
|
||||
AISTATE genDudeSearchShortL = { kAiStateSearch, 9, -1, 200, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleL };
|
||||
AISTATE genDudeSearchShortW = { kAiStateSearch, 13, -1, 200, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleW };
|
||||
AISTATE genDudeSearchShortL = { kAiStateSearch, 9, nullptr, 200, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleL };
|
||||
AISTATE genDudeSearchShortW = { kAiStateSearch, 13, nullptr, 200, NULL, aiGenDudeMoveForward, unicultThinkSearch, &genDudeIdleW };
|
||||
// ---------------------
|
||||
AISTATE genDudeSearchNoWalkL = { kAiStateSearch, 0, -1, 600, NULL, aiMoveTurn, unicultThinkSearch, &genDudeIdleL };
|
||||
AISTATE genDudeSearchNoWalkW = { kAiStateSearch, 13, -1, 600, NULL, aiMoveTurn, unicultThinkSearch, &genDudeIdleW };
|
||||
AISTATE genDudeSearchNoWalkL = { kAiStateSearch, 0, nullptr, 600, NULL, aiMoveTurn, unicultThinkSearch, &genDudeIdleL };
|
||||
AISTATE genDudeSearchNoWalkW = { kAiStateSearch, 13, nullptr, 600, NULL, aiMoveTurn, unicultThinkSearch, &genDudeIdleW };
|
||||
// ---------------------
|
||||
AISTATE genDudeGotoL = { kAiStateMove, 9, -1, 600, NULL, aiGenDudeMoveForward, unicultThinkGoto, &genDudeIdleL };
|
||||
AISTATE genDudeGotoW = { kAiStateMove, 13, -1, 600, NULL, aiGenDudeMoveForward, unicultThinkGoto, &genDudeIdleW };
|
||||
AISTATE genDudeGotoL = { kAiStateMove, 9, nullptr, 600, NULL, aiGenDudeMoveForward, unicultThinkGoto, &genDudeIdleL };
|
||||
AISTATE genDudeGotoW = { kAiStateMove, 13, nullptr, 600, NULL, aiGenDudeMoveForward, unicultThinkGoto, &genDudeIdleW };
|
||||
// ---------------------
|
||||
AISTATE genDudeDodgeL = { kAiStateMove, 9, -1, 90, NULL, aiMoveDodge, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeDodgeD = { kAiStateMove, 14, -1, 90, NULL, aiMoveDodge, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeDodgeW = { kAiStateMove, 13, -1, 90, NULL, aiMoveDodge, NULL, &genDudeChaseW };
|
||||
AISTATE genDudeDodgeL = { kAiStateMove, 9, nullptr, 90, NULL, aiMoveDodge, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeDodgeD = { kAiStateMove, 14, nullptr, 90, NULL, aiMoveDodge, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeDodgeW = { kAiStateMove, 13, nullptr, 90, NULL, aiMoveDodge, NULL, &genDudeChaseW };
|
||||
// ---------------------
|
||||
AISTATE genDudeDodgeShortL = { kAiStateMove, 9, -1, 60, NULL, aiMoveDodge, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeDodgeShortD = { kAiStateMove, 14, -1, 60, NULL, aiMoveDodge, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeDodgeShortW = { kAiStateMove, 13, -1, 60, NULL, aiMoveDodge, NULL, &genDudeChaseW };
|
||||
AISTATE genDudeDodgeShortL = { kAiStateMove, 9, nullptr, 60, NULL, aiMoveDodge, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeDodgeShortD = { kAiStateMove, 14, nullptr, 60, NULL, aiMoveDodge, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeDodgeShortW = { kAiStateMove, 13, nullptr, 60, NULL, aiMoveDodge, NULL, &genDudeChaseW };
|
||||
// ---------------------
|
||||
AISTATE genDudeDodgeShorterL = { kAiStateMove, 9, -1, 20, NULL, aiMoveDodge, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeDodgeShorterD = { kAiStateMove, 14, -1, 20, NULL, aiMoveDodge, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeDodgeShorterW = { kAiStateMove, 13, -1, 20, NULL, aiMoveDodge, NULL, &genDudeChaseW };
|
||||
AISTATE genDudeDodgeShorterL = { kAiStateMove, 9, nullptr, 20, NULL, aiMoveDodge, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeDodgeShorterD = { kAiStateMove, 14, nullptr, 20, NULL, aiMoveDodge, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeDodgeShorterW = { kAiStateMove, 13, nullptr, 20, NULL, aiMoveDodge, NULL, &genDudeChaseW };
|
||||
// ---------------------
|
||||
AISTATE genDudeChaseL = { kAiStateChase, 9, -1, 0, NULL, aiGenDudeMoveForward, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseD = { kAiStateChase, 14, -1, 0, NULL, aiGenDudeMoveForward, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseW = { kAiStateChase, 13, -1, 0, NULL, aiGenDudeMoveForward, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseL = { kAiStateChase, 9, nullptr, 0, NULL, aiGenDudeMoveForward, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseD = { kAiStateChase, 14, nullptr, 0, NULL, aiGenDudeMoveForward, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseW = { kAiStateChase, 13, nullptr, 0, NULL, aiGenDudeMoveForward, unicultThinkChase, NULL };
|
||||
// ---------------------
|
||||
AISTATE genDudeChaseNoWalkL = { kAiStateChase, 0, -1, 0, NULL, aiMoveTurn, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseNoWalkD = { kAiStateChase, 14, -1, 0, NULL, aiMoveTurn, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseNoWalkW = { kAiStateChase, 13, -1, 0, NULL, aiMoveTurn, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseNoWalkL = { kAiStateChase, 0, nullptr, 0, NULL, aiMoveTurn, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseNoWalkD = { kAiStateChase, 14, nullptr, 0, NULL, aiMoveTurn, unicultThinkChase, NULL };
|
||||
AISTATE genDudeChaseNoWalkW = { kAiStateChase, 13, nullptr, 0, NULL, aiMoveTurn, unicultThinkChase, NULL };
|
||||
// ---------------------
|
||||
AISTATE genDudeFireL = { kAiStateChase, 6, nGenDudeAttack1, 0, NULL, aiMoveTurn, unicultThinkChase, &genDudeFireL };
|
||||
AISTATE genDudeFireD = { kAiStateChase, 8, nGenDudeAttack1, 0, NULL, aiMoveTurn, unicultThinkChase, &genDudeFireD };
|
||||
AISTATE genDudeFireW = { kAiStateChase, 8, nGenDudeAttack1, 0, NULL, aiMoveTurn, unicultThinkChase, &genDudeFireW };
|
||||
AISTATE genDudeFireL = { kAiStateChase, 6, &AF(genDudeAttack1), 0, NULL, aiMoveTurn, unicultThinkChase, &genDudeFireL };
|
||||
AISTATE genDudeFireD = { kAiStateChase, 8, &AF(genDudeAttack1), 0, NULL, aiMoveTurn, unicultThinkChase, &genDudeFireD };
|
||||
AISTATE genDudeFireW = { kAiStateChase, 8, &AF(genDudeAttack1), 0, NULL, aiMoveTurn, unicultThinkChase, &genDudeFireW };
|
||||
// ---------------------z
|
||||
AISTATE genDudeRecoilL = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeRecoilD = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeRecoilW = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &genDudeChaseW };
|
||||
AISTATE genDudeRecoilTesla = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &genDudeDodgeShortL };
|
||||
AISTATE genDudeRecoilL = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeRecoilD = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &genDudeChaseD };
|
||||
AISTATE genDudeRecoilW = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &genDudeChaseW };
|
||||
AISTATE genDudeRecoilTesla = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &genDudeDodgeShortL };
|
||||
// ---------------------
|
||||
AISTATE genDudeThrow = { kAiStateChase, 7, nGenDudeThrow1, 0, NULL, NULL, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeThrow2 = { kAiStateChase, 7, nGenDudeThrow2, 0, NULL, NULL, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeThrow = { kAiStateChase, 7, &AF(ThrowCallback1), 0, NULL, NULL, NULL, &genDudeChaseL };
|
||||
AISTATE genDudeThrow2 = { kAiStateChase, 7, &AF(ThrowCallback2), 0, NULL, NULL, NULL, &genDudeChaseL };
|
||||
// ---------------------
|
||||
AISTATE genDudePunch = { kAiStateChase,10, nGenDudePunch, 0, NULL, NULL, forcePunch, &genDudeChaseL };
|
||||
AISTATE genDudePunch = { kAiStateChase,10, &AF(punchCallback), 0, NULL, NULL, forcePunch, &genDudeChaseL };
|
||||
// ---------------------
|
||||
|
||||
const GENDUDESND gCustomDudeSnd[] = {
|
||||
|
@ -1259,7 +1259,7 @@ void aiGenDudeNewState(DBloodActor* actor, AISTATE* pAIState)
|
|||
int stateSeq = actor->xspr.data2 + pAIState->seqId;
|
||||
if (pAIState->seqId >= 0 && getSequence(stateSeq))
|
||||
{
|
||||
seqSpawn(stateSeq, actor, pAIState->funcId);
|
||||
seqSpawn(stateSeq, actor, *pAIState->funcId);
|
||||
}
|
||||
|
||||
if (pAIState->enterFunc)
|
||||
|
@ -1832,7 +1832,7 @@ bool doExplosion(DBloodActor* actor, int nType)
|
|||
else if (nType <= 6) { nSeq = 4; nSnd = 303; }
|
||||
else if (nType == 7) { nSeq = 4; nSnd = 303; }
|
||||
|
||||
seqSpawn(nSeq, actExplosion, -1);
|
||||
seqSpawn(nSeq, actExplosion);
|
||||
sfxPlay3DSound(actExplosion, nSnd, -1, 0);
|
||||
|
||||
return true;
|
||||
|
@ -1869,7 +1869,7 @@ DBloodActor* genDudeSpawn(DBloodActor* source, DBloodActor* actor, double nDist)
|
|||
spawned->xspr.data3 = 0;
|
||||
|
||||
// spawn seq
|
||||
seqSpawn(genDudeSeqStartId(spawned), spawned, -1);
|
||||
seqSpawn(genDudeSeqStartId(spawned), spawned);
|
||||
|
||||
// inherit movement speed.
|
||||
spawned->xspr.busyTime = source->xspr.busyTime;
|
||||
|
@ -2012,7 +2012,7 @@ void genDudeTransform(DBloodActor* actor)
|
|||
genDudePrepare(actor, kGenDudePropertyMass);
|
||||
[[fallthrough]]; // go below
|
||||
default:
|
||||
seqSpawn(seqId, actor, -1);
|
||||
seqSpawn(seqId, actor);
|
||||
|
||||
// save target
|
||||
auto target = actor->GetTarget();
|
||||
|
@ -2446,7 +2446,7 @@ bool genDudePrepare(DBloodActor* actor, int propId)
|
|||
}
|
||||
case kGenDudePropertySpriteSize: {
|
||||
if (seqGetStatus(actor) == -1)
|
||||
seqSpawn(actor->xspr.data2 + actor->xspr.aiState->seqId, actor, -1);
|
||||
seqSpawn(actor->xspr.data2 + actor->xspr.aiState->seqId, actor);
|
||||
|
||||
// make sure dudes aren't in the floor or ceiling
|
||||
double zTop, zBot;
|
||||
|
@ -2577,7 +2577,7 @@ bool actKillModernDude(DBloodActor* actor, DAMAGE_TYPE damageType)
|
|||
|
||||
playGenDudeSound(actor, kGenDudeSndTransforming);
|
||||
int seqId = actor->xspr.data2 + kGenDudeSeqTransform;
|
||||
if (getSequence(seqId)) seqSpawn(seqId, actor, -1);
|
||||
if (getSequence(seqId)) seqSpawn(seqId, actor);
|
||||
else
|
||||
{
|
||||
seqKill(actor);
|
||||
|
@ -2619,7 +2619,7 @@ bool actKillModernDude(DBloodActor* actor, DAMAGE_TYPE damageType)
|
|||
void modernCustomDudeDeath(DBloodActor* actor, int nSeq, int damageType)
|
||||
{
|
||||
playGenDudeSound(actor, kGenDudeSndDeathNormal);
|
||||
int dudeToGib = (actCheckRespawn(actor)) ? -1 : ((nSeq == 3) ? nDudeToGibClient2 : nDudeToGibClient1);
|
||||
auto dudeToGib = (actCheckRespawn(actor)) ? nullptr : ((nSeq == 3) ? AF(DudeToGibCallback2) : AF(DudeToGibCallback1));
|
||||
if (nSeq == 3)
|
||||
{
|
||||
GENDUDEEXTRA* pExtra = &actor->genDudeExtra;
|
||||
|
@ -2645,7 +2645,7 @@ void modernCustomDudeDeath(DBloodActor* actor, int nSeq, int damageType)
|
|||
void modernCustomDudeBurningDeath(DBloodActor* actor, int nSeq)
|
||||
{
|
||||
playGenDudeSound(actor, kGenDudeSndDeathExplode);
|
||||
int dudeToGib = (actCheckRespawn(actor)) ? -1 : nDudeToGibClient1;
|
||||
auto dudeToGib = (actCheckRespawn(actor)) ? nullptr : AF(DudeToGibCallback1);
|
||||
|
||||
if (Chance(0x4000)) spawnGibs(actor, GIBTYPE_27, -0xccccc);
|
||||
|
||||
|
|
|
@ -40,23 +40,23 @@ static void entryAIdle(DBloodActor*);
|
|||
static void entryEStand(DBloodActor*);
|
||||
|
||||
|
||||
AISTATE zombieAIdle = { kAiStateIdle, 0, -1, 0, entryAIdle, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombieAChase = { kAiStateChase, 8, -1, 0, NULL, aiMoveForward, zombaThinkChase, NULL };
|
||||
AISTATE zombieAPonder = { kAiStateOther, 0, -1, 0, NULL, aiMoveTurn, zombaThinkPonder, NULL };
|
||||
AISTATE zombieAGoto = { kAiStateMove, 8, -1, 1800, NULL, aiMoveForward, zombaThinkGoto, &zombieAIdle };
|
||||
AISTATE zombieAHack = { kAiStateChase, 6, nHackClient, 80, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieASearch = { kAiStateSearch, 8, -1, 1800, NULL, aiMoveForward, zombaThinkSearch, &zombieAIdle };
|
||||
AISTATE zombieARecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieATeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieARecoil2 = { kAiStateRecoil, 1, -1, 360, NULL, NULL, NULL, &zombieAStand };
|
||||
AISTATE zombieAStand = { kAiStateMove, 11, nStandClient, 0, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieEIdle = { kAiStateIdle, 12, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombieEUp2 = { kAiStateMove, 0, -1, 1, entryEZombie, NULL, NULL, &zombieASearch };
|
||||
AISTATE zombieEUp = { kAiStateMove, 9, -1, 180, entryEStand, NULL, NULL, &zombieEUp2 };
|
||||
AISTATE zombie2Idle = { kAiStateIdle, 0, -1, 0, entryAIdle, NULL, myThinkTarget, NULL };
|
||||
AISTATE zombie2Search = { kAiStateSearch, 8, -1, 1800, NULL, NULL, myThinkSearch, &zombie2Idle };
|
||||
AISTATE zombieSIdle = { kAiStateIdle, 10, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombie13AC2C = { kAiStateOther, 11, nStandClient, 0, entryEZombie, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieAIdle = { kAiStateIdle, 0, nullptr, 0, entryAIdle, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombieAChase = { kAiStateChase, 8, nullptr, 0, NULL, aiMoveForward, zombaThinkChase, NULL };
|
||||
AISTATE zombieAPonder = { kAiStateOther, 0, nullptr, 0, NULL, aiMoveTurn, zombaThinkPonder, NULL };
|
||||
AISTATE zombieAGoto = { kAiStateMove, 8, nullptr, 1800, NULL, aiMoveForward, zombaThinkGoto, &zombieAIdle };
|
||||
AISTATE zombieAHack = { kAiStateChase, 6, &AF(HackSeqCallback), 80, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieASearch = { kAiStateSearch, 8, nullptr, 1800, NULL, aiMoveForward, zombaThinkSearch, &zombieAIdle };
|
||||
AISTATE zombieARecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieATeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieARecoil2 = { kAiStateRecoil, 1, nullptr, 360, NULL, NULL, NULL, &zombieAStand };
|
||||
AISTATE zombieAStand = { kAiStateMove, 11, &AF(StandSeqCallback), 0, NULL, NULL, NULL, &zombieAPonder };
|
||||
AISTATE zombieEIdle = { kAiStateIdle, 12, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombieEUp2 = { kAiStateMove, 0, nullptr, 1, entryEZombie, NULL, NULL, &zombieASearch };
|
||||
AISTATE zombieEUp = { kAiStateMove, 9, nullptr, 180, entryEStand, NULL, NULL, &zombieEUp2 };
|
||||
AISTATE zombie2Idle = { kAiStateIdle, 0, nullptr, 0, entryAIdle, NULL, myThinkTarget, NULL };
|
||||
AISTATE zombie2Search = { kAiStateSearch, 8, nullptr, 1800, NULL, NULL, myThinkSearch, &zombie2Idle };
|
||||
AISTATE zombieSIdle = { kAiStateIdle, 10, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombie13AC2C = { kAiStateOther, 11, &AF(StandSeqCallback), 0, entryEZombie, NULL, NULL, &zombieAPonder };
|
||||
|
||||
void HackSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -34,16 +34,16 @@ static void zombfThinkGoto(DBloodActor* actor);
|
|||
static void zombfThinkChase(DBloodActor* actor);
|
||||
|
||||
|
||||
AISTATE zombieFIdle = { kAiStateIdle, 0, -1, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombieFChase = { kAiStateChase, 8, -1, 0, NULL, aiMoveForward, zombfThinkChase, NULL };
|
||||
AISTATE zombieFGoto = { kAiStateMove, 8, -1, 600, NULL, aiMoveForward, zombfThinkGoto, &zombieFIdle };
|
||||
AISTATE zombieFDodge = { kAiStateMove, 8, -1, 0, NULL, aiMoveDodge, zombfThinkChase, &zombieFChase };
|
||||
AISTATE zombieFHack = { kAiStateChase, 6, nZombfHackClient, 120, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFPuke = { kAiStateChase, 9, nZombfPukeClient, 120, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFThrow = { kAiStateChase, 6, nZombfThrowClient, 120, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFSearch = { kAiStateSearch, 8, -1, 1800, NULL, aiMoveForward, zombfThinkSearch, &zombieFIdle };
|
||||
AISTATE zombieFRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFTeslaRecoil = { kAiStateRecoil, 4, -1, 0, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, aiThinkTarget, NULL };
|
||||
AISTATE zombieFChase = { kAiStateChase, 8, nullptr, 0, NULL, aiMoveForward, zombfThinkChase, NULL };
|
||||
AISTATE zombieFGoto = { kAiStateMove, 8, nullptr, 600, NULL, aiMoveForward, zombfThinkGoto, &zombieFIdle };
|
||||
AISTATE zombieFDodge = { kAiStateMove, 8, nullptr, 0, NULL, aiMoveDodge, zombfThinkChase, &zombieFChase };
|
||||
AISTATE zombieFHack = { kAiStateChase, 6, &AF(zombfHackSeqCallback), 120, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFPuke = { kAiStateChase, 9, &AF(PukeSeqCallback), 120, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFThrow = { kAiStateChase, 6, &AF(ThrowSeqCallback), 120, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFSearch = { kAiStateSearch, 8, nullptr, 1800, NULL, aiMoveForward, zombfThinkSearch, &zombieFIdle };
|
||||
AISTATE zombieFRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &zombieFChase };
|
||||
AISTATE zombieFTeslaRecoil = { kAiStateRecoil, 4, nullptr, 0, NULL, NULL, NULL, &zombieFChase };
|
||||
|
||||
void zombfHackSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
|
|
|
@ -230,10 +230,6 @@ DEF_ANIMATOR(SpidBirthSeqCallback)
|
|||
DEF_ANIMATOR(tchernobogFire)
|
||||
DEF_ANIMATOR(tchernobogBurnSeqCallback)
|
||||
DEF_ANIMATOR(tchernobogBurnSeqCallback2)
|
||||
DEF_ANIMATOR(genDudeAttack1)
|
||||
DEF_ANIMATOR(punchCallback)
|
||||
DEF_ANIMATOR(ThrowCallback1)
|
||||
DEF_ANIMATOR(ThrowCallback2)
|
||||
DEF_ANIMATOR(HackSeqCallback)
|
||||
DEF_ANIMATOR(StandSeqCallback)
|
||||
DEF_ANIMATOR(zombfHackSeqCallback)
|
||||
|
@ -244,6 +240,13 @@ DEF_ANIMATOR(PlayerKneelsOver)
|
|||
DEF_ANIMATOR(FireballTrapSeqCallback)
|
||||
DEF_ANIMATOR(MGunFireSeqCallback)
|
||||
DEF_ANIMATOR(MGunOpenSeqCallback)
|
||||
|
||||
// nnext
|
||||
DEF_ANIMATOR(genDudeAttack1)
|
||||
DEF_ANIMATOR(punchCallback)
|
||||
DEF_ANIMATOR(ThrowCallback1)
|
||||
DEF_ANIMATOR(ThrowCallback2)
|
||||
|
||||
// event callbacks
|
||||
DEF_ANIMATOR(fxFlameLick) // 0
|
||||
DEF_ANIMATOR(Remove) // 1
|
||||
|
|
|
@ -293,10 +293,10 @@ void Respawn(DBloodActor* actor) // 9
|
|||
default:
|
||||
actor->clipdist = getDudeInfo(nType + kDudeBase)->fClipdist();
|
||||
if (getSequence(getDudeInfo(nType + kDudeBase)->seqStartID))
|
||||
seqSpawn(getDudeInfo(nType + kDudeBase)->seqStartID, actor, -1);
|
||||
seqSpawn(getDudeInfo(nType + kDudeBase)->seqStartID, actor);
|
||||
break;
|
||||
case kDudeModernCustom:
|
||||
seqSpawn(genDudeSeqStartId(actor), actor, -1);
|
||||
seqSpawn(genDudeSeqStartId(actor), actor);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -309,7 +309,7 @@ void Respawn(DBloodActor* actor) // 9
|
|||
actor->clipdist = getDudeInfo(nType + kDudeBase)->fClipdist();
|
||||
actor->xspr.health = getDudeInfo(nType + kDudeBase)->startHealth << 4;
|
||||
if (getSequence(getDudeInfo(nType + kDudeBase)->seqStartID))
|
||||
seqSpawn(getDudeInfo(nType + kDudeBase)->seqStartID, actor, -1);
|
||||
seqSpawn(getDudeInfo(nType + kDudeBase)->seqStartID, actor);
|
||||
#endif
|
||||
aiInitSprite(actor);
|
||||
actor->xspr.key = 0;
|
||||
|
|
|
@ -184,7 +184,7 @@ DBloodActor* CFX::fxSpawnActor(FX_ID nFx, sectortype* pSector, const DVector3& p
|
|||
if (pFX->seq)
|
||||
{
|
||||
actor->addX();
|
||||
seqSpawn(pFX->seq, actor, -1);
|
||||
seqSpawn(pFX->seq, actor);
|
||||
}
|
||||
if (angle == nullAngle)
|
||||
angle = mapangle(pFX->defangle);
|
||||
|
|
|
@ -172,60 +172,60 @@ AISTATE genPatrolStates[] = {
|
|||
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
{ kAiStatePatrolWaitL, 0, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitL, 7, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitL, 0, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitL, 7, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
|
||||
{ kAiStatePatrolMoveL, 9, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 8, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 0, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 6, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 7, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 9, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 8, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 0, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 6, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveL, 7, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
|
||||
{ kAiStatePatrolTurnL, 9, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 8, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 0, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 6, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 7, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 9, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 8, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 0, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 6, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnL, 7, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
{ kAiStatePatrolWaitW, 0, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 10, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 13, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 17, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 8, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 9, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 0, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 10, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 13, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 17, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 8, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitW, 9, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
|
||||
{ kAiStatePatrolMoveW, 0, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 10, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 13, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 8, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 9, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 7, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 6, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 0, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 10, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 13, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 8, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 9, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 7, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveW, 6, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
|
||||
{ kAiStatePatrolTurnW, 0, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 10, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 13, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 8, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 9, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 7, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 6, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 0, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 10, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 13, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 8, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 9, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 7, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnW, 6, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
{ kAiStatePatrolWaitC, 17, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 11, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 10, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 14, -1, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 17, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 11, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 10, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolWaitC, 14, nullptr, 0, NULL, NULL, aiPatrolThink, NULL },
|
||||
|
||||
{ kAiStatePatrolMoveC, 14, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveC, 10, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveC, 9, -1, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveC, 14, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveC, 10, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolMoveC, 9, nullptr, 0, NULL, aiPatrolMove, aiPatrolThink, NULL },
|
||||
|
||||
{ kAiStatePatrolTurnC, 14, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnC, 10, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnC, 9, -1, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnC, 14, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnC, 10, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
{ kAiStatePatrolTurnC, 9, nullptr, 0, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, NULL },
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
|
@ -283,7 +283,7 @@ static DBloodActor* nnExtSpawnDude(DBloodActor* sourceactor, DBloodActor* origin
|
|||
pDudeActor->xspr.health = getDudeInfo(nType)->startHealth << 4;
|
||||
|
||||
if (fileSystem.FindResource(getDudeInfo(nType)->seqStartID, "SEQ"))
|
||||
seqSpawn(getDudeInfo(nType)->seqStartID, pDudeActor, -1);
|
||||
seqSpawn(getDudeInfo(nType)->seqStartID, pDudeActor);
|
||||
|
||||
// add a way to inherit some values of spawner by dude.
|
||||
if (sourceactor->spr.flags & kModernTypeFlag1) {
|
||||
|
@ -3686,9 +3686,9 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, sectortype* pSector
|
|||
else
|
||||
{
|
||||
if (sourceactor->xspr.data3 == 3 || sourceactor->xspr.data3 == 1)
|
||||
seqSpawn(sourceactor->xspr.data2, SS_FLOOR, pSector, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, SS_FLOOR, pSector);
|
||||
if (sourceactor->xspr.data3 == 3 || sourceactor->xspr.data3 == 2)
|
||||
seqSpawn(sourceactor->xspr.data2, SS_CEILING, pSector, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, SS_CEILING, pSector);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -3704,20 +3704,20 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, sectortype* pSector
|
|||
else
|
||||
{
|
||||
if (sourceactor->xspr.data3 == 3 || sourceactor->xspr.data3 == 1)
|
||||
seqSpawn(sourceactor->xspr.data2, SS_WALL, pWall, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, SS_WALL, pWall);
|
||||
|
||||
if (sourceactor->xspr.data3 == 3 || sourceactor->xspr.data3 == 2) {
|
||||
|
||||
if (!pWall->twoSided()) {
|
||||
if (sourceactor->xspr.data3 == 3)
|
||||
seqSpawn(sourceactor->xspr.data2, SS_WALL, pWall, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, SS_WALL, pWall);
|
||||
|
||||
}
|
||||
else {
|
||||
if (!(pWall->cstat & CSTAT_WALL_MASKED))
|
||||
pWall->cstat |= CSTAT_WALL_MASKED;
|
||||
|
||||
seqSpawn(sourceactor->xspr.data2, SS_MASKED, pWall, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, SS_MASKED, pWall);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3783,7 +3783,7 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, sectortype* pSector
|
|||
spawned->spr.pos = pos;
|
||||
|
||||
spawned->addX();
|
||||
seqSpawn(sourceactor->xspr.data2, spawned, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, spawned);
|
||||
if (sourceactor->spr.flags & kModernTypeFlag1)
|
||||
{
|
||||
spawned->spr.pal = sourceactor->spr.pal;
|
||||
|
@ -3809,7 +3809,7 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, sectortype* pSector
|
|||
}
|
||||
else
|
||||
{
|
||||
seqSpawn(sourceactor->xspr.data2, iactor, -1);
|
||||
seqSpawn(sourceactor->xspr.data2, iactor);
|
||||
}
|
||||
|
||||
if (sourceactor->xspr.data4 > 0)
|
||||
|
|
|
@ -806,7 +806,7 @@ void playerStart(int nPlayer, int bNewLevel)
|
|||
pPlayer->pDudeInfo = pDudeInfo;
|
||||
playerSetRace(pPlayer, kModeHuman);
|
||||
playerResetPosture(pPlayer);
|
||||
seqSpawn(pDudeInfo->seqStartID, actor, -1);
|
||||
seqSpawn(pDudeInfo->seqStartID, actor);
|
||||
if (nPlayer == myconnectindex)
|
||||
actor->spr.cstat2 |= CSTAT2_SPRITE_MAPPED;
|
||||
double top, bottom;
|
||||
|
@ -1541,14 +1541,14 @@ void ProcessInput(DBloodPlayer* pPlayer)
|
|||
if (bSeqStat)
|
||||
{
|
||||
if (pPlayer->deathTime > 360)
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 14, pPlayer->GetActor(), nPlayerSurviveClient);
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 14, pPlayer->GetActor(), AF(PlayerSurvive));
|
||||
}
|
||||
else if (seqGetStatus(pPlayer->GetActor()) < 0)
|
||||
{
|
||||
if (pPlayer->GetActor())
|
||||
pPlayer->GetActor()->ChangeType(kThingBloodChunks);
|
||||
actPostSprite(pPlayer->GetActor(), kStatThing);
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 15, pPlayer->GetActor(), -1);
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 15, pPlayer->GetActor());
|
||||
playerReset(pPlayer);
|
||||
if (gGameOptions.nGameType == 0 && numplayers == 1)
|
||||
{
|
||||
|
@ -1860,16 +1860,16 @@ void playerProcess(DBloodPlayer* pPlayer)
|
|||
switch (pPlayer->posture)
|
||||
{
|
||||
case 1:
|
||||
seqSpawn(dudeInfo[nType].seqStartID + 9, actor, -1);
|
||||
seqSpawn(dudeInfo[nType].seqStartID + 9, actor);
|
||||
break;
|
||||
case 2:
|
||||
seqSpawn(dudeInfo[nType].seqStartID + 10, actor, -1);
|
||||
seqSpawn(dudeInfo[nType].seqStartID + 10, actor);
|
||||
break;
|
||||
default:
|
||||
if (!nSpeed)
|
||||
seqSpawn(dudeInfo[nType].seqStartID, actor, -1);
|
||||
seqSpawn(dudeInfo[nType].seqStartID, actor);
|
||||
else
|
||||
seqSpawn(dudeInfo[nType].seqStartID + 8, actor, -1);
|
||||
seqSpawn(dudeInfo[nType].seqStartID + 8, actor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2065,7 +2065,7 @@ int playerDamageSprite(DBloodActor* source, DBloodPlayer* pPlayer, DAMAGE_TYPE n
|
|||
DBloodActor* pActor = pPlayer->GetActor();
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(pActor->GetType());
|
||||
int nDeathSeqID = -1;
|
||||
int nKneelingPlayer = -1;
|
||||
VMFunction* nKneelingPlayer = nullptr;
|
||||
bool va = playerSeqPlaying(pPlayer, 16);
|
||||
if (!pActor->xspr.health)
|
||||
{
|
||||
|
@ -2156,7 +2156,7 @@ int playerDamageSprite(DBloodActor* source, DBloodPlayer* pPlayer, DAMAGE_TYPE n
|
|||
DAMAGEINFO* pDamageInfo = &damageInfo[nDamageType];
|
||||
sfxPlay3DSound(pPlayer->GetActor(), pDamageInfo->at10[0], 0, 2);
|
||||
nDeathSeqID = 16;
|
||||
nKneelingPlayer = nPlayerKneelClient;
|
||||
nKneelingPlayer = AF(PlayerKneelsOver);
|
||||
powerupActivate(pPlayer, kPwUpDeliriumShroom);
|
||||
pActor->SetTarget(source);
|
||||
evPostActor(pPlayer->GetActor(), 15, AF(FinishHim));
|
||||
|
|
|
@ -36,68 +36,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
|
||||
BEGIN_BLD_NS
|
||||
|
||||
static void (*seqClientCallback[])(DBloodActor*) = {
|
||||
FireballSeqCallback,
|
||||
Fx33Callback,
|
||||
NapalmSeqCallback,
|
||||
Fx32Callback,
|
||||
TreeToGibCallback,
|
||||
DudeToGibCallback1,
|
||||
DudeToGibCallback2,
|
||||
batBiteSeqCallback,
|
||||
SlashSeqCallback,
|
||||
StompSeqCallback,
|
||||
eelBiteSeqCallback,
|
||||
BurnSeqCallback,
|
||||
SeqAttackCallback,
|
||||
cerberusBiteSeqCallback,
|
||||
cerberusBurnSeqCallback,
|
||||
cerberusBurnSeqCallback2,
|
||||
TommySeqCallback,
|
||||
TeslaSeqCallback,
|
||||
ShotSeqCallback,
|
||||
cultThrowSeqCallback,
|
||||
cultThrowSeqCallback2,
|
||||
cultThrowSeqCallback3,
|
||||
SlashFSeqCallback,
|
||||
ThrowFSeqCallback,
|
||||
ThrowSSeqCallback,
|
||||
BlastSSeqCallback,
|
||||
ghostSlashSeqCallback,
|
||||
ghostThrowSeqCallback,
|
||||
ghostBlastSeqCallback,
|
||||
GillBiteSeqCallback,
|
||||
HandJumpSeqCallback,
|
||||
houndBiteSeqCallback,
|
||||
houndBurnSeqCallback,
|
||||
podAttack,
|
||||
podExplode,
|
||||
podPlaySound1,
|
||||
podPlaySound2,
|
||||
ratBiteSeqCallback,
|
||||
SpidBiteSeqCallback,
|
||||
SpidJumpSeqCallback,
|
||||
SpidBirthSeqCallback,
|
||||
tchernobogBurnSeqCallback,
|
||||
tchernobogBurnSeqCallback2,
|
||||
tchernobogFire,
|
||||
genDudeAttack1,
|
||||
punchCallback,
|
||||
ThrowCallback1,
|
||||
ThrowCallback2,
|
||||
HackSeqCallback,
|
||||
StandSeqCallback,
|
||||
zombfHackSeqCallback,
|
||||
PukeSeqCallback,
|
||||
ThrowSeqCallback,
|
||||
PlayerSurvive,
|
||||
PlayerKneelsOver,
|
||||
FireballTrapSeqCallback,
|
||||
MGunFireSeqCallback,
|
||||
MGunOpenSeqCallback,
|
||||
};
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
@ -399,10 +337,10 @@ void SEQINST::Update()
|
|||
}
|
||||
|
||||
// all seq callbacks are for sprites, but there's no sanity checks here that what gets passed is meant to be for a sprite...
|
||||
if (pSequence->frames[frameIndex].trigger && callback != -1)
|
||||
if (pSequence->frames[frameIndex].trigger && callback != nullptr)
|
||||
{
|
||||
assert(type == SS_SPRITE);
|
||||
if (target.isActor()) seqClientCallback[callback](target.actor());
|
||||
if (target.isActor()) callActorFunction(callback, target.actor());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -593,7 +531,7 @@ Seq* getSequence(int res_id)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void seqSpawn_(int nSeqID, int type, const EventObject& eob, int callback)
|
||||
void seqSpawn_(int nSeqID, int type, const EventObject& eob, VMFunction* callback)
|
||||
{
|
||||
Seq* pSequence = getSequence(nSeqID);
|
||||
|
||||
|
@ -621,18 +559,18 @@ void seqSpawn_(int nSeqID, int type, const EventObject& eob, int callback)
|
|||
pInst->Update();
|
||||
}
|
||||
|
||||
void seqSpawn(int nSeqID, DBloodActor* actor, int callback)
|
||||
void seqSpawn(int nSeqID, DBloodActor* actor, VMFunction* callback)
|
||||
{
|
||||
seqSpawn_(nSeqID, SS_SPRITE, EventObject(actor), callback);
|
||||
}
|
||||
|
||||
void seqSpawn(int nSeqID, int type, sectortype* sect, int callback)
|
||||
void seqSpawn(int nSeqID, int type, sectortype* sect, VMFunction* callback)
|
||||
{
|
||||
assert(type == SS_FLOOR || type == SS_CEILING);
|
||||
seqSpawn_(nSeqID, type, EventObject(sect), callback);
|
||||
}
|
||||
|
||||
void seqSpawn(int nSeqID, int type, walltype* wal, int callback)
|
||||
void seqSpawn(int nSeqID, int type, walltype* wal, VMFunction* callback)
|
||||
{
|
||||
assert(type == SS_WALL || type == SS_MASKED);
|
||||
seqSpawn_(nSeqID, type, EventObject(wal), callback);
|
||||
|
|
|
@ -80,7 +80,7 @@ struct SEQINST
|
|||
int type;
|
||||
|
||||
int nSeqID;
|
||||
int callback;
|
||||
VMFunction* callback;
|
||||
int16_t timeCounter;
|
||||
uint8_t frameIndex;
|
||||
void Update();
|
||||
|
@ -101,9 +101,9 @@ void seqPrecacheId(int id, int palette);
|
|||
SEQINST* GetInstance(int a1, EventObject& a2);
|
||||
SEQINST* GetInstance(DBloodActor* actor);
|
||||
void UnlockInstance(SEQINST* pInst);
|
||||
void seqSpawn(int a1, int ty, walltype* a2, int a4 = -1);
|
||||
void seqSpawn(int a1, int ty, sectortype* a2, int a4 = -1);
|
||||
void seqSpawn(int a1, DBloodActor* actor, int a4 = -1);
|
||||
void seqSpawn(int a1, int ty, walltype* a2, VMFunction* a4 = nullptr);
|
||||
void seqSpawn(int a1, int ty, sectortype* a2, VMFunction* a4 = nullptr);
|
||||
void seqSpawn(int a1, DBloodActor* actor, VMFunction* a4 = nullptr);
|
||||
|
||||
void seqKill(int a1, walltype* a2);
|
||||
void seqKill(int a1, sectortype* a2);
|
||||
|
|
|
@ -2,127 +2,5 @@
|
|||
|
||||
BEGIN_BLD_NS
|
||||
|
||||
class DBloodActor;
|
||||
void FireballSeqCallback(DBloodActor*);
|
||||
void Fx33Callback(DBloodActor*);
|
||||
void NapalmSeqCallback(DBloodActor*);
|
||||
void Fx32Callback(DBloodActor*);
|
||||
void TreeToGibCallback(DBloodActor*);
|
||||
void DudeToGibCallback1(DBloodActor*);
|
||||
void DudeToGibCallback2(DBloodActor*);
|
||||
void batBiteSeqCallback(DBloodActor*);
|
||||
void SlashSeqCallback(DBloodActor*);
|
||||
void StompSeqCallback(DBloodActor*);
|
||||
void eelBiteSeqCallback(DBloodActor*);
|
||||
void BurnSeqCallback(DBloodActor*);
|
||||
void SeqAttackCallback(DBloodActor*);
|
||||
void cerberusBiteSeqCallback(DBloodActor*);
|
||||
void cerberusBurnSeqCallback(DBloodActor*);
|
||||
void cerberusBurnSeqCallback2(DBloodActor*);
|
||||
void TommySeqCallback(DBloodActor*);
|
||||
void TeslaSeqCallback(DBloodActor*);
|
||||
void ShotSeqCallback(DBloodActor*);
|
||||
void cultThrowSeqCallback(DBloodActor*);
|
||||
void cultThrowSeqCallback2(DBloodActor*);
|
||||
void cultThrowSeqCallback3(DBloodActor*);
|
||||
void SlashFSeqCallback(DBloodActor*);
|
||||
void ThrowFSeqCallback(DBloodActor*);
|
||||
void BlastSSeqCallback(DBloodActor*);
|
||||
void ThrowSSeqCallback(DBloodActor*);
|
||||
void ghostSlashSeqCallback(DBloodActor*);
|
||||
void ghostThrowSeqCallback(DBloodActor*);
|
||||
void ghostBlastSeqCallback(DBloodActor*);
|
||||
void GillBiteSeqCallback(DBloodActor*);
|
||||
void HandJumpSeqCallback(DBloodActor*);
|
||||
void houndBiteSeqCallback(DBloodActor*);
|
||||
void houndBurnSeqCallback(DBloodActor*);
|
||||
void podPlaySound1(DBloodActor*);
|
||||
void podPlaySound2(DBloodActor*);
|
||||
void podAttack(DBloodActor*);
|
||||
void podExplode(DBloodActor*);
|
||||
void ratBiteSeqCallback(DBloodActor*);
|
||||
void SpidBiteSeqCallback(DBloodActor*);
|
||||
void SpidJumpSeqCallback(DBloodActor*);
|
||||
void SpidBirthSeqCallback(DBloodActor*);
|
||||
void tchernobogFire(DBloodActor*);
|
||||
void tchernobogBurnSeqCallback(DBloodActor*);
|
||||
void tchernobogBurnSeqCallback2(DBloodActor*);
|
||||
void genDudeAttack1(DBloodActor*);
|
||||
void punchCallback(DBloodActor*);
|
||||
void ThrowCallback1(DBloodActor*);
|
||||
void ThrowCallback2(DBloodActor*);
|
||||
void HackSeqCallback(DBloodActor*);
|
||||
void StandSeqCallback(DBloodActor*);
|
||||
void zombfHackSeqCallback(DBloodActor*);
|
||||
void PukeSeqCallback(DBloodActor*);
|
||||
void ThrowSeqCallback(DBloodActor*);
|
||||
void PlayerSurvive(DBloodActor*);
|
||||
void PlayerKneelsOver(DBloodActor*);
|
||||
void FireballTrapSeqCallback(DBloodActor*);
|
||||
void MGunFireSeqCallback(DBloodActor*);
|
||||
void MGunOpenSeqCallback(DBloodActor*);
|
||||
|
||||
enum
|
||||
{
|
||||
nFireballClient,
|
||||
dword_2192D8,
|
||||
nNapalmClient,
|
||||
dword_2192E0,
|
||||
nTreeToGibClient,
|
||||
nDudeToGibClient1,
|
||||
nDudeToGibClient2,
|
||||
nBatBiteClient,
|
||||
nSlashClient,
|
||||
nStompClient,
|
||||
nEelBiteClient,
|
||||
nBurnClient,
|
||||
nAttackClient,
|
||||
nCerberusBiteClient,
|
||||
nCerberusBurnClient,
|
||||
nCerberusBurnClient2,
|
||||
nTommyClient,
|
||||
nTeslaClient,
|
||||
nShotClient,
|
||||
nThrowClient,
|
||||
n68170Client,
|
||||
n68230Client,
|
||||
nSlashFClient,
|
||||
nThrowFClient,
|
||||
nThrowSClient,
|
||||
nBlastSClient,
|
||||
nGhostSlashClient,
|
||||
nGhostThrowClient,
|
||||
nGhostBlastClient,
|
||||
nGillBiteClient,
|
||||
nJumpClient,
|
||||
nHoundBiteClient,
|
||||
nHoundBurnClient,
|
||||
nPodStartChaseClient,
|
||||
nTentacleStartSearchClient,
|
||||
dword_279B3C,
|
||||
dword_279B40,
|
||||
nRatBiteClient,
|
||||
nSpidBiteClient,
|
||||
nSpidJumpClient,
|
||||
nSpidBirthClient,
|
||||
dword_279B54,
|
||||
dword_279B58,
|
||||
dword_279B5C,
|
||||
nGenDudeAttack1,
|
||||
nGenDudePunch,
|
||||
nGenDudeThrow1,
|
||||
nGenDudeThrow2,
|
||||
nHackClient,
|
||||
nStandClient,
|
||||
nZombfHackClient,
|
||||
nZombfPukeClient,
|
||||
nZombfThrowClient,
|
||||
nPlayerSurviveClient,
|
||||
nPlayerKneelClient,
|
||||
nFireballTrapClient,
|
||||
nMGunFireClient,
|
||||
nMGunOpenClient,
|
||||
};
|
||||
|
||||
|
||||
END_BLD_NS
|
||||
|
|
|
@ -351,11 +351,11 @@ void OperateSprite(DBloodActor* actor, EVENT event)
|
|||
switch (event.cmd) {
|
||||
case kCmdOff:
|
||||
if (!SetSpriteState(actor, 0, initiator)) break;
|
||||
seqSpawn(40, actor, -1);
|
||||
seqSpawn(40, actor);
|
||||
break;
|
||||
case kCmdOn:
|
||||
if (!SetSpriteState(actor, 1, initiator)) break;
|
||||
seqSpawn(38, actor, nMGunOpenClient);
|
||||
seqSpawn(38, actor, AF(MGunOpenSeqCallback));
|
||||
if (actor->xspr.data1 > 0)
|
||||
actor->xspr.data2 = actor->xspr.data1;
|
||||
break;
|
||||
|
@ -396,12 +396,12 @@ void OperateSprite(DBloodActor* actor, EVENT event)
|
|||
switch (event.cmd) {
|
||||
case kCmdOff:
|
||||
if (!SetSpriteState(actor, 0, initiator)) break;
|
||||
seqSpawn(40, actor, -1);
|
||||
seqSpawn(40, actor);
|
||||
sfxKill3DSound(actor, 0, -1);
|
||||
break;
|
||||
case kCmdOn:
|
||||
if (!SetSpriteState(actor, 1, initiator)) break;
|
||||
seqSpawn(38, actor, -1);
|
||||
seqSpawn(38, actor);
|
||||
sfxPlay3DSound(actor, 441, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
@ -413,11 +413,11 @@ void OperateSprite(DBloodActor* actor, EVENT event)
|
|||
break;
|
||||
case kCmdOn:
|
||||
if (!SetSpriteState(actor, 1, initiator)) break;
|
||||
seqSpawn(37, actor, -1);
|
||||
seqSpawn(37, actor);
|
||||
break;
|
||||
default:
|
||||
SetSpriteState(actor, actor->xspr.state ^ 1, initiator);
|
||||
if (actor->xspr.state) seqSpawn(37, actor, -1);
|
||||
if (actor->xspr.state) seqSpawn(37, actor);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -2485,10 +2485,10 @@ void ActivateGenerator(DBloodActor* actor)
|
|||
FireballTrapSeqCallback(actor);
|
||||
break;
|
||||
case 1:
|
||||
seqSpawn(35, actor, nFireballTrapClient);
|
||||
seqSpawn(35, actor, AF(FireballTrapSeqCallback));
|
||||
break;
|
||||
case 2:
|
||||
seqSpawn(36, actor, nFireballTrapClient);
|
||||
seqSpawn(36, actor, AF(FireballTrapSeqCallback));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -2547,7 +2547,7 @@ void MGunFireSeqCallback(DBloodActor* actor)
|
|||
|
||||
void MGunOpenSeqCallback(DBloodActor* actor)
|
||||
{
|
||||
seqSpawn(39, actor, nMGunFireClient);
|
||||
seqSpawn(39, actor, AF(MGunFireSeqCallback));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -341,7 +341,7 @@ DEFINE_ACTION_FUNCTION(DBloodActor, seqSpawnID) // will be changed later.
|
|||
{
|
||||
PARAM_SELF_PROLOGUE(DBloodActor);
|
||||
PARAM_INT(seqid);
|
||||
PARAM_INT(cbid);
|
||||
PARAM_POINTER(cbid, VMFunction);
|
||||
seqSpawn(seqid, self, cbid);
|
||||
return 0;
|
||||
}
|
||||
|
@ -414,6 +414,11 @@ DBloodActor* actFireMissile(DBloodActor* actor, double xyoff, double zoff, DVect
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
void callActorFunction(VMFunction* funcID, DBloodActor* actor)
|
||||
{
|
||||
if (funcID)
|
||||
|
|
|
@ -1949,7 +1949,7 @@ void AltFireNapalm(int, DBloodPlayer* pPlayer)
|
|||
{
|
||||
missile->xspr.data4 = ClipHigh(pPlayer->ammoCount[4], 12);
|
||||
UseAmmo(pPlayer, 4, missile->xspr.data4);
|
||||
seqSpawn(22, missile, -1);
|
||||
seqSpawn(22, missile);
|
||||
actBurnSprite(pPlayer->GetActor(), missile, 600);
|
||||
evPostActor(missile, 0, AF(fxFlameLick));
|
||||
sfxPlay3DSound(missile, 480, 2, 0);
|
||||
|
|
|
@ -10,7 +10,7 @@ class BloodMissileBase : BloodActor
|
|||
meta double randomVel;
|
||||
meta int seqID;
|
||||
meta name seqName;
|
||||
meta int seqCallbackID; // make this a function name later
|
||||
meta VMFunction seqCallbackID;
|
||||
|
||||
property prefix: none;
|
||||
property speed: speed;
|
||||
|
@ -29,7 +29,6 @@ class BloodMissileBase : BloodActor
|
|||
{
|
||||
seqID -1;
|
||||
spawnsoundID -1;
|
||||
seqCallbackID -1;
|
||||
}
|
||||
|
||||
virtual void initMissile(BloodActor spawner)
|
||||
|
@ -143,7 +142,7 @@ class BloodMissileFlameSpray : BloodMissileBase
|
|||
{
|
||||
super.InitMissile(spawner);
|
||||
int index = Blood.Chance(0x8000)? 1 : 0;
|
||||
self.seqSpawnID(index, -1);
|
||||
self.seqSpawnID(index, nullptr);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -157,7 +156,7 @@ class BloodMissileFireball : BloodMissileBase
|
|||
clipdist 8.000000;
|
||||
spawnsoundID 441;
|
||||
seqID 22;
|
||||
seqCallbackID nFireballClient;
|
||||
seqCallbackID "BloodActor.FireballSeqCallback";
|
||||
}
|
||||
}
|
||||
class BloodMissileTeslaRegular : BloodMissileBase
|
||||
|
@ -239,7 +238,7 @@ class BloodMissileFireballNapalm : BloodMissileBase
|
|||
clipdist 6.000000;
|
||||
spawnsoundID 441;
|
||||
seqID 61;
|
||||
seqCallbackID nNapalmClient;
|
||||
seqCallbackID "BloodActor.NapalmSeqCallback";
|
||||
}
|
||||
}
|
||||
class BloodMissileFireballCerberus : BloodMissileBase
|
||||
|
@ -251,7 +250,7 @@ class BloodMissileFireballCerberus : BloodMissileBase
|
|||
shade -128;
|
||||
clipdist 6.000000;
|
||||
seqID 61;
|
||||
seqCallbackID dword_2192E0;
|
||||
seqCallbackID "BloodActor.Fx32Callback";
|
||||
}
|
||||
}
|
||||
class BloodMissileFireballTchernobog : BloodMissileBase
|
||||
|
@ -263,7 +262,7 @@ class BloodMissileFireballTchernobog : BloodMissileBase
|
|||
shade -128;
|
||||
clipdist 4.000000;
|
||||
seqID 23;
|
||||
seqCallbackID dword_2192D8;
|
||||
seqCallbackID "BloodActor.Fx33Callback";
|
||||
movementAdd 0.5;
|
||||
RandomVel 0x11111;
|
||||
}
|
||||
|
|
|
@ -118,69 +118,6 @@ class BloodActor : CoreActor native
|
|||
};
|
||||
|
||||
|
||||
enum SEQ_CALLBACK_ID
|
||||
{
|
||||
nFireballClient,
|
||||
dword_2192D8,
|
||||
nNapalmClient,
|
||||
dword_2192E0,
|
||||
nTreeToGibClient,
|
||||
nDudeToGibClient1,
|
||||
nDudeToGibClient2,
|
||||
nBatBiteClient,
|
||||
nSlashClient,
|
||||
nStompClient,
|
||||
nEelBiteClient,
|
||||
nBurnClient,
|
||||
nAttackClient,
|
||||
nCerberusBiteClient,
|
||||
nCerberusBurnClient,
|
||||
nCerberusBurnClient2,
|
||||
nTommyClient,
|
||||
nTeslaClient,
|
||||
nShotClient,
|
||||
nThrowClient,
|
||||
n68170Client,
|
||||
n68230Client,
|
||||
nSlashFClient,
|
||||
nThrowFClient,
|
||||
nThrowSClient,
|
||||
nBlastSClient,
|
||||
nGhostSlashClient,
|
||||
nGhostThrowClient,
|
||||
nGhostBlastClient,
|
||||
nGillBiteClient,
|
||||
nJumpClient,
|
||||
nHoundBiteClient,
|
||||
nHoundBurnClient,
|
||||
nPodStartChaseClient,
|
||||
nTentacleStartSearchClient,
|
||||
dword_279B3C,
|
||||
dword_279B40,
|
||||
nRatBiteClient,
|
||||
nSpidBiteClient,
|
||||
nSpidJumpClient,
|
||||
nSpidBirthClient,
|
||||
dword_279B54,
|
||||
dword_279B58,
|
||||
dword_279B5C,
|
||||
nGenDudeAttack1,
|
||||
nGenDudePunch,
|
||||
nGenDudeThrow1,
|
||||
nGenDudeThrow2,
|
||||
nHackClient,
|
||||
nStandClient,
|
||||
nZombfHackClient,
|
||||
nZombfPukeClient,
|
||||
nZombfThrowClient,
|
||||
nPlayerSurviveClient,
|
||||
nPlayerKneelClient,
|
||||
nFireballTrapClient,
|
||||
nMGunFireClient,
|
||||
nMGunOpenClient,
|
||||
};
|
||||
|
||||
|
||||
// all callbacks, this is to allow using VM functions for all of them
|
||||
native void aiGenDudeMoveForward();
|
||||
native void aiMoveDodge();
|
||||
|
@ -415,7 +352,7 @@ native void DropVoodooCb(); // unused
|
|||
native void impactMissile(int hitcode);
|
||||
|
||||
native void play3DSoundID(int soundId, int a3 = -1, int a4 = 0);
|
||||
native void seqSpawnID(int seqID, int seqCallbackID); // temporary. Callback will be turned into a function
|
||||
native void seqSpawnID(int seqID, VMFunction seqCallbackID);
|
||||
|
||||
|
||||
virtual int getRespawnTime()
|
||||
|
|
Loading…
Reference in a new issue