aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script
diff options
context:
space:
mode:
authorThanasis Antoniou2019-02-28 15:24:37 +0200
committerThanasis Antoniou2019-02-28 15:26:35 +0200
commit571ddf46cdc52a0abb35e1efbcd0f8800e3419fe (patch)
tree0644bd8018c373dd0b1658434119acd8c117fb1c /engines/bladerunner/script
parent833e1d11c0647c46757347bbc955259c40e9e83d (diff)
downloadscummvm-rg350-571ddf46cdc52a0abb35e1efbcd0f8800e3419fe.tar.gz
scummvm-rg350-571ddf46cdc52a0abb35e1efbcd0f8800e3419fe.tar.bz2
scummvm-rg350-571ddf46cdc52a0abb35e1efbcd0f8800e3419fe.zip
BLADERUNNER: A better fix for Sebastian's doll
Use just the existing box 31. Implement a way to override object placement. Remove the item 77 (Holden's badge) completely.
Diffstat (limited to 'engines/bladerunner/script')
-rw-r--r--engines/bladerunner/script/scene/bb06.cpp45
1 files changed, 23 insertions, 22 deletions
diff --git a/engines/bladerunner/script/scene/bb06.cpp b/engines/bladerunner/script/scene/bb06.cpp
index cef2a5a572..92fdefefd8 100644
--- a/engines/bladerunner/script/scene/bb06.cpp
+++ b/engines/bladerunner/script/scene/bb06.cpp
@@ -87,10 +87,8 @@ void SceneScriptBB06::SceneLoaded() {
// otherwise the doll item is not placed in the current set
Item_Add_To_World(kItemBB06ControlBox, 931, kSetBB06_BB07, -127.0f, 68.42f, 57.0f, 0, 8, 8, true, true, false, true);
#else
- // Add doll item based on which SET version of the "room" we are in
- Item_Add_To_World(kItemBB06ControlBox, 931, Player_Query_Current_Set(), -117.24f, 46.41f, 76.66f, 256, 28, 16, true, true, false, true);
- if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
- Item_Flag_As_Non_Target(kItemBB06ControlBox);
+ if (!Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
+ Combat_Target_Object("BOX31"); //
}
#endif // BLADERUNNER_ORIGINAL_BUGS
}
@@ -101,6 +99,7 @@ bool SceneScriptBB06::MouseClick(int x, int y) {
bool SceneScriptBB06::ClickedOn3DObject(const char *objectName, bool a2) {
if (Object_Query_Click("BOX31", objectName)) {
+#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "BOX31", 24, true, false)) {
Actor_Face_Object(kActorMcCoy, "BOX31", true);
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
@@ -110,6 +109,24 @@ bool SceneScriptBB06::ClickedOn3DObject(const char *objectName, bool a2) {
Actor_Voice_Over(50, kActorVoiceOver);
}
}
+#else
+ if (Player_Query_Combat_Mode()) {
+ Overlay_Play("BB06OVER", 0, false, true, 0); // explosion - don't loop
+ Game_Flag_Set(kFlagBB06AndroidDestroyed);
+ Un_Combat_Target_Object("BOX31");
+ return true;
+ } else {
+ if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "BOX31", 24, true, false)) {
+ Actor_Face_Object(kActorMcCoy, "BOX31", true);
+ if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
+ Actor_Voice_Over(60, kActorVoiceOver);
+ Actor_Voice_Over(70, kActorVoiceOver);
+ } else {
+ Actor_Voice_Over(50, kActorVoiceOver);
+ }
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
return false;
}
@@ -119,26 +136,16 @@ bool SceneScriptBB06::ClickedOnActor(int actorId) {
}
bool SceneScriptBB06::ClickedOnItem(int itemId, bool a2) {
- if (itemId == kItemBB06ControlBox) {
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
+ if (itemId == kItemBB06ControlBox) {
if (Player_Query_Combat_Mode()) {
Overlay_Play("BB06OVER", 1, true, true, 0);
Game_Flag_Set(kFlagBB06AndroidDestroyed);
Item_Remove_From_World(kItemBB06ControlBox);
return true;
}
-#else
- if (Player_Query_Combat_Mode()) {
- Overlay_Play("BB06OVER", 0, false, true, 0); // explosion - don't loop
- Game_Flag_Set(kFlagBB06AndroidDestroyed);
- // flag item kItemBB06ControlBox as non-combat-target
- Item_Flag_As_Non_Target(kItemBB06ControlBox);
- return true;
- } else {
- ClickedOn3DObject("BOX31", false); // clone behavior of box31
- }
-#endif // BLADERUNNER_ORIGINAL_BUGS
}
+#endif // BLADERUNNER_ORIGINAL_BUGS
return false;
}
@@ -217,12 +224,6 @@ void SceneScriptBB06::PlayerWalkedIn() {
}
void SceneScriptBB06::PlayerWalkedOut() {
-#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
-#else
- // this might be redundant -- the item is not visible in BB07 even if it was drawn in BB06
- Item_Remove_From_World(kItemBB06ControlBox); // this removes the item from the set so it won't exist in the next scene
- // mainly to remove it completely from BB07
-#endif // BLADERUNNER_ORIGINAL_BUGS
}
void SceneScriptBB06::DialogueQueueFlushed(int a1) {