aboutsummaryrefslogtreecommitdiff
path: root/engines/lure/hotspots.h
diff options
context:
space:
mode:
authorPaul Gilbert2007-06-22 12:36:04 +0000
committerPaul Gilbert2007-06-22 12:36:04 +0000
commit8b3821e9ff5b60ee75d180514ca8b067bd5a0105 (patch)
tree2e07798aec37da5ec665ac09e08ee6eca231e8f7 /engines/lure/hotspots.h
parent707e62e669b227e0baf7a8c976283b32cef20b9d (diff)
downloadscummvm-rg350-8b3821e9ff5b60ee75d180514ca8b067bd5a0105.tar.gz
scummvm-rg350-8b3821e9ff5b60ee75d180514ca8b067bd5a0105.tar.bz2
scummvm-rg350-8b3821e9ff5b60ee75d180514ca8b067bd5a0105.zip
Lots of bugfixes - game is now completable
svn-id: r27606
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;