summaryrefslogtreecommitdiff
path: root/npc/merchants/socket_enchant.txt
blob: 599d41564821719f4332dbe7b7298a8ef3f5e1f8 (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
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2015  Hercules Dev Team
//= Copyright (C)  rAthena Dev Team
//= Copyright (C)  Euphy
//= Copyright (C)  eAthena Dev Team
//= Copyright (C)  Gepard
//= Copyright (C)  Kisuka
//= Copyright (C)  Samuray22
//= Copyright (C)  L0ne_W0lf
//= Copyright (C)  ultramage
//= Copyright (C)  SinSloth
//= Copyright (C)  Evera
//= Copyright (C)  Toms
//= Copyright (C)  Lupus
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Episode 11.1 Socket Enchant NPC
//================= Description ===========================================
//= Adds slots to selected weapons and armor.
//================= Current Version =======================================
//= 2.0a
//=========================================================================

-	script	Seiyablem#dummy::SocketEnchant	FAKE_NPC,{
	if (checkweight(Knife,1) == 0)
	{
		mes "- Wait a minute !! -";
		mes "- Currently you're carrying -";
		mes "- too many items with you. -";
		mes "- Please try again -";
		mes "- after you lose some weight. -";
		close;
	}
	mes "[Seiyablem]";
	mes "I'm an engineer that specializes in adding Slots to normal Weapons and Armor.";
	mes "My service fee, the required materials and the chance of success all depend on the specific item I'm working on.";
	next;
	mes "[Seiyablem]";
	mes "Adding Slots may seem simple, but it's far more complicated than it looks.";
	mes "If you're interested in my service, let me know.";
	next;
	switch(select("Add Slot to Weapon", "Add Slot to Armor", "Slot Attempt Info", "Cancel"))
	{
		case 1:
			mes "[Seiyablem]";
			mes "You want to add a Slot to a weapon?";
			mes "I categorize weapons by their difficulty in adding a Slot, C Class being easiest and S Class the most difficult.";
			mes "Which class would you like to try?";
			next;
			switch(select("C Class", "B Class", "A Class", "S Class"))
			{
				case 1:
					mes "[Seiyablem]";
					mes "C Class, eh?";
					mes "Now, I can only upgrade certain equipment in that class, so please choose one of the following items, so we can try to add a Slot to it.";
					next;
					switch(select("Trident", "Rope", "Violin"))
					{
						case 1: callfunc "Func_Socket",1460,1461,40,66,200,1010,10;
						case 2: callfunc "Func_Socket",1950,1951,40,66,200,1010,10;
						case 3: callfunc "Func_Socket",1901,1902,40,66,200,1010,10;
					}
				case 2:
					mes "[Seiyablem]";
					mes "B Class?";
					mes "Alright, this is the average equipment category.";
					mes "Please choose the weapon to which you'd like me to try to add a Slot.";
					next;
					switch(select("Chain", "Gladius", "Gakkung Bow", "Pike", "Haedonggum", "Lute", "Wire", "Waghnakh", "Arbalest Bow"))
					{
						case 1: callfunc "Func_Socket",1519,1520,40,61,300,1010,10;
						case 2: callfunc "Func_Socket",1219,1220,40,61,300, 984, 1,999,5;
						case 3: callfunc "Func_Socket",1714,1716,40,61,300, 984, 2,999,5;
						case 4: callfunc "Func_Socket",1407,1408,40,61,200,1010,10;
						case 5: callfunc "Func_Socket",1123,1128,40,61,300, 984, 2,999,5;
						case 6: callfunc "Func_Socket",1905,1906,40,61,300,1011,10;
						case 7: callfunc "Func_Socket",1954,1955,40,61,300,1011,10;
						case 8: callfunc "Func_Socket",1801,1802,40,61,300,1010,10;
						case 9: callfunc "Func_Socket",1713,1715,40,61,300, 984, 2,999,5;
					}
				case 3:
					mes "[Seiyablem]";
					mes "Ooh, A Class.";
					mes "This is some high risk territory!";
					mes "Alright, which weapon would you like me to try adding a Slot?";
					next;
					switch(select("Hunter Bow", "Survivor's Rod(INT)", "Zweihander", "Flamberge", "Infiltrator", "Ballista", "Stunner", "Berserk", "Claymore"))
					{
						case 1: callfunc "Func_Socket",1718,1726,40,61,500,984,2,999,10;
						case 2: callfunc "Func_Socket",1619,1620,40,61,500,984,5,999,10;
						case 3: callfunc "Func_Socket",1168,1171,40,61,800,984,5,999,10;
						case 4: callfunc "Func_Socket",1129,1149,40,61,500,984,2,999,10;
						case 5: callfunc "Func_Socket",1261,1266,40,61,700,984,5,999,10;
						case 6: callfunc "Func_Socket",1722,1727,40,61,500,984,5,999,10;
						case 7: callfunc "Func_Socket",1522,1532,40,61,500,984,2,999,10;
						case 8: callfunc "Func_Socket",1814,1816,40,61,500,984,5,999,10;
						case 9: callfunc "Func_Socket",1163,1172,40,61,500,984,2,999,10; // NPC says "5 Oridecon" (Aegis) but takes only 2
					}
				case 4:
					mes "[Seiyablem]";
					mes "Whoa, whoa, whoa...";
					mes "S class? Alright...";
					mes "It'd be a near miracle if I can actually pull this off.";
					mes "Okay... Which weapon shall we try adding a Slot to?";
					next;
					switch(select("Gungnir", "Poison Knife", "Ice Pick", "Sucsamad", "Ginnungagap", "Cutlas", "Crescent Scythe", "Survivor's Rod(DEX)"))
					{
						case 1: callfunc "Func_Socket", 1413, 1418,40,51,1000,984,5,999,10;
						case 2: callfunc "Func_Socket", 1239,13016,40,51,1000,984,5,999,10;
						case 3: callfunc "Func_Socket", 1230,13017,40,51,2000,984,5,999,10;
						case 4: callfunc "Func_Socket", 1236,13018,40,51,1000,984,5,999,10;
						case 5: callfunc "Func_Socket",13002,13019,40,51,1000,984,5,999,10;
						case 6: callfunc "Func_Socket", 1135,13400,40,51,1000,984,5,999,10;
						case 7: callfunc "Func_Socket", 1466, 1476,40,51,1000,984,5,999,10;
						case 8: callfunc "Func_Socket", 1617, 1618,40,51,2000,984,5,999,10;
					}
			}
		case 2:
			mes "[Seiyablem]";
			mes "Armor, you said?";
			mes "Sure, no problem.";
			mes "Armor is divided into 4 different classes, depending on the work difficulty.";
			mes "C Class is the easiest one, and S Class is the hardest one.";
			mes "Which class would you like to try?";
			next;
			switch(select("C Class", "B Class", "A Class", "S Class"))
			{
				case 1:
					mes "[Seiyablem]";
					mes "C Class Armor, eh?";
					mes "Sounds reasonable.";
					mes "Which armor would you like to try adding a Slot?";
					next;
					switch(select("Mantle", "Coat", "Circlet", "Biretta"))
					{
						case 1: callfunc "Func_Socket",2307,2308,40,66,200,999,3;
						case 2: callfunc "Func_Socket",2309,2310,40,66,200,999,3;
						case 3: callfunc "Func_Socket",2232,2233,40,66,200,999,3;
						case 4: callfunc "Func_Socket",2216,2217,40,66,200,999,3;
					}
				case 2:
					mes "[Seiyablem]";
					mes "You have chosen average B Class.";
					mes "So, what kind of armor do you have?";
					next;
					switch(select("Mirror Shield", "Chain Mail", "Saint Robe", "Silk Robe", "Boots", "Shoes", "Muffler", "Guard", "Buckler", "Shield", "Bongun Hat"))
					{
						case 1:  callfunc "Func_Socket",2107,2108,40,61,250,999,5;
						case 2:  callfunc "Func_Socket",2314,2315,40,61,250,999,5;
						case 3:  callfunc "Func_Socket",2325,2326,40,61,300,999,5;
						case 4:  callfunc "Func_Socket",2321,2322,40,61,300,999,5;
						case 5:  callfunc "Func_Socket",2405,2406,40,61,300,999,5;
						case 6:  callfunc "Func_Socket",2403,2404,40,61,300,999,5;
						case 7:  callfunc "Func_Socket",2503,2504,40,61,300,999,5;
						case 8:  callfunc "Func_Socket",2101,2102,40,61,300,999,5;
						case 9:  callfunc "Func_Socket",2103,2104,40,61,300,999,5;
						case 10: callfunc "Func_Socket",2105,2106,40,61,250,999,5;
						case 11: callfunc "Func_Socket",5046,5168,40,61,250,999,5;
					}
				case 3:
					mes "[Seiyablem]";
					mes "Ooh, A Class.";
					mes "This is some high risk territory!";
					mes "Alright, which armor would you like me to try adding a Slot?";
					next;
					switch(select("Gemmed Sallet", "Bucket Hat", "Memory Book", "Tights", "Legion Plate Armor", "Full Plate", "Thief Clothes", "Greaves", "Coif", "Manteau", "Helm", "Ninja Suit", "Orc Helm", "Ancient Cape", "Monk Hat", "Golden Gear", "Brooch", "Munak Hat"))
					{
						case 1:  callfunc "Func_Socket",2230,2231,40,61,400,985,1;
						case 2:  callfunc "Func_Socket",5114,5120,40,61,400,985,1;
						case 3:  callfunc "Func_Socket",2109,2121,40,61,400,985,1;
						case 4:  callfunc "Func_Socket",2330,2331,40,61,400,985,1;
						case 5:  callfunc "Func_Socket",2341,2342,40,61,400,985,1;
						case 6:  callfunc "Func_Socket",2316,2317,40,61,400,985,1;
						case 7:  callfunc "Func_Socket",2335,2336,40,61,400,985,1;
						case 8:  callfunc "Func_Socket",2411,2412,40,61,400,985,1;
						case 9:  callfunc "Func_Socket",5092,5093,40,61,400,985,1;
						case 10: callfunc "Func_Socket",2505,2506,40,61,400,985,1;
						case 11: callfunc "Func_Socket",2228,2229,40,61,400,985,1;
						case 12: callfunc "Func_Socket",2337,2359,40,61,400,985,1;
						case 13: callfunc "Func_Socket",2299,5157,40,61,400,985,1;
						case 14: callfunc "Func_Socket",2507,2525,40,61,400,985,1;
						case 15: callfunc "Func_Socket",2251,5158,40,61,400,985,1;
						case 16: callfunc "Func_Socket",2246,5159,40,61,400,985,1;
						case 17: callfunc "Func_Socket",2605,2625,40,61,400,985,1;
						case 18: callfunc "Func_Socket",2264,5167,40,61,300,985,1;
					}
				case 4:
					mes "[Seiyablem]";
					mes "Um... S Class?";
					mes "You sure about this?";
					mes "Alright... Let me know the Armor to which you'd like to add a Slot, and I'll tell what I need to try it.";
					next;
					switch(select("Majestic Goat", "Spiky Band", "Bone Helm", "Corsair", "Crown", "Tiara", "Sphinx Hat", "Robe of Cast", "Earring", "Ring", "Bow Thimble"))
					{
						case 1:  callfunc "Func_Socket",2256,5160,40,51,2000,985,2;
						case 2:  callfunc "Func_Socket",2258,5161,40,51,2000,985,2;
						case 3:  callfunc "Func_Socket",5017,5162,40,51,2000,985,2;
						case 4:  callfunc "Func_Socket",5019,5163,40,51,2000,985,2;
						case 5:  callfunc "Func_Socket",2235,5165,40,51,2000,985,2;
						case 6:  callfunc "Func_Socket",2234,5164,40,51,2000,985,2;
						case 7:  callfunc "Func_Socket",5053,5166,40,51,1000,985,2;
						case 8:  callfunc "Func_Socket",2343,2360,40,51,1000,985,2;
						case 9:  callfunc "Func_Socket",2602,2622,40,51,1000,985,2;
						case 10: callfunc "Func_Socket",2601,2621,40,51,1000,985,2;
						case 11: callfunc "Func_Socket",2619,2671,40,51,1000,985,2;
					}
			}
		case 3:
			mes "[Seiyablem]";
			mes "Well, I haven't really refined the art of Slot Addition.";
			mes "It's so complicated that I'd be lying if I told you that I knew every factor that affected the process.";
			mes "Still, I do notice a few trends...";
			next;
			mes "[Seiyablem]";
			mes "In some towns, Slot addition attempts are more successful for equipment with fewer upgrades.";
			mes "In other towns, the opposite is true.";
			mes "Isn't that really peculiar?";
			next;
			mes "[Seiyablem]";
			mes "Oh, there's also something really important that you should know.";
			mes "If you ask me to add a Slot to something, make sure that you don't have multiples of it in your inventory.";
			next;
			mes "[Seiyablem]";
			mes "Here's an example: if you have a +7 Manteau and a normal Manteau in your inventory, then I will randomly pick one of them for my Slot Addition attempt.";
			mes "Just remember to be careful.";
			next;
			mes "[Seiyablem]";
			mes "Again, ^FF0000only carry one of the equipment to which you want me to add a Slot^000000.";
			mes "All other equipment with the same name should be placed in your Kafra Storage, got it?";
			close;
		case 4:
			mes "[Seiyablem]";
			mes "Take it easy, adventurer.";
			mes "If you ever want to try adding a Slot to some of your equipment, come back and let me know.";
			mes "Seeya~";
			close;
	}
}

