[Scummvm-cvs-logs] SF.net SVN: scummvm:[41016] scummvm/trunk/engines/kyra

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Sat May 30 00:36:01 CEST 2009


Revision: 41016
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41016&view=rev
Author:   athrxx
Date:     2009-05-29 22:36:01 +0000 (Fri, 29 May 2009)

Log Message:
-----------
LOL: implemented opcode required for magic wands

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-29 19:27:39 UTC (rev 41015)
+++ scummvm/trunk/engines/kyra/lol.cpp	2009-05-29 22:36:01 UTC (rev 41016)
@@ -2340,18 +2340,18 @@
 	_screen->copyPage(0, 12);
 
 	int fireBallWH = (d << 4) * -1;
-	int numFireBalls = 1;
+	int numFireballs = 1;
 	if (fbCnt > 3)
-		numFireBalls = fbCnt - 3;
+		numFireballs = fbCnt - 3;
 
 	FireballState *fireballState[3];
 	memset(fireballState, 0, sizeof(fireballState));
-	for (i = 0; i < numFireBalls; i++)
+	for (i = 0; i < numFireballs; i++)
 		fireballState[i] = new FireballState(i);
 
 	_screen->copyPage(12, drawPage1);
 
-	for (i = 0; i < numFireBalls;) {
+	for (i = 0; i < numFireballs;) {
 		_screen->setCurPage(drawPage1);
 		uint32 ctime = _system->getMillis();
 
@@ -2407,8 +2407,8 @@
 						i++;
 					}
 
-					static const uint8 fireBallSfx[] = { 98, 167, 167, 168 };
-					snd_playSoundEffect(fireBallSfx[d], -1);
+					static const uint8 fireballSfx[] = { 98, 167, 167, 168 };
+					snd_playSoundEffect(fireballSfx[d], -1);
 
 				} else {
 					fb->progress -= fb->step;
@@ -2426,7 +2426,7 @@
 		_screen->copyPage(12, drawPage1);
 	}
 
-	for (i = 0; i < numFireBalls; i++)
+	for (i = 0; i < numFireballs; i++)
 		delete fireballState[i];
 
 	_screen->setCurPage(cp);

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2009-05-29 19:27:39 UTC (rev 41015)
+++ scummvm/trunk/engines/kyra/lol.h	2009-05-29 22:36:01 UTC (rev 41016)
@@ -740,6 +740,7 @@
 	int olol_paralyzePoisonCharacter(EMCState *script);
 	int olol_drawCharPortrait(EMCState *script);
 	int olol_assignSpecialGuiShape(EMCState *script);
+	int olol_changeItemTypeOrFlag(EMCState *script);
 	int olol_placeInventoryItemInHand(EMCState *script);
 	int olol_castSpell(EMCState *script);
 	int olol_pitDrop(EMCState *script);

Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp	2009-05-29 19:27:39 UTC (rev 41015)
+++ scummvm/trunk/engines/kyra/script_lol.cpp	2009-05-29 22:36:01 UTC (rev 41016)
@@ -1882,6 +1882,25 @@
 	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 @@
 	OpcodeUnImpl();
 	OpcodeUnImpl();
 	OpcodeUnImpl();
-	OpcodeUnImpl();
+	Opcode(olol_changeItemTypeOrFlag);
 
 	// 0xAC
 	Opcode(olol_placeInventoryItemInHand);


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