called portal vault. The dungeon builder bases its behaviour on the level_type_name, which must be set as the "dst" property on the portal leading to the bazaar/portal vault.
Added WELCOME: directive to .des files to allow maps to specify a welcome message when the player enters the level (only relevant to encompass maps).
Readjusted kenku flight speed.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1941 c06c8d41-db1a-0410-9941-cceddc491573
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC 6RJVKSL7RVZIZIZIC4TWIYJQ24RUSB346ODS3NYGDHUIRTC4Z5FQC 7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC 2ZZD6EYMSPVCXZTICL4VGYGGQRRWDLZ24KBCDBVIYC54OZ4C6GGAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC W52PCSHX72WAMWKG6L4BPUBVMO6E72KYYBNKAA7554KNOTY6V7WQC WWR4IDWLXP4XLBWDZBA5GFG7CRKUJQNRK7FFUFOISK6OJTMYQPFQC ANBVGN4RZOMY5LI4QSHOV2477FN55H353ZYLSVCPTXC7AWWSQZBAC W5VEC2PBIM5DMU5233HOWAZUEPTGWJRZZIA3H35YYQQW6BTP6XUAC T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC JM6GKZ6VMX6FNVOZIDXIV22HGX7YESMIFZFE6EEQVCMFJIEA3FNAC JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC RGHXFBNIULRVRYLBGG5JZDMYVM2E2JJ2Y5KQPMU6PUS3V26G6ZXQC AFE345BJ7IX2YYYX3I5I6RYLXNWJCFE4WMH6F5JMIR6X7WUP75CAC RISMOCQM6BKK4XSIRKYLOBB2UPDYJNDAL6OGIIR5GGNZQAK5YSZAC SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC XY77S75KH5KV54MZVAPMUC64TVRE2QM2KVJAAGJGCIBGQEC5GUTQC C22455VGUQOSUX2OORA32LROFQ7NNYDMD2ZDTTUZSAQLXK4AD6QAC CUNNC574MESEMTTONZ6YB6CJ2S5P6VA3V7Z3OODESWAK37GYOBPAC ZVK4J5HTKFNOOIVCI62ZWEYGXEE5TYJ65DLYYZAZWTADFSXE62ZAC 3PY3L3A4QRW3Z5Y7SHO4TMVOOP2VNCO27X2MX4DTOP2SADLBQUOAC 3XZOL3FFQZITUJIGDD6B6V6ZYMBN524JKNN6ZPJAXEC7RY433I3QC NDTQUANX3GZ6HZP5FONYNJUYPD3R2P6SGRC3ICKJ7ZWF3KO23LTAC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC HNXKX6ZDQJV33E7UKZOLBYWJMRZ4QLEMXVXJZNRCTOIG2KVRTIEAC CI5VTLSMB2L5W5ZVKDZEJFUARGSZP2FUSTRFV3MG6U44TDDUYH5AC const int top = lua_gettop(dlua);push_fn_args(fn);const bool res =dlua.callfn("dlua_marker_method", lua_gettop(dlua) - top, 1);
if (args == -1){const int top = lua_gettop(dlua);push_fn_args(fn);args = lua_gettop(dlua) - top;}const bool res = dlua.callfn("dlua_marker_method", args, 1);
if (!callfn("describe"))return make_stringf("error: %s", dlua.error.c_str());
if (!callfn(fn))return make_stringf("error (%s): %s", fn, dlua.error.c_str());std::string result;if (lua_isstring(dlua, -1))result = lua_tostring(dlua, -1);return (result);}std::string map_lua_marker::debug_describe() const{return (call_str_fn("describe"));}std::string map_lua_marker::feature_description() const{return (call_str_fn("feature_description"));}
std::string desc;
std::string map_lua_marker::property(const std::string &pname) const{lua_stack_cleaner cln(dlua);push_fn_args("property");lua_pushstring(dlua, pname.c_str());if (!callfn("property", false, 4))return make_stringf("error (prop:%s): %s",pname.c_str(), dlua.error.c_str());std::string result;
std::string env_property_at(const coord_def &c, map_marker_type type,const std::string &key){std::pair<dgn_marker_map::const_iterator, dgn_marker_map::const_iterator>els = env.markers.equal_range(c);for (dgn_marker_map::const_iterator i = els.first; i != els.second; ++i){const std::string prop = i->second->property(key);if (!prop.empty())return (prop);}return ("");}
map(), mons(), items(), keyspecs(), prelude("dlprelude"),main("dlmain"), validate("dlvalidate"), veto("dlveto"),index_only(false), cache_offset(0L)
welcome_messages(), map(), mons(), items(), keyspecs(),prelude("dlprelude"), main("dlmain"), validate("dlvalidate"),veto("dlveto"), index_only(false), cache_offset(0L)
feature_description(feat, NUM_TRAPS, false, dtype, need_stop);
feature_description(feat, NUM_TRAPS, dtype, need_stop);lua_pushstring(ls, s.c_str());return (1);}static int dgn_feature_desc_at(lua_State *ls){const description_level_type dtype =lua_isnumber(ls, 3)?static_cast<description_level_type>(luaL_checkint(ls, 3)) :description_type_by_name(lua_tostring(ls, 3));const bool need_stop = lua_isboolean(ls, 4)? lua_toboolean(ls, 4) : false;const std::string s =feature_description(luaL_checkint(ls, 1), luaL_checkint(ls, 2),dtype, need_stop);
std::string feature_description(dungeon_feature_type grid,trap_type trap,bool temporary,description_level_type dtype,bool add_stop)
static std::string feature_do_grammar(description_level_type dtype,bool add_stop,bool force_article,std::string desc)
}
}}std::string feature_description(dungeon_feature_type grid,trap_type trap,description_level_type dtype,bool add_stop){std::string desc = raw_feature_description(grid, trap);return feature_do_grammar(dtype, add_stop, grid_is_trap(grid), desc);
if (temporary)return ("slowly fading labyrinth entrance");elsereturn ("labyrinth entrance");case DNGN_ENTER_BAZAAR:if (temporary)return ("gently fading gateway to a bazaar");elsereturn ("gateway to a bazaar");case DNGN_EXIT_BAZAAR:return ("exit from the bazaar");
return ("labyrinth entrance");
local tmarker = TimedMarker._new()tmarker.dur = dur * 10tmarker.fnum = fnumtmarker.feat = feattmarker.msg = pars.msg
local tmarker = self:_new()tmarker.dur = dur * 10tmarker.fnum = fnumtmarker.feat = feattmarker.msg = pars.msgtmarker.disappear = pars.disappearif pars.props thentmarker.props = pars.propsend
function TimedMarker.read(marker, th)local marker = TimedMarker._new()marker.dur = file.unmarshall_number(th)marker.fnum = file.unmarshall_number(th)marker.feat = file.unmarshall_string(th)marker.msg = file.unmarshall_fn(th)(th)return marker
function TimedMarker:read(marker, th)PortalDescriptor.read(self, marker, th)self.dur = file.unmarshall_number(th)self.fnum = file.unmarshall_number(th)self.feat = file.unmarshall_string(th)self.disappear = file.unmarshall_meta(th)self.msg = file.unmarshall_fn(th)(th)setmetatable(self, TimedMarker)return self
-------------------------------------------------------------------------------- lm_desc.lua:-- Portal descriptor markers.------------------------------------------------------------------------------PortalDescriptor = { }PortalDescriptor.__index = PortalDescriptorfunction PortalDescriptor:new(properties)local pd = { }setmetatable(pd, self)pd.props = propertiesreturn pdendfunction PortalDescriptor:write(marker, th)file.marshall(th, self.desc or '')lmark.marshall_table(th, self.props)endfunction PortalDescriptor:read(marker, th)self.desc = file.unmarshall_string(th)self.props = lmark.unmarshall_table(th)setmetatable(self, PortalDescriptor)return selfendfunction PortalDescriptor:feature_description(marker)return self.props.descendfunction PortalDescriptor:property(marker, pname)return self.props and self.props[pname] or ''endfunction portal_desc(desc, props)return PortalDescriptor:new(desc, props)end
function check_expire_marker(e)e.messager =bell_clock_msg { initmsg="You hear coins being counted." }if not crawl.one_chance_in(3) thene.marker( [[ O = lua: timed_marker {low=1000, high=1500, msg=messager }]] )elsee.marker("O = lua: one_way_stair()")endend
function bazaar_portal()local messager = bell_clock_msg { initmsg="You hear coins being counted." }if not crawl.one_chance_in(3) thenlocal pdesc = 'flickering gateway to a bazaar'return timed_marker {low=1000, high=1500, msg=messager,disappear='The gate to the bazaar disappears!',props = { desc=pdesc, dst='bazaar' }}elsereturn one_way_stair { desc = 'gateway to a bazaar',dst = 'bazaar' }endendfunction bazaar_message(e)e.welcome("You enter an inter-dimensional bazaar!")end