git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7610 c06c8d41-db1a-0410-9941-cceddc491573
NOUFW6ACJ7KPVHSPF4WLRAVOWI7PZ6OAVYDRMI3WYNPXVMGAB3QAC
EKQDSISM4EZQJVZKNWXDQGOQKX5ZLBOCUKXJMTHBZINYM7V4HHBQC
KSM4H3SBM6FIQTUEGHXXYATJXEOJ4EKUBAFCRMFKSHY7N2HWECRQC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
VOXLOCDUHOAFIKRTSISYMOA2QFY3TSHQGR7BKGGQ2VZ5BUUKUQYAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC
TPO6FNMPNUSWH4NCKO3VLYNAADEPSAXLUITCCACLZZSY53PKA62QC
AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC
ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC
HWTL2S7OVOJRJAAN66ZTT26HJDAOIW6RKAG5NFMNZJU63CTU2U5AC
AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC
MV5USMLTBKVRWBAD67UFJ2BS4Y5HEOMYASRSB44DS24BBMRP75RQC
7X4EXGVZZP5RSNEWTE6MRLGGC4KJT45AQUKQ4VSNYWT3C7TQSLBAC
ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC
X7MFMKQTNZ2IWBFVGS6WQV7NRNKJ3DWQAW2X7IQMFQQXW24AHPZQC
HNXKX6ZDQJV33E7UKZOLBYWJMRZ4QLEMXVXJZNRCTOIG2KVRTIEAC
W52PCSHX72WAMWKG6L4BPUBVMO6E72KYYBNKAA7554KNOTY6V7WQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
GOX2FK35IXLRJJJYT6QHL2GTFUWN6IJ6P7GIWKSP2LDOGTWA7XEQC
GCDBSJXJCPEK4NCX5CVGDBK3432PFCU5OCO2F3DA32332ALI2ZYQC
QIDA6PWWBPR6IJOXFCSPCGWV45PVRZ4TPWSL2TDATNVTYLDMVESQC
PRG7UT7G56GT4W3FQ3KG5JRPGMKKJBFDLVHDLYFQK6IZW25JQLBQC
NKONHW4JNY6HP2M63MNPM3H64ZWSUNUT5FX2STW4KTS4AMXJXXVQC
std::string prompt = make_stringf("%s%s ", str ? str : "Buggy prompt?",
_list_allowed_keys(alt_yes, alt_yes2,
safe, allow_all).c_str());
std::string prompt =
make_stringf("%s%s ", str ? str : "Buggy prompt?",
_list_allowed_keys(alt_yes, alt_yes2,
safe, allow_all).c_str());
}
bool dgn_event_dispatcher::fire_vetoable_position_event(
dgn_event_type et, const coord_def &pos)
{
const dgn_event event(et, pos);
return fire_vetoable_position_event(event, pos);
}
bool dgn_event_dispatcher::fire_vetoable_position_event(
const dgn_event &et, const coord_def &pos)
{
dgn_square_alarm *alarm = grid_triggers[pos.x][pos.y].get();
if (alarm && (alarm->eventmask & et.type))
{
dgn_square_alarm alcopy(*alarm);
for (std::list<dgn_event_listener*>::iterator
i = alcopy.listeners.begin();
i != alcopy.listeners.end(); ++i)
{
if (!(*i)->notify_dgn_event(et))
return (false);
}
}
return (true);
------------------------------------------------------------------------------
-- lm_toll.lua:
-- One-way toll-stair marker.
------------------------------------------------------------------------------
require("clua/lm_1way.lua")
TollStair = util.subclass(OneWayStair)
function TollStair:new(props)
local toll = self.super.new(self, props)
if not props.amount or props.amount < 1 then
error("Bad toll amount: " .. props.amount)
end
return toll
end
function TollStair:activate(marker)
self.super.activate(self, marker)
dgn.register_listener(dgn.dgn_event_type("v_leave_level"),
marker, marker:pos())
end
function TollStair:event(marker, ev)
if self.super.event(self, marker, ev) then
return true
end
if ev:type() == dgn.dgn_event_type('v_leave_level') then
-- Have we enough gold?
local gold = you.gold()
local needed = self.props.amount
if gold < needed then
crawl.mpr("This portal charges " .. needed .. " gold for entry; " ..
"you have only " .. gold .. " gold.")
return false
end
-- Ok, ask if the player wants to spend the $$$.
if not crawl.yesno("This portal charges " .. needed ..
" gold for entry. Pay?", true, "n") then
return false
end
-- Gold gold gold! Forget that gold!
you.gold(you.gold() - needed)
return true
end
end
function TollStair:read(marker, th)
TollStair.super.read(self, marker, th)
setmetatable(self, TollStair)
return self
end
function toll_stair(pars)
return TollStair:new(pars)
end
static char _lua_char(lua_State *ls, int ndx, char defval = 0)
{
return (lua_isnone(ls, ndx) || !lua_isstring(ls, ndx)? defval
: lua_tostring(ls, ndx)[0]);
}
static int crawl_yesno(lua_State *ls)
{
const char *prompt = luaL_checkstring(ls, 1);
const bool safe = lua_toboolean(ls, 2);
const int safeanswer = _lua_char(ls, 3);
const bool clear_after =
lua_isnone(ls, 4) ? true : lua_toboolean(ls, 4);
const bool interrupt_delays =
lua_isnone(ls, 5) ? true : lua_toboolean(ls, 5);
const bool noprompt =
lua_isnone(ls, 6) ? false : lua_toboolean(ls, 6);
cursor_control con(true);
lua_pushboolean(ls, yesno(prompt, safe, safeanswer, clear_after,
interrupt_delays, noprompt));
return (1);
}
static int crawl_yesnoquit(lua_State *ls)
{
const char *prompt = luaL_checkstring(ls, 1);
const bool safe = lua_toboolean(ls, 2);
const int safeanswer = _lua_char(ls, 3);
const bool allow_all =
lua_isnone(ls, 4) ? false : lua_toboolean(ls, 4);
const bool clear_after =
lua_isnone(ls, 5) ? true : lua_toboolean(ls, 5);
// Skipping the other params until somebody needs them.
cursor_control con(true);
lua_pushnumber(ls, yesnoquit(prompt, safe, safeanswer, allow_all,
clear_after));
return (1);
}