Explorar o código

Updated Socket Enchant: all items moved to proper NPCs, added slotted Hat of Sun God. (bugreport:2871)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14107 54d463be-8e91-2dee-dedb-b68131a5f0ec
Gepard %!s(int64=15) %!d(string=hai) anos
pai
achega
b0789a837a
Modificáronse 4 ficheiros con 635 adicións e 241 borrados
  1. 1 1
      db/item_db.txt
  2. 165 240
      npc/merchants/socket_enchant.txt
  3. 468 0
      npc/merchants/socket_enchant2.txt
  4. 1 0
      npc/scripts_athena.conf

+ 1 - 1
db/item_db.txt

@@ -2490,7 +2490,7 @@
 5350,Pirate_Bandana_,Pirate Bandana,5,20,,100,,3,,1,0xFFFFFFFE,7,2,256,,0,1,74,{ bonus bStr,1; },{},{}
 5351,Sunflower_,Sunflower,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,0,37,{ bonus2 bSubRace,RC_Insect,10; },{},{}
 5352,Poporing_Cap,Poporing Hat,5,20,,700,,2,,0,0xFFFFFFFE,7,2,256,,38,1,361,{},{},{}
-//5353,Helm_Of_Sun_
+5353,Helm_Of_Sun_,Hat of the Sun God,5,20,,2400,,4,,1,0x00CFDF80,7,2,768,,0,1,138,{ bonus bStr,3; bonus bInt,2; },{},{}
 //5354,Muslim_Hat_M,Songkok,5,20,,100,,2,,0,0xFFFFFFFE,7,1,256,,0,1,362,{ bonus bCastrate,-5; },{},{}
 //5355,Muslim_Hat_F,Selendang,5,20,,100,,2,,0,0xFFFFFFFE,7,0,256,,0,1,363,{ bonus bCastrate,-5; },{},{}
 5356,Pumpkin_Hat_H,Pumpkin Hat,5,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; },{},{}

+ 165 - 240
npc/merchants/socket_enchant.txt

@@ -1,14 +1,14 @@
 //===== eAthena Script =======================================
-//= Socket Enchant
+//= Episode 11.1 Socket Enchant NPC
 //===== By: ==================================================
 //= eAthena dev team
 //===== Current Version: =====================================
-//= 1.8
+//= 1.9
 //===== Compatible With: =====================================
 //= eAthena SVN
 //===== Description: =========================================
-//= item loses all element refinement and upgrades but
-//= cards too?
+//= [Aegis 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]
@@ -24,10 +24,20 @@
 //= 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]
 //============================================================
 
