Skip to content

Commit

Permalink
Previous hero rising as undead in bones retains intrinsics
Browse files Browse the repository at this point in the history
  • Loading branch information
paxed committed Dec 15, 2023
1 parent b368d4f commit 3c421da
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 0 deletions.
1 change: 1 addition & 0 deletions doc/fixes3-7-0.txt
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions include/extern.h
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions src/bones.c
Expand Up @@ -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
Expand Down
13 changes: 13 additions & 0 deletions src/mondata.c
Expand Up @@ -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
Expand Down

0 comments on commit 3c421da

Please sign in to comment.