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
|
// TMW2 Script
// Author:
// Saulc
// Vasily_Makarov (original from Evol)
// Jesusalva
// Description:
// Hurnscald Potion Shopkeeper
// Notes:
// Reset must be turned in function
012-4,29,28,0 script Wyara NPC_FEMALE,{
speech S_LAST_NEXT,
l("I am @@, an alchemist specialized in reset potions.", .name$);
L_Menu:
.@plush_count = BaseLevel*210-(10*210);
// Lv 10: 210 GP
// Lv 90: 1.867 GP
if (BaseLevel > 10)
.@plush_count = .@plush_count/(BaseLevel/10);
.@n=getq(General_Narrator);
.@s=getq(HurnscaldQuest_Sagratha);
.@s3=getq3(HurnscaldQuest_Sagratha);
select
l("Can you reset my stats please?"),
rif($ARKIM_ST >= 1200,l("I want Piberries Infusion!")),
rif(getq(HurnscaldQuest_InjuriedMouboo) == 2,l("Do you know how to break curses?")),
rif(.@s == 1 && .@s3,l("Sagratha was not home.")),
rif(.@s == 2,l("About Sagratha...")),
rif(.@n >= 6,l("I am in dire need of Return Potions!")),
lg("You are weird, I have to go sorry.");
mes "";
switch (@menu) {
case 1:
goto L_ResetStats;
case 2:
goto L_Piberries;
case 3:
goto L_Uncurse;
case 4:
goto L_SaggyHome;
case 5:
goto L_SaggyMain;
case 6:
goto L_ReturnPot;
case 7:
goto L_Quit;
}
L_ResetStats:
mesn;
mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
ConfirmStatusReset();
goto L_Quit;
L_Piberries:
mesn;
mesq l("For (another) one @@, I'll need 3~4 @@ and 50 GP.", getitemlink(PiberriesInfusion), getitemlink(Piberries));
next;
select
rif(Zeny >= 50 && countitem(Piberries) >= 4, l("Do it!")),
l("Not now, sorry.");
if (@menu == 2)
goto L_Quit;
mes "";
inventoryplace PiberriesInfusion, 1;
Zeny=Zeny-50;
delitem Piberries, rand(3,4);
getitem PiberriesInfusion, 1;
getexp 10, 0;
goto L_Piberries;
L_Uncurse:
mesn;
mesq l("Well, it depends on the curse. Some are easy to break, and others are... well...");
next;
select
l("It's a simple curse."),
l("It's a complex curse."),
l("It's a cursed mouboo.");
mes "";
mesn;
switch (@menu) {
case 1:
mesq l("Then you should look in buying Caffeinne. Curse is a status ailment which reduces your attack, nullifies your luck and makes you a snail. Simple Curses can be cured with time, too.");
break;
case 2:
mesq l("Oh, then you should seek the help of an specialist. These curses have an specific condition to break, like leveling up or being killed. Force-breaking them can be difficult.");
break;
case 3:
mesq l("A... Mouboo? Well, I know who can handle curses on cute Mouboos.");
next;
mesn;
mesq l("Go talk to Sagratha, she is usually in a hut in northen forest. The door have a magic barrier, so you'll need to have minimal magic skills to get close enough to open it.");
next;
mesn;
mesq l("She doesn't likes @@s, only cute animals. She doesn't likes Ghosts, Undeads, and Shadow monsters either.", get_race());
next;
mesn;
mesq l("So, when you get on the door, knock it, and say this: \"@@\". She will open the door for you.", b(l("Mouboos are cute")));
compareandsetq HurnscaldQuest_Sagratha, 0, 1;
break;
}
close;
L_ReturnPot:
.@price=7000-(reputation("Hurns")*20);
.@craft=2001-(reputation("Hurns")*20);
.@ammon=5+(reputation("Hurns")/30);
mesn;
mesq l("I understand. Rakinorf told me to stuff you with them if needed.");
next;
mesn;
mesq l("Be aware I can only bake batches of @@ potions.", .@ammon);
next;
mesn;
mesq l("So, it is @@ GP each one up-front. Or I can brew with your materials:", .@price);
mes "";
mesn l("Craft Recipe");
mesc l("- @@/@@ @@", countitem(MauveHerb), 80, getitemlink(MauveHerb));
mesc l("- @@/@@ @@", countitem(MushroomSpores), 15, getitemlink(MushroomSpores));
mesc l("- @@/@@ @@", countitem(Potatoz), 7, getitemlink(Potatoz));
mesc l("- @@/@@ @@", countitem(Coral), 5, getitemlink(Coral));
mesc l("- @@/@@ @@", countitem(EverburnPowder), 1, getitemlink(EverburnPowder));
mesc l("- @@/@@ GP", format_number(.@craft), format_number(Zeny));
next;
select
l("Too expensive %%n"),
rif(Zeny >= .@price, l("I want to pay the full price.")),
l("I want you to brew some for me.");
mes "";
switch (@menu) {
case 1:
close;
case 2:
mesc l("How many? Max. @@", (Zeny/.@price));
input .@c, 0, (Zeny/.@price);
.@payment=.@price*.@c;
if (Zeny >= .@payment) {
inventoryplace ReturnPotion, .@c*.@ammon;
Zeny-=.@payment;
getitem ReturnPotion, .@c*.@ammon;
mesn;
mesq l("There you go!");
} else {
Exception("Illegal input.", RB_DEFAULT | RB_SPEECH);
}
break;
case 3:
mesc l("How many?");
input .@c, 0, 100;
inventoryplace ReturnPotion, .@c*.@ammon;
if (
countitem(MauveHerb) < 80*.@c ||
countitem(MushroomSpores) < 15*.@c ||
countitem(Potatoz) < 7*.@c ||
countitem(Coral) < 5*.@c ||
countitem(EverburnPowder) < 1*.@c ||
Zeny < .@craft*.@c
) Exception("You don't have that much material.", RB_ISFATAL|RB_SPEECH);
delitem MauveHerb, 80*.@c;
delitem MushroomSpores, 15*.@c;
delitem Potatoz, 7*.@c;
delitem Coral, 5*.@c;
delitem EverburnPowder, 1*.@c;
Zeny-=.@craft*.@c;
getitem ReturnPotion, .@c*.@ammon;
mesn;
mesq l("There you go!");
break;
}
close;
L_SaggyHome:
mesn;
mesq l("She probably just went out for a walk. Nothing to worry, I hope.");
next;
if (.@n < 11) {
mesn;
mesq l("It's impossible to know when she'll be back, so you should prioritize something else for now.");
close;
}
select
l("Yeah, she might be back soon."),
l("I don't think so. There have been... Incidents.");
if (@menu == 1)
close;
mes "";
mesn;
mesq l("...Incidents?");
next;
mesn strcharinfo(0);
mesc l("You tell her about the incident at the Blue Sage's residence and how they were aiming at sages.");
next;
mesn;
mesq l("Well, this is very disturbing, indeed. I hope my good friend Sagratha is fine.");
next;
mesn;
mesq l("Can you, perhaps, do me a favor? Please... Check her house for any signs of battle.");
next;
mesn;
mesq l("She should be safe as she is a strong woman, but... You never know.");
setq1 HurnscaldQuest_Sagratha, 2;
setq3 HurnscaldQuest_Sagratha, 0;
close;
L_SaggyMain:
mesn;
mesq l("Yes? Have you looked her house for signs of battle?");
next;
select
l("Yes, and there was no signs of a fight."),
l("...Not yet.");
if (@menu == 2)
close;
mes "";
mesn;
mesq l("Are you sure? Like, really really sure?");
next;
if (!.@s3) {
mesn strcharinfo(0);
mesq l("Hmm... Thinking well...");
next;
mesn;
mesq l("THEN DON'T WASTE MY TIME! My friend could be in danger!");
next;
mesn;
mesq l("Go do what I told you to do and examine the house thoroughly!");
close;
}
mesn strcharinfo(0);
mesq l("Yes, I did. There was only an unlocked secret window.");
next;
mesn;
mesq l("Good, this must mean that Sagratha managed to flee in time.");
// mesc l("She must have hidden to the secret cave nearby....");
// TODO
//setq1 HurnscaldQuest_Sagratha, 3;
//setq3 HurnscaldQuest_Sagratha, 0;
close;
L_Quit:
goodbye;
close;
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, FancyHat);
setunitdata(.@npcId, UDT_HEADMIDDLE, SailorShirt);
setunitdata(.@npcId, UDT_HEADBOTTOM, BromenalPants);
setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins); // Boots
setunitdata(.@npcId, UDT_HAIRSTYLE, 8);
setunitdata(.@npcId, UDT_HAIRCOLOR, 18);
.sex = G_FEMALE;
.distance = 4;
end;
}
|