diff options
Diffstat (limited to 'engines/mohawk')
-rw-r--r-- | engines/mohawk/myst_stacks/mechanical.cpp | 11 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/mechanical.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index 0ab1b8df86..46aade250d 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -50,6 +50,7 @@ MystScriptParser_Mechanical::~MystScriptParser_Mechanical() { void MystScriptParser_Mechanical::setupOpcodes() { // "Stack-Specific" Opcodes + OPCODE(100, o_throneEnablePassage); OPCODE(104, opcode_104); OPCODE(105, o_fortressStaircaseMovie); OPCODE(121, opcode_121); @@ -170,6 +171,10 @@ uint16 MystScriptParser_Mechanical::getVar(uint16 var) { void MystScriptParser_Mechanical::toggleVar(uint16 var) { switch(var) { + case 0: // Sirrus's Secret Panel State + _state.sirrusPanelState ^= 1; + case 1: // Achenar's Secret Panel State + _state.achenarPanelState ^= 1; case 3: // Achenar's Secret Room Crate State _state.achenarCrateOpened ^= 1; case 4: // Myst Book Room Staircase State @@ -216,6 +221,12 @@ bool MystScriptParser_Mechanical::setVarValue(uint16 var, uint16 value) { return refresh; } +void MystScriptParser_Mechanical::o_throneEnablePassage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { + debugC(kDebugScript, "Opcode %d: Enable throne passage", op); + + _vm->_resources[argv[0]]->setEnabled(getVar(var)); +} + void MystScriptParser_Mechanical::opcode_104(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 7015c1b9c1..346699b425 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -66,6 +66,7 @@ private: void opcode_209_run(); void opcode_209_disable(); + DECLARE_OPCODE(o_throneEnablePassage); DECLARE_OPCODE(opcode_104); DECLARE_OPCODE(o_fortressStaircaseMovie); DECLARE_OPCODE(opcode_121); |