//================= Hercules Script =======================================
//= _ _ _
//= | | | | | |
//= | |_| | ___ _ __ ___ _ _| | ___ ___
//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
//= | | | | __/ | | (__| |_| | | __/\__ \
//= \_| |_/\___|_| \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2015 Hercules Dev Team
//= Copyright (C) Dastgir
//=
//= 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/>.
//=========================================================================
//= Shadow Refiner
//================= Description ===========================================
//= Shadow item refiner
//================= Current Version =======================================
//= 1.0
//=========================================================================
itemmall,31,76,3 script Shadow Blacksmith#nomal 4_F_JOB_BLACKSMITH,{
disable_items;
mes "[Shadow Blacksmith]";
mes "Do you want to refine a Shadow item?.";
mes "Please choose the part you want to refine.";
next;
setarray .@position$[0],"Armor","Weapon","Shield","Shoes","Earring","Pendant";
for (.@i=EQI_SHADOW_ARMOR; .@i<=EQI_SHADOW_ACC_L; .@i++){
.@menu$ = .@menu$+((getequipisequiped(.@i))?getequipname(.@i):"^8C8C8C"+.@position$[.@i-EQI_SHADOW_ARMOR]+" [Not Equipped]^000000")+":";
}
.@menu$ = .@menu$+"Refine Info";
.@SelectedPart = select(.@menu$)+EQI_SHADOW_ARMOR-1;
if (.@SelectedPart == EQI_SHADOW_ACC_L+1){ // Refine Info
mes "[Shadow Blacksmith]";
mes "Shadow item will gain extra bonus effect by the refine level, same as normal weapon/armour items.";
next;
mes "[Shadow Blacksmith]";
mes "Following are refining effect for each Shadow item parts.";
mes "Weapon: ATK, MATK + 1 increase for each +1 refine success.";
mes "Etc: HP + 10 increase for each +1 refine success.";
next;
mes "[Shadow Blacksmith]";
mes "You need Oridecon and Elunium for Shadow item refine ingredient, along with refine fee 20000 zeny.";
next;
mes "[Shadow Blacksmith]";
mes "When +5 or higher refining Shadow item can be destroyed, please use Enriched or HD ingredient for the refinement.";
close;
}
while(1){
mes "[Shadow Blacksmith]";
mes "20000 zeny will be spent as a refine fee.";
mes "Choose the ingredient and start refining.";
next;
.@index = 0;
if (.@SelectedPart != EQI_SHADOW_WEAPON)
.@index = 1;
setarray .@s_weapon1[0],Oridecon,Elunium;
setarray .@s_weapon2[0],Enriched_Oridecon,Enriched_Elunium;
setarray .@s_weapon3[0],HD_Oridecon,HD_Elunium;
if (countitem(.@s_weapon1[.@index]))
.@mate$[0] = getitemname(.@s_weapon1[.@index]);
else{
.@mate$[0] = "^8C8C8C"+ getitemname(.@s_weapon1[.@index]) +"^000000";
.@miss[0] = 1;
}
if (countitem(.@s_weapon2[.@index]))
.@mate$[1] = getitemname(.@s_weapon2[.@index]);
else{
.@mate$[1] = "^8C8C8C"+ getitemname(.@s_weapon2[.@index]) +"^000000";
.@miss[1] = 1;
}
if (getequiprefinerycnt(.@SelectedPart) > 6 && countitem(.@s_weapon3[.@index]))
.@mate$[2] = getitemname(.@s_weapon3[.@index]);
else {
.@mate$[2] = "^8C8C8C"+ getitemname(.@s_weapon3[.@index]) +"^000000";
.@miss[2] = 1;
}
//-----------------------------------------------------------------------------
.@option = select("Cancel",.@mate$[0],.@mate$[1],.@mate$[2]);
if (.@option == 1){
mes "[Shadow Blacksmith]";
mes "You've cancelled refining.";
close;
}
.@option -= 2;
if (.@option==2){ //HD
if (getequiprefinerycnt(.@SelectedPart) < 7){
mes "[Shadow Blacksmith]";
mes "HD ingredient is only possible to use for +7 or higher refine level items.";
close;
}
.@hoihoi = 1;
}
if (.@miss[.@option]){
mes "[Shadow Blacksmith]";
mes "You do not have proper ingredient for this refining.";
close;
}
.@choose = getd(".@s_weapon"+(.@option+1)+"["+ .@index +"]");
if (Zeny < 20000) {
mes "[Shadow Blacksmith]";
mes "You do not have enough refine fee.";
close;
}
if (getequiprefinerycnt(.@SelectedPart) > 9) {
mes "[Shadow Blacksmith]";
mes "Shadow item refining is only possible until +10 level.";
close;
}
if (!getequipisenableref(.@SelectedPart)) {
mes "[Shadow Blacksmith]";
mes "This item cannot be refined.";
close;
}
if (getequippercentrefinery(.@SelectedPart) < 100) {
mes "[Shadow Blacksmith]";
mes "Safety guaranteed refine limit for shadow item is until +4.";
if (!.@hoihoi) {
mes "If you try more refining, item might get broken when failed. Still want to refine?";
}
else {
mes "If you try more refining, item refine level might go down when failed. Still want to refine?";
}
next;
if (select("Proceed","Cancel") == 2) {
mes "[Shadow Blacksmith]";
mes "You've cancelled refining.";
close;
}
}
//-----------------------------------------------------------------------------
mes "[Shadow Blacksmith]";
mes "Here we go--!!!";
next;
if (Zeny < 20000) {
mes "[Shadow Blacksmith]";
mes "You do not have enough refine fee.";
close;
}
if (!countitem(.@choose)) {
mes "[Shadow Blacksmith]";
mes "You do not have enough "+ getitemname(.@choose) +".";
close;
}
delitem .@choose,1;
Zeny -= 20000;
if (getequippercentrefinery(.@SelectedPart) > rand(100) || ( .@option == 1 && getequippercentrefinery(.@SelectedPart) > rand(100))) {
successrefitem .@SelectedPart;
mes "[Shadow Blacksmith]";
mes "Refine was successful.";
next;
}
else {
if (.@hoihoi)
downrefitem .@SelectedPart;
else
failedrefitem .@SelectedPart;
mes "[Shadow Blacksmith]";
mes "Oh no.. Refine was failed.";
close;
}
}
}