summaryrefslogblamecommitdiff
path: root/npc/merchants/socket_enchant.txt
blob: 1396ace0d9124f697fc79b4e7f33f8af8119d935 (plain) (tree)





































                                                                           
                                   
                                                                           
                                             


                                                                           
 
                                                    





                                                    
                                                      

                      







                                                                                                                               
                                                                                       





                                                                                                                                               
                             
                                                                         





                                                                                                                                                                                       
                                                                             
                                         


                                                                                                           
                                         



                                                                                               
                                                                                                                    
                                             
                                                                                                                                   
                                         








                                                                                                                 
                                         



                                                                                
                                                                                                            
                                             
                                                                                                                                                           
                                         








                                                                                                                                                                  
                                         






                                                                                                      
                                                                                                                                                       
                                         







                                                                                                                   

                                         






                                                                                                           
                             
                                                                         






                                                                                               
                                                                                     
                                         



                                                                                                         
                                         




                                                                                  
                                                                                                                                                           
                                         










                                                                                                          
                                         



                                                                                
                                                                                                           
                                             
                                                                                                                                                                                                                                                  
                                         

















                                                                                                          
                                         



                                                                   
                                                                                                                                                       
                                             
                                                                                                                                                                 
                                         










                                                                                                           

                                         











                                                                                                                                      
                                                                                                


                                                                                                                                         
                                                                                                                                                                                      
                                                           

                                          
                                                                                                                       

                                                                                                                     






                                                                                                                          
 
 

                                         
                      
                          


                                                                                                                                                                                                                                                                                                                                                                                                                                                     
             

                                                                        
         





                                                                                                                                                                         
         
                     
         




                                                                                                                                                                                                   
         
                                                      
             
                                                      
         
                       
                                                                                                                                                                                                                                                                                           
                         
                                                  


                                                                                 
                                                  









                                                                                                                                                    
                                                               

















                                                                                                  
                                                               




                                                                              
                         
                            
                         
                                                  

                                                                                                                             

                                      





                                                                                                 
         

 



                                                                              
 
                                                    













                                                                                                                                

 



                                                                       
//================= 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	-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;
				.@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	-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