summaryrefslogtreecommitdiff
path: root/npc/merchants/socket_enchant.txt
blob: 9d90e31aa722e28f66df7e1565f082f0a6a4c70d (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
//===== Hercules Script ======================================
//= Episode 11.1 Socket Enchant NPC
//===== By: ==================================================
//= rAthena Dev Team
//===== Current Version: =====================================
//= 2.0a
//===== Description: =========================================
//= [Official Conversion]
//= Adds slots to selected weapons and armor.
//===== Additional Comments: =================================
//= 0.1a added missing L_No: to 2 funcs [Lupus]
//= 0.1b Removed duplicates [Toms]
//= 0.2 Added missing next;'s [Evera]
//= 0.3 Fixed Zweihander[+] id [Lupus]
//= 1.0 Fixed ingredients check [Lupus]
//= 1.1 Updated to official. [SinSloth]
//= 1.1b Optimized/cleaned [ultramage]
//= 1.2 Fixed some typos and a nasty bug. [SinSloth]
//= 1.3 Fixed a wrong item ID with Sphinx Hat. [SinSloth]
//= 1.4 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
//= 1.5 Removed Ontouch trigger area from NPCs. [L0ne_W0lf]
//= 1.6 Replaced effect numerics with constants. [Samuray22]
//= 1.7 Adjusted prices on some armor and weapons. [L0ne_W0lf]
//= 1.8 Added missing Gae Bolg and Dragon Slayer. [Kisuka]
//= 1.9 Moved Episode 12 items to separate NPC.
//=     Some cleanup & optimization. [Gepard]
//= 2.0 Duplicates now spawn from floating NPCs. [L0ne_W0lf]
//= 2.0a Added 'disable_items' command. [Euphy]
//============================================================

-	script	Seiyablem#dummy::SocketEnchant	-1,{
	if (checkweight(1201,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 he 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),5)&2) // 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;
				set .@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);
					set Zeny, 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);
					set Zeny, 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	-1,{
	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