Defines

mondata.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define verysmall(ptr)   ((ptr)->msize < MZ_SMALL)
#define bigmonst(ptr)   ((ptr)->msize >= MZ_LARGE)
#define hugemonst(ptr)   ((ptr)->msize >= MZ_HUGE)
#define pm_resistance(ptr, typ)   (((ptr)->mresists & (typ)) != 0)
#define resists_fire(mon)   (((mon)->mintrinsics & MR_FIRE) != 0)
#define resists_cold(mon)   (((mon)->mintrinsics & MR_COLD) != 0)
#define resists_sleep(mon)   (((mon)->mintrinsics & MR_SLEEP) != 0)
#define resists_disint(mon)   (((mon)->mintrinsics & MR_DISINT) != 0)
#define resists_elec(mon)   (((mon)->mintrinsics & MR_ELEC) != 0)
#define resists_poison(mon)   (((mon)->mintrinsics & MR_POISON) != 0)
#define resists_acid(mon)   (((mon)->mintrinsics & MR_ACID) != 0)
#define resists_ston(mon)   (((mon)->mintrinsics & MR_STONE) != 0)
#define is_lminion(mon)
#define is_flyer(ptr)   (((ptr)->mflags1 & M1_FLY) != 0L)
#define is_floater(ptr)   ((ptr)->mlet == S_EYE)
#define is_clinger(ptr)   (((ptr)->mflags1 & M1_CLING) != 0L)
#define is_swimmer(ptr)   (((ptr)->mflags1 & M1_SWIM) != 0L)
#define breathless(ptr)   (((ptr)->mflags1 & M1_BREATHLESS) != 0L)
#define amphibious(ptr)   (((ptr)->mflags1 & (M1_AMPHIBIOUS | M1_BREATHLESS)) != 0L)
#define passes_walls(ptr)   (((ptr)->mflags1 & M1_WALLWALK) != 0L)
#define amorphous(ptr)   (((ptr)->mflags1 & M1_AMORPHOUS) != 0L)
#define noncorporeal(ptr)   ((ptr)->mlet == S_GHOST)
#define tunnels(ptr)   (((ptr)->mflags1 & M1_TUNNEL) != 0L)
#define needspick(ptr)   (((ptr)->mflags1 & M1_NEEDPICK) != 0L)
#define hides_under(ptr)   (((ptr)->mflags1 & M1_CONCEAL) != 0L)
#define is_hider(ptr)   (((ptr)->mflags1 & M1_HIDE) != 0L)
#define haseyes(ptr)   (((ptr)->mflags1 & M1_NOEYES) == 0L)
#define eyecount(ptr)
#define nohands(ptr)   (((ptr)->mflags1 & M1_NOHANDS) != 0L)
#define nolimbs(ptr)   (((ptr)->mflags1 & M1_NOLIMBS) == M1_NOLIMBS)
#define notake(ptr)   (((ptr)->mflags1 & M1_NOTAKE) != 0L)
#define has_head(ptr)   (((ptr)->mflags1 & M1_NOHEAD) == 0L)
#define has_horns(ptr)   (num_horns(ptr) > 0)
#define is_whirly(ptr)
#define flaming(ptr)
#define is_silent(ptr)   ((ptr)->msound == MS_SILENT)
#define unsolid(ptr)   (((ptr)->mflags1 & M1_UNSOLID) != 0L)
#define mindless(ptr)   (((ptr)->mflags1 & M1_MINDLESS) != 0L)
#define humanoid(ptr)   (((ptr)->mflags1 & M1_HUMANOID) != 0L)
#define is_animal(ptr)   (((ptr)->mflags1 & M1_ANIMAL) != 0L)
#define slithy(ptr)   (((ptr)->mflags1 & M1_SLITHY) != 0L)
#define is_wooden(ptr)   ((ptr) == &mons[PM_WOOD_GOLEM])
#define thick_skinned(ptr)   (((ptr)->mflags1 & M1_THICK_HIDE) != 0L)
#define lays_eggs(ptr)   (((ptr)->mflags1 & M1_OVIPAROUS) != 0L)
#define regenerates(ptr)   (((ptr)->mflags1 & M1_REGEN) != 0L)
#define perceives(ptr)   (((ptr)->mflags1 & M1_SEE_INVIS) != 0L)
#define can_teleport(ptr)   (((ptr)->mflags1 & M1_TPORT) != 0L)
#define control_teleport(ptr)   (((ptr)->mflags1 & M1_TPORT_CNTRL) != 0L)
#define telepathic(ptr)
#define is_armed(ptr)   attacktype(ptr, AT_WEAP)
#define acidic(ptr)   (((ptr)->mflags1 & M1_ACID) != 0L)
#define poisonous(ptr)   (((ptr)->mflags1 & M1_POIS) != 0L)
#define carnivorous(ptr)   (((ptr)->mflags1 & M1_CARNIVORE) != 0L)
#define herbivorous(ptr)   (((ptr)->mflags1 & M1_HERBIVORE) != 0L)
#define metallivorous(ptr)   (((ptr)->mflags1 & M1_METALLIVORE) != 0L)
#define polyok(ptr)   (((ptr)->mflags2 & M2_NOPOLY) == 0L)
#define is_undead(ptr)   (((ptr)->mflags2 & M2_UNDEAD) != 0L)
#define is_were(ptr)   (((ptr)->mflags2 & M2_WERE) != 0L)
#define is_vampire(ptr)
#define is_vampiric(ptr)
#define is_elf(ptr)   (((ptr)->mflags2 & M2_ELF) != 0L)
#define is_dwarf(ptr)   (((ptr)->mflags2 & M2_DWARF) != 0L)
#define is_gnome(ptr)   (((ptr)->mflags2 & M2_GNOME) != 0L)
#define is_orc(ptr)   (((ptr)->mflags2 & M2_ORC) != 0L)
#define is_human(ptr)   (((ptr)->mflags2 & M2_HUMAN) != 0L)
#define your_race(ptr)   (((ptr)->mflags2 & urace.selfmask) != 0L)
#define is_bat(ptr)
#define is_bird(ptr)   ((ptr)->mlet == S_BAT && !is_bat(ptr))
#define is_giant(ptr)   (((ptr)->mflags2 & M2_GIANT) != 0L)
#define is_golem(ptr)   ((ptr)->mlet == S_GOLEM)
#define is_domestic(ptr)   (((ptr)->mflags2 & M2_DOMESTIC) != 0L)
#define is_demon(ptr)   (((ptr)->mflags2 & M2_DEMON) != 0L)
#define is_mercenary(ptr)   (((ptr)->mflags2 & M2_MERC) != 0L)
#define is_male(ptr)   (((ptr)->mflags2 & M2_MALE) != 0L)
#define is_female(ptr)   (((ptr)->mflags2 & M2_FEMALE) != 0L)
#define is_neuter(ptr)   (((ptr)->mflags2 & M2_NEUTER) != 0L)
#define is_wanderer(ptr)   (((ptr)->mflags2 & M2_WANDER) != 0L)
#define always_hostile(ptr)   (((ptr)->mflags2 & M2_HOSTILE) != 0L)
#define always_peaceful(ptr)   (((ptr)->mflags2 & M2_PEACEFUL) != 0L)
#define race_hostile(ptr)   (((ptr)->mflags2 & urace.hatemask) != 0L)
#define race_peaceful(ptr)   (((ptr)->mflags2 & urace.lovemask) != 0L)
#define extra_nasty(ptr)   (((ptr)->mflags2 & M2_NASTY) != 0L)
#define strongmonst(ptr)   (((ptr)->mflags2 & M2_STRONG) != 0L)
#define can_breathe(ptr)   attacktype(ptr, AT_BREA)
#define cantwield(ptr)   (nohands(ptr) || verysmall(ptr))
#define could_twoweap(ptr)   ((ptr)->mattk[1].aatyp == AT_WEAP)
#define cantweararm(ptr)   (breakarm(ptr) || sliparm(ptr))
#define throws_rocks(ptr)   (((ptr)->mflags2 & M2_ROCKTHROW) != 0L)
#define type_is_pname(ptr)   (((ptr)->mflags2 & M2_PNAME) != 0L)
#define is_lord(ptr)   (((ptr)->mflags2 & M2_LORD) != 0L)
#define is_prince(ptr)   (((ptr)->mflags2 & M2_PRINCE) != 0L)
#define is_ndemon(ptr)
#define is_dlord(ptr)   (is_demon(ptr) && is_lord(ptr))
#define is_dprince(ptr)   (is_demon(ptr) && is_prince(ptr))
#define is_minion(ptr)   ((ptr)->mflags2 & M2_MINION)
#define likes_gold(ptr)   (((ptr)->mflags2 & M2_GREEDY) != 0L)
#define likes_gems(ptr)   (((ptr)->mflags2 & M2_JEWELS) != 0L)
#define likes_objs(ptr)
#define likes_magic(ptr)   (((ptr)->mflags2 & M2_MAGIC) != 0L)
#define webmaker(ptr)
#define is_unicorn(ptr)   ((ptr)->mlet == S_UNICORN && likes_gems(ptr))
#define is_longworm(ptr)
#define is_covetous(ptr)   ((ptr->mflags3 & M3_COVETOUS))
#define infravision(ptr)   ((ptr->mflags3 & M3_INFRAVISION))
#define infravisible(ptr)   ((ptr->mflags3 & M3_INFRAVISIBLE))
#define is_mplayer(ptr)
#define is_rider(ptr)
#define is_guardian(ptr)
#define is_placeholder(ptr)
#define is_reviver(ptr)   (is_rider(ptr) || (ptr)->mlet == S_TROLL)
#define emits_light(ptr)
#define likes_lava(ptr)
#define pm_invisible(ptr)
#define likes_fire(ptr)
#define touch_petrifies(ptr)
#define is_mind_flayer(ptr)
#define nonliving(ptr)
#define vegan(ptr)
#define vegetarian(ptr)
#define has_blood(ptr)
#define befriend_with_obj(ptr, obj)

