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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sat Apr 26 21:00:23 CEST 2008


Revision: 31733
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31733&view=rev
Author:   lordhoto
Date:     2008-04-26 12:00:22 -0700 (Sat, 26 Apr 2008)

Log Message:
-----------
Implemented opcodes:
 - 76: o3_removeItemInstances
 - 94: o3_showSceneStringsMessage

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v3.h
    scummvm/trunk/engines/kyra/script_v3.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-26 10:28:23 UTC (rev 31732)
+++ scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-26 19:00:22 UTC (rev 31733)
@@ -716,6 +716,7 @@
 	int o3_updateConversations(ScriptState *script);
 	int o3_setSceneDim(ScriptState *script);
 	int o3_update(ScriptState *script);
+	int o3_removeItemInstances(ScriptState *script);
 	int o3_enterNewScene(ScriptState *script);
 	int o3_setMalcolmPos(ScriptState *script);
 	int o3_stopMusic(ScriptState *script);
@@ -723,6 +724,7 @@
 	int o3_playSoundEffect(ScriptState *script);
 	int o3_getScore(ScriptState *script);
 	int o3_blockOutRegion(ScriptState *script);
+	int o3_showSceneStringsMessage(ScriptState *script);
 	int o3_getRand(ScriptState *script);
 	int o3_waitForConfirmationClick(ScriptState *script);
 	int o3_defineRoomEntrance(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-26 10:28:23 UTC (rev 31732)
+++ scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-26 19:00:22 UTC (rev 31733)
@@ -689,6 +689,34 @@
 	return 0;
 }
 
+int KyraEngine_v3::o3_removeItemInstances(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_removeItemInstances(%p) (%d)", (const void *)script, stackPos(0));
+	const int16 item = stackPos(0);
+
+	int deleted = 0;
+
+	for (int i = 0; i < 10; ++i) {
+		if (_mainCharacter.inventory[i] == item) {
+			_mainCharacter.inventory[i] = 0xFFFF;
+			++deleted;
+		}
+	}
+
+	if (_itemInHand == item) {
+		removeHandItem();
+		++deleted;
+	}
+
+	for (int i = 0; i < 50; ++i) {
+		if (_itemList[i].id == item) {
+			_itemList[i].id = 0xFFFF;
+			++deleted;
+		}
+	}
+
+	return deleted;
+}
+
 int KyraEngine_v3::o3_enterNewScene(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_enterNewScene(%p) (%d, %d, %d, %d, %d)", (const void *)script, stackPos(0),
 		stackPos(1), stackPos(2), stackPos(3), stackPos(4));
@@ -759,6 +787,12 @@
 	return 0;
 }
 
+int KyraEngine_v3::o3_showSceneStringsMessage(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_showSceneStringsMessage(%p) (%d)", (const void *)script, stackPos(0));
+	showMessage((const char*)getTableEntry(_sceneStrings, stackPos(0)), 0xFF, 0xF0);
+	return 0;
+}
+
 int KyraEngine_v3::o3_getRand(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getRand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	assert(stackPos(0) < stackPos(1));
@@ -1281,10 +1315,10 @@
 	OpcodeUnImpl();
 	Opcode(o3_update);
 	// 0x4c
+	Opcode(o3_removeItemInstances);
 	OpcodeUnImpl();
 	OpcodeUnImpl();
 	OpcodeUnImpl();
-	OpcodeUnImpl();
 	// 0x50
 	Opcode(o3_enterNewScene);
 	OpcodeUnImpl();
@@ -1303,8 +1337,8 @@
 	// 0x5c
 	Opcode(o3_blockOutRegion);
 	Opcode(o3_dummy);
+	Opcode(o3_showSceneStringsMessage);
 	OpcodeUnImpl();
-	OpcodeUnImpl();
 	// 0x60
 	Opcode(o3_getRand);
 	Opcode(o3_dummy);


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