diff options
author | Thanasis Antoniou | 2019-03-18 17:04:03 +0200 |
---|---|---|
committer | Thanasis Antoniou | 2019-03-18 17:07:10 +0200 |
commit | 717705f7c947285773b12d055b4014a79453551c (patch) | |
tree | 6800a88cd82f6a8a401dd760e883f35fedca9691 /engines/bladerunner/script/scene/ps13.cpp | |
parent | f73584f0e5b43f24db4b66cdd07acc7f5c9f617b (diff) | |
download | scummvm-rg350-717705f7c947285773b12d055b4014a79453551c.tar.gz scummvm-rg350-717705f7c947285773b12d055b4014a79453551c.tar.bz2 scummvm-rg350-717705f7c947285773b12d055b4014a79453551c.zip |
BLADERUNNER: Fixes and cleanup for Police Maze A
Only fixes for rooms PS10, PS11. A few cases may need revising.
There are a few cases that a target may reset after being shot and they seem buggy but they could also be intended. So, that's for a second pass to decide.
Diffstat (limited to 'engines/bladerunner/script/scene/ps13.cpp')
-rw-r--r-- | engines/bladerunner/script/scene/ps13.cpp | 124 |
1 files changed, 52 insertions, 72 deletions
diff --git a/engines/bladerunner/script/scene/ps13.cpp b/engines/bladerunner/script/scene/ps13.cpp index 26cf31b3ba..7454d42a87 100644 --- a/engines/bladerunner/script/scene/ps13.cpp +++ b/engines/bladerunner/script/scene/ps13.cpp @@ -26,6 +26,10 @@ namespace BladeRunner { static int kPoliceMazePS13TargetCount = 20; +int SceneScriptPS13::getPoliceMazePS13TargetCount() { + return kPoliceMazePS13TargetCount; +} + void SceneScriptPS13::InitializeScene() { Police_Maze_Set_Pause_State(true); if (Game_Flag_Query(kFlagPS12toPS13)) { @@ -479,21 +483,27 @@ void SceneScriptPS13::SceneLoaded() { Unclickable_Object("PARKMETR16"); if (!Query_System_Currently_Loading_Game()) { - Item_Add_To_World(kItemPS13Target1, 443, kSetPS10_PS11_PS12_PS13, -372.0f, -9.0f, 1509.0f, 960, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target2, 443, kSetPS10_PS11_PS12_PS13, 291.61f, -0.66f, 1610.3f, 823, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target3, 447, kSetPS10_PS11_PS12_PS13, -25.0f, 102.0f, 1625.0f, 823, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target4, 449, kSetPS10_PS11_PS12_PS13, -45.51f, -8.8f, 1676.0f, 922, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target5, 447, kSetPS10_PS11_PS12_PS13, 291.61f, -0.66f, 1610.3f, 823, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target6, 443, kSetPS10_PS11_PS12_PS13, -24.0f, 102.0f, 1625.0f, 823, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target7, 449, kSetPS10_PS11_PS12_PS13, 180.0f, -72.7f, 1605.0f, 305, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target8, 443, kSetPS10_PS11_PS12_PS13, 127.79f, 14.56f, 1703.03f, 356, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target9, 443, kSetPS10_PS11_PS12_PS13, 136.37f, -6.84f, 1425.43f, 512, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target10, 441, kSetPS10_PS11_PS12_PS13, 77.83f, -79.8f, 1520.5f, 327, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target11, 441, kSetPS10_PS11_PS12_PS13, 77.83f, -7.8f, 1520.5f, 327, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target12, 443, kSetPS10_PS11_PS12_PS13, -88.0f, -8.8f, 1520.5f, 327, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target13, 447, kSetPS10_PS11_PS12_PS13, -45.51f, -8.8f, 1676.0f, 922, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target14, 445, kSetPS10_PS11_PS12_PS13, -300.0f, -79.75f, 1543.0f, 465, 72, 36, true, false, false, true); - Item_Add_To_World(kItemPS13Target15, 449, kSetPS10_PS11_PS12_PS13, -325.0f, -7.75f, 1543.0f, 465, 72, 36, true, false, false, true); + bool targetStateMZ = true; +#if BLADERUNNER_ORIGINAL_BUGS +#else +// every maze target begins as NON-targetable + targetStateMZ = false; +#endif // BLADERUNNER_ORIGINAL_BUGS + Item_Add_To_World(kItemPS13Target1, 443, kSetPS10_PS11_PS12_PS13, -372.0f, -9.0f, 1509.0f, 960, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target2, 443, kSetPS10_PS11_PS12_PS13, 291.61f, -0.66f, 1610.3f, 823, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target3, 447, kSetPS10_PS11_PS12_PS13, -25.0f, 102.0f, 1625.0f, 823, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target4, 449, kSetPS10_PS11_PS12_PS13, -45.51f, -8.8f, 1676.0f, 922, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target5, 447, kSetPS10_PS11_PS12_PS13, 291.61f, -0.66f, 1610.3f, 823, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target6, 443, kSetPS10_PS11_PS12_PS13, -24.0f, 102.0f, 1625.0f, 823, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target7, 449, kSetPS10_PS11_PS12_PS13, 180.0f, -72.7f, 1605.0f, 305, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target8, 443, kSetPS10_PS11_PS12_PS13, 127.79f, 14.56f, 1703.03f, 356, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target9, 443, kSetPS10_PS11_PS12_PS13, 136.37f, -6.84f, 1425.43f, 512, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target10, 441, kSetPS10_PS11_PS12_PS13, 77.83f, -79.8f, 1520.5f, 327, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target11, 441, kSetPS10_PS11_PS12_PS13, 77.83f, -7.8f, 1520.5f, 327, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target12, 443, kSetPS10_PS11_PS12_PS13, -88.0f, -8.8f, 1520.5f, 327, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target13, 447, kSetPS10_PS11_PS12_PS13, -45.51f, -8.8f, 1676.0f, 922, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target14, 445, kSetPS10_PS11_PS12_PS13, -300.0f, -79.75f, 1543.0f, 465, 72, 36, targetStateMZ, false, false, true); + Item_Add_To_World(kItemPS13Target15, 449, kSetPS10_PS11_PS12_PS13, -325.0f, -7.75f, 1543.0f, 465, 72, 36, targetStateMZ, false, false, true); } Police_Maze_Target_Track_Add(kItemPS13Target1, -372.0f, -9.0f, 1509.0f, -345.0f, -9.0f, 1509.0f, 6, getPoliceMazePS13TrackData46(), true); @@ -528,74 +538,42 @@ bool SceneScriptPS13::ClickedOnActor(int actorId) { bool SceneScriptPS13::ClickedOnItem(int itemId, bool a2) { if (Player_Query_Combat_Mode()) { switch (itemId) { - case kItemPS13Target3: - Sound_Play(4, 50, 0, 0, 50); - break; + case kItemPS13Target3: // fall-through case kItemPS13Target5: - Sound_Play(4, 50, 0, 0, 50); - break; - case kItemPS13Target10: - Sound_Play(555, 50, 0, 0, 50); + Sound_Play(4, 50, 0, 0, 50); // FEMHURT2 break; + case kItemPS13Target10: // fall-through case kItemPS13Target11: - Sound_Play(555, 50, 0, 0, 50); + Sound_Play(555, 50, 0, 0, 50); // MALEHURT break; default: - Sound_Play(2, 12, 0, 0, 50); + Sound_Play(2, 12, 0, 0, 50); // SPINNY1 break; } Item_Spin_In_World(itemId); - Item_Flag_As_Non_Target(itemId); - if (itemId == kItemPS13Target1) { - Item_Flag_As_Non_Target(kItemPS13Target1); - } - if (itemId == kItemPS13Target2) { - Item_Flag_As_Non_Target(kItemPS13Target2); - } - if (itemId == kItemPS13Target3) { - Item_Flag_As_Non_Target(kItemPS13Target3); - } - if (itemId == kItemPS13Target4) { - Item_Flag_As_Non_Target(kItemPS13Target4); - } - if (itemId == kItemPS13Target5) { - Item_Flag_As_Non_Target(kItemPS13Target5); - } - if (itemId == kItemPS13Target6) { - Item_Flag_As_Non_Target(kItemPS13Target6); - } - if (itemId == kItemPS13Target7) { - Item_Flag_As_Non_Target(kItemPS13Target7); - } - if (itemId == kItemPS13Target8) { - Item_Flag_As_Non_Target(kItemPS13Target8); - } - if (itemId == kItemPS13Target9) { - Item_Flag_As_Non_Target(kItemPS13Target9); - } - if (itemId == kItemPS13Target10) { - Item_Flag_As_Non_Target(kItemPS13Target10); - Item_Flag_As_Non_Target(kItemPS13Target11); - Item_Flag_As_Non_Target(kItemPS13Target12); - } - if (itemId == kItemPS13Target11) { - Item_Flag_As_Non_Target(kItemPS13Target10); - Item_Flag_As_Non_Target(kItemPS13Target11); - Item_Flag_As_Non_Target(kItemPS13Target12); - } - if (itemId == kItemPS13Target12) { + switch (itemId) { + case kItemPS13Target10: // fall-through + case kItemPS13Target11: // fall-through + case kItemPS13Target12: Item_Flag_As_Non_Target(kItemPS13Target10); Item_Flag_As_Non_Target(kItemPS13Target11); Item_Flag_As_Non_Target(kItemPS13Target12); - } - if (itemId == kItemPS13Target13) { - Item_Flag_As_Non_Target(kItemPS13Target13); - } - if (itemId == kItemPS13Target14) { - Item_Flag_As_Non_Target(kItemPS13Target14); - } - if (itemId == kItemPS13Target15) { - Item_Flag_As_Non_Target(kItemPS13Target15); + break; + case kItemPS13Target1: // fall-through + case kItemPS13Target2: // fall-through + case kItemPS13Target3: // fall-through + case kItemPS13Target4: // fall-through + case kItemPS13Target5: // fall-through + case kItemPS13Target6: // fall-through + case kItemPS13Target7: // fall-through + case kItemPS13Target8: // fall-through + case kItemPS13Target9: // fall-through + case kItemPS13Target13: // fall-through + case kItemPS13Target14: // fall-through + case kItemPS13Target15: // fall-through + default: + Item_Flag_As_Non_Target(itemId); + break; } return true; } @@ -621,6 +599,8 @@ bool SceneScriptPS13::ClickedOnExit(int exitId) { removeTargets(); Global_Variable_Decrement(kVariablePoliceMazeScore, kPoliceMazePS13TargetCount - Global_Variable_Query(kVariablePoliceMazePS13TargetCounter)); Set_Score(kActorMcCoy, Global_Variable_Query(kVariablePoliceMazeScore)); +// Common::String scoreString = Common::String::format("Final: %03d", Global_Variable_Query(kVariablePoliceMazeScore)); +// Set_Subtitle_Text_On_Screen(scoreString); Global_Variable_Reset(kVariablePoliceMazePS10TargetCounter); Global_Variable_Reset(kVariablePoliceMazePS11TargetCounter); Global_Variable_Reset(kVariablePoliceMazePS12TargetCounter); |