aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/game_constants.h8
-rw-r--r--engines/bladerunner/script/ai/free_slot_a.cpp13
-rw-r--r--engines/bladerunner/script/ai/free_slot_b.cpp13
-rw-r--r--engines/bladerunner/script/scene/kp02.cpp7
-rw-r--r--engines/bladerunner/script/scene/kp03.cpp6
-rw-r--r--engines/bladerunner/script/scene/ug04.cpp23
6 files changed, 60 insertions, 10 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index a4c9ba8c7e..39d4c8bf84 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1108,19 +1108,19 @@ enum Flags {
kFlagMcCoyFreedOfAccusations = 666,
// 667 is never used
// 668 is never used
- // 669 is never used
+ kFlagKP02DispatchOnToxicKipple = 669, // Re-purposed. Original: 669 is never used
kFlagCallWithGuzza = 670,
kFlagUG18GuzzaScene = 671,
kFlagMA07toPS14 = 672,
kFlagPS14toMA07 = 673,
kFlagKP01Entered = 674,
- // 675 is never used
+ kFlagUG04DispatchOnHoodooRats = 675, // Re-purposed. Original: 675 is never used
kFlagUG15RatShot = 676,
kFlagUG15BridgeWillBreak = 677,
kFlagChapter2Intro = 678,
kFlagChapter3Intro = 679,
kFlagChapter4Intro = 680,
- // 681 is never used
+ kFlagMcCoyCommentsOnHoodooRats = 681, // Re-purposed. Original: 681 is never used
kFlagUG15BridgeBroken = 682,
kFlagUG05TalkToPolice = 683,
kFlagHF05PoliceAttacked = 684,
@@ -2489,7 +2489,7 @@ enum GoalOfficerGrayford {
kGoalOfficerGrayfordStopPatrolToTalkToMcCoyAtDR04 = 106,
kGoalOfficerGrayfordLeavesWithMorajiCorpseDR04 = 110,
kGoalOfficerGrayfordArrestMcCoyInTB03Act4 = 399, // TB02_TB03
- kGoalOfficerGrayfordStopAndTalkDR04 = 199, // this is used temporarily to make him stop and talk while at UG04 (Moraji's death scene)
+ kGoalOfficerGrayfordStopAndTalkDR04 = 199, // this is used temporarily to make him stop and talk while at DR04 (Moraji's death scene)
kGoalOfficerGrayfordStartOfAct4 = 300,
kGoalOfficerGrayfordHuntingAroundAct4 = 305,
kGoalOfficerGrayfordPrepareToHuntAroundAct4 = 306,
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index cba1488d45..eaee3e1bfb 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -210,10 +210,17 @@ void AIScriptFreeSlotA::ReceivedClue(int clueId, int fromActorId) {
void AIScriptFreeSlotA::ClickedByPlayer() {
if (Actor_Query_Goal_Number(kActorFreeSlotA) == kGoalFreeSlotAGone) {
Actor_Face_Actor(kActorMcCoy, kActorFreeSlotA, true);
- if (Random_Query(1, 2) == 1) {
- Actor_Says(kActorMcCoy, 8655, 16);
+ if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnHoodooRats)) {
+ Game_Flag_Set(kFlagMcCoyCommentsOnHoodooRats);
+ Actor_Voice_Over(1060, kActorVoiceOver); // Hoodoo rats
+ Actor_Voice_Over(1080, kActorVoiceOver);
+ Actor_Voice_Over(1090, kActorVoiceOver);
} else {
- Actor_Says(kActorMcCoy, 8665, 16);
+ if (Random_Query(1, 2) == 1) {
+ Actor_Says(kActorMcCoy, 8655, 16);
+ } else {
+ Actor_Says(kActorMcCoy, 8665, 16);
+ }
}
}
//return false;
diff --git a/engines/bladerunner/script/ai/free_slot_b.cpp b/engines/bladerunner/script/ai/free_slot_b.cpp
index 69274dae43..1124d283ec 100644
--- a/engines/bladerunner/script/ai/free_slot_b.cpp
+++ b/engines/bladerunner/script/ai/free_slot_b.cpp
@@ -155,10 +155,17 @@ void AIScriptFreeSlotB::ClickedByPlayer() {
return; //false;
Actor_Face_Actor(kActorMcCoy, kActorFreeSlotB, true);
- if (Random_Query(1, 2) == 1) {
- Actor_Says(kActorMcCoy, 8655, 16);
+ if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnHoodooRats)) {
+ Game_Flag_Set(kFlagMcCoyCommentsOnHoodooRats);
+ Actor_Voice_Over(1060, kActorVoiceOver); // Hoodoo rats
+ Actor_Voice_Over(1080, kActorVoiceOver);
+ Actor_Voice_Over(1090, kActorVoiceOver);
} else {
- Actor_Says(kActorMcCoy, 8665, 16);
+ if (Random_Query(1, 2) == 1) {
+ Actor_Says(kActorMcCoy, 8655, 16);
+ } else {
+ Actor_Says(kActorMcCoy, 8665, 16);
+ }
}
}
diff --git a/engines/bladerunner/script/scene/kp02.cpp b/engines/bladerunner/script/scene/kp02.cpp
index 0c238b31ef..5bb0474deb 100644
--- a/engines/bladerunner/script/scene/kp02.cpp
+++ b/engines/bladerunner/script/scene/kp02.cpp
@@ -148,6 +148,13 @@ void SceneScriptKP02::PlayerWalkedIn() {
) {
Actor_Set_Goal_Number(kActorSteele, 450);
}
+
+ if (_vm->_cutContent && !Game_Flag_Query(kFlagKP02DispatchOnToxicKipple)) {
+ Game_Flag_Set(kFlagKP02DispatchOnToxicKipple);
+ ADQ_Add_Pause(Random_Query(0, 1) * 1000);
+ ADQ_Add(kActorDispatcher, 300, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 310, kAnimationModeTalk);
+ }
//return false;
}
diff --git a/engines/bladerunner/script/scene/kp03.cpp b/engines/bladerunner/script/scene/kp03.cpp
index 8aa85f2e3b..896823f4d1 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -117,8 +117,14 @@ bool SceneScriptKP03::ClickedOn3DObject(const char *objectName, bool combatMode)
Game_Flag_Reset(kFlagKP03BombActive);
Scene_Loop_Set_Default(kKP03MainLoopBombNoWire);
Scene_Loop_Start_Special(kSceneLoopModeOnce, kKP03MainLoopBombInactive, false);
+ if (_vm->_cutContent) {
+ Actor_Voice_Over(1100, kActorVoiceOver); // I'd been lucky this time.
+ }
Actor_Voice_Over(1110, kActorVoiceOver);
Actor_Voice_Over(1120, kActorVoiceOver);
+ if (_vm->_cutContent) {
+ Actor_Voice_Over(1130, kActorVoiceOver); // One false step and...
+ }
} else {
Actor_Face_Object(kActorMcCoy, "BRACK MID", true);
Actor_Says(kActorMcCoy, 8580, 13);
diff --git a/engines/bladerunner/script/scene/ug04.cpp b/engines/bladerunner/script/scene/ug04.cpp
index f3fc451f8c..b126ba4bb6 100644
--- a/engines/bladerunner/script/scene/ug04.cpp
+++ b/engines/bladerunner/script/scene/ug04.cpp
@@ -162,6 +162,29 @@ void SceneScriptUG04::PlayerWalkedIn() {
#endif
Game_Flag_Reset(kFlagUG06toUG04);
}
+ if (_vm->_cutContent
+ && !Game_Flag_Query(kFlagUG04DispatchOnHoodooRats)
+ && !Game_Flag_Query(kFlagMcCoyCommentsOnHoodooRats)
+ ) {
+ if (Random_Query(0, 2) == 1) {
+ Game_Flag_Set(kFlagUG04DispatchOnHoodooRats);
+ ADQ_Add_Pause(Random_Query(0, 1) * 1000);
+ ADQ_Add(kActorDispatcher, 340, kAnimationModeTalk); // Southern Kipple Unit 2 LA.
+ if (Random_Query(0, 1) == 0) {
+ // Leary responds
+ ADQ_Add(kActorOfficerLeary, 240, kAnimationModeTalk); // LA, South Kipple Unit 2. Go ahead.
+ ADQ_Add(kActorDispatcher, 350, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 360, kAnimationModeTalk);
+ ADQ_Add(kActorOfficerLeary, 250, kAnimationModeTalk);
+ } else {
+ // Grayford responds
+ ADQ_Add(kActorOfficerGrayford, 520, kAnimationModeTalk); // LA, South Kipple Unit 2. Go ahead.
+ ADQ_Add(kActorDispatcher, 350, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 360, kAnimationModeTalk);
+ ADQ_Add(kActorOfficerGrayford, 530, kAnimationModeTalk);
+ }
+ }
+ }
}
void SceneScriptUG04::PlayerWalkedOut() {