[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