diff options
author | Florian Kagerer | 2009-06-05 21:34:18 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-06-05 21:34:18 +0000 |
commit | 90ee879d89ad974df64a5119ae92d40141309496 (patch) | |
tree | 91010c0ddca5db726fcb9431aad5b56be89e49c4 /engines/kyra/script_lol.cpp | |
parent | 7c84cca81d4fd7eeadd3d6903d80e1e856c2d5a0 (diff) | |
download | scummvm-rg350-90ee879d89ad974df64a5119ae92d40141309496.tar.gz scummvm-rg350-90ee879d89ad974df64a5119ae92d40141309496.tar.bz2 scummvm-rg350-90ee879d89ad974df64a5119ae92d40141309496.zip |
LOL: implemented another opcode
svn-id: r41199
Diffstat (limited to 'engines/kyra/script_lol.cpp')
-rw-r--r-- | engines/kyra/script_lol.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp index 75651a2a9a..33edfa0e24 100644 --- a/engines/kyra/script_lol.cpp +++ b/engines/kyra/script_lol.cpp @@ -1896,6 +1896,31 @@ int LoLEngine::olol_drawCharPortrait(EMCState *script) { return 1; } +int LoLEngine::olol_removeInventoryItem(EMCState *script) { + debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_removeInventoryItem(%p) (%d)", (const void *)script, stackPos(0)); + int itemType = stackPos(0); + for (int i = 0; i < 48; i++) { + if (!_inventory[i] || _itemsInPlay[_inventory[i]].itemPropertyIndex != itemType) + continue; + _inventory[i] = 0; + gui_drawInventory(); + return 1; + } + + for (int i = 0; i < 4; i++) { + if (!(_characters[i].flags & 1)) + continue; + + for (int ii = 0; ii < 11; ii++) { + if (!_characters[i].items[ii] || _itemsInPlay[_characters[i].items[ii]].itemPropertyIndex != itemType) + continue; + _characters[i].items[ii] = 0; + return 1; + } + } + return 0; +} + int LoLEngine::olol_getAnimationLastPart(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getAnimationLastPart(%p) (%d)", (const void *)script, stackPos(0)); return _tim->resetAnimationLastPart(stackPos(0)); @@ -2730,7 +2755,7 @@ void LoLEngine::setupOpcodeTable() { Opcode(olol_drawCharPortrait); // 0xA0 - OpcodeUnImpl(); + Opcode(olol_removeInventoryItem); OpcodeUnImpl(); OpcodeUnImpl(); Opcode(olol_getAnimationLastPart); |