// 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;
}