aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorEugene Sandulenko2018-03-11 17:52:02 +0100
committerEugene Sandulenko2018-03-11 17:52:39 +0100
commitd15199aef5f4620fb0144ab9545a4a751fe869cf (patch)
tree33266c1de9cb7f8fa3a0d09a701e72578ec94ba3 /engines/bladerunner
parent9ada4b0beac340377452220d3f17acea9e3e29b7 (diff)
downloadscummvm-rg350-d15199aef5f4620fb0144ab9545a4a751fe869cf.tar.gz
scummvm-rg350-d15199aef5f4620fb0144ab9545a4a751fe869cf.tar.bz2
scummvm-rg350-d15199aef5f4620fb0144ab9545a4a751fe869cf.zip
BLADERUNNER: Added most of Steele actor
ChangeAnimationMode is NOT done
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/module.mk1
-rw-r--r--engines/bladerunner/script/ai/steele.cpp1796
-rw-r--r--engines/bladerunner/script/ai_script.cpp1
-rw-r--r--engines/bladerunner/script/ai_script.h8
-rw-r--r--engines/bladerunner/script/script.cpp7
-rw-r--r--engines/bladerunner/script/script.h2
6 files changed, 1813 insertions, 2 deletions
diff --git a/engines/bladerunner/module.mk b/engines/bladerunner/module.mk
index f5bfd2efae..59d6764e8f 100644
--- a/engines/bladerunner/module.mk
+++ b/engines/bladerunner/module.mk
@@ -81,6 +81,7 @@ MODULE_OBJS = \
script/ai/runciter.o \
script/ai/sergeant_walls.o \
script/ai/shoeshine_man.o \
+ script/ai/steele.o \
script/ai/transient.o \
script/ai/tyrell_guard.o \
script/ai/zuben.o \
diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp
new file mode 100644
index 0000000000..5576e78fe6
--- /dev/null
+++ b/engines/bladerunner/script/ai/steele.cpp
@@ -0,0 +1,1796 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "bladerunner/script/ai_script.h"
+
+namespace BladeRunner {
+
+AIScriptSteele::AIScriptSteele(BladeRunnerEngine *vm) : AIScriptBase(vm) {
+ _flag = false;
+ _var1 = 0;
+ _var2 = 0;
+}
+
+void AIScriptSteele::Initialize() {
+ _animationFrame = 0;
+ _animationState = 0;
+ _animationStateNext = 0;
+ _animationNext = 0;
+
+ _flag = false;
+ _var1 = 0;
+ _var2 = 0;
+
+ Actor_Put_In_Set(kActorSteele, kSetFreeSlotG);
+ Actor_Set_At_Waypoint(kActorSteele, 39, 0);
+ Actor_Set_Goal_Number(kActorSteele, 0);
+ Actor_Clue_Acquire(kActorSteele, 178, 1, -1);
+}
+
+bool AIScriptSteele::Update() {
+ if (Global_Variable_Query(14) <= 5 || Actor_Clue_Query(kActorSteele, 239)) {
+ switch (Global_Variable_Query(kVariableChapter)) {
+ case 1:
+ if (Game_Flag_Query(182) == 1 && Game_Flag_Query(183) == 1) {
+ Actor_Set_Goal_Number(kActorSteele, 3);
+ return true;
+ } else if (Game_Flag_Query(176) == 1 && Game_Flag_Query(184) == 1) {
+ Actor_Set_Goal_Number(kActorSteele, 6);
+ return true;
+ } else if (Game_Flag_Query(178) == 1 && Game_Flag_Query(185) == 1) {
+ Actor_Set_Goal_Number(kActorSteele, 10);
+ return true;
+ } else if (Actor_Query_Goal_Number(kActorSteele)
+ || Game_Flag_Query(182)
+ || Player_Query_Current_Scene() == kSceneRC01) {
+ if (Actor_Query_Goal_Number(kActorSteele) != 11) {
+ break; // go to after switch
+ }
+ Actor_Set_Goal_Number(kActorSteele, 0);
+ return true;
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 1);
+ Game_Flag_Set(183);
+ return true;
+ }
+
+ case 2:
+ if (Game_Flag_Query(451) != 1 || Game_Flag_Query(457)) {
+ if (Actor_Query_Goal_Number(kActorSteele) == 110 && Game_Flag_Query(456) == 1) {
+ Actor_Set_Goal_Number(kActorSteele, 111);
+ return true;
+ } else if (Game_Flag_Query(460) || Actor_Query_Goal_Number(kActorSteele) != 112) {
+ if (Actor_Query_Goal_Number(kActorSteele) != 190) {
+ break; // go to after switch
+ }
+ Game_Flag_Reset(460);
+ Actor_Set_Goal_Number(kActorSteele, 112);
+ return true;
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 113);
+ Game_Flag_Set(460);
+ return true;
+ }
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 110);
+ Game_Flag_Set(457);
+ return true;
+ }
+
+ case 3:
+ if (Global_Variable_Query(kVariableChapter) != 3) {
+ break; // go to after switch
+ }
+ if (Actor_Query_Goal_Number(kActorSteele) < 205)
+ Actor_Set_Goal_Number(kActorSteele, 205);
+
+ if (Actor_Query_Goal_Number(kActorSteele) == 251
+ && Player_Query_Current_Scene() == kSceneNR01
+ && Actor_Query_In_Between_Two_Actors(0, 1, 2)) {
+ Actor_Set_Goal_Number(kActorSteele, 255);
+ }
+ if (Actor_Query_Goal_Number(kActorSteele) == 213) {
+ Actor_Set_Goal_Number(kActorSteele, 214);
+ return true;
+ } else if (Actor_Query_Goal_Number(kActorSteele) == 261) {
+ Actor_Set_Goal_Number(kActorSteele, 262);
+ return true;
+ } else {
+ if (Actor_Query_Goal_Number(kActorSteele) != 271) {
+ break; // go to after switch
+ }
+ Actor_Set_Goal_Number(kActorSteele, 270);
+ return true;
+ }
+
+ case 4:
+ if (Actor_Query_Goal_Number(kActorSteele) < 300) {
+ Actor_Set_Goal_Number(kActorSteele, 300);
+ }
+ break; // go to after switch
+
+ case 5:
+ if (Game_Flag_Query(653) != 1 || Actor_Query_Goal_Number(kActorSteele) >= 400) {
+ break; // go to after switch
+ }
+ Actor_Set_Goal_Number(kActorSteele, 400);
+ return true;
+
+ default:
+ break; // go to after switch
+ }
+
+ if (Actor_Query_Goal_Number(kActorSteele) == 599 && !Actor_Query_In_Set(kActorSteele, kSetFreeSlotI)) {
+ if (Actor_Query_Which_Set_In(kActorMcCoy) != Actor_Query_Which_Set_In(kActorSteele)) {
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 41, 100);
+ AI_Movement_Track_Repeat(kActorSteele);
+ }
+ }
+ return false;
+ } else {
+ Actor_Clue_Acquire(kActorSteele, 239, 1, -1);
+ return true;
+ }
+}
+
+void AIScriptSteele::TimerExpired(int timer) {
+ if (Actor_Query_Goal_Number(kActorSteele) != 210 || timer || Player_Query_Current_Scene() != kSceneNR11) {
+ if (Actor_Query_Goal_Number(kActorSteele) != 210 || timer) {
+ if (timer == 1) {
+ int goal = Actor_Query_Goal_Number(kActorSteele);
+
+ AI_Countdown_Timer_Reset(kActorSteele, 1);
+
+ if (goal == 415) {
+ Actor_Set_Goal_Number(kActorSteele, 416);
+ } else if (goal == 416) {
+ Actor_Set_Goal_Number(kActorSteele, 419);
+ }
+ }
+ return; // false;
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 211);
+ return; // true;
+ }
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 212);
+ return; // true;
+ }
+}
+
+void AIScriptSteele::CompletedMovementTrack() {
+ switch (Actor_Query_Goal_Number(kActorSteele)) {
+ case 1:
+ Actor_Set_Goal_Number(kActorSteele, 2);
+ break;
+
+ case 2:
+ Actor_Set_Goal_Number(kActorSteele, 3);
+ break;
+
+ case 3:
+ if (Random_Query(1, 3) == 1) {
+ Actor_Clues_Transfer_New_To_Mainframe(kActorSteele);
+ Actor_Clues_Transfer_New_From_Mainframe(kActorSteele);
+ }
+
+ if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) < 75)
+ Set_Score(kActorSteele, Random_Query(2, 5) + Query_Score(kActorMcCoy));
+
+ Actor_Set_Goal_Number(kActorSteele, 4);
+ break;
+
+ case 4:
+ Actor_Set_Goal_Number(kActorSteele, 5);
+ break;
+
+ case 5:
+ Actor_Set_Goal_Number(kActorSteele, 6);
+ break;
+
+ case 6:
+ if (Random_Query(1, 3) == 1) {
+ Actor_Clues_Transfer_New_To_Mainframe(kActorSteele);
+ Actor_Clues_Transfer_New_From_Mainframe(kActorSteele);
+ }
+
+ if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) < 75)
+ Set_Score(kActorSteele, Random_Query(2, 5) + Query_Score(kActorMcCoy));
+
+ Actor_Set_Goal_Number(kActorSteele, 7);
+ break;
+
+ case 7:
+ Actor_Set_Goal_Number(kActorSteele, 8);
+ break;
+
+ case 8:
+ Actor_Set_Goal_Number(kActorSteele, 9);
+ break;
+
+ case 9:
+ Actor_Set_Goal_Number(kActorSteele, 10);
+ break;
+
+ case 10:
+ Actor_Set_Goal_Number(kActorSteele, 11);
+ break;
+
+ case 100:
+ if (Actor_Query_Goal_Number(kActorSteele) == 100) {
+ Player_Set_Combat_Mode(kActorMcCoy);
+
+ if (Actor_Query_Goal_Number(kActorIzo) != 199) {
+ if (Actor_Query_In_Between_Two_Actors(kActorMcCoy, kActorSteele, kActorIzo)) {
+ Actor_Set_Goal_Number(kActorSteele, 125);
+ } else if (Game_Flag_Query(44)) {
+ Actor_Set_Goal_Number(kActorSteele, 120);
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 121);
+ }
+ }
+ }
+ break;
+
+ case 111:
+ Actor_Set_Goal_Number(kActorSteele, 112);
+ break;
+
+ case 113:
+ Actor_Set_Goal_Number(kActorSteele, 190);
+ break;
+
+ case 241:
+ Actor_Set_Goal_Number(kActorSteele, 242);
+ break;
+
+ case 423:
+ case 424:
+ case 425:
+ case 426:
+ case 427:
+ case 428:
+ case 429:
+ case 430:
+ case 431:
+ Actor_Set_Goal_Number(kActorSteele, 423);
+ break;
+
+ case 432:
+ Player_Set_Combat_Mode(kActorMcCoy);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 2265, 11);
+ Actor_Says(kActorSteele, 640, 58);
+ Actor_Says(kActorMcCoy, 2270, 12);
+ Actor_Says(kActorSteele, 650, 59);
+ Actor_Says(kActorMcCoy, 2275, 16);
+ Actor_Says(kActorMcCoy, 2280, 15);
+ Actor_Says(kActorSteele, 660, 60);
+ Actor_Says(kActorSteele, 670, 59);
+ Actor_Set_Goal_Number(kActorSteele, 433);
+ Player_Set_Combat_Mode(kActorSteele);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -731.0f, 8.26f, -657.0f, 0, 0, 0, 0);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Looping_Sounds(1);
+ Game_Flag_Set(578);
+ Set_Enter(kSetKP07, kSetKP04);
+ break;
+
+ default:
+ break;
+ }
+ return; //true;
+}
+
+void AIScriptSteele::ReceivedClue(int clueId, int fromActorId) {
+ //return false;
+}
+
+void AIScriptSteele::ClickedByPlayer() {
+ int goal = Actor_Query_Goal_Number(kActorSteele);
+
+ if (goal == 599) {
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 8630, 14);
+ return; //true;
+ }
+
+ if (goal > 399 || Global_Variable_Query(kVariableChapter) > 2) {
+ return; //true;
+ }
+
+ if (goal - 241 <= 9) {
+ if (goal == 241) {
+ Actor_Set_Goal_Number(kActorSteele, 242);
+ return; //true;
+ }
+
+ if (goal == 250) {
+ return; //true;
+ }
+ }
+
+ AI_Movement_Track_Pause(1);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+
+ switch (Random_Query(1, 3)) {
+ case 1:
+ Actor_Says(kActorMcCoy, 3970, 15);
+ Actor_Says(kActorSteele, 2700, 15);
+ break;
+
+ case 2:
+ Actor_Says(kActorMcCoy, 3970, 15);
+ Actor_Says(kActorSteele, 2060, 15);
+ break;
+
+ case 3:
+ Actor_Says(kActorMcCoy, 3970, 15);
+ Actor_Says(kActorSteele, 1750, 15);
+ break;
+ }
+ AI_Movement_Track_Unpause(1);
+
+ return; //false;
+}
+
+void AIScriptSteele::EnteredScene(int sceneId) {
+ if (Actor_Query_Goal_Number(kActorSteele) == 2) {
+ if (Game_Flag_Query(147) || Random_Query(1, 3) != 1) {
+ if (Game_Flag_Query(148) || Random_Query(1, 3) != 1) {
+ if (!Game_Flag_Query(149) && Random_Query(1, 20) == 1) {
+ Actor_Clue_Acquire(kActorSteele, 7, 1, -1);
+ Game_Flag_Set(149);
+
+ if (Game_Flag_Query(709))
+ Item_Remove_From_World(98);
+ }
+ } else {
+ Actor_Clue_Acquire(kActorSteele, 6, 1, -1);
+ Game_Flag_Set(148);
+
+ if (Game_Flag_Query(709))
+ Item_Remove_From_World(79);
+ }
+ } else {
+ Actor_Clue_Acquire(kActorSteele, 8, 1, -1);
+ Game_Flag_Set(147);
+
+ if (Game_Flag_Query(709))
+ Item_Remove_From_World(82);
+
+ Global_Variable_Increment(14, 1);
+ }
+ }
+
+ if (Actor_Query_Goal_Number(kActorSteele) != 5
+ || !Actor_Query_In_Set(kActorSteele, kSetCT03_CT04)
+ || Game_Flag_Query(169) != 1
+ || Game_Flag_Query(170)
+ || Game_Flag_Query(171)) {
+ return; //false;
+ }
+
+ Game_Flag_Set(171);
+
+ return; //true;
+}
+
+void AIScriptSteele::OtherAgentEnteredThisScene(int otherActorId) {
+ // return false;
+}
+
+void AIScriptSteele::OtherAgentExitedThisScene(int otherActorId) {
+ // return false;
+}
+
+void AIScriptSteele::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
+ if (!otherActorId && Actor_Query_Goal_Number(kActorSteele) == 410)
+ Actor_Set_Goal_Number(kActorSteele, 418);
+}
+
+void AIScriptSteele::ShotAtAndMissed() {
+ // return false;
+}
+
+bool AIScriptSteele::ShotAtAndHit() {
+ if (Actor_Query_Goal_Number(kActorSteele) == 251)
+ Actor_Set_Goal_Number(kActorSteele, 271);
+
+ if (/* !a1 && */ Actor_Query_In_Set(kActorSteele, kSetHF06))
+ Non_Player_Actor_Combat_Mode_On(1, 3, 1, 0, 15, 4, 7, 8, 0, 0, 100, 25, 300, 0);
+
+ return false;
+}
+
+void AIScriptSteele::Retired(int byActorId) {
+ Game_Flag_Set(646);
+
+ if (Actor_Query_Goal_Number(kActorSteele) == 450) {
+ Scene_Exits_Enable();
+ Game_Flag_Set(484);
+ }
+
+ if (Actor_Query_Goal_Number(kActorSteele) != 599) {
+ Actor_Change_Animation_Mode(kActorSteele, 49);
+ Actor_Set_Goal_Number(kActorSteele, 599);
+ }
+}
+
+int AIScriptSteele::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
+ if (otherActorId != kActorMcCoy)
+ return 0;
+
+ switch (clueId) {
+ case 202:
+ case 223:
+ case 224:
+ case 226:
+ case 227:
+ case 228:
+ case 231:
+ case 241:
+ case 242:
+ return 5;
+
+ case 212:
+ case 221:
+ case 230:
+ return 0;
+
+ case 215:
+ return -4;
+
+ case 216:
+ case 217:
+ case 218:
+ case 219:
+ case 220:
+ return -5;
+
+ case 222:
+ return 4;
+
+ case 239:
+ return -3;
+
+ case 240:
+ return -2;
+ }
+
+ return 0;
+}
+
+double AIScriptSteele::comp_distance(int actorId, float a5, float a6, int a1, float a2, float a3, float a4) {
+ float actorZ;
+ float actorX;
+ float actorY;
+
+ Actor_Query_XYZ(actorId, &actorX, &actorY, &actorZ);
+ return sqrt((a4 - actorZ) * (a4 - actorZ) + (a2 - actorX) * (a2 - actorX) + (a3 - actorY) * (a3 - actorY));
+}
+
+bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
+ if (currentGoalNumber == 599)
+ return false;
+
+ switch (newGoalNumber) {
+ case 1:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 12, 5);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 2:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 61, 30);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 3:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 35, 45);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 4:
+ AI_Movement_Track_Flush(kActorSteele);
+ Game_Flag_Set(184);
+ Game_Flag_Reset(183);
+ AI_Movement_Track_Append(kActorSteele, 39, 45);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 5:
+ AI_Movement_Track_Flush(kActorSteele);
+ if (Random_Query(1, 10) == 1) {
+ AI_Movement_Track_Append(kActorSteele, 63, 20);
+ } else {
+ AI_Movement_Track_Append(kActorSteele, 64, 10);
+ }
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 6:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 35, 45);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 7:
+ AI_Movement_Track_Flush(kActorSteele);
+ Game_Flag_Set(185);
+ Game_Flag_Reset(184);
+ AI_Movement_Track_Append(kActorSteele, 39, 45);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 8:
+ AI_Movement_Track_Flush(kActorSteele);
+ if (Random_Query(1, 2) == 1) {
+ AI_Movement_Track_Append(kActorSteele, 19, 10);
+ } else {
+ AI_Movement_Track_Append(kActorSteele, 35, 30);
+ }
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 9:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 62, 1);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 10:
+ AI_Movement_Track_Flush(kActorSteele);
+ Game_Flag_Reset(185);
+ AI_Movement_Track_Append(kActorSteele, 39, 30);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 11:
+ Actor_Clue_Acquire(kActorSteele, kClueGrigorianInterviewA, 1, kActorGrigorian);
+ if (Game_Flag_Query(44)) {
+ Actor_Clue_Acquire(kActorSteele, kClueGrigorianInterviewB1, 1, kActorGrigorian);
+ } else {
+ Actor_Clue_Acquire(kActorSteele, kClueGrigorianInterviewB2, 1, kActorGrigorian);
+ }
+ Actor_Set_Goal_Number(kActorSteele, 0);
+ return true;
+ case 100:
+ AI_Movement_Track_Flush(kActorSteele);
+ if (Game_Flag_Query(44)) {
+ AI_Movement_Track_Append_Run(kActorSteele, 202, 0);
+ AI_Movement_Track_Append_Run(kActorSteele, 203, 0);
+ } else {
+ AI_Movement_Track_Append(kActorSteele, 174, 0);
+ AI_Movement_Track_Append_Run(kActorSteele, 175, 0);
+ }
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 110:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 192, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 111:
+ Loop_Actor_Walk_To_XYZ(kActorSteele, -187.82f, 0.08f, 1460.74f, 0, 0, 0, 0);
+ Actor_Face_Heading(kActorSteele, 802, 0);
+ Loop_Actor_Travel_Stairs(kActorSteele, 10, 0, 0);
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 35, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 112:
+ if (Random_Query(1, 2) == 1) {
+ Actor_Clues_Transfer_New_To_Mainframe(kActorSteele);
+ Actor_Clues_Transfer_New_From_Mainframe(kActorSteele);
+ }
+ if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) < 75) {
+ Set_Score(kActorSteele, Random_Query(2, 5) + Query_Score(kActorMcCoy));
+ }
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 35, Random_Query(45, 120));
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 113:
+ AI_Movement_Track_Flush(kActorSteele);
+ if (Random_Query(1, 5) == 1) {
+ AI_Movement_Track_Append(kActorSteele, 222, 0);
+ AI_Movement_Track_Append_With_Facing(kActorSteele, 223, 3, 973);
+ AI_Movement_Track_Append(kActorSteele, 224, 5);
+ AI_Movement_Track_Append(kActorSteele, 216, 5);
+ AI_Movement_Track_Append(kActorSteele, 217, 0);
+ AI_Movement_Track_Append(kActorSteele, 218, 0);
+ AI_Movement_Track_Append(kActorSteele, 210, 0);
+ AI_Movement_Track_Append(kActorSteele, 211, 0);
+ AI_Movement_Track_Append(kActorSteele, 204, 0);
+ AI_Movement_Track_Append(kActorSteele, 205, 0);
+ AI_Movement_Track_Append(kActorSteele, 206, 0);
+ AI_Movement_Track_Append(kActorSteele, 39, 20);
+ AI_Movement_Track_Append(kActorSteele, 35, 60);
+ AI_Movement_Track_Append(kActorSteele, 39, 20);
+ AI_Movement_Track_Append(kActorSteele, 228, 0);
+ AI_Movement_Track_Append(kActorSteele, 229, 10);
+ AI_Movement_Track_Repeat(kActorSteele);
+ } else {
+ if (Random_Query(1, 3) == 1) {
+ AI_Movement_Track_Append(kActorSteele, 232, 0);
+ AI_Movement_Track_Append(kActorSteele, 233, 0);
+ AI_Movement_Track_Append(kActorSteele, 234, 3);
+ AI_Movement_Track_Append(kActorSteele, 237, 0);
+ AI_Movement_Track_Append(kActorSteele, 238, 0);
+ AI_Movement_Track_Append(kActorSteele, 239, 0);
+ AI_Movement_Track_Append(kActorSteele, 240, 10);
+ AI_Movement_Track_Append(kActorSteele, 39, 120);
+ AI_Movement_Track_Append(kActorSteele, 243, 0);
+ AI_Movement_Track_Append(kActorSteele, 244, 10);
+ } else {
+ AI_Movement_Track_Append(kActorSteele, 248, 0);
+ AI_Movement_Track_Append(kActorSteele, 249, 0);
+ AI_Movement_Track_Append(kActorSteele, 250, 10);
+ AI_Movement_Track_Append(kActorSteele, 253, 0);
+ AI_Movement_Track_Append_With_Facing(kActorSteele, 254, 3, 1015);
+ AI_Movement_Track_Append_With_Facing(kActorSteele, 255, 2, 1015);
+ AI_Movement_Track_Append_With_Facing(kActorSteele, 256, 3, 1015);
+ AI_Movement_Track_Append(kActorSteele, 257, 0);
+ AI_Movement_Track_Append(kActorSteele, 39, 30);
+ AI_Movement_Track_Append(kActorSteele, 35, 120);
+ AI_Movement_Track_Append(kActorSteele, 39, 30);
+ }
+ AI_Movement_Track_Repeat(kActorSteele);
+ }
+ return true;
+ case 120:
+ Actor_Force_Stop_Walking(kActorMcCoy);
+ Sound_Play(27, 100, 0, 0, 50);
+ Actor_Set_Goal_Number(kActorIzo, 199);
+ Actor_Change_Animation_Mode(kActorMcCoy, 0);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Loop_Actor_Walk_To_Actor(kActorSteele, 0, 48, 0, 1);
+ Actor_Says(kActorSteele, 1860, 3);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 4825, 18);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 1870, 3);
+ Actor_Says(kActorSteele, 1880, 3);
+ Actor_Says(kActorMcCoy, 4830, 13);
+ Actor_Says(kActorSteele, 1890, 3);
+ Actor_Says(kActorSteele, 1900, 3);
+ Actor_Face_Actor(kActorSteele, kActorIzo, 1);
+ Actor_Says(kActorSteele, 1910, 3);
+ Actor_Says(kActorSteele, 1920, 3);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 1930, 3);
+ Actor_Set_Goal_Number(kActorSteele, 130);
+ Player_Gains_Control();
+ return true;
+ case 121:
+ Actor_Force_Stop_Walking(kActorMcCoy);
+ Actor_Face_Actor(kActorSteele, kActorIzo, 1);
+ Actor_Change_Animation_Mode(kActorIzo, 0);
+ Actor_Face_Actor(kActorIzo, kActorSteele, 1);
+ Actor_Says_With_Pause(kActorSteele, 2010, 0.0, 4);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ Loop_Actor_Walk_To_Actor(kActorSteele, kActorIzo, 60, 0, 0);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ _animationState = 23;
+ _animationFrame = 0;
+ Actor_Says(kActorIzo, 660, 3);
+ Actor_Says_With_Pause(kActorSteele, 2020, 0.0f, 4);
+ Actor_Says_With_Pause(kActorSteele, 2030, 0.0f, 4);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ Actor_Says(kActorIzo, 670, 3);
+ Actor_Says(kActorSteele, 2040, 4);
+ Actor_Says(kActorIzo, 680, 3);
+ Actor_Says(kActorSteele, 2050, 3);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 2060, 3);
+ Actor_Says(kActorMcCoy, 4845, 3);
+ Actor_Says(kActorSteele, 2070, 3);
+ Actor_Says(kActorSteele, 2080, 3);
+ Actor_Face_Actor(kActorSteele, kActorIzo, 1);
+ Actor_Says(kActorSteele, 2090, 3);
+ Actor_Says_With_Pause(kActorSteele, 2100, 1.0f, 3);
+ Actor_Says(kActorIzo, 690, 3);
+ Actor_Says(kActorSteele, 2110, 3);
+ Actor_Says(kActorSteele, 2120, 3);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 2140, 3);
+ Actor_Says(kActorMcCoy, 4850, 3);
+ Actor_Says(kActorSteele, 2150, 3);
+ Actor_Set_Goal_Number(kActorIzo, 120);
+ Actor_Set_Goal_Number(kActorSteele, 130);
+ Actor_Set_Goal_Number(kActorSteele, 0);
+ return true;
+ case 125:
+ Actor_Force_Stop_Walking(kActorMcCoy);
+ Actor_Set_Goal_Number(kActorIzo, 114);
+ Actor_Says(kActorSteele, 1940, 3);
+ Loop_Actor_Walk_To_Actor(kActorSteele, 0, 60, 0, 1);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorSteele, 1950, 3);
+ Actor_Says(kActorMcCoy, 4835, 14);
+ Actor_Says(kActorSteele, 1980, 3);
+ Actor_Says(kActorMcCoy, 4840, 15);
+ Actor_Says(kActorSteele, 1990, 3);
+ Actor_Says(kActorSteele, 2000, 3);
+ Actor_Set_Goal_Number(kActorSteele, 130);
+ Scene_Exits_Enable();
+ return true;
+ case 126:
+ return true;
+ case 130:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 174, 0);
+ AI_Movement_Track_Append(kActorSteele, 35, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 200:
+ AI_Movement_Track_Flush(kActorSteele);
+ return true;
+ case 205:
+ if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) < 75) {
+ Set_Score(kActorSteele, Random_Query(2, 5) + Query_Score(kActorMcCoy));
+ }
+ if (Game_Flag_Query(702)) {
+ Game_Flag_Set(643);
+ }
+ AI_Movement_Track_Flush(kActorSteele);
+ Actor_Put_In_Set(kActorSteele, kSetFreeSlotC);
+ Actor_Set_At_Waypoint(kActorSteele, 35, 0);
+ return true;
+ case 210:
+ AI_Countdown_Timer_Reset(kActorSteele, 0);
+ AI_Countdown_Timer_Start(kActorSteele, 0, 15);
+ return true;
+ case 211:
+ AI_Countdown_Timer_Reset(kActorSteele, 0);
+ return true;
+ case 212:
+ if (comp_distance(kActorMcCoy, -4.0, 0.33f, 0.0f, 100.0f, 0.33f, -4.0f) < 48.0f) {
+ Loop_Actor_Walk_To_XYZ(0, 32.0f, 0.33f, 17.0f, 0, 0, 0, 0);
+ }
+ AI_Countdown_Timer_Reset(kActorSteele, 0);
+ Player_Loses_Control();
+ if (Actor_Query_Goal_Number(kActorDektora) == 250) {
+ Async_Actor_Walk_To_XYZ(kActorMcCoy, -15.53f, 0.33f, 73.49f, 0, 0);
+ }
+ Actor_Put_In_Set(kActorSteele, kSetNR11);
+ Actor_Set_At_XYZ(kActorSteele, 100.0f, -51.56f, 0.0, 0);
+ _animationState = 10;
+ _animationFrame = 0;
+ return true;
+ case 213:
+ case 216:
+ case 271:
+ return true;
+ case 214:
+ Player_Gains_Control();
+ switch (Actor_Query_Goal_Number(kActorDektora)) {
+ case 250:
+ Actor_Face_Heading(kActorMcCoy, 954, 0);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ Delay(2000);
+ Actor_Says(kActorSteele, 1700, 58);
+ Actor_Says(kActorMcCoy, 3800, 3);
+ Actor_Says(kActorSteele, 1710, 59);
+ Actor_Set_Goal_Number(kActorSteele, 215);
+ break;
+ case 260:
+ Actor_Face_Actor(kActorSteele, kActorDektora, 1);
+ Actor_Says(kActorSteele, 1790, 3);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorMcCoy, 3830, 17);
+ Actor_Says(kActorSteele, 1800, 17);
+ Actor_Says(kActorMcCoy, 3835, 18);
+ Actor_Says(kActorSteele, 1810, 16);
+ Game_Flag_Set(591);
+ Actor_Set_Goal_Number(kActorDektora, 599);
+ Actor_Set_Goal_Number(kActorSteele, 275);
+ break;
+ case 274:
+ Actor_Modify_Friendliness_To_Other(kActorSteele, kActorMcCoy, 6);
+ Actor_Says(kActorSteele, 1750, 12);
+ Actor_Says(kActorMcCoy, 3815, 19);
+ Actor_Says(kActorSteele, 1760, 13);
+ Actor_Says(kActorMcCoy, 3820, 18);
+ Actor_Says(kActorSteele, 1770, 14);
+ Actor_Says(kActorSteele, 1780, 15);
+ Actor_Says(kActorMcCoy, 3825, 14);
+ Game_Flag_Set(591);
+ Actor_Set_Goal_Number(kActorDektora, 599);
+ Actor_Set_Goal_Number(kActorSteele, 275);
+ }
+ return true;
+ case 215:
+ Game_Flag_Set(635);
+ Actor_Change_Animation_Mode(kActorSteele, 6);
+ Scene_Exits_Disable();
+ return true;
+ case 230:
+ AI_Movement_Track_Flush(kActorSteele);
+ Actor_Put_In_Set(kActorSteele, kSetNR01);
+ Actor_Set_At_XYZ(kActorSteele, 94.03f, 23.88f, -794.46f, 685);
+ return true;
+ case 231:
+ AI_Movement_Track_Flush(kActorSteele);
+ Actor_Put_In_Set(kActorSteele, kSetNR05_NR08);
+ Actor_Set_At_XYZ(kActorSteele, -1034.09f, 0.32f, 224.77f, 440);
+ Game_Flag_Set(722);
+ Set_Enter(kSetNR05_NR08, kSetPS01);
+ return true;
+ case 232:
+ Game_Flag_Set(532);
+ Set_Enter(kSetNR02, kSetNR03);
+ return true;
+ case 233:
+ Game_Flag_Set(310);
+ Game_Flag_Reset(181);
+ Game_Flag_Set(257);
+ Actor_Put_In_Set(kActorSteele, kSetHF03);
+ Actor_Set_At_XYZ(kActorSteele, 291.0f, 47.76f, -892.0f, 453);
+ Set_Enter(kSetHF03, kSetDR06);
+ return true;
+ case 234:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append_Run(kActorSteele, 372, 0);
+ AI_Movement_Track_Append(kActorSteele, 35, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 235:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append_Run(kActorSteele, 467, 0);
+ AI_Movement_Track_Append(kActorSteele, 35, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 236:
+ Actor_Put_In_Set(kActorSteele, kSetNR10);
+ Actor_Set_At_XYZ(kActorSteele, -118.13f, 2.84f, -197.90f, 305);
+ return true;
+ case 240:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Flush(kActorLucy);
+ Actor_Put_In_Set(kActorSteele, kSetHF02);
+ Actor_Set_At_XYZ(kActorSteele, 254.94f, 47.76f, -262.58f, 210);
+ Actor_Put_In_Set(kActorLucy, kSetHF02);
+ Actor_Set_At_XYZ(kActorLucy, 596.49f, 47.76f, -260.04f, 731);
+ return true;
+ case 241:
+ Actor_Change_Animation_Mode(kActorSteele, 6);
+ Delay(500);
+ Actor_Change_Animation_Mode(kActorLucy, 48);
+ Actor_Set_Targetable(kActorLucy, 0);
+ Actor_Retired_Here(kActorLucy, 36, 18, 1, -1);
+ Delay(1000);
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append_Run(kActorSteele, 380, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ Delay(500);
+ ADQ_Add(6, 340, 48);
+ return true;
+ case 242:
+ AI_Movement_Track_Flush(kActorSteele);
+ Player_Loses_Control();
+ Delay(500);
+ Actor_Says(kActorSteele, 0, 14);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 1540, 16);
+ Actor_Says(kActorSteele, 10, 13);
+ Actor_Says(kActorSteele, 20, 18);
+ Actor_Says(kActorMcCoy, 1545, 13);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 30, 18);
+ Actor_Says(kActorSteele, 40, 18);
+ Actor_Says(kActorMcCoy, 1550, 13);
+ Actor_Face_Actor(kActorSteele, kActorLucy, 1);
+ Actor_Says(kActorSteele, 50, 12);
+ Actor_Says(kActorMcCoy, 1555, 13);
+ Actor_Says(kActorSteele, 60, 12);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 80, 16);
+ Actor_Says(kActorMcCoy, 1560, 13);
+ Delay(500);
+ Game_Flag_Set(617);
+ Player_Gains_Control();
+ if (Game_Flag_Query(255)) {
+ Actor_Put_In_Set(kActorSteele, kSetNR01);
+ Actor_Set_At_XYZ(kActorSteele, 12.17f, 23.88f, -533.37f, 674);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetNR01, kSetNR01);
+ } else {
+ Actor_Put_In_Set(kActorSteele, kSetHF01);
+ Actor_Set_At_XYZ(kActorSteele, 324.32f, 8.0f, -465.87f, 674);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetHF01, kSetDR03);
+ }
+ return true;
+ case 243:
+ Player_Loses_Control();
+ Delay(500);
+ Actor_Put_In_Set(kActorSteele, kSetHF02);
+ Actor_Set_At_XYZ(kActorSteele, 254.94f, 47.76f, -262.58f, 210);
+ return true;
+ case 244:
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 1560, 14);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 100, 13);
+ Actor_Says(kActorMcCoy, 1575, 13);
+ Actor_Says(kActorSteele, 120, 15);
+ Actor_Set_Goal_Number(kActorSteele, 246);
+ return true;
+ case 245:
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 150, 13);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 1580, 13);
+ Actor_Says(kActorSteele, 160, 14);
+ Actor_Says(kActorMcCoy, 1585, 16);
+ Actor_Says(kActorSteele, 170, 16);
+ Actor_Says(kActorSteele, 180, 17);
+ Actor_Says(kActorMcCoy, 1590, 17);
+ Actor_Says(kActorSteele, 200, 15);
+ Actor_Set_Goal_Number(kActorSteele, 246);
+ return true;
+ case 246:
+ Actor_Says(kActorSteele, 130, 13);
+ Actor_Says(kActorSteele, 140, 13);
+ Delay(500);
+ Game_Flag_Set(617);
+ Player_Gains_Control();
+ if (Game_Flag_Query(255)) {
+ Actor_Put_In_Set(kActorSteele, kSetNR01);
+ Actor_Set_At_XYZ(kActorSteele, 12.17f, 23.88f, -533.37f, 674);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetNR01, kSetNR01);
+ } else {
+ Actor_Put_In_Set(kActorSteele, kSetHF01);
+ Actor_Set_At_XYZ(kActorSteele, 324.32f, 8.0f, -465.87f, 674);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetHF01, kSetDR03);
+ }
+ return true;
+ case 250:
+ AI_Movement_Track_Flush(kActorSteele);
+ Actor_Put_In_Set(kActorSteele, kSetNR01);
+ Actor_Set_At_XYZ(kActorSteele, 94.03f, 23.88f, -794.46f, 685);
+ if (Game_Flag_Query(255)) {
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ }
+ Game_Flag_Set(603);
+ Actor_Change_Animation_Mode(kActorSteele, 0);
+ _var1 = 3;
+ return true;
+ case 251:
+ Actor_Set_Targetable(kActorSteele, 1);
+ return true;
+ case 252:
+ Player_Loses_Control();
+ Actor_Change_Animation_Mode(kActorSteele, 6);
+ Sound_Play(27, 100, 0, 0, 50);
+ Game_Flag_Reset(603);
+ Actor_Set_Targetable(kActorSteele, 0);
+ Actor_Set_Goal_Number(kActorGordo, 299);
+ Delay(1500);
+ Player_Set_Combat_Mode(0);
+ Actor_Says(kActorSteele, 1070, 14);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 1260, 16);
+ Actor_Says(kActorSteele, 1270, 13);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 3065, 18);
+ Actor_Says(kActorSteele, 1280, 13);
+ Actor_Says(kActorSteele, 1290, 13);
+ Game_Flag_Set(592);
+ Player_Gains_Control();
+ if (Game_Flag_Query(256)) {
+ Actor_Put_In_Set(kActorSteele, kSetHF01);
+ Actor_Set_At_XYZ(kActorSteele, 324.32f, 8.0f, -465.87f, 674);
+ Game_Flag_Set(617);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetHF01, kSetDR03);
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 280);
+ }
+ return true;
+ case 255:
+ ADQ_Flush();
+ Actor_Change_Animation_Mode(kActorSteele, 6);
+ Sound_Play(27, 100, 0, 0, 50);
+ Actor_Force_Stop_Walking(kActorMcCoy);
+ Actor_Change_Animation_Mode(kActorMcCoy, 48);
+ Actor_Retired_Here(kActorMcCoy, 12, 12, 1, -1);
+ Actor_Set_Goal_Number(kActorGordo, 251);
+ Actor_Says(kActorSteele, 1250, 3);
+ return true;
+ case 258:
+ Game_Flag_Reset(603);
+ ADQ_Flush();
+ Game_Flag_Set(592);
+ Actor_Set_Targetable(kActorSteele, 0);
+ Delay(1000);
+ Player_Set_Combat_Mode(0);
+ Player_Loses_Control();
+ _animationState = 40;
+ _animationFrame = 0;
+ Delay(2000);
+ Actor_Change_Animation_Mode(kActorSteele, 0);
+ Actor_Change_Animation_Mode(kActorMcCoy, 0);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 1080, 17);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 3025, 14);
+ Actor_Says(kActorSteele, 1090, 16);
+ Actor_Face_Actor(kActorSteele, kActorGordo, 1);
+ Actor_Says(kActorSteele, 1100, 13);
+ Actor_Says(kActorSteele, 1110, 17);
+ Actor_Says(kActorMcCoy, 3030, 19);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 1130, 15);
+ Actor_Says(kActorSteele, 1140, 12);
+ Player_Gains_Control();
+ Actor_Set_Goal_Number(kActorSteele, 280);
+ return true;
+ case 260:
+ ADQ_Flush();
+ Actor_Change_Animation_Mode(kActorMcCoy, 6);
+ Sound_Play(27, 100, 0, 0, 50);
+ _animationState = 38;
+ _animationFrame = 0;
+ Actor_Set_Goal_Number(kActorGordo, 251);
+ Game_Flag_Reset(603);
+ Game_Flag_Set(592);
+ Actor_Set_Targetable(kActorSteele, 0);
+ Player_Loses_Control();
+ return true;
+ case 262:
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 1160, 15);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 3035, 14);
+ Actor_Says(kActorSteele, 1170, 16);
+ Actor_Says(kActorMcCoy, 3040, 15);
+ Actor_Says(kActorSteele, 1180, 16);
+ Actor_Says(kActorMcCoy, 3045, 15);
+ Actor_Says(kActorMcCoy, 3055, 15);
+ Actor_Says(kActorSteele, 1190, 16);
+ Actor_Says(kActorMcCoy, 3060, 15);
+ Actor_Says(kActorSteele, 1200, 16);
+ Actor_Says(kActorSteele, 1210, 14);
+ Actor_Modify_Friendliness_To_Other(kActorSteele, kActorMcCoy, -5);
+ Actor_Modify_Friendliness_To_Other(kActorClovis, kActorMcCoy, 2);
+ Player_Set_Combat_Mode(0);
+ Music_Stop(2);
+ Player_Gains_Control();
+ Actor_Set_Goal_Number(kActorSteele, 280);
+ return true;
+ case 270:
+ ADQ_Flush();
+ Player_Loses_Control();
+ Game_Flag_Reset(603);
+ Actor_Set_Targetable(kActorSteele, 0);
+ Actor_Set_Goal_Number(kActorGordo, 251);
+ Actor_Start_Speech_Sample(kActorSteele, 1150);
+ Actor_Change_Animation_Mode(kActorSteele, 49);
+ Delay(5000);
+ Actor_Set_Goal_Number(kActorMcCoy, 500);
+ return true;
+ case 275:
+ Delay(500);
+ Game_Flag_Set(617);
+ Player_Gains_Control();
+ if (Game_Flag_Query(255)) {
+ Actor_Put_In_Set(kActorSteele, kSetNR01);
+ Actor_Set_At_XYZ(kActorSteele, 12.17f, 23.88f, -533.37f, 674);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetNR01, kSetNR01);
+ } else {
+ Actor_Put_In_Set(kActorSteele, kSetHF01);
+ Actor_Set_At_XYZ(kActorSteele, 324.32f, 8.0f, -465.87f, 674);
+ Game_Flag_Reset(255);
+ Game_Flag_Reset(256);
+ Set_Enter(kSetHF01, kSetDR03);
+ }
+ return true;
+ case 280:
+ Actor_Says(kActorMcCoy, 2970, 15);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 840, 16);
+ Actor_Says(kActorMcCoy, 2975, 15);
+ Actor_Says(kActorSteele, 850, 16);
+ Actor_Says(kActorDispatcher, 0, 3);
+ Actor_Says(kActorDispatcher, 10, 3);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorMcCoy, 2980, 12);
+ Actor_Says(kActorSteele, 860, 14);
+ Actor_Says(kActorMcCoy, 2985, 13);
+ Actor_Says(kActorSteele, 870, 15);
+ Actor_Says(kActorMcCoy, 2990, 16);
+ Actor_Says(kActorSteele, 880, 17);
+ Actor_Says(kActorSteele, 890, 18);
+ Actor_Says(kActorMcCoy, 2995, 12);
+ Actor_Says(kActorSteele, 900, 13);
+ Actor_Says(kActorMcCoy, 3000, 13);
+ Actor_Says(kActorSteele, 920, 12);
+ Actor_Says(kActorDispatcher, 30, 3);
+ Actor_Says(kActorMcCoy, 3005, 14);
+ Actor_Says(kActorSteele, 930, 16);
+ Actor_Says(kActorSteele, 950, 13);
+ Actor_Says(kActorMcCoy, 3010, 15);
+ Actor_Says(kActorSteele, 960, 15);
+ Actor_Says(kActorSteele, 970, 13);
+ Actor_Says(kActorMcCoy, 3015, 12);
+ Actor_Says(kActorSteele, 980, 17);
+ if (Player_Query_Current_Scene() == 54) {
+ Actor_Set_Goal_Number(kActorSteele, 290);
+ } else {
+ Actor_Set_Goal_Number(kActorSteele, 291);
+ }
+ return true;
+ case 285:
+ Actor_Set_Goal_Number(kActorSteele, 290);
+ return true;
+ case 290:
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -281.0f, 31.93f, -1061.0f, 0, 0, 1, 0);
+ Actor_Face_Heading(kActorMcCoy, 45, 0);
+ Loop_Actor_Travel_Stairs(kActorMcCoy, 3, 0, 0);
+ Global_Variable_Set(1, 4);
+ Scene_Exits_Enable();
+ Actor_Set_Health(kActorMcCoy, 50, 50);
+ Game_Flag_Set(523);
+ Game_Flag_Set(343);
+ Game_Flag_Set(680);
+ Chapter_Enter(4, 79, 91);
+ return true;
+ case 291:
+ Game_Flag_Set(722);
+ Global_Variable_Set(1, 4);
+ Scene_Exits_Enable();
+ Game_Flag_Set(523);
+ Game_Flag_Set(680);
+ Chapter_Enter(4, 79, 91);
+ return true;
+ case 300:
+ if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) < 75) {
+ Set_Score(kActorSteele, Random_Query(2, 5) + Query_Score(kActorMcCoy));
+ }
+ if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) > 74) {
+ Actor_Modify_Friendliness_To_Other(kActorSteele, kActorMcCoy, 3);
+ }
+ Actor_Set_Goal_Number(kActorSteele, 305);
+ return true;
+ case 305:
+ Actor_Put_In_Set(kActorSteele, kSetFreeSlotC);
+ Actor_Set_At_Waypoint(kActorSteele, 35, 0);
+ return true;
+ case 400:
+ case 401:
+ case 423:
+ return true;
+ case 410:
+ Actor_Set_Targetable(kActorSteele, 1);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Start_Speech_Sample(kActorSteele, 2510);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Delay(3000);
+ Async_Actor_Walk_To_XYZ(kActorSteele, -109.0f, -36.55f, 26.0f, 0, 0);
+ return true;
+ case 411:
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ Actor_Says(kActorSteele, 430, 14);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ Delay(4000);
+ Async_Actor_Walk_To_XYZ(kActorSteele, -109.0f, -36.55f, 26.0f, 0, 0);
+ return true;
+ case 412:
+ Actor_Force_Stop_Walking(kActorSteele);
+ return true;
+ case 413:
+ Async_Actor_Walk_To_XYZ(kActorSteele, 1.0, -36.55f, 111.0f, 0, 0);
+ return true;
+ case 415:
+ Actor_Force_Stop_Walking(kActorSteele);
+ Actor_Change_Animation_Mode(kActorSteele, 51);
+ AI_Countdown_Timer_Start(kActorSteele, 1, 2);
+ return true;
+ case 416:
+ Actor_Set_At_XYZ(kActorSteele, -48.83f, -36.55f, 69.98f, 280);
+ Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorSteele, 36, 0, 1);
+ Actor_Face_Actor(kActorMcCoy, kActorSteele, 1);
+ if (Game_Flag_Query(653) == 1) {
+ Actor_Says(kActorSteele, 400, 3);
+ Actor_Says(kActorMcCoy, 2165, 14);
+ Actor_Says(kActorSteele, 410, 3);
+ Actor_Says(kActorMcCoy, 2170, 14);
+ Actor_Says(kActorSteele, 420, 3);
+ } else {
+ Actor_Says(kActorSteele, 440, 3);
+ Actor_Says(kActorMcCoy, 2175, 14);
+ Actor_Says(kActorSteele, 450, 3);
+ Actor_Says(kActorSteele, 460, 3);
+ Actor_Says(kActorSteele, 470, 3);
+ }
+ AI_Countdown_Timer_Start(kActorSteele, 1, 3);
+ return true;
+ case 418:
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Change_Animation_Mode(kActorSteele, 6);
+ Actor_Change_Animation_Mode(kActorMcCoy, 48);
+ Actor_Retired_Here(kActorMcCoy, 72, 18, 1, -1);
+ return true;
+ case 419:
+ Actor_Set_Targetable(kActorSteele, 0);
+ Game_Flag_Set(646);
+ Actor_Set_Goal_Number(kActorSteele, 599);
+ Actor_Retired_Here(kActorSteele, 60, 12, 1, -1);
+ return true;
+ case 420:
+ Actor_Put_In_Set(kActorSteele, kSetKP01);
+ Actor_Set_At_XYZ(kActorSteele, 20.0f, -12.2f, -97.0f, 907);
+ Actor_Change_Animation_Mode(kActorSteele, 43);
+ return true;
+ case 421:
+ Game_Flag_Reset(482);
+ Delay(2000);
+ Actor_Face_Actor(kActorSteele, kActorMcCoy, 1);
+ Actor_Says(kActorSteele, 360, -1);
+ Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorSteele, 48, 0, 0);
+ Actor_Says(kActorMcCoy, 2150, 14);
+ Actor_Says(kActorSteele, 370, 15);
+ Actor_Says(kActorMcCoy, 2155, 12);
+ Actor_Says(kActorSteele, 380, 16);
+ Actor_Says(kActorMcCoy, 2160, 18);
+ Actor_Says(kActorSteele, 390, 13);
+ Actor_Set_Goal_Number(kActorSteele, 422);
+ return true;
+ case 422:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append(kActorSteele, 530, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 430:
+ Actor_Put_In_Set(kActorSteele, kSetKP05_KP06);
+ Actor_Set_At_XYZ(kActorSteele, -1110.0f, 0.0f, 952.0f, 155);
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ return true;
+ case 431:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append_Run(kActorSteele, 541, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 432:
+ Actor_Set_At_Waypoint(kActorSteele, 542, 0);
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append_Run(kActorSteele, 543, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 433:
+ AI_Movement_Track_Flush(kActorSteele);
+ AI_Movement_Track_Append_Run(kActorSteele, 542, 0);
+ AI_Movement_Track_Repeat(kActorSteele);
+ return true;
+ case 450:
+ Actor_Put_In_Set(kActorSteele, kSetKP05_KP06);
+ Actor_Set_At_XYZ(kActorSteele, -947.39f, 0.0f, 728.89f, 0);
+ return true;
+ case 499:
+ AI_Movement_Track_Flush(kActorSteele);
+ Actor_Put_In_Set(kActorSteele, kSetKP05_KP06);
+ Actor_Set_At_XYZ(kActorSteele, -782.15f, 8.26f, -263.64f, 52);
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
+ switch (_animationState) {
+ case 0:
+ if (_var1 <= 3) {
+ if (_var1) {
+ if (_var1 == 1) {
+ Game_Flag_Set(482);
+ _animationState = 41;
+ _var1 = 1;
+ _var2 = 0;
+ } else if (_var1 == 3) {
+ *animation = 88;
+ _animationFrame++;
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(88) - 1)
+ _animationFrame = 0;
+ }
+ } else {
+ *animation = 74;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(74)) {
+ _animationFrame = 0;
+ if (Game_Flag_Query(482) == 1) {
+ _animationState = 41;
+ _var1 = 1;
+ _var2 = 0;
+ }
+ }
+ }
+ }
+ break;
+ case 1:
+ _animationFrame = 0;
+ *animation = _animationNext;
+ _animationState = _animationStateNext;
+ break;
+ case 2:
+ *animation = 67;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(67))
+ _animationFrame = 0;
+ break;
+ case 3:
+ *animation = 68;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(68))
+ _animationFrame = 0;
+ break;
+ case 4:
+ *animation = 59;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(59)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 5:
+ *animation = 60;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(60)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 6:
+ *animation = 69;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(69)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 7:
+ *animation = 70;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(70)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 8:
+ *animation = 62;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(62)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 9:
+ *animation = 63;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(63)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 10:
+ *animation = 83;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(83)) {
+ Actor_Change_Animation_Mode(kActorSteele, 0);
+ *animation = 74;
+ _animationFrame = 0;
+ _animationState = 0;
+ if (Actor_Query_Goal_Number(kActorSteele) == 212) {
+ Actor_Set_Goal_Number(kActorSteele, 213);
+ }
+ }
+ break;
+ case 11:
+ *animation = 84;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(84)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 12:
+ *animation = 85;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(85)) {
+ _animationFrame = 0;
+ }
+ break;
+ case 13:
+ *animation = 86;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(86)) {
+ _animationFrame = 0;
+ _animationState = 0;
+ }
+ break;
+ case 14:
+ *animation = 77;
+ if (!_animationFrame && _flag) {
+ *animation = 74;
+ _animationFrame = 0;
+ _animationState = 0;
+ _flag = 0;
+ } else {
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(77) - 1) {
+ _animationFrame = 0;
+ }
+ }
+ break;
+ case 15:
+ *animation = 78;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(78) - 1) {
+ _animationFrame = 0;
+ _animationState = 14;
+ *animation = 77;
+ }
+ break;
+ case 16:
+ *animation = 79;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(79) - 1) {
+ _animationFrame = 0;
+ _animationState = 14;
+ *animation = 77;
+ }
+ break;
+ case 17:
+ *animation = 80;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(80) - 1) {
+ _animationFrame = 0;
+ _animationState = 14;
+ *animation = 77;
+ }
+ break;
+ case 18:
+ *animation = 81;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(81) - 1) {
+ _animationFrame = 0;
+ _animationState = 14;
+ *animation = 77;
+ }
+ break;
+ case 19:
+ *animation = 81;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(81) - 1) {
+ _animationFrame = 0;
+ _animationState = 14;
+ *animation = 77;
+ }
+ break;
+ case 20:
+ *animation = 82;
+ if (!_animationFrame && _flag) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 66;
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ _flag = 0;
+ } else {
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(82) - 1) {
+ _animationFrame = 0;
+ }
+ }
+ break;
+ case 21:
+ *animation = 82;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(82) - 1) {
+ _animationFrame = 0;
+ _animationState = 20;
+ *animation = 82;
+ }
+ break;
+ case 22:
+ *animation = 82;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(82) - 1) {
+ _animationFrame = 0;
+ _animationState = 20;
+ *animation = 82;
+ }
+ break;
+ case 23:
+ *animation = 54;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(54) - 1) {
+ _animationFrame = 0;
+ }
+ break;
+ case 24:
+ *animation = 65;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(65) - 1) {
+ *animation = 74;
+ _animationFrame = 0;
+ _animationState = 0;
+ }
+ break;
+ case 25:
+ *animation = 64;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(64) - 1) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 54;
+ }
+ break;
+ case 26:
+ *animation = 66;
+ _animationFrame++;
+ if (_animationFrame == 3) {
+ int snd;
+ if (Random_Query(1, 2) == 1) {
+ snd = 9010;
+ } else {
+ snd = 9015;
+ }
+ Sound_Play_Speech_Line(1, snd, 75, 0, 99);
+ }
+
+ if (_animationFrame == 4)
+ Actor_Combat_AI_Hit_Attempt(1);
+
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(66) - 1) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 54;
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ if (Actor_Query_Goal_Number(kActorSteele) == 215) {
+ Actor_Change_Animation_Mode(kActorSteele, 6);
+ _animationState = 26;
+ _animationFrame = 0;
+ *animation = 66;
+ }
+ }
+ break;
+ case 27:
+ *animation = 55;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(55) - 1) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 54;
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ }
+ break;
+ case 28:
+ *animation = 56;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(56) - 1) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 54;
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ }
+ break;
+ case 29:
+ *animation = 57;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(57) - 1) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 54;
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ }
+ break;
+ case 30:
+ *animation = 58;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(58) - 1) {
+ _animationFrame = 0;
+ _animationState = 23;
+ *animation = 54;
+ Actor_Change_Animation_Mode(kActorSteele, 4);
+ }
+ break;
+ case 31:
+ *animation = 71;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(71) - 1) {
+ *animation = 74;
+ _animationFrame = 0;
+ _animationState = 0;
+ Actor_Change_Animation_Mode(kActorSteele, 0);
+ }
+ break;
+ case 32:
+ *animation = 72;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(72) - 1) {
+ *animation = 74;
+ _animationFrame = 0;
+ _animationState = 0;
+ Actor_Change_Animation_Mode(kActorSteele, 0);
+ }
+ break;
+ case 33:
+ *animation = 61;
+ if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(61) - 1)
+ _animationFrame++;
+ break;
+ case 34:
+ *animation = 73;
+ if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(73) - 1)
+ _animationFrame++;
+ break;
+ case 35:
+ *animation = 61;
+ if (_animationFrame < Slice_Animation_Query_Number_Of_Frames(61) - 1)
+ _animationFrame++;
+ break;
+ case 36:
+ *animation = 88;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(88) - 1) {
+ _animationFrame = 0;
+ }
+ break;
+ case 37:
+ if (!_animationFrame && _flag) {
+ _animationFrame = 0;
+ _animationState = 0;
+ _var1 = 3;
+ _flag = 0;
+ *animation = 89;
+ } else {
+ *animation = 89;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(89) - 1) {
+ _animationFrame = 0;
+ }
+ }
+ break;
+ case 38:
+ *animation = 90;
+ _animationFrame++;
+ if (_animationFrame > 5) {
+ Actor_Change_Animation_Mode(kActorSteele, 0);
+ _animationState = 0;
+ _animationFrame = 0;
+ *animation = 74;
+ Actor_Set_Goal_Number(kActorSteele, 261);
+ }
+ break;
+ case 39:
+ *animation = 92;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(92) - 1) {
+ _animationFrame = 0;
+ _animationState = 36;
+ *animation = 88;
+ }
+ break;
+ case 40:
+ *animation = 91;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(91) - 1) {
+ *animation = 74;
+ _animationFrame = 0;
+ _animationState = 0;
+ _var1 = 0;
+ }
+ break;
+ case 41:
+ if (_var1 > 3) {
+ break;
+ }
+ if (_var1) {
+ if (_var1 == 1) {
+ *animation = 75;
+ if (_var2) {
+ _var2--;
+ } else {
+ if (++_animationFrame >= 6) {
+ if (_animationFrame <= 9) {
+ _var2 = Random_Query(1, 3);
+ break;
+ }
+ }
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(75)) {
+ _animationFrame = 0;
+ if (Game_Flag_Query(482) == 1) {
+ _var1 = 0;
+ } else {
+ _var1 = 3;
+ }
+ }
+ }
+ } else if (_var1 == 3) {
+ *animation = 76;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(76) - 1) {
+ _animationState = 0;
+ _animationFrame = 0;
+ _var1 = 0;
+ Game_Flag_Reset(482);
+ }
+ }
+ } else {
+ *animation = 74;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(74)) {
+ _animationFrame = 0;
+ if (Game_Flag_Query(482) == 1) {
+ if (Random_Query(1, 3) == 1) {
+ _var1 = 1;
+ }
+ } else {
+ _var1 = 3;
+ }
+ }
+ }
+ break;
+ default:
+ *animation = 406;
+ _animationFrame = 0;
+ break;
+ }
+ *frame = _animationFrame;
+
+ return true;
+}
+
+bool AIScriptSteele::ChangeAnimationMode(int mode) {
+ warning("Steele: ChangeAnimationMode: TODO");
+ return true;
+}
+
+void AIScriptSteele::QueryAnimationState(int *animationState, int *animationFrame, int *animationStateNext, int *animationNext) {
+ *animationState = _animationState;
+ *animationFrame = _animationFrame;
+ *animationStateNext = _animationStateNext;
+ *animationNext = _animationNext;
+}
+
+void AIScriptSteele::SetAnimationState(int animationState, int animationFrame, int animationStateNext, int animationNext) {
+ _animationState = animationState;
+ _animationFrame = animationFrame;
+ _animationStateNext = animationStateNext;
+ _animationNext = animationNext;
+}
+
+bool AIScriptSteele::ReachedMovementTrackWaypoint(int waypointId) {
+ if (waypointId == 174 && Actor_Query_Goal_Number(kActorSteele) == 130)
+ Actor_Set_Goal_Number(kActorSteele, 112);
+
+ return true;
+}
+
+void AIScriptSteele::FledCombat() {
+ // return false;
+}
+
+} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/ai_script.cpp b/engines/bladerunner/script/ai_script.cpp
index 9322dd2e3b..b364bcee44 100644
--- a/engines/bladerunner/script/ai_script.cpp
+++ b/engines/bladerunner/script/ai_script.cpp
@@ -40,6 +40,7 @@ AIScripts::AIScripts(BladeRunnerEngine *vm, int actorCount) {
}
_AIScripts[kActorMcCoy] = new AIScriptMcCoy(_vm); // 0
+ _AIScripts[kActorSteele] = new AIScriptSteele(_vm); // 1
_AIScripts[kActorGordo] = new AIScriptGordo(_vm); // 2
_AIScripts[kActorGuzza] = new AIScriptGuzza(_vm); // 4
_AIScripts[kActorGrigorian] = new AIScriptGrigorian(_vm); // 11
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
index 46bdf8a472..6329c17ef8 100644
--- a/engines/bladerunner/script/ai_script.h
+++ b/engines/bladerunner/script/ai_script.h
@@ -120,6 +120,14 @@ DECLARE_SCRIPT(McCoy)
void sub_4059D0(float a1);
END_SCRIPT
+DECLARE_SCRIPT(Steele)
+ bool _flag;
+ int _var1;
+ int _var2;
+
+ double comp_distance(int actorId, float a5, float a6, int a1, float a2, float a3, float a4);
+END_SCRIPT
+
DECLARE_SCRIPT(Gordo)
int var_45B078;
int _counter;
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 7f36eaa607..76526b52e6 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -1182,7 +1182,12 @@ void ScriptBase::View_Score_Board() {
//TODO
warning("View_Score_Board()");
}
-// ScriptBase::Query_Score
+
+int ScriptBase::Query_Score(int a0) {
+ warning("Query_Score(%d)", a0);
+
+ return 0;
+}
void ScriptBase::Set_Score(int a0, int a1) {
warning("Set_Score(%d, %d)", a0, a1);
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index edfbacdcae..90266df764 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -233,7 +233,7 @@ protected:
void Voight_Kampff_Activate(int actorId, int calibrationRatio);
int Elevator_Activate(int elevatorId);
void View_Score_Board();
- // Query_Score
+ int Query_Score(int a0);
void Set_Score(int a0, int a1);
void Give_McCoy_Ammo(int ammoType, int ammo);
void Assign_Player_Gun_Hit_Sounds(int ammoType, int soundId1, int soundId2, int soundId3);