//================= 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) Euphy
//= Copyright (C) L0ne_W0lf
//= Copyright (C) Gepard
//=
//= 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 12 Socket Enchant NPC
//================= Description ===========================================
//= Adds slots to selected weapons and armor.
//================= Current Version =======================================
//= 1.1a
//=========================================================================
- script Leablem#dummy::SocketEnchant2 -1,{
if (checkweight(Knife,1) == 0)
{
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you lose some weight. -";
close;
}
mes "[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"+(RENEWAL?":Special Ninja Suit":""))) {
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 3: callfunc "Func_Socket2",15053,15056,50,61,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(Gold) > 1) && (countitem(Helm_Of_Sun) > 0))
{
mes "[Leablem]";
mes "Shall we start now?";
mes "Pray to your gods for good luck.";
next;
.@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 Helm_Of_Sun,1;
delitem Gold,2;
Zeny -= 200000000;
getitem Helm_Of_Sun_,1;
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 Helm_Of_Sun,1;
delitem Gold,2;
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;
}
}
payon,236,199,3 duplicate(SocketEnchant2) Leablem#pay 4_M_04
lighthalzen,96,137,3 duplicate(SocketEnchant2) Leablem#lhz 4_M_04
prt_in,22,60,6 duplicate(SocketEnchant2) Leablem#prt 4_M_04
moc_ruins,154,86,3 duplicate(SocketEnchant2) Leablem#moc 4_M_04
function script Func_Socket2 {
disable_items;
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;
.@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);
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);
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;
}
}