animating quest guardian statues

Also a related bug: the guard against animating a unique
monster via tossing a statue onto a statue trap location, was
causing stone to flesh to silently ignore any statue of a unique
monster which seemed very uncharacteristic of the spell.

After this patch, statues of quest guardians and statues of
unique monsters will animate as shape-shifters posing as those
monsters, not the monsters themselves.
This commit is contained in:
nethack.allison
2003-08-19 02:52:03 +00:00
parent f97f7a0618
commit d72700c070
2 changed files with 13 additions and 2 deletions

View File

@@ -130,6 +130,8 @@ there was no check for iron bars in dokick() so it defaulted to "empty space"
if you couldn't see the rat created in a sink for some reason other than
blindness, you would get "Eek there's it in the sink."
digging a pit while stuck in the floor should always free the player
quest guardians can no longer be created via stone-to-flesh on their statue
stone-to-flesh no longer silently ignored by a statue of a unique monster
Platform- and/or Interface-Specific Fixes

View File

@@ -433,11 +433,20 @@ int *fail_reason;
* [detected or guessed] location of a statue trap. Normally the
* uppermost statue is the one which would be activated.
*/
if (mptr->geno & G_UNIQ) {
if ((mptr->geno & G_UNIQ) && cause != ANIMATE_SPELL) {
if (fail_reason) *fail_reason = AS_MON_IS_UNIQUE;
return (struct monst *)0;
}
mon = makemon(mptr, x, y, (cause == ANIMATE_SPELL) ?
if (cause == ANIMATE_SPELL &&
((mptr->geno & G_UNIQ) || mptr->msound == MS_GUARDIAN)) {
/* Statues of quest guardians or unique monsters
* will not stone-to-flesh as the real thing.
*/
mon = makemon(&mons[PM_DOPPELGANGER], x, y,
NO_MINVENT|MM_NOCOUNTBIRTH|MM_ADJACENTOK);
if (mon) (void) newcham(mon, mptr, FALSE, FALSE);
} else
mon = makemon(mptr, x, y, (cause == ANIMATE_SPELL) ?
(NO_MINVENT | MM_ADJACENTOK) : NO_MINVENT);
}