aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/bladerunner/actor.cpp4
-rw-r--r--engines/bladerunner/script/ai.cpp9
-rw-r--r--engines/bladerunner/script/ai.h3
3 files changed, 15 insertions, 1 deletions
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp
index 6265a0480a..85c5d89240 100644
--- a/engines/bladerunner/actor.cpp
+++ b/engines/bladerunner/actor.cpp
@@ -1062,7 +1062,11 @@ void Actor::addClueToDatabase(int clueId, int weight, bool clueAcquired, bool un
}
void Actor::acquireClue(int clueId, bool unknownFlag, int fromActorId) {
+ bool hasAlready = hasClue(clueId);
_clues->acquire(clueId, unknownFlag, fromActorId);
+ if (!hasAlready) {
+ _vm->_aiScripts->ReceivedClue(_id, clueId, fromActorId);
+ }
}
void Actor::loseClue(int clueId) {
diff --git a/engines/bladerunner/script/ai.cpp b/engines/bladerunner/script/ai.cpp
index 492abc0974..c695886a61 100644
--- a/engines/bladerunner/script/ai.cpp
+++ b/engines/bladerunner/script/ai.cpp
@@ -91,6 +91,15 @@ void AIScripts::CompletedMovementTrack(int actor) {
}
}
+void AIScripts::ReceivedClue(int actor, int clueId, int fromActorId) {
+ assert(actor < _actorsCount);
+ _inScriptCounter++;
+ if (_AIScripts[actor]) {
+ _AIScripts[actor]->ReceivedClue(clueId, fromActorId);
+ }
+ _inScriptCounter--;
+}
+
void AIScripts::EnteredScene(int actor, int setId) {
assert(actor < _actorsCount);
_inScriptCounter++;
diff --git a/engines/bladerunner/script/ai.h b/engines/bladerunner/script/ai.h
index 00a9f8e819..c3fec411e9 100644
--- a/engines/bladerunner/script/ai.h
+++ b/engines/bladerunner/script/ai.h
@@ -104,7 +104,7 @@ DECLARE_SCRIPT(McCoy)
float off_45A100;
float flt_462710;
float flt_462714;
-
+
void sub_4053E0();
void sub_4054F0();
void sub_405660();
@@ -170,6 +170,7 @@ public:
void Update(int actor);
void TimerExpired(int actor, int timer);
void CompletedMovementTrack(int actor);
+ void ReceivedClue(int actor, int clueId, int fromActorId);
void EnteredScene(int actor, int setId);
void OtherAgentEnteredThisScene(int actor, int otherActorId);
void OtherAgentExitedThisScene(int actor, int otherActorId);