Unlock your quest by killing your quest leader
Allow killing your quest leader, just to make games winnable if you converted before doing the quest. Boost the quest leaders and give them some equipment. King Arthur gets Excalibur. Killing quest leader gives really bad luck and makes your god angry at you, and killing quest guardians gives smaller penalties. This is based on both the EvilHack implementation by k21971 <keith.simpson1971@gmail.com>, and xNetHack implementation by copperwater <aosdict@gmail.com>.
This commit is contained in:
12
src/mon.c
12
src/mon.c
@@ -2205,6 +2205,8 @@ m_detach(
|
||||
wizdead();
|
||||
if (mtmp->data->msound == MS_NEMESIS)
|
||||
nemdead();
|
||||
if (mtmp->data->msound == MS_LEADER)
|
||||
leaddead();
|
||||
if (mtmp->m_id == g.stealmid)
|
||||
thiefdead();
|
||||
relobj(mtmp, 0, FALSE);
|
||||
@@ -2926,12 +2928,17 @@ xkilled(
|
||||
/* adjust alignment points */
|
||||
if (mtmp->m_id == g.quest_status.leader_m_id) { /* REAL BAD! */
|
||||
adjalign(-(u.ualign.record + (int) ALIGNLIM / 2));
|
||||
u.ugangr += 7; /* instantly become "extremely" angry */
|
||||
change_luck(-20);
|
||||
pline("That was %sa bad idea...",
|
||||
u.uevent.qcompleted ? "probably " : "");
|
||||
} else if (mdat->msound == MS_NEMESIS) { /* Real good! */
|
||||
adjalign((int) (ALIGNLIM / 4));
|
||||
if (!g.quest_status.killed_leader)
|
||||
adjalign((int) (ALIGNLIM / 4));
|
||||
} else if (mdat->msound == MS_GUARDIAN) { /* Bad */
|
||||
adjalign(-(int) (ALIGNLIM / 8));
|
||||
u.ugangr++;
|
||||
change_luck(-4);
|
||||
if (!Hallucination)
|
||||
pline("That was probably a bad idea...");
|
||||
else
|
||||
@@ -3368,8 +3375,7 @@ setmangry(struct monst* mtmp, boolean via_attack)
|
||||
}
|
||||
|
||||
/* attacking your own quest leader will anger his or her guardians */
|
||||
if (!g.context.mon_moving /* should always be the case here */
|
||||
&& mtmp->data == &mons[quest_info(MS_LEADER)]) {
|
||||
if (mtmp->data == &mons[quest_info(MS_LEADER)]) {
|
||||
struct monst *mon;
|
||||
struct permonst *q_guardian = &mons[quest_info(MS_GUARDIAN)];
|
||||
int got_mad = 0;
|
||||
|
||||
Reference in New Issue
Block a user