Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

You can now kill your quest leader to open the portal to the downstai…

…rs. (from SporkHack)

git-svn-id: https://unnethack.svn.sourceforge.net/svnroot/unnethack/trunk@1015 f1e491ac-5ded-4967-80bf-9f4855be876a
  • Loading branch information...
commit 2453dd5a9e4fbc48f66995b5183eafff2f3b5999 1 parent 24ecccd
bhaak authored
Showing with 43 additions and 27 deletions.
  1. +8 −10 dat/quest.txt
  2. +2 −0  src/mcastu.c
  3. +32 −16 src/quest.c
  4. +1 −1  src/zap.c
View
18 dat/quest.txt
@@ -359,7 +359,7 @@ need of your help. There is a great quest you must undertake.
%Cc Bar 00018
"Pah! You have betrayed the gods, %p. You will never attain
the glory which you aspire to. Your failure to follow the true path has
-closed this future to you.
+closed that future to you.
"I will protect these people as best I can, but soon %n will overcome
me and destroy all who once called you %s. Now begone!"
@@ -619,8 +619,7 @@ ask you to undertake."
"Ah, %p. Are you finally ready?"
%E
%Cc Cav 00018
-"%pC! You have sealed our fate. You seem unable to reform yourself,
-so I must select another to take your place.
+"%pC! You have sealed our fate by being unable to reform yourself.
"Begone from %H! You have betrayed us by choosing
the path of the %C over the true path of the %L.
@@ -2138,7 +2137,7 @@ think me as stupid as your behavior. I warn you not to try my patience."
%Cc Rog 00018
"Well %gp, it looks like our friend has forgotten who is the boss
around here. Our friend seems to think that %rp have been put in
-charge. Wrong. DEAD WRONG!"
+charge. Wrong. DEAD wrong, in fact..."
Your sudden shift in surroundings prevents you from hearing the end
of %ls curse.
@@ -2884,8 +2883,8 @@ made changes to become ready for this task..."
%E
%Cc Val 00018
"No, %p. Your fate is sealed. I must cast about for another
-champion. Begone from my presence, and never return. Know this, that
-you shall never succeed in this life, and Valhalla is denied to you."
+champion. Begone from my presence, and never return. Know that
+Valhalla shall be denied to you."
%E
%Cc Val 00019
"I see you and %n fighting, %p. But you are not prepared and
@@ -3462,10 +3461,9 @@ essential in locating the Amulet of Yendor."
My allegiance to %d holds fast and I cannot condone or accept what you
have done.
-Leave this place. You shall never set foot at %H again.
-That which you seek is now lost forever, for without the Bell of Opening,
-you will never be able to enter the place where he who has the Amulet
-resides.
+Leave this place. You shall never set foot beyond %H again as long as I
+draw breath... and without the Bell of Opening, you will never be able to
+enter the place where he who has the Amulet resides.
Go now! You are banished from this place.
%E
View
2  src/mcastu.c
@@ -214,6 +214,8 @@ castmu(mtmp, mattk, thinks_it_foundyou, foundyou)
if (mattk->adtyp == AD_SPEL || mattk->adtyp == AD_CLRC) {
mtmp->mspec_used = 10 - mtmp->m_lev;
if (mtmp->mspec_used < 2) mtmp->mspec_used = 2;
+ /* your quest leader is a badass and does not need recharge time */
+ if (mtmp->data->msound == MS_LEADER) mtmp->mspec_used = 0;
}
/* monster can cast spells, but is casting a directed spell at the
View
48 src/quest.c
@@ -95,8 +95,11 @@ artitouch()
boolean
ok_to_quest()
{
- return((boolean)((Qstat(got_quest) || Qstat(got_thanks)))
- && (is_pure(FALSE) > 0));
+ if (((Qstat(got_quest) || Qstat(got_thanks)) && is_pure(FALSE) > 0) ||
+ quest_status.leader_is_dead) {
+ return TRUE;
+ }
+ return FALSE;
}
STATIC_OVL boolean
@@ -247,7 +250,11 @@ chat_with_leader()
qt_pager(QT_FIRSTLEADER);
Qstat(met_leader) = TRUE;
Qstat(not_ready) = 0;
- } else qt_pager(QT_NEXTLEADER);
+ } else if (!Qstat(pissed_off)) {
+ qt_pager(QT_NEXTLEADER);
+ } else {
+ verbalize("Your bones shall serve to warn others.");
+ }
/* the quest leader might have passed through the portal into
the regular dungeon; none of the remaining make sense there */
if (!on_level(&u.uz, &qstart_level)) return;
@@ -257,18 +264,18 @@ chat_with_leader()
exercise(A_WIS, TRUE);
expulsion(FALSE);
} else if(is_pure(TRUE) < 0) {
- com_pager(QT_BANISHED);
- expulsion(TRUE);
+ /* don't keep lecturing once the player's been kicked out once. */
+ if (!Qstat(pissed_off)) {
+ com_pager(QT_BANISHED);
+ Qstat(pissed_off) = 1;
+ expulsion(FALSE);
+ }
} else if(is_pure(TRUE) == 0) {
+ /* Don't end the game for too many tries anymore, that's silly */
qt_pager(QT_BADALIGN);
- if(Qstat(not_ready) == MAX_QUEST_TRIES) {
- qt_pager(QT_LASTLEADER);
- expulsion(TRUE);
- } else {
- Qstat(not_ready)++;
- exercise(A_WIS, TRUE);
- expulsion(FALSE);
- }
+ Qstat(not_ready) = 1;
+ exercise(A_WIS, TRUE);
+ expulsion(FALSE);
} else { /* You are worthy! */
qt_pager(QT_ASSIGNQUEST);
exercise(A_WIS, TRUE);
@@ -283,6 +290,12 @@ leader_speaks(mtmp)
{
/* maybe you attacked leader? */
if(!mtmp->mpeaceful) {
+ if (!Qstat(pissed_off)) {
+ /* again, don't end it permanently if the leader gets angry
+ * since you're going to have to kill him to go questing... :)
+ * ...but do only show this crap once. */
+ qt_pager(QT_LASTLEADER);
+ }
Qstat(pissed_off) = TRUE;
mtmp->mstrategy &= ~STRAT_WAITMASK; /* end the inaction */
}
@@ -290,10 +303,13 @@ leader_speaks(mtmp)
regular dungeon; if so, mustn't perform "backwards expulsion" */
if (!on_level(&u.uz, &qstart_level)) return;
+ if(!Qstat(pissed_off)) chat_with_leader();
+
+ /* leader might have become pissed during the chat */
if(Qstat(pissed_off)) {
- qt_pager(QT_LASTLEADER);
- expulsion(TRUE);
- } else chat_with_leader();
+ mtmp->mstrategy &= ~STRAT_WAITMASK;
+ mtmp->mpeaceful = FALSE;
+ }
}
STATIC_OVL void
View
2  src/zap.c
@@ -3083,7 +3083,7 @@ struct obj **ootmp; /* to return worn armor for caller to disintegrate */
break;
}
if (nonliving(mon->data) || is_demon(mon->data) ||
- resists_magm(mon)) { /* similar to player */
+ resists_magm(mon) || mon->data->msound == MS_LEADER) { /* similar to player */
sho_shieldeff = TRUE;
break;
}
Please sign in to comment.
Something went wrong with that request. Please try again.