aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/ai/mutant1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/script/ai/mutant1.cpp')
-rw-r--r--engines/bladerunner/script/ai/mutant1.cpp130
1 files changed, 67 insertions, 63 deletions
diff --git a/engines/bladerunner/script/ai/mutant1.cpp b/engines/bladerunner/script/ai/mutant1.cpp
index 1ae338f334..bdd2548db4 100644
--- a/engines/bladerunner/script/ai/mutant1.cpp
+++ b/engines/bladerunner/script/ai/mutant1.cpp
@@ -42,65 +42,63 @@ void AIScriptMutant1::Initialize() {
}
bool AIScriptMutant1::Update() {
- if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorMutant1) != 590) {
- if (Actor_Query_Which_Set_In(kActorMutant1) != Player_Query_Current_Set()) {
- Actor_Set_Goal_Number(kActorMutant1, 590);
- }
-
- return false;
- }
+ if (Global_Variable_Query(kVariableChapter) == 4) {
+ switch (Actor_Query_Goal_Number(kActorMutant1)) {
+ case 400:
+ if (!Game_Flag_Query(kFlagMutantsActive)
+ && Game_Flag_Query(kFlagUG06Chapter4Started)
+ ) {
+ Actor_Set_Goal_Number(kActorMutant1, 401);
+ Actor_Set_Goal_Number(kActorMutant2, 401);
+ Actor_Set_Goal_Number(kActorMutant3, 401);
+ Actor_Set_Targetable(kActorMutant1, true);
+ Actor_Set_Targetable(kActorMutant2, true);
+ Actor_Set_Targetable(kActorMutant3, true);
+ Game_Flag_Set(kFlagMutantsActive);
+ }
+ break;
- if (Global_Variable_Query(kVariableChapter) != 4) {
- return false;
- }
+ case 401:
+ if (Actor_Query_Which_Set_In(kActorMutant1) == Player_Query_Current_Set()
+ && (Actor_Query_Friendliness_To_Other(kActorMutant1, kActorMcCoy) < 30
+ || Actor_Query_Combat_Aggressiveness(kActorMutant1) >= 60
+ )
+ ) {
+ Actor_Set_Goal_Number(kActorMutant1, 410);
+ }
+ break;
- switch (Actor_Query_Goal_Number(kActorMutant1)) {
- case 400:
- if (!Game_Flag_Query(kFlagMutantsActive)
- && Game_Flag_Query(kFlagUG06Chapter4Started)
- ) {
- Actor_Set_Goal_Number(kActorMutant1, 401);
- Actor_Set_Goal_Number(kActorMutant2, 401);
- Actor_Set_Goal_Number(kActorMutant3, 401);
- Actor_Set_Targetable(kActorMutant1, 1);
- Actor_Set_Targetable(kActorMutant2, 1);
- Actor_Set_Targetable(kActorMutant3, 1);
- Game_Flag_Set(kFlagMutantsActive);
- }
- break;
+ case 404:
+ if (!Game_Flag_Query(kFlagMutantsPaused)) {
+ Actor_Set_Goal_Number(kActorMutant1, 403);
+ }
+ break;
- case 401:
- if (Actor_Query_Which_Set_In(kActorMutant1) == Player_Query_Current_Set()
- && (Actor_Query_Friendliness_To_Other(kActorMutant1, kActorMcCoy) < 30
- || Actor_Query_Combat_Aggressiveness(kActorMutant1) >= 60
- )
- ) {
- Actor_Set_Goal_Number(kActorMutant1, 410);
- }
- break;
+ case 410:
+ if (Actor_Query_Which_Set_In(kActorMutant1) != Player_Query_Current_Set()) {
+ Non_Player_Actor_Combat_Mode_Off(kActorMutant1);
+ Actor_Set_Goal_Number(kActorMutant1, 403);
+ }
+ break;
- case 404:
- if (!Game_Flag_Query(630)) {
- Actor_Set_Goal_Number(kActorMutant1, 403);
+ case 599:
+ if (Actor_Query_Which_Set_In(kActorMutant1) != Player_Query_Current_Set()) {
+ Actor_Set_Goal_Number(kActorMutant1, 411);
+ }
+ break;
}
- break;
- case 410:
- if (Actor_Query_Which_Set_In(kActorMutant1) != Player_Query_Current_Set()) {
- Non_Player_Actor_Combat_Mode_Off(kActorMutant1);
- Actor_Set_Goal_Number(kActorMutant1, 403);
+ if (Game_Flag_Query(kFlagMutantsPaused)
+ && Actor_Query_Goal_Number(kActorMutant1) != 599
+ ) {
+ Actor_Set_Goal_Number(kActorMutant1, 404);
}
- break;
-
- case 599:
+ } else if (Global_Variable_Query(kVariableChapter) == 5
+ && Actor_Query_Goal_Number(kActorMutant1) != 590
+ ) {
if (Actor_Query_Which_Set_In(kActorMutant1) != Player_Query_Current_Set()) {
- Actor_Set_Goal_Number(kActorMutant1, 411);
+ Actor_Set_Goal_Number(kActorMutant1, 590);
}
- break;
- }
-
- if (Game_Flag_Query(630) == 1 && Actor_Query_Goal_Number(kActorMutant1) != 599) {
- Actor_Set_Goal_Number(kActorMutant1, 404);
}
return false;
@@ -111,8 +109,9 @@ void AIScriptMutant1::TimerExpired(int timer) {
}
void AIScriptMutant1::CompletedMovementTrack() {
- if (Actor_Query_Goal_Number(kActorMutant1) == 401)
+ if (Actor_Query_Goal_Number(kActorMutant1) == 401) {
Actor_Set_Goal_Number(kActorMutant1, 403);
+ }
}
void AIScriptMutant1::ReceivedClue(int clueId, int fromActorId) {
@@ -136,31 +135,36 @@ void AIScriptMutant1::OtherAgentExitedThisScene(int otherActorId) {
}
void AIScriptMutant1::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
- if (Actor_Query_Which_Set_In(kActorMutant1) == Player_Query_Current_Set() && Actor_Query_Goal_Number(kActorMutant1) != 599) {
- if (otherActorId != kActorMcCoy) {
- if (otherActorId > 72 || (otherActorId != kActorFreeSlotA && otherActorId != kActorMutant2 && otherActorId != kActorMutant3)) {
- Actor_Modify_Combat_Aggressiveness(70, -10);
+ if (Actor_Query_Which_Set_In(kActorMutant1) == Player_Query_Current_Set()
+ && Actor_Query_Goal_Number(kActorMutant1) != 599
+ ) {
+ if (otherActorId == kActorMcCoy) {
+ if (combatMode) {
+ Actor_Modify_Combat_Aggressiveness(kActorMutant1, 10);
} else {
- Actor_Modify_Combat_Aggressiveness(70, 10);
+ Actor_Modify_Combat_Aggressiveness(kActorMutant1, -10);
}
- } else if (combatMode) {
- Actor_Modify_Combat_Aggressiveness(70, 10);
+ } else if (otherActorId == kActorFreeSlotA
+ || otherActorId == kActorMutant2
+ || otherActorId == kActorMutant3
+ ) {
+ Actor_Modify_Combat_Aggressiveness(kActorMutant1, 10);
} else {
- Actor_Modify_Combat_Aggressiveness(70, -10);
+ Actor_Modify_Combat_Aggressiveness(kActorMutant1, -10);
}
}
}
void AIScriptMutant1::ShotAtAndMissed() {
if (Actor_Query_Goal_Number(kActorMutant1) != 410) {
- Actor_Modify_Combat_Aggressiveness(70, 10);
+ Actor_Modify_Combat_Aggressiveness(kActorMutant1, 10);
Actor_Modify_Friendliness_To_Other(kActorMutant1, kActorMcCoy, -10);
}
}
bool AIScriptMutant1::ShotAtAndHit() {
if (Actor_Query_Goal_Number(kActorMutant1) != 410) {
- Actor_Modify_Combat_Aggressiveness(70, 15);
+ Actor_Modify_Combat_Aggressiveness(kActorMutant1, 15);
Actor_Modify_Friendliness_To_Other(kActorMutant1, kActorMcCoy, -15);
}
@@ -189,7 +193,7 @@ bool AIScriptMutant1::GoalChanged(int currentGoalNumber, int newGoalNumber) {
return true;
case 401:
- Actor_Set_Targetable(kActorMutant1, 1);
+ Actor_Set_Targetable(kActorMutant1, true);
AI_Movement_Track_Flush(kActorMutant1);
AI_Movement_Track_Append(kActorMutant1, 39, 0);
@@ -317,7 +321,7 @@ bool AIScriptMutant1::GoalChanged(int currentGoalNumber, int newGoalNumber) {
return true;
case 403:
- Actor_Set_Targetable(kActorMutant1, 0);
+ Actor_Set_Targetable(kActorMutant1, false);
Actor_Set_Goal_Number(kActorMutant1, 401);
return true;