From 845d65d8b73e2b7f3edf3fe50ac5b9bc3ce157e6 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Mon, 17 Mar 2008 23:27:33 +0000 Subject: Implemented opcode 98: o2_setDeathHandlerFlag svn-id: r31168 --- engines/kyra/kyra_v2.cpp | 8 +++++--- engines/kyra/kyra_v2.h | 2 ++ engines/kyra/saveload_v2.cpp | 2 +- engines/kyra/script_v2.cpp | 8 +++++++- 4 files changed, 15 insertions(+), 5 deletions(-) (limited to 'engines/kyra') diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index d10e501273..4d8fdde58d 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -130,6 +130,8 @@ KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags) : KyraEngi _mainCharacter.dlgIndex = 0; setNewDlgIndex(-1); + _deathHandler = -1; + _bookMaxPage = 6; _bookCurPage = 0; _bookNewPage = 0; @@ -387,7 +389,7 @@ void KyraEngine_v2::runLoop() { _quitFlag = false; while (!_quitFlag) { - //if (_unk1 >= 0) { + //if (_deathHandler >= 0) { // removeHandItem(); // waitTicks(5); // sub_270A0(); @@ -514,7 +516,7 @@ void KyraEngine_v2::handleInput(int x, int y) { } } - //if (_unk1 <= -1) + //if (_deathHandler <= -1) // skipHandling = 1; if (skipHandling) @@ -545,7 +547,7 @@ void KyraEngine_v2::handleInput(int x, int y) { } bool KyraEngine_v2::handleInputUnkSub(int x, int y) { - if (y > 143/* || _unk1 > -1 */|| queryGameFlag(0x164)) + if (y > 143 || _deathHandler > -1 || queryGameFlag(0x164)) return false; if (_handItemSet <= -3 && findItem(_mainCharacter.sceneId, 13) >= 0) { diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index 884123f26a..559cd038bf 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -744,6 +744,7 @@ protected: int16 x2, y2; }; + int8 _deathHandler; Character _mainCharacter; bool _useCharPal; int _charPalEntry; @@ -1016,6 +1017,7 @@ protected: int o2_blockOutRegion(ScriptState *script); int o2_setCauldronState(ScriptState *script); int o2_getRand(ScriptState *script); + int o2_setDeathHandlerFlag(ScriptState *script); int o2_setDrawNoShapeFlag(ScriptState *script); int o2_showLetter(ScriptState *script); int o2_fillRect(ScriptState *script); diff --git a/engines/kyra/saveload_v2.cpp b/engines/kyra/saveload_v2.cpp index c20a73fc9f..5087db9591 100644 --- a/engines/kyra/saveload_v2.cpp +++ b/engines/kyra/saveload_v2.cpp @@ -139,7 +139,7 @@ void KyraEngine_v2::loadGame(const char *fileName) { bool setFlag1EE = (queryGameFlag(0x1EE) != 0); - //_unk1 = -1; + _deathHandler = -1; if (!_unkSceneScreenFlag1) { _sound->beginFadeOut(); _system->delayMillis(5 * _tickLength); diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp index 7330434ee0..9a2e94fa73 100644 --- a/engines/kyra/script_v2.cpp +++ b/engines/kyra/script_v2.cpp @@ -739,6 +739,12 @@ int KyraEngine_v2::o2_getRand(ScriptState *script) { return _rnd.getRandomNumberRng(stackPos(0), stackPos(1)); } +int KyraEngine_v2::o2_setDeathHandlerFlag(ScriptState *script) { + debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setDeathHandlerFlag(%p) (%d)", (const void *)script, stackPos(0)); + _deathHandler = stackPos(0); + return 0; +} + int KyraEngine_v2::o2_setDrawNoShapeFlag(ScriptState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setDrawNoShapeFlag(%p) (%d)", (const void *)script, stackPos(0)); _drawNoShapeFlag = (stackPos(0) != 0); @@ -1548,7 +1554,7 @@ void KyraEngine_v2::setupOpcodeTable() { // 0x60 Opcode(o2_getRand), OpcodeUnImpl(), - OpcodeUnImpl(), + Opcode(o2_setDeathHandlerFlag), Opcode(o2_setDrawNoShapeFlag), // 0x64 OpcodeUnImpl(), -- cgit v1.2.3