aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/script_lol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/script_lol.cpp')
-rw-r--r--engines/kyra/script_lol.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp
index 8b7cd732f9..76f8ec7413 100644
--- a/engines/kyra/script_lol.cpp
+++ b/engines/kyra/script_lol.cpp
@@ -115,7 +115,7 @@ bool LoLEngine::checkSceneUpdateNeed(int func) {
int LoLEngine::olol_setWallType(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setWallType(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
if (_wllWallFlags[stackPos(2)] & 4)
- disableMonstersForBlock(stackPos(0));
+ deleteMonstersForBlock(stackPos(0));
setWallType(stackPos(0), stackPos(1), stackPos(2));
return 1;
}
@@ -1134,6 +1134,20 @@ int LoLEngine::olol_playMusicTrack(EMCState *script) {
return snd_playTrack(stackPos(0));
}
+int LoLEngine::olol_countBlockItems(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_countBlockItems(%p) (%d)", (const void *)script, stackPos(0));
+ uint16 o = _levelBlockProperties[stackPos(0)].assignedObjects;
+ int res = 0;
+
+ while (o) {
+ if (!(o & 0x8000))
+ res++;
+ o = findObject(o)->nextAssignedObject;
+ }
+
+ return res;
+}
+
int LoLEngine::olol_stopCharacterSpeech(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_stopCharacterSpeech(%p)", (const void *)script);
snd_stopSpeech(1);
@@ -1727,7 +1741,7 @@ void LoLEngine::setupOpcodeTable() {
// 0x64
Opcode(olol_playMusicTrack);
OpcodeUnImpl();
- OpcodeUnImpl();
+ Opcode(olol_countBlockItems);
OpcodeUnImpl();
// 0x68