[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