[Scummvm-cvs-logs] SF.net SVN: scummvm:[41031] scummvm/trunk/engines/kyra
athrxx at users.sourceforge.net
athrxx at users.sourceforge.net
Sat May 30 16:13:27 CEST 2009
Revision: 41031
http://scummvm.svn.sourceforge.net/scummvm/?rev=41031&view=rev
Author: athrxx
Date: 2009-05-30 14:13:27 +0000 (Sat, 30 May 2009)
Log Message:
-----------
LOL: - fixed crash that occured when entering yvel city
- added another opcode for yvel woods
Modified Paths:
--------------
scummvm/trunk/engines/kyra/lol.cpp
scummvm/trunk/engines/kyra/lol.h
scummvm/trunk/engines/kyra/script_lol.cpp
Modified: scummvm/trunk/engines/kyra/lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/lol.cpp 2009-05-30 13:36:51 UTC (rev 41030)
+++ scummvm/trunk/engines/kyra/lol.cpp 2009-05-30 14:13:27 UTC (rev 41031)
@@ -833,7 +833,7 @@
_currentLevel = 1;
giveCredits(41, 0);
- _inventory[0] = makeItem(216, 0, 0);
+ _inventory[0] = makeItem(132, 0, 0);
_inventory[1] = makeItem(217, 0, 0);
_inventory[2] = makeItem(218, 0, 0);
Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h 2009-05-30 13:36:51 UTC (rev 41030)
+++ scummvm/trunk/engines/kyra/lol.h 2009-05-30 14:13:27 UTC (rev 41031)
@@ -741,6 +741,7 @@
int olol_paralyzePoisonCharacter(EMCState *script);
int olol_drawCharPortrait(EMCState *script);
int olol_assignSpecialGuiShape(EMCState *script);
+ int olol_findInventoryItem(EMCState *script);
int olol_changeItemTypeOrFlag(EMCState *script);
int olol_placeInventoryItemInHand(EMCState *script);
int olol_castSpell(EMCState *script);
Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp 2009-05-30 13:36:51 UTC (rev 41030)
+++ scummvm/trunk/engines/kyra/script_lol.cpp 2009-05-30 14:13:27 UTC (rev 41031)
@@ -227,7 +227,7 @@
int LoLEngine::olol_loadLevelGraphics(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_loadLevelGraphics(%p) (%s, %d, %d, %d, %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
- loadLevelGraphics(stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), (stackPos(5) == -1) ? 0 : stackPosString(5));
+ loadLevelGraphics(stackPosString(0), stackPos(1), stackPos(2), (uint16)stackPos(3), (uint16)stackPos(4), (stackPos(5) == -1) ? 0 : stackPosString(5));
return 1;
}
@@ -1893,6 +1893,35 @@
return 1;
}
+int LoLEngine::olol_findInventoryItem(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_findInventoryItem(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+ if (stackPos(0) == 0) {
+ for (int i = 0; i < 48; i++) {
+ if (!_inventory[i])
+ continue;
+ if (_itemsInPlay[_inventory[i]].itemPropertyIndex == stackPos(2))
+ return 0;
+ }
+ }
+ int cur = stackPos(1);
+ int last = cur;
+ if (stackPos(1) == -1) {
+ cur = 0;
+ last = 4;
+ }
+ for (;cur < last; cur++) {
+ if (!(_characters[cur].flags & 1))
+ continue;
+ for (int i = 0; i < 11; i++) {
+ if (!_characters[cur].items[i])
+ continue;
+ if (_itemsInPlay[_characters[cur].items[i]].itemPropertyIndex == stackPos(2))
+ return cur;
+ }
+ }
+ 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)
@@ -2545,9 +2574,9 @@
// 0xA4
Opcode(olol_assignSpecialGuiShape);
+ Opcode(olol_findInventoryItem);
OpcodeUnImpl();
OpcodeUnImpl();
- OpcodeUnImpl();
// 0xA8
OpcodeUnImpl();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list