Check the various uarm, uwep, and so forth pointers to make sure that they point to items in hero's inventory and that those items have the corresponding W_ARM, W_WEP, &c bit set in their owornmask field. Also check whether any other items in inventory have the same bit set. [Some of this is already handled by sanity_check_worn() in mkobj.c.] Also validate two-weapon combat mode. I don't recall ever seeing any problems reported about it though. Does not validate ball and chain. Those should have their own sanity checks that validate a bunch of other stuff besides just worn slots. They already get some checking by the normal object tests. This works ok with 'sanity_check' set and items worn and wielded normally. The only insane situation tested was by reverting the confused-looting-with-quivered-gold fix from earlier today. I haven't used a debugger to force other such problems so this isn't very thoroughly tested.
162 KiB
162 KiB