Define Documentation

#define acidic (   ptr )    (((ptr)->mflags1 & M1_ACID) != 0L)
#define always_hostile (   ptr )    (((ptr)->mflags2 & M2_HOSTILE) != 0L)

Referenced by peace_minded(), set_malign(), and xkilled().

#define always_peaceful (   ptr )    (((ptr)->mflags2 & M2_PEACEFUL) != 0L)

Referenced by peace_minded(), and set_malign().

#define amorphous (   ptr )    (((ptr)->mflags1 & M1_AMORPHOUS) != 0L)
#define amphibious (   ptr )    (((ptr)->mflags1 & (M1_AMPHIBIOUS | M1_BREATHLESS)) != 0L)
#define befriend_with_obj (   ptr,
  obj 
)
Value:
((obj)->oclass == FOOD_CLASS && \
                                     is_domestic(ptr))

Referenced by thitmonst().

#define bigmonst (   ptr )    ((ptr)->msize >= MZ_LARGE)
#define breathless (   ptr )    (((ptr)->mflags1 & M1_BREATHLESS) != 0L)
#define can_breathe (   ptr )    attacktype(ptr, AT_BREA)

Referenced by domonability(), and polymon().

#define can_teleport (   ptr )    (((ptr)->mflags1 & M1_TPORT) != 0L)
#define cantweararm (   ptr )    (breakarm(ptr) || sliparm(ptr))

