diff options
author | Florian Kagerer | 2009-05-29 22:36:01 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-05-29 22:36:01 +0000 |
commit | 7463fe3f1b8355f8022a533a867aa74f71c2dc2d (patch) | |
tree | 618de6ecddafd6323754277bea88bf79541db754 /engines/kyra/script_lol.cpp | |
parent | 6668a3d7964309fcc6b1790148a3814e4dd14c3f (diff) | |
download | scummvm-rg350-7463fe3f1b8355f8022a533a867aa74f71c2dc2d.tar.gz scummvm-rg350-7463fe3f1b8355f8022a533a867aa74f71c2dc2d.tar.bz2 scummvm-rg350-7463fe3f1b8355f8022a533a867aa74f71c2dc2d.zip |
LOL: implemented opcode required for magic wands
svn-id: r41016
Diffstat (limited to 'engines/kyra/script_lol.cpp')
-rw-r--r-- | engines/kyra/script_lol.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp index d1c24c9acf..c0292425cd 100644 --- a/engines/kyra/script_lol.cpp +++ b/engines/kyra/script_lol.cpp @@ -1882,6 +1882,25 @@ int LoLEngine::olol_assignSpecialGuiShape(EMCState *script) { return 1; } +int LoLEngine::olol_changeItemTypeOrFlag(EMCState *script) { + debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_changeItemTypeOrFlag(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2)); + if (stackPos(0) < 1) + return 0; + + ItemInPlay *i = &_itemsInPlay[stackPos(0)]; + int r = stackPos(2) & 0x1fff; + + if (stackPos(1) == 4) { + i->itemPropertyIndex = r; + return r; + } else if (stackPos(1) == 15) { + i->shpCurFrame_flg = (i->shpCurFrame_flg & 0xe000) | r; + return r; + } + + return -1; +} + int LoLEngine::olol_placeInventoryItemInHand(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_placeInventoryItemInHand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1)); int itemType = stackPos(0); @@ -2523,7 +2542,7 @@ void LoLEngine::setupOpcodeTable() { OpcodeUnImpl(); OpcodeUnImpl(); OpcodeUnImpl(); - OpcodeUnImpl(); + Opcode(olol_changeItemTypeOrFlag); // 0xAC Opcode(olol_placeInventoryItemInHand); |