fix bug in mon.c reported by paxed

Also adds a shorthand macro
    monsym(&mons[n])
for getting the default symbol, used in the bugfix.
This commit is contained in:
nhmall
2023-12-06 22:18:11 -05:00
parent c1910026f0
commit ee3ebcc10d
5 changed files with 5 additions and 4 deletions

View File

@@ -260,5 +260,6 @@
#define pmname(ptr,g) ((((g) == MALE || (g) == FEMALE) && (ptr)->pmnames[g]) \
? (ptr)->pmnames[g] : (ptr)->pmnames[NEUTRAL])
#endif
#define monsym(ptr) (def_monsyms[(int) (ptr)->mlet].sym)
#endif /* MONDATA_H */

View File

@@ -106,7 +106,7 @@ browse_map(unsigned ter_typ, const char *ter_explain)
static void
map_monst(struct monst *mtmp, boolean showtail)
{
int glyph = (def_monsyms[(int) mtmp->data->mlet].sym == ' ')
int glyph = (monsym(mtmp->data) == ' ')
? detected_mon_to_glyph(mtmp, newsym_rn2)
: mtmp->mtame
? pet_to_glyph(mtmp, newsym_rn2)

View File

@@ -1640,7 +1640,7 @@ rndmonst_adj(int minadj, int maxadj)
if (montooweak(mndx, minmlev) || montoostrong(mndx, maxmlev))
continue;
if (upper && !isupper((uchar) def_monsyms[(int) ptr->mlet].sym))
if (upper && !isupper(monsym(ptr)))
continue;
if (elemlevel && wrong_elem_type(ptr))
continue;

View File

@@ -4419,7 +4419,7 @@ pick_animal(void)
/* rogue level should use monsters represented by uppercase letters
only, but since chameleons aren't generated there (not uppercase!)
we don't perform a lot of retries */
if (Is_rogue_level(&u.uz) && !isupper((uchar) mons[res].mlet))
if (Is_rogue_level(&u.uz) && !isupper(monsym(&mons[res])))
res = ga.animal_list[rn2(ga.animal_list_count)];
return res;
}

View File

@@ -3306,7 +3306,7 @@ lspo_monster(lua_State *L)
tmpmons.coord = SP_COORD_PACK(mx, my);
if (tmpmons.id != NON_PM && tmpmons.class == -1)
tmpmons.class = def_monsyms[(int) mons[tmpmons.id].mlet].sym;
tmpmons.class = monsym(&mons[tmpmons.id]);
create_monster(&tmpmons, gc.coder->croom);