summaryrefslogtreecommitdiff
path: root/npc/008-2-4/bernard.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/008-2-4/bernard.txt')
-rw-r--r--npc/008-2-4/bernard.txt222
1 files changed, 222 insertions, 0 deletions
diff --git a/npc/008-2-4/bernard.txt b/npc/008-2-4/bernard.txt
new file mode 100644
index 00000000..a7cd2382
--- /dev/null
+++ b/npc/008-2-4/bernard.txt
@@ -0,0 +1,222 @@
+// Evol scripts.
+// Author:
+// gumi
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - bernard wants roasted maggot
+// [1] 3 - brought maggot
+// [1] 4 - bernard wants maggot slime
+// [1] 5 - brought maggot slime
+// [1] 6 - mikhail needs maggot slime
+// [1] 7 - brought maggot slime
+// [2] unused
+// [3] unused
+// [t] unused
+// Description:
+// Bernard wants to make a maggot slime soup
+
+008-2-4,34,29,0 script Bernard NPC_BERNARD,{
+
+ if (BaseLevel < .min_level)
+ {
+ npctalk3 generic(16 | 32);
+ end;
+ }
+
+ function soup_intro {
+ if (rand(2) == 1)
+ {
+ speech 4,
+ l("The fields are crawling with maggots."),
+ l("Where is Mikhail?"),
+ l("What is taking them so long?"),
+ l("Could I ask a favor of you?");
+ }
+ else
+ {
+ speech 4,
+ l("The taste of maggots in soup is... unforgettable."),
+ l("They taste simply divine!"),
+ l("I sent someone to kill me some maggots and they have yet to return."),
+ l("Would you help me kill some?");
+ }
+
+ if (selectd(l("Yes."), l("No.")) == 2)
+ {
+ return;
+ }
+
+ if (rand(2) == 1)
+ {
+ speech 4,
+ l("Great!"),
+ l("I need a %s for my soup.", getitemlink(.first_item));
+ }
+ else
+ {
+ speech 4,
+ l("Bring me a %s.", getitemlink(.first_item)),
+ l("I'll give you something if you do.");
+ }
+
+ speech 8,
+ l("Please bring it to me!");
+
+ setq .quest, 2;
+ close;
+ }
+
+ function soup_reminder_roasted {
+ speech
+ l("Oh, please hurry and bring me a %s.", getitemlink(.first_item)),
+ l("I'm yearning for maggot soup!");
+ close;
+ }
+
+ function soup_no_room {
+ speech 1 | 8,
+ "...",
+ l("It seems you don't have room for my reward."),
+ l("I'll wait until you do.");
+ close;
+ }
+
+ function soup_reward_roasted {
+ speech 4,
+ l("Oooh, perfect! It's perfect!"),
+ l("You brought me my %s!", getitemlink(.first_item)),
+ l("Here, have some %s for your troubles.",
+ getitemlink(.first_reward_item));
+
+ if (checkweight(.first_reward_item, .first_reward_amount) != true)
+ soup_no_room;
+
+ if (countitem(.first_item) < 1)
+ close;
+
+ delitem .first_item, 1;
+ quest_item(.maxLevel, .first_reward_item, .first_reward_amount);
+ quest_xp(.maxLevel, .first_reward_exp);
+ setq .quest, 3;
+
+ speech 8,
+ l("Now let's see...");
+ close;
+ }
+
+ function soup_ask_slime {
+ speech
+ l("Thank you so much!"),
+ l("But... something is missing to make the soup creamy."),
+ l("I need %d %s for that.",
+ .second_item_qty, getitemlink(.second_item)),
+ l("Bring them to me, and I'll give you something nice.");
+
+ setq .quest, 4;
+ close;
+ }
+
+ function soup_reminder_slime {
+ speech
+ l("Please do hurry and bring me %d %s, so I can finish my soup!",
+ .second_item_qty, getitemlink(.second_item));
+ close;
+ }
+
+ function soup_reward_slime {
+ speech
+ l("Nice!"),
+ l("They're perfect, just perfect!"),
+ l("You brought me the %d %s!",
+ .second_item_qty, getitemlink(.second_item)),
+ l("Here, have some %s as reward.",
+ getitemlink(.second_reward_item));
+
+ if (checkweight(.second_reward_item, .second_reward_amount) != true)
+ soup_no_room;
+
+ if (countitem(.second_item) < .second_item_qty)
+ close;
+
+ delitem .second_item, .second_item_qty;
+ quest_item(.maxLevel, .second_reward_item, .second_reward_amount);
+ quest_xp(.maxLevel, .second_reward_exp);
+ setq .quest, 5;
+
+ close;
+ }
+
+ function soup_thanks_slime {
+ speech
+ l("I didn't mention it before, but I also put beer in my soup."),
+ l("I hope you like beer as much as I do, because, you see..."),
+ l("Beer is life!");
+ close;
+ }
+
+ function soup_thanks_mikhail {
+ speech
+ l("My help, Mikhail, finally returned with the slimes I needed."),
+ l("I wonder what took him so long?");
+ close;
+ }
+
+
+ // OnTalk:
+ switch (getq(.quest))
+ {
+ case 0:
+ case 1: soup_intro; break;
+ case 2:
+ if (countitem(.first_item) < 1)
+ soup_reminder_roasted;
+ else
+ soup_reward_roasted;
+ break;
+ case 3: soup_ask_slime; break;
+ case 4:
+ if (countitem(.second_item) < .second_item_qty)
+ soup_reminder_slime;
+ else
+ soup_reward_slime;
+ break;
+ case 5:
+ case 6: soup_thanks_slime; break;
+ default: soup_thanks_mikhail;
+ }
+
+ closeclientdialog();
+ close;
+
+OnPCLoginEvent:
+OnPCBaseLvUpEvent:
+ if (BaseLevel >= .min_level && getq(.quest) < 1)
+ {
+ setq .quest, 1; // allow the player to do the quest
+ dispbottom l("New quest available: %s (level %d+)",
+ getquestlink(.quest), .min_level); // XXX: requires new manaplus versions, maybe show a different message for old versions?
+ }
+ end;
+
+OnInit:
+ .min_level = 10; // min level to do the quest
+ .maxLevel = 30;
+
+ .first_item = RoastedMaggot;
+ .first_reward_item = CherryCake;
+ .first_reward_amount = 5;
+ .first_reward_exp = 100;
+
+ .second_item = MaggotSlime;
+ .second_item_qty = 3;
+ .second_reward_item = Beer;
+ .second_reward_amount = 3;
+ .second_reward_exp = 100;
+
+ .quest = HurnscaldQuests_Soup;
+ .quest_debug = .quest;
+ .distance = 3;
+
+ end;
+}