aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/script/scene/hf06.cpp5
-rw-r--r--engines/bladerunner/script/scene/ug08.cpp4
-rw-r--r--engines/bladerunner/set.cpp44
-rw-r--r--engines/bladerunner/set.h1
4 files changed, 44 insertions, 10 deletions
diff --git a/engines/bladerunner/script/scene/hf06.cpp b/engines/bladerunner/script/scene/hf06.cpp
index 9a62e39cda..5219d962a5 100644
--- a/engines/bladerunner/script/scene/hf06.cpp
+++ b/engines/bladerunner/script/scene/hf06.cpp
@@ -49,6 +49,11 @@ void SceneScriptHF06::InitializeScene() {
void SceneScriptHF06::SceneLoaded() {
Unobstacle_Object("BOX22", true);
Unobstacle_Object("BOX34", true);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Obstacle_Object("FRONTBLOCK1", true);
+ Obstacle_Object("FRONTBLOCK2", true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Clickable_Object("BOX19");
Clickable_Object("BOX21");
Clickable_Object("BOX23");
diff --git a/engines/bladerunner/script/scene/ug08.cpp b/engines/bladerunner/script/scene/ug08.cpp
index c736f4213e..c9750b68fe 100644
--- a/engines/bladerunner/script/scene/ug08.cpp
+++ b/engines/bladerunner/script/scene/ug08.cpp
@@ -76,6 +76,10 @@ void SceneScriptUG08::SceneLoaded() {
Obstacle_Object("ELEV LEGS", true);
Unobstacle_Object("ELEV LEGS", true);
Unobstacle_Object("BOX RIGHT WALL ", true);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Obstacle_Object("NORTHBLOCK", true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptUG08::MouseClick(int x, int y) {
diff --git a/engines/bladerunner/set.cpp b/engines/bladerunner/set.cpp
index 92798d6500..2e3bd44ee1 100644
--- a/engines/bladerunner/set.cpp
+++ b/engines/bladerunner/set.cpp
@@ -505,6 +505,17 @@ void Set::overrideSceneObjectInfo(int objectId) const {
}
}
+void Set::setupNewObjectInSet(Common::String objName, BoundingBox objBbox) {
+ int objectId = _objectCount;
+ _objects[objectId].name = objName.c_str();
+ _objects[objectId].bbox = objBbox;
+ _objects[objectId].isObstacle = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un)Obstacle_Object()
+ _objects[objectId].isClickable = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un)Clickable_Object()
+ _objects[objectId].isHotMouse = 0;
+ _objects[objectId].unknown1 = 0;
+ _objects[objectId].isTarget = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un_)Combat_Target_Object
+ _objectCount++;
+}
/**
* Used for adding objects in a Set mainly to fix a few "McCoy walking to places he should not" issues
* This is called in Set::open()
@@ -516,33 +527,46 @@ void Set::overrideSceneObjectInfo(int objectId) const {
*/
void Set::patchInAdditionalObjectsInSet() {
Common::String custObjName;
- int objectId = _objectCount;
BoundingBox bbox;
switch (_vm->_scene->getSceneId()) {
+ case kSceneHF06:
+ // block clicking / path access to northern part of the scene
+ // which causes McCoy and Police officers/ rats to go behind the map
+ bbox = BoundingBox(220.00f, 350.02f, -90.86f, 310.00f, 380.02f, -70.71f);
+ custObjName = "FRONTBLOCK1";
+ setupNewObjectInSet(custObjName, bbox);
+
+ bbox = BoundingBox(20.00f, 350.02f, -90.86f, 170.00f, 380.02f, -45.71f);
+ custObjName = "FRONTBLOCK2";
+ setupNewObjectInSet(custObjName, bbox);
+ break;
+
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";
+ setupNewObjectInSet(custObjName, bbox);
break;
+
+ case kSceneUG08:
+ // block clicking / path access to northern part of the scene
+ // which causes McCoy and Police officers/ rats to go behind the map
+ bbox = BoundingBox(-386.26f, -8.07f, -1078.99f, 100.00f, 170.63f, -478.99f);
+ custObjName = "NORTHBLOCK";
+ setupNewObjectInSet(custObjName, bbox);
+ break;
+
case kSceneUG13:
// Underground homeless place
// block passage to empty elevator chute
bbox = BoundingBox(-80.00f, 35.78f, -951.75f, 74.36f, 364.36f, -810.56f);
custObjName = "ELEVBLOCK";
+ setupNewObjectInSet(custObjName, bbox);
break;
default:
return;
}
-
- _objectCount++;
- _objects[objectId].name = custObjName.c_str();
- _objects[objectId].bbox = bbox;
- _objects[objectId].isObstacle = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un)Obstacle_Object()
- _objects[objectId].isClickable = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un)Clickable_Object()
- _objects[objectId].isHotMouse = 0;
- _objects[objectId].unknown1 = 0;
- _objects[objectId].isTarget = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un_)Combat_Target_Object
}
/**
diff --git a/engines/bladerunner/set.h b/engines/bladerunner/set.h
index dbf4b9a787..3284a5ea71 100644
--- a/engines/bladerunner/set.h
+++ b/engines/bladerunner/set.h
@@ -110,6 +110,7 @@ private:
#if BLADERUNNER_ORIGINAL_BUGS
#else
void overrideSceneObjectInfo(int objectId) const;
+ void setupNewObjectInSet(Common::String objName, BoundingBox objBbox);
void patchInAdditionalObjectsInSet();
void patchOutBadObjectsFromSet();
#endif // BLADERUNNER_ORIGINAL_BUGS