You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

542 lines
20 KiB
Plaintext

//===== rAthena Script =======================================
//= Kagerou/Oboro Gear Enchants
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= [Official Conversion]
//= Adds enchantments to Kagerou/Oboro gear.
//===== Additional Comments: =================================
//= 1.0 First version. [Euphy]
//============================================================
// Main NPC :: job_ko
//============================================================
que_ng,75,20,3 script Artisan Tene#ko 762,{
disable_items;
mes "[Artisan Tene]";
mes "Hello? I'm Artisan Tene, the most respectful blacksmith of them all.";
next;
mes "[Artisan Tene]";
mes "How may I help you?";
next;
switch(select("Which blacksmith?:I want to add option.:I want to remove option.")) {
case 1:
mes "[Artisan Tene]";
mes "Oh! Sorry, I didn't introduce myself.";
next;
mes "[Artisan Tene]";
mes "I can add or remove options from some weapons and armor at a small price.";
next;
mes "[Artisan Tene]";
mes "Oh! Do you want to know the list of weapons and armor I work on?";
next;
switch(select("Take a look at the weapon list.:Take a look at the armor list.")) {
case 1:
mes "[Artisan Tene]";
mes "Are you interested in the weapon list?";
next;
mes "[Artisan Tene]";
mes "The weapons I work on are ";
mes "^ff0000Raksasa Dagger [1]^000000";
mes "^ff0000Mikatsuki[1]^000000";
mes "^ff0000Huuma Swirling Petal [2]^000000";
mes "^ff0000Huuma Fluttering Snow^000000";
mes "^ff0000Huuma Thunderstorm^000000";
next;
break;
case 2:
mes "[Artisan Tene]";
mes "Are you interested in the armor list?";
next;
mes "[Artisan Tene]";
mes "The armor I work on is";
mes "^ff0000Wolf Armguard [1]^000000";
mes "^ff0000Crescent Armguard [1]^000000";
mes "^ff0000Ninja Scale Armor [1]^000000";
mes "^ff0000Tenebris Latitantes [1]^000000";
mes "^ff0000Special Ninja Suit [1]^000000";
next;
break;
}
mes "[Artisan Tene]";
mes "This is it. I'm still in practice to learn and handle more battlegear.";
next;
mes "[Artisan Tene]";
mes "If you'd like, I can add options to your 4th and 3rd Slots at a small cost.";
close;
case 2:
mes "[Artisan Tene]";
mes "Oh! You need to add an option.";
mes "I use the method of adding options to your 4th and 3rd slots of battlegear equipped.";
next;
mes "[Artisan Tene]";
mes "Since I use a stable and unique way of adding options, there are no risks of ^ff0000'Reset Refine'^000000 or ^ff0000'Losing Cards'^000000 equipped.";
next;
mes "[Artisan Tene]";
mes "But since the costs of materials are high, I only ask for a ^5565AA small cost^000000 for my services with the exception of the material expenses.";
next;
mes "[Artisan Tene]";
mes "Ha ha. I must have talked too much. Which class of equipment do you want to add an option to?";
next;
switch(select("Weapon...:Armor...")) {
case 1:
mes "[Artisan Tene]";
mes "So you want to add an option to your weapon. That will be ^ff0000100,000 Zeny for a 1 time service.^000000";
next;
mes "[Artisan Tene]";
mes "^FF0000Ah! I can add an additional option if you equip a one-handed weapon on your right hand because it is easier for me to work on.^000000";
next;
mes "[Artisan Tene]";
mes "Which weapon do you want to add an option to?";
next;
switch(select("Later...:Raksasa Dagger [1]:Mikatsuki [1]:Huuma Swirling Petal [2]:Huuma Fluttering Snow:Huuma Thunderstorm")) {
case 1:
mes "[Artisan Tene]";
mes "Changed your mind? Very well. Hope to see you later.";
close;
case 2:
set .@equip_id,13076; //Raksasa_Dagger
break;
case 3:
set .@equip_id,13078; //Mikatsuki
break;
case 4:
set .@equip_id,13313; //Huuma_Swirling_Petal
break;
case 5:
set .@equip_id,13314; //Huuma_Fluttering_Snow
break;
case 6:
set .@equip_id,13315; //Huuma_Thunderstorm
break;
}
set .@part, EQI_HAND_R;
break;
case 2:
mes "[Artisan Tene]";
mes "So you want to add an option to your armor. That will be ^ff0000100,000 Zeny for a 1 time service.^000000";
next;
mes "[Artisan Tene]";
mes "Which armor do you want to add an option to?";
next;
switch(select("Later...:Wolf Armguard [1]:Crescent Armguard [1]:Ninja Scale Armor [1]:Tenebris Latitantes [1]:Special Ninja Suit [1]")) {
case 1:
mes "[Artisan Tene]";
mes "Changed your mind? Very well. Hope to see you later.";
close;
case 2:
set .@part, EQI_HAND_L;
set .@equip_id,2172; //Wolf_Armguard
break;
case 3:
set .@part, EQI_HAND_L;
set .@equip_id,2173; //Crescent_Armguard
break;
case 4:
set .@part, EQI_ARMOR;
set .@equip_id,15054; //Ninja_Scale_Armor
break;
case 5:
set .@part, EQI_ARMOR;
set .@equip_id,15055; //Tenebris_Latitantes
break;
case 6:
set .@part, EQI_ARMOR;
set .@equip_id,15056; //Special_Ninja_Suit_
break;
}
break;
}
set .@equip_refine, getequiprefinerycnt(.@part);
setarray .@equip_card[0], getequipcardid(.@part,0),getequipcardid(.@part,1),getequipcardid(.@part,2),getequipcardid(.@part,3);
copyarray .@card[0], .@equip_card[0], 4;
set .@select,1;
break;
case 3:
mes "[Artisan Tene]";
mes "You want to remove an option from your item. You didn't like the option?";
next;
mes "[Artisan Tene]";
mes "Sorry but I'm not experienced enough. You've paid me for nothing.";
next;
mes "[Artisan Tene]";
mes "^ff0000Removing an option will be 100,000 Zeny.^000000 Which option from the list of items do you want to remove?";
next;
switch(select("Later...:Raksasa Dagger [1]:Mikatsuki [1]:Huuma Swirling Petal [2]:Huuma Fluttering Snow:Huuma Thunderstorm:Wolf Armguard [1]:Crescent Armguard [1]:Ninja Scale Armor [1]:Tenebris Latitantes [1]:Special Ninja Suit [1]")) {
case 1:
mes "[Artisan Tene]";
mes "Removing options is expensive, isn't it? Sorry. I will work harder in developing my skills and bring down costs as well.";
close;
case 2:
set .@part, EQI_HAND_R;
set .@equip_id,13076; //Raksasa_Dagger
break;
case 3:
set .@part, EQI_HAND_R;
set .@equip_id,13078; //Mikatsuki
break;
case 4:
set .@part, EQI_HAND_R;
set .@equip_id,13313; //Huuma_Swirling_Petal
break;
case 5:
set .@part, EQI_HAND_R;
set .@equip_id,13314; //Huuma_Fluttering_Snow
break;
case 6:
set .@part, EQI_HAND_R;
set .@equip_id,13315; //Huuma_Thunderstorm
break;
case 7:
set .@part, EQI_HAND_L;
set .@equip_id,2172; //Wolf_Armguard
break;
case 8:
set .@part, EQI_HAND_L;
set .@equip_id,2173; //Crescent_Armguard
break;
case 9:
set .@part, EQI_ARMOR;
set .@equip_id,15054; //Ninja_Scale_Armor
break;
case 10:
set .@part, EQI_ARMOR;
set .@equip_id,15055; //Tenebris_Latitantes
break;
case 11:
set .@part, EQI_ARMOR;
set .@equip_id,15056; //Special_Ninja_Suit_
break;
}
set .@equip_refine, getequiprefinerycnt(.@part);
setarray .@equip_card[0], getequipcardid(.@part,0),getequipcardid(.@part,1),getequipcardid(.@part,2),getequipcardid(.@part,3);
copyarray .@card[0], .@equip_card[0], 4;
mes "[Artisan Tene]";
mes "You want to reset ^44B7BC" + getitemname(.@equip_id) + "^000000?";
next;
mes "[Artisan Tene]";
mes "The cost is the same but I do provide a service to remove only the option on the 3rd slot and leave the 4th slot as is. Are you interested?";
next;
switch(select("Reset only the 3rd Slot.:Reset all.")) {
case 1:
mes "[Artisan Tene]";
mes "Very well. I will reset only your 3rd slot.";
next;
set .@sot03_ck,1;
break;
case 2:
mes "[Artisan Tene]";
mes "Very well. I will reset all slots.";
next;
break;
}
set .@select,2;
break;
}
if (getequipisequiped(.@part) == 0) {
mes "[Artisan Tene]";
mes "You will have to equip all items before ^44B7BC" + getitemname(.@equip_id) + "^000000.";
close;
}
if (Zeny < 100000) { //custom translation
mes "[Artisan Tene]";
mes "I'm sorry, but you don't have enough Zeny!";
next;
mes "[Artisan Tene]";
mes "Our charge is very low, so please bear with me.";
close;
}
if (getequipid(.@part) != .@equip_id) {
mes "[Artisan Tene]";
mes "I don't think this is the equipment you requested.";
next;
mes "[Artisan Tene]";
mes "I cannot work on equipment other than those from my list.";
close;
}
// Initialization
if (.@select == 2) {
if (.@sot03_ck) {// reset only 3rd slot
if (getiteminfo(.@equip_card[2], ITEMINFO_SUBTYPE) != CARD_ENCHANT) { // Armor Enchant System
mes "[Artisan Tene]";
mes "The third slot is is not enchanted. Please check again."; //custom translation
close;
}
set .@equip_card[2],0;
} else {
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) != CARD_ENCHANT) { // Armor Enchant System
mes "[Artisan Tene]";
mes "This equipment is is not enchanted. Please check again."; //custom translation
close;
}
set .@equip_card[2],0;
set .@equip_card[3],0;
}
progressbar "ffff00",2;
set Zeny, Zeny - 100000;
// anti-hack
if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine))
close;
delequip .@part;
// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
mes "[Artisan Tene]";
mes "Initialization complete.";
close;
}
// Enchantment
if (.@equip_refine <= 4) set .@ko_type01,1;
else if (.@equip_refine <= 7) set .@ko_type01,2;
else if (.@equip_refine <= 9) set .@ko_type01,3;
else if (.@equip_refine <= 12) set .@ko_type01,4;
else set .@ko_type01,5;
//custom translations
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_ENCHANT) { // Armor Enchant System
if (getiteminfo(.@equip_card[2], ITEMINFO_SUBTYPE) == CARD_ENCHANT) {
mes "[Artisan Tene]";
mes "This equipment cannot be further enchanted.";
next;
mes "[Artisan Tene]";
mes "If you are not satisfied with the enchantments, I suggest that you initialize.";
close;
} else {
mes "[Artisan Tene]";
mes "The fourth slot has already been enchanted. Shall I enchant the third slot as well?";
next;
if(select("Do it later:Do it now") == 1) {
mes "[Artisan Tene]";
mes "Very well. Hope to see you later.";
close;
}
mes "[Artisan Tene]";
mes "Starting to enchant the third slot.";
next;
set .@ko_type02,2;
}
} else {
mes "[Artisan Tene]";
mes "This equipment is not currently enchanted. Shall I enchant the fourth slot?";
next;
if(select("Do it later:Do it now") == 1) {
mes "[Artisan Tene]";
mes "Very well. Hope to see you later.";
close;
}
mes "[Artisan Tene]";
mes "Starting to enchant the fourth slot.";
next;
set .@ko_type02,1;
}
if (.@ko_type02 == 1) { // slot 4
set .@r, rand(1,1000);
switch (.@ko_type01) {
case 1:
if (.@r <= 200) set .@e_socket04,4786; //Mdef2
else if (.@r <= 350) set .@e_socket04,4787; //Mdef4
else if (.@r <= 450) set .@e_socket04,4788; //Mdef6
else if (.@r <= 500) set .@e_socket04,4789; //Mdef8
else if (.@r <= 700) set .@e_socket04,4791; //Def3
else if (.@r <= 850) set .@e_socket04,4792; //Def6
else if (.@r <= 950) set .@e_socket04,4793; //Def9
else set .@e_socket04,4794; //Def12
set .@enchant, .@e_socket04;
break;
case 2:
if (.@r <= 90) set .@d_socket04,4786; //Mdef2
else if (.@r <= 170) set .@d_socket04,4787; //Mdef4
else if (.@r <= 240) set .@d_socket04,4788; //Mdef6
else if (.@r <= 300) set .@d_socket04,4789; //Mdef8
else if (.@r <= 390) set .@d_socket04,4791; //Def3
else if (.@r <= 470) set .@d_socket04,4792; //Def6
else if (.@r <= 540) set .@d_socket04,4793; //Def9
else if (.@r <= 600) set .@d_socket04,4794; //Def12
else if (.@r <= 660) set .@d_socket04,4700; //Strength1
else if (.@r <= 720) set .@d_socket04,4710; //Inteligence1
else if (.@r <= 780) set .@d_socket04,4740; //Vitality1
else if (.@r <= 840) set .@d_socket04,4720; //Dexterity1
else if (.@r <= 900) set .@d_socket04,4730; //Agility1
else set .@d_socket04,4750; //Luck1
set .@enchant, .@d_socket04;
break;
case 3:
if (.@r <= 90) set .@c_socket04,4700; //Strength1
else if (.@r <= 180) set .@c_socket04,4710; //Inteligence1
else if (.@r <= 270) set .@c_socket04,4740; //Vitality1
else if (.@r <= 360) set .@c_socket04,4720; //Dexterity1
else if (.@r <= 450) set .@c_socket04,4730; //Agility1
else if (.@r <= 600) set .@c_socket04,4750; //Luck1
else if (.@r <= 660) set .@c_socket04,4701; //Strength2
else if (.@r <= 720) set .@c_socket04,4711; //Inteligence2
else if (.@r <= 780) set .@c_socket04,4741; //Vitality2
else if (.@r <= 840) set .@c_socket04,4721; //Dexterity2
else if (.@r <= 900) set .@c_socket04,4731; //Agility2
else set .@c_socket04,4751; //Luck2
set .@enchant, .@c_socket04;
break;
case 4:
if (.@r <= 70) set .@b_socket04,4700; //Strength1
else if (.@r <= 140) set .@b_socket04,4710; //Inteligence1
else if (.@r <= 210) set .@b_socket04,4740; //Vitality1
else if (.@r <= 280) set .@b_socket04,4720; //Dexterity1
else if (.@r <= 350) set .@b_socket04,4730; //Agility1
else if (.@r <= 440) set .@b_socket04,4750; //Luck1
else if (.@r <= 495) set .@b_socket04,4701; //Strength2
else if (.@r <= 550) set .@b_socket04,4711; //Inteligence2
else if (.@r <= 605) set .@b_socket04,4741; //Vitality2
else if (.@r <= 660) set .@b_socket04,4721; //Dexterity2
else if (.@r <= 715) set .@b_socket04,4731; //Agility2
else if (.@r <= 800) set .@b_socket04,4751; //Luck2
else if (.@r <= 860) set .@b_socket04,4795; //HP100
else if (.@r <= 910) set .@b_socket04,4796; //HP200
else if (.@r <= 950) set .@b_socket04,4797; //HP300
else if (.@r <= 980) set .@b_socket04,4800; //SP50
else set .@b_socket04,4801; //SP100
set .@enchant, .@b_socket04;
break;
case 5:
if (.@r <= 59) set .@a_socket04,4701; //Strength2
else if (.@r <= 118) set .@a_socket04,4711; //Inteligence2
else if (.@r <= 177) set .@a_socket04,4741; //Vitality2
else if (.@r <= 236) set .@a_socket04,4721; //Dexterity2
else if (.@r <= 295) set .@a_socket04,4731; //Agility2
else if (.@r <= 354) set .@a_socket04,4751; //Luck2
else if (.@r <= 413) set .@a_socket04,4795; //HP100
else if (.@r <= 472) set .@a_socket04,4796; //HP200
else if (.@r <= 530) set .@a_socket04,4797; //HP300
else if (.@r <= 589) set .@a_socket04,4800; //SP50
else if (.@r <= 648) set .@a_socket04,4801; //SP100
else if (.@r <= 707) set .@a_socket04,4702; //Strength3
else if (.@r <= 765) set .@a_socket04,4712; //Inteligence3
else if (.@r <= 824) set .@a_socket04,4742; //Vitality3
else if (.@r <= 883) set .@a_socket04,4722; //Dexterity3
else if (.@r <= 942) set .@a_socket04,4732; //Agility3
else set .@a_socket04,4752; //Luck3
set .@enchant, .@a_socket04;
break;
}
} else if (.@ko_type02 == 2) { // slot 3
set .@r, rand(1,1000);
switch (.@ko_type01) {
case 1:
if (.@r <= 125) set .@e_socket03,4786; //Mdef2
else if (.@r <= 250) set .@e_socket03,4787; //Mdef4
else if (.@r <= 375) set .@e_socket03,4788; //Mdef6
else if (.@r <= 500) set .@e_socket03,4789; //Mdef8
else if (.@r <= 625) set .@e_socket03,4791; //Def3
else if (.@r <= 750) set .@e_socket03,4792; //Def6
else if (.@r <= 875) set .@e_socket03,4793; //Def9
else set .@e_socket03,4794; //Def12
set .@enchant, .@e_socket03;
break;
case 2:
if (.@r <= 100) set .@d_socket03,4786; //Mdef2
else if (.@r <= 190) set .@d_socket03,4787; //Mdef4
else if (.@r <= 270) set .@d_socket03,4788; //Mdef6
else if (.@r <= 340) set .@d_socket03,4789; //Mdef8
else if (.@r <= 440) set .@d_socket03,4791; //Def3
else if (.@r <= 530) set .@d_socket03,4792; //Def6
else if (.@r <= 610) set .@d_socket03,4793; //Def9
else if (.@r <= 680) set .@d_socket03,4794; //Def12
else if (.@r <= 720) set .@d_socket03,4700; //Strength1
else if (.@r <= 760) set .@d_socket03,4710; //Inteligence1
else if (.@r <= 800) set .@d_socket03,4740; //Vitality1
else if (.@r <= 850) set .@d_socket03,4720; //Dexterity1
else if (.@r <= 880) set .@d_socket03,4730; //Agility1
else set .@d_socket03,4750; //Luck1
set .@enchant, .@d_socket03;
break;
case 3:
if (.@r <= 100) set .@c_socket03,4700; //Strength1
else if (.@r <= 200) set .@c_socket03,4710; //Inteligence1
else if (.@r <= 305) set .@c_socket03,4740; //Vitality1
else if (.@r <= 410) set .@c_socket03,4720; //Dexterity1
else if (.@r <= 500) set .@c_socket03,4730; //Agility1
else if (.@r <= 700) set .@c_socket03,4750; //Luck1
else if (.@r <= 750) set .@c_socket03,4701; //Strength2
else if (.@r <= 780) set .@c_socket03,4711; //Inteligence2
else if (.@r <= 830) set .@c_socket03,4741; //Vitality2
else if (.@r <= 880) set .@c_socket03,4721; //Dexterity2
else if (.@r <= 900) set .@c_socket03,4731; //Agility2
else set .@c_socket03,4751; //Luck2
set .@enchant, .@c_socket03;
break;
case 4:
if (.@r <= 70) set .@b_socket03,4700; //Strength1
else if (.@r <= 160) set .@b_socket03,4710; //Inteligence1
else if (.@r <= 250) set .@b_socket03,4740; //Vitality1
else if (.@r <= 340) set .@b_socket03,4720; //Dexterity1
else if (.@r <= 400) set .@b_socket03,4730; //Agility1
else if (.@r <= 500) set .@b_socket03,4750; //Luck1
else if (.@r <= 540) set .@b_socket03,4701; //Strength2
else if (.@r <= 580) set .@b_socket03,4711; //Inteligence2
else if (.@r <= 625) set .@b_socket03,4741; //Vitality2
else if (.@r <= 670) set .@b_socket03,4721; //Dexterity2
else if (.@r <= 700) set .@b_socket03,4731; //Agility2
else if (.@r <= 800) set .@b_socket03,4751; //Luck2
else if (.@r <= 860) set .@b_socket03,4795; //HP100
else if (.@r <= 900) set .@b_socket03,4796; //HP200
else if (.@r <= 920) set .@b_socket03,4797; //HP300
else if (.@r <= 965) set .@b_socket03,4800; //SP50
else set .@b_socket03,4801; //SP100
set .@enchant, .@b_socket03;
break;
case 5:
if (.@r <= 59) set .@a_socket03,4701; //Strength2
else if (.@r <= 118) set .@a_socket03,4711; //Inteligence2
else if (.@r <= 177) set .@a_socket03,4741; //Vitality2
else if (.@r <= 236) set .@a_socket03,4721; //Dexterity2
else if (.@r <= 295) set .@a_socket03,4731; //Agility2
else if (.@r <= 354) set .@a_socket03,4751; //Luck2
else if (.@r <= 413) set .@a_socket03,4795; //HP100
else if (.@r <= 472) set .@a_socket03,4796; //HP200
else if (.@r <= 530) set .@a_socket03,4797; //HP300
else if (.@r <= 589) set .@a_socket03,4800; //SP50
else if (.@r <= 648) set .@a_socket03,4801; //SP100
else if (.@r <= 707) set .@a_socket03,4702; //Strength3
else if (.@r <= 765) set .@a_socket03,4712; //Inteligence3
else if (.@r <= 824) set .@a_socket03,4742; //Vitality3
else if (.@r <= 883) set .@a_socket03,4722; //Dexterity3
else if (.@r <= 942) set .@a_socket03,4732; //Agility3
else set .@a_socket03,4752; //Luck3
set .@enchant, .@a_socket03;
break;
}
} else {
mes "[Artisan Tene]";
mes "An unknown error has occurred. Please contact customer service. *^_^*";
close;
}
if (.@ko_type02 == 1) {
set .@equip_card[2], .@equip_card[3];
set .@equip_card[3], .@enchant;
} else
set .@equip_card[2], .@enchant;
progressbar "ffff00",2;
set Zeny, Zeny - 100000;
// anti-hack
if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine))
close;
delequip .@part;
// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
mes "[Artisan Tene]";
mes "^44B7BC" + getitemname(.@equip_id) + "^000000";
mes "The equipment has been enchanted."; //custom translation
close;
}