[Scummvm-git-logs] scummvm master -> e2f35837381bdd4d0d85c87de5eab876d35e42bc

antoniou79 a.antoniou79 at gmail.com
Sun Jun 27 12:00:41 UTC 2021


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:
e2f3583738 BLADERUNNER: RESTORED CONTENT: Crazylegs letter to Dektora


Commit: e2f35837381bdd4d0d85c87de5eab876d35e42bc
    https://github.com/scummvm/scummvm/commit/e2f35837381bdd4d0d85c87de5eab876d35e42bc
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-06-27T15:00:32+03:00

Commit Message:
BLADERUNNER: RESTORED CONTENT: Crazylegs letter to Dektora

CrazysInvolvement clue, connected to the ADVERTISEMENT (cut) dialogue option

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/music.h
    engines/bladerunner/script/init_script.cpp
    engines/bladerunner/script/kia_script.cpp
    engines/bladerunner/script/scene/hf05.cpp
    engines/bladerunner/script/scene/nr05.cpp
    engines/bladerunner/script/scene/nr07.cpp
    engines/bladerunner/ui/kia.cpp


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 71386a9173..c23e981486 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -339,7 +339,7 @@ enum Clues {
 	kClueCarWasStolen                      = 233, // UNUSED
 	kClueGrigoriansResponse1               = 234, // UNUSED
 	kClueGrigoriansResponse2               = 235, // UNUSED
-	kClueCrazysInvolvement                 = 236, // (Intangible) - UNOBTAINED - Not checked in KIA - Has weight for Crazylegs
+	kClueCrazysInvolvement                 = 236, // Restored content - Object -- Original - (Intangible) - UNOBTAINED - Not checked in KIA - Has weight for Crazylegs
 	kClueGrigoriansResources               = 237, // (Intangible) - UNOBTAINED - Not checked in KIA - Checked for Crazylegs dialogue
 	kClueMcCoyPulledAGun                   = 238, // UNUSED - TODO: Was this for Crazylegs being offended?
 	kClueMcCoyIsStupid                     = 239, // (Intangible) - Obtained by Leary - Not checked in KIA - Checked in Steele, Clovis, Leary AI - added to many actors DBs
@@ -2701,7 +2701,7 @@ enum GameModelAnimations {
 	kModelAnimationFolderInKIA                 = 946,
 	kModelAnimationGoldfish                    = 947,
 	kModelAnimationFolder                      = 948,
-//	kModelAnimationLetter                      = 949, // UNUSED - Could this be used for Crazylegs Advertisement?
+	kModelAnimationLetter                      = 949, // Restored Content - Used for Crazylegs Note in his Advertisement pamphlet
 	kModelAnimationGarterSnake                 = 950,
 	kModelAnimationLichenDogWrapper            = 951,
 	kModelAnimationLicensePlate                = 952,
@@ -3601,7 +3601,7 @@ enum SFXSounds {
 	kSfxTARGUP4  =  32,
 	kSfxTARGUP5  =  33,
 	kSfxTARGUP6  =  34,
-	kSfxTARGUP7  =  35,  // unused
+	kSfxTARGUP7  =  35,  // unused - similar to TARGUP6, bit more sustained
 	kSfxTRGSPIN1 =  36,  // unused
 	kSfxTRGSPIN2 =  37,  // unused
 	kSfxTRGSPIN3 =  38,  // unused
@@ -3882,9 +3882,9 @@ enum SFXSounds {
 	kSfxMONKEY1  = 313,
 	kSfxMONKEY2  = 314,  // unused
 	kSfxRUNAWAY1 = 315,
-	kSfxTRPDOOR1 = 316,
-	kSfxTRPDORO  = 317,  // unused
-	kSfxTRPDORC  = 318,  // unused
+	kSfxTRPDOOR1 = 316,  // open and shut
+	kSfxTRPDORO  = 317,  // unused - open
+	kSfxTRPDORC  = 318,  // unused - shut
 	kSfxAUDLAFF1 = 319,
 	kSfxAUDLAFF2 = 320,
 	kSfxAUDLAFF3 = 321,
@@ -4101,24 +4101,24 @@ enum SFXSounds {
 	kSfxGUNM3A   = 532,
 	kSfxGUNM3B   = 533,
 	kSfxGUNM3C   = 534,
-	kSfxGUNH1AR  = 535,  // unused
-	kSfxGUNH1BR  = 536,  // unused
-	kSfxGUNH1CR  = 537,  // unused
-	kSfxGUNH2AR  = 538,  // unused
-	kSfxGUNH2BR  = 539,  // unused
-	kSfxGUNH2CR  = 540,  // unused
-	kSfxGUNH3AR  = 541,  // unused
-	kSfxGUNH3BR  = 542,  // unused
-	kSfxGUNH3CR  = 543,  // unused
-	kSfxGUNM1AR  = 544,  // unused
-	kSfxGUNM1BR  = 545,  // unused
-	kSfxGUNM1CR  = 546,  // unused
-	kSfxGUNM2AR  = 547,  // unused
-	kSfxGUNM2BR  = 548,  // unused
-	kSfxGUNM2CR  = 549,  // unused
-	kSfxGUNM3AR  = 550,  // unused
-	kSfxGUNM3BR  = 551,  // unused
-	kSfxGUNM3CR  = 552,  // unused
+	kSfxGUNH1AR  = 535,  // unused - adds reverb to 517
+	kSfxGUNH1BR  = 536,  // unused - adds reverb to 518
+	kSfxGUNH1CR  = 537,  // unused - adds reverb to 519
+	kSfxGUNH2AR  = 538,  // unused - adds reverb to 520
+	kSfxGUNH2BR  = 539,  // unused - adds reverb to 521
+	kSfxGUNH2CR  = 540,  // unused - adds reverb to 522
+	kSfxGUNH3AR  = 541,  // unused - adds reverb to 523
+	kSfxGUNH3BR  = 542,  // unused - adds reverb to 524
+	kSfxGUNH3CR  = 543,  // unused - adds reverb to 525
+	kSfxGUNM1AR  = 544,  // unused - adds reverb to 526
+	kSfxGUNM1BR  = 545,  // unused - adds reverb to 527
+	kSfxGUNM1CR  = 546,  // unused - adds reverb to 528
+	kSfxGUNM2AR  = 547,  // unused - adds reverb to 529
+	kSfxGUNM2BR  = 548,  // unused - adds reverb to 530
+	kSfxGUNM2CR  = 549,  // unused - adds reverb to 531
+	kSfxGUNM3AR  = 550,  // unused - adds reverb to 532
+	kSfxGUNM3BR  = 551,  // unused - adds reverb to 533
+	kSfxGUNM3CR  = 552,  // unused - adds reverb to 534
 	kSfxGARBAGE  = 553,
 	kSfxBELLTONE = 554,  // unused
 	kSfxMALEHURT = 555,
diff --git a/engines/bladerunner/music.h b/engines/bladerunner/music.h
index c8b9754bf4..5b1dfd011e 100644
--- a/engines/bladerunner/music.h
+++ b/engines/bladerunner/music.h
@@ -37,7 +37,7 @@ class Music {
 	struct Track {
 		Common::String name;
 		int            volume;             // A value between 0 and 100 - It is the set volume for the track regardless of fadeIn and fadeOut transitions
-		int            pan;                // A value between -100  and 100 (right?) (0 is center) - It is the set pan/balance for the track regardless of any ongoing adjustments
+		int            pan;                // A value between -100 (left) and 100 (right) (0 is center) - It is the set pan/balance for the track regardless of any ongoing adjustments
 		int32          timeFadeInSeconds;  // how long will it take for the track to reach target volume (in seconds)
 		int32          timePlaySeconds;    // how long the track will play before starting fading out (in seconds) - uses timeFadeOutSeconds for fadeout
 		                                   // -1: Special value for playing the whole track
diff --git a/engines/bladerunner/script/init_script.cpp b/engines/bladerunner/script/init_script.cpp
index 2ed1397d5e..83f6178f52 100644
--- a/engines/bladerunner/script/init_script.cpp
+++ b/engines/bladerunner/script/init_script.cpp
@@ -2623,6 +2623,7 @@ void InitScript::Init_CDB() {
 	CDB_Set_Clue_Asset_Type(kClueDektoraInterview3, kClueTypeAudioRecording);
 	CDB_Set_Clue_Asset_Type(kClueDektorasCard, kClueTypeObject);
 	CDB_Set_Clue_Asset_Type(kClueGrigoriansNote, kClueTypeObject);
+	CDB_Set_Clue_Asset_Type(kClueCrazysInvolvement, kClueTypeObject); // Restored Content
 	CDB_Set_Clue_Asset_Type(kClueCollectionReceipt, kClueTypeObject);
 	CDB_Set_Clue_Asset_Type(kClueSpecialIngredient, kClueTypeAudioRecording);
 	CDB_Set_Clue_Asset_Type(kClueStolenCheese, kClueTypeAudioRecording);
diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index 27648f76d0..1a342aa25e 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -484,6 +484,10 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 	case kClueDektorasCard:
 		KIA_Play_Slice_Model(kModelAnimationDektorasCard);
 		break;
+	case kClueCrazysInvolvement:
+		// RESTORED CONTENT
+		KIA_Play_Slice_Model(kModelAnimationLetter);
+		break;
 	case kClueGrigoriansNote:
 		KIA_Play_Slice_Model(kModelAnimationGrigoriansNote);
 		break;
diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp
index ad4c5171c4..46d3174a36 100644
--- a/engines/bladerunner/script/scene/hf05.cpp
+++ b/engines/bladerunner/script/scene/hf05.cpp
@@ -393,11 +393,23 @@ void SceneScriptHF05::talkWithCrazyLegs2() {
 
 void SceneScriptHF05::dialogueWithCrazylegs1() {
 	Dialogue_Menu_Clear_List();
+#if BLADERUNNER_ORIGINAL_BUGS
 	if (Actor_Clue_Query(kActorMcCoy, kClueGrigoriansNote) // cut feature? there is no way how to obtain this clue
 	 && Global_Variable_Query(kVariableChapter) == 3
 	) {
 		DM_Add_To_List_Never_Repeat_Once_Selected(1180, 3, 6, 7); // ADVERTISEMENT
 	}
+#else
+	if (Actor_Clue_Query(kActorMcCoy, kClueCrazysInvolvement)
+	 && Global_Variable_Query(kVariableChapter) == 3
+	) {
+		// This dialogue point does not talk about Grigorian's Note
+		// but rather a Note that CrazyLegs wrote on one of his flyers
+		// kClueCrazysInvolvement is only acquired in _cutContent (Restored Content) mode
+		// so no need to add that extra check in the if clause.
+		DM_Add_To_List_Never_Repeat_Once_Selected(1180, 3, 6, 7); // ADVERTISEMENT
+	}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 	if (Actor_Clue_Query(kActorMcCoy, kClueCrazylegsInterview1)) {
 		// kClueCrazylegsInterview1 is acquired (after bug fix)
 		// only when Dektora has bought the car (kClueCarRegistration1)
@@ -456,8 +468,16 @@ void SceneScriptHF05::dialogueWithCrazylegs1() {
 	switch (answer) {
 	case 1180: // ADVERTISEMENT
 		Actor_Says(kActorMcCoy, 1890, 23);
+		if (_vm->_cutContent) {
+			// McCoy shows the sales pamphlet (from Dektora's Vanity drawer) to CrazyLegs
+			Item_Pickup_Spin_Effect_From_Actor(kModelAnimationTyrellSalesPamphlet, kActorMcCoy, 0, 0);
+		}
 		Actor_Says(kActorCrazylegs, 510, kAnimationModeTalk);
 		Actor_Says(kActorMcCoy, 1920, 23);
+		if (_vm->_cutContent) {
+			// McCoy shows the note he found inside the sales pamphlet (from Dektora's Vanity drawer) to CrazyLegs
+			Item_Pickup_Spin_Effect_From_Actor(kModelAnimationLetter, kActorMcCoy, 0, 0);
+		}
 		Actor_Says(kActorMcCoy, 1925, kAnimationModeTalk);
 		Actor_Says(kActorCrazylegs, 530, 12);
 		Actor_Says(kActorMcCoy, 1930, 18);
diff --git a/engines/bladerunner/script/scene/nr05.cpp b/engines/bladerunner/script/scene/nr05.cpp
index e9ffa251cd..ceac79068d 100644
--- a/engines/bladerunner/script/scene/nr05.cpp
+++ b/engines/bladerunner/script/scene/nr05.cpp
@@ -363,6 +363,7 @@ void SceneScriptNR05::talkToEarlyQ() {
 		Actor_Modify_Friendliness_To_Other(kActorEarlyQ, kActorMcCoy, -1);
 		if (Actor_Clue_Query(kActorMcCoy, kClueGrigoriansNote)) { // cut content? this clue is unobtanium
 			// TODO why is Grigorian's Note needed here, for EarlyQ to reveal who Hecuba is?
+			// TODO could CrazysInvolvement also do here?
 			//      maybe another clue should be required in its place or some additional ones?
 			Actor_Says(kActorEarlyQ, 580, 12);
 			Actor_Says(kActorMcCoy, 3560, 13);
diff --git a/engines/bladerunner/script/scene/nr07.cpp b/engines/bladerunner/script/scene/nr07.cpp
index fac0bced1c..ec335b4fd4 100644
--- a/engines/bladerunner/script/scene/nr07.cpp
+++ b/engines/bladerunner/script/scene/nr07.cpp
@@ -35,6 +35,17 @@ void SceneScriptNR07::InitializeScene() {
 void SceneScriptNR07::SceneLoaded() {
 	Obstacle_Object("VANITY", true);
 	Clickable_Object("VASE");
+
+	if (_vm->_cutContent
+	    && Global_Variable_Query(kVariableChapter) < 4) {
+		// The car is only bought by Reps from CrazyLegs
+		// if Dektora is a Replicant (so she will have the note from CrazyLegs)
+		// or if Dektora  is human and Gordo is also human (in which case, there'll be no note in the drawer) 
+		// We add the region in any case - on Restored Content mode
+		// to indicate there might be something of interest there,
+		// albeit not all playthroughs will have the note in there.
+		Scene_2D_Region_Add(0, 501, 381, 522, 466);
+	}
 }
 
 bool SceneScriptNR07::MouseClick(int x, int y) {
@@ -148,6 +159,45 @@ bool SceneScriptNR07::ClickedOnExit(int exitId) {
 }
 
 bool SceneScriptNR07::ClickedOn2DRegion(int region) {
+	if (_vm->_cutContent
+	    && region == 0) {
+		if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -134.5f, -73.35f, 43.98f, 4, true, false, false)) {
+			Player_Loses_Control();
+			Actor_Face_Object(kActorMcCoy, "VANITY", true);
+			if (Actor_Query_Is_In_Current_Set(kActorDektora)) {
+				Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -2);
+				Actor_Says(kActorDektora, 560, 31); // Please don't touch that. It's private.
+				Actor_Says(kActorMcCoy, 8525, 19);  // Hmph.
+			} else {
+				if (Game_Flag_Query(kFlagDektoraIsReplicant)) {
+					if (Actor_Clue_Query(kActorMcCoy, kClueCrazysInvolvement)) {
+						Actor_Says(kActorMcCoy, 8580, 12); // Nothing else there
+					} else {
+						Sound_Play(kSfxDRAWER1, 90, 85, 85, 50);
+						Delay(700);
+						Actor_Clue_Acquire(kActorMcCoy, kClueCrazysInvolvement, false, -1);
+						// McCoy picks up a sales brochure (it's CrazyLeg's -- but the model is the same as the Tyrell's Pamphlet)
+						Item_Pickup_Spin_Effect(kModelAnimationTyrellSalesPamphlet, 508, 401);
+						// McCoy finds something inside the brochure - CrazyLeg's note to the Replicants
+						// Logic is similar to HC03 (finding photos inside Izo's camera)
+						Actor_Voice_Over(3690, kActorVoiceOver); // Hmm
+						Delay(1200);
+						Item_Pickup_Spin_Effect(kModelAnimationLetter, 508, 401);
+						Actor_Says(kActorMcCoy, 6975, 12); // Interesting
+						// We don't remove the region after picking the clue
+						// McCoy will just point out that there's nothing more there to find.
+						// (Saves us from using up a flag and having to write extra code)
+					}
+				} else {
+					Sound_Play(kSfxDRAWER1, 90, 85, 85, 50);
+					Delay(700);
+					Actor_Voice_Over(3700, kActorVoiceOver); // Nothing
+				}
+			}
+			Player_Gains_Control();
+		}
+		return true;
+	}
 	return false;
 }
 
diff --git a/engines/bladerunner/ui/kia.cpp b/engines/bladerunner/ui/kia.cpp
index fe2d3a61d0..b957d33325 100644
--- a/engines/bladerunner/ui/kia.cpp
+++ b/engines/bladerunner/ui/kia.cpp
@@ -1431,6 +1431,8 @@ void KIA::playObjectDescription() {
 	case kModelAnimationDektorasCard:
 		playActorDialogue(kActorMcCoy, 8835);
 		break;
+	case kModelAnimationLetter:
+		// fall through
 	case kModelAnimationGrigoriansNote:
 		playActorDialogue(kActorMcCoy, 8840);
 		break;




More information about the Scummvm-git-logs mailing list