From 6725867462d453a7c19760f6d3f52261bd29fcac Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 18 Oct 2023 19:00:58 +0200 Subject: [PATCH] exported all the states to ZScript. --- source/core/namedef_custom.h | 360 +++++++++++++++ source/games/blood/src/aipod.cpp | 8 +- source/games/blood/src/aistate.h | 8 +- source/games/blood/src/common_game.h | 6 +- source/games/blood/src/loadsave.cpp | 482 +++++++++++++++++++- wadsrc/static/zscript.txt | 1 + wadsrc/static/zscript/games/blood/states.zs | 390 ++++++++++++++++ 7 files changed, 1240 insertions(+), 15 deletions(-) create mode 100644 wadsrc/static/zscript/games/blood/states.zs diff --git a/source/core/namedef_custom.h b/source/core/namedef_custom.h index 98e0d1cc9..02ed63246 100644 --- a/source/core/namedef_custom.h +++ b/source/core/namedef_custom.h @@ -106,3 +106,363 @@ xx(Darts) xx(Bloody) xx(Shotgun2) + +xx(genIdle) +xx(genRecoil) +xx(batIdle) +xx(batFlyIdle) +xx(batChase) +xx(batPonder) +xx(batGoto) +xx(batBite) +xx(batRecoil) +xx(batSearch) +xx(batSwoop) +xx(batFly) +xx(batTurn) +xx(batHide) +xx(batDodgeUp) +xx(batDodgeUpRight) +xx(batDodgeUpLeft) +xx(batDodgeDown) +xx(batDodgeDownRight) +xx(batDodgeDownLeft) +xx(beastIdle) +xx(beastChase) +xx(beastDodge) +xx(beastGoto) +xx(beastSlash) +xx(beastStomp) +xx(beastSearch) +xx(beastRecoil) +xx(beastTeslaRecoil) +xx(beastSwimIdle) +xx(beastSwimChase) +xx(beastSwimDodge) +xx(beastSwimGoto) +xx(beastSwimSearch) +xx(beastSwimSlash) +xx(beastSwimRecoil) +xx(beastMorphToBeast) +xx(beastMorphFromCultist) +xx(beastMoveSwimChaseAlt) +xx(beastSwimAttack) +xx(beastSwimTurn) +xx(eelIdle) +xx(eelFlyIdle) +xx(eelChase) +xx(eelPonder) +xx(eelGoto) +xx(eelBite) +xx(eelRecoil) +xx(eelSearch) +xx(eelSwoop) +xx(eelFly) +xx(eelTurn) +xx(eelHide) +xx(eelDodgeUp) +xx(eelDodgeUpRight) +xx(eelDodgeUpLeft) +xx(eelDodgeDown) +xx(eelDodgeDownRight) +xx(eelDodgeDownLeft) +xx(cultistBurnIdle) +xx(cultistBurnChase) +xx(cultistBurnGoto) +xx(cultistBurnSearch) +xx(cultistBurnAttack) +xx(zombieABurnChase) +xx(zombieABurnGoto) +xx(zombieABurnSearch) +xx(zombieABurnAttack) +xx(zombieFBurnChase) +xx(zombieFBurnGoto) +xx(zombieFBurnSearch) +xx(zombieFBurnAttack) +xx(innocentBurnChase) +xx(innocentBurnGoto) +xx(innocentBurnSearch) +xx(innocentBurnAttack) +xx(beastBurnChase) +xx(beastBurnGoto) +xx(beastBurnSearch) +xx(beastBurnAttack) +xx(tinycalebBurnChase) +xx(tinycalebBurnGoto) +xx(tinycalebBurnSearch) +xx(tinycalebBurnAttack) +xx(tinycalebIdle) +xx(tinycalebChase) +xx(tinycalebDodge) +xx(tinycalebGoto) +xx(tinycalebAttack) +xx(tinycalebSearch) +xx(tinycalebRecoil) +xx(tinycalebTeslaRecoil) +xx(tinycalebSwimIdle) +xx(tinycalebSwimChase) +xx(tinycalebSwimDodge) +xx(tinycalebSwimGoto) +xx(tinycalebSwimSearch) +xx(tinycalebSwimAttack) +xx(tinycalebSwimRecoil) +xx(tinycalebSwimUnused) +xx(tinycalebSwimMoveIn) +xx(tinycalebSwimTurn) +xx(cerberusIdle) +xx(cerberusSearch) +xx(cerberusChase) +xx(cerberusRecoil) +xx(cerberusTeslaRecoil) +xx(cerberusGoto) +xx(cerberusBite) +xx(cerberusBurn) +xx(cerberus3Burn) +xx(cerberus2Idle) +xx(cerberus2Search) +xx(cerberus2Chase) +xx(cerberus2Recoil) +xx(cerberus2Goto) +xx(cerberus2Bite) +xx(cerberus2Burn) +xx(cerberus4Burn) +xx(cerberusTurn1) +xx(cerberusTurn2) +xx(cultistIdle) +xx(cultistProneIdle) +xx(fanaticProneIdle) +xx(cultistProneIdle3) +xx(cultistChase) +xx(fanaticChase) +xx(cultistDodge) +xx(cultistGoto) +xx(cultistProneChase) +xx(cultistProneDodge) +xx(cultistTThrow) +xx(cultistSThrow) +xx(cultistTsThrow) +xx(cultistDThrow) +xx(cultistDThrow2) +xx(cultistDThrow3C) +xx(cultistDThrow3B) +xx(cultistDThrow3A) +xx(cultistDThrow4) +xx(cultistSearch) +xx(cultistSFire) +xx(cultistTFire) +xx(cultistTsFire) +xx(cultistSProneFire) +xx(cultistTProneFire) +xx(cultistTsProneFire) +xx(cultistTsProneFireFixed) +xx(cultistRecoil) +xx(cultistProneRecoil) +xx(cultistTeslaRecoil) +xx(cultistSwimIdle) +xx(cultistSwimChase) +xx(cultistSwimDodge) +xx(cultistSwimGoto) +xx(cultistSwimSearch) +xx(cultistSSwimFire) +xx(cultistTSwimFire) +xx(cultistTsSwimFire) +xx(cultistSwimRecoil) +xx(gargoyleFIdle) +xx(gargoyleStatueIdle) +xx(gargoyleFChase) +xx(gargoyleFGoto) +xx(gargoyleFSlash) +xx(gargoyleFThrow) +xx(gargoyleSThrow) +xx(gargoyleSBlast) +xx(gargoyleFRecoil) +xx(gargoyleFSearch) +xx(gargoyleFMorph2) +xx(gargoyleFMorph) +xx(gargoyleSMorph2) +xx(gargoyleSMorph) +xx(gargoyleSwoop) +xx(gargoyleFly) +xx(gargoyleTurn) +xx(gargoyleDodgeUp) +xx(gargoyleFDodgeUpRight) +xx(gargoyleFDodgeUpLeft) +xx(gargoyleDodgeDown) +xx(gargoyleFDodgeDownRight) +xx(gargoyleFDodgeDownLeft) +xx(statueFBreakSEQ) +xx(statueSBreakSEQ) +xx(ghostIdle) +xx(ghostChase) +xx(ghostGoto) +xx(ghostSlash) +xx(ghostThrow) +xx(ghostBlast) +xx(ghostRecoil) +xx(ghostTeslaRecoil) +xx(ghostSearch) +xx(ghostSwoop) +xx(ghostFly) +xx(ghostTurn) +xx(ghostDodgeUp) +xx(ghostDodgeUpRight) +xx(ghostDodgeUpLeft) +xx(ghostDodgeDown) +xx(ghostDodgeDownRight) +xx(ghostDodgeDownLeft) +xx(gillBeastIdle) +xx(gillBeastChase) +xx(gillBeastDodge) +xx(gillBeastGoto) +xx(gillBeastBite) +xx(gillBeastSearch) +xx(gillBeastRecoil) +xx(gillBeastSwimIdle) +xx(gillBeastSwimChase) +xx(gillBeastSwimDodge) +xx(gillBeastSwimGoto) +xx(gillBeastSwimSearch) +xx(gillBeastSwimBite) +xx(gillBeastSwimRecoil) +xx(gillBeastSwimUnused) +xx(gillBeastSwimMoveIn) +xx(gillBeastSwimTurn) +xx(handIdle) +xx(hand13A3B4) +xx(handSearch) +xx(handChase) +xx(handRecoil) +xx(handGoto) +xx(handJump) +xx(houndIdle) +xx(houndSearch) +xx(houndChase) +xx(houndRecoil) +xx(houndTeslaRecoil) +xx(houndGoto) +xx(houndBite) +xx(houndBurn) +xx(innocentIdle) +xx(innocentSearch) +xx(innocentChase) +xx(innocentRecoil) +xx(innocentTeslaRecoil) +xx(innocentGoto) +xx(podIdle) +xx(podMove) +xx(podSearch) +xx(podStartChase) +xx(podRecoil) +xx(podChase) +xx(tentacleIdle) +xx(tentaclePlaySound1) +xx(tentaclePlaySound1A) +xx(tentaclePlaySound2) +xx(tentaclePlaySound2A) +xx(tentacleMove) +xx(tentacleSearch) +xx(tentacleStartChase) +xx(tentacleRecoil) +xx(tentacleChase) +xx(ratIdle) +xx(ratSearch) +xx(ratChase) +xx(ratDodge) +xx(ratRecoil) +xx(ratGoto) +xx(ratBite) +xx(spidIdle) +xx(spidChase) +xx(spidDodge) +xx(spidGoto) +xx(spidSearch) +xx(spidBite) +xx(spidJump) +xx(spidBirth) +xx(tchernobogIdle) +xx(tchernobogSearch) +xx(tchernobogChase) +xx(tchernobogRecoil) +xx(tchernobogGoto) +xx(tchernobogBurn1) +xx(tchernobogBurn2) +xx(tchernobogFireAtk) +xx(tchernobogTurn) +xx(zombieAIdle) +xx(zombieAChase) +xx(zombieAPonder) +xx(zombieAGoto) +xx(zombieAHack) +xx(zombieASearch) +xx(zombieARecoil) +xx(zombieATeslaRecoil) +xx(zombieARecoil2) +xx(zombieAStand) +xx(zombieEIdle) +xx(zombieEUp2) +xx(zombieEUp) +xx(zombie2Idle) +xx(zombie2Search) +xx(zombieSIdle) +xx(zombieEStand) +xx(zombieFIdle) +xx(zombieFChase) +xx(zombieFGoto) +xx(zombieFDodge) +xx(zombieFHack) +xx(zombieFPuke) +xx(zombieFThrow) +xx(zombieFSearch) +xx(zombieFRecoil) +xx(zombieFTeslaRecoil) +// the following similar names must be continuous +xx(genPatrolState_0) +xx(genPatrolState_1) +xx(genPatrolState_2) +xx(genPatrolState_3) +xx(genPatrolState_4) +xx(genPatrolState_5) +xx(genPatrolState_6) +xx(genPatrolState_7) +xx(genPatrolState_8) +xx(genPatrolState_9) +xx(genPatrolState_10) +xx(genPatrolState_11) +xx(genPatrolState_12) +xx(genPatrolState_13) +xx(genPatrolState_14) +xx(genPatrolState_15) +xx(genPatrolState_16) +xx(genPatrolState_17) +xx(genPatrolState_18) +xx(genPatrolState_19) +xx(genPatrolState_20) +xx(genPatrolState_21) +xx(genPatrolState_22) +xx(genPatrolState_23) +xx(genPatrolState_24) +xx(genPatrolState_25) +xx(genPatrolState_26) +xx(genPatrolState_27) +xx(genPatrolState_28) +xx(genPatrolState_29) +xx(genPatrolState_30) +xx(genPatrolState_31) +xx(genPatrolState_32) +xx(genPatrolState_33) +xx(genPatrolState_34) +xx(genPatrolState_35) +xx(genPatrolState_36) +xx(genPatrolState_37) +xx(genPatrolState_38) +xx(genPatrolState_39) +xx(genPatrolState_40) +xx(genPatrolState_41) +xx(genPatrolState_42) +xx(genPatrolState_43) +xx(genPatrolState_44) +xx(genPatrolState_45) +xx(genPatrolState_46) +xx(genPatrolState_47) +xx(genPatrolState_48) +xx(genPatrolState_49) diff --git a/source/games/blood/src/aipod.cpp b/source/games/blood/src/aipod.cpp index 8f3d699ec..dcb1f909b 100644 --- a/source/games/blood/src/aipod.cpp +++ b/source/games/blood/src/aipod.cpp @@ -37,10 +37,10 @@ AISTATE podStartChase = { kAiStateChase, 8, &AF(podAttack), 600, NULL, NULL, NUL AISTATE podRecoil = { kAiStateRecoil, 5, nullptr, 0, NULL, NULL, NULL, &podChase }; AISTATE podChase = { kAiStateChase, 6, nullptr, 0, NULL, &AF(aiMoveTurn), &AF(aiPodChase), NULL }; AISTATE tentacleIdle = { kAiStateIdle, 0, nullptr, 0, NULL, NULL, &AF(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 tentaclePlaySound1 = { kAiStateOther, 7, &AF(podPlaySound1), 0, NULL, NULL, NULL, &tentaclePlaySound1A }; +AISTATE tentaclePlaySound1A = { kAiStateOther, -1, nullptr, 0, NULL, NULL, NULL, &tentacleChase }; +AISTATE tentaclePlaySound2 = { kAiStateOther, 8, &AF(podPlaySound2), 0, NULL, NULL, NULL, &tentaclePlaySound2A }; +AISTATE tentaclePlaySound2A = { kAiStateOther, -1, nullptr, 0, NULL, NULL, NULL, &tentacleIdle }; AISTATE tentacleMove = { kAiStateOther, 8, nullptr, 3600, NULL, &AF(aiMoveTurn), &AF(aiPodMove), &tentacleSearch }; AISTATE tentacleSearch = { kAiStateOther, 0, nullptr, 3600, NULL, &AF(aiMoveTurn), &AF(aiPodSearch), NULL }; AISTATE tentacleStartChase = { kAiStateOther, 6, &AF(podExplode), 120, NULL, NULL, NULL, &tentacleChase }; diff --git a/source/games/blood/src/aistate.h b/source/games/blood/src/aistate.h index 6e4a8271c..65da210b2 100644 --- a/source/games/blood/src/aistate.h +++ b/source/games/blood/src/aistate.h @@ -285,10 +285,10 @@ extern AISTATE podStartChase; extern AISTATE podRecoil; extern AISTATE podChase; extern AISTATE tentacleIdle; -extern AISTATE tentacle13A6A8; -extern AISTATE tentacle13A6C4; -extern AISTATE tentacle13A6E0; -extern AISTATE tentacle13A6FC; +extern AISTATE tentaclePlaySound1; +extern AISTATE tentaclePlaySound1A; +extern AISTATE tentaclePlaySound2; +extern AISTATE tentaclePlaySound2A; extern AISTATE tentacleMove; extern AISTATE tentacleSearch; extern AISTATE tentacleStartChase; diff --git a/source/games/blood/src/common_game.h b/source/games/blood/src/common_game.h index 29b1268e3..bd7a4c402 100644 --- a/source/games/blood/src/common_game.h +++ b/source/games/blood/src/common_game.h @@ -442,10 +442,10 @@ enum { kAiStateRecoil = 5, kAiStateAttack = 6, #ifdef NOONE_EXTENSIONS - kAiStateKnockout, - kAiStateIdleSleep, kAiStatePatrolBase, - kAiStatePatrolWaitL = kAiStatePatrolBase, + kAiStateKnockout = kAiStatePatrolBase, + kAiStateIdleSleep, + kAiStatePatrolWaitL, kAiStatePatrolWaitC, kAiStatePatrolWaitW, kAiStatePatrolMoveL, diff --git a/source/games/blood/src/loadsave.cpp b/source/games/blood/src/loadsave.cpp index ff4e47ce6..9cb2082be 100644 --- a/source/games/blood/src/loadsave.cpp +++ b/source/games/blood/src/loadsave.cpp @@ -287,10 +287,10 @@ static AISTATE* const allAIStates[] = &podRecoil, &podChase, &tentacleIdle, - &tentacle13A6A8, - &tentacle13A6C4, - &tentacle13A6E0, - &tentacle13A6FC, + &tentaclePlaySound1, + &tentaclePlaySound1A, + &tentaclePlaySound2, + &tentaclePlaySound2A, &tentacleMove, &tentacleSearch, &tentacleStartChase, @@ -347,8 +347,482 @@ static AISTATE* const allAIStates[] = &zombieFSearch, &zombieFRecoil, &zombieFTeslaRecoil, + &genPatrolStates[0], + &genPatrolStates[1], + &genPatrolStates[2], + &genPatrolStates[3], + &genPatrolStates[4], + &genPatrolStates[5], + &genPatrolStates[6], + &genPatrolStates[7], + &genPatrolStates[8], + &genPatrolStates[9], + &genPatrolStates[10], + &genPatrolStates[11], + &genPatrolStates[12], + &genPatrolStates[13], + &genPatrolStates[14], + &genPatrolStates[15], + &genPatrolStates[16], + &genPatrolStates[17], + &genPatrolStates[18], + &genPatrolStates[19], + &genPatrolStates[20], + &genPatrolStates[21], + &genPatrolStates[22], + &genPatrolStates[23], + &genPatrolStates[24], + &genPatrolStates[25], + &genPatrolStates[26], + &genPatrolStates[27], + &genPatrolStates[28], + &genPatrolStates[29], + &genPatrolStates[30], + &genPatrolStates[31], + &genPatrolStates[32], + &genPatrolStates[33], + &genPatrolStates[34], + &genPatrolStates[35], + &genPatrolStates[36], + &genPatrolStates[37], + &genPatrolStates[38], + &genPatrolStates[39], + &genPatrolStates[40], + &genPatrolStates[41], + &genPatrolStates[42], + &genPatrolStates[43], + &genPatrolStates[44], + &genPatrolStates[45], + &genPatrolStates[46], + &genPatrolStates[47], + &genPatrolStates[48], + &genPatrolStates[49], }; +static const char* const allAIStateNames[] = +{ + "none", + "genIdle", + "genRecoil", + "batIdle", + "batFlyIdle", + "batChase", + "batPonder", + "batGoto", + "batBite", + "batRecoil", + "batSearch", + "batSwoop", + "batFly", + "batTurn", + "batHide", + "batDodgeUp", + "batDodgeUpRight", + "batDodgeUpLeft", + "batDodgeDown", + "batDodgeDownRight", + "batDodgeDownLeft", + "beastIdle", + "beastChase", + "beastDodge", + "beastGoto", + "beastSlash", + "beastStomp", + "beastSearch", + "beastRecoil", + "beastTeslaRecoil", + "beastSwimIdle", + "beastSwimChase", + "beastSwimDodge", + "beastSwimGoto", + "beastSwimSearch", + "beastSwimSlash", + "beastSwimRecoil", + "beastMorphToBeast", + "beastMorphFromCultist", + "beastMoveSwimChaseAlt", + "beastSwimAttack", + "beastSwimTurn", + "eelIdle", + "eelFlyIdle", + "eelChase", + "eelPonder", + "eelGoto", + "eelBite", + "eelRecoil", + "eelSearch", + "eelSwoop", + "eelFly", + "eelTurn", + "eelHide", + "eelDodgeUp", + "eelDodgeUpRight", + "eelDodgeUpLeft", + "eelDodgeDown", + "eelDodgeDownRight", + "eelDodgeDownLeft", + "cultistBurnIdle", + "cultistBurnChase", + "cultistBurnGoto", + "cultistBurnSearch", + "cultistBurnAttack", + "zombieABurnChase", + "zombieABurnGoto", + "zombieABurnSearch", + "zombieABurnAttack", + "zombieFBurnChase", + "zombieFBurnGoto", + "zombieFBurnSearch", + "zombieFBurnAttack", + "innocentBurnChase", + "innocentBurnGoto", + "innocentBurnSearch", + "innocentBurnAttack", + "beastBurnChase", + "beastBurnGoto", + "beastBurnSearch", + "beastBurnAttack", + "tinycalebBurnChase", + "tinycalebBurnGoto", + "tinycalebBurnSearch", + "tinycalebBurnAttack", + "tinycalebIdle", + "tinycalebChase", + "tinycalebDodge", + "tinycalebGoto", + "tinycalebAttack", + "tinycalebSearch", + "tinycalebRecoil", + "tinycalebTeslaRecoil", + "tinycalebSwimIdle", + "tinycalebSwimChase", + "tinycalebSwimDodge", + "tinycalebSwimGoto", + "tinycalebSwimSearch", + "tinycalebSwimAttack", + "tinycalebSwimRecoil", + "tinycalebSwimUnused", + "tinycalebSwimMoveIn", + "tinycalebSwimTurn", + "cerberusIdle", + "cerberusSearch", + "cerberusChase", + "cerberusRecoil", + "cerberusTeslaRecoil", + "cerberusGoto", + "cerberusBite", + "cerberusBurn", + "cerberus3Burn", + "cerberus2Idle", + "cerberus2Search", + "cerberus2Chase", + "cerberus2Recoil", + "cerberus2Goto", + "cerberus2Bite", + "cerberus2Burn", + "cerberus4Burn", + "cerberusTurn1", + "cerberusTurn2", + "cultistIdle", + "cultistProneIdle", + "fanaticProneIdle", + "cultistProneIdle3", + "cultistChase", + "fanaticChase", + "cultistDodge", + "cultistGoto", + "cultistProneChase", + "cultistProneDodge", + "cultistTThrow", + "cultistSThrow", + "cultistTsThrow", + "cultistDThrow", + "cultistDThrow2", + "cultistDThrow3C", + "cultistDThrow3B", + "cultistDThrow3A", + "cultistDThrow4", + "cultistSearch", + "cultistSFire", + "cultistTFire", + "cultistTsFire", + "cultistSProneFire", + "cultistTProneFire", + "cultistTsProneFire", + "cultistTsProneFireFixed", + "cultistRecoil", + "cultistProneRecoil", + "cultistTeslaRecoil", + "cultistSwimIdle", + "cultistSwimChase", + "cultistSwimDodge", + "cultistSwimGoto", + "cultistSwimSearch", + "cultistSSwimFire", + "cultistTSwimFire", + "cultistTsSwimFire", + "cultistSwimRecoil", + "gargoyleFIdle", + "gargoyleStatueIdle", + "gargoyleFChase", + "gargoyleFGoto", + "gargoyleFSlash", + "gargoyleFThrow", + "gargoyleSThrow", + "gargoyleSBlast", + "gargoyleFRecoil", + "gargoyleFSearch", + "gargoyleFMorph2", + "gargoyleFMorph", + "gargoyleSMorph2", + "gargoyleSMorph", + "gargoyleSwoop", + "gargoyleFly", + "gargoyleTurn", + "gargoyleDodgeUp", + "gargoyleFDodgeUpRight", + "gargoyleFDodgeUpLeft", + "gargoyleDodgeDown", + "gargoyleFDodgeDownRight", + "gargoyleFDodgeDownLeft", + "statueFBreakSEQ", + "statueSBreakSEQ", + "ghostIdle", + "ghostChase", + "ghostGoto", + "ghostSlash", + "ghostThrow", + "ghostBlast", + "ghostRecoil", + "ghostTeslaRecoil", + "ghostSearch", + "ghostSwoop", + "ghostFly", + "ghostTurn", + "ghostDodgeUp", + "ghostDodgeUpRight", + "ghostDodgeUpLeft", + "ghostDodgeDown", + "ghostDodgeDownRight", + "ghostDodgeDownLeft", + "gillBeastIdle", + "gillBeastChase", + "gillBeastDodge", + "gillBeastGoto", + "gillBeastBite", + "gillBeastSearch", + "gillBeastRecoil", + "gillBeastSwimIdle", + "gillBeastSwimChase", + "gillBeastSwimDodge", + "gillBeastSwimGoto", + "gillBeastSwimSearch", + "gillBeastSwimBite", + "gillBeastSwimRecoil", + "gillBeastSwimUnused", + "gillBeastSwimMoveIn", + "gillBeastSwimTurn", + "handIdle", + "hand13A3B4", + "handSearch", + "handChase", + "handRecoil", + "handGoto", + "handJump", + "houndIdle", + "houndSearch", + "houndChase", + "houndRecoil", + "houndTeslaRecoil", + "houndGoto", + "houndBite", + "houndBurn", + "innocentIdle", + "innocentSearch", + "innocentChase", + "innocentRecoil", + "innocentTeslaRecoil", + "innocentGoto", + "podIdle", + "podMove", + "podSearch", + "podStartChase", + "podRecoil", + "podChase", + "tentacleIdle", + "tentaclePlaySound1", + "tentaclePlaySound1A", + "tentaclePlaySound2", + "tentaclePlaySound2A", + "tentacleMove", + "tentacleSearch", + "tentacleStartChase", + "tentacleRecoil", + "tentacleChase", + "ratIdle", + "ratSearch", + "ratChase", + "ratDodge", + "ratRecoil", + "ratGoto", + "ratBite", + "spidIdle", + "spidChase", + "spidDodge", + "spidGoto", + "spidSearch", + "spidBite", + "spidJump", + "spidBirth", + "tchernobogIdle", + "tchernobogSearch", + "tchernobogChase", + "tchernobogRecoil", + "tchernobogGoto", + "tchernobogBurn1", + "tchernobogBurn2", + "tchernobogFireAtk", + "tchernobogTurn", + "zombieAIdle", + "zombieAChase", + "zombieAPonder", + "zombieAGoto", + "zombieAHack", + "zombieASearch", + "zombieARecoil", + "zombieATeslaRecoil", + "zombieARecoil2", + "zombieAStand", + "zombieEIdle", + "zombieEUp2", + "zombieEUp", + "zombie2Idle", + "zombie2Search", + "zombieSIdle", + "zombieEStand", + "zombieFIdle", + "zombieFChase", + "zombieFGoto", + "zombieFDodge", + "zombieFHack", + "zombieFPuke", + "zombieFThrow", + "zombieFSearch", + "zombieFRecoil", + "zombieFTeslaRecoil", + "genPatrolState_0", + "genPatrolState_1", + "genPatrolState_2", + "genPatrolState_3", + "genPatrolState_4", + "genPatrolState_5", + "genPatrolState_6", + "genPatrolState_7", + "genPatrolState_8", + "genPatrolState_9", + "genPatrolState_10", + "genPatrolState_11", + "genPatrolState_12", + "genPatrolState_13", + "genPatrolState_14", + "genPatrolState_15", + "genPatrolState_16", + "genPatrolState_17", + "genPatrolState_18", + "genPatrolState_19", + "genPatrolState_20", + "genPatrolState_21", + "genPatrolState_22", + "genPatrolState_23", + "genPatrolState_24", + "genPatrolState_25", + "genPatrolState_26", + "genPatrolState_27", + "genPatrolState_28", + "genPatrolState_29", + "genPatrolState_30", + "genPatrolState_31", + "genPatrolState_32", + "genPatrolState_33", + "genPatrolState_34", + "genPatrolState_35", + "genPatrolState_36", + "genPatrolState_37", + "genPatrolState_38", + "genPatrolState_39", + "genPatrolState_40", + "genPatrolState_41", + "genPatrolState_42", + "genPatrolState_43", + "genPatrolState_44", + "genPatrolState_45", + "genPatrolState_46", + "genPatrolState_47", + "genPatrolState_48", + "genPatrolState_49", +}; + +const char* statetype[] = { +"kAiStateOther", +"kAiStateIdle", +"kAiStateGenIdle", +"kAiStateMove", +"kAiStateSearch", +"kAiStateChase", +"kAiStateRecoil", +"kAiStateAttack", +"kAiStateKnockout", +"kAiStateIdleSleep", +"kAiStatePatrolWaitL", +"kAiStatePatrolWaitC", +"kAiStatePatrolWaitW", +"kAiStatePatrolMoveL", +"kAiStatePatrolMoveC", +"kAiStatePatrolMoveW", +"kAiStatePatrolTurnL", +"kAiStatePatrolTurnC", +"kAiStatePatrolTurnW", +"kAiStatePatrolMax", +}; + +// name, type, duration, trigger, enter, move, think, next +// AISTATE "genIdle", "+0", 1, 0, null, null, null, null, "none"; + +void exportStates() +{ + for (size_t i = 1; i < countof(allAIStates); i++) + { + AISTATE* state = allAIStates[i]; + assert(state->stateType >= kAiStateOther && state->stateType <= kAiStatePatrolMax); + unsigned ii = 0; + for (auto cstate : allAIStates) + { + if (state->nextState == cstate) + break; + ii++; + } + + Printf("\t\t\"%s\", \"+%d\", %s, %d, %s, %s, %s, %s, \"%s\";\n", + allAIStateNames[i], + state->seqId, + statetype[state->stateType + 1], + state->stateTicks, + state->funcId? (*state->funcId)->Name.GetChars() : "none", + state->enterFunc ? (*state->enterFunc)->Name.GetChars() : "none", + state->moveFunc ? (*state->moveFunc)->Name.GetChars() : "none", + state->thinkFunc ? (*state->thinkFunc)->Name.GetChars() : "none", + allAIStateNames[ii] + ); + } +} + +CCMD(exportstates) +{ + C_DoCommand("logfile states"); + exportStates(); +} + + #ifdef NOONE_EXTENSIONS // Serializing states is a lot more tricky for custom dudes. // Note that this makes no assumptions about the relationship between actor and dude because at restoration this isn't known. diff --git a/wadsrc/static/zscript.txt b/wadsrc/static/zscript.txt index 87554aa49..5e007efd0 100644 --- a/wadsrc/static/zscript.txt +++ b/wadsrc/static/zscript.txt @@ -212,6 +212,7 @@ version "4.12" #include "zscript/games/duke/world/redneckbreak.zs" #include "zscript/games/blood/bloodgame.zs" +#include "zscript/games/blood/states.zs" #include "zscript/games/blood/ui/menu.zs" #include "zscript/games/blood/ui/sbar.zs" #include "zscript/games/blood/ui/screens.zs" diff --git a/wadsrc/static/zscript/games/blood/states.zs b/wadsrc/static/zscript/games/blood/states.zs new file mode 100644 index 000000000..e96e9301e --- /dev/null +++ b/wadsrc/static/zscript/games/blood/states.zs @@ -0,0 +1,390 @@ +extend class BloodActor +{ + enum AIStateTypes + { + kAiStateOther = -1, + kAiStateIdle = 0, + kAiStateGenIdle = 1, + kAiStateMove = 2, + kAiStateSearch = 3, + kAiStateChase = 4, + kAiStateRecoil = 5, + kAiStateAttack = 6, + + kAiStatePatrolBase, + kAiStateKnockout = kAiStatePatrolBase, + kAiStateIdleSleep, + kAiStatePatrolWaitL, + kAiStatePatrolWaitC, + kAiStatePatrolWaitW, + kAiStatePatrolMoveL, + kAiStatePatrolMoveC, + kAiStatePatrolMoveW, + kAiStatePatrolTurnL, + kAiStatePatrolTurnC, + kAiStatePatrolTurnW, + kAiStatePatrolMax + } + + default + { + AIState "genIdle", "+0", kAiStateGenIdle, 0, null, null, null, null, "none"; + AIState "genRecoil", "+5", kAiStateRecoil, 20, null, null, null, null, "genIdle"; + AIState "batIdle", "+0", kAiStateIdle, 0, null, null, null, batThinkTarget, "none"; + AIState "batFlyIdle", "+6", kAiStateIdle, 0, null, null, null, batThinkTarget, "none"; + AIState "batChase", "+6", kAiStateChase, 0, null, null, batMoveForward, batThinkChase, "batFlyIdle"; + AIState "batPonder", "+6", kAiStateOther, 0, null, null, null, batThinkPonder, "none"; + AIState "batGoto", "+6", kAiStateMove, 600, null, null, batMoveForward, batThinkGoto, "batFlyIdle"; + AIState "batBite", "+7", kAiStateChase, 60, batBiteSeqCallback, null, null, null, "batPonder"; + AIState "batRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "batChase"; + AIState "batSearch", "+6", kAiStateSearch, 120, null, null, batMoveForward, batThinkSearch, "batFlyIdle"; + AIState "batSwoop", "+6", kAiStateOther, 60, null, null, batMoveSwoop, batThinkChase, "batChase"; + AIState "batFly", "+6", kAiStateMove, 0, null, null, batMoveFly, batThinkChase, "batChase"; + AIState "batTurn", "+6", kAiStateMove, 60, null, null, aiMoveTurn, null, "batChase"; + AIState "batHide", "+6", kAiStateOther, 0, null, null, batMoveToCeil, batMoveForward, "none"; + AIState "batDodgeUp", "+6", kAiStateMove, 120, null, null, batMoveDodgeUp, null, "batChase"; + AIState "batDodgeUpRight", "+6", kAiStateMove, 90, null, null, batMoveDodgeUp, null, "batChase"; + AIState "batDodgeUpLeft", "+6", kAiStateMove, 90, null, null, batMoveDodgeUp, null, "batChase"; + AIState "batDodgeDown", "+6", kAiStateMove, 120, null, null, batMoveDodgeDown, null, "batChase"; + AIState "batDodgeDownRight", "+6", kAiStateMove, 90, null, null, batMoveDodgeDown, null, "batChase"; + AIState "batDodgeDownLeft", "+6", kAiStateMove, 90, null, null, batMoveDodgeDown, null, "batChase"; + AIState "beastIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "beastChase", "+8", kAiStateChase, 0, null, null, beastMoveForward, beastThinkChase, "none"; + AIState "beastDodge", "+8", kAiStateMove, 60, null, null, aiMoveDodge, null, "beastChase"; + AIState "beastGoto", "+8", kAiStateMove, 600, null, null, beastMoveForward, beastThinkGoto, "beastIdle"; + AIState "beastSlash", "+6", kAiStateChase, 120, SlashSeqCallback, null, null, null, "beastChase"; + AIState "beastStomp", "+7", kAiStateChase, 120, StompSeqCallback, null, null, null, "beastChase"; + AIState "beastSearch", "+8", kAiStateSearch, 120, null, null, beastMoveForward, beastThinkSearch, "beastIdle"; + AIState "beastRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "beastDodge"; + AIState "beastTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "beastDodge"; + AIState "beastSwimIdle", "+9", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "beastSwimChase", "+9", kAiStateChase, 0, null, null, beastMoveSwim, beastThinkSwimChase, "none"; + AIState "beastSwimDodge", "+9", kAiStateMove, 90, null, null, aiMoveDodge, null, "beastSwimChase"; + AIState "beastSwimGoto", "+9", kAiStateMove, 600, null, null, beastMoveForward, beastThinkSwimGoto, "beastSwimIdle"; + AIState "beastSwimSearch", "+9", kAiStateSearch, 120, null, null, beastMoveForward, beastThinkSearch, "beastSwimIdle"; + AIState "beastSwimSlash", "+9", kAiStateChase, 0, SlashSeqCallback, null, null, beastThinkSwimChase, "beastSwimChase"; + AIState "beastSwimRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "beastSwimDodge"; + AIState "beastMorphToBeast", "+-1", kAiStateOther, 0, null, MorphToBeast, null, null, "beastIdle"; + AIState "beastMorphFromCultist", "+2576", kAiStateOther, 0, null, null, null, null, "beastMorphToBeast"; + AIState "beastMoveSwimChaseAlt", "+9", kAiStateOther, 120, null, null, beastMoveSwimAlt, beastThinkSwimChase, "beastSwimChase"; + AIState "beastSwimAttack", "+9", kAiStateOther, 0, null, null, beastMoveIn, beastThinkSwimChase, "beastSwimChase"; + AIState "beastSwimTurn", "+9", kAiStateOther, 120, null, null, aiMoveTurn, null, "beastSwimChase"; + AIState "eelIdle", "+0", kAiStateIdle, 0, null, null, null, eelThinkTarget, "none"; + AIState "eelFlyIdle", "+0", kAiStateIdle, 0, null, null, null, eelThinkTarget, "none"; + AIState "eelChase", "+0", kAiStateChase, 0, null, null, eelMoveForward, eelThinkChase, "eelIdle"; + AIState "eelPonder", "+0", kAiStateOther, 0, null, null, null, eelThinkPonder, "none"; + AIState "eelGoto", "+0", kAiStateMove, 600, null, null, null, eelThinkGoto, "eelIdle"; + AIState "eelBite", "+7", kAiStateChase, 60, eelBiteSeqCallback, null, null, null, "eelChase"; + AIState "eelRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "eelChase"; + AIState "eelSearch", "+0", kAiStateSearch, 120, null, null, eelMoveForward, eelThinkSearch, "eelIdle"; + AIState "eelSwoop", "+0", kAiStateOther, 60, null, null, eelMoveSwoop, eelThinkChase, "eelChase"; + AIState "eelFly", "+0", kAiStateMove, 0, null, null, eelMoveAscend, eelThinkChase, "eelChase"; + AIState "eelTurn", "+0", kAiStateMove, 60, null, null, aiMoveTurn, null, "eelChase"; + AIState "eelHide", "+0", kAiStateOther, 0, null, null, eelMoveToCeil, eelMoveForward, "none"; + AIState "eelDodgeUp", "+0", kAiStateMove, 120, null, null, eelMoveDodgeUp, null, "eelChase"; + AIState "eelDodgeUpRight", "+0", kAiStateMove, 90, null, null, eelMoveDodgeUp, null, "eelChase"; + AIState "eelDodgeUpLeft", "+0", kAiStateMove, 90, null, null, eelMoveDodgeUp, null, "eelChase"; + AIState "eelDodgeDown", "+0", kAiStateMove, 120, null, null, eelMoveDodgeDown, null, "eelChase"; + AIState "eelDodgeDownRight", "+0", kAiStateMove, 90, null, null, eelMoveDodgeDown, null, "eelChase"; + AIState "eelDodgeDownLeft", "+0", kAiStateMove, 90, null, null, eelMoveDodgeDown, null, "eelChase"; + AIState "cultistBurnIdle", "+3", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "cultistBurnChase", "+3", kAiStateChase, 0, null, null, aiMoveForward, burnThinkChase, "none"; + AIState "cultistBurnGoto", "+3", kAiStateMove, 3600, null, null, aiMoveForward, burnThinkGoto, "cultistBurnSearch"; + AIState "cultistBurnSearch", "+3", kAiStateSearch, 3600, null, null, aiMoveForward, burnThinkSearch, "cultistBurnSearch"; + AIState "cultistBurnAttack", "+3", kAiStateChase, 120, BurnSeqCallback, null, null, null, "cultistBurnChase"; + AIState "zombieABurnChase", "+3", kAiStateChase, 0, null, null, aiMoveForward, burnThinkChase, "none"; + AIState "zombieABurnGoto", "+3", kAiStateMove, 3600, null, null, aiMoveForward, burnThinkGoto, "zombieABurnSearch"; + AIState "zombieABurnSearch", "+3", kAiStateSearch, 3600, null, null, aiMoveForward, burnThinkSearch, "none"; + AIState "zombieABurnAttack", "+3", kAiStateChase, 120, BurnSeqCallback, null, null, null, "zombieABurnChase"; + AIState "zombieFBurnChase", "+3", kAiStateChase, 0, null, null, aiMoveForward, burnThinkChase, "none"; + AIState "zombieFBurnGoto", "+3", kAiStateMove, 3600, null, null, aiMoveForward, burnThinkGoto, "zombieFBurnSearch"; + AIState "zombieFBurnSearch", "+3", kAiStateSearch, 3600, null, null, aiMoveForward, burnThinkSearch, "none"; + AIState "zombieFBurnAttack", "+3", kAiStateChase, 120, BurnSeqCallback, null, null, null, "zombieFBurnChase"; + AIState "innocentBurnChase", "+3", kAiStateChase, 0, null, null, aiMoveForward, burnThinkChase, "none"; + AIState "innocentBurnGoto", "+3", kAiStateMove, 3600, null, null, aiMoveForward, burnThinkGoto, "zombieFBurnSearch"; + AIState "innocentBurnSearch", "+3", kAiStateSearch, 3600, null, null, aiMoveForward, burnThinkSearch, "none"; + AIState "innocentBurnAttack", "+3", kAiStateChase, 120, BurnSeqCallback, null, null, null, "zombieFBurnChase"; + AIState "beastBurnChase", "+3", kAiStateChase, 0, null, null, aiMoveForward, burnThinkChase, "none"; + AIState "beastBurnGoto", "+3", kAiStateMove, 3600, null, null, aiMoveForward, burnThinkGoto, "beastBurnSearch"; + AIState "beastBurnSearch", "+3", kAiStateSearch, 3600, null, null, aiMoveForward, burnThinkSearch, "beastBurnSearch"; + AIState "beastBurnAttack", "+3", kAiStateChase, 120, BurnSeqCallback, null, null, null, "beastBurnChase"; + AIState "tinycalebBurnChase", "+3", kAiStateChase, 0, null, null, aiMoveForward, burnThinkChase, "none"; + AIState "tinycalebBurnGoto", "+3", kAiStateMove, 3600, null, null, aiMoveForward, burnThinkGoto, "tinycalebBurnSearch"; + AIState "tinycalebBurnSearch", "+3", kAiStateSearch, 3600, null, null, aiMoveForward, burnThinkSearch, "tinycalebBurnSearch"; + AIState "tinycalebBurnAttack", "+3", kAiStateChase, 120, BurnSeqCallback, null, null, null, "tinycalebBurnChase"; + AIState "tinycalebIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "tinycalebChase", "+6", kAiStateChase, 0, null, null, aiMoveForward, calebThinkChase, "none"; + AIState "tinycalebDodge", "+6", kAiStateMove, 90, null, null, aiMoveDodge, null, "tinycalebChase"; + AIState "tinycalebGoto", "+6", kAiStateMove, 600, null, null, aiMoveForward, calebThinkGoto, "tinycalebIdle"; + AIState "tinycalebAttack", "+0", kAiStateChase, 120, SeqAttackCallback, null, null, null, "tinycalebChase"; + AIState "tinycalebSearch", "+6", kAiStateSearch, 120, null, null, aiMoveForward, calebThinkSearch, "tinycalebIdle"; + AIState "tinycalebRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "tinycalebDodge"; + AIState "tinycalebTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "tinycalebDodge"; + AIState "tinycalebSwimIdle", "+10", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "tinycalebSwimChase", "+8", kAiStateChase, 0, null, null, calebMoveSwimChase, calebThinkSwimChase, "none"; + AIState "tinycalebSwimDodge", "+8", kAiStateMove, 90, null, null, aiMoveDodge, null, "tinycalebSwimChase"; + AIState "tinycalebSwimGoto", "+8", kAiStateMove, 600, null, null, aiMoveForward, calebThinkSwimGoto, "tinycalebSwimIdle"; + AIState "tinycalebSwimSearch", "+8", kAiStateSearch, 120, null, null, aiMoveForward, calebThinkSearch, "tinycalebSwimIdle"; + AIState "tinycalebSwimAttack", "+10", kAiStateChase, 0, SeqAttackCallback, null, null, null, "tinycalebSwimChase"; + AIState "tinycalebSwimRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "tinycalebSwimDodge"; + AIState "tinycalebSwimUnused", "+8", kAiStateOther, 120, null, null, calebSwimUnused, calebThinkSwimChase, "tinycalebSwimChase"; + AIState "tinycalebSwimMoveIn", "+8", kAiStateOther, 0, null, null, calebSwimMoveIn, calebThinkSwimChase, "tinycalebSwimChase"; + AIState "tinycalebSwimTurn", "+8", kAiStateOther, 120, null, null, aiMoveTurn, null, "tinycalebSwimChase"; + AIState "cerberusIdle", "+0", kAiStateIdle, 0, null, null, null, cerberusThinkTarget, "none"; + AIState "cerberusSearch", "+7", kAiStateSearch, 1800, null, null, aiMoveForward, cerberusThinkSearch, "cerberusIdle"; + AIState "cerberusChase", "+7", kAiStateChase, 0, null, null, aiMoveForward, cerberusThinkChase, "none"; + AIState "cerberusRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "cerberusSearch"; + AIState "cerberusTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "cerberusSearch"; + AIState "cerberusGoto", "+7", kAiStateMove, 600, null, null, aiMoveForward, cerberusThinkGoto, "cerberusIdle"; + AIState "cerberusBite", "+6", kAiStateChase, 60, cerberusBiteSeqCallback, null, null, null, "cerberusChase"; + AIState "cerberusBurn", "+6", kAiStateChase, 60, cerberusBurnSeqCallback, null, null, null, "cerberusChase"; + AIState "cerberus3Burn", "+6", kAiStateChase, 60, cerberusBurnSeqCallback2, null, null, null, "cerberusChase"; + AIState "cerberus2Idle", "+0", kAiStateIdle, 0, null, null, null, cerberusThinkTarget, "none"; + AIState "cerberus2Search", "+7", kAiStateSearch, 1800, null, null, aiMoveForward, cerberusThinkSearch, "cerberus2Idle"; + AIState "cerberus2Chase", "+7", kAiStateChase, 0, null, null, aiMoveForward, cerberusThinkChase, "none"; + AIState "cerberus2Recoil", "+5", kAiStateRecoil, 0, null, null, null, null, "cerberus2Search"; + AIState "cerberus2Goto", "+7", kAiStateMove, 600, null, null, aiMoveForward, cerberusThinkGoto, "cerberus2Idle"; + AIState "cerberus2Bite", "+6", kAiStateChase, 60, cerberusBiteSeqCallback, null, null, null, "cerberus2Chase"; + AIState "cerberus2Burn", "+6", kAiStateChase, 60, cerberusBurnSeqCallback, null, null, null, "cerberus2Chase"; + AIState "cerberus4Burn", "+6", kAiStateChase, 60, cerberusBurnSeqCallback2, null, null, null, "cerberus2Chase"; + AIState "cerberusTurn1", "+7", kAiStateOther, 120, null, null, aiMoveTurn, null, "cerberusChase"; + AIState "cerberusTurn2", "+7", kAiStateOther, 120, null, null, aiMoveTurn, null, "cerberusChase"; + AIState "cultistIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "cultistProneIdle", "+17", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "fanaticProneIdle", "+17", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "cultistProneIdle3", "+17", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "cultistChase", "+9", kAiStateChase, 0, null, null, aiMoveForward, cultThinkChase, "none"; + AIState "fanaticChase", "+0", kAiStateChase, 0, null, null, aiMoveTurn, cultThinkChase, "none"; + AIState "cultistDodge", "+9", kAiStateMove, 90, null, null, aiMoveDodge, null, "cultistChase"; + AIState "cultistGoto", "+9", kAiStateMove, 600, null, null, aiMoveForward, cultThinkGoto, "cultistIdle"; + AIState "cultistProneChase", "+14", kAiStateChase, 0, null, null, aiMoveForward, cultThinkChase, "none"; + AIState "cultistProneDodge", "+14", kAiStateMove, 90, null, null, aiMoveDodge, null, "cultistProneChase"; + AIState "cultistTThrow", "+7", kAiStateChase, 120, cultThrowSeqCallback, null, null, null, "cultistTFire"; + AIState "cultistSThrow", "+7", kAiStateChase, 120, cultThrowSeqCallback, null, null, null, "cultistSFire"; + AIState "cultistTsThrow", "+7", kAiStateChase, 120, cultThrowSeqCallback, null, null, null, "cultistTsFire"; + AIState "cultistDThrow", "+7", kAiStateChase, 120, cultThrowSeqCallback, null, null, null, "cultistChase"; + AIState "cultistDThrow2", "+7", kAiStateChase, 120, cultThrowSeqCallback2, null, null, null, "cultistChase"; + AIState "cultistDThrow3C", "+7", kAiStateChase, 120, cultThrowSeqCallback3, null, null, null, "cultistIdle"; + AIState "cultistDThrow3B", "+7", kAiStateChase, 120, cultThrowSeqCallback3, null, null, cultThinkSearch, "cultistDThrow3C"; + AIState "cultistDThrow3A", "+7", kAiStateChase, 120, cultThrowSeqCallback3, null, null, cultThinkSearch, "cultistDThrow3B"; + AIState "cultistDThrow4", "+7", kAiStateChase, 120, cultThrowSeqCallback3, null, null, cultThinkSearch, "cultistDThrow4"; + AIState "cultistSearch", "+9", kAiStateSearch, 1800, null, null, aiMoveForward, cultThinkSearch, "cultistIdle"; + AIState "cultistSFire", "+6", kAiStateChase, 60, ShotSeqCallback, null, null, null, "cultistChase"; + AIState "cultistTFire", "+6", kAiStateChase, 0, TommySeqCallback, null, aiMoveTurn, cultThinkChase, "cultistTFire"; + AIState "cultistTsFire", "+6", kAiStateChase, 0, TeslaSeqCallback, null, aiMoveTurn, cultThinkChase, "cultistChase"; + AIState "cultistSProneFire", "+8", kAiStateChase, 60, ShotSeqCallback, null, null, null, "cultistProneChase"; + AIState "cultistTProneFire", "+8", kAiStateChase, 0, TommySeqCallback, null, aiMoveTurn, cultThinkChase, "cultistTProneFire"; + AIState "cultistTsProneFire", "+8", kAiStateChase, 0, TeslaSeqCallback, null, aiMoveTurn, null, "cultistTsProneFire"; + AIState "cultistTsProneFireFixed", "+8", kAiStateChase, 0, TeslaSeqCallback, null, aiMoveTurn, cultThinkChase, "cultistTsProneFireFixed"; + AIState "cultistRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "cultistDodge"; + AIState "cultistProneRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "cultistProneDodge"; + AIState "cultistTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "cultistDodge"; + AIState "cultistSwimIdle", "+13", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "cultistSwimChase", "+13", kAiStateChase, 0, null, null, aiMoveForward, cultThinkChase, "none"; + AIState "cultistSwimDodge", "+13", kAiStateMove, 90, null, null, aiMoveDodge, null, "cultistSwimChase"; + AIState "cultistSwimGoto", "+13", kAiStateMove, 600, null, null, aiMoveForward, cultThinkGoto, "cultistSwimIdle"; + AIState "cultistSwimSearch", "+13", kAiStateSearch, 1800, null, null, aiMoveForward, cultThinkSearch, "cultistSwimIdle"; + AIState "cultistSSwimFire", "+8", kAiStateChase, 60, ShotSeqCallback, null, null, null, "cultistSwimChase"; + AIState "cultistTSwimFire", "+8", kAiStateChase, 0, TommySeqCallback, null, aiMoveTurn, cultThinkChase, "cultistTSwimFire"; + AIState "cultistTsSwimFire", "+8", kAiStateChase, 0, TeslaSeqCallback, null, aiMoveTurn, cultThinkChase, "cultistTsSwimFire"; + AIState "cultistSwimRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "cultistSwimDodge"; + AIState "gargoyleFIdle", "+0", kAiStateIdle, 0, null, null, null, gargThinkTarget, "none"; + AIState "gargoyleStatueIdle", "+0", kAiStateIdle, 0, null, null, null, null, "none"; + AIState "gargoyleFChase", "+0", kAiStateChase, 0, null, null, gargMoveForward, gargThinkChase, "gargoyleFIdle"; + AIState "gargoyleFGoto", "+0", kAiStateMove, 600, null, null, gargMoveForward, gargThinkGoto, "gargoyleFIdle"; + AIState "gargoyleFSlash", "+6", kAiStateChase, 120, SlashFSeqCallback, null, null, null, "gargoyleFChase"; + AIState "gargoyleFThrow", "+6", kAiStateChase, 120, ThrowFSeqCallback, null, null, null, "gargoyleFChase"; + AIState "gargoyleSThrow", "+6", kAiStateChase, 120, ThrowSSeqCallback, null, gargMoveForward, null, "gargoyleFChase"; + AIState "gargoyleSBlast", "+7", kAiStateChase, 60, BlastSSeqCallback, null, gargMoveSlow, null, "gargoyleFChase"; + AIState "gargoyleFRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "gargoyleFChase"; + AIState "gargoyleFSearch", "+0", kAiStateSearch, 120, null, null, gargMoveForward, gargThinkSearch, "gargoyleFIdle"; + AIState "gargoyleFMorph2", "+-1", kAiStateOther, 0, null, entryFStatue, null, null, "gargoyleFIdle"; + AIState "gargoyleFMorph", "+6", kAiStateOther, 0, null, null, null, null, "gargoyleFMorph2"; + AIState "gargoyleSMorph2", "+-1", kAiStateOther, 0, null, entrySStatue, null, null, "gargoyleFIdle"; + AIState "gargoyleSMorph", "+6", kAiStateOther, 0, null, null, null, null, "gargoyleSMorph2"; + AIState "gargoyleSwoop", "+0", kAiStateOther, 120, null, null, gargMoveSwoop, gargThinkChase, "gargoyleFChase"; + AIState "gargoyleFly", "+0", kAiStateMove, 120, null, null, gargMoveFly, gargThinkChase, "gargoyleFChase"; + AIState "gargoyleTurn", "+0", kAiStateMove, 120, null, null, aiMoveTurn, null, "gargoyleFChase"; + AIState "gargoyleDodgeUp", "+0", kAiStateMove, 60, null, null, gargMoveDodgeUp, null, "gargoyleFChase"; + AIState "gargoyleFDodgeUpRight", "+0", kAiStateMove, 90, null, null, gargMoveDodgeUp, null, "gargoyleFChase"; + AIState "gargoyleFDodgeUpLeft", "+0", kAiStateMove, 90, null, null, gargMoveDodgeUp, null, "gargoyleFChase"; + AIState "gargoyleDodgeDown", "+0", kAiStateMove, 120, null, null, gargMoveDodgeDown, null, "gargoyleFChase"; + AIState "gargoyleFDodgeDownRight", "+0", kAiStateMove, 90, null, null, gargMoveDodgeDown, null, "gargoyleFChase"; + AIState "gargoyleFDodgeDownLeft", "+0", kAiStateMove, 90, null, null, gargMoveDodgeDown, null, "gargoyleFChase"; + AIState "statueFBreakSEQ", "+5", kAiStateOther, 0, null, entryFStatue, null, playStatueBreakSnd, "gargoyleFMorph2"; + AIState "statueSBreakSEQ", "+5", kAiStateOther, 0, null, entrySStatue, null, playStatueBreakSnd, "gargoyleSMorph2"; + AIState "ghostIdle", "+0", kAiStateIdle, 0, null, null, null, ghostThinkTarget, "none"; + AIState "ghostChase", "+0", kAiStateChase, 0, null, null, ghostMoveForward, ghostThinkChase, "ghostIdle"; + AIState "ghostGoto", "+0", kAiStateMove, 600, null, null, ghostMoveForward, ghostThinkGoto, "ghostIdle"; + AIState "ghostSlash", "+6", kAiStateChase, 120, ghostSlashSeqCallback, null, null, null, "ghostChase"; + AIState "ghostThrow", "+6", kAiStateChase, 120, ghostThrowSeqCallback, null, null, null, "ghostChase"; + AIState "ghostBlast", "+6", kAiStateChase, 120, ghostBlastSeqCallback, null, ghostMoveSlow, null, "ghostChase"; + AIState "ghostRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "ghostChase"; + AIState "ghostTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "ghostChase"; + AIState "ghostSearch", "+0", kAiStateSearch, 120, null, null, ghostMoveForward, ghostThinkSearch, "ghostIdle"; + AIState "ghostSwoop", "+0", kAiStateOther, 120, null, null, ghostMoveSwoop, ghostThinkChase, "ghostChase"; + AIState "ghostFly", "+0", kAiStateMove, 0, null, null, ghostMoveFly, ghostThinkChase, "ghostChase"; + AIState "ghostTurn", "+0", kAiStateMove, 120, null, null, aiMoveTurn, null, "ghostChase"; + AIState "ghostDodgeUp", "+0", kAiStateMove, 60, null, null, ghostMoveDodgeUp, null, "ghostChase"; + AIState "ghostDodgeUpRight", "+0", kAiStateMove, 90, null, null, ghostMoveDodgeUp, null, "ghostChase"; + AIState "ghostDodgeUpLeft", "+0", kAiStateMove, 90, null, null, ghostMoveDodgeUp, null, "ghostChase"; + AIState "ghostDodgeDown", "+0", kAiStateMove, 120, null, null, ghostMoveDodgeDown, null, "ghostChase"; + AIState "ghostDodgeDownRight", "+0", kAiStateMove, 90, null, null, ghostMoveDodgeDown, null, "ghostChase"; + AIState "ghostDodgeDownLeft", "+0", kAiStateMove, 90, null, null, ghostMoveDodgeDown, null, "ghostChase"; + AIState "gillBeastIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "gillBeastChase", "+9", kAiStateChase, 0, null, null, aiMoveForward, gillThinkChase, "none"; + AIState "gillBeastDodge", "+9", kAiStateMove, 90, null, null, aiMoveDodge, null, "gillBeastChase"; + AIState "gillBeastGoto", "+9", kAiStateMove, 600, null, null, aiMoveForward, gillThinkGoto, "gillBeastIdle"; + AIState "gillBeastBite", "+6", kAiStateChase, 120, GillBiteSeqCallback, null, null, null, "gillBeastChase"; + AIState "gillBeastSearch", "+9", kAiStateMove, 120, null, null, aiMoveForward, gillThinkSearch, "gillBeastIdle"; + AIState "gillBeastRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "gillBeastDodge"; + AIState "gillBeastSwimIdle", "+10", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "gillBeastSwimChase", "+10", kAiStateChase, 0, null, null, gillMoveSwimChase, gillThinkSwimChase, "none"; + AIState "gillBeastSwimDodge", "+10", kAiStateMove, 90, null, null, aiMoveDodge, null, "gillBeastSwimChase"; + AIState "gillBeastSwimGoto", "+10", kAiStateMove, 600, null, null, aiMoveForward, gillThinkSwimGoto, "gillBeastSwimIdle"; + AIState "gillBeastSwimSearch", "+10", kAiStateSearch, 120, null, null, aiMoveForward, gillThinkSearch, "gillBeastSwimIdle"; + AIState "gillBeastSwimBite", "+7", kAiStateChase, 0, GillBiteSeqCallback, null, null, gillThinkSwimChase, "gillBeastSwimChase"; + AIState "gillBeastSwimRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "gillBeastSwimDodge"; + AIState "gillBeastSwimUnused", "+10", kAiStateOther, 120, null, null, gillMoveSwimUnused, gillThinkSwimChase, "gillBeastSwimChase"; + AIState "gillBeastSwimMoveIn", "+10", kAiStateOther, 0, null, null, gillSwimMoveIn, gillThinkSwimChase, "gillBeastSwimChase"; + AIState "gillBeastSwimTurn", "+10", kAiStateOther, 120, null, null, null, aiMoveTurn, "gillBeastSwimChase"; + AIState "handIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "hand13A3B4", "+0", kAiStateOther, 0, null, null, null, null, "none"; + AIState "handSearch", "+6", kAiStateMove, 600, null, null, aiMoveForward, handThinkSearch, "handIdle"; + AIState "handChase", "+6", kAiStateChase, 0, null, null, aiMoveForward, handThinkChase, "none"; + AIState "handRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "handSearch"; + AIState "handGoto", "+6", kAiStateMove, 1800, null, null, aiMoveForward, handThinkGoto, "handIdle"; + AIState "handJump", "+7", kAiStateChase, 120, HandJumpSeqCallback, null, null, null, "handChase"; + AIState "houndIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "houndSearch", "+8", kAiStateMove, 1800, null, null, aiMoveForward, houndThinkSearch, "houndIdle"; + AIState "houndChase", "+8", kAiStateChase, 0, null, null, aiMoveForward, houndThinkChase, "none"; + AIState "houndRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "houndSearch"; + AIState "houndTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "houndSearch"; + AIState "houndGoto", "+8", kAiStateMove, 600, null, null, aiMoveForward, houndThinkGoto, "houndIdle"; + AIState "houndBite", "+6", kAiStateChase, 60, houndBiteSeqCallback, null, null, null, "houndChase"; + AIState "houndBurn", "+7", kAiStateChase, 60, houndBurnSeqCallback, null, null, null, "houndChase"; + AIState "innocentIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "innocentSearch", "+6", kAiStateSearch, 1800, null, null, aiMoveForward, innocThinkSearch, "innocentIdle"; + AIState "innocentChase", "+6", kAiStateChase, 0, null, null, aiMoveForward, innocThinkChase, "none"; + AIState "innocentRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "innocentChase"; + AIState "innocentTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "innocentChase"; + AIState "innocentGoto", "+6", kAiStateMove, 600, null, null, aiMoveForward, innocThinkGoto, "innocentIdle"; + AIState "podIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "podMove", "+7", kAiStateMove, 3600, null, null, aiMoveTurn, aiPodMove, "podSearch"; + AIState "podSearch", "+0", kAiStateSearch, 3600, null, null, aiMoveTurn, aiPodSearch, "podSearch"; + AIState "podStartChase", "+8", kAiStateChase, 600, podAttack, null, null, null, "podChase"; + AIState "podRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "podChase"; + AIState "podChase", "+6", kAiStateChase, 0, null, null, aiMoveTurn, aiPodChase, "none"; + AIState "tentacleIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "tentaclePlaySound1", "+7", kAiStateOther, 0, podPlaySound1, null, null, null, "tentaclePlaySound1A"; + AIState "tentaclePlaySound1A", "+-1", kAiStateOther, 0, null, null, null, null, "tentacleChase"; + AIState "tentaclePlaySound2", "+8", kAiStateOther, 0, podPlaySound2, null, null, null, "tentaclePlaySound2A"; + AIState "tentaclePlaySound2A", "+-1", kAiStateOther, 0, null, null, null, null, "tentacleIdle"; + AIState "tentacleMove", "+8", kAiStateOther, 3600, null, null, aiMoveTurn, aiPodMove, "tentacleSearch"; + AIState "tentacleSearch", "+0", kAiStateOther, 3600, null, null, aiMoveTurn, aiPodSearch, "none"; + AIState "tentacleStartChase", "+6", kAiStateOther, 120, podExplode, null, null, null, "tentacleChase"; + AIState "tentacleRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "tentacleChase"; + AIState "tentacleChase", "+6", kAiStateChase, 0, null, null, aiMoveTurn, aiPodChase, "none"; + AIState "ratIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "ratSearch", "+7", kAiStateSearch, 1800, null, null, aiMoveForward, ratThinkSearch, "ratIdle"; + AIState "ratChase", "+7", kAiStateChase, 0, null, null, aiMoveForward, ratThinkChase, "none"; + AIState "ratDodge", "+7", kAiStateMove, 0, null, null, null, null, "ratChase"; + AIState "ratRecoil", "+7", kAiStateRecoil, 0, null, null, null, null, "ratDodge"; + AIState "ratGoto", "+7", kAiStateMove, 600, null, null, aiMoveForward, ratThinkGoto, "ratIdle"; + AIState "ratBite", "+6", kAiStateChase, 120, ratBiteSeqCallback, null, null, null, "ratChase"; + AIState "spidIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "spidChase", "+7", kAiStateChase, 0, null, null, aiMoveForward, spidThinkChase, "none"; + AIState "spidDodge", "+7", kAiStateMove, 90, null, null, aiMoveDodge, null, "spidChase"; + AIState "spidGoto", "+7", kAiStateMove, 600, null, null, aiMoveForward, spidThinkGoto, "spidIdle"; + AIState "spidSearch", "+7", kAiStateSearch, 1800, null, null, aiMoveForward, spidThinkSearch, "spidIdle"; + AIState "spidBite", "+6", kAiStateChase, 60, SpidBiteSeqCallback, null, null, null, "spidChase"; + AIState "spidJump", "+8", kAiStateChase, 60, SpidJumpSeqCallback, null, aiMoveForward, null, "spidChase"; + AIState "spidBirth", "+0", kAiStateOther, 60, SpidBirthSeqCallback, null, null, null, "spidIdle"; + AIState "tchernobogIdle", "+0", kAiStateIdle, 0, null, null, null, tchernobogThinkTarget, "none"; + AIState "tchernobogSearch", "+8", kAiStateSearch, 1800, null, null, aiMoveForward, tchernobogThinkSearch, "tchernobogIdle"; + AIState "tchernobogChase", "+8", kAiStateChase, 0, null, null, aiMoveForward, tchernobogThinkChase, "none"; + AIState "tchernobogRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "tchernobogSearch"; + AIState "tchernobogGoto", "+8", kAiStateMove, 600, null, null, aiMoveForward, tchernobogThinkGoto, "tchernobogIdle"; + AIState "tchernobogBurn1", "+6", kAiStateMove, 60, tchernobogBurnSeqCallback, null, null, null, "tchernobogChase"; + AIState "tchernobogBurn2", "+6", kAiStateChase, 60, tchernobogBurnSeqCallback2, null, null, null, "tchernobogChase"; + AIState "tchernobogFireAtk", "+7", kAiStateChase, 60, tchernobogFire, null, null, null, "tchernobogChase"; + AIState "tchernobogTurn", "+8", kAiStateChase, 60, null, null, aiMoveTurn, null, "tchernobogChase"; + AIState "zombieAIdle", "+0", kAiStateIdle, 0, null, entryAIdle, null, aiThinkTarget, "none"; + AIState "zombieAChase", "+8", kAiStateChase, 0, null, null, aiMoveForward, zombaThinkChase, "none"; + AIState "zombieAPonder", "+0", kAiStateOther, 0, null, null, aiMoveTurn, zombaThinkPonder, "none"; + AIState "zombieAGoto", "+8", kAiStateMove, 1800, null, null, aiMoveForward, zombaThinkGoto, "zombieAIdle"; + AIState "zombieAHack", "+6", kAiStateChase, 80, HackSeqCallback, null, null, null, "zombieAPonder"; + AIState "zombieASearch", "+8", kAiStateSearch, 1800, null, null, aiMoveForward, zombaThinkSearch, "zombieAIdle"; + AIState "zombieARecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "zombieAPonder"; + AIState "zombieATeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "zombieAPonder"; + AIState "zombieARecoil2", "+1", kAiStateRecoil, 360, null, null, null, null, "zombieAStand"; + AIState "zombieAStand", "+11", kAiStateMove, 0, StandSeqCallback, null, null, null, "zombieAPonder"; + AIState "zombieEIdle", "+12", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "zombieEUp2", "+0", kAiStateMove, 1, null, entryEZombie, null, null, "zombieASearch"; + AIState "zombieEUp", "+9", kAiStateMove, 180, null, entryEStand, null, null, "zombieEUp2"; + AIState "zombie2Idle", "+0", kAiStateIdle, 0, null, entryAIdle, null, myThinkTarget, "none"; + AIState "zombie2Search", "+8", kAiStateSearch, 1800, null, null, null, myThinkSearch, "zombie2Idle"; + AIState "zombieSIdle", "+10", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "zombieEStand", "+11", kAiStateOther, 0, StandSeqCallback, entryEZombie, null, null, "zombieAPonder"; + AIState "zombieFIdle", "+0", kAiStateIdle, 0, null, null, null, aiThinkTarget, "none"; + AIState "zombieFChase", "+8", kAiStateChase, 0, null, null, aiMoveForward, zombfThinkChase, "none"; + AIState "zombieFGoto", "+8", kAiStateMove, 600, null, null, aiMoveForward, zombfThinkGoto, "zombieFIdle"; + AIState "zombieFDodge", "+8", kAiStateMove, 0, null, null, aiMoveDodge, zombfThinkChase, "zombieFChase"; + AIState "zombieFHack", "+6", kAiStateChase, 120, zombfHackSeqCallback, null, null, null, "zombieFChase"; + AIState "zombieFPuke", "+9", kAiStateChase, 120, PukeSeqCallback, null, null, null, "zombieFChase"; + AIState "zombieFThrow", "+6", kAiStateChase, 120, ThrowSeqCallback, null, null, null, "zombieFChase"; + AIState "zombieFSearch", "+8", kAiStateSearch, 1800, null, null, aiMoveForward, zombfThinkSearch, "zombieFIdle"; + AIState "zombieFRecoil", "+5", kAiStateRecoil, 0, null, null, null, null, "zombieFChase"; + AIState "zombieFTeslaRecoil", "+4", kAiStateRecoil, 0, null, null, null, null, "zombieFChase"; + AIState "genPatrolState_0", "+0", kAiStatePatrolWaitL, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_1", "+7", kAiStatePatrolWaitL, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_2", "+9", kAiStatePatrolMoveL, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_3", "+8", kAiStatePatrolMoveL, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_4", "+0", kAiStatePatrolMoveL, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_5", "+6", kAiStatePatrolMoveL, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_6", "+7", kAiStatePatrolMoveL, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_7", "+3", kAiStatePatrolMoveL, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_8", "+9", kAiStatePatrolTurnL, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_9", "+8", kAiStatePatrolTurnL, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_10", "+0", kAiStatePatrolTurnL, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_11", "+6", kAiStatePatrolTurnL, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_12", "+7", kAiStatePatrolTurnL, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_13", "+3", kAiStatePatrolTurnL, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_14", "+0", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_15", "+10", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_16", "+13", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_17", "+17", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_18", "+8", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_19", "+9", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_20", "+2", kAiStatePatrolWaitW, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_21", "+0", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_22", "+10", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_23", "+13", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_24", "+8", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_25", "+9", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_26", "+7", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_27", "+6", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_28", "+5", kAiStatePatrolMoveW, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_29", "+0", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_30", "+10", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_31", "+13", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_32", "+8", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_33", "+9", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_34", "+7", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_35", "+6", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_36", "+5", kAiStatePatrolTurnW, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_37", "+17", kAiStatePatrolWaitC, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_38", "+11", kAiStatePatrolWaitC, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_39", "+10", kAiStatePatrolWaitC, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_40", "+14", kAiStatePatrolWaitC, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_41", "+1", kAiStatePatrolWaitC, 0, null, null, null, aiPatrolThink, "none"; + AIState "genPatrolState_42", "+14", kAiStatePatrolMoveC, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_43", "+10", kAiStatePatrolMoveC, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_44", "+9", kAiStatePatrolMoveC, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_45", "+4", kAiStatePatrolMoveC, 0, null, null, aiPatrolMove, aiPatrolThink, "none"; + AIState "genPatrolState_46", "+14", kAiStatePatrolTurnC, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_47", "+10", kAiStatePatrolTurnC, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_48", "+9", kAiStatePatrolTurnC, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + AIState "genPatrolState_49", "+4", kAiStatePatrolTurnC, 0, null, aiPatrolRandGoalAng, aiPatrolTurn, aiPatrolThink, "none"; + } +}