Referenced by canwearobj(), and m_dowear().

#define cantwield (   ptr )    (nohands(ptr) || verysmall(ptr))
#define carnivorous (   ptr )    (((ptr)->mflags1 & M1_CARNIVORE) != 0L)
#define control_teleport (   ptr )    (((ptr)->mflags1 & M1_TPORT_CNTRL) != 0L)

Referenced by intrinsic_possible().

#define could_twoweap (   ptr )    ((ptr)->mattk[1].aatyp == AT_WEAP)
#define emits_light (   ptr )
Value:
(((ptr)->mlet == S_LIGHT || \
                                  (ptr) == &mons[PM_FLAMING_SPHERE] || \
                                  (ptr) == &mons[PM_SHOCKING_SPHERE] || \
                                  (!strcmp((ptr)->mname, "gold dragon")) || \
                                  (!strcmp((ptr)->mname, "baby gold dragon")) || \
                                  (ptr) == &mons[PM_FIRE_VORTEX]) ? 1 : \
                                 ((ptr) == &mons[PM_FIRE_ELEMENTAL]) ? 1 : 0)

Referenced by clone_mon(), m_detach(), makemon(), newcham(), polyself(), rehumanize(), and replmon().

#define extra_nasty (   ptr )    (((ptr)->mflags2 & M2_NASTY) != 0L)