-payon,140,151,5	script	Seiyablem	84,{
-
+payon,140,151,5	script	Seiyablem#pay	84,{
+	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 loose 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.";
@@ -36,88 +46,63 @@ payon,140,151,5	script	Seiyablem	84,{
 	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" ) )
+	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?";
-			set @sockettype,1;
 			next;
-			switch( select( "C Class","B Class","A Class","S Class" ) )
+			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","Book of Billows","Book of Mother Earth","Book of the Blazing Sun","Book of Gust of Wind" ) )
+					switch(select("Trident:Rope:Violin"))
 					{
-						case 1: callfunc "Func_Socket",1,1460,1461,40,66,200,1010,10; break;
-						case 2: callfunc "Func_Socket",1,1950,1951,40,66,200,1010,10; break;
-						case 3: callfunc "Func_Socket",1,1901,1902,40,66,200,1010,10; break;
-						case 4: callfunc "Func_Socket",1,1553,1568,40,66,200,1010,10; break;
-						case 5: callfunc "Func_Socket",1,1554,1569,40,66,200,1010,10; break;
-						case 6: callfunc "Func_Socket",1,1555,1570,40,66,200,1010,10; break;
-						case 7: callfunc "Func_Socket",1,1556,1571,40,66,200,1010,10; break;
+						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;
 					}
-				break;
-				
 				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","Orcish Axe","Scimitar","Spike" ) )
+					switch(select("Chain:Gladius:Gakkung Bow:Pike:Haedonggum:Lute:Wire:Waghnakh:Arbalest Bow"))
 					{
-						case 1: callfunc "Func_Socket",1,1519,1520,40,61,300,1010,10; break;
-						case 2: callfunc "Func_Socket",2,1219,1220,40,61,300,984,1,999,5; break;
-						case 3: callfunc "Func_Socket",2,1714,1716,40,61,300,984,2,999,5; break;
-						case 4: callfunc "Func_Socket",1,1407,1408,40,61,200,1010,10; break;
-						case 5: callfunc "Func_Socket",2,1123,1128,40,61,300,984,2,999,5; break;
-						case 6: callfunc "Func_Socket",1,1905,1906,40,61,300,1011,10; break;
-						case 7: callfunc "Func_Socket",1,1954,1955,40,61,300,1011,10; break;
-						case 8: callfunc "Func_Socket",1,1801,1802,40,61,300,1010,10; break;
-						case 9: callfunc "Func_Socket",2,1713,1715,40,61,300,984,2,999,5; break;
-						case 10: callfunc "Func_Socket",1,1304,1309,40,61,200,984,1; break;
-						case 11: callfunc "Func_Socket",1,1113,1114,40,61,200,984,1; break;
-						case 12: callfunc "Func_Socket",1,1523,1538,40,61,300,984,1; break;
+						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;
 					}
-				break;
-				
 				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","Dragon Killer","Katar of Frozen Icicle","Katar of Quaking","Katar of Raging Blaze","Katar of Piercing Wind","Golden Mace","Oriental Lute","Queen's Whip","Phantom Spear","Gae Bolg","Schweizersabel" ) )
+					switch(select("Hunter Bow:Survivor's Rod(INT):Zweihander:Flamberge:Infiltrator:Ballista:Stunner:Berserk:Claymore"))
 					{
-						case 1: callfunc "Func_Socket",2,1718,1726,40,61,500,984,2,999,10; break;
-						case 2: callfunc "Func_Socket",2,1619,1620,40,61,500,984,5,999,10; break;
-						case 3: callfunc "Func_Socket",2,1168,1171,40,61,800,984,5,999,10; break;
-						case 4: callfunc "Func_Socket",2,1129,1149,40,61,500,984,2,999,10; break;
-						case 5: callfunc "Func_Socket",2,1261,1266,40,61,700,984,5,999,10; break;
-						case 6: callfunc "Func_Socket",2,1722,1727,40,61,500,984,5,999,10; break;
-						case 7: callfunc "Func_Socket",2,1522,1532,40,61,500,984,2,999,10; break;
-						case 8: callfunc "Func_Socket",2,1814,1816,40,61,500,984,5,999,10; break;
-						case 9: callfunc "Func_Socket",2,1163,1172,40,61,500,984,5,999,10; break;
-						case 10: callfunc "Func_Socket",1,13001,13030,40,61,500,984,2; break;
-						case 11: callfunc "Func_Socket",1,1256,1275,40,61,500,984,2; break;
-						case 12: callfunc "Func_Socket",1,1257,1276,40,61,500,984,2; break;
-						case 13: callfunc "Func_Socket",1,1258,1277,40,61,500,984,2; break;
-						case 14: callfunc "Func_Socket",1,1259,1278,40,61,500,984,2; break;
-						case 15: callfunc "Func_Socket",1,1524,1539,40,61,500,984,2; break;
-						case 16: callfunc "Func_Socket",1,1918,1922,40,61,500,984,2; break;
-						case 17: callfunc "Func_Socket",1,1970,1976,40,61,500,984,2; break;
-						case 18: callfunc "Func_Socket",1,1477,1479,40,61,500,984,2; break;
-						case 19: callfunc "Func_Socket",1,1474,1480,40,61,500,984,2; break;
-						case 20: callfunc "Func_Socket",1,1167,1178,40,61,500,984,2; break;
+						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
 					}
-				break;
-				
 				case 4:
 					mes "[Seiyablem]";
 					mes "Whoa, whoa, whoa...";
@@ -125,28 +110,18 @@ payon,140,151,5	script	Seiyablem	84,{
 					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)","Zephyrus","Mailbreaker","Dragon Slayer","Swordbreaker","Assassin Dagger","Grand Cross","Executioner" ) )
+					switch(select("Gungnir:Poison Knife:Ice Pick:Sucsamad:Ginnungagap:Cutlas:Crescent Scythe:Survivor's Rod(DEX)"))
 					{
-						case 1: callfunc "Func_Socket",2,1413,1418,40,51,1000,984,5,999,10; break;
-						case 2: callfunc "Func_Socket",2,1239,13016,40,51,1000,984,5,999,10; break;
-						case 3: callfunc "Func_Socket",2,1230,13017,40,51,2000,984,5,999,10; break;
-						case 4: callfunc "Func_Socket",2,1236,13018,40,51,1000,984,5,999,10; break;
-						case 5: callfunc "Func_Socket",2,13002,13019,40,51,1000,984,5,999,10; break;
-						case 6: callfunc "Func_Socket",2,1135,13400,40,51,1000,984,5,999,10; break;
-						case 7: callfunc "Func_Socket",2,1466,1476,40,51,1000,984,5,999,10; break;
-						case 8: callfunc "Func_Socket",2,1617,1618,40,51,2000,984,5,999,10; break;
-						case 9: callfunc "Func_Socket",2,1468,1481,40,51,1000,984,5,999,10; break;
-						case 10: callfunc "Func_Socket",2,1225,13032,40,51,1000,984,5,999,10; break;
-						case 11: callfunc "Func_Socket",2,1166,1180,40,51,1000,984,5,999,10; break;
-						case 12: callfunc "Func_Socket",2,1224,13031,40,51,1000,984,5,999,10; break;
-						case 13: callfunc "Func_Socket",2,1232,13033,40,51,1000,984,5,999,10; break;
-						case 14: callfunc "Func_Socket",2,1528,1540,40,51,1000,984,5,999,10; break;
-						case 15: callfunc "Func_Socket",2,1169,1179,40,51,1000,984,5,999,10; break;
+						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;
 					}
-				break;
 			}
-		break;
-		
 		case 2:
 			mes "[Seiyablem]";
 			mes "Armor, you said?";
@@ -154,9 +129,8 @@ payon,140,151,5	script	Seiyablem	84,{
 			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?";
-			set @sockettype,2;
 			next;
-			switch( select( "C Class","B Class","A Class","S Class" ) )
+			switch(select("C Class:B Class:A Class:S Class"))
 			{
 				case 1:
 					mes "[Seiyablem]";
@@ -164,102 +138,80 @@ payon,140,151,5	script	Seiyablem	84,{
 					mes "Sounds reasonable.";
 					mes "Which armor would you like to try adding a Slot?";
 					next;
-					switch( select( "Mantle","Coat","Circlet","Biretta","Sunflower","Ph.D Hat","Big Ribbon","Boys Cap" ) )
+					switch(select("Mantle:Coat:Circlet:Biretta"))
 					{
-						case 1: callfunc "Func_Socket",1,2307,2308,40,66,200,999,3; break;
-						case 2: callfunc "Func_Socket",1,2309,2310,40,66,200,999,3; break;
-						case 3: callfunc "Func_Socket",1,2232,2233,40,66,200,999,3; break;
-						case 4: callfunc "Func_Socket",1,2216,2217,40,66,200,999,3; break;
-						case 5: callfunc "Func_Socket",1,2253,5351,40,66,100,999,3; break;
-						case 6: callfunc "Func_Socket",1,5012,5347,40,66,200,999,3; break;
-						case 7: callfunc "Func_Socket",1,2244,5348,40,66,200,999,5; break;
-						case 8: callfunc "Func_Socket",1,5016,5349,40,66,200,999,5; break;
+						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;
 					}
-				break;
-				
 				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","Skull Ring","High Heels" ) )
+					switch(select("Mirror Shield:Chain Mail:Saint Robe:Silk Robe:Boots:Shoes:Muffler:Guard:Buckler:Shield:Bongun Hat"))
 					{
-						case 1:  callfunc "Func_Socket",1,2107,2108,40,61,250,999,5; break;
-						case 2:  callfunc "Func_Socket",1,2314,2315,40,61,250,999,5; break;
-						case 3:  callfunc "Func_Socket",1,2325,2326,40,61,300,999,5; break;
-						case 4:  callfunc "Func_Socket",1,2321,2322,40,61,300,999,5; break;
-						case 5:  callfunc "Func_Socket",1,2405,2406,40,61,300,999,5; break;
-						case 6:  callfunc "Func_Socket",1,2403,2404,40,61,300,999,5; break;
-						case 7:  callfunc "Func_Socket",1,2503,2504,40,61,300,999,5; break;
-						case 8:  callfunc "Func_Socket",1,2101,2102,40,61,300,999,5; break;
-						case 9:  callfunc "Func_Socket",1,2103,2104,40,61,300,999,5; break;
-						case 10: callfunc "Func_Socket",1,2105,2106,40,61,250,999,5; break;
-						case 11: callfunc "Func_Socket",1,5046,5168,40,61,250,999,5; break;
-						case 12: callfunc "Func_Socket",1,2609,2715,40,61,300,999,5; break;
-						case 13: callfunc "Func_Socket",1,2409,2432,40,61,300,999,5; break;
+						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;
 					}
-				break;
-				
 				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","Pirate Bandana","Black Leather Boots" ) )
+					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",1,2230,2231,40,61,400,985,1; break;
-						case 2:  callfunc "Func_Socket",1,5114,5120,40,61,400,985,1; break;
-						case 3:  callfunc "Func_Socket",1,2109,2121,40,61,400,985,1; break;
-						case 4:  callfunc "Func_Socket",1,2330,2331,40,61,400,985,1; break;
-						case 5:  callfunc "Func_Socket",1,2341,2342,40,61,400,985,1; break;
-						case 6:  callfunc "Func_Socket",1,2316,2317,40,61,400,985,1; break;
-						case 7:  callfunc "Func_Socket",1,2335,2336,40,61,400,985,1; break;
-						case 8:  callfunc "Func_Socket",1,2411,2412,40,61,400,985,1; break;
-						case 9:  callfunc "Func_Socket",1,5092,5093,40,61,400,985,1; break;
-						case 10: callfunc "Func_Socket",1,2505,2506,40,61,400,985,1; break;
-						case 11: callfunc "Func_Socket",1,2228,2229,40,61,400,985,1; break;
-						case 12: callfunc "Func_Socket",1,2337,2359,40,61,400,985,1; break;
-						case 13: callfunc "Func_Socket",1,2299,5157,40,61,400,985,1; break;
-						case 14: callfunc "Func_Socket",1,2507,2525,40,61,400,985,1; break;
-						case 15: callfunc "Func_Socket",1,2251,5158,40,61,400,985,1; break;
-						case 16: callfunc "Func_Socket",1,2246,5159,40,61,400,985,1; break;
-						case 17: callfunc "Func_Socket",1,2605,2625,40,61,400,985,1; break;
-						case 18: callfunc "Func_Socket",1,2264,5167,40,61,300,985,1; break;
-						case 19: callfunc "Func_Socket",1,2287,5350,40,61,500,985,1; break;
-						case 20: callfunc "Func_Socket",1,2425,2434,40,61,500,985,1; break;
+						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;
 					}
-				break;
-				
 				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.";
+					mes "Alright... Let me know the Armor to which you'd like to add a Sot, 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","Mage Coat","Holy Robe","Sacred Mission","Undershirt","Pantie" ) )
+					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",1,2256,5160,40,51,2000,985,2; break;
-						case 2:  callfunc "Func_Socket",1,2258,5161,40,51,2000,985,2; break;
-						case 3:  callfunc "Func_Socket",1,5017,5162,40,51,2000,985,2; break;
-						case 4:  callfunc "Func_Socket",1,5019,5163,40,51,2000,985,2; break;
-						case 5:  callfunc "Func_Socket",1,2235,5165,40,51,2000,985,2; break;
-						case 6:  callfunc "Func_Socket",1,2234,5164,40,51,2000,985,2; break;
-						case 7:  callfunc "Func_Socket",1,5053,5166,40,51,2000,985,2; break;
-						case 8:  callfunc "Func_Socket",1,2343,2360,40,51,2000,985,2; break;
-						case 9:  callfunc "Func_Socket",1,2602,2622,40,51,2000,985,2; break;
-						case 10: callfunc "Func_Socket",1,2601,2621,40,51,2000,985,2; break;
-						case 11: callfunc "Func_Socket",1,2619,2671,40,51,2000,985,2; break;
-						case 12: callfunc "Func_Socket",1,2334,2372,40,51,1000,985,1; break;
-						case 13: callfunc "Func_Socket",1,2327,2373,40,51,1000,985,1; break;
-						case 14: callfunc "Func_Socket",1,2111,2128,40,51,1000,985,1; break;
-						case 15: callfunc "Func_Socket",1,2522,2523,40,51,1000,985,1; break;
-						case 16: callfunc "Func_Socket",1,2339,2371,40,51,1000,985,1; break;
+						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;
 					}
