diff options
Diffstat (limited to 'npc/008-2-4/bernard.txt')
-rw-r--r-- | npc/008-2-4/bernard.txt | 222 |
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; +} |