diff options
-rw-r--r-- | crawl-ref/source/dat/clua/lm_mon_prop.lua | 50 | ||||
-rw-r--r-- | crawl-ref/source/dat/clua/luamark.lua | 1 |
2 files changed, 51 insertions, 0 deletions
diff --git a/crawl-ref/source/dat/clua/lm_mon_prop.lua b/crawl-ref/source/dat/clua/lm_mon_prop.lua new file mode 100644 index 0000000000..6bc3dd6de9 --- /dev/null +++ b/crawl-ref/source/dat/clua/lm_mon_prop.lua @@ -0,0 +1,50 @@ +------------------------------------------------------------------------------ +-- lm_mon_prop.lua: +-- +-- This marker takes whatever monster is standing on it, sets properties in +-- the CrawlHashTable member of that monster, then disappears. +------------------------------------------------------------------------------ + +MonPropsMarker = { CLASS = "MonPropsMarker" } +MonPropsMarker.__index = MonPropsMarker + +function MonPropsMarker:new(props) + if not props then + error("MonPropsMarker:new() needs props") + end + if type(props) ~= "table" then + error("MonPropsMarker:new() needs type(props) == table") + end + + local mp = { } + setmetatable(mp, self) + self.__index = self + + mp.props = props + + return mp +end + +function MonPropsMarker:activate(marker) + local mon = dgn.mons_at(marker:pos()) + + if not mon then + crawl.mpr("No monster for MonPropsMarker:activate()") + dgn.remove_marker(marker) + return + end + + for k, v in pairs(self.props) do + mon.set_prop(k, v) + end + + dgn.remove_marker(marker) +end + +function MonPropsMarker:write(marker, th) + error("MonPropsMarker should never be saved") +end + +function MonPropsMarker:read(marker, th) + error("MonPropsMarker should never be in save file") +end diff --git a/crawl-ref/source/dat/clua/luamark.lua b/crawl-ref/source/dat/clua/luamark.lua index bc99e10ebd..d8a07f2b71 100644 --- a/crawl-ref/source/dat/clua/luamark.lua +++ b/crawl-ref/source/dat/clua/luamark.lua @@ -11,6 +11,7 @@ require('clua/lm_timed.lua') require('clua/lm_flags.lua') require('clua/lm_fog.lua') require('clua/lm_props.lua') +require('clua/lm_mon_prop.lua') require('clua/lm_monst.lua') require('clua/lm_mslav.lua') |