summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/clua/lm_trig.lua16
1 files changed, 13 insertions, 3 deletions
diff --git a/crawl-ref/source/dat/clua/lm_trig.lua b/crawl-ref/source/dat/clua/lm_trig.lua
index d08d3fa1bd..336da856b0 100644
--- a/crawl-ref/source/dat/clua/lm_trig.lua
+++ b/crawl-ref/source/dat/clua/lm_trig.lua
@@ -210,8 +210,14 @@ function Triggerable:activate(marker)
end
for _, trig in ipairs(self.triggerers) do
- for _, slave_marker in ipairs(slaves) do
- trig:activate(self, marker, slave_marker:pos())
+ local et = dgn.dgn_event_type(trig.type)
+
+ if (dgn.dgn_event_is_position(et)) then
+ for _, slave_marker in ipairs(slaves) do
+ trig:activate(self, marker, slave_marker:pos())
+ end
+ else
+ trig:activate(self, marker)
end
end
self.activating = false
@@ -299,7 +305,11 @@ function Triggerable:do_trigger(triggerer, marker, ev)
-- simply stop being slaved to itself.
self.props.slaved_to = nil
if self:property("listen_to_slaves") ~= "" then
- triggerer:remove(self, slave_marker)
+ local et = dgn.dgn_event_type(triggerer.type)
+
+ if (dgn.dgn_event_is_position(et)) then
+ triggerer:remove(self, slave_marker)
+ end
end
else
triggerer:remove(self, slave_marker)