Apply the new ground_level method.
[crawl.git] / crawl-ref / source / l_feat.cc
blobd19f4fe2331dd3e34386dade1b6f23e9264bff1c
1 /*
2 * File: l_feat.cc
3 * Summary: Boolean feat-related functions lua library "feat".
4 */
6 #include "AppHdr.h"
8 #include "clua.h"
9 #include "cluautil.h"
10 #include "l_libs.h"
12 #include "coord.h"
13 #include "env.h"
14 #include "libutil.h"
15 #include "terrain.h"
17 #define FEATF(name, val) \
18 static int name(lua_State *ls) \
19 { \
20 if (lua_gettop(ls) == 2) \
21 { \
22 COORDS(c, 1, 2);\
23 lua_pushboolean(ls, val(grd(c)));\
24 } \
25 else if (lua_isnumber(ls, 1)) \
26 lua_pushboolean(ls, val(static_cast<dungeon_feature_type>( \
27 luaL_checkint(ls, 1)))); \
28 else if (lua_isstring(ls, 1)) \
29 lua_pushboolean(ls, val(dungeon_feature_by_name(\
30 luaL_checkstring(ls, 1))));\
31 return (1); \
34 FEATF(_feat_is_wall, feat_is_wall)
35 FEATF(_feat_is_solid, feat_is_solid)
36 FEATF(_feat_has_solid_floor, feat_has_solid_floor)
37 FEATF(_feat_is_opaque, feat_is_opaque)
38 FEATF(_feat_is_door, feat_is_door)
39 FEATF(_feat_is_closed_door, feat_is_closed_door)
40 FEATF(_feat_is_secret_door, feat_is_secret_door)
41 FEATF(_feat_is_statue_or_idol, feat_is_statue_or_idol)
42 FEATF(_feat_is_rock, feat_is_rock)
43 FEATF(_feat_is_permarock, feat_is_permarock)
44 FEATF(_feat_is_stone_stair, feat_is_stone_stair)
45 FEATF(_feat_is_staircase, feat_is_staircase)
46 FEATF(_feat_is_escape_hatch, feat_is_escape_hatch)
47 FEATF(_feat_is_trap, feat_is_trap)
48 FEATF(_feat_is_sealable_portal, feat_sealable_portal)
49 FEATF(_feat_is_portal, feat_is_portal)
50 FEATF(_feat_is_stair, feat_is_stair)
51 FEATF(_feat_is_travelable_stair, feat_is_travelable_stair)
52 FEATF(_feat_is_gate, feat_is_gate)
53 FEATF(_feat_is_water, feat_is_water)
54 FEATF(_feat_is_watery, feat_is_watery)
55 FEATF(_feat_is_altar, feat_is_altar)
56 FEATF(_feat_is_player_altar, feat_is_player_altar)
57 FEATF(_feat_is_branch_stairs, feat_is_branch_stairs)
58 FEATF(_feat_is_critical, is_critical_feature)
60 const struct luaL_reg feat_dlib[] =
62 { "is_wall", _feat_is_wall },
63 { "is_solid", _feat_is_solid },
64 { "has_solid_floor", _feat_has_solid_floor },
65 { "is_opaque", _feat_is_opaque },
66 { "is_door", _feat_is_door },
67 { "is_closed_door", _feat_is_closed_door },
68 { "is_secret_door", _feat_is_secret_door },
69 { "is_statue_or_idol", _feat_is_statue_or_idol },
70 { "is_rock", _feat_is_rock },
71 { "is_permarock", _feat_is_permarock },
72 { "is_stone_stair", _feat_is_stone_stair },
73 { "is_staircase", _feat_is_staircase },
74 { "is_escape_hatch", _feat_is_escape_hatch },
75 { "is_trap", _feat_is_trap },
76 { "is_sealable_portal", _feat_is_sealable_portal },
77 { "is_portal", _feat_is_portal },
78 { "is_stair", _feat_is_stair },
79 { "is_travelable_stair", _feat_is_travelable_stair },
80 { "is_gate", _feat_is_gate },
81 { "is_water", _feat_is_water },
82 { "is_watery", _feat_is_watery },
83 { "is_altar", _feat_is_altar },
84 { "is_player_altar", _feat_is_player_altar },
85 { "is_branch_stairs", _feat_is_branch_stairs },
86 { "is_critical", _feat_is_critical },
88 { NULL, NULL }