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




                                                                  

                                                        



                                                                           
                                                   

                                                                
 
                                     
 
                                                                    
                                                                            

                              



                                                                                          

                                  
                       
 
                       
                                 


                                                                             

                                                                      
 
                               
           
                                                                                
        
                                                       
                                                                                                                           
 

                               
           


                                                       
        
                                                                           
                                             
 





































































                                                                                                                                   
                                                                                          



























































                                                                                                                                                
                            





                                                                                                                                        
                               








                                                    
                            











                                                               

                                               































                                                                                                                 
                                                                                                                                                                                                  
















                                                                                                                                                              
                         












                                                                                   
            

                                                             
        
                                                                                 

                                                         
                              

       
                    
           
                                                        
                                                                     



                                                                  
                      


             
                                              
                                                                                     
                                                               

        
                    
           
                                       



                                                                  
                                     
                                         

                                  
                                                                                                                               
                       

                                                          
                                     
                    
           

                                                              
                        
                 

                        
                    
           
                                                                                                                  
                 

                     
                    
           
                                                                                                                 
                                                                                                                                   
                 

                   
                    
           





                                                                             
                    
           
                                                                                
        
                                       


                                            
                    

                                                                                                    
                 

         
                      




                                                                                      

                       
             
                    
           
                                                       
                 
 
          
                    
           
                                                                            




                                                                                                
 







                                                                                                

                             
                       
                     

          



































                                                                                                
//  Hetchel the Silk Weaver
//  bh28,
//  2013-03, GPLv2.
//
//  Hetchel is referred to by Lora Tay.
//  She weaves and sells standard double elbow square silk sheets.
//  She could also sell, dyed sheets, Silk robes from Lora Tay.
//  (6000 with cocoons, 40000 (?) with no cocoons).
//
//  @wg_state: variable indicating winter gloves status.
//  Lora Tay proposes silk Robe if (@wg_state>= 11).
//  @SHEET_COCOONS_NR : Number of cocoons required per sheet.
//  Might ne calculated from @ROBE_COCOONS_NR/@ROBE_SHEETS_NR
//  Actually: 150∕6 = 25
//  @SHEET_ZENY       : Money to pay per sheet: A sixth of 10000-2*500-6000
//  @SheetCount Number of sheets to buy (variable).
//
//  @silkpants_state: variable indicating silkpant quest status.

