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.
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.
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.
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.
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]
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.
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
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.
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.
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.
'/ 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.]
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.
When using the 'm' prefix with #overview to get a menu of visited
levels and then picking one to annotate, replace the generic prompt
"what do you want to call this dungeon level?" with more specific
location information. Location details are visible while within the
menu but as soon as you choose something that goes away.
Sometimes I annotate a level with a note like "watch out, chameleon
below", which is useful to remind myself of some danger or thing to
remember when returning to the level -- but if saving and restoring on
the level itself there's no reminder of that annotation. If you restore
on a level with an annotation, print it as part of the "welcome back"
message.
Apparently, color option is meant to apply only to the map, so doesn't
need to appear here, and the reference on the previous commit was wrong.
<curses guicolor>
on: map, menu items, menu headings, menu prompt/title can all feature color, as can
menu borders, menu-selector letters.
off: map, menu headings, menu prompt and menu items (menucolors on) can still feature color,
but all other non-map features such as menu borders, menu-selector
letters will not have color.
<menucolors>
on: menu items can have colors if they match one of the regex in config
file; menu headings, menu prompt can also be in color (based on menu_headings option).
off: menu items won't have colors, but menu headings, menu prompt still
will feature colors (based on menu_headings option); those are not impacted by turning
off menucolors.
<color>
off: map, menu items, menu headings, menu prompt/title all, everything should have color suppressed.
<curses guicolor>
on: map, menu items, menu headings, menu prompt/title can all feature color, as can
menu borders, menu-selector letters.
off: map, menu headings, menu prompt and menu items (menucolors on) can still feature color,
but all other non-map features such as menu borders, menu-selector
letters will not have color.
<menucolors>
on: menu items can have colors if they match one of the regex in config
file; menu headings, menu prompt can also be in color (based on menu_headings option).
off: menu items won't have colors, but menu headings, menu prompt still
will feature colors (based on menu_headings option); those are not impacted by turning
off menucolors.
It was impossible to select entry 62 in the allopt[] array
from the 'm O' menu, apparently because of a collision with
the ascii value of a question mark.
Entry 62 was currently the guicolor option.
This implements the mechanics to use the ctrl_nhwindow() interface
capability to pass down a setting change from the core to the active
window port, without resorting to accessing a core global variable
from within the window port, and without altering the interface..
The passed setting is honored in the tty and curses window ports.
X11 and mswin receive and store the values, but no implementation
to change the menu prompt style is there yet.
Qt does not store the values or have an implementation.
The setting change is done in allmain.c immediately after
creating the WIN_INVEN window.
If the value is "no color&none" report it as "no-color&none" in 'm O'
and for #saveoptions.
Allow "OPTIONS=menu_headings" without any color or attribute value to
mean "no-color&inverse" as it once did before the player could choose
which attribute or color was supported, and matching the default used
when 'menu_headings' hasn't been specified at all.
Accept "OPTIONS=!menu_headings", meaning "no-color&none".
Explicitly reject "OPTIONS=!menu_headings:anything". It was rejecting
that due to blanket rejection of negated option, but reporting "can't
both have a value and be negated" whether there was any value present
or not.
For preselected menu entries when interactively choosing a new value
via the submenu of 'm O', use the current color and attribute rather
than NO_COLOR and ATR_NONE.
Simplify suppression of highlighting for menu header lines during end
of game disclosure. Didn't actually affect as many things as I was
expecting.
Plus a bit left out of the optfn_dogname() parsing commit.
Get rid of all the unnecessary 'if (!opts)' checks if the optfn_xx()
routines.
Replace the replicated contents of optfn_catname(), optfn_dogname(),
and optfn_horsename() with a common routine. optfn_dogname() was
different from the other two for no discernable reason. Player can
no longer assign the name "none" to an initial pet via RC file,
although there's nothing preventing doing so with C/#name command.
The submenu of 'm O' for recently added option 'perminv_mode' didn't
have color 0 changed to NO_COLOR. On tty the entries came out blue,
on X11 they were nearly invisible. Qt and curses didn't seem to care.
I checked all the add_menu() calls in src/*.c and managed to refrain
from the impulse to reformat, mostly.