[Scummvm-git-logs] scummvm master -> 45448f93da6b608061de2103b373263b6163b15b
antoniou79
a.antoniou79 at gmail.com
Sun Dec 20 16:11:53 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
45448f93da BLADERUNNER: Fix for when talking characters get interrupted
Commit: 45448f93da6b608061de2103b373263b6163b15b
https://github.com/scummvm/scummvm/commit/45448f93da6b608061de2103b373263b6163b15b
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2020-12-20T18:10:08+02:00
Commit Message:
BLADERUNNER: Fix for when talking characters get interrupted
Changed paths:
engines/bladerunner/script/ai/gordo.cpp
engines/bladerunner/script/ai/lucy.cpp
engines/bladerunner/script/ai/mccoy.cpp
engines/bladerunner/script/ai/runciter.cpp
engines/bladerunner/script/scene/dr05.cpp
engines/bladerunner/script/scene/hf05.cpp
engines/bladerunner/script/scene/nr07.cpp
engines/bladerunner/script/scene/ps09.cpp
engines/bladerunner/script/scene/rc04.cpp
engines/bladerunner/script/script.cpp
engines/bladerunner/script/script.h
engines/bladerunner/script/vk_script.cpp
engines/bladerunner/ui/vk.cpp
engines/bladerunner/ui/vk.h
diff --git a/engines/bladerunner/script/ai/gordo.cpp b/engines/bladerunner/script/ai/gordo.cpp
index 320cd7c161..42971ef640 100644
--- a/engines/bladerunner/script/ai/gordo.cpp
+++ b/engines/bladerunner/script/ai/gordo.cpp
@@ -1894,7 +1894,12 @@ void AIScriptGordo::dialogue1() {
Actor_Says(kActorGordo, 500, 13);
Actor_Says(kActorMcCoy, 3290, 16);
Actor_Says(kActorGordo, 510, 15);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 3295, 14);
+#else
+ // McCoy is kind of interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 3295, 0.0f, 14);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGordo, 520, 12);
Actor_Modify_Friendliness_To_Other(kActorGordo, kActorMcCoy, -4);
break;
@@ -1908,7 +1913,12 @@ void AIScriptGordo::dialogue1() {
Actor_Says(kActorGordo, 500, 13);
Actor_Says(kActorMcCoy, 3290, 16);
Actor_Says(kActorGordo, 510, 15);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 3295, 14);
+#else
+ // McCoy is kind of interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 3295, 0.0f, 14);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGordo, 520, 12);
Actor_Modify_Friendliness_To_Other(kActorGordo, kActorMcCoy, -1);
break;
diff --git a/engines/bladerunner/script/ai/lucy.cpp b/engines/bladerunner/script/ai/lucy.cpp
index dda41cbc20..8f035879ba 100644
--- a/engines/bladerunner/script/ai/lucy.cpp
+++ b/engines/bladerunner/script/ai/lucy.cpp
@@ -889,7 +889,12 @@ void AIScriptLucy::voightKampffTest() {
Actor_Says(kActorLucy, 1070, 17);
Delay(1000);
Actor_Says(kActorLucy, 1080, 14);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 6820, 16);
+#else
+ // McCoy is interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 6820, 0.0f, 16);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorLucy, 1090, 13);
if (!Game_Flag_Query(kFlagDirectorsCut)) {
Actor_Says(kActorMcCoy, 6825, 13);
@@ -898,7 +903,13 @@ void AIScriptLucy::voightKampffTest() {
Actor_Says(kActorLucy, 1100, 14);
Actor_Says(kActorMcCoy, 6835, 14);
Actor_Says(kActorLucy, 1110, 15);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 6840, 13);
+#else
+ // McCoy cuts his sentence short here.
+ // He is not interrupted, but still we should use Actor_Says_With_Pause 0.0f
+ Actor_Says_With_Pause(kActorMcCoy, 6840, 0.0f, 13);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Delay(1000);
Actor_Says(kActorMcCoy, 6845, 12);
Delay(500);
@@ -938,7 +949,12 @@ void AIScriptLucy::voightKampffTest() {
Actor_Says(kActorLucy, 1210, 17);
}
Actor_Says(kActorMcCoy, 6895, 15);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 6900, 11);
+#else
+ // McCoy is interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 6900, 0.0f, 11);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorLucy, 1220, 16);
Actor_Says(kActorMcCoy, 6905, 13);
Actor_Says(kActorLucy, 1230, 17);
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index 4df9ff34d8..4925a89656 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -510,7 +510,12 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Says(kActorMcCoy, 6685, 13);
Delay(500);
Actor_Says(kActorMcCoy, 6695, 16);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 6700, 17);
+#else
+ // McCoy is interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 6700, 0.0f, 17);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGuzza, 1480, kAnimationModeTalk);
Actor_Says(kActorMcCoy, 6705, 11);
Sound_Play(kSfxSPNBEEP9, 50, 0, 0, 50);
diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp
index fb522130ec..5cd72cb697 100644
--- a/engines/bladerunner/script/ai/runciter.cpp
+++ b/engines/bladerunner/script/ai/runciter.cpp
@@ -124,7 +124,12 @@ void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatM
Actor_Says(kActorMcCoy, 4770, -1);
Actor_Says(kActorRunciter, 590, 13);
Actor_Says(kActorMcCoy, 4775, -1);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorRunciter, 600, 17);
+#else
+ // Runciter is interrupted here
+ Actor_Says_With_Pause(kActorRunciter, 600, 0.0f, 17);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Sound_Play(kSfxSHOTCOK1, 100, 0, 100, 50);
Actor_Says(kActorMcCoy, 4780, -1);
Actor_Says(kActorRunciter, 610, 18);
@@ -138,19 +143,34 @@ void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatM
Actor_Says(kActorRunciter, 660, 19);
Actor_Clue_Acquire(kActorMcCoy, kClueRuncitersConfession1, true, kActorRunciter);
} else {
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorRunciter, 670, 18);
+#else
+ // Runciter is interrupted here
+ Actor_Says_With_Pause(kActorRunciter, 670, 0.0f, 18);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 4795, -1);
Actor_Says(kActorRunciter, 730, 17);
}
} else if (Actor_Clue_Query(kActorMcCoy, kClueEnvelope)) {
Actor_Says(kActorMcCoy, 4730, -1);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorRunciter, 480, 17);
+#else
+ // Runciter is kind of interrupted here
+ Actor_Says_With_Pause(kActorRunciter, 480, 0.0f, 17);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 4735, -1);
Actor_Says(kActorRunciter, 490, 16);
Sound_Play(kSfxSHOTCOK1, 100, 0, 100, 50);
Actor_Says(kActorMcCoy, 4740, -1);
Actor_Says(kActorRunciter, 500, 18);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorRunciter, 510, 19);
+#else
+ // Runciter is kind of interrupted here
+ Actor_Says_With_Pause(kActorRunciter, 510, 0.0f, 19);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 4745, -1);
Actor_Says(kActorMcCoy, 4750, -1);
Actor_Says(kActorRunciter, 520, 17);
diff --git a/engines/bladerunner/script/scene/dr05.cpp b/engines/bladerunner/script/scene/dr05.cpp
index 7d9bd2f174..d0953887d4 100644
--- a/engines/bladerunner/script/scene/dr05.cpp
+++ b/engines/bladerunner/script/scene/dr05.cpp
@@ -102,7 +102,12 @@ bool SceneScriptDR05::ClickedOnItem(int itemId, bool a2) {
) {
if (!Actor_Query_Goal_Number(kActorMoraji)) {
Actor_Says_With_Pause(kActorMcCoy, 1015, 0.1f, 12);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMoraji, 70, 13);
+#else
+ // Moraji speaks and the place blows up immediately after
+ Actor_Says_With_Pause(kActorMoraji, 70, 0.0f, 13);
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Actor_Set_Goal_Number(kActorMoraji, kGoalMorajiChooseFate);
}
diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp
index 49e37b2088..b1937f5091 100644
--- a/engines/bladerunner/script/scene/hf05.cpp
+++ b/engines/bladerunner/script/scene/hf05.cpp
@@ -445,6 +445,7 @@ void SceneScriptHF05::dialogueWithCrazylegs1() {
Actor_Says(kActorCrazylegs, 550, 16);
Actor_Says(kActorMcCoy, 1940, 15);
Actor_Says(kActorMcCoy, 1945, -1);
+ // CrazyLegs cuts his sentence short here. He is not interrupted.
Actor_Says(kActorCrazylegs, 560, 15);
Actor_Says(kActorCrazylegs, 570, 16);
Actor_Says(kActorMcCoy, 1950, 17);
@@ -608,7 +609,12 @@ void SceneScriptHF05::talkWithDektora() {
Actor_Says(kActorDektora, 2660, 12);
Actor_Says(kActorMcCoy, 8990, kAnimationModeTalk);
Actor_Says(kActorDektora, 2670, 13);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorDektora, 2680, 17);
+#else
+ // Dektora is interrupted here
+ Actor_Says_With_Pause(kActorDektora, 2680, 0.0f, 17);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 8995, 14);
Actor_Says(kActorDektora, 2690, 15);
Actor_Says_With_Pause(kActorMcCoy, 9000, 1.0f, 16);
@@ -657,6 +663,7 @@ void SceneScriptHF05::talkWithCrazylegs3(int affectionTowardsActor) {
Actor_Says(kActorMcCoy, 1725, kAnimationModeTalk);
Actor_Says(kActorCrazylegs, 40, 16);
Actor_Says(kActorCrazylegs, 50, kAnimationModeTalk);
+ // CrazyLegs cuts his sentence short here. He is not interrupted.
Actor_Says(kActorCrazylegs, 60, 12);
Actor_Says(kActorCrazylegs, 70, 13);
Actor_Says(kActorMcCoy, 1730, kAnimationModeTalk);
@@ -697,6 +704,7 @@ void SceneScriptHF05::talkWithCrazyLegs1() {
ADQ_Flush();
ADQ_Add(kActorCrazylegs, 130, 18);
ADQ_Add(kActorCrazylegs, 140, 18);
+ // CrazyLegs cuts his sentence short here. He is not interrupted.
ADQ_Add(kActorCrazylegs, 150, 18);
ADQ_Add(kActorCrazylegs, 160, 17);
}
diff --git a/engines/bladerunner/script/scene/nr07.cpp b/engines/bladerunner/script/scene/nr07.cpp
index 0481cf0399..98a54f9c74 100644
--- a/engines/bladerunner/script/scene/nr07.cpp
+++ b/engines/bladerunner/script/scene/nr07.cpp
@@ -90,7 +90,12 @@ bool SceneScriptNR07::ClickedOnActor(int actorId) {
case 1090: // EARLY-Q
Actor_Says(kActorMcCoy, 3650, 13);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorDektora, 630, 30);
+#else
+ // Dektora is interrupted here
+ Actor_Says_With_Pause(kActorDektora, 630, 0.0f, 30);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 3655, 16);
Actor_Says(kActorDektora, 640, 31);
break;
@@ -224,7 +229,12 @@ void SceneScriptNR07::callHolloway() {
Actor_Says(kActorMcCoy, 3760, 19);
Actor_Says(kActorDektora, 960, kAnimationModeSit);
Actor_Says(kActorDektora, 920, kAnimationModeSit);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 3780, kAnimationModeIdle);
+#else
+ // McCoy is interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 3780, 0.0f, kAnimationModeIdle);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorDektora, 970, kAnimationModeSit);
Actor_Voice_Over(1710, kActorVoiceOver);
Actor_Voice_Over(1720, kActorVoiceOver);
@@ -314,7 +324,12 @@ void SceneScriptNR07::talkAboutBelt2() {
Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -1);
}
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorDektora, 610, 31);
+#else
+ // Dektora is interrupted here
+ Actor_Says_With_Pause(kActorDektora, 610, 0.0f, 31);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 3645, 12);
Actor_Says(kActorDektora, 620, 30);
diff --git a/engines/bladerunner/script/scene/ps09.cpp b/engines/bladerunner/script/scene/ps09.cpp
index 40c38d7d88..a1474b0732 100644
--- a/engines/bladerunner/script/scene/ps09.cpp
+++ b/engines/bladerunner/script/scene/ps09.cpp
@@ -449,7 +449,12 @@ void SceneScriptPS09::dialogueWithGrigorian() {
Actor_Face_Actor(kActorCrazylegs, kActorGrigorian, true);
Actor_Says(kActorCrazylegs, 1010, kAnimationModeTalk);
Actor_Face_Actor(kActorGrigorian, kActorCrazylegs, true);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGrigorian, 310, 16);
+#else
+ // Grigorian is interrupted here
+ Actor_Says_With_Pause(kActorGrigorian, 310, 0.0f, 16);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Face_Actor(kActorMcCoy, kActorCrazylegs, true);
Actor_Says(kActorMcCoy, 4345, 14);
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, true);
@@ -518,7 +523,12 @@ void SceneScriptPS09::dialogueWithGrigorian() {
Actor_Says(kActorMcCoy, 4265, 14);
Actor_Says(kActorGrigorian, 400, 13);
Actor_Says(kActorMcCoy, 4400, 13);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGrigorian, 410, 16);
+#else
+ // Grigorian is interrupted here, so pause has to be 0.0f
+ Actor_Says_With_Pause(kActorGrigorian, 410, 0.0f, 16);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 4405, 14);
Actor_Says(kActorMcCoy, 4410, 15);
Voight_Kampff_Activate(kActorGrigorian, 20);
diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp
index 4b4e31b014..7143ca7542 100644
--- a/engines/bladerunner/script/scene/rc04.cpp
+++ b/engines/bladerunner/script/scene/rc04.cpp
@@ -305,7 +305,12 @@ void SceneScriptRC04::dialogueWithBulletBob() {
Actor_Says(kActorMcCoy, 4980, 11);
if (Actor_Query_Friendliness_To_Other(kActorBulletBob, kActorMcCoy) > 49) {
Actor_Says(kActorBulletBob, 740, 37);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 5085, 16);
+#else
+ // McCoy is interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 5085, 0.0f, 16);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorBulletBob, 750, 37);
Actor_Says(kActorBulletBob, 760, 37);
Voight_Kampff_Activate(kActorBulletBob, 50);
@@ -319,7 +324,12 @@ void SceneScriptRC04::dialogueWithBulletBob() {
} else {
Actor_Says(kActorBulletBob, 770, 36);
Actor_Says(kActorBulletBob, 780, 36);
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorMcCoy, 5090, 16);
+#else
+ // McCoy is interrupted here
+ Actor_Says_With_Pause(kActorMcCoy, 5090, 0.0f, 16);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorBulletBob, 790, 36);
Actor_Says(kActorBulletBob, 800, 35);
Voight_Kampff_Activate(kActorBulletBob, 50);
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 0f5c80497f..0305c72ef2 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -1801,8 +1801,8 @@ void ScriptBase::ESPER_Define_Special_Region(int regionId, int innerLeft, int in
_vm->_esper->defineRegion(regionId, Common::Rect(innerLeft, innerTop, innerRight, innerBottom), Common::Rect(outerLeft, outerTop, outerRight, outerBottom), Common::Rect(selectionLeft, selectionTop, selectionRight, selectionBottom), name);
}
-void ScriptBase::VK_Play_Speech_Line(int actorId, int sentenceId, float duration) {
- _vm->_vk->playSpeechLine(actorId, sentenceId, duration);
+void ScriptBase::VK_Play_Speech_Line(int actorId, int sentenceId, float pauseDuration) {
+ _vm->_vk->playSpeechLine(actorId, sentenceId, pauseDuration);
}
void ScriptBase::VK_Add_Question(int intensity, int sentenceId, int relatedSentenceId) {
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index ea3e87fc7b..0ee951450c 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -294,7 +294,7 @@ protected:
void KIA_Play_Slice_Model(int sliceModelId);
void KIA_Play_Photograph(int photographId);
- void VK_Play_Speech_Line(int actorId, int sentenceId, float duration);
+ void VK_Play_Speech_Line(int actorId, int sentenceId, float pauseDuration);
void VK_Add_Question(int intensity, int sentenceId, int relatedSentenceId);
void VK_Subject_Reacts(int intensity, int humanResponse, int replicantResponse, int anxiety);
void VK_Eye_Animates(int loopId);
diff --git a/engines/bladerunner/script/vk_script.cpp b/engines/bladerunner/script/vk_script.cpp
index 6cf457fbd9..844fa6aaf8 100644
--- a/engines/bladerunner/script/vk_script.cpp
+++ b/engines/bladerunner/script/vk_script.cpp
@@ -685,6 +685,8 @@ void VKScript::askLucy(int questionId) {
VK_Play_Speech_Line(kActorLucy, 1410, 0.5f);
break;
case 7430: // Low 07
+ // Lucy cuts her sentence short here.
+ // She is not interrupted.
VK_Play_Speech_Line(kActorLucy, 1420, 0.5f);
if (Game_Flag_Query(kFlagLucyIsReplicant)) {
VK_Subject_Reacts(20, -1, 9, -3);
@@ -705,6 +707,8 @@ void VKScript::askLucy(int questionId) {
}
break;
case 7440: // Low 09
+ // Lucy cuts her sentence short here.
+ // She is not interrupted.
VK_Play_Speech_Line(kActorLucy, 1460, 0.5f);
if (Game_Flag_Query(kFlagLucyIsReplicant)) {
VK_Subject_Reacts(40, 5, 10, 2);
@@ -723,7 +727,12 @@ void VKScript::askLucy(int questionId) {
} else {
VK_Subject_Reacts(30, 9, -1, -2);
VK_Play_Speech_Line(kActorLucy, 1510, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 7945, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 7945, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorLucy, 1520, 0.5f);
}
break;
@@ -917,7 +926,12 @@ void VKScript::askLucy(int questionId) {
break;
case 7585: // Medium 13
VK_Play_Speech_Line(kActorLucy, 1950, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8030, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8030, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorLucy, 1960, 0.5f);
VK_Play_Speech_Line(kActorMcCoy, 8035, 0.5f);
VK_Eye_Animates(3);
@@ -954,7 +968,12 @@ void VKScript::askLucy(int questionId) {
}
VK_Eye_Animates(3);
VK_Play_Speech_Line(kActorLucy, 2050, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8050, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8050, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Subject_Reacts(90, 0, 0, 0);
VK_Play_Speech_Line(kActorLucy, 2060, 0.5f);
break;
@@ -974,7 +993,12 @@ void VKScript::askLucy(int questionId) {
VK_Subject_Reacts(70, 9, -1, 10);
}
VK_Play_Speech_Line(kActorLucy, 2090, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8055, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8055, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Eye_Animates(2);
VK_Play_Speech_Line(kActorLucy, 2100, 0.5f);
break;
@@ -1077,7 +1101,12 @@ void VKScript::askLucy(int questionId) {
VK_Subject_Reacts(80, 12, -3, 18);
}
VK_Play_Speech_Line(kActorLucy, 2330, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8095, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8095, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorLucy, 2340, 0.5f);
break;
case 7770: // High 10
@@ -1159,7 +1188,12 @@ void VKScript::askGrigorian(int questionId) {
VK_Eye_Animates(2);
VK_Subject_Reacts(45, 8, 7, 15);
VK_Play_Speech_Line(kActorGrigorian, 600, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8130, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8130, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Eye_Animates(2);
VK_Play_Speech_Line(kActorGrigorian, 610, 0.5f);
VK_Play_Speech_Line(kActorMcCoy, 8135, 0.5f);
@@ -1230,7 +1264,12 @@ void VKScript::askGrigorian(int questionId) {
VK_Play_Speech_Line(kActorMcCoy, 8150, 0.5f);
VK_Play_Speech_Line(kActorMcCoy, 8155, 0.5f);
VK_Subject_Reacts(30, 9, -5, 12);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorGrigorian, 810, 0.5f);
+#else
+ // Grigorian is interrupted here
+ VK_Play_Speech_Line(kActorGrigorian, 810, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8160, 0.5f);
break;
case 7525: // Medium 07
@@ -1341,7 +1380,12 @@ void VKScript::askGrigorian(int questionId) {
VK_Play_Speech_Line(kActorMcCoy, 7735, 0.5f);
VK_Subject_Reacts(60, 14, 3, 20);
VK_Play_Speech_Line(kActorGrigorian, 1080, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8195, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8195, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Eye_Animates(3);
VK_Play_Speech_Line(kActorGrigorian, 1090, 0.5f);
VK_Play_Speech_Line(kActorMcCoy, 8200, 0.5f);
@@ -1683,11 +1727,22 @@ void VKScript::askDektora(int questionId) {
if (_vm->_cutContent) {
VK_Play_Speech_Line(kActorDektora, 2400, 0.5f); // D: You want to kidnap me, don't you.
}
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 7895, 0.5f);
+#else
+ // McCoy cuts his sentence short here.
+ // He is not interrupted. Yet let's still put a pause of 0.0f for consistency
+ VK_Play_Speech_Line(kActorMcCoy, 7895, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
} else {
VK_Subject_Reacts(80, 18, -3, 10);
VK_Play_Speech_Line(kActorDektora, 2410, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8534, 0.5f);
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8534, 0.0f);
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorDektora, 2430, 0.5f);
}
break;
@@ -1791,7 +1846,12 @@ void VKScript::askRunciter(int questionId) {
break;
case 7410: // Low 03
VK_Subject_Reacts(25, 8, 12, 0);
+#if BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorRunciter, 940, 0.5f); // R: Capture it
+#else
+ // Runciter is interrupted here
+ VK_Play_Speech_Line(kActorRunciter, 940, 0.0f); // R: Capture it
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorMcCoy, 8340, 0.5f);
VK_Subject_Reacts(11, 8, 8, 0);
VK_Play_Speech_Line(kActorRunciter, 950, 0.5f); // R: Oh I do that first
@@ -1962,7 +2022,12 @@ void VKScript::askRunciter(int questionId) {
case 7620: // High 02
VK_Subject_Reacts(9, 5, 7, 0);
VK_Play_Speech_Line(kActorRunciter, 1370, 0.5f); // R: What do you expect me to say?
- VK_Play_Speech_Line(kActorMcCoy, 8390, 0.5f); // M: You don't have to say anything
+#if BLADERUNNER_ORIGINAL_BUGS
+ VK_Play_Speech_Line(kActorMcCoy, 8390, 0.5f); // M: You don't have to say anything
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8390, 0.0f); // M: You don't have to say anything
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Subject_Reacts(15, 6, 4, 2);
VK_Play_Speech_Line(kActorRunciter, 1380, 0.5f); // R: I understand how it works
break;
@@ -2008,7 +2073,12 @@ void VKScript::askRunciter(int questionId) {
VK_Play_Speech_Line(kActorMcCoy, 7735, 0.5f);
VK_Subject_Reacts(50, 15, 6, 4);
VK_Play_Speech_Line(kActorRunciter, 1490, 0.5f); // R: You're disgusting
- VK_Play_Speech_Line(kActorMcCoy, 8410, 0.5f); // M: Hey I didn't
+#if BLADERUNNER_ORIGINAL_BUGS
+ VK_Play_Speech_Line(kActorMcCoy, 8410, 0.5f); // M: Hey I didn't
+#else
+ // McCoy is interrupted here
+ VK_Play_Speech_Line(kActorMcCoy, 8410, 0.0f); // M: Hey I didn't
+#endif // BLADERUNNER_ORIGINAL_BUGS
VK_Play_Speech_Line(kActorRunciter, 1500, 0.5f); // R: I've always loved animals...
VK_Play_Speech_Line(kActorMcCoy, 8415, 0.5f); // M: No one is saying otherwise...
VK_Subject_Reacts(60, 18, -3, 1);
diff --git a/engines/bladerunner/ui/vk.cpp b/engines/bladerunner/ui/vk.cpp
index 166e5e39b0..ee926926ce 100644
--- a/engines/bladerunner/ui/vk.cpp
+++ b/engines/bladerunner/ui/vk.cpp
@@ -239,7 +239,7 @@ void VK::addQuestion(int intensity, int sentenceId, int relatedSentenceId) {
}
}
-void VK::playSpeechLine(int actorId, int sentenceId, float duration) {
+void VK::playSpeechLine(int actorId, int sentenceId, float pauseDuration) {
_vm->gameWaitForActive();
_vm->_mouse->disable();
@@ -258,9 +258,9 @@ void VK::playSpeechLine(int actorId, int sentenceId, float duration) {
}
}
- if (duration > 0.0f && !_vm->_actorSpeakStopIsRequested) {
+ if (pauseDuration > 0.0f && !_vm->_actorSpeakStopIsRequested) {
uint32 timeStart = _vm->_time->current();
- uint32 timeUntil = duration * 1000.0f;
+ uint32 timeUntil = pauseDuration * 1000.0f;
while ((_vm->_time->current() - timeStart < timeUntil) && _vm->_gameIsRunning) {
_vm->gameTick();
}
diff --git a/engines/bladerunner/ui/vk.h b/engines/bladerunner/ui/vk.h
index b4a0bcc679..4b1d4a05dc 100644
--- a/engines/bladerunner/ui/vk.h
+++ b/engines/bladerunner/ui/vk.h
@@ -139,7 +139,7 @@ public:
void handleMouseDown(int mouseX, int mouseY, bool mainButton);
void handleMouseUp(int mouseX, int mouseY, bool mainButton);
- void playSpeechLine(int actorId, int sentenceId, float duration);
+ void playSpeechLine(int actorId, int sentenceId, float pauseDuration);
void addQuestion(int intensity, int sentenceId, int relatedSentenceId);
void subjectReacts(int intensity, int humanResponse, int replicantResponse, int anxiety);
void eyeAnimates(int loopId);
More information about the Scummvm-git-logs
mailing list