-				break;
 			}
-		break;
-		
 		case 3:
 			mes "[Seiyablem]";
 			mes "Well, I haven't really refined the art of Slot Addition.";
@@ -272,7 +224,7 @@ payon,140,151,5	script	Seiyablem	84,{
 			mes "isn't that really peculiar?";
 			next;
 			mes "[Seiyablem]";
-			mes "Oh, theres also something really important that you should know.";
+			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]";
@@ -283,7 +235,6 @@ payon,140,151,5	script	Seiyablem	84,{
 			mes "Again, ^FF0000only carry one of the equipment to wich 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.";
@@ -292,127 +243,101 @@ payon,140,151,5	script	Seiyablem	84,{
 			close;
 	}
 }
-				
+
 function	script	Func_Socket	{
 
 	mes "[Seiyablem]";
-	mes "You want to add a Slot to a " +getitemname(getarg(1))+ "?";
-	if (getarg(0) == 1)
-	{
-		if(getarg(5) > 999) mes "Alright, please bring me ^FF0000" +getarg(7)+ " " +getitemname(getarg(6))+ "s^000000, and my^FF0000 " +getarg(5) / 1000+",000,000 zeny^000000 service fee.";
-		else mes "Alright, please bring me ^FF0000" +getarg(7)+ " " +getitemname(getarg(6))+ "s^000000, and my^FF0000 " +getarg(5)+",000 zeny^000000 service fee.";
-	}
-	else if (getarg(0) == 2)
-	{
-		if(getarg(5) > 999) mes "Alright, please bring me ^FF0000" +getarg(7)+ " " +getitemname(getarg(6))+ "^000000, ^FF0000" +getarg(9)+ " " +getitemname(getarg(8))+ "^000000 and my^FF0000 " +getarg(5) / 1000+",000,000 zeny^000000 service fee.";
-		else mes "Alright, please bring me ^FF0000" +getarg(7)+ " " +getitemname(getarg(6))+ "^000000, ^FF0000" +getarg(9)+ " " +getitemname(getarg(8))+ "^000000 and my^FF0000 " +getarg(5)+",000 zeny^000000 service fee.";
-	}
-	mes "Ah, and don't forget to bring that " +getitemname(getarg(1))+ "!";
+	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;
-
-	if(@sockettype == 1)
+	mes "[Seiyablem]";
+	if (getiteminfo(getarg(0),5)&2) // EQP_HAND_R = 2, it's a weapon
 	{
-		mes "[Seiyablem]";
 		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.";
-		mes "Do you still want to try to add a Slot?";
-		next;
 	}
-	else if(@sockettype == 2)
+	else // armor
 	{
-		mes "[Seiyablem]";
 		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;
-	}
-
-	if ( select("Attempt Slot Addition","Cancel") == 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;
 	}
-
-	mes "[Seiyablem]";
-	mes "Alright then, let the work begin!";
-	mes "You'd better pray for a successful result.";
+	mes "Do you still want to try to add a Slot?";
 	next;
-	switch(getarg(0))
+	switch(select("Attempt Slot Addition:Cancel"))
 	{
 		case 1:
-			if((Zeny < getarg(5)*1000) || (countitem(getarg(6)) < getarg(7)) || (!countitem(getarg(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 "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;
+				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;
+				}
 			}
-			break;
-	
-		case 2:
-			if((Zeny < getarg(5)*1000) || (countitem(getarg(6)) < getarg(7)) || (countitem(getarg(8)) < getarg(9)) || (!countitem(getarg(1))))
+			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;
 			}
-			break;
-	}
-	
-	set .@socketrand,rand(1,100);
-	if((.@socketrand > getarg(3)) && (.@socketrand < getarg(4)))
-	{
-		if(getarg(4) == 51) specialeffect EF_LORD;
-		else specialeffect EF_SANCTUARY;
-		mes "[Seiyablem]";
-		mes "Great, it seems to be successful.";
-		mes "It looks pretty well done. Congratulations!";
-		delitem getarg(1),1;
-		delitem getarg(6),getarg(7);
-		if(getarg(0) == 2) delitem getarg(8),getarg(9);
-		set Zeny,Zeny - getarg(5)*1000;
-		getitem getarg(2),1;
-		next;
-		mes "[Seiyablem]";
-		mes "See you again, buddy!";
-		close;
-	}
-	else
-	{
-		specialeffect EF_FREEZING;
-		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(1),1;
-		delitem getarg(6),getarg(7);
-		if(getarg(0) == 2) delitem getarg(8),getarg(9);
-		set Zeny,Zeny - getarg(5)*1000;
-		next;
-		mes "[Seiyablem]";
-		mes "I wish you good luck next time!";
-		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;
 	}
 }
 
-lhz_in02,281,35,5	duplicate(Seiyablem)	Seiyablem#lhz	84
-prt_in,33,70,5	duplicate(Seiyablem)	Seiyablem#prt	84
-morocc,51,41,5	duplicate(Seiyablem)	Seiyablem#moc	84
-
-payon,143,143,7	script	Young Man#socket	97,{
+lhz_in02,281,35,5	duplicate(Seiyablem#pay)	Seiyablem#lhz	84
+prt_in,33,70,5	duplicate(Seiyablem#pay)	Seiyablem#prt	84
+morocc,51,41,4	duplicate(Seiyablem#pay)	Seiyablem#moc	84
 
+prt_in,31,57,1	script	Young Man#prt	97,{
 	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.";
@@ -429,6 +354,6 @@ payon,143,143,7	script	Young Man#socket	97,{
 	close;
 }
 
-lhz_in02,269,33,5	duplicate(Young Man#socket)	Young Man#lhz	97
-prt_in,31,57,1	duplicate(Young Man#socket)	Young Man#prt	97
-morocc,60,42,3	duplicate(Young Man#socket)	Young Man#moc	97
+payon,143,143,7	duplicate(Young Man#prt)	Young Man#pay	97
+morocc,60,42,3	duplicate(Young Man#prt)	Young Man#moc	97
+lhz_in02,269,33,5	duplicate(Young Man#prt)	Young Man#lhz	97

+ 468 - 0
npc/merchants/socket_enchant2.txt

@@ -0,0 +1,468 @@
+//===== eAthena Script ======================================= 
+//= Episode 12 Socket Enchant NPC
+//===== By: ================================================== 
+//= Gepard
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= eAthena SVN
+//===== Description: ========================================= 
+//= [Aegis Conversion]
+//= Adds slots to selected weapons and armor.
+//===== Additional Comments: ================================= 
+//= 1.0 First version.
+//============================================================ 
+
+payon,236,199,3	script	Leablem	86,{
+	if (checkweight(1201,1) == 0)
+	{
+		mes "- Wait a seconds !! -";
+		mes "- You have carried too many items -";
+		mes "- so, you can't get more items. -";
+		mes "- Make your weight as low -";
+		mes "- after then try it again. -";
+		close;
+	}
+	mes "[Leablem]";
+	mes "Good day. My name is Leablem,";
+	mes "and I'm a technician that specializes in";
+	mes "adding slots to weapons and armors.";
+	mes "It can be very hard sometimes, but I like";
+	mes "what I do, and take pride in it.";
+	next;
+	mes "[Leablem]";
+	mes "I've learned most of the things from my brother, Seyablem,";
+	mes "but I think I still have a lot to learn.";
+	mes "So please understand my slotting services are limited,";
+	mes "unlike my brother Seyablem.";
+	next;
+	mes "[Leablem]";
+	mes "My brother wasn't so happy to teach me";
+	mes "his skills because he was worried that his skills";
+	mes "wouldn't be unique anymore. He did, however, his best";
+	mes "to teach me.";
+	next;
+	mes "[Leablem]";
+	mes "Thanks to him, I've learned lots of things.";
+	mes "I'm not very confident";
+	mes "in trying many different things,";
+	mes "but I'll do what";
+	mes "I can do for now.";
+	next;
+	mes "[Leablem]";
+	mes "In fact, there's one thing";
+	mes "that my brother doesn't want me to do.";
+	mes "I don't want to upset him, so...let's just skip that part.";
+	mes "I'll say no more about it!";
+	next;
+	mes "[Leablem]";
+	mes "Anyways, do you have any equipment";
+	mes "which you'd like to add to the slots?";
+	mes "My service charge, the materials,";
+	mes "and the success chance all depend on";
+	mes "the specific item I'm working on.";
+	next;
+	switch(select("Weapon:Armor:About that thing you skipped:More information:Quit"))
+	{
+		case 1:
+			mes "[Leablem]";
+			mes "Weapon, you said? Sure, no problem.";
+			mes "Weapons are divided into 4 different class";
+			mes "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:B:A:S"))
+			{
+				case 1:
+					mes "[Leablem]";
+					mes "C class, I see.";
+					mes "So, what kind of weapon do you have?";
+					next;
+					switch(select("Book of Mother Earth:Book of Billows:Book of Gust of Wind:Book of the Blazing Sun"))
+					{
+						case 1: callfunc "Func_Socket2",1554,1569,40,66,200,1010,10;
+						case 2: callfunc "Func_Socket2",1553,1568,40,66,200,1010,10;
+						case 3: callfunc "Func_Socket2",1556,1571,40,66,200,1010,10;
+						case 4: callfunc "Func_Socket2",1555,1570,40,66,200,1010,10;
+					}
+				case 2:
+					mes "[Leablem]";
+					mes "You have chosen average B class.";
+					mes "So, what kind of weapon do you have?";
+					next;
+					switch(select("Orcish Axe:Scimiter:Spike"))
+					{
+						case 1: callfunc "Func_Socket2",1304,1309,40,66,200,984,1;
+						case 2: callfunc "Func_Socket2",1113,1114,40,66,200,984,1;
+						case 3: callfunc "Func_Socket2",1523,1538,40,61,300,984,1;
+					}
+				case 3:
+					mes "[Leablem]";
+					mes "A class? You seem to want little too much. But, no problem.";
+					mes "So, what kind of weapon do you have?";
+					next;
+					switch(select("Dragon Killer:Katar of Quaking:Katar of Raging Blaze:Katar of Frozen Icicle:Katar of Piercing Wind:Golden Mace:Oriental Lute:Queen's Whip:Spectral Spear:Gae Bolg:Schweizersabel"))
+					{
+						case 1:  callfunc "Func_Socket2",13001,13030,40,61,500,984,2;
+						case 2:  callfunc "Func_Socket2", 1257, 1276,40,66,500,984,2;
+						case 3:  callfunc "Func_Socket2", 1258, 1277,40,66,500,984,2;
+						case 4:  callfunc "Func_Socket2", 1256, 1275,40,66,500,984,2;
+						case 5:  callfunc "Func_Socket2", 1259, 1278,40,66,500,984,2;
+						case 6:  callfunc "Func_Socket2", 1524, 1539,40,61,500,984,2;
+						case 7:  callfunc "Func_Socket2", 1918, 1922,40,61,500,984,2;
+						case 8:  callfunc "Func_Socket2", 1970, 1976,40,61,500,984,2;
+						case 9:  callfunc "Func_Socket2", 1477, 1479,40,56,500,984,2;
+						case 10: callfunc "Func_Socket2", 1474, 1480,40,56,500,984,2;
+						case 11: callfunc "Func_Socket2", 1167, 1178,40,61,500,984,2;
+					}
+				case 4:
+					mes "[Leablem]";
+					mes "Huh, S Class?! Oh my god, are you serious?*Tremble*";
+					mes "So...which S class weapon would you like to make a slot?!";
+					next;
+					switch(select("Zephyrus:Mailbreaker:Dragon Slayer:Swordbreaker:Assasin Dagger:Grand Cross:Executioner"))
+					{
+						case 1: callfunc "Func_Socket2",1468, 1481,40,51,1000,984,5,999,10;
+						case 2: callfunc "Func_Socket2",1225,13032,40,51,1000,984,5,999,10;
+						case 3: callfunc "Func_Socket2",1166, 1180,40,51,1000,984,5,999,10;
+						case 4: callfunc "Func_Socket2",1224,13031,40,51,1000,984,5,999,10;
+						case 5: callfunc "Func_Socket2",1232,13033,40,51,1000,984,5,999,10;
+						case 6: callfunc "Func_Socket2",1528, 1540,40,51,1000,984,5,999,10;
+						case 7: callfunc "Func_Socket2",1169, 1179,40,51,1000,984,5,999,10;
+					}
+			}
+		case 2:
+			mes "[Leablem]";
+			mes "Armor, you said? Sure, no problem.";
+			mes "Weapons are divided into 4 different class";
+			mes "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:B:A:S"))
+			{
+				case 1:
+					mes "[Leablem]";
+					mes "C class, I see.";
+					mes "So, what kind of armor do you have?";
+					next;
+					switch(select("Sunflower:Ph.D Hat:Big Ribbon:Boys Cap"))
+					{
+						case 1: callfunc "Func_Socket2",2253,5351,40,66,100,999,3;
+						case 2: callfunc "Func_Socket2",5012,5347,40,66,100,999,3;
+						case 3: callfunc "Func_Socket2",2244,5348,40,66,100,999,5;
+						case 4: callfunc "Func_Socket2",5016,5349,40,66,100,999,5;
+					}
+				case 2:
+					mes "[Leablem]";
+					mes "You have chosen average B class.";
+					mes "So, what kind of armor do you have?";
+					next;
+					switch(select("Skull Ring:High Heels"))
+					{
+						case 1: callfunc "Func_Socket2",2609,2715,40,61,300,999,5;
+						case 2: callfunc "Func_Socket2",2409,2432,40,61,300,999,5;
+					}
+				case 3:
+					mes "[Leablem]";
+					mes "A class? You seem to want little too much. But, no problem.";
+					mes "So, what kind of armor do you have?";
+					next;
+					switch(select("Pirate Bandana:Black Leather Boots"))
+					{
+						case 1: callfunc "Func_Socket2",2287,5350,50,61,500,985,1; // 50,61 - it's not a typo
+						case 2: callfunc "Func_Socket2",2425,2434,40,51,500,985,1;
+					}
+				case 4:
+					mes "[Leablem]";
+					mes "Huh, S Class?! Oh my god, are you serious?*Tremble*";
+					mes "So...which S class armor would you like to make a slot?!";
+					next;
+					switch(select("Mage Coat:Holy Robe:Sacred Mission:Undershirt:Pantie"))
+					{
+						case 1: callfunc "Func_Socket2",2334,2372,40,51,1000,985,1; // Mage Coat has 10% success chance
+						case 2: callfunc "Func_Socket2",2327,2373,45,51,1000,985,1; // the rest has 5%
+						case 3: callfunc "Func_Socket2",2111,2128,45,51,1000,985,1;
+						case 4: callfunc "Func_Socket2",2522,2523,45,51,1000,985,1;
+						case 5: callfunc "Func_Socket2",2339,2371,45,51,1000,985,1;
+					}
+			}
+		case 3:
+			mes "[Leablem]";
+			mes "Oh, it's nothing special, but he thinks";
+			mes "it's not something for humans to mess with. ";
+			mes "I don't want to upset my brother,";
+			mes "so I'd better forget about it.";
+			next;
+			mes "[Leablem]";
+			mes "...That service itself has a very high success chance,";
+			mes "but requires a lot of materials and a high-rate service charge. ";
+			mes "I highly doubt that anyone would actually want to use";
+			mes "the service, even if I did open it.";
+			next;
+			mes "[Leablem]";
+			mes "...Ummm...";
+			next;
+			mes "[Leablem]";
+			mes ".............";
+			next;
+			mes "[Leablem]";
+			mes ".............";
+			next;
+			mes "[Leablem]";
+			mes "You seem interested in using that service.";
+			mes "If you want, I can at least tell you about it. ";
+			mes "But you must promise to keep this a secret.";
+			mes "If my brother finds out what I'm about to tell you,";
+			mes "he's gonna give me a beating!";
+			next;
+			mes "[Leablem]";
+			mes "This special service has a 90% success chance,";
+			mes "but requires 2 Gold and 2 hundred million zeny:";
+			mes "I can add slots to the Hat of the Sun God.";
+			next;
+			mes "[Leablem]";
+			mes "My brother said that, even since ancient times, it's forbidden to modify that hat. ";
+			mes "But I believe humans are too curious not to";
+			mes "experiment, especially when it's forbidden.";
+			mes "I just don't want my brother to yell at me. That's all.";
+			next;
+			switch(select("Use the Service","Quit"))
+			{
+				case 1:
+					mes "[Leablem]";
+					mes ".................";
+					next;
+					mes "[Leablem]";
+					mes ".................";
+					next;
+					mes "[Leablem]";
+					mes "...Wh... What? No!";
+					mes "Giving me that dirty look";
+					mes "won't make me do it!";
+					mes "No, I said no! No is no! No!";
+					next;
+					mes "[Leablem]";
+					mes "No, I won't! No!";
+					next;
+					mes "[Leablem]";
+					mes "I can't do it...";
+					next;
+					mes "[Leablem]";
+					mes "I can't do... It...";
+					next;
+					mes "[Leablem]";
+					mes ".................";
+					next;
+					mes "[Leablem]";
+					mes "Umm...";
+					next;
+					mes "[Leablem]";
+					mes "You're so persistent. Okay, I'll make you an exception.";
+					mes "Just don't tell anyone,";
+					mes "especially my brother. Do you promise?";
+					next;
+					mes "[Leablem]";
+					mes "Okay then, please bring me";
+					mes "^FF00002 Gold, 2 hundred million zeny -- the service charge --,";
+					mes "^FF0000and a Hat of the Sun God.";
+					mes "^FF0000You know your chance of success is 90% with this, don't you?^000000";
+					mes "We don't have time to waste,";
+					mes "so let's get down to business right away.";
+					next;
+					if ((Zeny > 199999999) && (countitem(969) > 1) && (countitem(5022) > 0))
+					{
+						mes "[Leablem]";
+						mes "Shall we start now?";
+						mes "Pray to your gods for good luck.";
+						next;
+						set .@a, rand(1,100);
+						if ((.@a > 4) && (.@a < 95))
+						{
+							specialeffect EF_LORD;
+							mes "[Leablem]";
+							mes "Excellent! Wow, I guess the 90% success chance is true!";
+							mes "Look, the slot was added in the perfect place.";
+							mes "Congratulations.";
+							delitem 5022,1; //Helm_Of_Sun
+							delitem 969,2; //Gold
+							set Zeny, Zeny - 200000000;
+							getitem 5353,1; //Helm_Of_Sun_
+							next;
+							mes "[Leablem]";
+							mes "This is the first and last time I will do this for you.";
+							mes "Don't ever tell anyone";
+							mes "about this. Okay?";
+							close;
+						}
+						else
+						{
+							specialeffect EF_SUI_EXPLOSION;
+							mes "[Leablem]";
+							mes "Wah! Oh my god, we failed!";
+							mes "My god, I guess we had the worst kind of luck...";
+							mes "What should we do? ...This is why";
+							mes "I didn't want to do in the first place!";
+							delitem 5022,1; //Helm_Of_Sun
+							delitem 969,2; //Gold
+							set Zeny, Zeny - 200000000;
+							next;
+							mes "[Leablem]";
+							mes "No, don't ever ask me to do such a risky thing again!";
+							mes "Bah~";
+							close;
+						}
+					}
+					else
+					{
+						mes "[Leablem]";
+						mes "Umm...";
+						next;
+						mes "[Leablem]";
+						mes "You don't have enough materials.";
+						mes "Man, why did you even ask me to try?";
+						mes "I'm not going to do this again for you,";
+						mes "even if you bring enough materials. Bah~";
+						close;
+					}
+				case 2:
+					mes "[Leablem]";
+					mes "Don't ever tell anyone";
+					mes "about what I told you. Okay?";
+					close;
+			}
+		case 4:
+			mes "[Leablem]";
+			mes "Do you want to know more information?";
+			mes "Well, I don't think there's something";
+			mes "that you specifically need to know.";
+			mes "But I can at least give you a tip.";
+			next;
+			mes "[Leablem]";
+			mes "The slot technicians in each town";
+			mes "provide different slotting success chances";
+			mes "depending on your equipment's upgrade level.";
+			mes "I don't know if that's true,";
+			mes "but I can see the difference in each town.";
+			next;
+			mes "[Leablem]";
+			mes "For instance, a slot technician in one town";
+			mes "provides a higher success chance to";
+			mes "equipment items at higher upgrade levels,";
+			mes "while a technician in another town has higher";
+			mes "success at lower upgrade levels.";
+			next;
+			mes "[Leablem]";
+			mes "When you fail to add a slot, the equipment";
+			mes "will become broken and disappear.";
+			mes "I try my best to succeed, but";
+			mes "slotting is complicated work.";
+			next;
+			mes "[Leablem]";
+			mes "Oh, there's an important thing that you need to be careful about.";
+			mes "^FF0000Try not to carry two identical equipment items";
+			mes "^FF0000with you when you add slots.";
+			mes "^FF0000Otherwise, slots may be added to one of the randomly chosen items,";
+			mes "^FF0000and in the worst case, you may lose an item that is more valuable to you.^000000";
+			next;
+			mes "[Leablem]";
+			mes "I hope this information will be helpful to you.";
+			mes "Thanks.";
+			close;
+		case 5:
+			mes "[Leablem]";
+			mes "Alright, then.";
+			close;
+	}
+}
+
+lighthalzen,96,137,3	duplicate(Leablem)	Leablem#lhz	86
+prontera,244,169,5	duplicate(Leablem)	Leablem#prt	86
+moc_ruins,154,86,3	duplicate(Leablem)	Leablem#moc	86
+
+function	script	Func_Socket2	{
+
+	mes "[Leablem]";
+	if(getarg(7,0) != 0 && getarg(8,0) != 0)
+	{
+		mes getitemname(getarg(0)) + "... Okay, then you need to bring me";
+		mes "^FF0000" + (getarg(4) >= 1000 ? (getarg(4)/1000 + ",000") : getarg(4)) + ",000 zeny as service charge,";
+		mes "^FF0000" + getarg(6) + "ea " + getitemname(getarg(5)) + " and " + getarg(8) + "ea " + getitemname(getarg(7)) + ".";
+		mes "^FF0000Of course, you need a " + getitemname(getarg(0)) + ".^000000";
+	}
+	else
+	{
+		mes getitemname(getarg(0)) + "? Okay, then you need to bring me";
+		mes "^FF0000" + (getarg(4) >= 1000 ? (getarg(4)/1000 + ",000") : getarg(4)) + ",000 zeny as service charge and " + getarg(6) + " " + getitemname(getarg(5)) + (getarg(6) > 1 && getarg(5) != 999 ? "s":"") + " as the requirement.";
+		mes "^FF0000Of course, don't forget to bring me a " + getitemname(getarg(0)) + ".";
+		mes "^FF0000You should have all items.^000000";
+	}
+	next;
+	mes "[Leablem]";
+	mes "Did you already bring all of them?";
+	mes "For your information, if you fail to create a slot,";
+	mes "you will lose all the item requirement as well as the target " + (getiteminfo(getarg(0),5)&2 ? "weapon" : "armor") + "."; // EQP_HAND_R = 2, it's a weapon, otherwise armor
+	mes "Also remember, if the " + (getiteminfo(getarg(0),5)&2 ? "weapon" : "armor") + " has been upgraded, and has been inserted with a card,";
+	mes "you will lose them even if you succeed in creating a slot.";
+	next;
+	switch(select("Ask for slot creation.:Try next time."))
+	{
+		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 "[Leablem]";
+				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 EF_LORD;
+					mes "[Leablem]";
+					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 "[Leablem]";
+					mes "See you again, buddy!";
+					close;
+				}
+				else
+				{
+					specialeffect EF_SUI_EXPLOSION;
+					mes "[Leablem]";
+					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,";
+					mes "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 "[Leablem]";
+					mes "See you again, buddy!";
+					close;
+				}
+			}
+			else
+			{
+				mes "[Leablem]";
+				mes "Are you stupid or what? You didn't bring all of the required items!";
+				mes "Go bring them quick!";
+				close;
+			}
+		case 2:
+			mes "[Leablem]";
+			mes "See you next time.";
+			close;
+	}
+}

+ 1 - 0
npc/scripts_athena.conf

@@ -47,6 +47,7 @@ npc: npc/merchants/kunai_maker.txt
 npc: npc/merchants/ammo_boxes.txt
 npc: npc/merchants/ammo_dealer.txt
 npc: npc/merchants/socket_enchant.txt
+npc: npc/merchants/socket_enchant2.txt
 npc: npc/merchants/novice_exchange.txt
 npc: npc/merchants/gemstone.txt
 npc: npc/merchants/advanced_refiner.txt