diff options
author | Steve Melenchuk <smelenchuk@gmail.com> | 2012-07-26 11:02:26 -0600 |
---|---|---|
committer | Steve Melenchuk <smelenchuk@gmail.com> | 2012-07-26 11:05:51 -0600 |
commit | e094a25a100afbc2302b7bb30796b6aee9507ffa (patch) | |
tree | 28a2dd0b4fe68209fcacb0972a20149bbf8b1c0f /crawl-ref/source/l_dgnlvl.cc | |
parent | 9de211e512f9214464c13f6134fe540690c44d4b (diff) | |
download | crawl-ref-e094a25a100afbc2302b7bb30796b6aee9507ffa.tar.gz crawl-ref-e094a25a100afbc2302b7bb30796b6aee9507ffa.zip |
Lua function: dgn.br_entrance.
This returns a level ID signifying where the entrance to a branch is
(if not specified, it uses the current branch).
Its primary use would be in the context,
"you.where() == dgn.level_name(dgn.br_entrance("<branch>"))"
to determine if a branch entrance needs to be placed in an encompass
vault or a layout.
Diffstat (limited to 'crawl-ref/source/l_dgnlvl.cc')
-rw-r--r-- | crawl-ref/source/l_dgnlvl.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crawl-ref/source/l_dgnlvl.cc b/crawl-ref/source/l_dgnlvl.cc index ceb461c2a2..9b32ed0215 100644 --- a/crawl-ref/source/l_dgnlvl.cc +++ b/crawl-ref/source/l_dgnlvl.cc @@ -72,6 +72,23 @@ static void _push_level_id(lua_State *ls, const level_id &lid) new (nlev) level_id(lid); } +LUAFN(dgn_br_entrance) +{ + const int nargs = lua_gettop(ls); + branch_type brn = you.where_are_you; + if (nargs == 1) + { + const char *branch_name = luaL_checkstring(ls, 1); + brn = str_to_branch(branch_name); + if (brn == NUM_BRANCHES) + luaL_argerror(ls, 1, "No such branch"); + } + + _push_level_id(ls, level_id(branches[brn].parent_branch, + startdepth[brn])); + return 1; +} + level_id dlua_level_id(lua_State *ls, int ndx) { if (lua_isstring(ls, ndx)) @@ -122,6 +139,7 @@ const struct luaL_reg dgn_level_dlib[] = { "br_parent_branch", dgn_br_parent_branch }, { "br_depth", dgn_br_depth }, { "br_exists", dgn_br_exists }, +{ "br_entrance", dgn_br_entrance }, { "level_id", dgn_level_id }, { "level_name", dgn_level_name }, |