summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/l_dgn.cc
diff options
context:
space:
mode:
authorEnne Walker <ennewalker@users.sourceforge.net>2009-11-16 16:34:53 -0500
committerEnne Walker <ennewalker@users.sourceforge.net>2009-11-17 12:16:45 -0500
commitf1f15b7afb1a1f8f47fa84f489a13f9cd1f50fcb (patch)
tree111bef4b6166ca11bf1ff2a0a3da0f8a0b3a3481 /crawl-ref/source/l_dgn.cc
parent840bf56930dfa95308cf3aa9e77e2051868ac568 (diff)
downloadcrawl-ref-f1f15b7afb1a1f8f47fa84f489a13f9cd1f50fcb.tar.gz
crawl-ref-f1f15b7afb1a1f8f47fa84f489a13f9cd1f50fcb.zip
Fixing ziggurats missing fill_area function.
fill_grd_area now fills an area on the dungeon grd. Only Ziggurats use this function.
Diffstat (limited to 'crawl-ref/source/l_dgn.cc')
-rw-r--r--crawl-ref/source/l_dgn.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/crawl-ref/source/l_dgn.cc b/crawl-ref/source/l_dgn.cc
index fa32c9da4d..cef4fd1acd 100644
--- a/crawl-ref/source/l_dgn.cc
+++ b/crawl-ref/source/l_dgn.cc
@@ -1582,6 +1582,31 @@ LUAFN(_dgn_reuse_map)
LUAWRAP(_dgn_reset_level, dgn_reset_level())
+LUAFN(dgn_fill_grd_area)
+{
+ int x1 = luaL_checkint(ls, 1);
+ int y1 = luaL_checkint(ls, 2);
+ int x2 = luaL_checkint(ls, 3);
+ int y2 = luaL_checkint(ls, 4);
+ dungeon_feature_type feat = check_lua_feature(ls, 5);
+
+ x1 = std::min(std::max(x1, X_BOUND_1+1), X_BOUND_2-1);
+ y1 = std::min(std::max(y1, Y_BOUND_1+1), Y_BOUND_2-1);
+ x2 = std::min(std::max(x2, X_BOUND_1+1), X_BOUND_2-1);
+ y2 = std::min(std::max(y2, Y_BOUND_1+1), Y_BOUND_2-1);
+
+ if (x2 < x1)
+ std::swap(x1, x2);
+ if (y2 < y1)
+ std::swap(y1, y2);
+
+ for (int y = y1; y <= y2; y++)
+ for (int x = x1; x <= x2; x++)
+ grd[x][y] = feat;
+
+ return (0);
+}
+
const struct luaL_reg dgn_dlib[] =
{
{ "reset_level", _dgn_reset_level },
@@ -1669,5 +1694,7 @@ const struct luaL_reg dgn_dlib[] =
{ "get_special_room_info", dgn_get_special_room_info },
+{ "fill_grd_area", dgn_fill_grd_area },
+
{ NULL, NULL }
};