summaryrefslogblamecommitdiff
path: root/npc/012-7/celestia.txt
blob: 259bf202f3368b4978c1b726342e65be47f688d2 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                                
                                                   



                                                                    
             
                                                                                                                                                




                                                                        
                                                                                                                                                    
                                                                                              

                                                                                 
                                                         
                                                                                                                        
                                                                                                                                           
                                                                                            













                                                           
                                                                                                                                                      




                                                                                                                               
                        





                                                                                                                
           
         
                                      




















                                                                                                                           
                                                                                                                                                    

         
                                                                                                                                  
         
                            

                                        
                               



                                                                                   





                                                                                                 




                                                                                             




                                                                                                      
                                                            
                                                                                
                                                                          






                                                                                 











                                                                                
                                                            
                                                                                
                                                                          








                                                                                 
           





                     
                                
                                          
                                       






                                        

                                  
                      
                                
                             





                                
                                                          
                           
                                                    












                                                                                                                
              



                     
                                        



                                                                                                   

                                                                                                                  
         

                                                                                                                                     




                                                                  


                                                          
     
                                                                        
         
                                                                                                                                                                                                       
         
                                                                                                     





                                                                                                                 
                                                                                                                                                         
                                
                               

                                                                


                   








                                             

























                                                                                                                              
 




















































































                                                                                                                                                                                                         
       
                               

                                                         




                                                              

           


                    
















                                     
 
