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




               





                                                                                    

                                    

                                            
                                     
 
                                              
                                       
                               

                                



                                             
 
                                            
                                    

                                    

                                



                 

                                      
         
                                                                                                                                                                                                             
           
          
                                                                                                    
                                                                                                  



                                    
                                                               


                                                      
                           
                                    


                                       

                         
                                                               

                                                    
                           
                                    


                                       

                         
          
 
          
         
                                                                 

         
                                                                                                                             

          

         




                                                                                               
                                                                            

          

         
                                                                                           
          



                                 
                                                                        

         
                                                                                                                                                                                 

         
                                                                                                                                            


                                                                    
                                                                                        
          

                                                                        




                                   
                                          



          
                                                                                                                 









                                                                          
                                         

                                   



                                                                                                               

         
                                                                                                    

         
                                                                                                               



                                 

         
                                                           
         



                                                                                                              
                                                                                                                                                     

         
                                                                                                  

         
                                                                                                                                                 
         

                                        
                                                                                                                                                     

             
         


                                                                                                                  
         

                                                                
                                                                  


                   
                                   
         
                       



                                                                                    
                                                                                                                   

          
       
         
                                                                                                                                                    

           
                                                               




                                                                          
                                            
                           

                            
                   
                                         
                                   
         
                                                                             

         
                                                                                                     
         
                                                                                                                                                                                              

          
 
                                 

             
                                                                                                                            

         
                                                                                                                                 

         


                                                                                                                                                    

         
                                                                                                                                      











                                                                                           
                                                                               

         


                                                                                                             

         
                                                                                                                     
          
 

         
                                                                                                                                          

         
                                                                                                             
         


                                           
                           
                                                         
                                   
         
                                                                                                                                       

         


                                                                                                                    

          
       
                               










                                                      
// TMW2 Script.
// Author:
//    Jesusalva
// Description:
//    Lena
// Variables:
//      $HELENA_ST
//          Tracks how many set of Treasure Keys were given by all players thus far.
//          Affects beer prices on Hurnscald.
//      HurnscaldQuest_Bandits
//          q1 -> Current status
//          q2 -> Treasure Key Timer
//          q3 -> Bandit Hood Timer

