Commit Graph

9119 Commits

Author SHA1 Message Date
Michael Meyer
fe8710532e Fix: latent bug with finish_meating on catchup
Some players of 3.6 recently noticed that sometimes, mimics in shops
seemed to have moved around even before the player had entered the shop
or done anything to uncloak them.  I found that this was because
finish_meating was being called for all non-eating monsters when
restoring a level (monsters that weren't eating anything would have
meating == 0 so always pass the 'imv > meating' check).  This would
uncloak mimics -- but not all the time, because the 'mappearance != 0'
test meant mimics disguised as strange objects weren't uncloaked.  I
think that was meant to be an additional check to confirm the monster
really did have a disguise, but in reality it meant that M_AP_OBJECT
"strange object", M_AP_MONSTER "giant ant", etc disguises wouldn't be
removed by finish_meating.

As it turns out, this was mostly fixed by coincidence in 221e4a7, which
fixed the "exclude actual mimics" check in finish_meating.  So at this
point in 3.7 it's largely a latent bug, but it still had the potential
to improperly uncloak non-mimics who can disguise themselves (like the
Wizard of Yendor, maybe?), and could cause other problems if
finish_meating were updated to have additional effects, or if some
monster types were made to disguise themselves as a strange object when
eating a mimic.
2023-11-30 18:05:34 -08:00
PatR
97238fc01a github issue #1157 - wand of striking
Issue reported by elunna:  hero witnessing a wand of striking being
zapped by a monster didn't have that type of wand become discovered.
Monsters observing hero resisting--or failing to resist--the effect
on hero didn't learn about target's current resistance capability.

Barely tested.

Fixes #1157
2023-11-30 16:37:07 -08:00
nhmall
14bdbc8a04 Merge branch 'do-play-instrument' of https://github.com/argrath/NetHack into NetHack-3.7 2023-11-30 13:50:28 -05:00
nhmall
a6772da65d pull request 1156 follow-up bit 2023-11-30 12:19:16 -05:00
nhmall
182d7d27b8 Merge branch 'fix-mkobj' of https://github.com/argrath/NetHack into NetHack-3.7 2023-11-30 12:16:46 -05:00
SHIRAKATA Kentaro
3ab0d92ac9 remove unnecessary condition on save_mtraits()
`mtmp->data` here is always non-null, otherwise it leads segv at earlier code.
2023-12-01 02:05:38 +09:00
nhmall
d7fef5f194 avoid another magic number
Some of the hardcoded +1 scattered about are likely
invlet_gold or invlet_overflow, but I didn't hunt those down.
2023-11-30 11:15:32 -05:00
PatR
9847fcb5b1 improve the menu for setting pickup_types option
For
|Autopickup what?
| a - amulets
 ...
| A - all classes
prevent invert all and set all from setting the 'A - all classes'
entry.  For invert, toggling it is wrong.  For set, suppressing it
from being set is academic since all other entries get set.

