aboutsummaryrefslogtreecommitdiff
path: root/engines/prince/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/prince/script.cpp')
-rw-r--r--engines/prince/script.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp
index 5c81ee682c..a8efe71ca8 100644
--- a/engines/prince/script.cpp
+++ b/engines/prince/script.cpp
@@ -212,10 +212,10 @@ int Script::scanMobEvents(int mobMask, int dataEventOffset) {
int32 code;
do {
mob = (int)READ_UINT16(&_data[dataEventOffset + i * 6]);
- debug("mob: %d", mob);
- code = (int)READ_UINT32(&_data[dataEventOffset + i * 6 + 2]);
- debug("code: %d", code);
if (mob == mobMask) {
+ code = (int)READ_UINT32(&_data[dataEventOffset + i * 6 + 2]);
+ debug("mob: %d", mob);
+ debug("code: %d", code);
return code;
}
i++;
@@ -223,6 +223,29 @@ int Script::scanMobEvents(int mobMask, int dataEventOffset) {
return -1;
}
+int Script::scanMobEventsWithItem(int mobMask, int dataEventOffset, int itemNr) {
+ debug("mobMask: %d", mobMask);
+ int i = 0;
+ int16 mob;
+ int16 item;
+ int32 code;
+ do {
+ mob = (int)READ_UINT16(&_data[dataEventOffset + i * 8]);
+ if (mob == mobMask) {
+ item = (int)READ_UINT16(&_data[dataEventOffset + i * 8 + 2]);
+ if (item == itemNr) {
+ code = (int)READ_UINT32(&_data[dataEventOffset + i * 8 + 4]);
+ debug("mob: %d", mob);
+ debug("item: %d", item);
+ debug("code: %d", code);
+ return code;
+ }
+ }
+ i++;
+ } while (mob != -1);
+ return -1;
+}
+
void Script::installSingleBackAnim(Common::Array<BackgroundAnim> &_backanimList, int offset) {
BackgroundAnim newBackgroundAnim;