diff options
author | Matthew Cline <zelgadis@sourceforge.net> | 2009-11-08 23:49:54 -0800 |
---|---|---|
committer | Matthew Cline <zelgadis@sourceforge.net> | 2009-11-08 23:49:54 -0800 |
commit | c3074999a910d76d6f5f2c644894a7baeb3a0d49 (patch) | |
tree | 784ca425119459ce0399709d9a6634d11293c81a /crawl-ref/source/dat/clua | |
parent | b06c289636354686e9bd6b60024f4526af3bb118 (diff) | |
download | crawl-ref-c3074999a910d76d6f5f2c644894a7baeb3a0d49.tar.gz crawl-ref-c3074999a910d76d6f5f2c644894a7baeb3a0d49.zip |
lm_trig.lua: "listen_to_slaves" not for globals
"listen_to_slaves" shouldn't apply to global events, only
position-dependent events.
Diffstat (limited to 'crawl-ref/source/dat/clua')
-rw-r--r-- | crawl-ref/source/dat/clua/lm_trig.lua | 16 |
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) |