Simplify the notes about what happens when no classes are selected,
and when autopickup is On about how to not autopickup anything at all.
Add one when it's Off, about how to make the chosen classes matter.
2023-11-29 21:37:40 -08:00
Michael Meyer
4e008bb52f Reword feedback for repeated confuse monster use
I didn't like "your hands begin to glow red even more" very much (the
hero's hands aren't really 'beginning' to glow if they already have an
active confuse monster effect, and "glow red even more" was an awkward
turn of phrase on top of that).  Rephrase it to "The red glow of your
hands intensifies."
2023-11-29 12:11:43 -08:00
Michael Meyer
392f300fa6 Blame hero for broken digging wand shop damage 2023-11-29 11:36:57 -08:00
Michael Meyer
e49c488f18 Streamline digactualhole messaging
Merge some nearly-duplicate code for the two trap types.  Also include
alignment name when referring to an altar's destruction, since it
provides some context for the immediate follow-up by its god.
2023-11-29 11:36:57 -08:00
Michael Meyer
0473fff5b5 Make destruction of altar incite its god's wrath
This is for completely destroying an altar with extra-powerful magical
digging -- the normal altar_wrath() punishment didn't seem sufficient
for such an outrage to me, so skip straight to slinging the lightning
bolts.  Destroying an altar is unlikely to happen by accident (though
it's possible with poorly timed usage of a drum of earthquake).
2023-11-29 11:36:56 -08:00
Michael Meyer
5cbc16a3bd Improve digging vs furniture messaging
When a wand of digging explosion overwrites furniture, describe it
appropriately.  "A pit appears in the altar" doesn't sound right.
2023-11-29 11:36:56 -08:00
Michael Meyer
06ef415c4f Remove unneeded furniture vs earthquake hack
This is no longer needed after ab37888b36.
2023-11-29 11:36:55 -08:00
SHIRAKATA Kentaro
5f6535728d remove unnecessary condition on use_offensive()
`otmp` here is always non-null, otherwise it leads segv at earlier code.
2023-11-29 11:27:20 -08:00
PatR
585e6373b5 drop_uswapwep()
drop_uswapwep() avoided calling makeplural() in a pline which also
had a call to Yobjname2(), with a comment about the possibility of
clobbering its static return buffer.  uswapwep might be a stack that
results in Yobjname2 indirectly calling makeplural to produce a
plural description.  But makeplural() has used xname's pool of obufs
since before uswapwep became a thing, so the code was evidently
cloned from some other out of date usage.

I was going to just move the makeplural() call into pline() but it
dawned on me that uswapwep must be one handed, so don't pluralize
hands at all.  And since uswapwep might have the same description as
uwep, explicitly mention "left hand" to distinguish.
2023-11-29 11:23:25 -08:00
Pasi Kallinen
94d44e433b Fix sanity error when pet ate a mimic corpse
When a pet ate a mimic corpse and started mimicking a monster,
and the user then used #wizmakemap, the sanity checker complained
about "non-mimic posing as foo" - the code was clearing the
pet eating counter, but didn't clear the appearance.
2023-11-29 12:15:08 +02:00
PatR
f6e70bbc58 two-weapon combat on/off via inventory item action
When testing 'm )' I noticed that weapon and alternate weapon weren't
offering the chance to toggle two-weapon mode.  When already on,
providing it as a choice to toggle it off is simple, but when at is
off that isn't the case.  There are lots of reasons why attempting
to toggle it on might fail and it is silly to offer as a choice if
failure is sure to occur.  This tries to filter out the majority of
reasons why the player can't toggle it on when deciding whether to
include 'X' as a choice.
2023-11-28 01:15:04 -08:00
PatR
e6a7eb25d4 item actions for '* ) [ = " (' commands
Make the various item-in-use commands put up a menu--which allows
choosing an item for context-sensitive item action--if/when preceded
by the 'm' prefix.  Some of them do that even without the prefix ('*',
'[', or '=' when more than one ring is worn).  By default '(' shows
primary weapon, then secondary one if dual-wielding.  'm (' shows a
menu of primary, alternate whether dual-wielding it or not, and quiver.
2023-11-28 00:31:21 -08:00
PatR
75104c69ab fix #K4043 and #K4044 - out of bounds of races[]
character_race() was going out of bounds when scanning the races[]
array, relying on a field value that the fencepost entry didn't set.

This incorporates the previous fix for UNDEFINED_RACE but also changes
character_race() to not care about that anymore.
2023-11-27 16:43:44 -08:00
nhmall
85e08c4034 splash 2023-11-25 21:14:22 -05:00
nhmall
b2a94c8555 misbehavior when tethered aklys gets stuck in web
Reported by elunna after it was noticed on Hack'EM
Closes #1152
2023-11-25 20:47:35 -05:00
PatR
6c5b5c0688 more '*' and perminv_mode==inuse
If any items are in use and hero isn't wielding anything, include
| - bare hands
in the primary weapon slot of the display of used items as an alert.
More useful for perm_invent than for #seeall.

If no items at all are in use, continue to show "not using any items"
without any specific weaponless alert.

When sortloot() is called for inuse_only, pass a filter that screens
out items which aren't in use so they won't be needlessly sorted.
2023-11-25 14:11:43 -08:00
PatR
99ccb7a26f revamp '*' (#seeall command)
For '*' and for persistent inventory with perminv_mode==inuse, show
the items in a specific order and within four labelled groups rather
than within their object classes:
|Accessories
| amulet
| right ring
| left ring
| blindfold
|Wielded/Readied Weapons
| primary weapon
| alternate or secondary weapon
| quiver/ammo pouch
|Armor
| suit
| cloak
| shield
| helmet
| gloves
| boots
| shirt
|Miscellaneous
| lit candles and/or lamps
| attached leashes

The accessories come first due to the default 'packorder' position
for amulets; weapons before armor likewise.  If you wield a potion or
quiver some gold, those non-')' items will appear in the weapons
section since the ordering is based on slot rather than object class.
2023-11-24 16:13:39 -08:00
PatR
8df26c33f9 miscellaneous invent.c bits
Unrelated changes pulled out of pending patch.
2023-11-24 15:33:36 -08:00
nhmall
fa4a47d8ff relocate choose_classes_menu() to windows.c
choose_classes_menu was declared extern. The only caller presently
was calling it was optfn_pickup_types() in options.c.

It could have had the extern declaration from include/extern.h and
declare it as static within options.c, if that was the only use
anticipated. Also, if the one existing caller were all there would
ever be, the argument passed to it that was the subject of pr #1146
could have just been removed along with the switch.

Checking the comments above the function, however, it was clearly
designed as a general-purpose function that could be called from
anywhere for the functionality desired, even though there's presently
just the one caller, passing just the one variation of the category
argument.

Relocate the general-purpose function over to src/windows.c, where
several interface-related / menu-related general-purpose functions
already reside.

options.c has gotten *huge* and this is a fitting opportunity to
reduce its size a little.
2023-11-23 14:28:12 -05:00
nhmall
5af8b46f79 follow-up to pmidx, quiet a set of unexpected warnings in makemon
An interesting side effect of the monsndx change that wasn't expected
was a series of warnings on a switch statement in makemon.c. The compiler
is now able to evaluate the switch coverage at compile time.

While the number of warnings was daunting, the fix was simple.

makemon.c: In function ‘is_home_elemental’:
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_ANT’ not handled in switch
[-Wswitch]
    34 |         switch (monsndx(ptr)) {
       |         ^~~~~~
makemon.c:34:9: warning: enumeration value ‘PM_KILLER_BEE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SOLDIER_ANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FIRE_ANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_BEETLE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_QUEEN_BEE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ACID_BLOB’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_QUIVERING_BLOB’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GELATINOUS_CUBE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CHICKATRICE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_COCKATRICE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PYROLISK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_JACKAL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FOX’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_COYOTE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WEREJACKAL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LITTLE_DOG’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DINGO’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DOG’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LARGE_DOG’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WOLF’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WEREWOLF’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WINTER_WOLF_CUB’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WARG’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WINTER_WOLF’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HELL_HOUND_PUP’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HELL_HOUND’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GAS_SPORE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FLOATING_EYE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FREEZING_SPHERE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FLAMING_SPHERE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SHOCKING_SPHERE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KITTEN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HOUSECAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_JAGUAR’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LYNX’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PANTHER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LARGE_CAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TIGER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DISPLACER_BEAST’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GREMLIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GARGOYLE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WINGED_GARGOYLE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HOBBIT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DWARF’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BUGBEAR’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DWARF_LEADER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DWARF_RULER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MIND_FLAYER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MASTER_MIND_FLAYER’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MANES’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HOMUNCULUS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_IMP’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LEMURE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_QUASIT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TENGU’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLUE_JELLY’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SPOTTED_JELLY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_OCHRE_JELLY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOBOLD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LARGE_KOBOLD’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOBOLD_LEADER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOBOLD_SHAMAN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LEPRECHAUN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SMALL_MIMIC’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LARGE_MIMIC’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_MIMIC’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WOOD_NYMPH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WATER_NYMPH’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MOUNTAIN_NYMPH’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GOBLIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HOBGOBLIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORC’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HILL_ORC’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MORDOR_ORC’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_URUK_HAI’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORC_SHAMAN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORC_CAPTAIN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROCK_PIERCER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_IRON_PIERCER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GLASS_PIERCER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROTHE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MUMAK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LEOCROTTA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WUMPUS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TITANOTHERE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BALUCHITHERIUM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MASTODON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SEWER_RAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_RAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RABID_RAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WERERAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROCK_MOLE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WOODCHUCK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CAVE_SPIDER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CENTIPEDE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_SPIDER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SCORPION’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LURKER_ABOVE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TRAPPER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PONY’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WHITE_UNICORN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GRAY_UNICORN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLACK_UNICORN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HORSE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WARHORSE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FOG_CLOUD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DUST_VORTEX’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ICE_VORTEX’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ENERGY_VORTEX’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STEAM_VORTEX’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FIRE_VORTEX’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_LONG_WORM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_PURPLE_WORM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LONG_WORM’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PURPLE_WORM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GRID_BUG’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_XAN’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_YELLOW_LIGHT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLACK_LIGHT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ZRUTY’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_COUATL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ALEAX’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ANGEL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KI_RIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ARCHON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BAT’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_BAT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RAVEN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VAMPIRE_BAT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PLAINS_CENTAUR’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FOREST_CENTAUR’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MOUNTAIN_CENTAUR’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_GRAY_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_GOLD_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_SILVER_DRAGON’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_RED_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_WHITE_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_ORANGE_DRAGON’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_BLACK_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_BLUE_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_GREEN_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_YELLOW_DRAGON’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GRAY_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GOLD_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SILVER_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RED_DRAGON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WHITE_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORANGE_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLACK_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLUE_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GREEN_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_YELLOW_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STALKER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LICHEN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BROWN_MOLD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_YELLOW_MOLD’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GREEN_MOLD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RED_MOLD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SHRIEKER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VIOLET_FUNGUS’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GNOME’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GNOME_LEADER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GNOMISH_WIZARD’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GNOME_RULER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STONE_GIANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HILL_GIANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FIRE_GIANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FROST_GIANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ETTIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STORM_GIANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TITAN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MINOTAUR’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_JABBERWOCK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KEYSTONE_KOP’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOP_SERGEANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOP_LIEUTENANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOP_KAPTAIN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LICH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DEMILICH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MASTER_LICH’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ARCH_LICH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOBOLD_MUMMY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GNOME_MUMMY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORC_MUMMY’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DWARF_MUMMY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ELF_MUMMY’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUMAN_MUMMY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ETTIN_MUMMY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_MUMMY’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RED_NAGA_HATCHLING’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLACK_NAGA_HATCHLING’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GOLDEN_NAGA_HATCHLING’ not
handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GUARDIAN_NAGA_HATCHLING’ not
handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RED_NAGA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLACK_NAGA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GOLDEN_NAGA’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GUARDIAN_NAGA’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_OGRE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_OGRE_LEADER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_OGRE_TYRANT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GRAY_OOZE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BROWN_PUDDING’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GREEN_SLIME’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BLACK_PUDDING’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_QUANTUM_MECHANIC’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GENETIC_ENGINEER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RUST_MONSTER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DISENCHANTER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GARTER_SNAKE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SNAKE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WATER_MOCCASIN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PYTHON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PIT_VIPER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_COBRA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TROLL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ICE_TROLL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROCK_TROLL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WATER_TROLL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_OLOG_HAI’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_UMBER_HULK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VAMPIRE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VAMPIRE_LEADER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VLAD_THE_IMPALER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BARROW_WIGHT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WRAITH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NAZGUL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_XORN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MONKEY’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_APE’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_OWLBEAR’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_YETI’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CARNIVOROUS_APE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SASQUATCH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KOBOLD_ZOMBIE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GNOME_ZOMBIE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORC_ZOMBIE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DWARF_ZOMBIE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ELF_ZOMBIE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUMAN_ZOMBIE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ETTIN_ZOMBIE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GHOUL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_ZOMBIE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SKELETON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STRAW_GOLEM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PAPER_GOLEM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROPE_GOLEM’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GOLD_GOLEM’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LEATHER_GOLEM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WOOD_GOLEM’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FLESH_GOLEM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CLAY_GOLEM’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STONE_GOLEM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GLASS_GOLEM’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_IRON_GOLEM’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUMAN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUMAN_WERERAT’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUMAN_WEREJACKAL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUMAN_WEREWOLF’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ELF’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WOODLAND_ELF’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GREEN_ELF’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GREY_ELF’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ELF_NOBLE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ELVEN_MONARCH’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DOPPELGANGER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SHOPKEEPER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GUARD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PRISONER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORACLE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ALIGNED_CLERIC’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HIGH_CLERIC’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SOLDIER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SERGEANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NURSE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LIEUTENANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CAPTAIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WATCHMAN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WATCH_CAPTAIN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MEDUSA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WIZARD_OF_YENDOR’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CROESUS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GHOST’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SHADE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WATER_DEMON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_AMOROUS_DEMON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HORNED_DEVIL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ERINYS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BARBED_DEVIL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MARILITH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VROCK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HEZROU’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BONE_DEVIL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ICE_DEVIL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NALFESHNEE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PIT_FIEND’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SANDESTIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BALROG’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_JUIBLEX’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_YEENOGHU’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORCUS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GERYON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DISPATER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BAALZEBUB’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ASMODEUS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DEMOGORGON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DEATH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PESTILENCE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_FAMINE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MAIL_DAEMON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DJINNI’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_JELLYFISH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PIRANHA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SHARK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GIANT_EEL’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ELECTRIC_EEL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KRAKEN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NEWT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GECKO’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_IGUANA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BABY_CROCODILE’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LIZARD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CHAMELEON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CROCODILE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SALAMANDER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LONG_WORM_TAIL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ARCHEOLOGIST’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_BARBARIAN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CAVE_DWELLER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HEALER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KNIGHT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MONK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CLERIC’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_RANGER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROGUE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SAMURAI’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TOURIST’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_VALKYRIE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WIZARD’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LORD_CARNARVON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PELIAS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SHAMAN_KARNOV’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HIPPOCRATES’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_KING_ARTHUR’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GRAND_MASTER’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ARCH_PRIEST’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ORION’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MASTER_OF_THIEVES’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LORD_SATO’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_TWOFLOWER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NORN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NEFERET_THE_GREEN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MINION_OF_HUHETOTL’ not handled
in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_THOTH_AMON’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CHROMATIC_DRAGON’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CYCLOPS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_IXOTH’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MASTER_KAEN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NALZOK’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_SCORPIUS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_MASTER_ASSASSIN’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ASHIKAGA_TAKAUJI’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_LORD_SURTUR’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_DARK_ONE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_STUDENT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_CHIEFTAIN’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NEANDERTHAL’ not handled in
switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ATTENDANT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_PAGE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ABBOT’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ACOLYTE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_HUNTER’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_THUG’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_NINJA’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_ROSHI’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_GUIDE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_WARRIOR’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘PM_APPRENTICE’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘NUMMONS’ not handled in switch
[-Wswitch]
makemon.c:34:9: warning: enumeration value ‘NON_PM’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘LOW_PM’ not handled in switch [-Wswitch]
makemon.c:34:9: warning: enumeration value ‘SPECIAL_PM’ not handled in switch
[-Wswitch]
2023-11-23 12:23:09 -05:00
nhmall
2a48859de2 include the PM_ index in mons (permonst)
This is useful for debugging and it allows the index
to be used directly instead of calculated in a
monsndx() function, which has been removed.

I left monsndx() in as a simple short-hand macro for the value
and didn't change the use cases, the reasoning being that this:
    monsndx(mon->data)
is arguably a little easier on the eyes than:
    mon->data->pmidx

LOW_PM, NON_PM, SPECIAL_PM have been included in the 'enum monnums'
now, instead of as individual macro definitions.

I chose to add the pmidx field as an instance of the enum declaration,
because that has very advantageous results in some debuggers, where it is
then shown as:
    pmidx PM_GRAND_MASTER (349) monnums
instead of the less-informative:
    pmidx 349 int

Adding the element count to the extern declaration for mons from:
    'extern struct permonst *mons[];'
to the more specific declaration to that in src/monst.c:
    'extern struct permonst *mons[NUMMONS + 1];'
then allows navigation through the mons array in one of the debuggers.
2023-11-23 12:22:47 -05:00
Alex Smith
99141b3242 Add magic traps to the list of traps marked with victims early
These can generate on dlvl1 and be immediately fatal, so should be
marked to prevent near-unavoidable early game instadeaths.
2023-11-23 16:34:47 +00:00
PatR
300d936fb0 pull request #1146 - choose_classes_menu()
Pull request from argrath would have made sure that an uninitialized
buffer wasn't used after choose_classes_menu() issued an impossible
warning, but there was no point in continuing if bad (or not yet
supported) arguments were passed, so panic instead.  Bypass the pull
request's commit because it would have been immediately replaced.

Closes #1146
2023-11-23 02:39:22 -08:00
nhmall
04082a2033 Remove TEXTCOLOR build option 2023-11-22 16:01:58 -05:00
PatR
c8c963afe6 refine PR #1135 - encumbrance messages
When picking up multiple items (or looting multiple items) in one
operation, only show encumbrance for the first item that causes that
to change instead of complaining about non-zero encumbrance on every
item.  The very first item is treated as if it caused a change, so
you get "you have a little trouble lifting <obj>" even if you were
already burdened, same as before.

Only lightly tested.
2023-11-21 14:59:08 -08:00
nhmall
d00707984b more follow-up from -Wno-missing-field-initializers avoidance 2023-11-20 19:09:02 -05:00
Andrio Celos
e10a648ca9 Code style fix 2023-11-20 13:21:37 -08:00
Andrio Celos
b4aee17578 Use encumbrance prefix in pickup_object when above burdened also 2023-11-20 13:21:36 -08:00
Andrio Celos
f2f4fa06dd Separate messages for becoming burdened and stressed 2023-11-20 13:21:36 -08:00
nhmall
d5b0c9a5a2 some follow-up for -Wno-missing-field-initializers avoidance
I wasn't getting a warning on this line myself, I just had it reported.
Because of that, I can't be certain this fixes it either.
2023-11-20 16:12:28 -05:00
PatR
d49e923986 engraving #whatis bit
The symbol/tile renaming for engravings made this unnecessary.
2023-11-20 12:26:51 -08:00
nhmall
033c6981d8 some minor files.c cleanup 2023-11-20 14:59:03 -05:00
nhmall
2f167a4672 allow clean build without using -Wno-missing-field-initializers 2023-11-20 14:25:09 -05:00
PatR
490b60da4d whatis fix for boulders
In the past couple of days the code for '/' and ';' to examine
objects was changed to handle ROCK_CLASS differently (as part of
revising looking at map spots showing the engraving symbol).  It
could potentially set up a static buffer in the object classes loop
and then overwrite that when processing another class.  I couldn't
trigger any feedback anomalies, even when changing bouldersym to
various values including class characters both before and after '`',
but this redoes the suspect code to make it more robust.

Also, refine the test for whether a screen symbol matches an object
symbol.
2023-11-20 00:29:16 -08:00
Alex Smith
86c29f5b47 Allow identifying stackable items by comparison to identical items
NetHack has historically had problems (both in terms of interface
and in terms of gameplay exploits) caused by unidentified items
not stacking with identified items.  The 3.7 change to cause items
picked up by monsters to become unidentified has exacerbated this,
e.g. there's an undesirable strategy in which players give
ammunition to hostile monsters in order to unidentify it, allowing
it to stack with other unidentified ammunition so that the whole
stack can be enchanted with a single scroll.

This commit makes it possible to stack items with different
identification statuses (unles Blind), in effect causing the
unidentified items to be identified by comparing them to the
identified items (this is consistent with the mechanic via which
two stacks of unidentified items can be determined to be the same
as each other).  The hope is that this will prevent any gain from
exploits involving intentionally unidentifying (or intentionally
failing to identify) items, that it will prevent interface clutter
caused by (e.g.) a Ranger's main projectiles becoming partially
unidentified as a nymph picks them up and subsequently failing to
stack, and that it will reduce the incentive to backtrack to an
altar to merge, e.g., a stack of formally-known-uncursed and a
stack of informally-known-uncursed food rations to stack.
2023-11-19 01:21:53 +00:00
PatR
ed102b3b81 comment typo 2023-11-18 11:57:30 -08:00
PatR
1fc56e4be8 new bugs - implement 'whatis' of engravings
'/ e' (or '/ `') lists nearby engravings (including headstones) that
  the hero has read or felt (even if currently covered up) or can see
  on the map;
'/ E' (or '/ |') lists all such on the level.

If the hero remembers an engraving and then monsters scuff it out of
existence, it will magically disappear from the list of remembered
engravings when deleted.  I don't think that's worth bothering with.

[During testing, my pet seemed extremely reluctant to step on a
corridor engraving.  That could have been coincidence but it seemed
to keep happening until I moved so close that it had no choice.  I
wasn't carrying tripe.]
2023-11-18 00:35:30 -08:00
PatR
389f03e90e farlook of engravings
Report headstone engraving when using farlook to examine a grave:
| a grave (grave whose headstone reads: "foo")
or
| a grave (grave whose headstone you haven't read)

Make the farlook of ordinary engravings operate more like farlook of
other things:
| a boulder or a statue or an engraving (engraving with text: "bar")
rather than
| a boulder or a statue or an engraving with text: "bar"
The "or a statue" phrase will now be suppressed because statues aren't
shown as backtick anymore, so the parenthesized form isn't quite as
long as it would otherwise have been.  If OPTIONS=boulder:symbol is in
use, the "a boulder" part will be gone too.
| an engraving (engraving with text: "bar")
or
| an engraving (engraving that you haven't read)

Make quicklook include engraving text.  It's quick because it doesn't
ask the player to pick additional spots or whether to look up relevant
data.base quote, not because it skimps on useful information.

Autodescribe still does not include engraving text.
2023-11-17 17:36:04 -08:00
nhmall
a784a06cf6 remove a band from an earlier test 2023-11-17 14:22:40 -05:00
nhmall
d7ed474fa7 2nd follow-up to alternative fix for menu search (':') 2023-11-17 14:13:58 -05:00
nhmall
0a13d759a3 more bot() tinkering 2023-11-17 09:47:39 -05:00
nhmall
7903849939 follow-up: program_state variables are int 2023-11-17 08:42:43 -05:00
nhmall
8d1001842d alternative fix for menu search (':')
This avoids clearing core context variables within a window port.
2023-11-17 08:37:54 -05:00