summaryrefslogblamecommitdiff
path: root/world/map/npc/006-1/spirit.txt
blob: 4796121a835a7140f979884f5062f8be57da2145 (plain) (tree)
1
2
3
4
5
6
7
8
9
                             
 
                                                
 

                                                
           

          













                                                        










                                                                                                                                
                           
                                   
                                                   

       



                                                                                                                                                                                    
                                
                                                          
                                                       

        
                         
                                                                                                                                                                                                            
         
                                                   
                
 
     


                                               
                

       



                                                        
                            
 
            



                                                                                         

    



                                                                                                                     

          








                                                                                                                                                   
                                                                                                                                                                                                                 



                                 


                                             
                         
                                                                                                                                                



                                       


                                                              
                         
                                                                                                                                              

                         
                                                                                                                                                                                    



                                                  

            
                         
                                                                                                                                                            




                                                       

            



                                                                               
                                                      




                                                               
        

                                                              
                                             
 
                            












                                                                                            

                 





                                   

            



                                                                                     
                                 

                      
        
                                   
 
                           



                                                                                                                                                            
                                                                                                                                                 
                          

            



                                                                                                       
                                 

                      
        

                                   
                         
                                                                                                                                                                           

                         
                                                                                                                                                                                  
                          

            



                                                                               

        



                                                                   

              



                                    

             
                         
                                                                                         

                

                 



                                                                                 

                 



                                                         

             
                         
                                                                                                                                                       

                

               
                         
                                  

                

              



                                                                                       

              



                                         
                    
                 
 













                              
           

             

                                                                            

 
                                      
 
                             
          

 
                                      
 
                             
          
 
function|script|EarthImpTouch
{
    if (getskilllv(SKILL_MAGIC)) goto L_message;

    mes "[Well]";
    mes "You hear noises from within the well.";
    return;

L_message:
    set @Q_MASK, NIBBLE_0_MASK;
    set @Q_SHIFT, NIBBLE_0_SHIFT;
    set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;

    // Set up SkillUp function
    set @SUP_id, SKILL_MAGIC_NATURE;
    set @SUP_name$, "Nature Magic";
    set @Q_STATUS_INITIAL, 0;
    set @Q_STATUS_ONQUEST, 1;
    set @Q_STATUS_STUDENT0, 2;
    set @Q_STATUS_STUDENT1, 3;
    set @Q_STATUS_STUDENT2, 4;
    set @Q_STATUS_STUDENT3, 5;

    if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) goto L_wb;

    mes "[Well]";
    mes "Something is inside that well, and now that you have turned your attention towards it, it seems to be talking to you!";
    next;

    mes "[Well]";
    mes "\"Hey!  You there!  Yes, I'm talking to you!\"";
    mes "That strange voice seems to be coming from inside your head!";
    next;
    menu
        "Who, me?", L_Next,
        "Leave me alone!", L_Close,
        "Aaah! I'm hearing voices!", L_silly_close;

L_Next:
    mes "[Well]";
    mes "\"I'm in here, in the well, talking to you!  If I'm not very mistaken, you are a powerful wizard-to-be, except that nobody has showed you how to properly do magic yet!\"";
    next;
    menu
        "Who are you?", L_Next1,
        "Aaaah!  The voices are after me!", L_silly_close,
        "Whatever it is, I'm not interested.", L_Close;

L_Next1:
    mes "[Earth Spirit]";
    mes "\"I'm an earth spirit; my name isn't important... all that matters is that I like you, and that I will help you become a powerful wizard if you help me. Just a fair deal, no more than that...\"";
    next;
    set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_IMP;
    goto L_main;

L_wb:
    mes "[Earth Spirit]";
    mes "\"It's excellent to see you again!\"";
    next;
    goto L_main;

L_main:
    menu
        "How did you get trapped?", L_Q_trapped,
        "Can you teach me magic and spells?", L_Q_magic,
        "What do you know about...", L_Q,
        "Goodbye!", L_Close;

L_Q_trapped:
    mes "[Earth Spirit]";
    mes "\"Oh, a wicked witch grew jealous of my power and locked me up in this well.\"";
    next;
    goto L_main;

