aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-13 00:04:17 +0300
committerThanasis Antoniou2019-05-13 03:29:00 +0300
commitc52cd1ea4cde0a81623737f6f6382da059f36a67 (patch)
tree5068076bd7d8d335b653dedef8ffa33c95fb6915 /engines/bladerunner
parentb6f7ff77d3a464954536dd6dcdf97f1d13a5fc85 (diff)
downloadscummvm-rg350-c52cd1ea4cde0a81623737f6f6382da059f36a67.tar.gz
scummvm-rg350-c52cd1ea4cde0a81623737f6f6382da059f36a67.tar.bz2
scummvm-rg350-c52cd1ea4cde0a81623737f6f6382da059f36a67.zip
BLADERUNNER: Fixes for PS05
Pathfinding and spawn points fixes
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/script/scene/ps05.cpp29
-rw-r--r--engines/bladerunner/set.cpp6
2 files changed, 34 insertions, 1 deletions
diff --git a/engines/bladerunner/script/scene/ps05.cpp b/engines/bladerunner/script/scene/ps05.cpp
index 6adff84ac8..8bb579c995 100644
--- a/engines/bladerunner/script/scene/ps05.cpp
+++ b/engines/bladerunner/script/scene/ps05.cpp
@@ -29,8 +29,13 @@ void SceneScriptPS05::InitializeScene() {
Setup_Scene_Information(547.59f, 0.18f, -216.84f, 334);
} else if (Game_Flag_Query(kFlagPS02toPS05)) {
Setup_Scene_Information(635.0f, 0.0f, -598.0f, 475);
- } else { // kFlagPS06toPS05 || kFlagPS15toPS05
+ } else { // kFlagPS06toPS05 || kFlagPS15toPS05, but for some reason kFlagPS06toPS05 is then set in PlayerWalkedIn
+#if BLADERUNNER_ORIGINAL_BUGS
Setup_Scene_Information(630.72f, 0.38f, -469.26f, 400);
+#else
+ // exiting from PS15
+ Setup_Scene_Information(553.24f, 0.37f, -422.97f, 400);
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Scene_Exit_Add_2D_Exit(0, 218, 98, 280, 246, 3);
Scene_Exit_Add_2D_Exit(1, 330, 90, 436, 198, 0);
@@ -49,6 +54,10 @@ void SceneScriptPS05::InitializeScene() {
void SceneScriptPS05::SceneLoaded() {
Obstacle_Object("WATER FOUNTAIN", true);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Obstacle_Object("MAINFBLOCK", true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Clickable_Object("WATER FOUNTAIN");
Clickable_Object("ASHTRAY");
Clickable_Object("FIRE EXTINGISHER");
@@ -57,6 +66,11 @@ void SceneScriptPS05::SceneLoaded() {
Clickable_Object("WANTED POSTERS");
Unclickable_Object("WATER FOUNTAIN");
Unclickable_Object("CUP");
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unclickable_Object("FIRE EXTINGISHER");
+#endif // BLADERUNNER_ORIGINAL_BUGS
+
}
bool SceneScriptPS05::MouseClick(int x, int y) {
@@ -112,12 +126,21 @@ bool SceneScriptPS05::ClickedOnExit(int exitId) {
return true;
}
if (exitId == 2) {
+#if BLADERUNNER_ORIGINAL_BUGS
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 742.52f, 0.37f, -457.69f, 0, true, false, false)) {
Game_Flag_Set(kFlagPS05toPS06);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Set_Enter(kSetPS06, kScenePS06);
}
+#else
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 715.52f, 0.37f, -457.69f, 0, true, false, false)) {
+ Game_Flag_Set(kFlagPS05toPS06);
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
+ Ambient_Sounds_Remove_All_Looping_Sounds(1);
+ Set_Enter(kSetPS06, kScenePS06);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
return true;
}
return false;
@@ -143,7 +166,11 @@ void SceneScriptPS05::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptPS05::PlayerWalkedIn() {
if (Game_Flag_Query(kFlagPS06toPS05)) {
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_At_XYZ(kActorMcCoy, 718.72f, 0.37f, -461.26f, 600);
+#else
+ Actor_Set_At_XYZ(kActorMcCoy, 710.14f, 0.37f, -455.48f, 600);
+#endif // BLADERUNNER_ORIGINAL_BUGS
} else if (Game_Flag_Query(kFlagPS02toPS05)) {
selectNextTvNews();
turnOnTV();
diff --git a/engines/bladerunner/set.cpp b/engines/bladerunner/set.cpp
index e03466b837..5427858688 100644
--- a/engines/bladerunner/set.cpp
+++ b/engines/bladerunner/set.cpp
@@ -480,6 +480,12 @@ void Set::patchInAdditionalObjectsInSet() {
int objectId = _objectCount;
BoundingBox bbox;
switch (_vm->_scene->getSceneId()) {
+ case kScenePS05:
+ // block actual passage to ESPER room because
+ // it causes McCoy to sometimes go behind the wall
+ bbox = BoundingBox(730.50f, -0.0f, -481.10f, 734.51f, 144.75f, -437.55f);
+ custObjName = "MAINFBLOCK";
+ break;
case kSceneUG13:
// Underground homeless place
// block passage to empty elevator chute