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
|
//===== rAthena Script =======================================
//= Mercenary related NPCs
//===== By: ==================================================
//= L0ne_W0lf
//===== Current Version: =====================================
//= 1.4
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= [Official Conversion]
//= Sells Lancer, Sword, and Archer mercenaries,
//= along with related mercenary items.
//===== Additional Comments: =================================
//= 1.0 First version. [L0ne_W0lf]
//= 1.1 Optimization. [Zephyrus]
//= 1.2 Removed redundent input. [L0ne_W0lf]
//= 1.3 Duplicates now spawned from floating NPCs. [L0ne_W0lf]
//= 1.4 Optimized and fixed wrong item id. [Joseph]
//============================================================
- script Mercenary Manager#main -1,{
setarray .@name$, "Spear", "Sword", "Bow";
setarray .@faith$, "SPEAR_MERC_GUILD", "SWORD_MERC_GUILD", "ARCH_MERC_GUILD";
setarray .@item, 12182, 12172, 12162;
set .@faith_lancer, mercenary_get_faith(getd(.@faith$[.@type]));
set .@npc$, strnpcinfo(2);
for (set .@size, getarraysize(.@name$); .@i < .@size; set .@i, .@i + 1)
if (.@npc$ == .@name$[.@i]) set .@type, .@i;
mes "[Mercenary Manager]";
mes "Welcome to the";
mes .@npc$ + " Mercenary Guild.";
mes "What can I do for you?";
next;
switch(select("Hire Mercenary:Mercenary Info:Nothing:10th Grade Mercenaries")) {
case 1:
mes "[Mercenary Manager]";
mes "You want to hire a";
mes .@npc$ + " Mercenary?";
mes "Which Grade were you";
mes "interested in hiring?";
next;
setarray .@suffix$, "th","st","nd","rd";
for (set .@i, 1; .@i <= 9; set .@i, .@i + 1)
set .@menu$, .@menu$ + .@i + .@suffix$[((.@i <= 3)? .@i : 0)] + " Grade " + .@npc$ + " Mercenary:";
set .@Grade, select(.@menu$);
set .@BaseLevel, 5 + (.@Grade * 10);
set .@BaseLevel, (.@val > 90)? 90 : .@BaseLevel;
set .@ZenyCost, 7 * .@Grade;
setarray .@FaithCost[7], 50,100,300;
set .@FaithCost, .@FaithCost[.@Grade];
mes "[Mercenary Manager]";
mes "So you want to hire a " + .@Grade + .@suffix$[((.@Grade <= 3)? .@i : 0)];
mes "Grade " + .@npc$ + " Mercenary?";
mes "You need to have attained";
mes "Base Level " + .@BaseLevel + " or higher, and";
mes "must pay the " + .@ZenyCost + ",000 zeny fee.";
next;
if(select("Yes:No") == 2) {
mes "[Mercenary Manager]";
mes "Oh, really? Well, now";
mes "might not be a good time";
mes "for you to consider hiring";
mes "a Mercenary, but please feel";
mes "free to come back if your";
mes "needs change. Thank you~";
}
else if(.@FaithCost && .@faith_lancer < .@FaithCost) {
mes "[Mercenary Manager]";
mes "Oh... Your Loyalty rating";
mes "with the " + .@npc$ + " Mercenary";
mes "Guild isn't high enough to";
mes "hire this Mercenary. Please";
mes "come back after you earn";
mes "" + .@FaithCost + " or more Loyalty with us.";
}
else if (BaseLevel < .@BaseLevel) {
mes "[Mercenary Manager]";
mes "I'm sorry, but your Base";
mes "Level isn't high enough";
mes "to hire this Mercenary.";
mes "Please come back to me";
mes "once you reach Base Level " + .@BaseLevel + ".";
}
else if (Zeny < .@ZenyCost * 1000) {
mes "[Mercenary Manager]";
mes "I'm sorry, but you";
mes "don't have enough zeny";
mes "to hire this Mercenary.";
mes "The hiring fee is " + .@ZenyCost + ",000 zeny.";
}
else {
mes "[Mercenary Manager]";
mes "Great! Our Mercenaries";
mes "are sincere and devoted";
mes "to protecting their clients.";
mes "Summoned Mercenaries will";
mes "offer their support to you for";
mes "30 minutes. Take care now.";
set Zeny, Zeny - (.@ZenyCost * 1000);
getitem .@item[.@type] - 10 + .@Grade, 1;
}
close;
case 2:
mes "[Mercenary Manager]";
mes "Mercenaries are soldiers";
mes "that will fight at your side";
mes "on the battlefield, but there";
mes "are a few terms and conditions";
mes "you must fulfill to hire them.";
next;
mes "[Mercenary Manager]";
mes "You must fulfill a level";
mes "requirement and pay a zeny";
mes "fee to hire a Mercenary.";
mes "Higher grade Mercenaries";
mes "will also require that you";
mes "build a Loyalty rating with us.";
next;
mes "[Mercenary Manager]";
mes "Mercenary contracts can't be";
mes "transferred to other people,";
mes "and we only allow a 5 Base Level difference between the Mercenary";
mes "and client so you can't hire one much stronger than you.";
next;
mes "[Mercenary Manager]";
mes "Well, you can figure out the";
mes "details when you actually form";
mes "a contract with one of our";
mes "Mercenaries, and receive";
mes "the Summon Scroll that will";
mes "call a Mercenary to your side.";
next;
mes "[Mercenary Manager]";
mes "You can't give this scroll";
mes "to anyone else, and the";
mes "Mercenary will only remain";
mes "with you for 30 minutes after";
mes "you summon him. Don't forget";
mes "about the time limit, okay?";
close;
case 3:
mes "[Mercenary Manager]";
mes "No? You didn't need any";
mes "help? Well, feel free to";
mes "ask me if you have any";
mes "questions about Mercenaries.";
close;
case 4:
mes "[Mercenary Manager]";
mes "10th Grade Mercenaries are";
mes "the best we have to offer,";
mes "and we use different criteria";
mes "for our clients to hire them.";
mes "There's no zeny fee, but you";
mes "must have 500 Loyalty.";
next;
mes "[Mercenary Manager]";
mes "Once you make a contract";
mes "with a 10th Grade Mercenary,";
mes "your Loyalty rating will be";
mes "decreased by 400. In other";
mes "words, you pay 400 Loyalty";
mes "to hire a 10th Grade Mercenary.";
next;
mes "[Mercenary Manager]";
mes "You must also be at";
mes "Base Level 90 or higher to";
mes "hire a 10th Grade Mercenary.";
mes "Are you still interested in";
mes "forming this contract?";
next;
if (select("Yes:No") == 2) {
mes "[Mercenary Manager]";
mes "I understand... It takes";
mes "hard work and sacrifice to";
mes "even reach the point where";
mes "you can hire a 10th Grade";
mes "Mercenary. Have you considered";
mes "hiring a lower grade Mercenary?";
}
else if (.@faith_lancer < 500) {
mes "[Mercenary Manager]";
mes "I'm sorry, but your";
mes "Loyalty rating is too";
mes "low to hire a 10th Grade";
mes "Mercenary. You must have";
mes "500 or more Loyalty to";
mes "form a contract with one.";
}
else if (BaseLevel < 90) {
mes "[Mercenary Manager]";
mes "I'm sorry, but you must";
mes "be at Base Level 90 or";
mes "higher to form a contract";
mes "with a 10th Grade Mercenary.";
}
else {
mes "[Mercenary Manager]";
mes "Congratulations! It looks";
mes "like you're planning in taking";
mes "on some very dangerous work";
mes "since you're hiring a 10th";
mes "Grade Mercenary. I wish you";
mes "the best of luck with him.";
mercenary_set_faith getd(.@faith$[.@type]),-400;
getitem .@item[.@type],1;
}
close;
}
}
prontera,41,337,5 duplicate(Mercenary Manager#main) Mercenary Manager#Spear 105
pay_arche,99,167,4 duplicate(Mercenary Manager#main) Mercenary Manager#Bow 732
// Mercenary Merchant NPCs
//============================================================
- script Mercenary Merchant#dummy::MercMerchant -1,{
mes "[Mercenary Goods Merchant]";
mes "Hello, I sell goods";
mes "that Mercenaries can";
mes "use. Is there anything";
mes "in particular that";
mes "you're looking for?";
next;
setarray .@item, 12184, 12185, 12241, 12242, 12243;
setarray .@cost, 1750, 3000, 560, 1050, 2100;
for (set .@size, getarraysize(.@item); .@i < .@size; set .@i, .@i + 1)
set .@menu$, .@menu$ + getitemname(.@item[.@i]) + ":";
set .@m, select(.@menu$)-1;
set .@str$, .@cost[.@m] + "";
set .@len, getstrlen(.@str$);
set .@str_cost$, (.@len <= 3)? .@str$ : insertchar(.@str$,",",.@len-3);
mes "[Mercenary Goods Merchant]";
mes getitemname(.@item[.@m]);
mes "each cost " + .@str_cost$ + " zeny.";
mes "How many would you like?";
next;
input .@input;
if (!.@input) {
mes "[Mercenary Goods Merchant]";
mes "You changed your mind?";
mes "Alright, feel free to come";
mes "back to me whenever you want";
mes "to buy any Mercenary Potions.";
close;
}
else if (.@input < 0 || .@input > 10000) {
mes "[Mercenary Goods Merchant]";
mes "I'm sorry, but you";
mes "can only buy up to";
mes "10,000 of these potions";
mes "at a time. Please enter";
mes "a number from 1 to 10,000.";
close;
}
else if (set(.@total_po, .@input * .@cost[.@m]) > Zeny) {
mes "[Mercenary Goods Merchant]";
mes "I'm sorry, but you don't";
mes "have enough zeny for this";
mes "many potions. Well, I'll be";
mes "be here when you're ready";
mes "to purchase something";
mes "for your Mercenaries.";
close;
}
else if (!checkweight(.@item[.@m], .@input)) {
mes "[Mercenary Goods Merchant]";
mes "If I gave you that many";
mes "potions, you wouldn't be";
mes "able to carry them with you.";
mes "Please come back after";
mes "you free up some space";
mes "in your Inventory.";
close;
}
mes "[Mercenary Goods Merchant]";
if (.@input == 1)
mes "Here's your " + getitemname(.@item[.@m]) + ".";
else {
mes "Here you are, this is exactly";
mes .@input + " " + getitemname(.@item[.@m]) + "s.";
}
mes "Thank you, and please come";
mes "again when you need more";
mes "potions for your Mercenaries.";
set Zeny, Zeny - .@total_po;
getitem .@item[.@m], .@input;
close;
}
prontera,30,337,4 duplicate(MercMerchant) Mercenary Merchant#Spear 700
pay_arche,102,167,5 duplicate(MercMerchant) Mercenary Merchant#Bow 879
|