L_Q:
    mes "[Earth Spirit]";
    mes "\"Stop bothering me with your questions, will you?  I'm trying to make you a powerful wizard, after all!\"";
    next;
    goto L_main;

L_Q_magic:
    if (@Q_status == @Q_STATUS_ONQUEST) goto L_Q_magic_1;
    if (@Q_status == @Q_STATUS_STUDENT0) goto L_Q_magic_2;
    if (@Q_status == @Q_STATUS_STUDENT1) goto L_Q_magic_3;
    if (@Q_status == @Q_STATUS_STUDENT2) goto L_Q_magic_4;

    mes "[Earth Spirit]";
    mes "\"Good, good... that's the right attitude!  Yes, I can teach you magic, but first you must prove that you are worthy to be my student!\"";
    next;
    mes "[Earth Spirit]";
    mes "\"North-east of here sits and old, dead tree. Well, not completely dead, not yet, but almost. It's nothing special. Well, maybe a little, but not really. I want you to cut off one of its branches.\"";
    next;
    menu
        "No way.", L_silly_close,
        "Sure.", L_Q_tree_ok,
        "Why that particular tree?", L_Next2;

L_Next2:
    mes "[Earth Spirit]";
    mes "\"Oh, you and your questions!  Well, that tree was a druid once, so the branches contain a bit of its lifeforce. And that's useful.\"";
    next;
    menu
        "Yuck.", L_silly_close,
        "Sure, whatever.", L_Q_tree_ok,
        "Isn't that like cutting off someone's arm?", L_Next3;

L_Next3:
    mes "[Earth Spirit]";
    mes "\"Oooh... now come on!  Don't be so sentimental. He turned himself into a tree, he can hardly expect everyone to leave him alone.\"";
    next;
    mes "[Earth Spirit]";
    mes "\"Who knows if he can even feel anything anymore?  I'm sure he can't, being wooden and all. Besides, it's only a measly tree. Not like I'm asking you to cut him down!.\"";
    next;
    menu
        "No way.", L_silly_close,
        "Alright, that makes sense.", L_Q_tree_ok;

L_Q_tree_ok:
    mes "[Earth Spirit]";
    mes "\"Good, good, good!  Yes, that will be very good!  So, come back when you have the branch. Oh, and bring 100,000 GP, too, as an enrollment fee.\"";
    set @Q_status, @Q_STATUS_ONQUEST;
    callsub S_update_var;
    set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_CUTTREE;
    next;
    goto L_main;

L_Q_magic_1:
    mes "[Earth Spirit]";
    mes "\"Yes, yes, if you bring me the branch and the money, then I will!\"";
    next;
    menu
        "Here are the branch and the money.", L_Next4,
        "How much money did you want again?", L_Q_tree_howmuch,
        "How can I cut it?", L_Q_tree_how,
        "Where was the tree again?", L_Q_tree_where,
        "What is that tree?", L_Q_tree_what;

L_Next4:
    if (countitem("DruidTreeBranch") < 1) goto L_Q_tree_none;
    if (!(MAGIC_FLAGS & MFLAG_DID_CUTTREE)) goto L_Q_tree_dry;
    if (Zeny < 100000) goto L_Q_tree_nomoney;

    set Zeny, Zeny - 100000;
    delitem "DruidTreeBranch", 1;
    mes "[Earth Spirit]";
    mes "Following the earth sprite's instructions, you throw branch and GP into the well.";
    next;
    mes "[Earth Spirit]";
    mes "\"Well done, very well done!  Consider yourself my student now.\"";
    set @SUP_xp, 5000;
    set @SUP_lvl, 2;
    callfunc "SkillUp";
    next;
    set @Q_status, @Q_STATUS_STUDENT0;
    callsub S_update_var;
    goto L_main;

L_Q_magic_finish:
    mes "[1000 experience points]";
    set @Q_status, @Q_status + 1;
    callsub S_update_var;
    getexp 1000,0;
    next;
    goto L_main;

L_Q_magic_2:
    mes "[Earth Spirit]";
    mes "\"Yes, of course!  For just 20,000 GP I will teach you your first spell!\"";
    next;
    menu
        "Here you are.", L_Next5,
        "No.", L_main;

