// 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; }