012-2,47,40,0	script	Helena	NPC_FEMALE,{
    .@q=getq(HurnscaldQuest_Bandits);

    // Stage 1: Level 30, collect Treasure Key
    if (BaseLevel < 30) goto L_TooWeak;
    if (.@q == 0) goto L_Start;
    if (.@q == 1) goto L_Return;

    // Stage 2: Level 40, collect Bandit Hood
    if (BaseLevel < 40) goto L_Weak;
    if (.@q == 2) goto L_Quest;
    if (.@q == 3) goto L_Hood;

    // Stage 3: Level 45, defeat Bandit Lord
    if (BaseLevel < 45) goto L_Busy;
    if (.@q == 4) goto L_BanditLord;
    if (.@q == 5) goto L_Busy;
    if (.@q == 6) goto L_Busy;
    if (.@q == 7) goto L_Finish;

    goto L_Daily;

L_Daily:
    .@k=getq2(HurnscaldQuest_Bandits);
    .@h=getq3(HurnscaldQuest_Bandits);
    mesn;
    mesq l("Ah, %s my friend! Are you here to help us with 5 %ss Or perhaps you have 5 more %s to show that Hurnscald is getting safer?", strcharinfo(0), getitemlink(TreasureKey), getitemlink(BanditHood));
    mes "";
    select
        rif((.@k < santime()) && countitem(TreasureKey) >= 5, l("I have 5 Treasure Keys with me.")),
        rif((.@h < santime()) && countitem(BanditHood) >= 5, l("I have 5 Bandit Hoods with me.")),
        l("Nothing at the moment.");
    mes "";
    switch (@menu) {
        case 1:
            setq2 HurnscaldQuest_Bandits, santime()+(60*60*24);
            delitem TreasureKey, 5;
            Zeny=Zeny+600; // 600/550 = 9.09% bonus
            //Zeny=Zeny+800; // 800/550 = 45.45% bonus
            getexp 2000, 0;
            $HELENA_ST=$HELENA_ST+2;
            mesn;
            mesq l("Many thanks! %%s");
            next;
            goto L_Daily;
        case 2:
            setq3 HurnscaldQuest_Bandits, santime()+(60*60*24);
            delitem BanditHood, 5;
            Zeny=Zeny+250; // 250/155 = 61.29% bonus
            getexp 3000, 5;
            $HELENA_ST=$HELENA_ST+1;
            mesn;
            mesq l("Many thanks! %%s");
            next;
            goto L_Daily;
    }
    close;

L_TooWeak:
    mesn;
    mesq lg("Good day, adventureress.", "Good day, adventurer.");
    next;
    mesn;
    mesq l("We have some serious problems involving bandits. I need someone strong to help me, and you don't qualify. Yet.");
    close;

L_Weak:
    mesn;
    mesq l("You still need to grow a few levels more before being able to help me out again.");
    close;

L_Busy:
    mesn;
    mesq l("Sorry, %s. Please come back later, I am busy.", strcharinfo(0));
    close;

L_DoIt:
    mesn;
    mesq l("%s, we are counting on you! We, the whole town of Hurnscald!", strcharinfo(0));
    close;

///////////////////////// Stage 1
L_Start:
    mesn;
    mesq l("Bandits ransacked this tavern and left with a giant haul.");
    next;
    mesn;
    mesq l("We chased after them after they fled into the deep tunnels of the mines. It was a heated battle but we have slain them all and got the chests with our stuff back.");
    next;
    mesn;
    mesq l("The problem is... The slimes ate all the keys for the chests. Blasted slimes! This is not the first time such thing happened.");
    next;
    // 5 ÷ 4.5% = 112 Copper Slimes. You can kill Yellow Slimes too
    mesn;
    mesq l("If you bring us 5 %ss I'll be forever grateful.", getitemlink(TreasureKey));
    select
        l("Don't worry ma'am, I'll recover the Treasure Keys at once."),
        l("Slimes... Sorry, not my cup of tea...");
    mes "";
    if (@menu == 2)
        close;
    setq HurnscaldQuest_Bandits, 1;
    mesn;
    mesq l("I'll be expecting you back.");
    close;

L_Return:
    mesn;
    mesq l("Did you bring me what I asked? You have %d/5 %s.", countitem(TreasureKey), getitemlink(TreasureKey));
    mes "";
    select
        rif(countitem(TreasureKey) >= 5, l("Yes, take it.")),
        rif(countitem(TreasureKey) < 5, l("No, I'll be back with them.")),
        l("Hm, can we talk again later?");
    mes "";
    if (@menu != 1)
        close;
    delitem TreasureKey, 5;
    Zeny=Zeny+1000;
    getexp 1599,0; // 20% from needed exp
    setq HurnscaldQuest_Bandits, 2;
    mesn;
    mesq l("Finally! The regulars were close to rioting due to lack of ale.");
    next;
    mesn;
    mesq l("Here are %s GP for your efforts. Thanks for making Hurnscald a better place to live.", fnum(1000));
    next;
    mesn;
    mesq l("This might happen again in the future, so we are always gathering them, just in case.");
    next;
    mesn;
    mesq l("If you continue gathering %ss, we are able to lower our ale price! %%2", getitemlink(TreasureKey));
    close;


///////////////////////// Stage 2
L_Quest:
    mesn;
    mesq l("%s, good thing you are here.", strcharinfo(0));
    next;
    mesn;
    mesq l("Bandits are a huge threat to Hurnscald. We're just a small farming town, and they're countless.");
    next;
    mesn;
    mesq l("I did travel to their cave, wondering why they hide their faces. I found out most of them are monsters after I ripped their hoods off.");
    next;
    mesn;
    mesq l("A few of them are rebels, outcasts and the like but the vast majority are monsters.");
    next;
    mesn;
    mesq l("Unfortunately, they placed a curse on me using a %s preventing me from entering their cave ever again.", getitemlink(BlueManaPearl));
    next;
    if (countitem(BlueManaPearl) >= 1) {
        mesn;
        mesq l("Be very, very careful with your %s. Handling it incorrectly may be fatal and many people died to that.", getitemlink(BlueManaPearl));
        next;
    }
    mesn;
    mesq l("Thankfully that item is very rare, so they will not be able to place a curse on you. Probably.");
    next;
    mesq l("I want somebody to slay the bandit leader, but if you want to do it, you must prove yourself first.");
    next;
    select
        l("I would gladly aid you to get rid of that scourge."),
        l("Sorry, I forgot my courage in my other set of pants.");
    mes "";
    if (@menu == 2)
        close;
    setq HurnscaldQuest_Bandits, 3;
    mesn;
    mesq l("Perfect!");
    next;
    // 8% drop. 10 / 8% = avg. 125 bandits to kill
    // And for once, I won't require these bandits to be from Hurnscald Bandit Cave.
    mesn;
    mesq l("As a warm-up, bring me 10 %ss. I'll pay you some money for that, of course.", getitemlink(BanditHood));
    close;

L_Hood:
    mesn;
    mesq l("%s, did you bring me the hoods I asked for? I see you have %d/10 %ss.", strcharinfo(0), countitem(BanditHood), getitemlink(BanditHood));
    mes "";
    select
        rif(countitem(BanditHood) >= 10, l("Yes, take them.")),
        rif(countitem(BanditHood) < 10, l("No, I'll be back with them.")),
        l("Hm, can we talk again later?");
    mes "";
    if (@menu != 1)
        close;
    inventoryplace LeatherPatch, 1, Beer, 1;
    delitem BanditHood, 10;
    getitem LeatherPatch, 1;
    getitem Beer, 1;
    Zeny=Zeny+2000;
    getexp 6842,0; // 20% from needed exp
    setq HurnscaldQuest_Bandits, 4;
    mesn;
    mesq l("Great job. I was worried you would ruin their hoods in combat.");
    next;
    mesn;
    mesq l("Here are 2000 GP for your efforts. Thanks for making Hurnscald a better place to live.");
    next;
    mesc l("I also gave you a fresh ale and a %s. Bows are awkward to handle, so you should talk to the Blacksmith to make you a %s.", getitemlink(LeatherPatch), getitemlink(LeatherQuiver));
    close;


///////////////////////// Stage 3
L_BanditLord:
    mesn;
    mesq l("I won't say you can't do it, %s. But I will just say killing the Bandit Lord is no easy task.", strcharinfo(0));
    next;
    mesn;
    mesq l("The %s is not only a fearsome and ruthless opponent, he has some tricks up his sleeve.", getmonsterlink(BanditLord));
    next;
    mesn;
    mesq l("He will summon allies if he thinks you have the upper hand, depending on how you fight.");
    next;
    mesq l("If you go for melee, he will summon archers to keep his distance. If you use a bow, he will summon normal bandits to cut your throat.");
    next;
    mesn;
    mesq l("I know another Bandit Lord will take his place, but the loss of their leader will make the bandits scatter long enough.");
    next;
    mesn;
    mesq l("Will you help me- no, I mean, will you help us, the whole town of Hurnscald?");
    next;
    select
        l("Sorry, I need to better prepare myself."),
        l("I would gladly give my life for such noble goal.");
    mes "";
    if (@menu == 1)
        close;
    setq HurnscaldQuest_Bandits, 5;
    mesn;
    mesq l("...You are brave. Or very foolish. Many people tried and failed.");
    next;
    mesn;
    mesq l("The den of the bandit lord is located northeast from here in a cave, hidden quite deep inside.");
    next;
    mesq l("I have a guard stationed not far from there. Ask him for the key.");
    next;
    mesn;
    mesq l("Good luck, you'll need it. This is a difficult task, so don't hesitate in running away if you need to.");
    close;

L_Finish:
    mesn;
    mesq l("...The bandits are in disarray. And you arrive victorious. I have to admit, I thought had fallen, just like the other ones.");
    next;
    mesn;
    mesq l("I am pleasantly surprised. Good job. Perhaps we will all be able to sleep in peace this night!");
    next;
    inventoryplace ForestArmor, 1, Beer, 3;
    inventoryplace Beer, 3;
    getitem Beer, 3;
    getitem ForestArmor, 1;
    getexp 5842,93; // 10% from needed exp + JExp level 6
    setq HurnscaldQuest_Bandits, 8;
    mesn;
    mesq l("You deserve this old %s of mine. They are great for skilled rangers and offer good protection.", getitemlink(ForestArmor));
    next;
    mesn;
    mesq l("You are always welcome in the tavern and I would truly like to see you come by for some ale sometime.");
    next;
    mesq l("Of course, there are also always daily chores to do, if you are more interested in that. %%Q");
    close;

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, FairyHat);
    setunitdata(.@npcId, UDT_HEADMIDDLE, ForestArmor);
    setunitdata(.@npcId, UDT_HEADBOTTOM, CottonSkirt);
    setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 17);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 7);

    .sex = G_FEMALE;
    .distance = 5;
    end;
}