summaryrefslogblamecommitdiff
path: root/npc/009-2/ryan.txt
blob: 2230c792f14c4a6fd745e51c5ba2243d5b8540f5 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                            
                                    

                                                           
                                                    
                 
                        
                      
                            
                      
                            
        
                                         
 







                                                                                                                  
                                                                      
                                                                                       

                            

                                   


                              
                                                     
 



                                                        
                               

                                                 
                                            



                             
                                                       


                                          
                                            
                           
                         


                                                                                  
     




                          
                    

                                               
                                                                    
     
 







                                  
                                                                 


                                            
                               





                                                                                                                     
                    

                                               
     
















                                    
                    

                                                 
     
                                                                     

                                            
                                                                                                                                       
                                
                                 
                                
                                   

                                       
                                                   
                                                         

             
                                                                                                                                                 

                                                



                                             
     







                                          




                                                                                                          








                                                                                                                  




















































                                                                                                                                                       
       
                               


                                                         
                                            




                                            




                                                                              


        
// TMW-2 Script.
// Author:
//    Saulc
//    Jesusalva
// Notes:
//    Buys Tonori Delight

009-2,29,57,0	script	Ryan	NPC_PLAYER,{
    if (BaseLevel < 17) goto L_Weak;
    if (!getq(HalinarzoQuest_LifeDelight)) goto L_Prologue;
    .@q=getq2(HalinarzoQuest_LifeDelight);
    // This code is duplicated in npc/024-1/john.txt
    if (.@q < 20)
        .@a=(.@q**2)+18;
    else if (.@q < 40)
        .@a=400+18*(.@q-24);
    else if (.@q < 50)
        .@a=670+10*(.@q-39);
    else
        .@a=780+(.@q*(.@q < 75 ? 1 : 2));

    if (.@q > 100) goto L_Complete;
    mesn;
    mesq l("Ah, I just wanted @@... Yummy, lovely @@...", getitemlink(TonoriDelight), getitemlink(TonoriDelight));
    next;
    mesn;
    mesq l("If you bring me @@ @@, I'll give you a reward!", .@a, getitemlink(TonoriDelight));
    next;
    select
        rif(countitem(TonoriDelight) >= .@a, l("I have everything!")),
        rif(getskilllv(TMW2_COOKING), l("Actually, could you teach me some recipes?")),
        l("Ah, not now...");
    mes "";
    if (@menu == 2) goto L_Cooking;
    if (@menu == 3)
        close;

    inventoryplace ChefHat, 1;
    inventoryplace PlatinumIngot, 1, IridiumIngot, 2;

    // Generic rewards: XP Boost (.@l) and GP boost (.p)
    .@l=BaseLevel+JobLevel;

    // Main reward
    delitem TonoriDelight, .@a;
    getexp rand(.@a, .@a*2)+.@q*rand(10,30), .@l;
    Zeny=Zeny+.@a*.p;
    setq2 HalinarzoQuest_LifeDelight, .@q+1;
    mesn;
    mesq l("Hmmm... Yummy!");

    // Landmark rewards
    // Chef hat last stage: 120 Delights - 583 in total
    .@r=getq(HalinarzoQuest_LifeDelight);
    .@q=getq2(HalinarzoQuest_LifeDelight);
    if (.@r < 2 && .@q >= 11) {
        setq1 HalinarzoQuest_LifeDelight, 2;
        getitem ChefHat, 1;
        getexp 13500, 10;
        next;
        mesn;
        mesq l("Ah, you really deserve this @@. Good job!", getitemlink(ChefHat));
    }

    // Bonus stage
    if (.@q == 20)
        getitem Coffee, 1;

    if (.@q >= 21) {
        Zeny+=rand2(1,.@a)*.p;
        getexp rand2(1,.@q)*.@l, rand2(1, .@q);
        Mobpt+=.@q; // From now on, Monster Points will be generated
    }

    // Bonus stage
    if (.@q == 30)
        getitem Manapple, 1;

    // Bonus stage
    if (.@q == 40)
        getitem LoFWarpCrystal, 1;

    // Elixir Of Life last stage: ~780 Delights - 20,890 in total
    if (.@r < 3 && .@q >= 51) {
        setq1 HalinarzoQuest_LifeDelight, 3;
        getitem ElixirOfLife, 1;
        getitem MylarinDust, 1;
        getexp 30000, 5000;
        next;
        mesn;
        mesq l("Hey, take this @@. It heals fully but who cares, I have Tonori Delight!", getitemlink(ElixirOfLife));
    }

    if (.@q >= 51) {
        Zeny+=rand2(.@q,.@a)*.p;
        getexp rand2(1,.@a)*.@l, rand2(1, .@q);
    }

    // Bonus stage
    if (.@q == 60)
        getitem SacredLifePotion, 1;

    // Bonus stage
    if (.@q == 70)
        getitem MercBoxDD, 1;

    // Bonus stage
    if (.@q == 80)
        getitem DivineApple, 1;

    // Bonus stage
    if (.@q == 90)
        getitem MysteriousFruit, 1;

    if (.@q >= 91) {
        Zeny+=rand2(.@a, .@a+.@q)*.p;
        getexp rand2(.@q,.@a)*.@l, rand2(1, .@q);
    }
    // Platinum + Iridium last stage: ~980 Delights - 64,960 in total
    if (.@r < 4 && .@q == 100) {
        setq1 HalinarzoQuest_LifeDelight, 4;
        kamibroadcast(sprintf("Hear me, hear me! %s is the coolest player in the whole world!!!!", strcharinfo(0)), "Ryan Henryfield");
        getitem SunnyCrystal, 1;
        getitem PlatinumIngot, 1;
        getitem IridiumIngot, 2;
        getitem SaviorBlueprint, 1;
        getitem EquipmentBlueprintE, 2;
        getitem AlchemyBlueprintE, 2;
        Mobpt+=1000000; // 1 Million Monster Points
        getexp 500000, 50000; // Reference: Lv 74 / Lv 38
        next;
        mesn;
        mesq l("Ah, I have enough @@ for a life! Take this EXTREMELY RARE @@. Good job!", getitemlink(TonoriDelight), getitemlink(SunnyCrystal));
        mesc l("Got Master Blueprints!");
        mesc l("Got 1,000,000 Monster Points!");
        // Heheheh...
        $@DROP_EVENT=25;
        $@DROP_EVENT_TIME=1;
        donpcevent "@droprate::OnPlayerCall";
    }

    close;

L_Complete:
    mesn;
    mesq l("Thanks for the help! Yummy!");
    close;

L_Weak:
    mesn;
    mesq l("How did you even got here? There are dangerous swamps north, and dangerous deserts south...");
    close;

L_Prologue:
    setq HalinarzoQuest_LifeDelight, 1, 0;
    mesn;
    mesq l("Ah, I just wanted @@... Yummy, lovely @@...", getitemlink(TonoriDelight), getitemlink(TonoriDelight));
    next;
    mesn;
    mesq l("There's a big prize in the end... Could you bring me some later?");
    close;

L_Cooking:
    .@total = getq3(HalinarzoQuest_LifeDelight);
    mesn;
    mesq l("Hmmm? Oh, a true connoisseur, I see! That's a rare sight these days.");
    next;
    mesn;
    mesq l("I certainly can teach you some recipes. I work mostly with dessert-like plates. This includes %s by the way.", getitemlink(ZombieNachos));
    next;
    .@q=getq2(HalinarzoQuest_LifeDelight);
    .@min = 10 * .@total + 20;
    if (.@q < .@min) {
        mesn;
        mesq l("If you fulfill my request for %s %d more times, I'll gladly impart a new recipe with you.", getitemlink(TonoriDelight), (.@min - .@q));
        close;
    }
    // Prepare a list of recipes you still haven't learned
    if (!RECIPES_COOKING[CraftCaramelApple])
        array_push(.@recipes, CraftCaramelApple);
    if (!RECIPES_COOKING[CraftFruitSalad])
        array_push(.@recipes, CraftFruitSalad);
    if (!RECIPES_COOKING[CraftZombieNachos])
        array_push(.@recipes, CraftZombieNachos);
    if (!RECIPES_COOKING[CraftPancake])
        array_push(.@recipes, CraftPancake);

    // Check if there *are* recipes to be learned
    if (!getarraysize(.@recipes)) {
        mesn;
        mesq l("...Except that I already told you everything I knew. So I wish you luck in your cooking journey!");
        close;
    }

    // Decide on a random recipe that you'll now learn
    array_shuffle(.@recipes);
    .@new = array_pop(.@recipes);
    // FIXME: Actually broken but who cares
    .@const$ = data_to_string(.@new);
    .@item = string_to_data(substr(.@const$, 5, getstrlen(.@const$) - 1));

    // Actually teach you the recipe
    setq3 HalinarzoQuest_LifeDelight, .@total + 1;
    RECIPES_COOKING[.@new] = true;

    // Some text so you know what you learned
    mesn;
    mesq l("So, today I'll teach you the %s recipe.", getitemlink(.@item));
    next;
    mesc l("Some time later...");
    mes "";
    mesn;
    mesq l("Good. I also noted it down in your Recipe Book. The path of culinary is an arduous one but the fruits it yields are sweet!");
    close;

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, ChefHat);
    setunitdata(.@npcId, UDT_HEADMIDDLE, SilkRobe);
    setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers);
    setunitdata(.@npcId, UDT_WEAPON, Boots);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 26);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 2);

    .sex = G_MALE;
    .distance = 4;
    .p=97; // Price in GP of each Tonori Delight.
    // real price is 556 in ingredients (this gets a x2 sell price)
    // + 120 GP of taxes
    // Total: 676 GP per batch (5~9 units). We consider the average batch (7).
    // NO EXTRA PROFIT IS REQUIRED/ALLOWED.
    end;
}