Referenced by experience(), m_initweap(), and mintrap().

#define eyecount (   ptr )
#define flaming (   ptr )
Value:
((ptr) == &mons[PM_FIRE_VORTEX] || \
                                 (ptr) == &mons[PM_FLAMING_SPHERE] || \
                                 (ptr) == &mons[PM_FIRE_ELEMENTAL] || \
                                 (ptr) == &mons[PM_SALAMANDER])

Referenced by cprefx(), damageum(), edibility_prompts(), gulpmu(), gulpum(), hitmu(), mdamagem(), and polymon().

#define has_blood (   ptr )
Value:
(!vegetarian(ptr) && \
                                   (ptr)->mlet != S_GOLEM && \
                                   (!is_undead(ptr) || is_vampire(ptr)))

Referenced by damageum(), dogfood(), hitmu(), is_edible(), and mdamagem().

#define has_head (   ptr )    (((ptr)->mflags1 & M1_NOHEAD) == 0L)
#define has_horns (   ptr )    (num_horns(ptr) > 0)
#define haseyes (   ptr )    (((ptr)->mflags1 & M1_NOEYES) == 0L)
#define herbivorous (   ptr )    (((ptr)->mflags1 & M1_HERBIVORE) != 0L)
#define hides_under (   ptr )    (((ptr)->mflags1 & M1_CONCEAL) != 0L)
#define hugemonst (   ptr )    ((ptr)->msize >= MZ_HUGE)

Referenced by close_drawbridge().

#define humanoid (   ptr )    (((ptr)->mflags1 & M1_HUMANOID) != 0L)
#define infravisible (   ptr )    ((ptr->mflags3 & M3_INFRAVISIBLE))
#define infravision (   ptr )    ((ptr->mflags3 & M3_INFRAVISION))
#define is_animal (   ptr )    (((ptr)->mflags1 & M1_ANIMAL) != 0L)
#define is_armed (   ptr )    attacktype(ptr, AT_WEAP)

Referenced by makemon().

#define is_bat (   ptr )
Value:
((ptr) == &mons[PM_BAT] || \
                                 (ptr) == &mons[PM_GIANT_BAT] || \
                                 (ptr) == &mons[PM_VAMPIRE_BAT])

Referenced by makemon().

#define is_bird (   ptr )    ((ptr)->mlet == S_BAT && !is_bat(ptr))
#define is_clinger (   ptr )    (((ptr)->mflags1 & M1_CLING) != 0L)
#define is_covetous (   ptr )    ((ptr->mflags3 & M3_COVETOUS))
#define is_demon (   ptr )    (((ptr)->mflags2 & M2_DEMON) != 0L)
#define is_dlord (   ptr )    (is_demon(ptr) && is_lord(ptr))

Referenced by msummon().

#define is_domestic (   ptr )    (((ptr)->mflags2 & M2_DOMESTIC) != 0L)

