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

                                 
 


                                                       
 
                                                             
 
                               
                

       

                                     
 
                                     
 
                                                      
 




                                                                                                                                          
                 

      


                            
 






                           
           
 
             


                                                                             

 
                              
 

                                 
 

                                                       
 
                                     
 
                                                                                                         
 
                                                                                                             
 

                                                                                                 
 

                                  
                 

      




                                                                        
                                  

        





                                       
                                  

       






                                                                                          
                                  

            


                                                        
 
                       
                                                                                                      
                 

           

                                    
                 

       


                                                     
                 

         
                                                        
 
                                                           
 

                                                                          
                                                                                                                          


                                           
                                      
                                        
 
             




                                                                                                     
                 

               
                       
                                                                                                                             
                 
 
        

                                                    





                     
           
 

 
                                       
 
                              
          
 
function|script|QuestTreeTrigger
{
    set @Q_MASK, NIBBLE_2_MASK;
    set @Q_SHIFT, NIBBLE_2_SHIFT;

    set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
    set @Q_status_lower, @Q_status & 3;
    set @Q_status, (@Q_status & 12) >> 2;

    if (@Q_status & @flag) goto L_Close;  // already did that

    if (@flag == 2) goto L_hug;
    goto L_cont;

L_cont:
    set @Q_status, @Q_status | @flag;
    callsub S_update_var;

    if (@Q_status != 3) goto L_Close;

    if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_Close;

    mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger.";
    mes "[20000 experience points]";
    getexp 20000, 0;
    set @value, 15;
    callfunc "QuestSagathaHappy";
    goto L_Close;

L_hug:
    mes "You hug the tree.";
    next;
    goto L_cont;

L_Close:
    set @Q_MASK, 0;
    set @Q_SHIFT, 0;
    set @Q_status, 0;
    set @Q_status_lower, 0;
    set @Q_wr_status, 0;
    set @value, 0;
    return;

S_update_var:
    set @Q_wr_status, (@Q_status << 2) | @Q_status_lower;
    set QUEST_MAGIC, (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT));
    return;
}

function|script|QuestTreeTouch
{
    set @Q_MASK, NIBBLE_2_MASK;
    set @Q_SHIFT, NIBBLE_2_SHIFT;

    set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
    set @Q_status, (@Q_status & 12) >> 2;

    if (@Q_status == 3) goto L_happy;

    if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut;

    if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_water;

    if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0)   //i.e., both are set
        goto L_both;

    mes "[Dying Tree]";
    mes "You see a strange tree.";
    goto L_Close;

L_cut:
    mes "[Dying Tree]";
    mes "This must be the tree that the earth spirit was referring to.";
    next;
    menu
        "Cut off a branch", L_do_cut,
        "Leave it alone", L_Close;

L_water:
    mes "[Dying Tree]";
    mes "This must be the druid tree.";
    next;
    menu
        "Water the tree", L_givewater,
        "Kiss tree", L_kiss,
        "Leave it alone", L_Close;

L_both:
    mes "[Dying Tree]";
    mes "This must be the druid tree that Wyara and the earth spirit were talking about.";
    next;
    menu
        "Water the tree", L_givewater,
        "Kiss tree", L_kiss,
        "Cut off a branch", L_do_cut,
        "Leave it alone", L_Close;

L_givewater:
    if (countitem("BottleOfWater") < 1) goto L_no_water;
    delitem "BottleOfWater", 1;
    getitem "EmptyBottle", 1;

    mes "[Dying Tree]";
    mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect.";
    goto L_Close;

L_no_water:
    mes "[Dying Tree]";
    mes "You don't have any water.";
    goto L_Close;

L_kiss:
    mes "[Dying Tree]";
    mes "You pluck out a splinter from your lip.";
    mes "Somehow, you don't think that this helped.";
    goto L_Close;

L_do_cut:
    if (countitem("BoneKnife") < 1) goto L_no_boneknife;

    if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut;

    mes "[Dying Tree]";
    mes "You find a suitable branch and put your bone knife in position.";
    mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you...";
    mes "Do you want to continue cutting?";
    next;
    menu
        "Nah... better not.", L_Close,
        "Yes, let's cut!", L_really_cut;

L_really_cut:
    set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_DID_CUTTREE;
    getitem "DruidTreeBranch", 1;
    mes "[Dying Tree]";
    mes "You cut off a branch from the tree.";
    mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand...";
    goto L_Close;

L_no_boneknife:
    mes "[Dying Tree]";
    mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?";
    goto L_Close;

L_happy:
    mes "[Druid Tree]";
    mes "The tree looks younger and healthier now.";
    goto L_Close;

L_Close:
    set @Q_MASK, 0;
    set @Q_SHIFT, 0;
    set @Q_status, 0;
    return;

}

006-1,82,59,0|script|#DruidTree0#_M|400
{
    callfunc "QuestTreeTouch";
    close;
}