function	script	Func_Socket	{

	disable_items;
	mes "[Seiyablem]";
	mes "You want to add a Slot to a " + getitemname(getarg(0)) + "?";
	mes "Alright, please bring me ^FF0000" + getarg(6) + " " + getitemname(getarg(5)) + (getarg(6) > 1 && getarg(5) != 999 ? "s":"") + "^000000, " + (getarg(7,0) != 0 && getarg(8,0) != 0 ? ("^FF0000" + getarg(8,0) + " " + getitemname(getarg(7,0)) + (getarg(8,0) > 1 && getarg(7,0) != 999 ? "s":"") + "^000000 ") : "") + "and my ^FF0000" + (getarg(4) >= 1000 ? (getarg(4)/1000 + ",000") : getarg(4)) + ",000 zeny^000000 service fee.";
	mes "Ah, and don't forget to bring that " + getitemname(getarg(0)) + "!";
	next;
	mes "[Seiyablem]";
	if (getiteminfo(getarg(0), ITEMINFO_LOC) & EQP_HAND_R) {
		// EQP_HAND_R = 2, it's a weapon
		mes "I can try to add a slot now if you have the required items and zeny.";
		mes "However, you should know that there's a chance that I might fail.";
		mes "Therefore, I need to give you a fair warning...";
		next;
		mes "[Seiyablem]";
		mes "If this attempt to add a Slot to your Weapon fails, then the ^FF0000Weapon^000000, ^FF0000and any Cards compounded to it will be destroyed^000000.";
	} else {
		// armor
		mes "If you have all the required materials, my zeny service fee and the Armor, then we can go ahead with the Slot Addition attempt.";
		mes "But before that, I must warn you of the risk.";
		next;
		mes "[Seiyablem]";
		mes "If this attempt to add a Slot to your Armor fails, then the ^FF0000Armor^000000, ^FF0000it's upgrades^000000 ^FF0000and any Cards compounded to it will be destroyed^000000.";
	}
	mes "Do you still want to try to add a Slot?";
	next;
	switch(select("Attempt Slot Addition", "Cancel"))
	{
		case 1:
			if ((Zeny >= getarg(4)*1000) && (countitem(getarg(5)) >= getarg(6)) && (countitem(getarg(7,512)) >= getarg(8,0)) && (countitem(getarg(0)) > 0)) // if there's no getarg(7) and getarg(8) provided, check itemcount against 0 (we still need a valid item ID though)
			{
				mes "[Seiyablem]";
				mes "Alright then, let the work begin!";
				mes "You'd better pray for a successful result.";
				next;
				.@a = rand(1,100);
				if ((.@a > getarg(2)) && (.@a < getarg(3)))
				{
					specialeffect getarg(3) == 51 ? EF_LORD : EF_SANCTUARY; // only S Class items have Lord of Vermillion effect
					mes "[Seiyablem]";
					mes "Great, it seems to be successful.";
					mes "It looks pretty well done. Congratulations!";
					delitem getarg(0),1;
					delitem getarg(5),getarg(6);
					if (getarg(7,0) != 0 && getarg(8,0) != 0)
						delitem getarg(7),getarg(8);
					Zeny -= getarg(4)*1000;
					getitem getarg(1),1;
					next;
					mes "[Seiyablem]";
					mes "See you again, buddy!";
					close;
				}
				else
				{
					specialeffect EF_SUI_EXPLOSION;
					mes "[Seiyablem]";
					mes "Wah! ...I am so sorry, it failed.";
					mes "However, I am completely innocent.";
					mes "This is your luck, and it is destined by god, okay?";
					mes "Don't be so disappointed, and try next time.";
					delitem getarg(0),1;
					delitem getarg(5),getarg(6);
					if (getarg(7,0) != 0 && getarg(8,0) != 0)
						delitem getarg(7),getarg(8);
					Zeny -= getarg(4)*1000;
					next;
					mes "[Seiyablem]";
					mes "I wish you good luck next time!";
					close;
				}
			}
			else
			{
				mes "[Seiyablem]";
				mes "I'd like to go ahead with this Slot Addition attempt, but you're missing a few things.";
				mes "You sure that you have the equipment, required materials and the zeny?";
				close;
			}
		case 2:
			mes "[Seiyablem]";
			mes "Need some time to think about it, huh?";
			mes "Alright, I can understand.";
			mes "Just remember that life's no fun if you're always playing it safe~";
			close;
	}
}

