aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanasis Antoniou2019-06-01 21:36:46 +0300
committerThanasis Antoniou2019-06-01 21:36:46 +0300
commit438a6223cbb5a822aa3506352e743e20f4d2da6e (patch)
tree06f5be5f156e7ad5e52e3a6bccc89aff0bcef89d
parent4adf49c14997f4ddfa27592e57976ba97b6035c6 (diff)
downloadscummvm-rg350-438a6223cbb5a822aa3506352e743e20f4d2da6e.tar.gz
scummvm-rg350-438a6223cbb5a822aa3506352e743e20f4d2da6e.tar.bz2
scummvm-rg350-438a6223cbb5a822aa3506352e743e20f4d2da6e.zip
BLADERUNNER: Fix photographer bug and awry clickables
-rw-r--r--engines/bladerunner/obstacles.cpp2
-rw-r--r--engines/bladerunner/script/scene/bb05.cpp4
-rw-r--r--engines/bladerunner/script/scene/hc04.cpp4
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp4
-rw-r--r--engines/bladerunner/script/scene/ps02.cpp9
-rw-r--r--engines/bladerunner/script/scene/ps04.cpp4
-rw-r--r--engines/bladerunner/script/scene/rc03.cpp4
-rw-r--r--engines/bladerunner/script/scene/tb06.cpp31
-rw-r--r--engines/bladerunner/script/scene/tb07.cpp4
-rw-r--r--engines/bladerunner/script/scene/ug03.cpp23
10 files changed, 80 insertions, 9 deletions
diff --git a/engines/bladerunner/obstacles.cpp b/engines/bladerunner/obstacles.cpp
index 9bdf4ffe9c..c94f271e2d 100644
--- a/engines/bladerunner/obstacles.cpp
+++ b/engines/bladerunner/obstacles.cpp
@@ -33,7 +33,7 @@
#include "common/debug.h"
#define DISABLE_PATHFINDING 0
-#define USE_PATHFINDING_EXPERIMENTAL_FIX_2 1 // Alternate Fix: Allows polygons merged on one point
+#define USE_PATHFINDING_EXPERIMENTAL_FIX_2 0 // Alternate Fix: Allows polygons merged on one point
#define WITHIN_TOLERANCE(a, b) (((a) - 0.009) < (b) && ((a) + 0.009) > (b))
diff --git a/engines/bladerunner/script/scene/bb05.cpp b/engines/bladerunner/script/scene/bb05.cpp
index 9ef70cbab3..ecf6897497 100644
--- a/engines/bladerunner/script/scene/bb05.cpp
+++ b/engines/bladerunner/script/scene/bb05.cpp
@@ -75,6 +75,10 @@ void SceneScriptBB05::SceneLoaded() {
Clickable_Object("BOX06");
Unclickable_Object("BOX06");
Unclickable_Object("BOX14");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("PINHEAD");
+#endif // BLADERUNNER_ORIGINAL_BUGS
if (Actor_Query_Goal_Number(kActorSebastian) == 200) {
Actor_Set_Goal_Number(kActorGeneralDoll, 299);
Actor_Put_In_Set(kActorGeneralDoll, kSetFreeSlotG);
diff --git a/engines/bladerunner/script/scene/hc04.cpp b/engines/bladerunner/script/scene/hc04.cpp
index 4e1972c9ff..584c3ceac4 100644
--- a/engines/bladerunner/script/scene/hc04.cpp
+++ b/engines/bladerunner/script/scene/hc04.cpp
@@ -78,6 +78,10 @@ void SceneScriptHC04::SceneLoaded() {
Obstacle_Object("CAN FIRE", true);
Unobstacle_Object("ASIANMALE01", true);
Clickable_Object("CAN FIRE");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("CAN FIRE");
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptHC04::MouseClick(int x, int y) {
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index 7e1e5303a3..319e30429d 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -53,6 +53,10 @@ void SceneScriptMA06::InitializeScene() {
void SceneScriptMA06::SceneLoaded() {
Obstacle_Object("PANEL", true);
Clickable_Object("PANEL");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("PANEL");
+#endif // BLADERUNNER_ORIGINAL_BUGS
if (_vm->_cutContent) {
if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelShouldBeInElevatorMcCoysAct3) {
// Put Rachael in set for her first cut scene (Act 3) when it plays out in the elevator
diff --git a/engines/bladerunner/script/scene/ps02.cpp b/engines/bladerunner/script/scene/ps02.cpp
index a3bbe7bb27..c8ff284f0d 100644
--- a/engines/bladerunner/script/scene/ps02.cpp
+++ b/engines/bladerunner/script/scene/ps02.cpp
@@ -44,6 +44,11 @@ void SceneScriptPS02::SceneLoaded() {
Obstacle_Object("E.DOOR02", true);
Clickable_Object("E.DOOR01");
Clickable_Object("E.DOOR02");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("E.DOOR01");
+ Unclickable_Object("E.DOOR02");
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptPS02::MouseClick(int x, int y) {
@@ -51,6 +56,9 @@ bool SceneScriptPS02::MouseClick(int x, int y) {
}
bool SceneScriptPS02::ClickedOn3DObject(const char *objectName, bool a2) {
+#if BLADERUNNER_ORIGINAL_BUGS
+ // McCoy never clicks on the door
+ // This stuff is never called
if (Object_Query_Click("E.DOOR01", objectName)
|| Object_Query_Click("E.D00R02", objectName)
) {
@@ -91,6 +99,7 @@ bool SceneScriptPS02::ClickedOn3DObject(const char *objectName, bool a2) {
}
}
}
+#endif // BLADERUNNER_ORIGINAL_BUGS
return false;
}
diff --git a/engines/bladerunner/script/scene/ps04.cpp b/engines/bladerunner/script/scene/ps04.cpp
index c856496016..e114ecbfd7 100644
--- a/engines/bladerunner/script/scene/ps04.cpp
+++ b/engines/bladerunner/script/scene/ps04.cpp
@@ -62,6 +62,10 @@ void SceneScriptPS04::SceneLoaded() {
Unobstacle_Object("B.DOOR", true);
Unobstacle_Object("B.CHAIR01", true);
Unclickable_Object("CHAIR07");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("FLOOR");
+#endif // BLADERUNNER_ORIGINAL_BUGS
if ( Global_Variable_Query(kVariableChapter) == 2
&& !Actor_Clue_Query(kActorMcCoy, kClueWeaponsOrderForm)
diff --git a/engines/bladerunner/script/scene/rc03.cpp b/engines/bladerunner/script/scene/rc03.cpp
index 8f70222ad0..bb6168a0a9 100644
--- a/engines/bladerunner/script/scene/rc03.cpp
+++ b/engines/bladerunner/script/scene/rc03.cpp
@@ -124,6 +124,10 @@ void SceneScriptRC03::SceneLoaded() {
Unclickable_Object("BOX-BBCOLUMN02");
Unclickable_Object("BOX-BBCOLUMN03");
Unclickable_Object("BOX-BBCOLUMN04");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("PARKING METER 01");
+#endif // BLADERUNNER_ORIGINAL_BUGS
Unclickable_Object("PARKING METER 02");
Unclickable_Object("PARKING METER 03");
Unclickable_Object("TRASH CAN WITH FIRE");
diff --git a/engines/bladerunner/script/scene/tb06.cpp b/engines/bladerunner/script/scene/tb06.cpp
index 4720989fad..68f5bbd39f 100644
--- a/engines/bladerunner/script/scene/tb06.cpp
+++ b/engines/bladerunner/script/scene/tb06.cpp
@@ -177,14 +177,29 @@ void SceneScriptTB06::PlayerWalkedIn() {
Actor_Face_Actor(kActorMcCoy, kActorMarcus, true);
Actor_Says(kActorMcCoy, 5290, kAnimationModeTalk);
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -10.0f, 149.0f, -631.0f, 0, false, false, false);
- AI_Movement_Track_Pause(kActorPhotographer);
- Actor_Face_Actor(kActorMcCoy, kActorPhotographer, true);
- Actor_Face_Actor(kActorPhotographer, kActorMcCoy, true);
- Actor_Says(kActorPhotographer, 0, kAnimationModeTalk);
- Actor_Says(kActorMcCoy, 5295, kAnimationModeTalk);
- Actor_Face_Actor(kActorPhotographer, kActorMarcus, true);
- Actor_Says(kActorPhotographer, 10, kAnimationModeTalk);
- AI_Movement_Track_Unpause(kActorPhotographer);
+
+ bool talkWithPhotographer = false;
+#if BLADERUNNER_ORIGINAL_BUGS
+ talkWithPhotographer = true;
+#else
+ // It's possible for McCoy to go to AR01 (so the kActorPhotographer will go away from TB06)
+ // without ever going into this scene (TB06)
+ // so later on in the Act, if McCoy visits this scene the Photographer would be gone
+ // but the dialogue would play as if he was there. This fixes that bug.
+ if (Actor_Query_Is_In_Current_Set(kActorPhotographer)) {
+ talkWithPhotographer = true;
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
+ if (talkWithPhotographer) {
+ AI_Movement_Track_Pause(kActorPhotographer);
+ Actor_Face_Actor(kActorMcCoy, kActorPhotographer, true);
+ Actor_Face_Actor(kActorPhotographer, kActorMcCoy, true);
+ Actor_Says(kActorPhotographer, 0, kAnimationModeTalk);
+ Actor_Says(kActorMcCoy, 5295, kAnimationModeTalk);
+ Actor_Face_Actor(kActorPhotographer, kActorMarcus, true);
+ Actor_Says(kActorPhotographer, 10, kAnimationModeTalk);
+ AI_Movement_Track_Unpause(kActorPhotographer);
+ }
Game_Flag_Set(kFlagTB06Introduction);
//return true;
return;
diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp
index 389ee9ee98..cde6e5f6b8 100644
--- a/engines/bladerunner/script/scene/tb07.cpp
+++ b/engines/bladerunner/script/scene/tb07.cpp
@@ -61,6 +61,10 @@ void SceneScriptTB07::InitializeScene() {
void SceneScriptTB07::SceneLoaded() {
Obstacle_Object("EAGLE01", true);
Clickable_Object("EAGLE01");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("EAGLE01");
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptTB07::MouseClick(int x, int y) {
diff --git a/engines/bladerunner/script/scene/ug03.cpp b/engines/bladerunner/script/scene/ug03.cpp
index daeab009e2..ed3c0d5699 100644
--- a/engines/bladerunner/script/scene/ug03.cpp
+++ b/engines/bladerunner/script/scene/ug03.cpp
@@ -69,6 +69,16 @@ void SceneScriptUG03::SceneLoaded() {
Clickable_Object("CHAIR_SEAT");
Clickable_Object("CHAIR_STRAPLEGLEFT");
Clickable_Object("CHAIR_STRAPLEGRIGHT");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ if (Actor_Clue_Query(kActorMcCoy, kClueScaryChair)) {
+ Unclickable_Object("CHAIR_HEADZAPPER");
+ Unclickable_Object("CHAIR_BACK");
+ Unclickable_Object("CHAIR_SEAT");
+ Unclickable_Object("CHAIR_STRAPLEGLEFT");
+ Unclickable_Object("CHAIR_STRAPLEGRIGHT");
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptUG03::MouseClick(int x, int y) {
@@ -79,6 +89,11 @@ bool SceneScriptUG03::ClickedOn3DObject(const char *objectName, bool a2) {
if (Object_Query_Click("CHAIR_BACK", objectName)
|| Object_Query_Click("CHAIR_SEAT", objectName)
|| Object_Query_Click("CHAIR_HEADZAPPER", objectName)
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ || Object_Query_Click("CHAIR_STRAPLEGLEFT", objectName)
+ || Object_Query_Click("CHAIR_STRAPLEGRIGHT", objectName)
+#endif // BLADERUNNER_ORIGINAL_BUGS
) {
if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "CHAIR_BACK", 36, true, false)) {
Actor_Face_Object(kActorMcCoy, "CHAIR_BACK", true);
@@ -89,6 +104,14 @@ bool SceneScriptUG03::ClickedOn3DObject(const char *objectName, bool a2) {
Actor_Voice_Over(2580, kActorVoiceOver);
Actor_Voice_Over(2590, kActorVoiceOver);
Actor_Clue_Acquire(kActorMcCoy, kClueScaryChair, true, -1);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("CHAIR_HEADZAPPER");
+ Unclickable_Object("CHAIR_BACK");
+ Unclickable_Object("CHAIR_SEAT");
+ Unclickable_Object("CHAIR_STRAPLEGLEFT");
+ Unclickable_Object("CHAIR_STRAPLEGRIGHT");
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
}
}