diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index b19289121..859605de5 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -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; } diff --git a/source/games/blood/src/actor.h b/source/games/blood/src/actor.h index 46d29d41d..b57e6d7c4 100644 --- a/source/games/blood/src/actor.h +++ b/source/games/blood/src/actor.h @@ -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" diff --git a/source/games/blood/src/ai.cpp b/source/games/blood/src/ai.cpp index bae4aaf01..e2d7466f3 100644 --- a/source/games/blood/src/ai.cpp +++ b/source/games/blood/src/ai.cpp @@ -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) diff --git a/source/games/blood/src/ai.h b/source/games/blood/src/ai.h index fb5988acb..2f56869fe 100644 --- a/source/games/blood/src/ai.h +++ b/source/games/blood/src/ai.h @@ -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 *); diff --git a/source/games/blood/src/aibat.cpp b/source/games/blood/src/aibat.cpp index df3a0fd7f..99edba3ac 100644 --- a/source/games/blood/src/aibat.cpp +++ b/source/games/blood/src/aibat.cpp @@ -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) { diff --git a/source/games/blood/src/aibeast.cpp b/source/games/blood/src/aibeast.cpp index 3f4e70ec0..96c0ebde0 100644 --- a/source/games/blood/src/aibeast.cpp +++ b/source/games/blood/src/aibeast.cpp @@ -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) { diff --git a/source/games/blood/src/aiboneel.cpp b/source/games/blood/src/aiboneel.cpp index 941bbb8f4..18dfd613a 100644 --- a/source/games/blood/src/aiboneel.cpp +++ b/source/games/blood/src/aiboneel.cpp @@ -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) { diff --git a/source/games/blood/src/aiburn.cpp b/source/games/blood/src/aiburn.cpp index 69e257592..cdef9dfd5 100644 --- a/source/games/blood/src/aiburn.cpp +++ b/source/games/blood/src/aiburn.cpp @@ -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*) { diff --git a/source/games/blood/src/aicaleb.cpp b/source/games/blood/src/aicaleb.cpp index 87c5740f3..b74a612a5 100644 --- a/source/games/blood/src/aicaleb.cpp +++ b/source/games/blood/src/aicaleb.cpp @@ -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) { diff --git a/source/games/blood/src/aicerber.cpp b/source/games/blood/src/aicerber.cpp index 6c178be61..25ebe9bc1 100644 --- a/source/games/blood/src/aicerber.cpp +++ b/source/games/blood/src/aicerber.cpp @@ -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; diff --git a/source/games/blood/src/aicult.cpp b/source/games/blood/src/aicult.cpp index 37239389b..4455c6677 100644 --- a/source/games/blood/src/aicult.cpp +++ b/source/games/blood/src/aicult.cpp @@ -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) { diff --git a/source/games/blood/src/aigarg.cpp b/source/games/blood/src/aigarg.cpp index 817383851..290382d69 100644 --- a/source/games/blood/src/aigarg.cpp +++ b/source/games/blood/src/aigarg.cpp @@ -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) { diff --git a/source/games/blood/src/aighost.cpp b/source/games/blood/src/aighost.cpp index 122b5aa6a..4b5b5bf53 100644 --- a/source/games/blood/src/aighost.cpp +++ b/source/games/blood/src/aighost.cpp @@ -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) { diff --git a/source/games/blood/src/aigilbst.cpp b/source/games/blood/src/aigilbst.cpp index 9ae280dcb..5a42d8a4a 100644 --- a/source/games/blood/src/aigilbst.cpp +++ b/source/games/blood/src/aigilbst.cpp @@ -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) { diff --git a/source/games/blood/src/aihand.cpp b/source/games/blood/src/aihand.cpp index 3e630364c..acc8f1e3e 100644 --- a/source/games/blood/src/aihand.cpp +++ b/source/games/blood/src/aihand.cpp @@ -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) { diff --git a/source/games/blood/src/aihound.cpp b/source/games/blood/src/aihound.cpp index cdd8d6523..db6d984e3 100644 --- a/source/games/blood/src/aihound.cpp +++ b/source/games/blood/src/aihound.cpp @@ -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) { diff --git a/source/games/blood/src/aiinnoc.cpp b/source/games/blood/src/aiinnoc.cpp index 133d73a14..d673f3b81 100644 --- a/source/games/blood/src/aiinnoc.cpp +++ b/source/games/blood/src/aiinnoc.cpp @@ -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) { diff --git a/source/games/blood/src/aipod.cpp b/source/games/blood/src/aipod.cpp index fc00d89b6..c12599042 100644 --- a/source/games/blood/src/aipod.cpp +++ b/source/games/blood/src/aipod.cpp @@ -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++) diff --git a/source/games/blood/src/airat.cpp b/source/games/blood/src/airat.cpp index 81362988e..9a0f44282 100644 --- a/source/games/blood/src/airat.cpp +++ b/source/games/blood/src/airat.cpp @@ -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) { diff --git a/source/games/blood/src/aispid.cpp b/source/games/blood/src/aispid.cpp index 2279c183c..10556271d 100644 --- a/source/games/blood/src/aispid.cpp +++ b/source/games/blood/src/aispid.cpp @@ -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) { diff --git a/source/games/blood/src/aitchern.cpp b/source/games/blood/src/aitchern.cpp index 3cf759bee..3ab935fe9 100644 --- a/source/games/blood/src/aitchern.cpp +++ b/source/games/blood/src/aitchern.cpp @@ -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; diff --git a/source/games/blood/src/aiunicult.cpp b/source/games/blood/src/aiunicult.cpp index 56e802ad3..dcea5e0be 100644 --- a/source/games/blood/src/aiunicult.cpp +++ b/source/games/blood/src/aiunicult.cpp @@ -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); diff --git a/source/games/blood/src/aizomba.cpp b/source/games/blood/src/aizomba.cpp index 6dad4381e..03833a19a 100644 --- a/source/games/blood/src/aizomba.cpp +++ b/source/games/blood/src/aizomba.cpp @@ -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) { diff --git a/source/games/blood/src/aizombf.cpp b/source/games/blood/src/aizombf.cpp index fd4bf2a02..fc1418e80 100644 --- a/source/games/blood/src/aizombf.cpp +++ b/source/games/blood/src/aizombf.cpp @@ -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) { diff --git a/source/games/blood/src/blood.h b/source/games/blood/src/blood.h index 3f391e4b1..ee552ab02 100644 --- a/source/games/blood/src/blood.h +++ b/source/games/blood/src/blood.h @@ -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 diff --git a/source/games/blood/src/callback.cpp b/source/games/blood/src/callback.cpp index 456970f31..8726657ad 100644 --- a/source/games/blood/src/callback.cpp +++ b/source/games/blood/src/callback.cpp @@ -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; diff --git a/source/games/blood/src/fx.cpp b/source/games/blood/src/fx.cpp index e4712f33c..0233f019f 100644 --- a/source/games/blood/src/fx.cpp +++ b/source/games/blood/src/fx.cpp @@ -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); diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index 6501f3809..57e91e80a 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -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) diff --git a/source/games/blood/src/player.cpp b/source/games/blood/src/player.cpp index 6bfc60af7..4c519c4a4 100644 --- a/source/games/blood/src/player.cpp +++ b/source/games/blood/src/player.cpp @@ -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)); diff --git a/source/games/blood/src/seq.cpp b/source/games/blood/src/seq.cpp index f1970ae5e..73c22ec48 100644 --- a/source/games/blood/src/seq.cpp +++ b/source/games/blood/src/seq.cpp @@ -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); diff --git a/source/games/blood/src/seq.h b/source/games/blood/src/seq.h index 0147202ac..f07d48429 100644 --- a/source/games/blood/src/seq.h +++ b/source/games/blood/src/seq.h @@ -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); diff --git a/source/games/blood/src/seqcb.h b/source/games/blood/src/seqcb.h index 721a50a3f..2e9599b9c 100644 --- a/source/games/blood/src/seqcb.h +++ b/source/games/blood/src/seqcb.h @@ -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 diff --git a/source/games/blood/src/triggers.cpp b/source/games/blood/src/triggers.cpp index 0eb99be95..065c059a7 100644 --- a/source/games/blood/src/triggers.cpp +++ b/source/games/blood/src/triggers.cpp @@ -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)); } diff --git a/source/games/blood/src/vmexports.cpp b/source/games/blood/src/vmexports.cpp index 6165d8659..d8dc8a362 100644 --- a/source/games/blood/src/vmexports.cpp +++ b/source/games/blood/src/vmexports.cpp @@ -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) diff --git a/source/games/blood/src/weapon.cpp b/source/games/blood/src/weapon.cpp index f124a77c7..abb773795 100644 --- a/source/games/blood/src/weapon.cpp +++ b/source/games/blood/src/weapon.cpp @@ -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); diff --git a/wadsrc/static/zscript/games/blood/actors/missiles.zs b/wadsrc/static/zscript/games/blood/actors/missiles.zs index a46ada0a0..1d81b6aa2 100644 --- a/wadsrc/static/zscript/games/blood/actors/missiles.zs +++ b/wadsrc/static/zscript/games/blood/actors/missiles.zs @@ -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; } diff --git a/wadsrc/static/zscript/games/blood/bloodactor.zs b/wadsrc/static/zscript/games/blood/bloodactor.zs index 18a328360..0cb60e4c3 100644 --- a/wadsrc/static/zscript/games/blood/bloodactor.zs +++ b/wadsrc/static/zscript/games/blood/bloodactor.zs @@ -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()