aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/actor_clues.cpp
diff options
context:
space:
mode:
authorThanasis Antoniou2019-03-26 02:06:33 +0200
committerThanasis Antoniou2019-03-26 02:08:22 +0200
commit805dc466d02344a1368181f3cb852771d64a48a9 (patch)
tree897db2c9fd575c242396916532b5a687d6000c6d /engines/bladerunner/actor_clues.cpp
parentb3dc3832f7b04ed2c027d7b92deece6244a7f2fd (diff)
downloadscummvm-rg350-805dc466d02344a1368181f3cb852771d64a48a9.tar.gz
scummvm-rg350-805dc466d02344a1368181f3cb852771d64a48a9.tar.bz2
scummvm-rg350-805dc466d02344a1368181f3cb852771d64a48a9.zip
BLADERUNNER: Resolve dead end state with Zuben
McCoy should now always be able to gather enough clues to trigger Zuben throwing the soup (via the VK test question if he does not have the Lucy photo clue).
Diffstat (limited to 'engines/bladerunner/actor_clues.cpp')
-rw-r--r--engines/bladerunner/actor_clues.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/engines/bladerunner/actor_clues.cpp b/engines/bladerunner/actor_clues.cpp
index 1350b8d455..63dbbbf810 100644
--- a/engines/bladerunner/actor_clues.cpp
+++ b/engines/bladerunner/actor_clues.cpp
@@ -66,16 +66,25 @@ ActorClues::ActorClues(BladeRunnerEngine *vm, int cluesLimit) {
void ActorClues::acquire(int clueId, bool flag2, int fromActorId) {
int clueIndex = findClueIndex(clueId);
- _clues[clueIndex].flags |= 0x01;
- _clues[clueIndex].flags = (_clues[clueIndex].flags & ~0x02) | ((flag2 << 1) & 0x02);
- _clues[clueIndex].fromActorId = fromActorId;
-
+ if (clueIndex == -1) { // prevent assertion fault
+ // debug("Actor could not acquire clue: \"%s\" from %d", _vm->_crimesDatabase->getClueText(clueId), fromActorId);
+ return;
+ } else {
+ _clues[clueIndex].flags |= 0x01;
+ _clues[clueIndex].flags = (_clues[clueIndex].flags & ~0x02) | ((flag2 << 1) & 0x02);
+ _clues[clueIndex].fromActorId = fromActorId;
// debug("Actor acquired clue: \"%s\" from %d", _vm->_crimesDatabase->getClueText(clueId), fromActorId);
+ }
}
void ActorClues::lose(int clueId) {
int clueIndex = findClueIndex(clueId);
- _clues[clueIndex].flags = 0;
+ if (clueIndex == -1) { // prevent assertion fault
+ // debug("Actor could not lose clue: \"%s\"", _vm->_crimesDatabase->getClueText(clueId));
+ return;
+ } else {
+ _clues[clueIndex].flags = 0;
+ }
}
bool ActorClues::isAcquired(int clueId) const {