diff options
Diffstat (limited to 'engines/bladerunner')
-rw-r--r-- | engines/bladerunner/actor.cpp | 5 | ||||
-rw-r--r-- | engines/bladerunner/actor.h | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ps06.cpp | 30 | ||||
-rw-r--r-- | engines/bladerunner/script/script.cpp | 8 | ||||
-rw-r--r-- | engines/bladerunner/script/script.h | 4 |
5 files changed, 32 insertions, 17 deletions
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp index 198762738f..b00b870929 100644 --- a/engines/bladerunner/actor.cpp +++ b/engines/bladerunner/actor.cpp @@ -1209,7 +1209,8 @@ bool Actor::hasClue(int clueId) const { return _clues->isAcquired(clueId); } -void Actor::copyClues(int actorId) { +bool Actor::copyClues(int actorId) { + bool newCluesAcquired = false; Actor *otherActor = _vm->_actors[actorId]; for (int i = 0; i < (int)_vm->_gameInfo->getClueCount(); i++) { if (hasClue(i) && !_clues->isPrivate(i) && otherActor->canAcquireClue(i) && !otherActor->hasClue(i)) { @@ -1218,8 +1219,10 @@ void Actor::copyClues(int actorId) { fromActorId = _clues->getFromActorId(i); } otherActor->acquireClue(i, false, fromActorId); + newCluesAcquired = true; } } + return newCluesAcquired; } void Actor::acquireCluesByRelations() { diff --git a/engines/bladerunner/actor.h b/engines/bladerunner/actor.h index 186468be2a..9d84e57593 100644 --- a/engines/bladerunner/actor.h +++ b/engines/bladerunner/actor.h @@ -254,7 +254,7 @@ public: void acquireClue(int clueId, bool unknownFlag, int fromActorId); void loseClue(int clueId); bool hasClue(int clueId) const; - void copyClues(int actorId); + bool copyClues(int actorId); void acquireCluesByRelations(); int soundVolume() const; diff --git a/engines/bladerunner/script/scene/ps06.cpp b/engines/bladerunner/script/scene/ps06.cpp index d0624ef6a6..10797e350f 100644 --- a/engines/bladerunner/script/scene/ps06.cpp +++ b/engines/bladerunner/script/scene/ps06.cpp @@ -53,7 +53,7 @@ bool SceneScriptPS06::ClickedOn3DObject(const char *objectName, bool a2) { if (Object_Query_Click("E.SCREEN03", objectName) || Object_Query_Click("E.MONITOR3", objectName) ) { - Actor_Says(kActorAnsweringMachine, 330, 3); + Actor_Says(kActorAnsweringMachine, 330, kAnimationModeTalk); // uploading clues if (Actor_Clue_Query(kActorMcCoy, kClueCar) && !Actor_Clue_Query(kActorMcCoy, kClueCarRegistration1) && !Actor_Clue_Query(kActorMcCoy, kClueCarRegistration2) @@ -85,15 +85,27 @@ bool SceneScriptPS06::ClickedOn3DObject(const char *objectName, bool a2) { Actor_Clues_Transfer_New_From_Mainframe(kActorMcCoy); return true; } else { - Actor_Clues_Transfer_New_To_Mainframe(kActorMcCoy); - Ambient_Sounds_Play_Sound(kSfxDATALOAD, 50, 0, 0, 99); - Delay(2000); - Actor_Says(kActorAnsweringMachine, 340, kAnimationModeTalk); - Actor_Clues_Transfer_New_From_Mainframe(kActorMcCoy); - Ambient_Sounds_Play_Sound(kSfxDATALOAD, 50, 0, 0, 99); - Delay(2000); + bool tranferedClues = false; + tranferedClues = Actor_Clues_Transfer_New_To_Mainframe(kActorMcCoy); + if (_vm->_cutContent && !tranferedClues) { + Actor_Says(kActorAnsweringMachine, 370, kAnimationModeTalk); // no clues transfered + } else { + Ambient_Sounds_Play_Sound(kSfxDATALOAD, 50, 0, 0, 99); + Delay(2000); + } + Actor_Says(kActorAnsweringMachine, 340, kAnimationModeTalk); // downloading clues + tranferedClues = Actor_Clues_Transfer_New_From_Mainframe(kActorMcCoy); + if (_vm->_cutContent && !tranferedClues) { + Actor_Says(kActorAnsweringMachine, 370, kAnimationModeTalk); // no clues transfered + } else { + Ambient_Sounds_Play_Sound(kSfxDATALOAD, 50, 0, 0, 99); + Delay(2000); + } Ambient_Sounds_Play_Sound(kSfxBEEPNEAT, 80, 0, 0, 99); - Actor_Says(kActorAnsweringMachine, 350, kAnimationModeTalk); + Actor_Says(kActorAnsweringMachine, 350, kAnimationModeTalk); // db transfer complete + if (_vm->_cutContent && tranferedClues) { + Actor_Says(kActorAnsweringMachine, 360, kAnimationModeTalk); // new clues added + } return true; } } diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp index 4ce5e893fe..e6659165d6 100644 --- a/engines/bladerunner/script/script.cpp +++ b/engines/bladerunner/script/script.cpp @@ -740,14 +740,14 @@ bool ScriptBase::Actor_Clue_Query(int actorId, int clueId) { return _vm->_actors[actorId]->hasClue(clueId); } -void ScriptBase::Actor_Clues_Transfer_New_To_Mainframe(int actorId) { +bool ScriptBase::Actor_Clues_Transfer_New_To_Mainframe(int actorId) { debugC(kDebugScript, "Actor_Clues_Transfer_New_To_Mainframe(%d)", actorId); - _vm->_actors[actorId]->copyClues(kActorVoiceOver); + return _vm->_actors[actorId]->copyClues(kActorVoiceOver); } -void ScriptBase::Actor_Clues_Transfer_New_From_Mainframe(int actorId) { +bool ScriptBase::Actor_Clues_Transfer_New_From_Mainframe(int actorId) { debugC(kDebugScript, "Actor_Clues_Transfer_New_From_Mainframe(%d)", actorId); - _vm->_actors[kActorVoiceOver]->copyClues(actorId); + return _vm->_actors[kActorVoiceOver]->copyClues(actorId); } void ScriptBase::Actor_Set_Invisible(int actorId, bool isInvisible) { diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h index 7641b2279b..aca4507f6e 100644 --- a/engines/bladerunner/script/script.h +++ b/engines/bladerunner/script/script.h @@ -117,8 +117,8 @@ protected: void Actor_Clue_Acquire(int actorId, int clueId, bool unknownFlag, int fromActorId); void Actor_Clue_Lose(int actorId, int clueId); bool Actor_Clue_Query(int actorId, int clueId); - void Actor_Clues_Transfer_New_To_Mainframe(int actorId); - void Actor_Clues_Transfer_New_From_Mainframe(int actorId); + bool Actor_Clues_Transfer_New_To_Mainframe(int actorId); + bool Actor_Clues_Transfer_New_From_Mainframe(int actorId); void Actor_Set_Invisible(int actorId, bool isInvisible); void Actor_Set_Immunity_To_Obstacles(int actorId, bool isImmune); void Item_Add_To_World(int itemId, int animationId, int setId, float x, float y, float z, signed int facing, int height, int width, bool isTargetable, bool isObstacle, bool isPoliceMazeEnemy, bool updateOnly); |