diff options
author | Thanasis Antoniou | 2019-05-05 14:30:06 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-05-05 14:33:04 +0300 |
commit | 8787bbb39029ef6fc901ded8a09fba4215e03f79 (patch) | |
tree | b8987703920e0ac331f383b43d90e351ecf55373 | |
parent | f0420c9c8fe07d8d7d0fce5409fc9f4b1fc50d52 (diff) | |
download | scummvm-rg350-8787bbb39029ef6fc901ded8a09fba4215e03f79.tar.gz scummvm-rg350-8787bbb39029ef6fc901ded8a09fba4215e03f79.tar.bz2 scummvm-rg350-8787bbb39029ef6fc901ded8a09fba4215e03f79.zip |
BLADERUNNER: fix for Clovis being stuck at BB11
This is a possible bugfix, hopefully it will be enough
The bug occurs when skipping fast through the dialogue of Clovis with Sadik at BB11 rooftop. But it does not happen always. I've managed to capture the case when this happens a few times (_animationState == 0 switch clause), but I'm unsure if there are other unhandled _animationState values that would cause this.
-rw-r--r-- | engines/bladerunner/script/ai/clovis.cpp | 15 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ps10.cpp | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ps11.cpp | 6 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ps12.cpp | 32 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ps13.cpp | 32 | ||||
-rw-r--r-- | engines/bladerunner/script/vk_script.cpp | 2 |
6 files changed, 52 insertions, 37 deletions
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp index 542beb027a..b26df93697 100644 --- a/engines/bladerunner/script/ai/clovis.cpp +++ b/engines/bladerunner/script/ai/clovis.cpp @@ -1436,13 +1436,28 @@ bool AIScriptClovis::ChangeAnimationMode(int mode) { case kAnimationModeSit: switch (_animationState) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + // Sometimes the animationState will be 0 here (seems to happen randomly if skipping fast through the dialogue) + // and this would cause Clovis to not switch to his sitting animation + // and thus the BB11 rooftop scene would get stuck there + case 0: + // fall through +#endif // BLADERUNNER_ORIGINAL_BUGS case 4: + // fall through case 5: + // fall through case 6: + // fall through case 7: + // fall through case 8: + // fall through case 9: + // fall through case 10: + // fall through case 11: _animationState = 3; _animationFrame = 0; diff --git a/engines/bladerunner/script/scene/ps10.cpp b/engines/bladerunner/script/scene/ps10.cpp index 6cb50cde29..18e9b13cd5 100644 --- a/engines/bladerunner/script/scene/ps10.cpp +++ b/engines/bladerunner/script/scene/ps10.cpp @@ -503,7 +503,7 @@ bool SceneScriptPS10::ClickedOnItem(int itemId, bool combatMode) { case kItemPS10Target4: Sound_Play(kSfxFEMHURT2, 50, 0, 0, 50); break; - case kItemPS10Target5: // fall-through + case kItemPS10Target5: // fall through case kItemPS10Target7: Sound_Play(kSfxMALEHURT, 50, 0, 0, 50); break; diff --git a/engines/bladerunner/script/scene/ps11.cpp b/engines/bladerunner/script/scene/ps11.cpp index a56e3d076d..8a68bc45be 100644 --- a/engines/bladerunner/script/scene/ps11.cpp +++ b/engines/bladerunner/script/scene/ps11.cpp @@ -755,12 +755,12 @@ bool SceneScriptPS11::ClickedOnActor(int actorId) { bool SceneScriptPS11::ClickedOnItem(int itemId, bool combatMode) { if (Player_Query_Combat_Mode()) { switch (itemId) { - case kItemPS11Target4: // fall-through + case kItemPS11Target4: // fall through case kItemPS11Target15: Sound_Play(kSfxMALEHURT, 50, 0, 0, 50); break; - case kItemPS11Target7: // fall-through - case kItemPS11Target8: // fall-through + case kItemPS11Target7: // fall through + case kItemPS11Target8: // fall through case kItemPS11Target13: Sound_Play(kSfxFEMHURT2, 50, 0, 0, 50); break; diff --git a/engines/bladerunner/script/scene/ps12.cpp b/engines/bladerunner/script/scene/ps12.cpp index 0d0fceeefe..cd45c16306 100644 --- a/engines/bladerunner/script/scene/ps12.cpp +++ b/engines/bladerunner/script/scene/ps12.cpp @@ -826,8 +826,8 @@ bool SceneScriptPS12::ClickedOnItem(int itemId, bool a2) { Item_Spin_In_World(itemId); #endif // BLADERUNNER_ORIGINAL_BUGS switch (itemId) { - case kItemPS12Target6: // fall-through - case kItemPS12Target7: // fall-through + case kItemPS12Target6: // fall through + case kItemPS12Target7: // fall through case kItemPS12Target8: #if BLADERUNNER_ORIGINAL_BUGS #else @@ -843,20 +843,20 @@ bool SceneScriptPS12::ClickedOnItem(int itemId, bool a2) { Item_Flag_As_Non_Target(kItemPS12Target7); Item_Flag_As_Non_Target(kItemPS12Target8); break; - case kItemPS12Target1: // fall-through - case kItemPS12Target2: // fall-through - case kItemPS12Target3: // fall-through - case kItemPS12Target4: // fall-through - case kItemPS12Target5: // fall-through - case kItemPS12Target9: // fall-through - case kItemPS12Target10: // fall-through - case kItemPS12Target11: // fall-through - case kItemPS12Target12: // fall-through - case kItemPS12Target13: // fall-through - case kItemPS12Target14: // fall-through - case kItemPS12Target15: // fall-through - case kItemPS12Target16: // fall-through - case kItemPS12Target17: // fall-through + case kItemPS12Target1: // fall through + case kItemPS12Target2: // fall through + case kItemPS12Target3: // fall through + case kItemPS12Target4: // fall through + case kItemPS12Target5: // fall through + case kItemPS12Target9: // fall through + case kItemPS12Target10: // fall through + case kItemPS12Target11: // fall through + case kItemPS12Target12: // fall through + case kItemPS12Target13: // fall through + case kItemPS12Target14: // fall through + case kItemPS12Target15: // fall through + case kItemPS12Target16: // fall through + case kItemPS12Target17: // fall through default: #if BLADERUNNER_ORIGINAL_BUGS #else diff --git a/engines/bladerunner/script/scene/ps13.cpp b/engines/bladerunner/script/scene/ps13.cpp index ef1d45f883..95dc38dd39 100644 --- a/engines/bladerunner/script/scene/ps13.cpp +++ b/engines/bladerunner/script/scene/ps13.cpp @@ -694,11 +694,11 @@ bool SceneScriptPS13::ClickedOnActor(int actorId) { bool SceneScriptPS13::ClickedOnItem(int itemId, bool a2) { if (Player_Query_Combat_Mode()) { switch (itemId) { - case kItemPS13Target3: // fall-through + case kItemPS13Target3: // fall through case kItemPS13Target5: Sound_Play(kSfxFEMHURT2, 50, 0, 0, 50); break; - case kItemPS13Target10: // fall-through + case kItemPS13Target10: // fall through case kItemPS13Target11: Sound_Play(kSfxMALEHURT, 50, 0, 0, 50); break; @@ -710,8 +710,8 @@ bool SceneScriptPS13::ClickedOnItem(int itemId, bool a2) { Item_Spin_In_World(itemId); #endif // BLADERUNNER_ORIGINAL_BUGS switch (itemId) { - case kItemPS13Target10: // fall-through - case kItemPS13Target11: // fall-through + case kItemPS13Target10: // fall through + case kItemPS13Target11: // fall through case kItemPS13Target12: #if BLADERUNNER_ORIGINAL_BUGS #else @@ -727,18 +727,18 @@ bool SceneScriptPS13::ClickedOnItem(int itemId, bool a2) { Item_Flag_As_Non_Target(kItemPS13Target11); Item_Flag_As_Non_Target(kItemPS13Target12); 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 + 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: #if BLADERUNNER_ORIGINAL_BUGS #else diff --git a/engines/bladerunner/script/vk_script.cpp b/engines/bladerunner/script/vk_script.cpp index 1d99e1611d..cb6ed88075 100644 --- a/engines/bladerunner/script/vk_script.cpp +++ b/engines/bladerunner/script/vk_script.cpp @@ -511,7 +511,7 @@ void VKScript::SCRIPT_VK_DLL_McCoy_Asks_Question(int actorId, int questionId) { case kActorBulletBob: // debug("Last Bullet Bob Question!"); // don't break for BOB - // fall-through + // fall through default: VK_Subject_Reacts(5, 0, 0, 100); } |