summaryrefslogblamecommitdiff
path: root/npc/008-2-13/lena.txt
blob: 0c94141782b2328d1c1734824af051ed9b356d08 (plain) (tree)
1
2
3
4
5
6
7
8
                          

             
               

                        
 
                                                  



























































                                         


                                                                                                            


                                                                        
 




                                                                                                                                               
          











































































































































































                                                                                                                                                                                                                         

       
                  











                          

        
// 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."),
        lg("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 lg("Adventurer, did you brought me what I asked? I see you have %d/%d %s.","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 lg("Adventurer, did you brought me what I asked? I see you have %d/%d %s.","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;
}