summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dat/clua/lm_flags.lua
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-31 12:47:08 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-31 12:47:08 +0000
commit97e66bedd0d8a8d95781f8058b5560768f97a1ea (patch)
tree4693cb1cc3cd56a3eaf663e5e3ae6487226acd99 /crawl-ref/source/dat/clua/lm_flags.lua
parente815ad3dcd37899ea93e57bef68408ee4e971c87 (diff)
downloadcrawl-ref-97e66bedd0d8a8d95781f8058b5560768f97a1ea.tar.gz
crawl-ref-97e66bedd0d8a8d95781f8058b5560768f97a1ea.zip
[1923246] Item pickup marker moves itself when the item it's guarding is apported.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3976 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dat/clua/lm_flags.lua')
-rw-r--r--crawl-ref/source/dat/clua/lm_flags.lua16
1 files changed, 13 insertions, 3 deletions
diff --git a/crawl-ref/source/dat/clua/lm_flags.lua b/crawl-ref/source/dat/clua/lm_flags.lua
index 770c80110e..5719ac85a0 100644
--- a/crawl-ref/source/dat/clua/lm_flags.lua
+++ b/crawl-ref/source/dat/clua/lm_flags.lua
@@ -312,6 +312,8 @@ end
function ItemPickupChangeFlags:activate(marker)
dgn.register_listener(dgn.dgn_event_type('item_pickup'), marker,
marker:pos())
+ dgn.register_listener(dgn.dgn_event_type('item_moved'), marker,
+ marker:pos())
end
function ItemPickupChangeFlags:event(marker, ev)
@@ -323,9 +325,17 @@ function ItemPickupChangeFlags:event(marker, ev)
end
if item.name(it) == self.item then
- ChangeFlags.do_change(self, marker)
- dgn.remove_listener(marker, marker:pos())
- dgn.remove_marker(marker)
+ local picked_up = ev:type() == dgn.dgn_event_type('item_pickup')
+ if picked_up then
+ ChangeFlags.do_change(self, marker)
+ dgn.remove_listener(marker, marker:pos())
+ dgn.remove_marker(marker)
+ else
+ local x, y = ev:dest()
+ dgn.remove_listener(marker, marker:pos())
+ marker:move(ev:dest())
+ self:activate(marker)
+ end
end
end