payon,140,151,5	duplicate(SocketEnchant)	Seiyablem#pay	4_M_02
lhz_in02,281,35,5	duplicate(SocketEnchant)	Seiyablem#lhz	4_M_02
prt_in,33,70,5	duplicate(SocketEnchant)	Seiyablem#prt	4_M_02
morocc,51,41,4	duplicate(SocketEnchant)	Seiyablem#moc	4_M_02

-	script	Young Man#dummy::SocketMan	FAKE_NPC,{
	mes "[Young Man]";
	mes "I'm considering becoming a Slotting Engineer.";
	mes "It's a new field where you can add Slots to equipment, and it'd be cool if I can work in such a lucrative career.";
	next;
	mes "[Young Man]";
	mes "There's a huge element of luck involved in successfully adding Slots from what I can understand.";
	mes "You fail sometimes, but if you're super lucky, you can add two Slots.";
	mes "Crazy. Huh?";
	next;
	mes "[Young Man]";
	mes "But don't get too excited.";
	mes "Only certain equipment can handle the addition of two extra Slots.";
	mes "There's so much more I have to learn before I can even be an apprentice...";
	close;
}

prt_in,31,57,1	duplicate(SocketMan)	Young Man#prt	4W_M_01
payon,143,143,7	duplicate(SocketMan)	Young Man#pay	4W_M_01
morocc,60,42,3	duplicate(SocketMan)	Young Man#moc	4W_M_01
lhz_in02,269,33,5	duplicate(SocketMan)	Young Man#lhz	4W_M_01