// The Mana World scripts. // Author: // Jesusalva // Description: // Donutello is the Donut Apprentice 020-2-34,33,48,0 script Donutello NPC_CHEF_LEGACY,{ function foodQuestline; // Instance behavior if (instance_id() > 0) { npctalk3 l("Time remaining: %s" , FuzzyTime(@tinner)); end; } mesn; mesq l("Why are you here? Only staff and VIP are supposed to go down here."); .@q=getq(General_Cooking); if (.@q > 11) foodQuestline(); close; function foodQuestline { .@q=getq(General_Cooking); .@q2=getq2(General_Cooking); mes ""; select rif(.@q == 12, l("Can you teach me how to cook sweets?")), rif(.@q == 13, l("Rattos killed. So, my recipe...")), l("What is the area, anyway?"), l("Erm, wrong door, sorry."); mes ""; switch (@menu) { case 1: mesn; mesq l("What? But the recipes are the pride of Tulimshar Inn, and-- Oohhhh.... Maybe..."); next; mesn; mesq l("Hey, I can teach the %s recipe. However...", getitemlink(Donut)); next; select l("Oh no - I'm not your personal delivery guy! Bye bye!"), l("Here we go again..."); mes ""; if (@menu == 1) break; mesn; mesq l("I am scared of the rattos! And Riskim says that we cannot have rattos here, so he also wants me to kill them!! %%i"); next; mesn strcharinfo(0); select l("Sounds cliché, but okay, I'll help."), l("They're just rattos?"); mes ""; mesn; mesq l("Oh, but they aren't only fast - they're more vicious than common rattos, from all the sugar they eat. And if you take too long killing them, Riskim will hear and - things will turn out badly!"); next; mesc l("Accept quest?"), 1; mesc l("Time limit: %s", l("2 minutes")); .@mapn$="Tinn@"+getcharid(0); if (askyesno() == ASK_NO) break; if (instanceowner(@tinnst) != getcharid(3)) { @tinnst = instance_create("T.INN "+getcharid(0), getcharid(3), IOT_CHAR); instance_attachmap("020-2-34", @tinnst, false, .@mapn$); instance_set_timeout(120, 120, @tinnst); instance_init(@tinnst); } else { instance_set_timeout(120, 120, @tinnst); } @tinner = gettimetick(2) + 120; killmonsterall(.@mapn$); for (.@i = 0; .@i < 4; .@i++) { .@mob=areamonster(.@mapn$, 32, 50, 52, 57, strmobinfo(1, Ratto), Ratto, 1, "Donutello::OnRattoKill"); // Make them vicious .@bhp= getunitdata(.@mob, UDT_MAXHP); .@bat1=getunitdata(.@mob, UDT_ATKMIN); .@bat2=getunitdata(.@mob, UDT_ATKMAX); .@bhit=getunitdata(.@mob, UDT_HIT); setunitdata(.@mob, UDT_MAXHP, .@bhp*22/10); setunitdata(.@mob, UDT_HP, .@bhp*22/10); setunitdata(.@mob, UDT_ATKMIN, .@bat1*27/10); setunitdata(.@mob, UDT_ATKMAX, .@bat2*27/10); setunitdata(.@mob, UDT_HIT, .@bhit*20); } warp .@mapn$, 37, 50; dispbottom l("Time remaining: %s", FuzzyTime(@tinner)); closeclientdialog; close; break; case 2: mesn; mesq l("Phew, thanks %s. These rattos were going to be the ruin of me!", strcharinfo(0)); next; mesn; mesq l("However, you must bring me %d %s, %d %s and %d %s. Because the ingredients are you!", 6, getitemlink(AcornFlour), 2, getitemlink(MoubooMilk), 2, getitemlink(ChocolateBar)); next; mesn; mesq l("Erm, Acorn Flour is made of mashed up acorns. %d Acorns make one flour. So, I'll accept the acorns instead of the flour as you helped me a lot.", 3); next; mesc l("Deliver the ingredients?"), 1; mesf("- %d %s", 18, getitemlink(Acorn)); mesf("- %d %s", 2, getitemlink(MoubooMilk)); mesf("- %d %s", 2, getitemlink(ChocolateBar)); mes ""; if (askyesno() == ASK_NO) break; if (countitem(ChocolateBar) < 2 || countitem(MoubooMilk) < 2 || countitem(Acorn) < 18) break; inventoryplace Donut, 1; delitem Acorn, 18; delitem MoubooMilk, 2; delitem ChocolateBar, 2; setq1 General_Cooking, 14; RECIPES[CraftDonut]=true; getitem Donut, 1; mesn; mesq l("Great, thanks! If you need more flour you can ask Riskim. He also buys flour for a good price."); next; mesn; mesq l("First divide the ingredients on two halves. Take the first half, mix them, bring the oven, and blablablablah...."); next; mesn; mesq l("And after a while, you have %s! I made two with the ingredients you gave me, one for you and one for me. This is my thankyou for helping me out on the storeroom. Enjoy!", getitemlink(Donut)); break; case 3: mesn; mesq l("Up there is the Casino. Erm, it is totally legal, I swear."); next; mesn; mesq l("Here is the storeroom, and... Hey! I don't need to answer you questions!!"); break; } return; OnRattoKill: if (!playerattached()) end; // FIXME - Make sure this is an instanced map //if (instance_id() < 1) end; if (mobcount(getmap(), "Donutello::OnRattoKill") <= 0) { dispbottom l("I'm done with this."); getmapxy(.@m$, .@x, .@y, 0); setq1 General_Cooking, 13; sleep2(1000); // Give you some time to loot warp "020-2-34", .@x, .@y; sleep2(500); // Give M+ some time to re-render everything npctalk3 l("Thanks %s... I feel much safer now!", strcharinfo(0)); } else { dispbottom l("Rattos remaining: %d", mobcount(getmap(), "Donutello::OnRattoKill")); } end; } OnInit: .distance = 4; end; }