aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/script/ai/klein.cpp10
-rw-r--r--engines/bladerunner/script/scene/ps07.cpp8
-rw-r--r--engines/bladerunner/set.cpp16
3 files changed, 32 insertions, 2 deletions
diff --git a/engines/bladerunner/script/ai/klein.cpp b/engines/bladerunner/script/ai/klein.cpp
index 066bbada60..66d8801555 100644
--- a/engines/bladerunner/script/ai/klein.cpp
+++ b/engines/bladerunner/script/ai/klein.cpp
@@ -232,7 +232,15 @@ bool AIScriptKlein::GoalChanged(int currentGoalNumber, int newGoalNumber) {
AI_Movement_Track_Append(kActorKlein, 32, 5); // kSetPS07
AI_Movement_Track_Repeat(kActorKlein);
break;
- // TODO: missing kGoalKleinIsAnnoyedByMcCoyFinal case
+ case kGoalKleinIsAnnoyedByMcCoyFinal:
+ // Note: Original was missing the kGoalKleinIsAnnoyedByMcCoyFinal case
+ // so we just "break" for the original behavior
+ if (_vm->_cutContent) {
+ AI_Movement_Track_Flush(kActorKlein);
+ AI_Movement_Track_Append(kActorKlein, 74, Random_Query(10, 20)); // kSetPS07
+ AI_Movement_Track_Repeat(kActorKlein);
+ }
+ break;
case kGoalKleinAwayAtEndOfActOne:
AI_Movement_Track_Flush(kActorKlein);
Actor_Put_In_Set(kActorKlein, kSetFreeSlotC);
diff --git a/engines/bladerunner/script/scene/ps07.cpp b/engines/bladerunner/script/scene/ps07.cpp
index 6ded562877..718254584e 100644
--- a/engines/bladerunner/script/scene/ps07.cpp
+++ b/engines/bladerunner/script/scene/ps07.cpp
@@ -43,8 +43,14 @@ void SceneScriptPS07::InitializeScene() {
}
void SceneScriptPS07::SceneLoaded() {
- Obstacle_Object("RICE BOX01", true);
+ Obstacle_Object("RICE BOX01", true); // garbage can
Unobstacle_Object("RICE BOX01", true);
+ if (_vm->_cutContent) {
+ Unobstacle_Object("L.MOUSE", true);
+ Unobstacle_Object("L.MOUSE2", true);
+ Clickable_Object("L.MOUSE");
+ Clickable_Object("L.MOUSE2");
+ }
}
bool SceneScriptPS07::MouseClick(int x, int y) {
diff --git a/engines/bladerunner/set.cpp b/engines/bladerunner/set.cpp
index fe9c2085ba..8c0dc6cddf 100644
--- a/engines/bladerunner/set.cpp
+++ b/engines/bladerunner/set.cpp
@@ -486,6 +486,12 @@ void Set::overrideSceneObjectInfo(int objectId) const {
_objects[objectId].bbox.setXYZ(695.63f, 42.65f, -628.10f, 706.71f, 69.22f, -614.47f);
}
break;
+ case kScenePS07:
+ // Make the mid-wall thinner to enable access to clickable object (buzzer)
+ if (objectId == 1 && _objects[objectId].name == "BOX01") {
+ _objects[objectId].bbox.setXYZ(526.91f, 0.0f, -582.62f, 531.50f, 48.43f, -511.72f);
+ }
+ break;
case kSceneNR05:
if (objectId == 10 && _objects[objectId].name == "BOX08") {
_objects[objectId].bbox.setXYZ(-748.75f, 0.0f, -257.39f, -685.37f, 32.01f, -211.47f);
@@ -580,6 +586,16 @@ void Set::patchInAdditionalObjectsInSet() {
setupNewObjectInSet(custObjName, bbox);
break;
+ case kScenePS07:
+ // add missing buzzer button to annoy Klein
+ bbox = BoundingBox(530.16f, 48.44f, -570.13f, 550.41f, 50.46f, -558.77f);
+ custObjName = "L.MOUSE";
+ setupNewObjectInSet(custObjName, bbox);
+ bbox = BoundingBox(541.18f, 28.95f, -566.66f, 555.18f, 44.46f, -548.79f);
+ custObjName = "L.MOUSE2";
+ setupNewObjectInSet(custObjName, bbox);
+ break;
+
case kSceneNR05:
bbox = BoundingBox(-690.0f, 0.0f, -155.0f, -640.0f, 33.47f, -100.0f);
custObjName = "CUSTLFTBLOCK";