git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7608 c06c8d41-db1a-0410-9941-cceddc491573
BEJPFLSQYOLJETSLYRTROTRPJZEJDROGDX7MLBCWJLMIRZQBLEYQC
O5246XJ6P3R726D64X4F2BUNIVP7ZLWA5VMP6FYE72P3GIBTKZQQC
L2PY64KUK7XYXNWKTC6YUN5DZYDNHNQFQHICUVNRGRHBHZAXWH3AC
CM2YC5KBTUB4JFT3CL3NRS7V5X76M7RI7SNT4XK6IOVBZA2URRKAC
NKONHW4JNY6HP2M63MNPM3H64ZWSUNUT5FX2STW4KTS4AMXJXXVQC
X7MFMKQTNZ2IWBFVGS6WQV7NRNKJ3DWQAW2X7IQMFQQXW24AHPZQC
CI2RMLJLIAZMEGNN6LJN6PSHXHLPG7PXFIDYRGFPVMDPJ2R4S4NQC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC
ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC
ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC
KTF2SZLDR2NGPWSFAWDYV2X3UP4V5VDNTIGDGQ6G24HUNABFYR2QC
RS24ZF3Y47QA2534EHQWZ35O2CI4JUOIVHUPRANCCNLVINSCYFXQC
XE5ZZQKTGUPWZE6F4YDYDUDWF4OHUY7DAUGLR7DAHUI5OZBMH7TAC
dofile('clua/lm_pdesc.lua')
dofile('clua/lm_1way.lua')
dofile('clua/lm_timed.lua')
dofile('clua/lm_flags.lua')
dofile('clua/lm_fog.lua')
dofile('clua/lm_props.lua')
require('clua/lm_pdesc.lua')
require('clua/lm_1way.lua')
require('clua/lm_timed.lua')
require('clua/lm_flags.lua')
require('clua/lm_fog.lua')
require('clua/lm_props.lua')
function TimedMarker:_new()
local marker = { }
setmetatable(marker, self)
self.__index = self
return marker
end
function TimedMarker:new(props)
props = props or { }
local tmarker = self.super.new(self, props)
pars.high = pars.high or pars.low or pars.turns or 1
pars.low = pars.low or pars.high or pars.turns or 1
local dur = crawl.random_range(pars.low, pars.high, pars.navg or 1)
local feat = pars.floor or 'floor'
local fnum = dgn.feature_number(feat)
props.high = props.high or props.low or props.turns or 1
props.low = props.low or props.high or props.turns or 1
local dur = crawl.random_range(props.low, props.high, props.navg or 1)
dgn.register_listener(dgn.dgn_event_type('turn'), marker)
dgn.register_listener(dgn.dgn_event_type('player_climb'),
marker, marker:pos())
function TimedMarker:disappear(marker, affect_player, x, y)
dgn.remove_listener(marker)
self.super.disappear(self, marker, affect_player, x, y)
dgn.terrain_changed(x, y, self.fnum, affect_player, false)
dgn.remove_listener(marker)
dgn.remove_listener(marker, marker:pos())
dgn.remove_marker(marker)
self:disappear(marker, affect_player, x, y)
self.ticktype = self.ticktype or dgn.dgn_event_type('turn')
self.stairtype = self.stairtype or dgn.dgn_event_type('player_climb')
if ev:type() == self.stairtype then
local mx, my = marker:pos()
local ex, ey = ev:pos()
if mx == ex and my == ey then
self:timeout(marker, false, false)
end
return
if self.super.event(self, marker, ev) then
return true
OneWayStair = PortalDescriptor:new()
OneWayStair.__index = OneWayStair
function OneWayStair:new(props)
local ows = PortalDescriptor.new(self, props)
setmetatable(ows, self)
return ows
end
OneWayStair = util.subclass(PortalDescriptor)
dgn.terrain_changed(x, y, self.props.floor or 'floor', false, false)
dgn.remove_listener(marker, ev:pos())
dgn.remove_marker(marker)
self:disappear(marker, false, x, y)
return true