[Scummvm-git-logs] scummvm master -> 73a7cbde44fd74428d96823a16ff3ca5c38f1091

antoniou79 a.antoniou79 at gmail.com
Wed Jun 30 19:43:39 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4dcbd07148 BLADERUNNER: Fix actor voices with wrong balance
73a7cbde44 BLADERUNNER: RESTOREDCONTENT: NR06 and MA06 extra machine voices


Commit: 4dcbd071488b305389c3d278aa5598ef3d11bd3d
    https://github.com/scummvm/scummvm/commit/4dcbd071488b305389c3d278aa5598ef3d11bd3d
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-06-30T22:42:58+03:00

Commit Message:
BLADERUNNER: Fix actor voices with wrong balance

Some voices have bad pan, because the actors are not actually in the scene/dr06

This happens because on occasion (eg. TV news) some voices will be coming from an object on screen
but the game would still calculate the actor's position (and produce an awry pan value, since there is no such actor in the scene)
Addresses report: https://bugs.scummvm.org/ticket/11339
But covers more cases than just the TV voices.

Changed paths:
    engines/bladerunner/actor.cpp
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/esper_script.cpp


diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp
index b791fb6764..3dbcee6c11 100644
--- a/engines/bladerunner/actor.cpp
+++ b/engines/bladerunner/actor.cpp
@@ -1354,8 +1354,122 @@ void Actor::speechPlay(int sentenceId, bool voiceOver) {
 
 	int pan = 0;
 	if (!voiceOver && _id != BladeRunnerEngine::kActorVoiceOver) {
+#if BLADERUNNER_ORIGINAL_BUGS
 		Vector3 screenPosition = _vm->_view->calculateScreenPosition(_position);
 		pan = (75 * (2 *  CLIP<int>(screenPosition.x, 0, 640) - 640)) / 640; // map [0..640] to [-75..75]
+#else
+		// There are a few situations whereby 
+		// the actor is not actually in the set when speaking, 
+		// and the original code would result in audio playing 
+		// from a wrong balance point (bad pan value).
+		// We capture these situations here and set the pan explicitly.
+		// Mainly, these are:
+		// tv news, machine voices (from PCs, Doors etc)
+		// dispatch calls when used as actor speech and not as ambient sounds
+		// phone calls (From Guzza, to Guzza, Lucy, Clovis, Dektora, Steele)
+		// and other special cases, where the actor is not actually in the scene.
+		//
+		// pan:: map [0..640] to [-75..75]
+		if ((_id == kActorNewscaster     && sentenceId >= 0    && sentenceId <= 240)
+		 || (_id == kActorTyrell         && sentenceId >= 430  && sentenceId <= 460)
+		 || (_id == kActorGuzza          && sentenceId >= 1540 && sentenceId <= 1600)
+		 || (_id == kActorGovernorKolvig && sentenceId >= 80   && sentenceId <= 130)) {
+			// MA04 TV
+			// x: 149 --> pan: -41
+			// PS05 TV
+			// x: 527 --> pan:  48
+			// These quotes only play in kSetMA04 and kSetPS05
+			pan = (_vm->_playerActor->getSetId() == kSetMA04) ? -41 : 48;
+		} else if ((_id == kActorLucy     && sentenceId >= 500  && sentenceId <= 640)
+		        || (_id == kActorClovis   && sentenceId >= 310  && sentenceId <= 540)
+		        || (_id == kActorDektora  && sentenceId >= 220  && sentenceId <= 490)
+		        || (_id == kActorSteele   && sentenceId >= 680  && sentenceId <= 820)
+		        || (_id == kActorGuzza    && sentenceId >= 0    && sentenceId <= 70)) {
+			// MA04 phone
+			// x: 351 --> pan: 7
+			// These quotes only play in kSetMA04
+			pan = 7;
+		} else if (_id == kActorGuzza     && sentenceId >= 1380 && sentenceId <= 1480) {
+			// NR02 phone (Taffy's)
+			// x: 300 --> pan: -5
+			// DR06 phone (Twin's Apartment)
+			// x: 565 --> pan: 57
+			// These quotes only play in either kSetNR02 or kSetDR06
+			pan = (_vm->_playerActor->getSetId() == kSetNR02) ? -5 : 57;
+		} else if (_id == kActorAnsweringMachine) {
+			if (sentenceId == 0) {
+				// kSetBB07 - Bradbury, Sebastian's Lab Computer   (0)
+				// x: 567 --> pan: 58
+				pan = 58;
+			} else if (sentenceId >= 10 && sentenceId <= 50) {
+				// kSetDR06 - Luther & Lance answering machine [10, 50]
+				// x: 278 --> pan: -11
+				pan = -11;
+			} else if (sentenceId == 60) {
+				// kSetDR06 - Twin's Apartment
+				// Restored Cut Content quote
+				// (Twin's Lab has a door announcer -- as heard in the video intro of Act 4 too)
+				// Pan will be at vidphone spot
+				// x: 565 --> pan: 57
+				pan = 57;
+			} else if (sentenceId >= 330 && sentenceId <= 370) {
+				// Mainframe terminal - x: 500 --> pan: 42
+				// These quotes only play in kSetPS06
+				pan = 42;
+			}
+			// Default pan is already set to 0 (ie. center) 
+			// Includes Maze Scenes (kSetPS10_PS11_PS12_PS13) - quotes [280, 320]
+			// Also ESPER, KIA, VK, Elevator (MA06) and Spinner.
+		} else {
+			Vector3 actorScreenPosition;
+			switch (_id) {
+			case kActorLance:
+				// Lance does not have a model, but he is "attached" to his twin Luther
+				actorScreenPosition = _vm->_view->calculateScreenPosition(_vm->_actors[kActorLuther]->getPosition());
+				break;
+			case kActorDispatcher:
+				// kActorDispatcher does not have a model, but should be "attached" to McCoy or Steele
+				if (sentenceId >= 0 && sentenceId <= 40) {
+					// Steele's radio
+					actorScreenPosition = _vm->_view->calculateScreenPosition(_vm->_actors[kActorSteele]->getPosition());
+				} else {
+					// McCoy's radio
+					actorScreenPosition = _vm->_view->calculateScreenPosition(_vm->_playerActor->getPosition());
+				}
+				break;
+			case kActorOfficerLeary:
+				// Voice from dispatcher is attached to McCoy (coming from his radio)
+				if ((sentenceId >= 240 && sentenceId <= 450)
+				    || (sentenceId == 460 && _vm->_language == Common::DE_DEU)
+				    || (sentenceId >= 480 && sentenceId <= 530 && _vm->_language == Common::ES_ESP)
+				    || (sentenceId >= 520 && sentenceId <= 530 && _vm->_language == Common::IT_ITA)
+				) {
+					// responding to dispatch
+					actorScreenPosition = _vm->_view->calculateScreenPosition(_vm->_playerActor->getPosition());
+				} else {
+					actorScreenPosition = _vm->_view->calculateScreenPosition(_position);
+				}
+				break;
+			case kActorOfficerGrayford:
+				// Voice from dispatcher is attached to McCoy (coming from his radio)
+				if ((sentenceId >= 360 && sentenceId <= 450)
+				    || (sentenceId == 460 && _vm->_language == Common::DE_DEU)
+				    || (sentenceId >= 470 && sentenceId <= 550)
+				    || (sentenceId >= 560 && sentenceId <= 610 && _vm->_language == Common::ES_ESP)
+				) {
+					// responding to dispatch
+					actorScreenPosition = _vm->_view->calculateScreenPosition(_vm->_playerActor->getPosition());
+				} else {
+					actorScreenPosition = _vm->_view->calculateScreenPosition(_position);
+				}
+				break;
+			default:
+				actorScreenPosition = _vm->_view->calculateScreenPosition(_position);
+			}
+			pan	= (75 * (2 *  CLIP<int>(actorScreenPosition.x, 0, 640) - 640)) / 640; // map [0..640] to [-75..75]
+		}
+		// debug("actor: %d, pan: %d", _id, pan);
+#endif // BLADERUNNER_ORIGINAL_BUGS
 	}
 
 	_vm->_subtitles->loadInGameSubsText(_id, sentenceId);
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index c23e981486..c00ba8fec4 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -36,10 +36,10 @@ enum Actors {
 	kActorIzo              =  7,
 	kActorSadik            =  8,
 	kActorCrazylegs        =  9,
-	kActorLuther           = 10,
+	kActorLuther           = 10, // This is the main model and AI for Luther and Lance (twins)
 	kActorGrigorian        = 11,
 	kActorTransient        = 12, // Homeless
-	kActorLance            = 13,
+	kActorLance            = 13, // Used for Lance speech lines (essentially empty AI script) - has Clues DB and Health
 	kActorBulletBob        = 14,
 	kActorRunciter         = 15,
 	kActorInsectDealer     = 16,
@@ -47,12 +47,12 @@ enum Actors {
 	kActorEarlyQ           = 18,
 	kActorZuben            = 19,
 	kActorHasan            = 20,
-	kActorMarcus           = 21,
+	kActorMarcus           = 21, // Used for Marcus Eisenduller corpse - has Clues DB and Health
 	kActorMia              = 22,
 	kActorOfficerLeary     = 23,
 	kActorOfficerGrayford  = 24,
 	kActorHanoi            = 25,
-	kActorBaker            = 26,
+	kActorBaker            = 26, // Not actually used in anything (essentially empty AI script) - has Clues DB and Health and a T-pose Guard model
 	kActorDeskClerk        = 27,
 	kActorHowieLee         = 28,
 	kActorFishDealer       = 29,
@@ -62,38 +62,38 @@ enum Actors {
 	kActorHolloway         = 33,
 	kActorSergeantWalls    = 34,
 	kActorMoraji           = 35,
-	kActorTheBard          = 36,
+	kActorTheBard          = 36, // Not actually used in anything (essentially empty AI script) - has Health
 	kActorPhotographer     = 37,
-	kActorDispatcher       = 38,
-	kActorAnsweringMachine = 39,
+	kActorDispatcher       = 38, // Used for actor speech and ambient sound (essentially empty AI script)
+	kActorAnsweringMachine = 39, // Used for machines's speech (essentially empty AI script)
 	kActorRajif            = 40,
-	kActorGovernorKolvig   = 41,
+	kActorGovernorKolvig   = 41, // Used for actor speech (essentially empty AI script) - has Health
 	kActorEarlyQBartender  = 42,
-	kActorHawkersParrot    = 43,
-	kActorTaffyPatron      = 44,
-	kActorLockupGuard      = 45,
-	kActorTeenager         = 46,
-	kActorHysteriaPatron1  = 47,
-	kActorHysteriaPatron2  = 48,
-	kActorHysteriaPatron3  = 49,
-	kActorShoeshineMan     = 50,
+	kActorHawkersParrot    = 43, // Used for parrot speech (DEU, FRA only) (essentially empty AI script) - has Health
+	kActorTaffyPatron      = 44, // Gordo's hostage (has speech in DEU, FRA)
+	kActorLockupGuard      = 45, // Not actually used in anything (essentially empty AI script) - has Health
+	kActorTeenager         = 46, // Not actually used in anything (essentially empty AI script) - has Health
+	kActorHysteriaPatron1  = 47, // Early Q's Dancer  (has (cut) speech in DEU, FRA, but belongs to patron not dancer)
+	kActorHysteriaPatron2  = 48, // Early Q's Dancer  (has (cut) speech in DEU, FRA, but belongs to patron not dancer)
+	kActorHysteriaPatron3  = 49, // Early Q's Dancer (Restored) (has (cut) speech in DEU, FRA, but belongs to patron not dancer)
+	kActorShoeshineMan     = 50, // Not actually used in anything (has code remnants in AI script) - has Health
 	kActorTyrell           = 51,
 	kActorChew             = 52,
 	kActorGaff             = 53,
-	kActorBryant           = 54,
-	kActorTaffy            = 55,
+	kActorBryant           = 54, // Used as Sebastian's Bear doll in Bradbury
+	kActorTaffy            = 55, // Not actually used in anything (essentially empty AI script) - has Clues DB and Health
 	kActorSebastian        = 56,
 	kActorRachael          = 57,
 	kActorGeneralDoll      = 58,
 	kActorIsabella         = 59,
-	kActorBlimpGuy         = 60,
-	kActorNewscaster       = 61,
+	kActorBlimpGuy         = 60, // Used for ambient sound (essentially empty AI script)
+	kActorNewscaster       = 61, // Used for TV speech (essentially empty AI script)
 	kActorLeon             = 62,
-	kActorMaleAnnouncer    = 63,
-	kActorFreeSlotA        = 64, // Rat
-	kActorFreeSlotB        = 65,
+	kActorMaleAnnouncer    = 63, // Not actually used in anything (essentially empty AI script)
+	kActorFreeSlotA        = 64, // Rat (also the big Rat on the bridge)
+	kActorFreeSlotB        = 65, // Rat
 	kActorMaggie           = 66,
-	kActorGenwalkerA       = 67,
+	kActorGenwalkerA       = 67, // Generic Walker or Bullet Bob's tracking gun
 	kActorGenwalkerB       = 68,
 	kActorGenwalkerC       = 69,
 	kActorMutant1          = 70,
diff --git a/engines/bladerunner/script/esper_script.cpp b/engines/bladerunner/script/esper_script.cpp
index 3234716fe1..4751b1d380 100644
--- a/engines/bladerunner/script/esper_script.cpp
+++ b/engines/bladerunner/script/esper_script.cpp
@@ -49,8 +49,8 @@ void ESPERScript::SCRIPT_ESPER_DLL_Initialize() {
 	int v0 = 0;
 	if (Actor_Clue_Query(kActorMcCoy, kClueRuncitersVideo)) {
 		if (!Actor_Clue_Query(kActorMcCoy, kClueRuncitersViewA)) {
-			Actor_Says(kActorAnsweringMachine, 160, 3);
-			Actor_Says(kActorAnsweringMachine, 180, 3);
+			Actor_Says(kActorAnsweringMachine, 160, kAnimationModeTalk);
+			Actor_Says(kActorAnsweringMachine, 180, kAnimationModeTalk);
 			Actor_Clue_Acquire(kActorMcCoy, kClueRuncitersViewA, true, kActorRunciter);
 			v0 = 1;
 		}
@@ -62,8 +62,8 @@ void ESPERScript::SCRIPT_ESPER_DLL_Initialize() {
 	}
 	if (Actor_Clue_Query(kActorMcCoy, kClueEarlyQsClub)) {
 		if (!Actor_Clue_Query(kActorMcCoy, kClueOuterDressingRoom)) {
-			Actor_Says(kActorAnsweringMachine, 160, 3);
-			Actor_Says(kActorAnsweringMachine, 170, 3);
+			Actor_Says(kActorAnsweringMachine, 160, kAnimationModeTalk);
+			Actor_Says(kActorAnsweringMachine, 170, kAnimationModeTalk);
 			Actor_Clue_Acquire(kActorMcCoy, kClueOuterDressingRoom, true, -1);
 			v0 = 1;
 		}
@@ -83,8 +83,8 @@ void ESPERScript::SCRIPT_ESPER_DLL_Initialize() {
 	}
 	if (Actor_Clue_Query(kActorMcCoy, kClueChinaBarSecurityDisc)) {
 		if (!Actor_Clue_Query(kActorMcCoy, kClueChinaBarSecurityPhoto)) {
-			Actor_Says(kActorAnsweringMachine, 160, 3);
-			Actor_Says(kActorAnsweringMachine, 170, 3);
+			Actor_Says(kActorAnsweringMachine, 160, kAnimationModeTalk);
+			Actor_Says(kActorAnsweringMachine, 170, kAnimationModeTalk);
 			Actor_Clue_Acquire(kActorMcCoy, kClueChinaBarSecurityPhoto, true, kActorHawkersBarkeep);
 			v0 = 1;
 		}
@@ -92,8 +92,8 @@ void ESPERScript::SCRIPT_ESPER_DLL_Initialize() {
 	}
 	if (Actor_Clue_Query(kActorMcCoy, kClueTyrellSecurity)) {
 		if (!Actor_Clue_Query(kActorMcCoy, kClueTyrellSecurityPhoto)) {
-			Actor_Says(kActorAnsweringMachine, 160, 3);
-			Actor_Says(kActorAnsweringMachine, 170, 3);
+			Actor_Says(kActorAnsweringMachine, 160, kAnimationModeTalk);
+			Actor_Says(kActorAnsweringMachine, 170, kAnimationModeTalk);
 			Actor_Clue_Acquire(kActorMcCoy, kClueTyrellSecurityPhoto, true, kActorTyrellGuard);
 			v0 = 1;
 		}
@@ -103,21 +103,21 @@ void ESPERScript::SCRIPT_ESPER_DLL_Initialize() {
 		ESPER_Add_Photo("KP06.IMG", 9, 9);
 	}
 	if (v0) {
-		Actor_Says(kActorAnsweringMachine, 200, 3);
+		Actor_Says(kActorAnsweringMachine, 200, kAnimationModeTalk);
 	}
 }
 
 void ESPERScript::SCRIPT_ESPER_DLL_Photo_Selected(int photo) {
 	switch (photo) {
 	case 0:
-		Actor_Says(kActorAnsweringMachine, 220, 3);
+		Actor_Says(kActorAnsweringMachine, 220, kAnimationModeTalk);
 		ESPER_Define_Special_Region(0, 490, 511, 496, 517, 400, 440, 580, 580, 380, 260, 900, 710, "RC02ESP1");
 		ESPER_Define_Special_Region(1, 473, 342, 479, 349, 400, 300, 580, 580, 350, 250, 900, 710, "RC02ESP2");
 		ESPER_Define_Special_Region(2, 444, 215, 461, 223, 380, 120, 570, 340, 354, 160, 577, 354, "RC02ESP3");
 		break;
 
 	case 1:
-		Actor_Says(kActorAnsweringMachine, 220, 3);
+		Actor_Says(kActorAnsweringMachine, 220, kAnimationModeTalk);
 		ESPER_Define_Special_Region(3, 560, 210, 580, 220, 450, 130, 680, 540, 0, 0, 1279, 959, "RC02ESP4");
 		ESPER_Define_Special_Region(4, 584, 482, 595, 493, 460, 400, 660, 540, 0, 0, 1279, 959, "RC02ESP5");
 		ESPER_Define_Special_Region(5, 669, 322, 675, 329, 620, 230, 740, 390, 0, 0, 1279, 959, "RC02ESP6");
@@ -125,42 +125,42 @@ void ESPERScript::SCRIPT_ESPER_DLL_Photo_Selected(int photo) {
 		break;
 
 	case 2:
-		Actor_Says(kActorAnsweringMachine, 260, 3);
+		Actor_Says(kActorAnsweringMachine, 260, kAnimationModeTalk);
 		ESPER_Define_Special_Region(7, 102, 809, 108, 861, 20, 720, 200, 930, 191, 95, 1085, 870, "NR06ESP1");
 		ESPER_Define_Special_Region(8, 661, 437, 664, 443, 530, 320, 720, 600, 330, 200, 945, 750, "NR06ESP2");
 		break;
 
 	case 3:
-		Actor_Says(kActorAnsweringMachine, 260, 3);
+		Actor_Says(kActorAnsweringMachine, 260, kAnimationModeTalk);
 		ESPER_Define_Special_Region(9, 479, 381, 482, 385, 430, 320, 520, 470, 265, 200, 815, 720, "NR07ESP2");
 		ESPER_Define_Special_Region(10, 893, 298, 901, 306, 770, 230, 980, 500, 340, 216, 942, 747, "NR07ESP1");
 		break;
 
 	case 4:
-		Actor_Says(kActorAnsweringMachine, 240, 3);
+		Actor_Says(kActorAnsweringMachine, 240, kAnimationModeTalk);
 		ESPER_Define_Special_Region(11, 420, 436, 434, 450, 350, 380, 520, 680, 257, 94, 1013, 804, "HC01ESP1");
 		ESPER_Define_Special_Region(12, 407, 489, 410, 509, 370, 450, 500, 560, 257, 94, 1013, 804, "HC01ESP2");
 		break;
 
 	case 5:
-		Actor_Says(kActorAnsweringMachine, 240, 3);
+		Actor_Says(kActorAnsweringMachine, 240, kAnimationModeTalk);
 		ESPER_Define_Special_Region(13, 720, 485, 728, 491, 640, 390, 780, 630, 257, 94, 1013, 804, "HC01ESP3");
 		break;
 
 	case 6:
-		Actor_Says(kActorAnsweringMachine, 250, 3);
+		Actor_Says(kActorAnsweringMachine, 250, kAnimationModeTalk);
 		ESPER_Define_Special_Region(14, 879, 221, 882, 225, 640, 0, 1000, 512, 265, 146, 1014, 813, "HC02ESP5");
 		ESPER_Define_Special_Region(15, 660, 550, 678, 572, 560, 480, 850, 910, 265, 146, 1014, 813, "HC02ESP2");
 		break;
 
 	case 7:
-		Actor_Says(kActorAnsweringMachine, 250, 3);
+		Actor_Says(kActorAnsweringMachine, 250, kAnimationModeTalk);
 		ESPER_Define_Special_Region(16, 1171, 457, 1184, 466, 1060, 370, 1279, 730, 910, 300, 1279, 678, "HC02ESP3");
 		ESPER_Define_Special_Region(17, 328, 398, 340, 413, 250, 350, 460, 640, 100, 236, 530, 612, "HC02ESP4");
 		break;
 
 	case 8:
-		Actor_Says(kActorAnsweringMachine, 230, 3);
+		Actor_Says(kActorAnsweringMachine, 230, kAnimationModeTalk);
 		ESPER_Define_Special_Region(18, 166, 623, 177, 632, 38, 528, 320, 770, 26, 530, 313, 771, "TB06ESP1");
 		ESPER_Define_Special_Region(19, 156, 356, 164, 360, 60, 280, 250, 460, 14, 251, 257, 459, "TB06ESP2");
 		ESPER_Define_Special_Region(20, 395, 158, 410, 185, 270, 70, 760, 640, 125, 0, 560, 307, "TB06ESP3");
@@ -168,7 +168,7 @@ void ESPERScript::SCRIPT_ESPER_DLL_Photo_Selected(int photo) {
 		break;
 
 	case 9:
-		Actor_Says(kActorAnsweringMachine, 270, 3);
+		Actor_Says(kActorAnsweringMachine, 270, kAnimationModeTalk);
 		ESPER_Define_Special_Region(22, 1208, 330, 1218, 340, 1050, 160, 1279, 550, 956, 203, 1278, 497, "KP06ESP1");
 		ESPER_Define_Special_Region(23, 854, 371, 858, 375, 790, 320, 940, 560, 722, 220, 1000, 505, "KP06ESP2");
 		ESPER_Define_Special_Region(24, 615, 325, 648, 365, 440, 220, 820, 959, 326, 140, 948, 474, "KP06ESP3");


Commit: 73a7cbde44fd74428d96823a16ff3ca5c38f1091
    https://github.com/scummvm/scummvm/commit/73a7cbde44fd74428d96823a16ff3ca5c38f1091
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-06-30T22:42:58+03:00

Commit Message:
BLADERUNNER: RESTOREDCONTENT: NR06 and MA06 extra machine voices

NR06 door announcer and MA06 elevator voice print identification

Also includes fix for bad flag for statues' comment in NR06

Changed paths:
    engines/bladerunner/script/scene/dr06.cpp
    engines/bladerunner/script/scene/ma06.cpp


diff --git a/engines/bladerunner/script/scene/dr06.cpp b/engines/bladerunner/script/scene/dr06.cpp
index 681ec85a9a..dd1cf2b94b 100644
--- a/engines/bladerunner/script/scene/dr06.cpp
+++ b/engines/bladerunner/script/scene/dr06.cpp
@@ -37,7 +37,7 @@ void SceneScriptDR06::InitializeScene() {
 	) {
 		Scene_Exit_Add_2D_Exit(1, 0, 272, 46, 477, 2);
 	}
-	if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnFans)) {
+	if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnStatues)) {
 		Scene_2D_Region_Add(0, 300,  80, 360, 190); // statue 1
 		Scene_2D_Region_Add(1,  60, 120, 155, 260); // statue 2
 		Scene_2D_Region_Add(2, 378, 270, 420, 320); // statue 3
@@ -98,19 +98,19 @@ bool SceneScriptDR06::ClickedOn3DObject(const char *objectName, bool a2) {
 		} else {
 			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -684.94f, 136.6f, -1136.12f, 0, true, false, false)) {
 				Actor_Face_Object(kActorMcCoy, "X2_MON01A04", true);
-				Actor_Says(kActorAnsweringMachine, 10, 3);
-				Actor_Says(kActorAnsweringMachine, 20, 3);
-				Actor_Says(kActorAnsweringMachine, 30, 3);
+				Actor_Says(kActorAnsweringMachine, 10, kAnimationModeTalk);
+				Actor_Says(kActorAnsweringMachine, 20, kAnimationModeTalk);
+				Actor_Says(kActorAnsweringMachine, 30, kAnimationModeTalk);
 				Actor_Says(kActorMcCoy, 1025, 13);
-				Actor_Says(kActorSebastian, 0, 3);
-				Actor_Says(kActorSebastian, 10, 3);
-				Actor_Says(kActorSebastian, 20, 3);
-				Actor_Says(kActorSebastian, 30, 3);
-				Actor_Says(kActorSebastian, 40, 3);
-				Actor_Says(kActorSebastian, 50, 3);
-				Actor_Says(kActorAnsweringMachine, 40, 3);
+				Actor_Says(kActorSebastian, 0, kAnimationModeTalk);
+				Actor_Says(kActorSebastian, 10, kAnimationModeTalk);
+				Actor_Says(kActorSebastian, 20, kAnimationModeTalk);
+				Actor_Says(kActorSebastian, 30, kAnimationModeTalk);
+				Actor_Says(kActorSebastian, 40, kAnimationModeTalk);
+				Actor_Says(kActorSebastian, 50, kAnimationModeTalk);
+				Actor_Says(kActorAnsweringMachine, 40, kAnimationModeTalk);
 				Actor_Says(kActorMcCoy, 1030, 13);
-				Actor_Says(kActorAnsweringMachine, 50, 3);
+				Actor_Says(kActorAnsweringMachine, 50, kAnimationModeTalk);
 				Actor_Clue_Acquire(kActorMcCoy, kClueAnsweringMachineMessage, true, kActorAnsweringMachine);
 			}
 		}
@@ -253,6 +253,9 @@ void SceneScriptDR06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
 
 void SceneScriptDR06::PlayerWalkedIn() {
 	if (Game_Flag_Query(kFlagDR04toDR06)) {
+		if (_vm->_cutContent) {
+			ADQ_Add(kActorAnsweringMachine, 60, kAnimationModeTalk);
+		}
 		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -729.57f, 136.6f, -1016.0f, 0, false, false, false);
 	}
 	Game_Flag_Reset(kFlagDR04toDR06);
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index 6dc69626fe..c9d24dd1e8 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -126,10 +126,13 @@ void SceneScriptMA06::PlayerWalkedIn() {
 			Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3,  10, 0, 1u);
 			Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 10, 0, 1u);
 
-			Actor_Says(kActorAnsweringMachine, 80, 3);     // your floor number please
+			if (_vm->_cutContent) {
+				Actor_Says(kActorAnsweringMachine, 70, kAnimationModeTalk); // voice print identification
+			}
+			Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk);     // your floor number please
 			Actor_Says(kActorMcCoy, 2940, 18);             // McCoy: McCoy 88F
 			Game_Flag_Set(kFlagMA06ToMA02);                // to McCoy's Apartment
-			Actor_Says(kActorAnsweringMachine, 90, 3);     // 88 thank you
+			Actor_Says(kActorAnsweringMachine, 90, kAnimationModeTalk);     // 88 thank you
 			Actor_Face_Actor(kActorMcCoy, kActorRachael, true);
 			Actor_Says(kActorMcCoy, 2710, 14);             // Excuse me
 
@@ -168,7 +171,10 @@ void SceneScriptMA06::PlayerWalkedIn() {
 			Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3,  10, 0, 1u);
 			Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 10, 0, 1u);
 
-			Actor_Says(kActorAnsweringMachine, 80, 3);      // your floor number please
+			if (_vm->_cutContent) {
+				Actor_Says(kActorAnsweringMachine, 70, kAnimationModeTalk); // voice print identification
+			}
+			Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk);     // your floor number please
 			Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideElevatorStartTalkAct4);
 			//
 			Delay(500);
@@ -256,7 +262,10 @@ void SceneScriptMA06::activateElevator() {
 			break;
 		}
 
-		Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk);
+		if (_vm->_cutContent) {
+			Actor_Says(kActorAnsweringMachine, 70, kAnimationModeTalk); // voice print identification
+		}
+		Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk);     // your floor number please
 		Player_Gains_Control();
 		int floorLevel = Elevator_Activate(kElevatorMA);
 #if BLADERUNNER_ORIGINAL_BUGS
@@ -279,7 +288,7 @@ void SceneScriptMA06::activateElevator() {
 			} else {
 				Sound_Play(kSfxELEBAD1, 100, 0, 0, 50);
 				Delay(500);
-				Actor_Says(kActorAnsweringMachine, 610, 3);
+				Actor_Says(kActorAnsweringMachine, 610, kAnimationModeTalk);
 			}
 		} else { // floorLevel == 0
 			Actor_Says(kActorMcCoy, 2940, 18);
@@ -293,7 +302,7 @@ void SceneScriptMA06::activateElevator() {
 				Actor_Says(kActorMcCoy, 8527, kAnimationModeTalk);
 			} else {
 				Game_Flag_Set(kFlagMA06ToMA02);
-				Actor_Says(kActorAnsweringMachine, 90, 3);
+				Actor_Says(kActorAnsweringMachine, 90, kAnimationModeTalk);
 			}
 		}
 	}




More information about the Scummvm-git-logs mailing list