summaryrefslogtreecommitdiff
path: root/npc/012-2/helena.txt
blob: 79e7edd5ee4d625518050adeeb1500cf54ed7d00 (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
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
// TMW2 Script.
// Author:
//    Jesusalva
// Description:
//    Lena
// Variables:
//      $HELENA_ST
//          Tracks how many set of Treasure Keys were given by all players thus far.
//          Affects beer prices on Hurnscald.
//      HurnscaldQuest_Bandits
//          q1 -> Current status
//          q2 -> Treasure Key Timer
//          q3 -> Bandit Hood Timer

012-2,47,40,0	script	Helena	NPC_FEMALE,{
    .@q=getq(HurnscaldQuest_Bandits);

    // Stage 1: Level 30, collect Treasure Key
    if (BaseLevel < 30) goto L_TooWeak;
    if (.@q == 0) goto L_Start;
    if (.@q == 1) goto L_Return;

    // Stage 2: Level 40, collect Bandit Hood
    if (BaseLevel < 40) goto L_Weak;
    if (.@q == 2) goto L_Quest;
    if (.@q == 3) goto L_Hood;

    // Stage 3: Level 45, defeat Bandit Lord
    if (BaseLevel < 45) goto L_Busy;
    if (.@q == 4) goto L_BanditLord;
    if (.@q == 5) goto L_Busy;
    if (.@q == 6) goto L_Busy;
    if (.@q == 7) goto L_Finish;

    goto L_Daily;

L_Daily:
    .@k=getq2(HurnscaldQuest_Bandits);
    .@h=getq3(HurnscaldQuest_Bandits);
    mesn;
    mesq l("Ah, %s my friend! Are you here to help us with 5 %ss Or perhaps you have 5 more %s to show that Hurnscald is getting safer?", strcharinfo(0), getitemlink(TreasureKey), getitemlink(BanditHood));
    mes "";
    select
        rif((.@k < santime()) && countitem(TreasureKey) >= 5, l("I have 5 Treasure Keys with me.")),
        rif((.@h < santime()) && countitem(BanditHood) >= 5, l("I have 5 Bandit Hoods with me.")),
        l("Nothing at the moment.");
    mes "";
    switch (@menu) {
        case 1:
            setq2 HurnscaldQuest_Bandits, santime()+(60*60*24);
            delitem TreasureKey, 5;
            Zeny=Zeny+600; // 600/550 = 9.09% bonus
            //Zeny=Zeny+800; // 800/550 = 45.45% bonus
            getexp 2000, 0;
            $HELENA_ST=$HELENA_ST+2;
            mesn;
            mesq l("Many thanks! %%s");
            next;
            goto L_Daily;
        case 2:
            setq3 HurnscaldQuest_Bandits, santime()+(60*60*24);
            delitem BanditHood, 5;
            Zeny=Zeny+250; // 250/155 = 61.29% bonus
            getexp 3000, 5;
            $HELENA_ST=$HELENA_ST+1;
            mesn;
            mesq l("Many thanks! %%s");
            next;
            goto L_Daily;
    }
    close;

L_TooWeak:
    mesn;
    mesq lg("Good day, adventureress.", "Good day, adventurer.");
    next;
    mesn;
    mesq l("We have some serious problems involving bandits. I need someone strong to help me, and you don't qualify. Yet.");
    close;

L_Weak:
    mesn;
    mesq l("You still need to grow a few levels more before being able to help me out again.");
    close;

L_Busy:
    mesn;
    mesq l("Sorry, %s. Please come back later, I am busy.", strcharinfo(0));
    close;

L_DoIt:
    mesn;
    mesq l("%s, we are counting on you! We, the whole town of Hurnscald!", strcharinfo(0));
    close;

///////////////////////// Stage 1
L_Start:
    mesn;
    mesq l("Bandits ransacked this tavern and left with a giant haul.");
    next;
    mesn;
    mesq l("We chased after them after they fled into the deep tunnels of the mines. It was a heated battle but we have slain them all and got the chests with our stuff back.");
    next;
    mesn;
    mesq l("The problem is... The slimes ate all the keys for the chests. Blasted slimes! This is not the first time such thing happened.");
    next;
    // 5 ÷ 4.5% = 112 Copper Slimes. You can kill Yellow Slimes too
    mesn;
    mesq l("If you bring us 5 %ss I'll be forever grateful.", getitemlink(TreasureKey));
    select
        l("Don't worry ma'am, I'll recover the Treasure Keys at once."),
        l("Slimes... Sorry, not my cup of tea...");
    mes "";
    if (@menu == 2)
        close;
    setq HurnscaldQuest_Bandits, 1;
    mesn;
    mesq l("I'll be expecting you back.");
    close;

L_Return:
    mesn;
    mesq l("Did you bring me what I asked? You have %d/5 %s.", countitem(TreasureKey), getitemlink(TreasureKey));
    mes "";
    select
        rif(countitem(TreasureKey) >= 5, l("Yes, take it.")),
        rif(countitem(TreasureKey) < 5, l("No, I'll be back with them.")),
        l("Hm, can we talk again later?");
    mes "";
    if (@menu != 1)
        close;
    delitem TreasureKey, 5;
    Zeny=Zeny+1000;
    getexp 1599,0; // 20% from needed exp
    setq HurnscaldQuest_Bandits, 2;
    mesn;
    mesq l("Finally! The regulars were close to rioting due to lack of ale.");
    next;
    mesn;
    mesq l("Here are %s GP for your efforts. Thanks for making Hurnscald a better place to live.", fnum(1000));
    next;
    mesn;
    mesq l("This might happen again in the future, so we are always gathering them, just in case.");
    next;
    mesn;
    mesq l("If you continue gathering %ss, we are able to lower our ale price! %%2", getitemlink(TreasureKey));
    close;


///////////////////////// Stage 2
L_Quest:
    mesn;
    mesq l("%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("I did travel to their cave, wondering why they hide their faces. I found out most of them are monsters after I ripped their hoods off.");
    next;
    mesn;
    mesq l("A few of them are rebels, outcasts and the like but the vast majority are monsters.");
    next;
    mesn;
    mesq l("Unfortunately, they placed a curse on me using a %s preventing me from entering their cave ever again.", getitemlink(BlueManaPearl));
    next;
    if (countitem(BlueManaPearl) >= 1) {
        mesn;
        mesq l("Be very, very careful with your %s. Handling it incorrectly may be fatal and many people died to that.", getitemlink(BlueManaPearl));
        next;
    }
    mesn;
    mesq l("Thankfully that item is very rare, so they will not be able to place a curse on you. Probably.");
    next;
    mesq l("I want somebody to slay the bandit leader, but if you want to do it, you must prove yourself first.");
    next;
    select
        l("I would gladly aid you to get rid of that scourge."),
        l("Sorry, I forgot my courage in my other set of pants.");
    mes "";
    if (@menu == 2)
        close;
    setq HurnscaldQuest_Bandits, 3;
    mesn;
    mesq l("Perfect!");
    next;
    // 8% drop. 10 / 8% = avg. 125 bandits to kill
    // And for once, I won't require these bandits to be from Hurnscald Bandit Cave.
    mesn;
    mesq l("As a warm-up, bring me 10 %ss. I'll pay you some money for that, of course.", getitemlink(BanditHood));
    close;

L_Hood:
    mesn;
    mesq l("%s, did you bring me the hoods I asked for? I see you have %d/10 %ss.", strcharinfo(0), countitem(BanditHood), getitemlink(BanditHood));
    mes "";
    select
        rif(countitem(BanditHood) >= 10, l("Yes, take them.")),
        rif(countitem(BanditHood) < 10, l("No, I'll be back with them.")),
        l("Hm, can we talk again later?");
    mes "";
    if (@menu != 1)
        close;
    inventoryplace LeatherPatch, 1, Beer, 1;
    delitem BanditHood, 10;
    getitem LeatherPatch, 1;
    getitem Beer, 1;
    Zeny=Zeny+2000;
    getexp 6842,0; // 20% from needed exp
    setq HurnscaldQuest_Bandits, 4;
    mesn;
    mesq l("Great job. I was worried you would ruin their hoods in combat.");
    next;
    mesn;
    mesq l("Here are 2000 GP for your efforts. Thanks for making Hurnscald a better place to live.");
    next;
    mesc l("I also gave you a fresh ale and a %s. Bows are awkward to handle, so you should talk to the Blacksmith to make you a %s.", getitemlink(LeatherPatch), getitemlink(LeatherQuiver));
    close;


///////////////////////// Stage 3
L_BanditLord:
    mesn;
    mesq l("I won't say you can't do it, %s. But 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 opponent, he has some tricks up his sleeve.", getmonsterlink(BanditLord));
    next;
    mesn;
    mesq l("He will summon allies if he thinks you have the upper hand, depending on how you fight.");
    next;
    mesq l("If you go for melee, he will summon archers to keep his distance. If you use a bow, he will summon normal bandits to cut your throat.");
    next;
    mesn;
    mesq l("I know another Bandit Lord will take his place, but the loss of their leader will make the 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 are brave. Or very foolish. Many people tried and failed.");
    next;
    mesn;
    mesq l("The den of the bandit lord is located northeast from here in a cave, hidden quite deep inside.");
    next;
    mesq l("I have a guard stationed not far from there. Ask him for the key.");
    next;
    mesn;
    mesq l("Good luck, you'll need it. This is a difficult task, so don't hesitate in running away if you need to.");
    close;

L_Finish:
    mesn;
    mesq l("...The bandits are in disarray. And you arrive victorious. I have to admit, I thought had fallen, just like the other ones.");
    next;
    mesn;
    mesq l("I am pleasantly surprised. Good job. Perhaps we will all be able to sleep in peace this night!");
    next;
    inventoryplace ForestArmor, 1, Beer, 3;
    inventoryplace Beer, 3;
    getitem Beer, 3;
    getitem ForestArmor, 1;
    getexp 5842,93; // 10% from needed exp + JExp level 6
    setq HurnscaldQuest_Bandits, 8;
    mesn;
    mesq l("You deserve this old %s of mine. They are great for skilled rangers and offer good protection.", getitemlink(ForestArmor));
    next;
    mesn;
    mesq l("You are always welcome in the tavern and I would truly like to see you come by for some ale sometime.");
    next;
    mesq l("Of course, there are also always daily chores to do, if you are more interested in that. %%Q");
    close;

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, FairyHat);
    setunitdata(.@npcId, UDT_HEADMIDDLE, ForestArmor);
    setunitdata(.@npcId, UDT_HEADBOTTOM, CottonSkirt);
    setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 17);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 7);

    .sex = G_FEMALE;
    .distance = 5;
    end;
}