[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