// 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(getvaultid() && get_nibble(##03_TMWQUEST, 0) == 2, l("Actually, have you ever heard of Yeti's kidnapping little girls?")), L_VaultQuest,
        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(.@q2 >= 2, l("Do you sell tea?")), L_TeaShop,
        rif(.@q1 == 0, l("There are Monster Attacks every month, how do you have time for tea parties?!")), L_MainQuest,
        rif(.@q1 && CINDY_PLAYER_STRUCK && getq(NivalisQuest_Well) < 2, l("I found switches which only a Yeti may flip...")), L_OtherQuest,
        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, pour some @@, and he'll appear to you.", getitemlink(EverburnPowder));
    next;
    mesn;
    mesq l("Don't go alone, though! He would not listen to me, it is not you alone he'll pay attention. You will lose reagents!");
    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.");
    if (countitem(DeliciousCookie)) {
        next;
        mesn;
        mesq l("And anyone like you probably already 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("@@/50 @@", countitem(Acorn), getitemlink(Acorn));
    mes l("@@/20 @@", countitem(ChocolateMouboo), getitemlink(ChocolateMouboo));
    mes l("@@/40 @@", 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(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("@@/50 @@", countitem(Acorn), getitemlink(Acorn));
    mes l("@@/20 @@", countitem(ChocolateMouboo), getitemlink(ChocolateMouboo));
    mes l("@@/40 @@", 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) < 50 ||
        countitem(ChocolateMouboo) < 20 ||
        countitem(ChocolateBar) < 40 ||
        countitem(Candy) < 15 ||
        countitem(OrangeCupcake) < 15 ||
        countitem(CherryCake) < 10 ||
        countitem(GingerBreadMan) < 5 ||
        countitem(ChocolateBiscuit) < 2)
            goto L_Lying;

    inventoryplace CelestiaTea, 3;

    delitem Acorn, 50;
    delitem ChocolateMouboo, 20;
    delitem ChocolateBar, 40;
    delitem Candy, 15;
    delitem OrangeCupcake, 15;
    delitem CherryCake, 10;
    delitem GingerBreadMan, 5;
    delitem ChocolateBiscuit, 2;

    getexp rand(13500, 14500), 0; // level exp cap: 15,775
    getitem CelestiaTea, 3;
    setq HurnscaldQuest_TeaParty, 2, gettimetick(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
        die();
    close;

// begin: Gumi Script
L_TeaParty:
    .@q2=getq2(HurnscaldQuest_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:
    if (.@q2 < gettimetick(2)) {
        percentheal 0, 100;
        setq2 HurnscaldQuest_TeaParty, gettimetick(2)+180;
    }
    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.");
    if (.@q2 < gettimetick(2)) {
        getitem CelestiaTea, 1;
        setq2 HurnscaldQuest_TeaParty, gettimetick(2)+(60*60*2);
    }
    close;
// end: Gumi Script

L_TeaShop:
    mesn;
    mesq l("Well, my tea is just too good.");
    next;
    closeclientdialog;
    npcshopattach(.name$);
    shop .name$;
    close;

L_OtherQuest:
    mesn strcharinfo(0);
    mesq l("Basically, I need to find a friendly Yeti. Do they exist?");
    next;
    mesn;
    mesq l("Of course. The adviser of the Yeti King, for instance, is very friendly.");
    next;
    mesn;
    mesq l("But he have lots of enemies... It would not surprise me to find him struck somewhere.");
    next;
    mesn;
    mesq l("He usually guards a central position on the caves... He could help you, if he is there.");
    next;
    mesn;
    mesq l("Otherwise, his enemies might have bested him, but I doubt any Yeti would dare to kill him.");
    next;
    mesn;
    mesq l("Wasn't there something on the Holy Bible? About a young boy trapped by his brothers somewhere because envy?");
    mesc l("If you don't want to look at the Bible, you can try to solve the following riddle:");
    mesc l("\"When you're thristy, you may look for me. I'm often in desert areas, but this time, the winter has come.\""), 3;
    CINDY_PLAYER_STRUCK=false;
    next;
    clear;
    mesn l("Quest Tip");
    mesc l("\"When you're thristy, you may look for me. I'm often in desert areas, but this time, the winter has come.\""), 3;
    close;

// Mirror Lake
L_VaultQuest:
    if (##01_MLWORLD & MLP_TMW_CELESTIA) {
        mesn;
        mesq l("Yes, try to summon the Yeti King in Tulimshar Sewers. Make sure you have someone else with you to help.");
        close;
    }
    mesn;
    mesq l("While I don't think the Yeti King would ever do or endorse that, yes, I've heard this happens.");
    next;
    select
        l("Wait, Yeti's have a king?"),
        l("I thought they ate little girls."),
        l("Haha, as if I believe you.");
    mes "";
    if (@menu == 3) close;
    if (@menu == 2) {
        mesn;
        mesq l("What? Don't be ridiculous. Not even the Monster King does that! I think.");
        next;
        mesn;
        mesq l("In other words, I never heard of a Yeti eating a kid before. They prefer %s.", getitemlink(MoubooSteak));
        next;
    } if (@menu == 1) {
        // Player already know that ¬.¬
        if (getq(HurnscaldQuest_Celestia) != 0) {
            mesn;
            mesq l("Are you trying to provoke me?");
            close;
        }
        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!");
        next;
    }
    mesn;
    mesq l("Anyway, why do you ask? Surely not to waste my time.");
    next;
    select
        l("[Explain the situation]"),
        l("[Make up a lie]");
    mes "";
    mesn;
    mesq l("...Okay, I asked you to explain, and you ended up wasting my time instead. %%n");
    next;
    mesn;
    mesq l("Listen, I was trying to get the Yeti King to help me to fight the Monster King. If you want to go there and do it, be my guest; Maybe they'll even help you with whatever your problem is.");
    if (countitem(MirrorLakeArmor))
        mesc l("PS. This char will be reset on logout.");
    next;
    select
        l("Sure, I'll help."),
        l("No way!");
    if (@menu == 2) close;
    mes "";
    mesn;
    mesq l("Alright. Listen, you'll need %s to summon it, and you cannot be alone. I only have so much of that to share, so be careful to don't use all.", getitemlink(EverburnPowder));
    next;
    if (countitem(MirrorLakeArmor)) {
        mesn;
        mesq l("Your weird robes; They seem like they'll deny your damage, so you definitely want to summon multiple people to help. Try the #world tab.");
        next;
    }
    mesn;
    mesq l("There's a summoning circle on Tulimshar Sewers. You can reach either by boat, if you have the money - I'll lend you some; Or by the long way.");
    next;
    mesn;
    mesq l("Go very close to it and, speak the four four-letters magic words, pour some @@, and he'll appear to you.", getitemlink(EverburnPowder));
    next;
    mesn;
    mesq l("Don't go alone, though! He would not listen to me, it is not you alone he'll pay attention. You will lose reagents!");
    next;
    ##01_MLWORLD=##01_MLWORLD|MLP_TMW_CELESTIA;
    Zeny+=400;
    getitembound(EverburnPowder, 5, 4);
    setq HurnscaldQuest_Celestia, 1;
    @YetiKing_Challenger=0;
    mesq l("The chant is ##B EMOC OTEM ITEY GNIK ##b. Good luck!");
    close;

OnInit:
    .@npcId = getnpcid(.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;

    tradertype(NST_MARKET);
    sellitem CelestiaTea, -1, 1;
    sellitem YerbaMate, -1, 2;
    sellitem JasmineTea, -1, 3;
    sellitem OolongTea, -1, 4;
    sellitem SpearmintTea, -1, 5;
    sellitem ChamomileTea, -1, 10;
    end;

OnClock0002:
    restoreshopitem CelestiaTea, 1;
    restoreshopitem YerbaMate, 2;
    restoreshopitem JasmineTea, 3;
    restoreshopitem OolongTea, 4;
    restoreshopitem SpearmintTea, 5;
    restoreshopitem ChamomileTea, 10;
    end;
}