aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/ai/zuben.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/script/ai/zuben.cpp')
-rw-r--r--engines/bladerunner/script/ai/zuben.cpp73
1 files changed, 51 insertions, 22 deletions
diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp
index 47e74f7158..af1d64cfd8 100644
--- a/engines/bladerunner/script/ai/zuben.cpp
+++ b/engines/bladerunner/script/ai/zuben.cpp
@@ -53,15 +53,17 @@ bool AIScriptZuben::Update() {
Actor_Put_In_Set(kActorZuben, kSetFreeSlotI);
Actor_Set_At_Waypoint(kActorZuben, 41, 0);
}
+
if ( Actor_Query_Goal_Number(kActorZuben) == kGoalZubenDefault
&& Player_Query_Current_Scene() == kSceneCT01
- && !Game_Flag_Query(kFlagZubenCheckOnMcCoy)
+ && !Game_Flag_Query(kFlagCT01ZubenMcCoyCheck)
) {
AI_Countdown_Timer_Reset(kActorZuben, 2);
AI_Countdown_Timer_Start(kActorZuben, 2, 30);
- Game_Flag_Set(kFlagZubenCheckOnMcCoy);
+ Game_Flag_Set(kFlagCT01ZubenMcCoyCheck);
return true;
}
+
if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenDefault
&& Actor_Query_Friendliness_To_Other(kActorZuben, kActorMcCoy) < 48
&& Actor_Query_Is_In_Current_Set(kActorZuben)
@@ -72,9 +74,10 @@ bool AIScriptZuben::Update() {
Actor_Clue_Acquire(kActorZuben, kClueMcCoysDescription, true, -1);
}
Game_Flag_Set(kFlagCT01ZubenLeft);
- Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT01Leave);
+ Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT01WalkToCT02);
return true;
}
+
if ( Global_Variable_Query(kVariableChapter) >= 4
&& !Game_Flag_Query(kFlagZubenRetired)
&& Actor_Query_Goal_Number(kActorZuben) < 200
@@ -83,6 +86,7 @@ bool AIScriptZuben::Update() {
Actor_Set_Goal_Number(kActorZuben, 200);
return true;
}
+
if ( Global_Variable_Query(kVariableChapter) == 5
&& !Game_Flag_Query(kFlagZubenRetired)
&& Actor_Query_Goal_Number(kActorZuben) < 400
@@ -91,17 +95,19 @@ bool AIScriptZuben::Update() {
Actor_Set_Goal_Number(kActorZuben, 400);
return true;
}
+
if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06AttackMcCoy
&& Player_Query_Current_Scene() == kSceneCT07
) {
AI_Countdown_Timer_Reset(kActorZuben, 0);
- Game_Flag_Set(kFlagWarehouseOpen);
+ Game_Flag_Set(kFlagCT05WarehouseOpen);
Actor_Set_Targetable(kActorZuben, true);
- if (Actor_Query_Goal_Number(kActorGordo) == 0) {
- Actor_Set_Goal_Number(kActorGordo, 1);
+ if (Actor_Query_Goal_Number(kActorGordo) == kGoalGordoDefault) {
+ Actor_Set_Goal_Number(kActorGordo, kGoalGordoLeaveCT01);
}
return true;
}
+
if ( Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT02PotDodgeCheck
&& !Game_Flag_Query(kFlagCT02ZubenFled)
) {
@@ -119,12 +125,12 @@ void AIScriptZuben::TimerExpired(int timer) {
) {
Actor_Modify_Friendliness_To_Other(kActorZuben, kActorMcCoy, -1);
}
- Game_Flag_Reset(kFlagZubenCheckOnMcCoy);
+ Game_Flag_Reset(kFlagCT01ZubenMcCoyCheck);
// return true;
} else if (timer == 1) {
- if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT02Flee) { // Zuben fleeing, after 10s
+ if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT02RunToFreeSlotG) { // Zuben fleeing, after 10s
Music_Stop(10);
- Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT06Hide);
+ Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT06HideAtFreeSlotA);
AI_Countdown_Timer_Reset(kActorZuben, 1);
// return true;
}
@@ -140,16 +146,16 @@ void AIScriptZuben::TimerExpired(int timer) {
}
void AIScriptZuben::CompletedMovementTrack() {
- if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT02Flee
+ if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT02RunToFreeSlotG
&& Game_Flag_Query(kFlagCT02McCoyFell)
) {
Set_Enter(kSetCT03_CT04, kSceneCT03);
}
if (Actor_Query_Goal_Number(kActorZuben) == 3) { // not set anywhere
- Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT07Leave);
+ Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT07RunToFreeSlotA);
//return true;
- } else if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06Hide
+ } else if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06HideAtFreeSlotA
&& Game_Flag_Query(kFlagCT02McCoyFell)
) {
AI_Countdown_Timer_Reset(kActorZuben, 0);
@@ -164,7 +170,7 @@ void AIScriptZuben::CompletedMovementTrack() {
Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT02OpenDoor);
//return true;
} else {
- if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT07Leave) {
+ if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT07RunToFreeSlotA) {
Music_Stop(2);
Sound_Play(574, 40, 100, 100, 50);
Delay(2000);
@@ -264,7 +270,7 @@ void AIScriptZuben::ShotAtAndMissed() {
bool AIScriptZuben::ShotAtAndHit() {
Game_Flag_Set(kFlagMcCoyShotAtZuben);
- if ( Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT07Leave
+ if ( Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT07RunToFreeSlotA
&& !Actor_Clue_Query(kActorZuben, kClueMcCoyShotZubenInTheBack)
) {
Actor_Clue_Acquire(kActorZuben, kClueMcCoyShotZubenInTheBack, true, -1);
@@ -306,14 +312,15 @@ int AIScriptZuben::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueI
bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
switch (newGoalNumber) {
- case kGoalZubenCT01Leave:
+ case kGoalZubenCT01WalkToCT02:
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append(kActorZuben, 86, 0);
AI_Movement_Track_Append(kActorZuben, 106, 0);
AI_Movement_Track_Append_With_Facing(kActorZuben, 45, 0, 481);
AI_Movement_Track_Repeat(kActorZuben);
return false;
- case kGoalZubenCT02Flee:
+
+ case kGoalZubenCT02RunToFreeSlotG:
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 84, 0);
AI_Movement_Track_Append_Run(kActorZuben, 85, 0);
@@ -324,6 +331,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
AI_Countdown_Timer_Start(kActorZuben, 0, 70);
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case kGoalZubenCT07Spared:
AI_Movement_Track_Flush(kActorZuben);
Actor_Face_Actor(kActorZuben, kActorMcCoy, true);
@@ -343,14 +351,16 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Clue_Acquire(kActorZuben, kClueMcCoyIsABladeRunner, true, -1);
}
Actor_Clue_Acquire(kActorZuben, kClueMcCoyLetZubenEscape, true, -1);
- Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT07Leave);
+ Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT07RunToFreeSlotA);
return false;
- case kGoalZubenCT07Leave:
+
+ case kGoalZubenCT07RunToFreeSlotA:
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 94, 0);
AI_Movement_Track_Append_Run(kActorZuben, 33, 0);
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case kGoalZubenDie:
Game_Flag_Set(kFlagZubenRetired);
Game_Flag_Set(kFlagCT01ZubenGone);
@@ -364,20 +374,24 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
}
Actor_Set_Goal_Number(kActorZuben, kGoalZubenDead);
return false;
+
case kGoalZubenCT02PushPot:
_animationFrame = 0;
_animationState = 26;
return false;
+
case kGoalZubenCT02RunToDoor:
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 46, 0);
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case kGoalZubenCT02OpenDoor:
Actor_Face_Heading(kActorZuben, kActorMcCoy, false);
_animationFrame = 0;
_animationState = 27;
return false;
+
case kGoalZubenCT06JumpDown:
AI_Countdown_Timer_Reset(kActorZuben, 0);
Actor_Put_In_Set(kActorZuben, kSetCT06);
@@ -385,6 +399,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
_animationFrame = 0;
_animationState = 28;
return false;
+
case kGoalZubenCT06AttackMcCoy:
Player_Loses_Control();
if (!Player_Query_Combat_Mode()) {
@@ -394,7 +409,8 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Game_Flag_Set(kFlagNotUsed142);
Set_Enter(kSetCT07, kSceneCT07);
return false;
- case kGoalZubenCT06Hide:
+
+ case kGoalZubenCT06HideAtFreeSlotA:
Actor_Set_Targetable(kActorZuben, true);
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 51, 0);
@@ -402,6 +418,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
AI_Movement_Track_Append(kActorZuben, 33, 1); // Hide Zuben
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case kGoalZubenCT02PotDodgeCheck:
if (Actor_Query_Goal_Number(kActorMcCoy) != kGoalMcCoyDodge) {
Player_Loses_Control();
@@ -411,29 +428,34 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
}
Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT02RunToDoor);
return false;
+
case kGoalZubenMA01AttackMcCoy:
- Game_Flag_Set(kFlagWarehouseOpen);
+ Game_Flag_Set(kFlagCT05WarehouseOpen);
Actor_Set_Targetable(kActorZuben, true);
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 125, 0);
AI_Movement_Track_Repeat(kActorZuben);
return false;
- case 22:
+
+ case 22: // is never set
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 125, 0);
AI_Movement_Track_Append_Run(kActorZuben, 33, 0);
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case 99:
AI_Movement_Track_Flush(kActorZuben);
Scene_Exits_Enable();
Music_Stop(2);
return false;
+
case 100:
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 33, 3);
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case 105:
{
int rnd1 = Random_Query(1, 3);
@@ -508,11 +530,13 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
case 106:
Actor_Set_Goal_Number(kActorZuben, 105);
return true;
+
case 200:
AI_Movement_Track_Flush(kActorZuben);
AI_Movement_Track_Append_Run(kActorZuben, 33, 3);
AI_Movement_Track_Repeat(kActorZuben);
return false;
+
case 205:
switch (Random_Query(1, 8)) {
case 1:
@@ -591,9 +615,11 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) {
break;
}
return false;
+
case 206:
Actor_Set_Goal_Number(kActorZuben, 205);
return true;
+
case 400:
AI_Movement_Track_Flush(kActorZuben);
Actor_Put_In_Set(kActorZuben, kSetFreeSlotA);
@@ -950,7 +976,7 @@ bool AIScriptZuben::UpdateAnimation(int *animation, int *frame) {
Actor_Set_Frame_Rate_FPS(kActorZuben, -2);
_animationState = 0;
_animationFrame = 0;
- Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT02Flee);
+ Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT02RunToFreeSlotG);
}
break;
case 28:
@@ -1164,6 +1190,7 @@ void AIScriptZuben::dialogue() {
Actor_Says(kActorMcCoy, 7310, 16);
Actor_Says(kActorZuben, 190, 15);
break;
+
case 1500:
Actor_Says(kActorMcCoy, 7295, 11);
Actor_Says(kActorZuben, 200, 12);
@@ -1188,6 +1215,7 @@ void AIScriptZuben::dialogue() {
Actor_Clue_Acquire(kActorMcCoy, kClueZubenTalksAboutLucy2, false, kActorZuben);
}
break;
+
case 1510:
Actor_Says(kActorMcCoy, 7300, 13);
Actor_Says(kActorZuben, 280, 12);
@@ -1202,6 +1230,7 @@ void AIScriptZuben::dialogue() {
Actor_Says(kActorZuben, 330, 12);
Actor_Clue_Acquire(kActorMcCoy, kClueZubensMotive, false, kActorZuben);
break;
+
case 1520:
Actor_Says(kActorZuben, 160, 13);
Actor_Says(kActorMcCoy, 7305, 15);