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:
@@ -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
|
||||
|
||||
13
src/trap.c
13
src/trap.c
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user