Previous hero rising as undead in bones retains intrinsics

This commit is contained in:
Pasi Kallinen
2023-12-15 16:03:26 +02:00
parent b368d4fbe9
commit 3c421da746
4 changed files with 16 additions and 0 deletions

View File

@@ -1331,6 +1331,7 @@ avoid impossible "trapped without a trap (fmon)" from 'sanity_check' when a
demons cannot be frightened by showing them their reflection
HP regeneration formula has changed, primarily to be less fast in the endgame
riding negates stealth unless the steed is flying
previous hero rising as undead in bones retains intrinsics
Fixes to 3.7.0-x General Problems Exposed Via git Repository

View File

@@ -1799,6 +1799,7 @@ unsigned long cvt_adtyp_to_mseenres(uchar);
unsigned long cvt_prop_to_mseenres(uchar);
extern void monstseesu(unsigned long);
extern void monstunseesu(unsigned long);
extern void give_u_to_m_resistances(struct monst *) NONNULLARG1;
extern boolean resist_conflict(struct monst *) NONNULLARG1;
extern boolean mon_knows_traps(struct monst *, int) NONNULLARG1;
extern void mon_learns_traps(struct monst *, int) NONNULLARG1;

View File

@@ -486,6 +486,7 @@ savebones(int how, time_t when, struct obj *corpse)
u.ugrave_arise = NON_PM; /* in case caller cares */
return;
}
give_u_to_m_resistances(mtmp);
mtmp = christen_monst(mtmp, gp.plname);
newsym(u.ux, u.uy);
/* ["Your body rises from the dead as an <mname>..." used

View File

@@ -1480,6 +1480,19 @@ monstunseesu(unsigned long seenres)
m_clearseenres(mtmp, seenres);
}
/* give monster mtmp the same intrinsics hero has */
void
give_u_to_m_resistances(struct monst *mtmp)
{
const int u_intrins[] = { FIRE_RES, COLD_RES, SLEEP_RES, DISINT_RES, SHOCK_RES, POISON_RES, ACID_RES, STONE_RES };
const int m_intrins[] = { MR_FIRE, MR_COLD, MR_SLEEP, MR_DISINT, MR_ELEC, MR_POISON, MR_ACID, MR_STONE };
int i;
for (i = 0; i < SIZE(u_intrins); i++)
if (u.uprops[u_intrins[i]].intrinsic & INTRINSIC)
mtmp->mintrinsics |= m_intrins[i];
}
/* Can monster resist conflict caused by hero?
High-CHA heroes will be able to 'convince' monsters