// TMW2 Scripts
// Author:
// gumi (TMW Org. Team)
// 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.
// TODO: OnPCDieEvent must reset quest
012-7,35,49,0 script Celestia NPC_ELF_F,{
.@q1=getq(HurnscaldQuest_Celestia);
.@q2=getq(HurnscaldQuest_TeaParty);
mesn;
mesq lg("Hello, darling. I was thinking in doing a tea party.");
if (.@q1)
mesc l("You notice that even if she tries to calm down everyone and serve tea, she's pretty distressed with the Monster King herself.");
next;
mesn strcharinfo(0);
menu
l("Sorry, I'm more of a coffee person."), L_Coffee,
l("What an amazing crown you have! How do I get it?!"), L_Crown,
rif(.@q2 == 0 && BaseLevel >= 35, l("Tea party! I want to participate.")), L_TeaQuest,
rif(.@q2 == 1, l("I have some sweeties for the Tea Party!")), L_TeaCheck,
rif(.@q2 >= 2, l("Tea party! I want to participate.")), L_TeaParty,
rif(.@q1 == 0, l("There are Monster Attacks every month, how do you have time for tea parties?!")), L_MainQuest,
rif(.@q1 >= 6, l("I want to try convincing the Yeti King again.")), L_MainQuestCore;
L_Coffee:
mes "";
mesn;
mesq l("Hmpf! Coffee is an heresy!");
// Except I love coffee ~ Jesusalva
close;
L_Crown:
mes "";
mesn;
mesq l("Ooh, this nice shiny thing? It was an event.");
next;
mesn;
mesq l("Saulc is rich, you know. He challenged a group of thirty NPCs to defeat him, whoever won would get this @@.", getitemlink(MurdererCrown));
next;
mesn;
mesq l("Well, Andrei Sakar said it was a waste a time, and the other NPCs started fighting against themselves, so I won.");
next;
mesn;
if (BaseLevel < 100)
mesq l("...Besides, I have this nice @@ with me. I'm not low-level like you.", getitemlink(BansheeBow));
else
mesq l("...Besides, I have this nice @@ with me. It's a reliable bow.", getitemlink(BansheeBow));
close;
L_MainQuest:
mes "";
mesn;
mesc l("Celestia eyes sparkles.");
mesq l("Someone who have clear priorities appeared! I'm glad!");
next;
mesn;
mesq l("You see, most people think that all monsters are controlled by the Monster King, but that's not quite right.");
next;
mesn;
mesq l("Some are just living their own lives. In special, I've spent part of my life studying the Yeti Society.");
next;
mesn;
mesq l("And guess what? They have a King of their own!");
mesq l("If we could convince them to distract the Monster King, we could have chances to do a counter-attack!");
next;
mesn;
mesq l("But that's not so easy... I already sent many people, and even come myself, but he refuses to help.");
next;
L_MainQuestCore:
mesn;
mesq l("Maybe you could convince him. There's a summoning circle on Tulimshar Sewers.");
next;
mesn;
mesq l("Go very close to it and, speak the four four-letters magic words and he'll appear to you.");
next;
mesn;
mesq l("Don't go alone, though! He would not listen to me, it is not you alone he'll pay attention.");
next;
mesc l("Accept quest?");
if (askyesno() == ASK_YES) {
setq HurnscaldQuest_Celestia, 1;
@YetiKing_Challenger=0;
mes "";
mesn;
mesq l("Good, good. The chant is ##B EMOC OTEM ITEY GNIK ##b. Good luck!");
}
close;
L_TeaQuest:
mes "";
mesn;
mesq l("Well, the reason why I'm not doing it already is because, you see, I lack cookies.");
//next;
//mesn;
//mesq l("And anyone who hanged out on #evol-dev knows that, well... Cookies are life!");
next;
mesn;
mesq l("But I can still make it without cookies, as long that you bring me some other sweeties.");
next;
mesn l("Item List");
mes l("@@/20 @@", countitem(Acorn), getitemlink(Acorn));
mes l("@@/20 @@", countitem(ChocolateMouboo), getitemlink(ChocolateMouboo));
mes l("@@/20 @@", countitem(ChocolateBar), getitemlink(ChocolateBar));
mes l("@@/15 @@", countitem(Candy), getitemlink(Candy));
mes l("@@/15 @@", countitem(OrangeCupcake), getitemlink(OrangeCupcake));
mes l("@@/10 @@", countitem(CherryCake), getitemlink(CherryCake));
mes l("@@/5 @@", countitem(GingerBreadMan), getitemlink(GingerBreadMan));
mes l("@@/2 @@", countitem(ChocolateBiscuit), getitemlink(ChocolateBiscuit));
/* We can't ask for THAT many!
mes l("@@/20 @@", countitem(ApanaCake), getitemlink(ApanaCake));
mes l("@@/20 @@", countitem(Lollipop), getitemlink(Lollipop));
mes l("@@/20 @@", countitem(Mashmallow), getitemlink(Mashmallow));
mes l("@@/20 @@", countitem(TonoriDelight), getitemlink(TonoriDelight));
mes l("@@/20 @@", countitem(EasterEgg), getitemlink(EasterEgg));
mes l("@@/20 @@", countitem(ChocolateBunny), getitemlink(ChocolateBunny));
mes l("@@/20 @@", countitem(FrozenYetiTear), getitemlink(FrozenYetiTear));
mes l("@@/20 @@", countitem(DeliciousCookie), getitemlink(DeliciousCookie));
*/
setq HurnscaldQuest_TeaParty, 1;
close;
L_TeaCheck:
mesn l("Item List");
mes l("@@/20 @@", countitem(Acorn), getitemlink(Acorn));
mes l("@@/20 @@", countitem(ChocolateMouboo), getitemlink(ChocolateMouboo));
mes l("@@/20 @@", countitem(ChocolateBar), getitemlink(ChocolateBar));
mes l("@@/15 @@", countitem(Candy), getitemlink(Candy));
mes l("@@/15 @@", countitem(OrangeCupcake), getitemlink(OrangeCupcake));
mes l("@@/10 @@", countitem(CherryCake), getitemlink(CherryCake));
mes l("@@/5 @@", countitem(GingerBreadMan), getitemlink(GingerBreadMan));
mes l("@@/2 @@", countitem(ChocolateBiscuit), getitemlink(ChocolateBiscuit));
next;
select
l("I will be back shortly."),
l("I have all.");
mes "";
if (@menu == 1) {
closedialog;
goodbye;
close;
}
if (countitem(Acorn) < 20 ||
countitem(ChocolateMouboo) < 20 ||
countitem(ChocolateBar) < 20 ||
countitem(Candy) < 15 ||
countitem(OrangeCupcake) < 15 ||
countitem(CherryCake) < 10 ||
countitem(GingerBreadMan) < 5 ||
countitem(ChocolateBiscuit) < 2)
goto L_Lying;
delitem Acorn, 20;
delitem ChocolateMouboo, 20;
delitem ChocolateBar, 20;
delitem Candy, 15;
delitem OrangeCupcake, 15;
delitem CherryCake, 10;
delitem GingerBreadMan, 5;
delitem ChocolateBiscuit, 2;
getexp rand(12000, 13000), 0; // level exp cap: 15,775
setq HurnscaldQuest_TeaParty, 2;
mes "";
mesn;
mesq l("Many thanks! I'll arrange the table.");
close;
L_Lying:
mesn;
mesq l("Wha- How dare you, to lie to me!");
// She'll try to drain all your MP. If you're not MP Full, you'll die. And will have EXP penalty, of course.
if (Sp == MaxSp)
percentheal 0, -100;
else
percentheal -100, 0;
close;
// begin: Gumi Script
L_TeaParty:
mes "";
mesn;
mesq l("Wonderful, I am happy to have you over. Lets get things started with some puerh tea.");
next;
mesc l("Celestia hands you a cup filled with some type of tea that is unlike anything you have seen before.");
mesc l("It has a very dark color and an unusual aroma reminiscent of a moist forest.");
next;
mesc l("For a moment you wonder if Celestia might have gotten confused and tossed in a handful of forest dirt into the teapot.");
mesc l("You ponder whether or not it would be wise to drink it.");
menu
l("Uh are you sure this is fit to drink?"), L_QuestionTea,
l("(Drink the tea, hoping for the best)"), L_DrinkTea;
L_DrinkTea:
// This is easily exploitable on purpose: It's mostly to protect against flood.
if (@tmp_teatime < gettimetick(2)) {
percentheal 0, 15;
@tmp_teatime=gettimetick(2)+140;
}
mesc l("To your pleasant surprise the tea is actually quite good.");
next;
mesc l("Despite its initial dubious fragrance, the tea comes off as very smooth and mellow with a bit of natural sweetness and a touch of an earthy forest like flavour, but in a very good way.");
next;
mesc l("Clearly an exotic tea, with a refined flavor fit for a refined woman such as Celestia.");
close;
L_QuestionTea:
mesq l("Yes, did you really think I was some kind of monster that would try to poison you in my own house?");
mes l("##a(it would be way too messy anyway)##0");
next;
mesc l("Celestia then picks up the cup of tea and drinks it in front of you to demonstrate that it is not only harmless but also quite delectable.");
close;
// end: Gumi Script
OnInit:
.@npcId = getnpcid(0, .name$);
setunitdata(.@npcId, UDT_HEADTOP, MurdererCrown);
setunitdata(.@npcId, UDT_HEADMIDDLE, ValentineDress);
setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); // Boots
setunitdata(.@npcId, UDT_HAIRSTYLE, 19);
setunitdata(.@npcId, UDT_HAIRCOLOR, 10);
npcsit;
.sex = G_FEMALE;
.distance = 5;
}