Bones loading was only checking to see if a
monster was marked extinct, it wasn't adding
up the born count of a species in the current
game with the number of that species on the
bones level being loaded. That made it possible
to exceed the correct number of nazgul and
erinys via bones.
This adds a common routine called propagate()
that makemon() and restmonchn(ghostly) share,
for incrementing the born count and checking for
extinction, etc.
When a bones level is loaded, restmonchn()
will flag an illegal monster (duplicated unique,
or too many of a species) by setting the
individual monster's mhpmax to the cookie
value DEFUNCT_MONSTER. Before getbones() finishes
loading the bones level, it will purge those
monsters from the chain.
As reported, if you're twoweaponing and die, your secondary weapon may
become cursed and drop. But, the bones file code is dropping everything
and tries to drop it again, causing a panic. drop_upon_death just clears
things out, so follow suit for uswapwep.
Forwarded from the newsgroup: when a monster gets hit by wand or
spell of polymorph, any armor that fell off was protected from being
hit by that same zap, but a dropped weapon wasn't. Nor was the whole
dropped inventory in the case where the monster is killed by system
shock rather than transformed. Protect its entire inventory.
Michael pointed out that bones will never occur while swallowed because
makemon of the ghost will always fail. I suggested that the outcome made
sense, since your body may be digested, torn apart, whatever. But, there
was no explicit check for this to make it obvious this was occuring.
Pat added some error information to create_levelfile.
This does the same for create_bonesfile, but the
only place it is logged is in the paniclog, unless
you're in wizard mode. If bones file creation is
silently failing for someone and they aren't getting
bones files, this provides a way to diagnose why.
Update the other trickery situation. I don't know how I managed
to miss this. The disadvantage of suppressing extern.h from normal
dependencies I guess.