// TMW2 Scripts
// Author:
// Jesusalva
// Description:
// Celestia Yeti King's quest. Designed so if you're with 4 players, all 4 can
// summon the Yeti King, helping you while doing the quest by themselves.
// Notes:
// $@GM_OVERRIDE
// Only possible with @set command, overrides the co-op requeriment.
003-1-1,94,21,0 script #DahYetiKing NPC_SUMMONING_CIRC,{
.@q=getq(HurnscaldQuest_Celestia);
if (.@q > 1 && .@q < 99)
setq HurnscaldQuest_Celestia, 1;
if (.@q == 1 && !.inUse) goto L_Summon;
if (!.@q) dispbottom l("I do not know how to trigger this summoning circle.");
end;
L_Summon:
if (countitem(EverburnPowder) < 1 && $EVENT$ != "Celestia") {
dispbottom l("I need to pour the @@ to summon the Yeti King.", getitemlink(EverburnPowder));
end;
}
if (getareausers("003-1-1", 5) < 2 && !$@GM_OVERRIDE) {
dispbottom l("I cannot be alone to summon the Yeti King.");
end;
}
if ($EVENT$ != "Celestia")
delitem EverburnPowder, 1;
dispbottom l("Emoc otem itey gnik!"); // come to me yeti king, spelled backwards. Sorry.
callfunc "FYE_Olympics_CH";
.inUse=1;
addtimer(9000, "#DahYetiKing::OnSummonTalk");
initnpctimer;
end;
L_Die:
npctalk3 l("You're playing with fire. Or ice. Or whatever.");
percentheal(-80, -100);
closedialog;
close;
OnTimer1000:
setnpcdisplay .name$, NPC_YETI_KING;
end;
OnTimer2000:
npctalk("Whom dares to disturb my slumber?!");
end;
OnTimer5000:
if (getareausers("003-1-1", 5) < 2 && !$@GM_OVERRIDE) {
npctalk("A lone adventurer? Pft. I'm back to my slumber!");
.inUse=2;
} else {
npctalk("You're courageous to summon me, I'll give you that.");
}
end;
// Now we check if time ran out (standard inUse) because cowardice, or if you tried
// to do the quest alone. And this is a Co-Op quest with free player numbers.
// Therefore, we must return the Yeti King to his summon circle.
OnTimer8000:
if (.inUse == 2) {
setnpcdisplay .name$, NPC_SUMMONING_CIRC;
.inUse=0;
stopnpctimer;
}
end;
OnTimer60000:
if (.inUse == 1) {
setnpcdisplay .name$, NPC_SUMMONING_CIRC;
.inUse=0;
stopnpctimer;
}
end;
// You can only talk to him with SummonTalk. Only one player will summon.
OnSummonTalk:
if (!.inUse)
end;
.@q=getq(HurnscaldQuest_Celestia);
// If you had to return, erase quest progress
if (.@q > 1 && .@q < 99)
setq HurnscaldQuest_Celestia, 1;
if (.@q != 1)
end;
mesn l("Dah Yeti King!!");
mesq l("Why do you summon me? Speak.");
mes "";
select
l("I'm sorry, these words just came to my mind."),
l("I did not summon you, I'm just a passer-by. Sorry."),
rif(.@q == 1, l("Celestia asks for your help."));
mes "";
if (@menu == 1)
goto L_Die;
if (@menu == 2)
close;
mesn l("Dah Yeti King!!");
mesq l("Yeah yeah yeah, you're not the first one to come talking about that to me.");
next;
mesn l("Dah Yeti King!!");
mesq l("My answer is still a no, and it won't change. Don't test my patience any further.");
next;
select
l("You'll come with me!"),
l("I can prove you my worth!"),
l("Sorry! Sorry!");
mes "";
if (@menu == 1)
goto L_Die;
if (@menu == 3)
close;
if (BaseLevel < 35 && !countitem(MirrorLakeArmor)) {
mesn l("Dah Yeti King!!");
mesq l("You? Have you ever looked in the mirror? You're not even level 35. Begone.");
close;
}
mesn l("Dah Yeti King!!");
mesq l("Well, then I'll give you a task. We may meet again in Soren Village.");
next;
mesn l("Dah Yeti King!!");
mesq l("I'll warp you to the Cave Of Trials. Pass all trials, and meet me on Soren's House. Hahah!");
setq HurnscaldQuest_Celestia, 2;
@YetiKing_Challenger=1;
areatimer "003-1-1", 93, 20, 97, 25, 15000, "#DahYetiKing::OnWarper";
npctalk l("Listen to me! Whoever wants to follow foolish @@ on their suicide quest, stay here for 15 seconds!", strcharinfo(0));
close;
OnWarper:
if (ispcdead())
end;
// If you had to return, erase quest progress
if (.@q > 2 && .@q < 99) {
@YetiKing_Challenger=0;
}
mesc l("Warp to the Cave Of Trials?");
mesc l("There is no EXP penalty, but you cannot go back without either completing the cave, or dying.");
mesc l("If you die, you'll need to start over everything again!");
if (askyesno() == ASK_YES) {
setq HurnscaldQuest_Celestia, 2; // This is a fix
warp "001-6", 27, 180;
}
setnpcdisplay .name$, NPC_SUMMONING_CIRC;
.inUse=0;
closedialog;
close;
OnInit:
.sex = G_OTHER;
.distance = 1;
.inUse=0; // Prevent multiple summons and etc.
end;
}