aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/lure/hotspots.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/engines/lure/hotspots.cpp b/engines/lure/hotspots.cpp
index 1211634b94..2162500ad5 100644
--- a/engines/lure/hotspots.cpp
+++ b/engines/lure/hotspots.cpp
@@ -1202,7 +1202,8 @@ void Hotspot::doAction() {
doAction(NONE, NULL);
} else {
if (entry.supportData().numParams() > 0)
- hotspot = Resources::getReference().getHotspot(entry.supportData().param(0));
+ hotspot = Resources::getReference().getHotspot(entry.supportData().param(
+ (entry.supportData().action() == USE) ? 1 : 0));
doAction(entry.supportData().action(), hotspot);
}
}
@@ -1216,11 +1217,13 @@ void Hotspot::doAction(Action action, HotspotData *hotspot) {
if (hotspot != NULL) {
ValueTableData &fields = Resources::getReference().fieldList();
fields.setField(ACTIVE_HOTSPOT_ID, hotspot->hotspotId);
- if ((action == USE) || (action == GIVE) || (action == ASK)) {
+
+ if (action == USE)
+ fields.setField(USE_HOTSPOT_ID, _currentActions.top().supportData().param(0));
+ else if ((action == GIVE) || (action == ASK))
fields.setField(USE_HOTSPOT_ID, _currentActions.top().supportData().param(1));
- } else {
+ else
fields.setField(USE_HOTSPOT_ID, hotspot->hotspotId);
- }
}
ActionProcPtr actionProcList[NPC_JUMP_ADDRESS + 1] = {
@@ -1460,7 +1463,7 @@ void Hotspot::doClose(HotspotData *hotspot) {
void Hotspot::doUse(HotspotData *hotspot) {
Resources &res = Resources::getReference();
- uint16 usedId = _currentActions.top().supportData().param(1);
+ uint16 usedId = _currentActions.top().supportData().param(0);
HotspotData *usedHotspot = res.getHotspot(usedId);
_data->useHotspotId = usedId;
@@ -2009,8 +2012,8 @@ void Hotspot::npcSupportOffsetConditional(HotspotData *hotspot) {
}
_currentActions.top().setSupportData(newEntry);
- HotspotData *hotspotData = (newEntry->numParams() == 0) ? NULL :
- res.getHotspot(newEntry->param(0));
+ HotspotData *hotspotData = (newEntry->numParams() == 0) ? NULL : res.getHotspot(
+ (newEntry->action() == USE) ? 1 : 0);
doAction(newEntry->action(), hotspotData);
}
@@ -2031,7 +2034,7 @@ void Hotspot::npcDispatchAction(HotspotData *hotspot) {
_currentActions.top().setSupportData(newEntry);
HotspotData *hotspotData = (newEntry->numParams() == 0) ? NULL :
- res.getHotspot(newEntry->param(0));
+ res.getHotspot(newEntry->param((newEntry->action() == USE) ? 1 : 0));
doAction(newEntry->action(), hotspotData);
}
}
@@ -2858,7 +2861,7 @@ void HotspotTickHandlers::playerAnimHandler(Hotspot &h) {
hsAction = actions.top().supportData().action();
if (actions.top().supportData().numParams() > 0) {
- hotspotId = actions.top().supportData().param(0);
+ hotspotId = actions.top().supportData().param((hsAction == USE) ? 1 : 0);
hotspot = res.getHotspot(hotspotId);
}
} else {