summaryrefslogblamecommitdiff
path: root/npc/017-3/doctor.txt
blob: 42ed43b1124e13fe519aec7a89f32187087f9470 (plain) (tree)
1
2
3
4
5
6
7
8
9
10





                                 

                                                                                                

                                                        
                              

                                    

                                    
                                                                                                                                       
                               
                                                  
                             






















                                                                                                                                                                                        
                                                                                                
        
                                                                                  













                                                                                 
                                                                         
















                                                                                                            







                                                                            
                                                                         









                                        
                                    





                              
                            












                                                                                         









                                                                                  
                                                                                          
























                                                                   





                                                               




                                                                                         













                                                                                                                                                            

























                                                                                                                                                                                   
 








                                                                                                                                                                                                                                                                       
                         
             
                                                                                                                                                                            
              



                                                                                                                                             
     

                                                                                                                                      
         






                                                                                                                              
                                                                                                                                                                                                                                                                    








                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                        










                                                                                                                                                                                                                                                                
                              
          
 

                
           



                                                                                                                                       
                                      























































                                                                                                                                                                                             
                                                                                                                                                                                                                                  







                                                                                                                                                                                                             
                                                                                                                                                                                     
















                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                  



                                                                   
                               
                              












                                                                                                                       

          





                
// TMW2/LoF scripts.
// Authors:
//    TMW-LoF Team
//    Jesusalva
// Description:
//    Part from THE EPISODE quest
// Reference:
//    http://forums.landoffire.org/viewtopic.php?f=7&t=1320&sid=80d2c735b55ccb06a39955a8fbca3913

