diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index eef59eac7..cc4a5883e 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1983,6 +1983,9 @@ fix regression of a post-3.6 fix: if 2 Wizards of Yendor were in play and 1 sometimes a repeat count from the preceding command carried over to most recent one when using do-again (^A); if the most recent one was an extended command, the spurious repeat was for '#' +if peaceful monsters react when seeing hero attack a peaceful monster, don't + have quest guardians run away; also, quest leader only becomes angry + if the monster being attacked is a quest guardian Fixes to 3.7.0-x Platform and/or Interface Problems Exposed Via git Repository diff --git a/src/mon.c b/src/mon.c index a436dc897..b7114e9d9 100644 --- a/src/mon.c +++ b/src/mon.c @@ -4050,14 +4050,20 @@ peacefuls_respond(struct monst *mtmp) } } /* shopkeepers and temple priests might gasp in - surprise, but they won't become angry here */ - if (mon->isshk || mon->ispriest) { + surprise, but they won't become angry here; + quest leader will only get angry if hero attacks + own quest guardians */ + if (mon->isshk || mon->ispriest + || (mon->data == &mons[quest_info(MS_LEADER)] + && mtmp->data != &mons[gu.urole.guardnum])) { if (exclaimed) pline_mon(mon, "%s%s", buf, " then shrugs."); continue; } - if (mon->data->mlevel < rn2(10)) { + if (mon->data->mlevel < rn2(10) + /* don't have quest guardians turn to flee */ + && (mon->data != &mons[gu.urole.guardnum])) { alreadyfleeing = (mon->mflee || mon->mfleetim); monflee(mon, rn2(50) + 25, TRUE, !exclaimed); if (exclaimed) { @@ -4075,6 +4081,7 @@ peacefuls_respond(struct monst *mtmp) * perhaps reduce tameness? */ } else { mon->mpeaceful = 0; + mon->mstrategy &= ~STRAT_WAITMASK; adjalign(-1); if (!exclaimed) pline_mon(mon, "%s gets angry!", Monnam(mon));