aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/debugger.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp
index 58994b8d08..5c3346dbb1 100644
--- a/engines/bladerunner/debugger.cpp
+++ b/engines/bladerunner/debugger.cpp
@@ -71,6 +71,7 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() {
registerCmd("say", WRAP_METHOD(Debugger, cmdSay));
registerCmd("scene", WRAP_METHOD(Debugger, cmdScene));
registerCmd("var", WRAP_METHOD(Debugger, cmdVariable));
+ registerCmd("clue", WRAP_METHOD(Debugger, cmdClue));
registerCmd("load", WRAP_METHOD(Debugger, cmdLoad));
registerCmd("save", WRAP_METHOD(Debugger, cmdSave));
}
@@ -490,6 +491,42 @@ bool Debugger::cmdVariable(int argc, const char **argv) {
return true;
}
+bool Debugger::cmdClue(int argc, const char **argv) {
+ if (argc != 3 && argc != 4) {
+ debugPrintf("Get or changes clue for an actor.\n");
+ debugPrintf("Usage: %s <actorId> <clueId> [<value>]\n", argv[0]);
+ return true;
+ }
+
+ int actorId = atoi(argv[1]);
+
+ Actor *actor = nullptr;
+ if ((actorId >= 0 && actorId < (int)_vm->_gameInfo->getActorCount()) || (actorId == kActorVoiceOver)) {
+ actor = _vm->_actors[actorId];
+ }
+
+ if (actor == nullptr) {
+ debugPrintf("Unknown actor %i\n", actorId);
+ return true;
+ }
+
+ int clueId = atoi(argv[2]);
+
+ // TODO: check clueId
+
+ if (argc == 4) {
+ int value = atoi(argv[3]);
+ if (value != 0) {
+ actor->acquireClue(clueId, true, -1);
+ } else {
+ actor->loseClue(clueId);
+ }
+ }
+ debugPrintf("actorClue(%i, %i) = %i\n", actorId, clueId, actor->hasClue(clueId));
+
+ return true;
+}
+
bool Debugger::cmdLoad(int argc, const char **argv) {
if (argc != 2) {
debugPrintf("Loads a save game from original format.\n");