Referenced by initedog(), and rndmonst().

#define is_dprince (   ptr )    (is_demon(ptr) && is_prince(ptr))

Referenced by demon_talk(), makemon(), and msummon().

#define is_dwarf (   ptr )    (((ptr)->mflags2 & M2_DWARF) != 0L)

Referenced by domonnoise(), genus(), and m_initweap().

#define is_elf (   ptr )    (((ptr)->mflags2 & M2_ELF) != 0L)
#define is_female (   ptr )    (((ptr)->mflags2 & M2_FEMALE) != 0L)
#define is_floater (   ptr )    ((ptr)->mlet == S_EYE)
#define is_flyer (   ptr )    (((ptr)->mflags1 & M1_FLY) != 0L)
#define is_giant (   ptr )    (((ptr)->mflags2 & M2_GIANT) != 0L)
#define is_gnome (   ptr )    (((ptr)->mflags2 & M2_GNOME) != 0L)

Referenced by genus().

#define is_golem (   ptr )    ((ptr)->mlet == S_GOLEM)
#define is_guardian (   ptr )
Value:
(((ptr) == &mons[PM_VLAD_THE_IMPALER]) || \
                                ((ptr) == &mons[PM_WIZARD_OF_YENDOR]) || \
                                (ptr->msound == MS_NEMESIS) || \
                                ((ptr) == &mons[PM_HIGH_PRIEST] && Is_sanctum(&u.uz)))
#define is_hider (   ptr )    (((ptr)->mflags1 & M1_HIDE) != 0L)
#define is_human (   ptr )    (((ptr)->mflags2 & M2_HUMAN) != 0L)
#define is_lminion (   mon )
Value:
(is_minion((mon)->data) && \
                                 (mon)->data->maligntyp >= A_COALIGNED && \
                                 ((mon)->data != &mons[PM_ANGEL] || \
                                  EPRI(mon)->shralign > 0))

Referenced by cuss(), mongets(), msummon(), and onscary().

#define is_longworm (   ptr )
Value:
(((ptr) == &mons[PM_BABY_LONG_WORM]) || \
                                 ((ptr) == &mons[PM_LONG_WORM]) || \
                                 ((ptr) == &mons[PM_LONG_WORM_TAIL]))

Referenced by attack().

#define is_lord (   ptr )    (((ptr)->mflags2 & M2_LORD) != 0L)
#define is_male (   ptr )    (((ptr)->mflags2 & M2_MALE) != 0L)

Referenced by change_sex(), makemon(), newcham(), and polymon().

#define is_mercenary (   ptr )    (((ptr)->mflags2 & M2_MERC) != 0L)
#define is_mind_flayer (   ptr )
Value:
((ptr) == &mons[PM_MIND_FLAYER] || \
                                 (ptr) == &mons[PM_MASTER_MIND_FLAYER])

Referenced by dochug(), domonability(), and polymon().

#define is_minion (   ptr )    ((ptr)->mflags2 & M2_MINION)
#define is_mplayer (   ptr )
#define is_ndemon (   ptr )
Value:
(is_demon(ptr) && \
                                 (((ptr)->mflags2 & (M2_LORD|M2_PRINCE)) == 0L))

Referenced by makemon(), msummon(), and ndemon().

#define is_neuter (   ptr )    (((ptr)->mflags2 & M2_NEUTER) != 0L)
#define is_orc (   ptr )    (((ptr)->mflags2 & M2_ORC) != 0L)
#define is_placeholder (   ptr )
Value:
((ptr) == &mons[PM_ORC] || \
                                 (ptr) == &mons[PM_GIANT] || \
                                 (ptr) == &mons[PM_ELF] || \
                                 (ptr) == &mons[PM_HUMAN])

Referenced by mkclass(), newcham(), and polyself().

#define is_prince (   ptr )    (((ptr)->mflags2 & M2_PRINCE) != 0L)
#define is_reviver (   ptr )    (is_rider(ptr) || (ptr)->mlet == S_TROLL)

