summaryrefslogtreecommitdiff
path: root/npc/020-2-34/donutello.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/020-2-34/donutello.txt')
-rw-r--r--npc/020-2-34/donutello.txt166
1 files changed, 166 insertions, 0 deletions
diff --git a/npc/020-2-34/donutello.txt b/npc/020-2-34/donutello.txt
new file mode 100644
index 00000000..8ff494d8
--- /dev/null
+++ b/npc/020-2-34/donutello.txt
@@ -0,0 +1,166 @@
+// 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;
+}