summaryrefslogtreecommitdiff
path: root/npc/008-2-13/lena.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/008-2-13/lena.txt')
-rw-r--r--npc/008-2-13/lena.txt270
1 files changed, 270 insertions, 0 deletions
diff --git a/npc/008-2-13/lena.txt b/npc/008-2-13/lena.txt
new file mode 100644
index 00000000..1de7a98b
--- /dev/null
+++ b/npc/008-2-13/lena.txt
@@ -0,0 +1,270 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Jesusalva
+// Description:
+// Lena the Bowwoman.
+
+008-2-13,27,27,0 script Lena NPC_LENA,{
+ .@q=getq(HurnscaldQuest_Bandits);
+ // Declare all functions
+ // Stage 1
+ function lenaTooWeak;
+ function lenaStart;
+ function lenaReturn;
+ // Stage 2
+ function lenaQuest;
+ function lenaCoinBag;
+ // Stage 3
+ function lenaBusy;
+ function lenaBusy2;
+ function lenaBanditLord;
+ function lenaFinish;
+ // Post stage
+ function lenaDaily;
+
+ switch (.@q) {
+ // Stage 1
+ case 0:
+ if (BaseLevel < .minLevel_1)
+ lenaTooWeak();
+ lenaStart();
+ break;
+ case 1:
+ lenaReturn();
+ break;
+ // Stage 2
+ case 2:
+ if (BaseLevel < .minLevel_2)
+ lenaTooWeak();
+ lenaQuest();
+ break;
+ case 3:
+ lenaCoinBag();
+ break;
+ // Stage 3
+ case 4:
+ if (BaseLevel < .minLevel_1)
+ lenaBusy();
+ lenaBanditLord();
+ break;
+ case 5:
+ case 6:
+ lenaBusy2();
+ break;
+ case 7:
+ lenaFinish();
+ break;
+ }
+ close;
+
+function lenaDaily {
+ // DailyQuest(lvl, cost, count, item)
+ DailyQuest(40, 4, 10, CoinBag);
+ return;
+}
+
+// ------------------------------------
+function lenaTooWeak {
+ speech
+ l("Hey."),
+ l("Did you hear about the Bandit's attacks? They must have a hideout somewhere outside Hurnscald."),
+ l("However, you are too weak to help me, so come back later.");
+ close;
+}
+
+function lenaBusy {
+ speech
+ l("Hey."),
+ l("Ah, I wish my dear friend Nickos could be here. He's one of the guards in Tulimshar and he'd know how to deal with those outlaws!"),
+ l("I will inform you when I have more information about the bandits.");
+ close;
+}
+
+function lenaBusy2 {
+ mesn;
+ mesq l("%s, we are counting on you! We, the whole Hurnscald town!", strcharinfo(0));
+ close;
+}
+
+// ------------------------------------ Stage 1
+function lenaStart {
+ mesn;
+ mesq l("Ah, hello.");
+ next;
+ mesn;
+ mesq l("We actually have a problem. Bandits ransacked Hurnscald, and took a huge loot.");
+ next;
+ mesn;
+ mesq l("We pursued them until the mines, slayed them, and took the chests where they locked our stuff into.");
+ next;
+ mesn;
+ mesq l("The problem is... The slimes ate the keys for the chests. This is not the first time such thing happens.");
+ next;
+ mesn;
+ mesq l("If you bring us %d %s, we'll be forever grateful.", .numKeys, getitemlink(TreasureKey));
+ select
+ l("Don't worry ma'm, I'll recover the Treasure Keys at once."),
+ l("Ah... Slimes... Sorry, not my cup of tea...");
+ mes "";
+ if (@menu == 2)
+ close;
+ setq HurnscaldQuest_Bandits, 1;
+ mesn;
+ mesq l("Wonderful! I'll be expecting you back.");
+ return;
+}
+
+function lenaReturn {
+ mesn;
+ mesq l("Adventurer, did you brought me what I asked? I see you have %d/%d %s.", countitem(TreasureKey), .numKeys, getitemlink(TreasureKey));
+ mes "";
+ select
+ rif(countitem(TreasureKey) >= .numKeys, l("Yes, take it.")),
+ rif(countitem(TreasureKey) < .numKeys, l("No, I'll be back with them.")),
+ l("Hm, can we talk again later?");
+ mes "";
+ if (@menu != 1)
+ close;
+ delitem TreasureKey, .numKeys;
+ quest_gp(.maxLevel_1, 1000);
+ quest_xp(.maxLevel_1, 1599); // 20% from needed exp
+ setq HurnscaldQuest_Bandits, 2;
+ mesn;
+ mesq l("Hey hey... Good job! We can now use again the stuff we recovered from the bandits.");
+ next;
+ mesn;
+ mesq l("Here is some GP for your efforts. Thanks for making Hurnscald a better place to live.");
+ next;
+ mesn;
+ mesq l("This happens quite often, too. My friends and I are always collecting keys to reduce beer price on Hurnscald. %%2");
+ return;
+}
+
+// ------------------------------------ Stage 2
+function lenaQuest {
+ mesn;
+ mesq l("Ah, %s, good thing you are here.", strcharinfo(0));
+ next;
+ mesn;
+ mesq l("Bandits are a huge threat to Hurnscald. We're just a small farming town, and they're countless.");
+ next;
+ mesn;
+ mesq l("Unlike the thieves guild, they are ruthless, and break everything. We lose more repairing damage than actually stolen.");
+ next;
+ mesn;
+ mesq l("Last time I went to fight the Bandit Lord, I was severely wounded.");
+ next;
+ mesn;
+ mesq l("I will reward whoever kills the current bandit leader, of course.");
+ select
+ l("I would gladly aid you to get rid of that scourge."),
+ l("Sorry, I forgot my courage on my other set of pants.");
+ mes "";
+ if (@menu == 2)
+ close;
+ setq HurnscaldQuest_Bandits, 3;
+ mesn;
+ mesq l("Wonderful! So, how about a warm up?");
+ next;
+ mesn;
+ mesq l("Bring me %d %s. This should help us amending the damage they caused and is a good warm-up exercise.", .numCoins, getitemlink(CoinBag));
+ return;
+}
+
+function lenaCoinBag {
+ mesn;
+ mesq l("Adventurer, did you brought me what I asked? I see you have %d/%d %s.", countitem(CoinBag), .numCoins, getitemlink(CoinBag));
+ mes "";
+ select
+ rif(countitem(CoinBag) >= .numCoins, l("Yes, take it.")),
+ rif(countitem(CoinBag) < .numCoins, l("No, I'll be back with them.")),
+ l("Hm, can we talk again later?");
+ mes "";
+ if (@menu != 1)
+ close;
+ inventoryplace FairyHat, 1;
+ delitem CoinBag, .numCoins;
+ .@gp=getiteminfo(CoinBag, ITEMINFO_SELLPRICE) * .numCoins * 15 / 10;
+ quest_gp(.maxLevel_2, .@gp); // +50% of base sell price
+ quest_xp(.maxLevel_2, 6842); // 20% from needed exp
+ getitem FairyHat, 1;
+ setq HurnscaldQuest_Bandits, 4;
+ mesn;
+ mesq l("Hey hey... Good job! This help us more than you think. Here is a hat like mine.");
+ next;
+ mesn;
+ mesq l("Unfortunately, I feel this bandit threat may have grown. Come back later, I'll talk with the Brotherhood for a while and probably will need your help again.");
+ return;
+}
+// ------------------------------------ Stage 3
+function lenaBanditLord {
+ mesn;
+ mesq l("So... I won't say you can't do it, %s. I will just say killing the Bandit Lord is no easy task.", strcharinfo(0));
+ next;
+ mesn;
+ mesq l("The %s is not only a fearsome and ruthless leader. He is strong, and he have tricks on his sleeve.", getmonsterlink(BanditLord));
+ next;
+ mesn;
+ mesq l("He will summon allies if he think you have the upper hand. So take care if you are going ranged.");
+ next;
+ mesn;
+ mesq l("I know another Bandit Lord will take up his place, but the loss of their leader will make bandits scatter long enough.");
+ next;
+ mesn;
+ mesq l("Will you help me- no, I mean, will you help us, the whole town of Hurnscald?");
+ next;
+ select
+ l("Sorry, I need to better prepare myself."),
+ l("I would gladly give my life for such noble goal.");
+ mes "";
+ if (@menu == 1)
+ close;
+ setq HurnscaldQuest_Bandits, 5;
+ mesn;
+ mesq l("...You have courage. Many people tried and failed.");
+ next;
+ mesn;
+ mesq l("I know where the Bandit Lord room is, and I have a guard stationed not far from there. Ask him for the key.");
+ next;
+ mesn;
+ mesq l("One last thing... Good luck. This bandit threat needs to be pushed back.");
+ return;
+}
+
+function lenaFinish {
+ mesn;
+ mesq l("Ah... You did it!");
+ next;
+ mesn;
+ mesq l("That's easy to know, because the bandits are less coordinated. Perhaps we will be able to sleep in peace this night!");
+ next;
+ inventoryplace ForestArmor, 1;
+ getitem ForestArmor, 1;
+ quest_xp(.maxLevel_3, 5842); // 10% from needed exp
+ quest_jxp(.maxLevel_3, 93); // + JExp level 6
+ setq HurnscaldQuest_Bandits, 8;
+ mesn;
+ mesq l("Here is the %s, like my armor, and one of the best for rangers.", getitemlink(ForestArmor));
+ next;
+ mesn;
+ mesq l("Any friend of Hurnscald is my friend too. Come to me again, if you want to do daily quests!");
+ return;
+}
+
+OnInit:
+ .distance = 4;
+
+ // Quest configuration
+ .minLevel_1=15;
+ .maxLevel_1=35;
+ .numKeys = 15;
+
+ .minLevel_2=30;
+ .maxLevel_2=50;
+ .numCoins = 20;
+
+ .minLevel_3=35;
+ .maxLevel_3=55;
+ end;
+}