Permalink
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...
1 parent 24ecccd commit 2453dd5a9e4fbc48f66995b5183eafff2f3b5999 bhaak committed Apr 1, 2012
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
@@ -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
@@ -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
@@ -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,17 +290,26 @@ 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 */
}
/* the quest leader might have passed through the portal into the
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
@@ -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;
}

0 comments on commit 2453dd5

Please sign in to comment.