aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/debugger.cpp171
-rw-r--r--engines/tsage/debugger.h4
2 files changed, 174 insertions, 1 deletions
diff --git a/engines/tsage/debugger.cpp b/engines/tsage/debugger.cpp
index 730a8f2db1..bebf463f49 100644
--- a/engines/tsage/debugger.cpp
+++ b/engines/tsage/debugger.cpp
@@ -40,6 +40,8 @@ Debugger::Debugger() : GUI::Debugger() {
DCmd_Register("setflag", WRAP_METHOD(Debugger, Cmd_SetFlag));
DCmd_Register("getflag", WRAP_METHOD(Debugger, Cmd_GetFlag));
DCmd_Register("clearflag", WRAP_METHOD(Debugger, Cmd_ClearFlag));
+ DCmd_Register("listobjects", WRAP_METHOD(Debugger, Cmd_ListObjects));
+ DCmd_Register("moveobject", WRAP_METHOD(Debugger, Cmd_MoveObject));
DCmd_Register("item", WRAP_METHOD(Debugger, Cmd_Item));
}
@@ -210,6 +212,175 @@ bool Debugger::Cmd_ClearFlag(int argc, const char **argv) {
return true;
}
+/*
+ * This command lists the objects available, and their ID
+ */
+bool Debugger::Cmd_ListObjects(int argc, const char **argv) {
+ if (argc != 1) {
+ DebugPrintf("Usage: %s\n", argv[0]);
+ return true;
+ }
+
+ DebugPrintf("Available objects for this game are:\n");
+ DebugPrintf("0 - Stunner\n");
+ DebugPrintf("1 - Scanner\n");
+ DebugPrintf("2 - Stasis Box\n");
+ DebugPrintf("3 - Info Disk\n");
+ DebugPrintf("4 - Stasis Negator\n");
+ DebugPrintf("5 - Key Device\n");
+ DebugPrintf("6 - Medkit\n");
+ DebugPrintf("7 - Ladder\n");
+ DebugPrintf("8 - Rope\n");
+ DebugPrintf("9 - Key\n");
+ DebugPrintf("10 - Translator\n");
+ DebugPrintf("11 - Ale\n");
+ DebugPrintf("12 - Paper\n");
+ DebugPrintf("13 - Waldos\n");
+ DebugPrintf("14 - Stasis Box 2\n");
+ DebugPrintf("15 - Ring\n");
+ DebugPrintf("16 - Cloak\n");
+ DebugPrintf("17 - Tunic\n");
+ DebugPrintf("18 - Candle\n");
+ DebugPrintf("19 - Straw\n");
+ DebugPrintf("20 - Scimitar\n");
+ DebugPrintf("21 - Sword\n");
+ DebugPrintf("22 - Helmet\n");
+ DebugPrintf("23 - Items\n");
+ DebugPrintf("24 - Concentrator\n");
+ DebugPrintf("25 - Nullifier\n");
+ DebugPrintf("26 - Peg\n");
+ DebugPrintf("27 - Vial\n");
+ DebugPrintf("28 - Jacket\n");
+ DebugPrintf("29 - Tunic 2\n");
+ DebugPrintf("30 - Bone\n");
+ DebugPrintf("31 - Empty Jar\n");
+ DebugPrintf("32 - Jar\n");
+ return true;
+}
+
+/*
+ * This command gets an item, or move it to a room
+ */
+bool Debugger::Cmd_MoveObject(int argc, const char **argv) {
+ // Check for a flag to clear
+ if ((argc < 2) || (argc > 3)){
+ DebugPrintf("Usage: %s <object number> [<scene number>]\n", argv[0]);
+ DebugPrintf("If no scene is specified, the object will be added to inventory\n", argv[0]);
+ return true;
+ }
+
+ int objNum = strToInt(argv[1]);
+ int sceneNum = 1;
+ if (argc == 3)
+ sceneNum = strToInt(argv[2]);
+
+ switch (objNum) {
+ case OBJECT_STUNNER:
+ _globals->_inventory._stunner._sceneNumber = sceneNum;
+ break;
+ case OBJECT_SCANNER:
+ _globals->_inventory._scanner._sceneNumber = sceneNum;
+ break;
+ case OBJECT_STASIS_BOX:
+ _globals->_inventory._stasisBox._sceneNumber = sceneNum;
+ break;
+ case OBJECT_INFODISK:
+ _globals->_inventory._infoDisk._sceneNumber = sceneNum;
+ break;
+ case OBJECT_STASIS_NEGATOR:
+ _globals->_inventory._stasisNegator._sceneNumber = sceneNum;
+ break;
+ case OBJECT_KEY_DEVICE:
+ _globals->_inventory._keyDevice._sceneNumber = sceneNum;
+ break;
+ case OBJECT_MEDKIT:
+ _globals->_inventory._medkit._sceneNumber = sceneNum;
+ break;
+ case OBJECT_LADDER:
+ _globals->_inventory._ladder._sceneNumber = sceneNum;
+ break;
+ case OBJECT_ROPE:
+ _globals->_inventory._rope._sceneNumber = sceneNum;
+ break;
+ case OBJECT_KEY:
+ _globals->_inventory._key._sceneNumber = sceneNum;
+ break;
+ case OBJECT_TRANSLATOR:
+ _globals->_inventory._translator._sceneNumber = sceneNum;
+ break;
+ case OBJECT_ALE:
+ _globals->_inventory._ale._sceneNumber = sceneNum;
+ break;
+ case OBJECT_PAPER:
+ _globals->_inventory._paper._sceneNumber = sceneNum;
+ break;
+ case OBJECT_WALDOS:
+ _globals->_inventory._waldos._sceneNumber = sceneNum;
+ break;
+ case OBJECT_STASIS_BOX2:
+ _globals->_inventory._stasisBox2._sceneNumber = sceneNum;
+ break;
+ case OBJECT_RING:
+ _globals->_inventory._ring._sceneNumber = sceneNum;
+ break;
+ case OBJECT_CLOAK:
+ _globals->_inventory._cloak._sceneNumber = sceneNum;
+ break;
+ case OBJECT_TUNIC:
+ _globals->_inventory._tunic._sceneNumber = sceneNum;
+ break;
+ case OBJECT_CANDLE:
+ _globals->_inventory._candle._sceneNumber = sceneNum;
+ break;
+ case OBJECT_STRAW:
+ _globals->_inventory._straw._sceneNumber = sceneNum;
+ break;
+ case OBJECT_SCIMITAR:
+ _globals->_inventory._scimitar._sceneNumber = sceneNum;
+ break;
+ case OBJECT_SWORD:
+ _globals->_inventory._sword._sceneNumber = sceneNum;
+ break;
+ case OBJECT_HELMET:
+ _globals->_inventory._helmet._sceneNumber = sceneNum;
+ break;
+ case OBJECT_ITEMS:
+ _globals->_inventory._items._sceneNumber = sceneNum;
+ break;
+ case OBJECT_CONCENTRATOR:
+ _globals->_inventory._concentrator._sceneNumber = sceneNum;
+ break;
+ case OBJECT_NULLIFIER:
+ _globals->_inventory._nullifier._sceneNumber = sceneNum;
+ break;
+ case OBJECT_PEG:
+ _globals->_inventory._peg._sceneNumber = sceneNum;
+ break;
+ case OBJECT_VIAL:
+ _globals->_inventory._vial._sceneNumber = sceneNum;
+ break;
+ case OBJECT_JACKET:
+ _globals->_inventory._jacket._sceneNumber = sceneNum;
+ break;
+ case OBJECT_TUNIC2:
+ _globals->_inventory._tunic2._sceneNumber = sceneNum;
+ break;
+ case OBJECT_BONE:
+ _globals->_inventory._bone._sceneNumber = sceneNum;
+ break;
+ case OBJECT_EMPTY_JAR:
+ _globals->_inventory._emptyJar._sceneNumber = sceneNum;
+ break;
+ case OBJECT_JAR:
+ _globals->_inventory._jar._sceneNumber = sceneNum;
+ break;
+ default:
+ DebugPrintf("Invlid object Id %s\n", argv[1]);
+ }
+
+ return true;
+}
+
/**
* Give a specified item to the player
*/
diff --git a/engines/tsage/debugger.h b/engines/tsage/debugger.h
index ee097e17bf..a34bb1ef0a 100644
--- a/engines/tsage/debugger.h
+++ b/engines/tsage/debugger.h
@@ -40,11 +40,13 @@ protected:
bool Cmd_Scene(int argc, const char **argv);
bool Cmd_WalkRegions(int argc, const char **argv);
bool Cmd_PriorityRegions(int argc, const char **argv);
- bool Cmd_Item(int argc, const char **argv);
bool Cmd_SetFlag(int argc, const char **argv);
bool Cmd_GetFlag(int argc, const char **argv);
bool Cmd_ClearFlag(int argc, const char **argv);
+ bool Cmd_ListObjects(int argc, const char **argv);
+ bool Cmd_MoveObject(int argc, const char **argv);
+ bool Cmd_Item(int argc, const char **argv);
};
} // End of namespace tSage