L_Next5:
    if (Zeny < 20000) goto L_no20k;

    set Zeny, Zeny - 20000;
    mes "[Earth Spirit]";
    mes "\"Kekeke... excellent!  Yes, here goes your first spell, the flying backpack!  If you are overloaded, it will take the load off your shoulders.\"";
    next;
    mes "[Earth Spirit]";
    mes "\"Take a cocoon, living or dead, and suffuse it in magic. Whisper '" + get(.invocation$, "flying-backpack") + "', and feel it float!\"";
    goto L_Q_magic_finish;

L_Q_magic_3:
    mes "[Earth Spirit]";
    mes "\"But yes, yes!  Only 20,000 GP, once again, and I will teach you a far more useful spell!\"";
    next;
    menu
        "Here you are.", L_Next6,
        "No.", L_main;

L_Next6:
    if (Zeny < 20000) goto L_no20k;
    set Zeny, Zeny - 20000;
    mes "[Earth Spirit]";
    mes "\"Yeees, good!  This one is a protection spell, making your skin harder. You need a hard spike for it, though. Hold that spike in your hands, and focus on it.\"";
    next;
    mes "[Earth Spirit]";
    mes "\"Next, say '" + get(.invocation$, "protect") + "', and feel your skin grow rigid!  Very useful against stings and stabs and pokes and pricks and that sort of stuff.\"";
    goto L_Q_magic_finish;

L_Q_magic_4:
    mes "[Earth Spirit]";
    mes "\"Naah, you're too weak now!  Come back later when you have grown!\"";
    next;
    goto L_main;

L_no20k:
    mes "[Earth Spirit]";
    mes "\"You can't pay me 20,000 if you don't have that much!\"";
    next;
    goto L_main;

L_Q_tree_none:
    mes "[Earth Spirit]";
    mes "\"Where is your branch?\"";
    next;
    goto L_main;

L_Q_tree_dry:
    mes "[Earth Spirit]";
    mes "\"That won't do. This branch is completely dead; you'll have to get another.\"";
    next;
    goto L_main;

L_Q_tree_nomoney:
    mes "[Earth Spirit]";
    mes "\"No, you don't have enough money!  Come back when you have 100,000.\"";
    next;
    goto L_main;

L_Q_tree_howmuch:
    mes "[Earth Spirit]";
    mes "\"It's only 100,000 GP to become my student.\"";
    next;
    goto L_main;

L_Q_tree_how:
    mes "[Earth Spirit]";
    mes "\"Oh... right, the tree might be protected. Only a bone knife will cut that. No idea where you can find one, but I'm sure you will manage!\"";
    next;
    goto L_main;

L_Q_tree_where:
    mes "[Earth Spirit]";
    mes "\"North-east of here.\"";
    next;
    goto L_main;

L_Q_tree_what:
    mes "[Earth Spirit]";
    mes "\"Just some silly druid who turned himself into a tree; nothing important.\"";
    next;
    goto L_main;

L_silly_close:
    if (MAGIC_FLAGS & MFLAG_KNOWS_IMP)
        mes "[Earth Spirit]";
    if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP))
        mes "[Well]";
    mes "\"Fool.\"";
    goto L_Close;

L_Close:
    set @Q_MASK, 0;
    set @Q_SHIFT, 0;
    set @Q_status, 0;
    set @SUP_id, 0;
    set @SUP_name$, "";
    set @SUP_xp, 0;
    set @SUP_lvl, 0;
    set @Q_STATUS_INITIAL, 0;
    set @Q_STATUS_ONQUEST, 0;
    set @Q_STATUS_STUDENT0, 0;
    set @Q_STATUS_STUDENT1, 0;
    set @Q_STATUS_STUDENT2, 0;
    set @Q_STATUS_STUDENT3, 0;
    return;

S_update_var:
    set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
    return;
}

006-1,67,68,0|script|#EarthImp0#_M|400
{
    callfunc "EarthImpTouch";
    close;
}

006-1,68,68,0|script|#EarthImp1#_M|400
{
    callfunc "EarthImpTouch";
    close;
}