aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/script_lol.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-05-29 22:36:01 +0000
committerFlorian Kagerer2009-05-29 22:36:01 +0000
commit7463fe3f1b8355f8022a533a867aa74f71c2dc2d (patch)
tree618de6ecddafd6323754277bea88bf79541db754 /engines/kyra/script_lol.cpp
parent6668a3d7964309fcc6b1790148a3814e4dd14c3f (diff)
downloadscummvm-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.cpp21
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);