summaryrefslogtreecommitdiff
path: root/npc/008-2-13/lena.txt
blob: 0c94141782b2328d1c1734824af051ed9b356d08 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
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."),
        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;
}