aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-13 00:19:17 +0300
committerThanasis Antoniou2019-05-13 03:29:00 +0300
commit9207f7270b9be7b72f7b65f5df6957c56c3bdc31 (patch)
treec48948ef34436d40b1cdff15972ec0d2e2dca79f /engines/bladerunner
parent618d48dde8a9e83f0cfa01d48cecd9cbfca6bf0d (diff)
downloadscummvm-rg350-9207f7270b9be7b72f7b65f5df6957c56c3bdc31.tar.gz
scummvm-rg350-9207f7270b9be7b72f7b65f5df6957c56c3bdc31.tar.bz2
scummvm-rg350-9207f7270b9be7b72f7b65f5df6957c56c3bdc31.zip
BLADERUNNER: Hit and Run dispatch clue restored
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/script/ai/mccoy.cpp24
-rw-r--r--engines/bladerunner/script/scene/ma01.cpp29
-rw-r--r--engines/bladerunner/script/scene/ps01.cpp28
3 files changed, 81 insertions, 0 deletions
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index 145743f034..f5c6342fab 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -127,17 +127,22 @@ void AIScriptMcCoy::CompletedMovementTrack() {
void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
switch (clueId) {
+ case kClueDispatchHitAndRun: // added case for cut content
+ // fall through
case kClueChopstickWrapper:
+ // fall through
case kClueSushiMenu:
Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationChinatown, true);
break;
case kClueDragonflyEarring:
+ // fall through
case kClueBombingSuspect:
Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationAnimoidRow, true);
break;
case kClueKingstonKitchenBox1:
+ // fall through
case kClueKingstonKitchenBox2:
if (Query_Difficulty_Level() == kGameDifficultyEasy) {
Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationAnimoidRow, true);
@@ -149,17 +154,24 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
break;
case kClueHysteriaToken:
+ // fall through
case kClueCarRegistration1:
+ // fall through
case kClueCarRegistration2:
+ // fall through
case kClueCarRegistration3:
+ // fall through
case kClueLichenDogWrapper:
Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationHysteriaHall, true);
Spinner_Set_Selectable_Destination_Flag(kSpinnerDestinationNightclubRow, true);
break;
case kClueWeaponsCache:
+ // fall through
case kClueWeaponsOrderForm:
+ // fall through
case kClueShippingForm:
+ // fall through
case kCluePoliceIssueWeapons:
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 1);
break;
@@ -169,20 +181,27 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
break;
case kClueHomelessManKid:
+ // fall through
case kClueOriginalRequisitionForm:
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 3);
break;
case kClueScaryChair:
+ // fall through
case kClueIzosStashRaided:
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 2);
break;
case kClueDNATyrell:
+ // fall through
case kClueDNASebastian:
+ // fall through
case kClueDNAChew:
+ // fall through
case kClueDNAMoraji:
+ // fall through
case kClueDNALutherLance:
+ // fall through
case kClueDNAMarcus:
Global_Variable_Increment(kVariableDNAEvidence, 1);
break;
@@ -196,10 +215,15 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
Actor_Voice_Over(3320, kActorVoiceOver);
switch (clueId) {
case kClueWeaponsCache:
+ // fall through
case kClueWeaponsOrderForm:
+ // fall through
case kClueGuzzasCash:
+ // fall through
case kCluePoliceIssueWeapons:
+ // fall through
case kClueIzosStashRaided:
+ // fall through
case kClueOriginalRequisitionForm:
Actor_Voice_Over(3340, kActorVoiceOver);
Actor_Voice_Over(3350, kActorVoiceOver);
diff --git a/engines/bladerunner/script/scene/ma01.cpp b/engines/bladerunner/script/scene/ma01.cpp
index 9b4e8d236e..d21ac5d7c6 100644
--- a/engines/bladerunner/script/scene/ma01.cpp
+++ b/engines/bladerunner/script/scene/ma01.cpp
@@ -269,12 +269,41 @@ void SceneScriptMA01::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
}
void SceneScriptMA01::PlayerWalkedIn() {
+ if (_vm->_cutContent) {
+ if (!Game_Flag_Query(kFlagCT01Visited) && !Actor_Clue_Query(kActorMcCoy, kClueDispatchHitAndRun)) {
+ Actor_Clue_Acquire(kActorMcCoy, kClueDispatchHitAndRun, false, kActorDispatcher);
+ ADQ_Add(kActorDispatcher, 80, kAnimationModeTalk);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ ADQ_Add(kActorOfficerLeary, 340, kAnimationModeTalk); // sector 3 - go ahead
+ } else {
+ ADQ_Add(kActorOfficerGrayford, 360, kAnimationModeTalk); // sector 3 - go ahead
+ }
+ ADQ_Add(kActorDispatcher, 90, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 100, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 110, kAnimationModeTalk);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ ADQ_Add(kActorOfficerLeary, 350, kAnimationModeTalk); // sector 3 - responding code 3
+ } else {
+ ADQ_Add(kActorOfficerGrayford, 370, kAnimationModeTalk); // sector 3 - responding code 3
+ }
+ ADQ_Add_Pause(1000);
+ ADQ_Add(kActorDispatcher, 120, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 130, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 140, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 150, kAnimationModeTalk);
+ }
+ }
}
void SceneScriptMA01::PlayerWalkedOut() {
Actor_Set_Invisible(kActorMcCoy, false);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
+
+ if (_vm->_cutContent) {
+ ADQ_Flush(); // for dispatcher queue cleanup
+ }
+
if (!Game_Flag_Query(kFlagMA01toMA06)) {
if (Global_Variable_Query(kVariableChapter) == 1) {
Outtake_Play(kOuttakeTowards2, true, -1);
diff --git a/engines/bladerunner/script/scene/ps01.cpp b/engines/bladerunner/script/scene/ps01.cpp
index bffcd0ead4..abe4a07760 100644
--- a/engines/bladerunner/script/scene/ps01.cpp
+++ b/engines/bladerunner/script/scene/ps01.cpp
@@ -285,6 +285,30 @@ void SceneScriptPS01::PlayerWalkedIn() {
Actor_Set_At_XYZ(kActorMcCoy, 1920.0f, 16581.0f, -2653.0f, 150);
Game_Flag_Reset(kFlagPS02toPS01);
}
+ if (_vm->_cutContent) {
+ if (!Game_Flag_Query(kFlagCT01Visited) && !Actor_Clue_Query(kActorMcCoy, kClueDispatchHitAndRun)) {
+ Actor_Clue_Acquire(kActorMcCoy, kClueDispatchHitAndRun, false, kActorDispatcher);
+ ADQ_Add(kActorDispatcher, 80, kAnimationModeTalk);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ ADQ_Add(kActorOfficerLeary, 340, kAnimationModeTalk); // sector 3 - go ahead
+ } else {
+ ADQ_Add(kActorOfficerGrayford, 360, kAnimationModeTalk); // sector 3 - go ahead
+ }
+ ADQ_Add(kActorDispatcher, 90, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 100, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 110, kAnimationModeTalk);
+ if (Game_Flag_Query(kFlagRC01PoliceDone)) {
+ ADQ_Add(kActorOfficerLeary, 350, kAnimationModeTalk); // sector 3 - responding code 3
+ } else {
+ ADQ_Add(kActorOfficerGrayford, 370, kAnimationModeTalk); // sector 3 - responding code 3
+ }
+ ADQ_Add_Pause(1000);
+ ADQ_Add(kActorDispatcher, 120, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 130, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 140, kAnimationModeTalk);
+ ADQ_Add(kActorDispatcher, 150, kAnimationModeTalk);
+ }
+ }
//return false;
}
@@ -293,6 +317,10 @@ void SceneScriptPS01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
+ if (_vm->_cutContent) {
+ ADQ_Flush(); // for dispatcher queue cleanup
+ }
+
if (!Game_Flag_Query(kflagPS01toPS02)) {
if (Global_Variable_Query(kVariableChapter) == 1) {
Outtake_Play(kOuttakeTowards3, true, -1);