Referenced by mergable().

#define is_rider (   ptr )
#define is_silent (   ptr )    ((ptr)->msound == MS_SILENT)
#define is_swimmer (   ptr )    (((ptr)->mflags1 & M1_SWIM) != 0L)
#define is_undead (   ptr )    (((ptr)->mflags2 & M2_UNDEAD) != 0L)
#define is_unicorn (   ptr )    ((ptr)->mlet == S_UNICORN && likes_gems(ptr))
#define is_vampire (   ptr )
#define is_vampiric (   ptr )
Value:
((is_vampire(ptr)) || \
                                 (ptr) == &mons[PM_VAMPIRE_BAT])

feeds on blood

Referenced by damageum(), doeat(), dog_eat(), dogfood(), eatcorpse(), eatfood(), is_edible(), and passive().

#define is_wanderer (   ptr )    (((ptr)->mflags2 & M2_WANDER) != 0L)
#define is_were (   ptr )    (((ptr)->mflags2 & M2_WERE) != 0L)
#define is_whirly (   ptr )
#define is_wooden (   ptr )    ((ptr) == &mons[PM_WOOD_GOLEM])

Referenced by dmgval().

#define lays_eggs (   ptr )    (((ptr)->mflags1 & M1_OVIPAROUS) != 0L)

Referenced by can_be_hatched(), dosit(), and polymon().

#define likes_fire (   ptr )
Value:
((ptr) == &mons[PM_FIRE_VORTEX] || \
                                  (ptr) == &mons[PM_FLAMING_SPHERE] || \
                                 likes_lava(ptr))

Referenced by peffects().

#define likes_gems (   ptr )    (((ptr)->mflags2 & M2_JEWELS) != 0L)

Referenced by m_move(), and select_rwep().

#define likes_gold (   ptr )    (((ptr)->mflags2 & M2_GREEDY) != 0L)

Referenced by ghitm(), m_initinv(), m_move(), and mattacku().

#define likes_lava (   ptr )
#define likes_magic (   ptr )    (((ptr)->mflags2 & M2_MAGIC) != 0L)

Referenced by domonnoise(), and m_move().

#define likes_objs (   ptr )
Value:
(((ptr)->mflags2 & M2_COLLECT) != 0L || \
                                 is_armed(ptr))

Referenced by m_move().

#define metallivorous (   ptr )    (((ptr)->mflags1 & M1_METALLIVORE) != 0L)
#define mindless (   ptr )    (((ptr)->mflags1 & M1_MINDLESS) != 0L)
#define needspick (   ptr )    (((ptr)->mflags1 & M1_NEEDPICK) != 0L)
#define nohands (   ptr )    (((ptr)->mflags1 & M1_NOHANDS) != 0L)
#define nolimbs (   ptr )    (((ptr)->mflags1 & M1_NOLIMBS) == M1_NOLIMBS)
#define noncorporeal (   ptr )    ((ptr)->mlet == S_GHOST)
#define nonliving (   ptr )
#define notake (   ptr )    (((ptr)->mflags1 & M1_NOTAKE) != 0L)

Referenced by can_carry(), dofire(), dothrow(), and pickup().

#define passes_walls (   ptr )    (((ptr)->mflags1 & M1_WALLWALK) != 0L)
#define perceives (   ptr )    (((ptr)->mflags1 & M1_SEE_INVIS) != 0L)
#define pm_invisible (   ptr )
Value:
((ptr) == &mons[PM_STALKER] || \
                           (ptr) == &mons[PM_BLACK_LIGHT])

Referenced by Cloak_on(), enlightenment(), and newcham().

#define pm_resistance (   ptr,
  typ 
)    (((ptr)->mresists & (typ)) != 0)

Referenced by fixup_special(), and wrong_elem_type().

