montraits usage (trunk only)
Move a couple of recently added corpse revival/statue animation fixups into montraits() so that its callers don't have to worry about them anymore.
This commit is contained in:
+2
-12
@@ -419,15 +419,8 @@ int *fail_reason;
|
|||||||
/* restore a petrified monster */
|
/* restore a petrified monster */
|
||||||
cc.x = x, cc.y = y;
|
cc.x = x, cc.y = y;
|
||||||
mon = montraits(statue, &cc);
|
mon = montraits(statue, &cc);
|
||||||
if (mon) {
|
if (mon && mon->mtame && !mon->isminion)
|
||||||
if (mon->mtame && !mon->isminion)
|
wary_dog(mon, TRUE);
|
||||||
wary_dog(mon, TRUE);
|
|
||||||
/* might be bringing quest leader back to life */
|
|
||||||
if (quest_status.leader_is_dead &&
|
|
||||||
/* leader_is_dead implies that leader_m_id is valid */
|
|
||||||
mon->m_id == quest_status.leader_m_id)
|
|
||||||
quest_status.leader_is_dead = FALSE;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/* statues of unique monsters from bones or wishing end
|
/* statues of unique monsters from bones or wishing end
|
||||||
up here (cant_revive() sets mnum to be doppelganger;
|
up here (cant_revive() sets mnum to be doppelganger;
|
||||||
@@ -477,9 +470,6 @@ int *fail_reason;
|
|||||||
/* mimic statue becomes seen mimic; other hiders won't be hidden */
|
/* mimic statue becomes seen mimic; other hiders won't be hidden */
|
||||||
if (mon->m_ap_type) seemimic(mon);
|
if (mon->m_ap_type) seemimic(mon);
|
||||||
else mon->mundetected = FALSE;
|
else mon->mundetected = FALSE;
|
||||||
/* when reanimating a stoned monster, protection from shape changers
|
|
||||||
might be different now than it was when the monster was petrified */
|
|
||||||
if (use_saved_traits) restore_cham(mon);
|
|
||||||
|
|
||||||
if ((x == u.ux && y == u.uy) || cause == ANIMATE_SPELL) {
|
if ((x == u.ux && y == u.uy) || cause == ANIMATE_SPELL) {
|
||||||
const char *comes_to_life = nonliving(mon->data) ?
|
const char *comes_to_life = nonliving(mon->data) ?
|
||||||
|
|||||||
@@ -472,6 +472,11 @@ coord *cc;
|
|||||||
(we cleared it when loading bones) */
|
(we cleared it when loading bones) */
|
||||||
if (!mtmp2->m_id)
|
if (!mtmp2->m_id)
|
||||||
mtmp2->m_id = mtmp->m_id;
|
mtmp2->m_id = mtmp->m_id;
|
||||||
|
/* might be bringing quest leader back to life */
|
||||||
|
else if (quest_status.leader_is_dead &&
|
||||||
|
/* leader_is_dead implies that leader_m_id is valid */
|
||||||
|
mtmp2->m_id == quest_status.leader_m_id)
|
||||||
|
quest_status.leader_is_dead = FALSE;
|
||||||
mtmp2->mx = mtmp->mx;
|
mtmp2->mx = mtmp->mx;
|
||||||
mtmp2->my = mtmp->my;
|
mtmp2->my = mtmp->my;
|
||||||
mtmp2->mux = mtmp->mux;
|
mtmp2->mux = mtmp->mux;
|
||||||
@@ -507,6 +512,10 @@ coord *cc;
|
|||||||
mtmp2->mstun = 0;
|
mtmp2->mstun = 0;
|
||||||
mtmp2->mconf = 0;
|
mtmp2->mconf = 0;
|
||||||
replmon(mtmp,mtmp2);
|
replmon(mtmp,mtmp2);
|
||||||
|
|
||||||
|
/* in case Protection_from_shape_changers is different
|
||||||
|
now than it was when the traits were stored */
|
||||||
|
restore_cham(mtmp2);
|
||||||
}
|
}
|
||||||
return mtmp2;
|
return mtmp2;
|
||||||
}
|
}
|
||||||
@@ -633,15 +642,8 @@ register struct obj *obj;
|
|||||||
|
|
||||||
xy.x = x; xy.y = y;
|
xy.x = x; xy.y = y;
|
||||||
mtmp = montraits(obj, &xy);
|
mtmp = montraits(obj, &xy);
|
||||||
if (mtmp) {
|
if (mtmp && mtmp->mtame && !mtmp->isminion)
|
||||||
if (mtmp->mtame && !mtmp->isminion)
|
wary_dog(mtmp, TRUE);
|
||||||
wary_dog(mtmp, TRUE);
|
|
||||||
/* might be reviving quest leader */
|
|
||||||
if (quest_status.leader_is_dead &&
|
|
||||||
/* _is_dead implies that _m_id is valid */
|
|
||||||
mtmp->m_id == quest_status.leader_m_id)
|
|
||||||
quest_status.leader_is_dead = FALSE;
|
|
||||||
}
|
|
||||||
} else
|
} else
|
||||||
mtmp = makemon(&mons[montype], x, y,
|
mtmp = makemon(&mons[montype], x, y,
|
||||||
NO_MINVENT|MM_NOWAIT|MM_NOCOUNTBIRTH);
|
NO_MINVENT|MM_NOWAIT|MM_NOCOUNTBIRTH);
|
||||||
@@ -677,12 +679,6 @@ register struct obj *obj;
|
|||||||
mtmp->mhp = eaten_stat(mtmp->mhp, obj);
|
mtmp->mhp = eaten_stat(mtmp->mhp, obj);
|
||||||
/* track that this monster was revived at least once */
|
/* track that this monster was revived at least once */
|
||||||
mtmp->mrevived = 1;
|
mtmp->mrevived = 1;
|
||||||
/* in case this was a shapechanger corpse and
|
|
||||||
Protection_from_shape_changers happens to be
|
|
||||||
different now than it was when the monster
|
|
||||||
was killed (probably a no-op here since
|
|
||||||
KEEPTRAITS() doesn't include shapechangers) */
|
|
||||||
restore_cham(mtmp);
|
|
||||||
|
|
||||||
if (recorporealization) {
|
if (recorporealization) {
|
||||||
/* If mtmp is revivification of former tame ghost*/
|
/* If mtmp is revivification of former tame ghost*/
|
||||||
|
|||||||
Reference in New Issue
Block a user