aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/ai
diff options
context:
space:
mode:
authorThanasis Antoniou2019-04-07 22:46:36 +0300
committerThanasis Antoniou2019-04-07 22:48:10 +0300
commit603c9fd0095fa7cc492ad3feb8226229c3510721 (patch)
tree8ff3577aafc449d284121dccf826ca161dd35b51 /engines/bladerunner/script/ai
parentc21090ea03965b128edcdfabad7f074151961fda (diff)
downloadscummvm-rg350-603c9fd0095fa7cc492ad3feb8226229c3510721.tar.gz
scummvm-rg350-603c9fd0095fa7cc492ad3feb8226229c3510721.tar.bz2
scummvm-rg350-603c9fd0095fa7cc492ad3feb8226229c3510721.zip
BLADERUNNER: Fix for AR, CT01 Spinner fly-in
AR01: Fish dealer behavior fix, AR02: music fix, CT01: Spinner may fly in (loop)
Diffstat (limited to 'engines/bladerunner/script/ai')
-rw-r--r--engines/bladerunner/script/ai/fish_dealer.cpp27
-rw-r--r--engines/bladerunner/script/ai/general_doll.cpp2
-rw-r--r--engines/bladerunner/script/ai/howie_lee.cpp7
-rw-r--r--engines/bladerunner/script/ai/officer_grayford.cpp2
4 files changed, 31 insertions, 7 deletions
diff --git a/engines/bladerunner/script/ai/fish_dealer.cpp b/engines/bladerunner/script/ai/fish_dealer.cpp
index 5297ae43dd..d7f517c984 100644
--- a/engines/bladerunner/script/ai/fish_dealer.cpp
+++ b/engines/bladerunner/script/ai/fish_dealer.cpp
@@ -45,16 +45,33 @@ bool AIScriptFishDealer::Update() {
Actor_Set_Goal_Number(kActorFishDealer, 400);
return true;
- } else if (Player_Query_Current_Scene()
- || Actor_Query_Goal_Number(kActorFishDealer) == 2
- || Actor_Query_Goal_Number(kActorFishDealer) == 1
- || Actor_Query_Goal_Number(kActorFishDealer) == 400) {
+ }
+#if BLADERUNNER_ORIGINAL_BUGS
+ else if (Player_Query_Current_Scene()
+ || Actor_Query_Goal_Number(kActorFishDealer) == 2
+ || Actor_Query_Goal_Number(kActorFishDealer) == 1
+ || Actor_Query_Goal_Number(kActorFishDealer) == 400) {
return false;
} else {
Actor_Set_Goal_Number(kActorFishDealer, 1);
return true;
}
+#else
+ // prevent Fish Dealer from blinking out while McCoy is flying out from Animoid
+ else if (Actor_Query_Goal_Number(kActorFishDealer) == 400
+ || ( Player_Query_Current_Scene() != kSceneAR01 )) {
+ return false;
+ }
+ else {
+ if (Player_Query_Current_Scene() == kSceneAR01
+ && Actor_Query_Goal_Number(kActorFishDealer) == 3) {
+ Actor_Set_Goal_Number(kActorFishDealer, 1);
+ }
+ return true;
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
+
}
void AIScriptFishDealer::TimerExpired(int timer) {
@@ -65,7 +82,7 @@ void AIScriptFishDealer::CompletedMovementTrack() {
if (Actor_Query_Goal_Number(kActorFishDealer) != 1)
return; // false
- Actor_Set_Goal_Number(kActorFishDealer, 99);
+ Actor_Set_Goal_Number(kActorFishDealer, 99); // A bug?
Actor_Set_Goal_Number(kActorFishDealer, 1);
//return true;
diff --git a/engines/bladerunner/script/ai/general_doll.cpp b/engines/bladerunner/script/ai/general_doll.cpp
index 7a62320153..ee531d0d44 100644
--- a/engines/bladerunner/script/ai/general_doll.cpp
+++ b/engines/bladerunner/script/ai/general_doll.cpp
@@ -73,7 +73,7 @@ void AIScriptGeneralDoll::TimerExpired(int timer) {
void AIScriptGeneralDoll::CompletedMovementTrack() {
switch (Actor_Query_Goal_Number(kActorGeneralDoll)) {
case 101:
- if (Player_Query_Current_Scene() == 6) {
+ if (Player_Query_Current_Scene() == kSceneBB05) {
switch (Random_Query(0, 5)) {
case 0:
Ambient_Sounds_Play_Speech_Sound(kActorGeneralDoll, 0, 80, 0, 0, 0);
diff --git a/engines/bladerunner/script/ai/howie_lee.cpp b/engines/bladerunner/script/ai/howie_lee.cpp
index 93f08672db..3675fc1b60 100644
--- a/engines/bladerunner/script/ai/howie_lee.cpp
+++ b/engines/bladerunner/script/ai/howie_lee.cpp
@@ -66,6 +66,13 @@ bool AIScriptHowieLee::Update() {
if ( Actor_Query_Goal_Number(kActorHowieLee) == 1
&& Game_Flag_Query(kFlagCT01BoughtHowieLeeFood)
&& !Game_Flag_Query(kFlagMcCoyInChinaTown)
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ // Prevents possibility of Howie Lee from blinking in/out of existence
+ // when the flyout loop is playing
+ // and when McCoy enters and exits the Spinner with the spinner doors animation restored
+ && Player_Query_Current_Scene() != kSceneCT01
+#endif // BLADERUNNER_ORIGINAL_BUGS
) {
Actor_Set_Goal_Number(kActorHowieLee, 4);
return true;
diff --git a/engines/bladerunner/script/ai/officer_grayford.cpp b/engines/bladerunner/script/ai/officer_grayford.cpp
index 0e82ded8c0..66f05e56ba 100644
--- a/engines/bladerunner/script/ai/officer_grayford.cpp
+++ b/engines/bladerunner/script/ai/officer_grayford.cpp
@@ -542,7 +542,7 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb
Actor_Change_Animation_Mode(kActorOfficerGrayford, 43);
- if (Player_Query_Current_Scene() == 28) {
+ if (Player_Query_Current_Scene() == kSceneDR04) {
Actor_Says(kActorOfficerGrayford, 170, kAnimationModeTalk);
}
return true;