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