aboutsummaryrefslogtreecommitdiff
path: root/engines/lure/hotspots.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lure/hotspots.h')
-rw-r--r--engines/lure/hotspots.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/engines/lure/hotspots.h b/engines/lure/hotspots.h
index 970f05414c..3f8bc544f6 100644
--- a/engines/lure/hotspots.h
+++ b/engines/lure/hotspots.h
@@ -67,7 +67,7 @@ private:
static void roomExitAnimHandler(Hotspot &h);
static void playerAnimHandler(Hotspot &h);
static void followerAnimHandler(Hotspot &h);
- static void skorlAnimHandler(Hotspot &h);
+ static void jailorAnimHandler(Hotspot &h);
static void sonicRatAnimHandler(Hotspot &h);
static void droppingTorchAnimHandler(Hotspot &h);
static void playerSewerExitAnimHandler(Hotspot &h);
@@ -81,11 +81,15 @@ private:
static void talkAnimHandler(Hotspot &h);
static void grubAnimHandler(Hotspot &h);
static void barmanAnimHandler(Hotspot &h);
- static void skorlGaurdAnimHandler(Hotspot &h);
+ static void skorlAnimHandler(Hotspot &h);
static void gargoyleAnimHandler(Hotspot &h);
+ static void goewinShopAnimHandler(Hotspot &h);
static void skullAnimHandler(Hotspot &h);
+ static void dragonFireAnimHandler(Hotspot &h);
+ static void castleSkorlAnimHandler(Hotspot &h);
static void rackSerfAnimHandler(Hotspot &h);
-
+ static void fighterAnimHandler(Hotspot &h);
+ static void playerFightAnimHandler(Hotspot &h);
public:
static HandlerMethodPtr getHandler(uint16 procOffset);
};
@@ -129,6 +133,10 @@ public:
class CurrentActionStack {
private:
ManagedList<CurrentActionEntry *> _actions;
+ void validateStack() {
+ if (_actions.size() > 20)
+ error("NPC character got an excessive number of pending actions");
+ }
public:
CurrentActionStack() { _actions.clear(); }
@@ -143,21 +151,27 @@ public:
void addBack(CurrentAction newAction, uint16 roomNum) {
_actions.push_back(new CurrentActionEntry(newAction, roomNum));
+ validateStack();
}
void addBack(CurrentAction newAction, CharacterScheduleEntry *rec, uint16 roomNum) {
_actions.push_back(new CurrentActionEntry(newAction, rec, roomNum));
+ validateStack();
}
void addBack(Action newAction, uint16 roomNum, uint16 param1, uint16 param2) {
_actions.push_back(new CurrentActionEntry(newAction, roomNum, param1, param2));
+ validateStack();
}
void addFront(CurrentAction newAction, uint16 roomNum) {
_actions.push_front(new CurrentActionEntry(newAction, roomNum));
+ validateStack();
}
void addFront(CurrentAction newAction, CharacterScheduleEntry *rec, uint16 roomNum) {
_actions.push_front(new CurrentActionEntry(newAction, rec, roomNum));
+ validateStack();
}
void addFront(Action newAction, uint16 roomNum, uint16 param1, uint16 param2) {
_actions.push_front(new CurrentActionEntry(newAction, roomNum, param1, param2));
+ validateStack();
}
void saveToStream(WriteStream *stream);
@@ -373,6 +387,8 @@ public:
void setTickProc(uint16 newVal);
bool persistant() { return _persistant; }
void setPersistant(bool value) { _persistant = value; }
+ uint8 colourOffset() { return _colourOffset; }
+ void setColourOffset(uint8 value) { _colourOffset = value; }
void setRoomNumber(uint16 roomNum) {
_roomNumber = roomNum;
if (_data) _data->roomNumber = roomNum;