fix #H5082 - growing into opposite sex monster
When a female dwarf grows (via level gain) into a dwarf lord, it changes sex as well as base monster form because all dwarf lords are male. The earlier fix for #H4276 (16-Mar-2016, to give an alternate grow-up message acknowledging the change) used the wrong monster form (monst's old one instead of new one).
This commit is contained in:
@@ -391,6 +391,9 @@ when picking a destination for #jump, '$' to show valid dest. is more accurate
|
|||||||
enchant armor gave "your pair of boots/gloves glow", should have been "glows"
|
enchant armor gave "your pair of boots/gloves glow", should have been "glows"
|
||||||
when autopickup is overridden in a shop, always-pick-up exceptions and
|
when autopickup is overridden in a shop, always-pick-up exceptions and
|
||||||
pickup_thrown still picked unpaid items up
|
pickup_thrown still picked unpaid items up
|
||||||
|
the fix for giving an alternate grow up message when a monster becomes a new
|
||||||
|
form with the opposite sex (female gnome into male gnome lord, for
|
||||||
|
example) had the logic wrong
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
+5
-4
@@ -1793,11 +1793,11 @@ struct monst *mtmp, *victim;
|
|||||||
else if (lev_limit > 49)
|
else if (lev_limit > 49)
|
||||||
lev_limit = (ptr->mlevel > 49 ? 50 : 49);
|
lev_limit = (ptr->mlevel > 49 ? 50 : 49);
|
||||||
|
|
||||||
/* new form might force gender change */
|
|
||||||
fem = is_male(ptr) ? 0 : is_female(ptr) ? 1 : mtmp->female;
|
|
||||||
|
|
||||||
if ((int) ++mtmp->m_lev >= mons[newtype].mlevel && newtype != oldtype) {
|
if ((int) ++mtmp->m_lev >= mons[newtype].mlevel && newtype != oldtype) {
|
||||||
ptr = &mons[newtype];
|
ptr = &mons[newtype];
|
||||||
|
/* new form might force gender change */
|
||||||
|
fem = is_male(ptr) ? 0 : is_female(ptr) ? 1 : mtmp->female;
|
||||||
|
|
||||||
if (mvitals[newtype].mvflags & G_GENOD) { /* allow G_EXTINCT */
|
if (mvitals[newtype].mvflags & G_GENOD) { /* allow G_EXTINCT */
|
||||||
if (canspotmon(mtmp))
|
if (canspotmon(mtmp))
|
||||||
pline("As %s grows up into %s, %s %s!", mon_nam(mtmp),
|
pline("As %s grows up into %s, %s %s!", mon_nam(mtmp),
|
||||||
@@ -1829,8 +1829,9 @@ struct monst *mtmp, *victim;
|
|||||||
set_mon_data(mtmp, ptr, 1); /* preserve intrinsics */
|
set_mon_data(mtmp, ptr, 1); /* preserve intrinsics */
|
||||||
newsym(mtmp->mx, mtmp->my); /* color may change */
|
newsym(mtmp->mx, mtmp->my); /* color may change */
|
||||||
lev_limit = (int) mtmp->m_lev; /* never undo increment */
|
lev_limit = (int) mtmp->m_lev; /* never undo increment */
|
||||||
|
|
||||||
|
mtmp->female = fem; /* gender might be changing */
|
||||||
}
|
}
|
||||||
mtmp->female = fem; /* gender might be changing */
|
|
||||||
|
|
||||||
/* sanity checks */
|
/* sanity checks */
|
||||||
if ((int) mtmp->m_lev > lev_limit) {
|
if ((int) mtmp->m_lev > lev_limit) {
|
||||||
|
|||||||
Reference in New Issue
Block a user