#define poisonous (   ptr )    (((ptr)->mflags1 & M1_POIS) != 0L)
#define polyok (   ptr )    (((ptr)->mflags2 & M2_NOPOLY) == 0L)

Referenced by newcham(), and polyself().

#define race_hostile (   ptr )    (((ptr)->mflags2 & urace.hatemask) != 0L)

Referenced by mk_artifact(), and peace_minded().

#define race_peaceful (   ptr )    (((ptr)->mflags2 & urace.lovemask) != 0L)

Referenced by peace_minded().

#define regenerates (   ptr )    (((ptr)->mflags1 & M1_REGEN) != 0L)
#define resists_acid (   mon )    (((mon)->mintrinsics & MR_ACID) != 0)
#define resists_cold (   mon )    (((mon)->mintrinsics & MR_COLD) != 0)
#define resists_disint (   mon )    (((mon)->mintrinsics & MR_DISINT) != 0)
#define resists_elec (   mon )    (((mon)->mintrinsics & MR_ELEC) != 0)
#define resists_fire (   mon )    (((mon)->mintrinsics & MR_FIRE) != 0)
#define resists_poison (   mon )    (((mon)->mintrinsics & MR_POISON) != 0)
#define resists_sleep (   mon )    (((mon)->mintrinsics & MR_SLEEP) != 0)

Referenced by mfndpos(), mintrap(), and sleep_monst().

#define resists_ston (   mon )    (((mon)->mintrinsics & MR_STONE) != 0)
#define slithy (   ptr )    (((ptr)->mflags1 & M1_SLITHY) != 0L)
#define strongmonst (   ptr )    (((ptr)->mflags2 & M2_STRONG) != 0L)
#define telepathic (   ptr )
Value:
((ptr) == &mons[PM_FLOATING_EYE] || \
                                 (ptr) == &mons[PM_MIND_FLAYER] || \
                                 (ptr) == &mons[PM_MASTER_MIND_FLAYER])

Referenced by dochug(), domindblast(), and intrinsic_possible().

#define thick_skinned (   ptr )    (((ptr)->mflags1 & M1_THICK_HIDE) != 0L)
#define throws_rocks (   ptr )    (((ptr)->mflags2 & M2_ROCKTHROW) != 0L)
#define touch_petrifies (   ptr )
#define tunnels (   ptr )    (((ptr)->mflags1 & M1_TUNNEL) != 0L)
#define type_is_pname (   ptr )    (((ptr)->mflags2 & M2_PNAME) != 0L)
#define unsolid (   ptr )    (((ptr)->mflags1 & M1_UNSOLID) != 0L)
#define vegan (   ptr )
Value:
((ptr)->mlet == S_BLOB || \
                                 (ptr)->mlet == S_JELLY ||            \
                                 (ptr)->mlet == S_FUNGUS ||           \
                                 (ptr)->mlet == S_VORTEX ||           \
                                 (ptr)->mlet == S_LIGHT ||            \
                                ((ptr)->mlet == S_ELEMENTAL &&        \
                                 (ptr) != &mons[PM_STALKER]) ||       \
                                ((ptr)->mlet == S_GOLEM &&            \
                                 (ptr) != &mons[PM_FLESH_GOLEM] &&    \
                                 (ptr) != &mons[PM_LEATHER_GOLEM]) || \
                                 noncorporeal(ptr))

Referenced by damageum(), dogfood(), eatcorpse(), edibility_prompts(), gulpum(), and opentin().

#define vegetarian (   ptr )
Value:
(vegan(ptr) || \
                                ((ptr)->mlet == S_PUDDING &&         \
                                 (ptr) != &mons[PM_BLACK_PUDDING]))

Referenced by bhito(), damageum(), eatcorpse(), edibility_prompts(), gulpum(), opentin(), and xname().

#define verysmall (   ptr )    ((ptr)->msize < MZ_SMALL)
#define webmaker (   ptr )
#define your_race (   ptr )    (((ptr)->mflags2 & urace.selfmask) != 0L)