Fix medusa levels
My recent commit broke medusa-3 and medusa-4, so fix those.
Make des.stair and des.ladder also accept hash-coordinate:
des.stair("up", {8, 10});
This commit is contained in:
@@ -36,6 +36,8 @@ place:set(08,06);
|
||||
place:set(66,05);
|
||||
place:set(46,15);
|
||||
|
||||
local medloc = place:rndcoord(1);
|
||||
|
||||
des.region(selection.area(00,00,74,19),"lit")
|
||||
-- fixup_special hack: the first room defined on a Medusa level gets some
|
||||
-- leaderboard statues, use arrival_room to force it to be a room even though
|
||||
@@ -54,7 +56,7 @@ des.non_diggable(selection.area(44,13,48,17))
|
||||
des.teleport_region({ region = {33,02,38,07}, dir="down" })
|
||||
des.levregion({ region = {32,01,39,07}, type="stair-up" });
|
||||
|
||||
des.stair("down", place:rndcoord(1))
|
||||
des.stair("down", medloc);
|
||||
des.door("locked",08,08)
|
||||
des.door("locked",64,05)
|
||||
des.door("random",50,13)
|
||||
@@ -100,7 +102,7 @@ des.trap("board")
|
||||
des.trap("board")
|
||||
des.trap()
|
||||
--
|
||||
des.monster({ id = "Medusa", x=mx, y=my, asleep=1 })
|
||||
des.monster({ id = "Medusa", coord=medloc, asleep=1 })
|
||||
des.monster("giant eel")
|
||||
des.monster("giant eel")
|
||||
des.monster("jellyfish")
|
||||
|
||||
@@ -99,7 +99,7 @@ for i=1,7 do
|
||||
des.trap()
|
||||
end
|
||||
--
|
||||
des.monster("Medusa", mx, my)
|
||||
des.monster("Medusa", place:rndcoord(1))
|
||||
des.monster("kraken", 07,07)
|
||||
--
|
||||
-- the nesting dragon
|
||||
|
||||
@@ -488,6 +488,7 @@ Example:
|
||||
|
||||
des.ladder("down");
|
||||
des.ladder("up", 6,10);
|
||||
des.ladder("up", {6,10});
|
||||
des.ladder({ x=11, y=05, dir="down" });
|
||||
des.ladder({ coord={11, 05}, dir="down" });
|
||||
|
||||
@@ -785,6 +786,7 @@ Example:
|
||||
des.stair({ dir = "down", x = 4, y = 7 });
|
||||
des.stair({ dir = "down", coord = {5,12} });
|
||||
des.stair("down", 4, 7);
|
||||
des.stair("down", {4, 7});
|
||||
|
||||
=== teleport_region
|
||||
|
||||
|
||||
26
src/sp_lev.c
26
src/sp_lev.c
@@ -3833,27 +3833,29 @@ l_create_stairway(lua_State *L, boolean using_ladder)
|
||||
struct trap *badtrap;
|
||||
|
||||
long scoord;
|
||||
lua_Integer ax = -1, ay = -1;
|
||||
int up;
|
||||
int up = 0; /* default is down */
|
||||
int ltype = lua_type(L, 1);
|
||||
|
||||
create_des_coder();
|
||||
|
||||
if (argc == 1 && ltype == LUA_TSTRING) {
|
||||
up = stairdirs2i[luaL_checkoption(L, 1, "down", stairdirs)];
|
||||
} else if (argc == 3 && ltype == LUA_TSTRING) {
|
||||
up = stairdirs2i[luaL_checkoption(L, 1, "down", stairdirs)];
|
||||
ax = luaL_checkinteger(L, 2);
|
||||
ay = luaL_checkinteger(L, 3);
|
||||
} else {
|
||||
if (argc == 1 && ltype == LUA_TTABLE) {
|
||||
lua_Integer ax = -1, ay = -1;
|
||||
lcheck_param_table(L);
|
||||
get_table_xy_or_coord(L, &ax, &ay);
|
||||
up = stairdirs2i[get_table_option(L, "dir", "down", stairdirs)];
|
||||
x = ax;
|
||||
y = ay;
|
||||
} else {
|
||||
int ix = -1, iy = -1;
|
||||
if (argc > 0 && ltype == LUA_TSTRING) {
|
||||
up = stairdirs2i[luaL_checkoption(L, 1, "down", stairdirs)];
|
||||
lua_remove(L, 1);
|
||||
}
|
||||
nhl_get_xy_params(L, &ix, &iy);
|
||||
x = ix;
|
||||
y = iy;
|
||||
}
|
||||
|
||||
x = ax;
|
||||
y = ay;
|
||||
|
||||
if (x == -1 && y == -1) {
|
||||
set_ok_location_func(good_stair_loc);
|
||||
scoord = SP_COORD_PACK_RANDOM(0);
|
||||
|
||||
@@ -400,8 +400,10 @@ function test_stair()
|
||||
des.reset_level();
|
||||
des.level_init();
|
||||
|
||||
des.stair();
|
||||
des.stair("up");
|
||||
des.stair("down", 4, 7);
|
||||
des.stair("down", {7, 7});
|
||||
des.stair({ dir = "down", x = 5, y = 7 });
|
||||
des.stair({ dir = "down", coord = {6, 7} });
|
||||
end
|
||||
@@ -410,8 +412,10 @@ function test_ladder()
|
||||
des.reset_level();
|
||||
des.level_init();
|
||||
|
||||
des.ladder();
|
||||
des.ladder("up");
|
||||
des.ladder("down", 4, 7);
|
||||
des.ladder("down", {7, 7});
|
||||
des.ladder({ dir = "down", x = 5, y = 7 });
|
||||
des.ladder({ dir = "down", coord = {6, 7} });
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user