aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2018-03-15 23:44:53 +0100
committerEugene Sandulenko2018-03-15 23:44:53 +0100
commita656480092f515c269f2eed993379fb58039f37c (patch)
tree9ad64b4d53de2a36a12a486f90f422fa05ad8210 /engines
parentc65a6930cbfaa19a4f6e20e1b1aa03e70f497a97 (diff)
downloadscummvm-rg350-a656480092f515c269f2eed993379fb58039f37c.tar.gz
scummvm-rg350-a656480092f515c269f2eed993379fb58039f37c.tar.bz2
scummvm-rg350-a656480092f515c269f2eed993379fb58039f37c.zip
BLADERUNNER: Added Izo actor (incomplete)
Diffstat (limited to 'engines')
-rw-r--r--engines/bladerunner/module.mk1
-rw-r--r--engines/bladerunner/script/ai/izo.cpp576
-rw-r--r--engines/bladerunner/script/ai_script.cpp1
-rw-r--r--engines/bladerunner/script/ai_script.h11
-rw-r--r--engines/bladerunner/script/script.cpp4
-rw-r--r--engines/bladerunner/script/script.h2
6 files changed, 593 insertions, 2 deletions
diff --git a/engines/bladerunner/module.mk b/engines/bladerunner/module.mk
index 3dfdd81fa6..00df334c9a 100644
--- a/engines/bladerunner/module.mk
+++ b/engines/bladerunner/module.mk
@@ -78,6 +78,7 @@ MODULE_OBJS = \
script/ai/hysteria_patron3.o \
script/ai/insect_dealer.o \
script/ai/isabella.o \
+ script/ai/izo.o \
script/ai/klein.o \
script/ai/lance.o \
script/ai/leon.o \
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
new file mode 100644
index 0000000000..5282ce6977
--- /dev/null
+++ b/engines/bladerunner/script/ai/izo.cpp
@@ -0,0 +1,576 @@
+/* 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 {
+
+AIScriptIzo::AIScriptIzo(BladeRunnerEngine *vm) : AIScriptBase(vm) {
+ _flag = 0;
+ _var1 = 6;
+ _var2 = 1;
+ _var3 = 0;
+ _var4 = 0;
+}
+
+void AIScriptIzo::Initialize() {
+ _animationFrame = 0;
+ _animationState = 0;
+ _animationStateNext = 0;
+ _animationNext = 0;
+
+ _flag = 0;
+ _var1 = 6;
+ _var2 = 1;
+ _var3 = 0;
+ _var4 = 0;
+
+ Actor_Set_Goal_Number(kActorIzo, 0);
+ Actor_Put_In_Set(kActorIzo, kSetHC01_HC02_HC03_HC04);
+ Actor_Set_At_XYZ(kActorIzo, 591.0f, 0.14f, 25.0f, 540);
+ World_Waypoint_Set(349, 70, -14.7f, -4.01f, 224.5f);
+}
+
+bool AIScriptIzo::Update() {
+ if (Actor_Query_Goal_Number(kActorIzo) == 100 && Player_Query_Current_Scene() == kSceneUG02) {
+ Actor_Set_Targetable(kActorIzo, 1);
+ Actor_Set_Goal_Number(kActorIzo, 101);
+ return true;
+ }
+
+ if (Global_Variable_Query(kVariableChapter) == 3
+ && Actor_Query_Goal_Number(kActorIzo) == 599
+ && Actor_Query_Which_Set_In(kActorIzo) == 70) {
+ Actor_Put_In_Set(kActorIzo, kSetFreeSlotI);
+ Actor_Set_At_Waypoint(kActorIzo, 41, 0);
+ }
+ if (!Actor_Query_Goal_Number(kActorIzo) && Player_Query_Current_Scene() == kSceneTB02) {
+ Actor_Set_Goal_Number(kActorIzo, 155);
+ }
+ if (Global_Variable_Query(kVariableChapter) == 4
+ && Actor_Query_Goal_Number(kActorIzo) < 599
+ && Actor_Query_Goal_Number(kActorIzo) < 300
+ && Actor_Query_Goal_Number(kActorIzo) != 180) {
+ Actor_Set_Goal_Number(kActorIzo, 300);
+ }
+ if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorIzo) < 400) {
+ Actor_Set_Goal_Number(kActorIzo, 400);
+ }
+
+ return false;
+}
+
+void AIScriptIzo::TimerExpired(int timer) {
+ //return false;
+}
+
+void AIScriptIzo::CompletedMovementTrack() {
+ switch (Actor_Query_Goal_Number(kActorIzo)) {
+ case 3:
+ Actor_Set_Goal_Number(kActorIzo, 101);
+ Player_Gains_Control();
+ return; //true;
+
+ case 101:
+ Actor_Set_Goal_Number(kActorIzo, 102);
+ return; //true;
+
+ case 110:
+ case 111:
+ Actor_Set_Goal_Number(kActorIzo, 114);
+ Actor_Set_Goal_Number(kActorSteele, 100);
+ Scene_Exits_Enable();
+ return; //true;
+
+ case 114:
+ Scene_Exits_Enable();
+ return; //true;
+
+ case 120:
+ Game_Flag_Set(164);
+ Actor_Set_Goal_Number(kActorIzo, 180);
+ Scene_Exits_Enable();
+ return; //true;
+
+ case 150:
+ Actor_Set_Goal_Number(kActorIzo, 155);
+ return; //true;
+
+ case 155:
+ Actor_Set_Goal_Number(kActorIzo, 150);
+ return; //true;
+
+ case 300:
+ Actor_Set_Goal_Number(kActorIzo, 301);
+ return; //true;
+
+ case 301:
+ Actor_Set_Goal_Number(kActorIzo, 300);
+ return; //true;
+ }
+
+ return; //false;
+}
+
+void AIScriptIzo::ReceivedClue(int clueId, int fromActorId) {
+ //return false;
+}
+
+void AIScriptIzo::ClickedByPlayer() {
+ if (Actor_Query_Goal_Number(kActorIzo) > 500) {
+ Actor_Face_Actor(kActorMcCoy, kActorIzo, 1);
+ Actor_Says(kActorMcCoy, 8585, 13);
+ return; //true;
+ }
+
+ if (Actor_Query_Goal_Number(kActorIzo) == 101 && Player_Query_Current_Set() == 75) {
+ Player_Loses_Control();
+ Actor_Set_Goal_Number(kActorIzo, 100);
+ Actor_Face_Actor(kActorMcCoy, kActorIzo, 1);
+ Actor_Says(kActorMcCoy, 5460, 16);
+ Actor_Face_Actor(kActorIzo, kActorMcCoy, 1);
+ Actor_Says(kActorIzo, 700, 17);
+ Actor_Says(kActorMcCoy, 5465, 14);
+ someDialog();
+ }
+
+ if (Actor_Query_Goal_Number(kActorIzo) == 110) {
+ Actor_Face_Actor(kActorMcCoy, kActorIzo, 1);
+ Actor_Says(kActorMcCoy, 2715, 14);
+ Actor_Set_Goal_Number(kActorIzo, 111);
+ Actor_Says(kActorMcCoy, 1800, 14);
+ Actor_Set_Goal_Number(kActorSteele, 100);
+ return; //true;
+ }
+
+ return; //false;
+}
+
+void AIScriptIzo::EnteredScene(int sceneId) {
+ // return false;
+}
+
+void AIScriptIzo::OtherAgentEnteredThisScene(int otherActorId) {
+ // return false;
+}
+
+void AIScriptIzo::OtherAgentExitedThisScene(int otherActorId) {
+ // return false;
+}
+
+void AIScriptIzo::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
+ if (Actor_Query_Goal_Number(kActorIzo) == 110) {
+ Game_Flag_Query(44);
+ }
+ return; //false;
+}
+
+void AIScriptIzo::ShotAtAndMissed() {
+ if (Actor_Query_Goal_Number(kActorIzo) != 110) {
+ return; //false;
+ }
+
+ Actor_Set_Goal_Number(kActorIzo, 111);
+
+ return; //true;
+}
+
+bool AIScriptIzo::ShotAtAndHit() {
+ if (Actor_Query_Goal_Number(kActorIzo) == 110
+ || Actor_Query_Goal_Number(kActorIzo) == 111
+ || Actor_Query_Goal_Number(kActorIzo) == 114) {
+ Actor_Set_Health(kActorIzo, 50, 50);
+
+ if (Actor_Query_Goal_Number(kActorIzo) == 110) {
+ Actor_Set_Goal_Number(kActorIzo, 111);
+ }
+ return true;
+ } else {
+ AI_Movement_Track_Flush(kActorIzo);
+ Global_Variable_Increment(19, 1);
+ if (!Game_Flag_Query(444) && Global_Variable_Query(19) == 1) {
+ Game_Flag_Set(444);
+ _animationFrame = 0;
+ _animationState = 19;
+ Actor_Retired_Here(kActorIzo, 36, 12, 1, -1);
+ Actor_Set_Goal_Number(kActorIzo, 199);
+ }
+ return false;
+ }
+}
+
+void AIScriptIzo::Retired(int byActorId) {
+ if (!Actor_Query_In_Set(kActorIzo, kSetKP07)) {
+ return; //false;
+ }
+
+ Global_Variable_Decrement(51, 1);
+ Actor_Set_Goal_Number(kActorIzo, 599);
+
+ if (Global_Variable_Query(51)) {
+ return; //false;
+ }
+
+ Player_Loses_Control();
+ Delay(2000);
+ Player_Set_Combat_Mode(0);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -12.0f, -41.58f, 72.0f, 0, 1, 0, 0);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
+ Ambient_Sounds_Remove_All_Looping_Sounds(1);
+ Game_Flag_Set(579);
+ Game_Flag_Reset(653);
+ Set_Enter(kSetKP05_KP06, kSetKP03);
+
+ return; //true;
+}
+
+int AIScriptIzo::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
+ return 0;
+}
+
+bool AIScriptIzo::GoalChanged(int currentGoalNumber, int newGoalNumber) {
+ if (newGoalNumber == 200
+ || newGoalNumber == 199
+ || newGoalNumber == 198
+ || newGoalNumber == 180
+ || newGoalNumber == 103) {
+ Spinner_Set_Selectable_Destination_Flag(6, 1);
+ }
+
+ switch (newGoalNumber) {
+ case 0:
+ AI_Movement_Track_Flush(kActorIzo);
+ return true;
+
+ case 1:
+ AI_Movement_Track_Flush(kActorIzo);
+ Actor_Face_Heading(kActorIzo, 520, 0);
+ _animationState = 32;
+ _animationFrame = -1;
+ return true;
+
+ case 2:
+ _animationState = 34;
+ _animationFrame = -1;
+ return true;
+
+ case 3:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append_Run(kActorIzo, 149, 0);
+ AI_Movement_Track_Append_Run(kActorIzo, 152, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ Scene_Exit_Add_2D_Exit(1, 394, 229, 485, 371, 1);
+ Game_Flag_Set(402);
+ return true;
+
+ case 100:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 101:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append_Run(kActorIzo, 153, 0);
+ AI_Movement_Track_Append(kActorIzo, 154, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 102:
+ return true;
+
+ case 103:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 153, 0);
+ AI_Movement_Track_Append(kActorIzo, 39, 120);
+ AI_Movement_Track_Append(kActorIzo, 33, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return 1;
+
+ case 110:
+ Game_Flag_Set(486);
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 349, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 111:
+ Game_Flag_Set(486);
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append_Run(kActorIzo, 349, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 114:
+ Game_Flag_Set(486);
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append_Run(kActorIzo, 174, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 115:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 39, 60);
+ if (Game_Flag_Query(44)) {
+ AI_Movement_Track_Append(kActorIzo, 33, 0);
+ } else {
+ AI_Movement_Track_Append(kActorIzo, 34, 0);
+ }
+ AI_Movement_Track_Repeat(kActorIzo);
+ Game_Flag_Set(486);
+ return true;
+
+ case 120:
+ Actor_Set_Targetable(kActorIzo, 0);
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 174, 0);
+ AI_Movement_Track_Append(kActorIzo, 33, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 150:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 39, Random_Query(15, 30));
+ AI_Movement_Track_Append(kActorIzo, 149, 0);
+ AI_Movement_Track_Append(kActorIzo, 323, Random_Query(90, 120));
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 155:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 149, 0);
+ if (Game_Flag_Query(44)) {
+ AI_Movement_Track_Append(kActorIzo, 39, 5);
+ AI_Movement_Track_Append(kActorIzo, 34, Random_Query(10, 20));
+ AI_Movement_Track_Append(kActorIzo, 39, 5);
+ AI_Movement_Track_Append(kActorIzo, 33, Random_Query(10, 20));
+ } else {
+ AI_Movement_Track_Append(kActorIzo, 39, Random_Query(5, 15));
+ AI_Movement_Track_Append(kActorIzo, 34, Random_Query(20, 40));
+ }
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 160:
+ AI_Movement_Track_Flush(kActorIzo);
+ return true;
+
+ case 180:
+ Game_Flag_Set(486);
+ Actor_Put_In_Set(kActorIzo, kSetFreeSlotA);
+ Actor_Set_At_Waypoint(kActorIzo, 33, 0);
+ return true;
+
+ case 198:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 41, 0);
+ AI_Movement_Track_Repeat(kActorIzo);
+ Actor_Set_Goal_Number(kActorIzo, 999);
+ return true;
+
+ case 199:
+ Game_Flag_Set(486);
+ AI_Movement_Track_Flush(kActorIzo);
+ Ambient_Sounds_Play_Speech_Sound(kActorIzo, 9000, 100, 0, 0, 0);
+ Actor_Change_Animation_Mode(kActorIzo, 48);
+ Actor_Set_Goal_Number(kActorIzo, 999);
+ Scene_Exits_Enable();
+ Actor_Retired_Here(kActorIzo, 36, 12, 1, -1);
+ return true;
+
+ case 200:
+ Game_Flag_Set(486);
+ return true;
+
+ case 300:
+ AI_Movement_Track_Flush(kActorIzo);
+ modifyWaypoints();
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 301:
+ AI_Movement_Track_Flush(kActorIzo);
+ AI_Movement_Track_Append(kActorIzo, 34, 1);
+ AI_Movement_Track_Repeat(kActorIzo);
+ return true;
+
+ case 400:
+ AI_Movement_Track_Flush(kActorIzo);
+ Actor_Put_In_Set(kActorIzo, kSetFreeSlotA);
+ Actor_Set_At_Waypoint(kActorIzo, 33, 0);
+ return true;
+
+ case 999:
+ Actor_Set_Goal_Number(kActorIzo, 599);
+ return true;
+
+ case 9999:
+ return true;
+
+ }
+
+ return false;
+}
+
+bool AIScriptIzo::UpdateAnimation(int *animation, int *frame) {
+ return true;
+}
+
+bool AIScriptIzo::ChangeAnimationMode(int mode) {
+ return true;
+}
+
+void AIScriptIzo::QueryAnimationState(int *animationState, int *animationFrame, int *animationStateNext, int *animationNext) {
+ *animationState = _animationState;
+ *animationFrame = _animationFrame;
+ *animationStateNext = _animationStateNext;
+ *animationNext = _animationNext;
+}
+
+void AIScriptIzo::SetAnimationState(int animationState, int animationFrame, int animationStateNext, int animationNext) {
+ _animationState = animationState;
+ _animationFrame = animationFrame;
+ _animationStateNext = animationStateNext;
+ _animationNext = animationNext;
+}
+
+bool AIScriptIzo::ReachedMovementTrackWaypoint(int waypointId) {
+ return true;
+}
+
+void AIScriptIzo::FledCombat() {
+ // return false;
+}
+
+void AIScriptIzo::someDialog() {
+ int input;
+
+ Dialogue_Menu_Clear_List();
+ DM_Add_To_List_Never_Repeat_Once_Selected(0, 7, 4, -1);
+
+ if (Actor_Clue_Query(0, 179)) {
+ DM_Add_To_List_Never_Repeat_Once_Selected(10, 8, -1, -1);
+ }
+
+ DM_Add_To_List_Never_Repeat_Once_Selected(20, 3, 7, 4);
+ DM_Add_To_List_Never_Repeat_Once_Selected(30, -1, 3, 7);
+ Dialogue_Menu_Appear(320, 240);
+
+ input = Dialogue_Menu_Query_Input();
+
+ Dialogue_Menu_Disappear();
+
+ switch (input) {
+ case 0:
+ Actor_Says(kActorMcCoy, 5470, 15);
+ Actor_Says(kActorMcCoy, 710, 13);
+ Actor_Set_Goal_Number(kActorIzo, 103);
+ Player_Gains_Control();
+ break;
+
+ case 10:
+ if (Game_Flag_Query(44) == 1) {
+ Actor_Says(kActorMcCoy, 5475, 18);
+ Actor_Says(kActorIzo, 720, 12);
+ Actor_Says(kActorMcCoy, 5485, 13);
+ Actor_Says(kActorIzo, 740, 14);
+ Actor_Says(kActorMcCoy, 5495, 12);
+ Actor_Says(kActorIzo, 750, 15);
+ Actor_Says(kActorIzo, 760, 17);
+ Actor_Says(kActorMcCoy, 5500, 12);
+ Actor_Says(kActorIzo, 770, 15);
+ Actor_Says(kActorIzo, 780, 15);
+ Actor_Says(kActorMcCoy, 5505, 12);
+ Actor_Says(kActorIzo, 790, 15);
+ } else {
+ Actor_Says(kActorMcCoy, 5510, 15);
+ Actor_Says(kActorIzo, 820, 13);
+ Actor_Says(kActorMcCoy, 5520, 13);
+ Actor_Says(kActorIzo, 830, 13);
+ Actor_Says(kActorIzo, 840, 13);
+ }
+ Actor_Set_Goal_Number(kActorIzo, 103);
+ Player_Gains_Control();
+ break;
+
+ case 20:
+ Actor_Says(kActorMcCoy, 5480, 18);
+ Actor_Set_Goal_Number(kActorIzo, 103);
+ Player_Gains_Control();
+ break;
+
+ case 30:
+ Player_Set_Combat_Mode(kActorSteele);
+ Actor_Set_Goal_Number(kActorIzo, 103);
+ Player_Gains_Control();
+ break;
+ }
+}
+
+void AIScriptIzo::modifyWaypoints() {
+ switch (Random_Query(1, 10) - 1) {
+ case 0:
+ World_Waypoint_Set(484, 54, -212.58f, 23.38f, -1859.45f);
+ World_Waypoint_Set(485, 54, 355.49f, 31.66f, -859.81f);
+ World_Waypoint_Set(486, 11, -323.89f, -24.0f, 35.58f);
+ World_Waypoint_Set(487, 11, -211.89f, -24.0f, 35.58f);
+ AI_Movement_Track_Append(kActorIzo, 484, 1);
+ AI_Movement_Track_Append(kActorIzo, 485, 10);
+ AI_Movement_Track_Append(kActorIzo, 486, 1);
+ AI_Movement_Track_Append(kActorIzo, 487, 15);
+ AI_Movement_Track_Append(kActorIzo, 486, 1);
+ AI_Movement_Track_Append(kActorIzo, 485, 1);
+ AI_Movement_Track_Append(kActorIzo, 484, 1);
+ break;
+
+ case 1:
+ World_Waypoint_Set(484, 13, -1335.0f, 0.0f, -542.0f);
+ World_Waypoint_Set(485, 13, -1027.0f, 0.0f, -542.0f);
+ AI_Movement_Track_Append(kActorIzo, 484, 1);
+ AI_Movement_Track_Append(kActorIzo, 485, 20);
+ AI_Movement_Track_Append(kActorIzo, 484, 1);
+ break;
+
+ case 2:
+ World_Waypoint_Set(484, 37, -352.16f, 8.0f, -379.24f);
+ World_Waypoint_Set(485, 37, 108.2f, 8.0f, -934.80f);
+ AI_Movement_Track_Append(kActorIzo, 484, 1);
+ AI_Movement_Track_Append(kActorIzo, 485, 1);
+ break;
+
+ case 3:
+ World_Waypoint_Set(484, 39, 589.59f, 47.76f, -1153.76f);
+ World_Waypoint_Set(485, 39, 481.59f, 47.76f, -429.76f);
+ World_Waypoint_Set(486, 38, 524.0f, 47.76f, -562.0f);
+ World_Waypoint_Set(487, 38, -10.0f, 47.76f, -327.0f);
+ AI_Movement_Track_Append(kActorIzo, 484, 1);
+ AI_Movement_Track_Append(kActorIzo, 485, 1);
+ AI_Movement_Track_Append(kActorIzo, 486, 1);
+ AI_Movement_Track_Append(kActorIzo, 487, 1);
+ break;
+
+ default:
+ AI_Movement_Track_Append(kActorIzo, 34, 60);
+ break;
+ }
+}
+
+} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/ai_script.cpp b/engines/bladerunner/script/ai_script.cpp
index e5eb77987e..06f4685857 100644
--- a/engines/bladerunner/script/ai_script.cpp
+++ b/engines/bladerunner/script/ai_script.cpp
@@ -46,6 +46,7 @@ AIScripts::AIScripts(BladeRunnerEngine *vm, int actorCount) {
_AIScripts[kActorGuzza] = new AIScriptGuzza(_vm); // 4
_AIScripts[kActorClovis] = new AIScriptClovis(_vm); // 5
_AIScripts[kActorLucy] = new AIScriptLucy(_vm); // 6
+ _AIScripts[kActorIzo] = new AIScriptIzo(_vm); // 7
_AIScripts[kActorCrazylegs] = new AIScriptCrazylegs(_vm); // 9
_AIScripts[kActorGrigorian] = new AIScriptGrigorian(_vm); // 11
_AIScripts[kActorTransient] = new AIScriptTransient(_vm); // 12
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
index 6a13ac3852..f9ee6f31e7 100644
--- a/engines/bladerunner/script/ai_script.h
+++ b/engines/bladerunner/script/ai_script.h
@@ -178,6 +178,17 @@ DECLARE_SCRIPT(Lucy)
void checkCombat();
END_SCRIPT
+DECLARE_SCRIPT(Izo)
+ int _var1;
+ int _var2;
+ int _var3;
+ int _var4;
+ bool _flag;
+
+ void someDialog();
+ void modifyWaypoints();
+END_SCRIPT
+
DECLARE_SCRIPT(Crazylegs)
bool _flag;
END_SCRIPT
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 76526b52e6..2aca6db9d3 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -952,7 +952,9 @@ void ScriptBase::Ambient_Sounds_Play_Sound(int sfxId, int volume, int panStart,
_vm->_ambientSounds->playSound(sfxId, volume, panStart, panEnd, priority);
}
-// ScriptBase::Ambient_Sounds_Play_Speech_Sound
+void ScriptBase::Ambient_Sounds_Play_Speech_Sound(int actorId, int sfxId, int volume, int panStart, int panEnd, int priority) {
+ warning("STIB: Ambient_Sounds_Play_Speech_Sound()");
+}
void ScriptBase::Ambient_Sounds_Remove_All_Non_Looping_Sounds(bool stopPlaying) {
_vm->_ambientSounds->removeAllNonLoopingSounds(stopPlaying);
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index 90266df764..7faf3886b2 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -176,7 +176,7 @@ protected:
void Ambient_Sounds_Add_Speech_Sound(int actorId, int sentenceId, int timeMin, int timeMax, int volumeMin, int volumeMax, int panStartMin, int panStartMax, int panEndMin, int panEndMax, int priority, int unk);
// Ambient_Sounds_Remove_Speech_Sound
void Ambient_Sounds_Play_Sound(int sfxId, int volume, int panStart, int panEnd, int priority);
- // Ambient_Sounds_Play_Speech_Sound
+ void Ambient_Sounds_Play_Speech_Sound(int actorId, int sfxId, int volume, int panStart, int panEnd, int priority);
void Ambient_Sounds_Remove_All_Non_Looping_Sounds(bool stopPlaying);
void Ambient_Sounds_Add_Looping_Sound(int sfxId, int volume, int pan, int delay);
void Ambient_Sounds_Adjust_Looping_Sound(int sfxId, int volume, int pan, int delay);