068-2.gat,62,83,0|script|Hetchel|376,
{
    set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
    set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
    set @SHEET_COCOONS_NR, 25;
    set @SHEET_ZENY, 500;
    set @spants_minlvl, 45;
    setarray @spants_req_hmn$, "Silk Cocoons", "Pieces of Cotton Cloth", "Silk Headbands";
    setarray @spants_req$, "SilkCocoon", "CottonCloth", "SilkHeadband";
    setarray @spants_req_amt, 154, 14, 2;
    set @spants_reward, 45000;
    set @spants_job_reward, 10000;
    set @SheetCount, 0;

    if (@wg_state < 11)
        goto L_WG_quest_not_done;
    if ( BaseLevel > @spants_minlvl && @spants_state < 1 ) goto L_Spants_Cry;
    if ( @spants_state == 1 ) goto L_Spants_Cry_2;
    if ( @spants_state == 2 ) goto L_Spants_Start;
    if ( @spants_state > 2 && @spants_state < 8 ) goto L_Spants_Steal;
    if ( @spants_state == 8 ) goto L_Spants_Make;

    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
    menu
        "Sorry to bother, I'm just visiting.", L_Close,
        "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu;

L_WG_quest_not_done:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles.";
    mes "My best client is Lora Tay, at Dimond's.";
    mes "What can I do for you?\"";
    menu
        "Sorry to bother, I'm new to this country, just visting.", L_Close,
        "What are you selling?", L_main_menu;

L_Spants_Cry:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
    menu
        "Sorry to bother, I'm just visiting.", L_Close,
        "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_Spants_Cry_Cont_1;

L_Spants_Cry_2:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
    menu
        "Sorry to bother, I'm just visiting.", L_Close,
        "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
        "Hey you have been crying so badly, can I help you somehow?", L_Spants_Reply_Cry,
        "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears;

L_Spants_Start:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
    menu
        "Sorry to bother, I'm just visiting.", L_Close,
        "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
        "So you are looking for new goals in your life?", L_Spants_No_Cry;

L_Spants_Steal:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
    menu
        "Sorry to bother, I'm just visiting.", L_Close,
        "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
        "About the Pants...", L_Spants_Steal_Cont;

L_Spants_Make:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
    menu
        "Sorry to bother, I'm just visiting.", L_Close,
        "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
        "Hey what about the Pants you were planning to make?", L_Spants_Make_Cont;

L_Spants_Cry_Cont_1:
    mes "You notice how the tiny woman blushes, she suddenly bursts into tears.";
    next;
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Hello\"";
    mes "Hetchel hides her face in her hands";
    mes "";
    mes "";
    menu
        "\"Hey, what is the problem?\"", L_Spants_Reply_Cry,
        "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears,
        "\"Oh really? Just sell me some Silk Sheets if you have them\"", L_main_menu;

L_Spants_Wipe_Tears:
    mes "Hand Hetchel a (please type the Item you want to give her)";
    next;
    mes "This is case sensitive. Also do not enter whitespaces.";
    input @spants_wipe_thingy$;
    if (@spants_wipe_thingy$ == "") goto L_Spants_Wrong;
    if (countitem(@spants_wipe_thingy$) < 1) goto L_Spants_No_Item;
    if (@spants_wipe_thingy$ == "RedCottonCloth") goto L_Spants_Wipe_Tears_Cont;
    if (@spants_wipe_thingy$ == "RedHitchhikersTowel") goto L_Spants_Wipe_Tears_Towel;
    mes "Hetchel looks at you, then looks at the" + @spants_wipe_thingy$ + ".";
    mes "She hangs her head and weeps more";
    mes "Red is the only color I have ever loved, bring me something red to dry my tears";
    goto L_Close;

L_Spants_Wipe_Tears_Towel:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"No, I recognize this towel, it is one of those warping towels, are you trying to mess with me?\"";
    goto L_Close;

L_Spants_Wrong:
    mes "It appears you forgot to type the item you want to give.";
    goto L_Close;

L_Spants_No_Item:
    mes "Oh you do not have it.";
    goto L_Close;

L_Spants_Wipe_Tears_Cont:
    mes "Hetchel dries her tears with the Red Piece of Cloth you gave her.";
    mes "This seems to have consoled her.";
    delitem "RedCottonCloth", 1;
    set @spants_state, 2;
    callsub S_Update_Spants;
    goto L_Spants_No_Cry;

L_Spants_No_Cry:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Oh thank you my dear friend.";
    mes "Yes, to some extent.";
    next;
    mes "I am just so sad because I realized that this is going to be the thing I will be doing for the rest of my life\"";
    menu
        "\"You are still young, Hetchel, You can still accomplish things\"", L_Spants_Cry_Cont_2,
        "\"Yes, you are probably correct.\"", L_Close;

L_Spants_Cry_Cont_2:
    mes "[Hetchel the weaver]";
    mes "";
    mes "Hetchel thinks for a while";
    mes "";
    mes "\"Oh my friend, I have been dreaming of making a garment of my own.";
    mes "It always bothered me to see all those wizards and witches here being naked under their cloaks\"";
    mes "\"They must be so embarrassed - they are true heros to give up their dignity to be able to fight the perils of this world\"";
    mes "Hetchel sobs";
    menu
        "\"So you want to make pants for mages?\"", L_Spants_Cry_Cont_3,
        "\"This sounds ridiculous. Good Bye.\"", L_Close;

L_Spants_Cry_Cont_3:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Ok, so I figured I could make some trousers like Lora Tay makes but from the much finer Material the Silk Worms are making for us\"";
    mes "\"But I really need the base plans for the trousers, otherwise I do not know how to attempt this.";
    mes "Can you get me those plans from her?\"";
    menu
        "\"No, sorry I am too busy for that\"", L_Close,
        "\"Of course!\"", L_Spants_Cry_Cont_4;

L_Spants_Cry_Cont_4:
    set @spants_state, 3;
    callsub S_Update_Spants;
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Oh wait! I am not sure if it is such a good idea to ask her about that, I think she would not give the plans to you anyway.";
    mes "Maybe you can find a way to get those plans on a different way?";
    mes "I think there are some people in Hurnscald who have their means of getting you every possible item there is\"";
    next;
    mes "[Hetchel the weaver]";
    mes "";
    mes "Please please please - I need those plans";
    goto L_Close;

L_Spants_Reply_Cry:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"...\"";
    set @spants_state, 1;
    callsub S_Update_Spants;
    goto L_Close;


L_Spants_Steal_Cont:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Have you gotten hold of the plans?\"";
    menu
        "Yes I have them somewhere here", L_Spants_Steal_Cont2,
        "No, not yet", L_Close;

L_Spants_Steal_Cont2:
    if @spants_state < 7 goto L_Spants_No_Item;
    set @spants_state, 8;
    callsub S_Update_Spants;
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Oh this is miraculous\"";
    mes "";
    mes "Hetchel sheds some tears of joy";
    next;
    mes "You hand her the crumpled plans Crastur the Ugly gave you.";
    next;
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"I need to figure out how to do this now... \"";
    next;
    mes "Hetchel adjusts her glasses and reads carefully";
    next;
    mes "She seems to be very busy, maybe you should come back later.";
    goto L_Close;

L_Spants_Make_Cont:
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Yes, I already made a prototype but it cost me a lot of time and effort.";
    mes "I can give it to you if you are willing to pay for my expenses though.\"";
    menu
        "What do you want for those silken pants?", L_Spants_Make_Cont_2,
        "No, I am not particularly interested.", L_Close;

L_Spants_Make_Cont_2:
    if(getarraysize(@spants_req_amt) < 3 || getarraysize(@spants_req$) < 3 || getarraysize(@spants_req_hmn$) < 3)
        goto L_Spants_Error;
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"I need you to bring me " + @spants_req_amt[0] +" "+ @spants_req_hmn$[0] + ", " + @spants_req_amt[1] +" "+ @spants_req_hmn$[1] + " and " + @spants_req_amt[2] +" "+ @spants_req_hmn$[2];
    next;
    mes "You will not have to pay for my time, I am so proud to have accomplished this on my own!\"";
    menu
        "\"I have those items with me\"", L_Spants_Pay,
        "\"I am still looking for them\"", L_Close,
        "\"What do you need again?\"", L_Spants_Make_Cont_2;

L_Spants_Pay:
    if (countitem(@spants_req$[0]) < @spants_req_amt[0] || countitem(@spants_req$[1]) < @spants_req_amt[1] || countitem(@spants_req$[2]) < @spants_req_amt[2])
        goto L_Spants_No_Item;
    getinventorylist;
    if (inventorylist_count == 100) goto L_TooMany;
    mes "Hetchel takes your items.";
    delitem @spants_req$[0], @spants_req_amt[0];
    delitem @spants_req$[1], @spants_req_amt[1];
    delitem @spants_req$[2], @spants_req_amt[2];
    getitem "SilkPants", 1;
    set @spants_state, 9;
    callsub S_Update_Spants;
    next;
    mes "[Hetchel the weaver]";
    mes "";
    mes "\"Here are your pants my dear.";
    mes "Keep them safe I do not know if I will ever try this again.\"";
    getexp @spants_reward, @spants_job_reward;
    goto L_Close;

L_Spants_Error:
    mes "Something went wrong in the script, please inform a developer about that";
    close;

L_main_menu:
    mes "[Hetchel]";
    mes "\"I have some silk sheets: double-elbow squares.\"";
    menu
        "I'm not interested at the moment, maybe later; thanks anyway.", L_Close,
        "Can I buy some?", L_Next;
//        "Do you have a silk robe I could buy?", L_robe,
//        "Goodbye.", L_Close;

L_Next:
    mes "[Hetchel]";
    mes "";
    mes "\"Sure but you need to provide raw materials.";
    mes "I'll need " + @SHEET_COCOONS_NR +" silk cocoons per sheet,";
    mes "and also " + @SHEET_ZENY +" GP per sheet for my work.\"";
    next;
    if (countitem("SilkCocoon") == 0)
        goto L_sheet_no_cocoon;
    goto L_sheet_menu;

L_sheet_menu:
    menu
        "I have what you asked for.", L_Next1,
        "Sorry I didn't pay attention enough, what do you need?", L_how_many_cocoons,
        "Oops! Sorry, I'll come back soon with them.", L_Close;

L_Next1:
    mes "[Hetchel]";
    mes "";
    mes "\"How many would you like?\"";
    input @SheetCount;
    if (@SheetCount == 0)
        goto L_zero_sheet;
    if (countitem("SilkCocoon") < @SheetCount * @SHEET_COCOONS_NR)
        goto L_sheet_missing_cocoons;
    if (Zeny < @SheetCount * @SHEET_ZENY)
        goto L_sheet_missing_Zeny;
    getinventorylist;
    if (@inventorylist_count == 100 && countitem("SilkSheet") < 1 && countitem("SilkCocoon") > @SheetCount * @SHEET_COCOONS_NR)
        goto L_TooMany;
    set Zeny, Zeny - @SheetCount * @SHEET_ZENY;
    delitem "SilkCocoon", @SheetCount * @SHEET_COCOONS_NR;
    getitem "SilkSheet", @SheetCount;
    mes "[Hetchel]";
    mes "";
    mes "\"Thank you, I hope the sheets will fit your needs.";
    mes "Please greet Lora for me when you see her.\"";
    emotion EMOTE_HAPPY;
    goto L_Close;

L_sheet_missing_cocoons:
    mes "[Hetchel]";
    mes "";
    mes "\"I'm sorry, but I need " + @SheetCount * @SHEET_COCOONS_NR + ", not " + countitem("SilkCocoon") + ".\"";
    goto L_Close;

L_sheet_missing_Zeny:
    mes "[Hetchel]";
    mes "";
    mes "\"No, no no. The way this works is that you give me the GP first and I give you the sheets afterwards.";
    mes "You're " + (@SheetCount * @SHEET_ZENY - Zeny) + " GP short, so come back when you can afford the sheets you asked for!\"";
    goto L_Close;

L_how_many_cocoons:
    mes "[Hetchel]";
    mes "";
    mes "\"I need an average of " + @SHEET_COCOONS_NR + " cocoons per sheet";
    mes "and also " + @SHEET_ZENY + " GP per sheet for my work.\"";
    next;
    goto L_sheet_menu;

L_sheet_no_cocoon:
    mes "[Hetchel]";
    mes "";
    mes "\"You don't have any cocoon? I'm sorry I can't do anything for you.\"";
    menu
        "I'll seek for them.", L_Close,
        "Where can I get cocoons?", L_Next2;

L_Next2:
    mes "[Hetchel]";
    mes "\"Silk cocoons come from Silkworms. Silkworms live in the woodland area around Hurnscald.";
    mes "Silkworms like especially woods and dark areas. You can go there by ferry.\"";
    goto L_Close;

//L_robe:
//    mes "[Hetchel]";
//    mes "\"I am not a seamstress but I have a few silk robes from Lora Tay left.";
//    mes "It is not your size as Lora made them for me, but Tondar was kind enough";
//    mes "to cast a spell on it, so that it will fit to you as soon as you wear it.";
//    mes "However his prices are not that low.\"";
//    next;
//    goto L_main_menu;

L_zero_sheet:
    mes "[Hetchel]";
    mes "";
    mes "\"It's the best way to get quickly served!\"";
    goto L_Close;

L_TooMany:
    mes "[Hetchel]";
    mes "";
    mes "\"Your bag hasn't room enough. Store some things and come back.\"";
    goto L_Close;

S_Update_Spants:
    set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
    return;

L_Close:
    set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
    set @wg_state, 0;
    set @spants_state, 0;
    set @spants_minlvl, 0;
    set @spants_reward, 0;
    set @spants_job_reward, 0;
    set @spants_wipe_thingy, "";
    set @SHEET_COCOONS_NR, 0;
    set @SHEET_ZENY, 0;
    set @SheetCount, 0;
    set @wg_state, 0;
    close;
}

068-2.gat,60,83,0|script|HetchelDebug|376,
{
set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);

mes "Lora Tay Quest State: "+ @wg_state;
mes "Silk Pants Quest State: "+ @spants_state;

menu
    "Set Lora Tay Quest State", L_Lora_Tay,
    "Set Silk Pants Quest State", L_Spants,
    "Close", L_Close;

L_Lora_Tay:
    mes "Set Lora Tay Visited State (0 - reset , 11 - enough for SilkPants Quest)";
    input @wg_state;
    goto L_Close;

L_Spants:
    mes "Set SilkPants Quest State (0 - reset)";
    input @spants_state;
    goto L_Close;

L_Close:
    set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT));
    set @wg_state, 0;
    set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
    set @spants_state, 0;
    close;

OnInit:
    if (!debug)
        disablenpc "HetchelDebug";
    end;
}