From: Pasi Kallinen Date: Sat, 10 Oct 2020 08:31:16 +0000 (+0300) Subject: Lua: Allow matching any wall X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d6551a70e3f3ca212d4a6141aa816a193c9c4c7;p=nethack Lua: Allow matching any wall A 'w' in a map fragment will match any wall (IS_WALL macro): des.replace_terrain({ mapfragment = "w", toterrain = "F" }); --- diff --git a/src/sp_lev.c b/src/sp_lev.c index 446e78258..f11099af2 100755 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -197,6 +197,9 @@ static struct monst *invent_carrying_monster = (struct monst *) 0; * end of no 'g.' */ +#define TYP_CANNOT_MATCH(typ) \ + ((typ) == MAX_TYPE || (typ) == INVALID_TYPE) + /* Does typ match with levl[][].typ, considering special types MATCH_WALL and MAX_TYPE (aka transparency)? */ static boolean @@ -277,7 +280,7 @@ struct mapfragment *mf; else if (!mapfrag_canmatch(mf)) { mapfrag_free(&mf); return "mapfragment needs to have odd height and width"; - } else if (mapfrag_get(mf, (mf->wid/2), (mf->hei/2)) >= MAX_TYPE) { + } else if (TYP_CANNOT_MATCH(mapfrag_get(mf, (mf->wid/2), (mf->hei/2)))) { mapfrag_free(&mf); return "mapfragment center must be valid terrain"; }