017-3,75,68,0	script	The Doctor	NPC_LOF_DOCTOR,{
    showavatar NPC_LOF_DOCTOR;
    .@q=getq(LoFQuest_EPISODE);
    if (BaseLevel < 30) goto L_Weak;
    if (.@q == 13) goto L_Poison;
    if (.@q == 14) goto L_TimeFlask;
    if (.@q == 15) mesc l("You don't look so well, have you already used the %s to defeat the Soul Eater?", getitemlink(TimeFlask)), 1;
    if (.@q == 1) goto L_Check;
    if (.@q == 2 && BaseLevel >= 40) goto L_Miler;
    if (.@q >= 2) goto L_Tea;
    mesn;
    mesq l("Quite interesting, quite interesting indeed.");
    menu
        l("Um, might I ask, what is so interesting?"), L_Intro,
        l("Yes, uhh, very interesting indeed. Haha. I better leave..."), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_Intro:
    mes "";
    mesn;
    mesq l("Well, you are. You're quite interesting. I've been watching you for some time now, as you've been helping so many people: you're quite a master at what you do, you know.");
    menu
        l("Well, thanks."), L_IntroContinue,
        l("Ok then... Uh... Please excuse me....."), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_IntroContinue:
    mes "";
    mesn;
    mesq l("I don't suppose you have some herbs and a few bottles of potion with you, do you?");
    menu
        l("'Some herbs and potion'? Could you be more specific?"), L_IntroSpecify,
        l("Certainly not. Uhh, please excuse me."), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_IntroSpecify:
    mes "";
    mesn;
    mesq l("Ah, sorry, of course. I need quite a few herbs, look:");
    mesc l("@@/150 @@", countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("@@/150 @@", countitem(CobaltHerb), getitemlink(CobaltHerb));
    mesc l("@@/150 @@", countitem(GambogeHerb), getitemlink(GambogeHerb));
    mesc l("@@/100 @@", countitem(AlizarinHerb), getitemlink(AlizarinHerb));
    mesc l("@@/50 @@", countitem(ShadowHerb), getitemlink(ShadowHerb));
    mesc l("@@/10 @@", countitem(HastePotion), getitemlink(HastePotion));
    menu
        l("That shouldn't been too hard, but do I get something in return?"), L_IntroReward,
        l("O.o \"That's a lot. Maybe another day.\""), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_IntroReward:
    mes "";
    mesn;
    mesq l("I suppose, what would you like?");
    next;
    mesn;
    mesq l("Er, nevermind, I've thought of something to give you. You can go off now and get what I need.");
    setq LoFQuest_EPISODE, 1;
    close;

L_Check:
    mesn;
    mesq l("Did you brought what I asked for?");
    mesc l("@@/150 @@", countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("@@/150 @@", countitem(CobaltHerb), getitemlink(CobaltHerb));
    mesc l("@@/150 @@", countitem(GambogeHerb), getitemlink(GambogeHerb));
    mesc l("@@/100 @@", countitem(AlizarinHerb), getitemlink(AlizarinHerb));
    mesc l("@@/50 @@", countitem(ShadowHerb), getitemlink(ShadowHerb));
    mesc l("@@/10 @@", countitem(HastePotion), getitemlink(HastePotion));
    next;
    if (askyesno() != ASK_YES)
        close;
    inventoryplace HerbalTea, 5;
    if (
        countitem(MauveHerb) < 150 ||
        countitem(CobaltHerb) < 150 ||
        countitem(GambogeHerb) < 150 ||
        countitem(AlizarinHerb) < 100 ||
        countitem(ShadowHerb) < 50 ||
        countitem(HastePotion) < 10)
        goto L_Missing;
    delitem MauveHerb, 150;
    delitem CobaltHerb, 150;
    delitem GambogeHerb, 150;
    delitem AlizarinHerb, 100;
    delitem ShadowHerb, 50;
    delitem HastePotion, 10;
    getexp 7995, 0;
    setq LoFQuest_EPISODE, 2;
    getitem HerbalTea, 5;
    mesn;
    mesq l("Mmm, it's been so long since I have had herbal tea. You have my gratitude.");
    next;
    mesn strcharinfo(0);
    mesq l("Seriously? What sort of reward is that?");
    next;
    mesn;
    mesq l("Well, I suppose you can have some of my tea.");
    close;

L_Tea:
    mesn;
    mesq l("If you want, you can bring me some more of those herbs and potions.");
    mesc l("@@/30 @@", countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("@@/30 @@", countitem(CobaltHerb), getitemlink(CobaltHerb));
    mesc l("@@/30 @@", countitem(GambogeHerb), getitemlink(GambogeHerb));
    mesc l("@@/20 @@", countitem(AlizarinHerb), getitemlink(AlizarinHerb));
    mesc l("@@/10 @@", countitem(ShadowHerb), getitemlink(ShadowHerb));
    mesc l("@@/2 @@", countitem(HastePotion), getitemlink(HastePotion));
    menu
        rif(getq(LoFQuest_EPISODE) == 16, l("Actually, about the Soul Eater...")), L_Cont,
        l("Alright, I have them here!"), L_Check2,
        l("No thanks, see ya!"), -;
    close;

L_Check2:
    inventoryplace HerbalTea, 1;
    if (
        countitem(MauveHerb) < 30 ||
        countitem(CobaltHerb) < 30 ||
        countitem(GambogeHerb) < 30 ||
        countitem(AlizarinHerb) < 20 ||
        countitem(ShadowHerb) < 10 ||
        countitem(HastePotion) < 2)
        goto L_Missing;
    delitem MauveHerb, 30;
    delitem CobaltHerb, 30;
    delitem GambogeHerb, 30;
    delitem AlizarinHerb, 20;
    delitem ShadowHerb, 10;
    delitem HastePotion, 2;
    getexp 122, 12;
    getitem HerbalTea, 1;
    mesn;
    mesq l("Thanks, enjoy your tea! I will certainly enjoy mine!");
    close;

L_Weak:
    mesn;
    mesq l("Hmm, it's very interesting, very ... (mumbling).");
    close;

L_Missing:
    mesn;
    mesq l("Sorry, you do not have enough ingredients. You'd better search thoroughly.");
    close;

/////// Second Act
L_Miler:
    mesn;
    mesq l("Thank you for helping me make my tea. I hope the potions have been helpful...");
    next;
    mesn;
    mesq l("That reminds me. I have a friend in Nivalis named Miler who gave me some hints on the recipe. Would you take him a sample of what I gave you?");
    mesq l("If you've used all the ones I've given, you can always bring me more ingredients.");
    menu
        "I'll go right away.", -,
        "Ah, I suppose I need to gather more ingredients first...", -;
    setq LoFQuest_EPISODE, 3;
    close;

/////// Final Act
L_Poison:
    mesn;
    mesq l("%s, how in the world you got this status ailment?!", strcharinfo(0));
    next;
    select
        l("I don't know."),
        l("Henry gave something to drink.");
    mes "";
    mesn;
    mesq l("Listen, this is not a disease. No remedy can cure you, and it cannot be inflicted by consumables.");
    next;
    mesn;
    mesq l("Have you been fiddling with time? Anyway, this is not a disease, but a ##Bcomplex curse##b.");
    next;
    mesn;
    mesq l("This curse reclaims your soul to the Soul Eater. Except, she perished on the Great Fire.");
    next;
    mesn;
    mesq l("Meaning you must warp shortly before the Great Fire, defeat her, and be back before the Great Fire happen.");
    next;
    mesn;
    mesq l("For now, eat this. It'll improve your condition... for now. I don't know where you'll find a time travelling device, but if you find one, come to me. I'll help you.");
    setq LoFQuest_EPISODE, 14;
    sc_end SC_POISON;
    close;

L_TimeFlask:
    mesn;
    mesq l("If you don't defeat the Soul Eater before the Great Fire happens, which for the record, has already happened, your soul will slowly be reclaimed by her until your existence ceases to serve as fuel to bring back one of the greatest horrors of story.");
    next;
    if (!countitem(TimeFlask)) {
        mesn;
        mesq l("You better find a way to travel back in time soon!");
        close;
    }
    if (BaseLevel < 70) {
        mesn;
        mesq l("It'll be too dangerous if you're not at least level %d. But I'm sure you can grind the required level in no time; Don't let your body down! Exercise!", 70);
        close;
    } else if (BaseLevel < 80) {
        mesn;
        mesq l("Mhm, you're still weak, I would prefer you to be level %d+ before doing this, but... Whatever, you might even survive.", 80);
        next;
    }
    mesn;
    mesq l("This %s will do. I mean, it won't be a comfortable trip, but you are in an emergency situation.", getitemlink(TimeFlask));
    next;
    mesn;
    mesq l("Listen, I'll use a trick which I learned in, uh, a past life of mine, so if you die, reality resets your being.");
    next;
    mesn;
    mesq l("This means that if you die while in the past, you'll be brought back here as if you never traveled in time.");
    next;
    mesn;
    mesq l("Sounds awesome, but this will also reset a bunch of your progress... And with something as lame as a %s, you'll need quite a while to warp again. Uh, if you can, bring friends, the Soul Eater is... not to be trifled with.", getitemlink(TimeFlask));
    next;
    mesn;
    mesq l("I'll configure your flask to a few hours before the Great Fire breaks out. You're looking for \"The Queen's party\" hideout. Do you need a quick history lesson?");
    if (askyesno() == ASK_YES) {
        mes "";
        mesn;
        mesq l("Very well. The Platinum Red Queen died in her sleep and the Soul Eater took her role. But the Soul Eater was a tyrant and soon enough, \"she\" was murdered. A Council has taken over Tulimshar on the meanwhile and is doing intense research.");
        next;
        mesn;
        mesq l("This research caused a lot of neglect, so expect poverty and people unwilling to talk. Benjamin, head of the council, is doing a \"breaktrhough\" in the most literal sense possible (breaking through the whole town finances instead of revolutionizing the world).");
        next;
        mesn;
        mesq l("The situation is grim, and some want the return of the Platinum Red Queen. The \"Soul Eater\" is back, pretending to be her ghost, and the Black Razor believed on it. They made \"The Queen's Party\" and want to reinstate the queen.");
        next;
        mesn;
        mesq l("They haven't found Mana Stones yet, so no magic, but alchemy is strong. I don't know what caused the Great Fire, and the whole event is time-locked. You can ask Falkrun for more about the Great Fire. That's what you need to know for now.");
        next;
    }
    mes "";
    mesn;
    mesq l("Good luck, %s. You'll need it.", strcharinfo(0));
    setq LoFQuest_EPISODE, 15;
    close;

/////// Epilogue
L_Cont:
    mes "";
    mesn;
    mesc l("The doctor quickly analyzes you with some tool. Which looks like a screwdriver? Probably just a generic scanner, though.");
    mesq l("Gimme a second... Yes, you seem to be fine now, very well, congratulations!");
    next;
    inventoryplace SaviorBlueprint, 1;
    select
        l("Why, thank you!"),
        l("It was a tough fight."),
        l("I met Elli.");
    mes "";
    if (@menu == 1) close;
    if (@menu == 2) {
        mesn;
        mesq l("I'm sure it was, now go rest a bit, you deserve it!");
        close;
    }
    mesc l("The doctor raises an eyebrow at you.");
    next;
    mesn;
    mesq l("Figures she would be involved. What did she say?");
    do
    {
        next;
        select
            l("Nothing important."),
            l("That she would stop the Soul Eater in past and future."),
            l("That she was one of the originals."),
            l("To defeat the Moubootaur.");
        mes "";
        switch (@menu) {
        case 1:
            mesn;
            mesq l("That's because you weren't paying attention!");
            next;
            mesn;
            mesq l("Listen, kid, one does not simply ignore Elli! She is too scary to be ignored!");
            break;
        case 2:
            mesn;
            mesq l("Of course. I bet Elli is the one who cursed you, who started the Great Fire and who put the time lock in place.");
            next;
            mesn;
            mesq l("She wanted the Soul Eater defeated. Destroying the whole world never stopped her before.");
            next;
            mesn;
            mesq l("She is a scary woman and you would do well to remember this.");
            break;
        case 3:
            mesn;
            mesq l("Ah, the originals. Had the displeasure to met a few of them in the past and in the future with my time machine.");
            next;
            mesn;
            mesq l("There are only four which you could want to know about.");
            next;
            mesn;
            mesq l("First, %s is the Guardian of Law and Order. He ensures all rules are followed, and if anything breaks them, he erases their existence.", b("Mr. Saves"));
            next;
            mesn;
            mesq l("For example, when an item is dropped to the ground, it rots away and disappear. It cannot be recovered. If an item were to break such rule, Mr. Saves would intervene.");
            next;
            mesn;
            mesq l("He is by far the most powerful, and has a few chosen ones to whom he granted what we call \"SQL Magic\". Everyone envies power, so there's the imitation of that, \"GM Magic\", but unrelated to Mr. Saves.");
            next;
            mesn;
            mesq l("Next we have %s. It guards the world itself and grants all kinds of magic.", b(l("The Mana Source")));
            next;
            mesn;
            mesq l("Then we have %s. You met her. She guards all Talpan beings, such as Humans, Elves, Reidys, Orcs and whatever. She is an evil woman. She grants nothing to her followers.", b(l("Elli")));
            next;
            mesn;
            mesq l("I miss Ms. De'Kagen, she was very benevolent but from another world. Why does this one only have annoying pricks for Originals. Wait, I'm getting sidetracked.");
            next;
            mesn;
            mesq l("The last one is %s. You will meet him in the future, so no spoilers. Time traveler word.", b(l("The Moubootaur")));
            break;
        }
    } while (@menu != 4);
    mesn;
    mesq l("Sorry, but no spoilers. You'll met the Moubootaur soon enough.");
    next;
    mesn;
    mesq l("He guards what you call \"monsters\", but he favor Mouboos. He is possibly the oldest of the Originals.");
    next;
    mesn;
    mesq l("He dislikes Talpans like you. The Mana Source chained him in ancient times, though, so the Talpans could flourish.");
    next;
    mesn;
    mesq l("After the Great Fire... you don't find our world's Elli ever again.");
    // The Great Fire is her final act. Elli is declared dead shortly after. The causes of her death are unknown but certainly violent. She likely knew her time was coming, and wanted both to get rid of the Soul Eater before this, as to ensure no one would miss her, adding her along the list of those claimed by the fire.
    next;
    mesn;
    mesq l("Keep following the path. Take this and... good luck.");
    getexp 300000, 0;
    getitem SaviorBlueprint, 1;
    setq LoFQuest_EPISODE, 17;

    // Less relevant
    EPISODE_WINNER=gettimetick(2);
    if ($EPISODE_WINNER$ == "") {
        $EPISODE_WINNER$=strcharinfo(0);
        channelmes("#world", $EPISODE_WINNER$+" is the first player to finish The Episode of Ozthokk!! GG, dude! %%N");
        announce "All hail ##B"+$EPISODE_WINNER$+"##b, first to complete ##3The Episode of Ozthokk!", bc_all|bc_npc;
        getexp 0, 2000;
        getitem PrismGift, 1;
        mesc l("CONGRATULATIONS! You are the first player to finish The Episode of Ozthokk!!"), 2;
        mesc l("You just gained a Prism Gift, and 2000 Job Exp for your bravery!"), 2;
        next;
    }
    close;

OnInit:
    .sex=G_MALE;
    .distance=5;
    end;

}