Fixes #177 The monst struct has 'mintrinsics' field which attempts to handle both mon->data->mresists and extrinsics supplied by worn armor, but polymorph/shape-change was clobbering the extrinsics side of things. Potentially fixing that by changing newcham() to use set_mon_data(...,1) instead of (...,0) solved that but exposed two other bugs. Intrinsics from the old form carried over to the new form along with extrinsics from worn armor, and update_mon_intrinsics() for armor being destroyed or dropped only worked as intended if the armor->owornmask was cleared beforehand--some places were clearing it after, so extrinsics from worn gear could persist even after that gear was gone. So, fixing the set_mon_data() call in newcham() was a no go. This fixes update_mon_intrinsics() and adopts the suggested code from github pull request #177 to have mon->mintrinsics only handle worn gear instead of trying to overload innate intrinsics with that. This is a superset of that; the flag argument to set_mon_data() is gone and mon->mintrinsics has been renamed mon->mextrinsics. (The routine update_mon_intrinsics() ought to be renamed too, but I didn't do that.)
107 KiB
107 KiB