summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/re/merchants/shadow_refiner.txt167
1 files changed, 89 insertions, 78 deletions
diff --git a/npc/re/merchants/shadow_refiner.txt b/npc/re/merchants/shadow_refiner.txt
index 2f8984498..f03d348b2 100644
--- a/npc/re/merchants/shadow_refiner.txt
+++ b/npc/re/merchants/shadow_refiner.txt
@@ -9,8 +9,9 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2015 Hercules Dev Team
-//= Copyright (C) Dastgir
+//= Copyright (C) 2017 Hercules Dev Team
+//= Copyright (C) Dastgir
+//= Copyright (C) Smokexyz (v2.0)
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
@@ -29,148 +30,158 @@
//================= Description ===========================================
//= Shadow item refiner
//================= Current Version =======================================
-//= 1.0
+//= 2.0
//=========================================================================
itemmall,31,76,3 script Shadow Blacksmith#nomal 4_F_JOB_BLACKSMITH,{
+
+ // Configuration
+ .@npc_name$ = "[Shadow Blacksmith]";
+ .@zeny_cost = 20000; // Amount of zeny to be charged for refining.
+
disable_items;
- mes "[Shadow Blacksmith]";
- mes "Do you want to refine a Shadow item?.";
- mes "Please choose the part you want to refine.";
+ mesf("%s", .@npc_name$);
+ 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")+":";
+ 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.";
+ .@menu$ = .@menu$ + "Refine Info";
+ .@SelectedPart = select(.@menu$) + EQI_SHADOW_ARMOR - 1;
+ if (.@SelectedPart == EQI_SHADOW_ACC_L + 1){ // Refine Info
+ mesf("%s", .@npc_name$);
+ mes("Shadow items gain extra bonus effects depending on their refine level, similar to normal weapon and armor 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.";
+ mesf("%s", .@npc_name$);
+ mes("Refining effects for each Shadow item parts are -");
+ 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.";
+ mesf("%s", .@npc_name$);
+ mesf("You need %s and %s as the ingredient, along with a refine fee %d Zeny.", getitemname(Oridecon), getitemname(Elunium), .@zeny_cost);
next;
- mes "[Shadow Blacksmith]";
- mes "When +5 or higher refining Shadow item can be destroyed, please use Enriched or HD ingredient for the refinement.";
+ mesf("%s", .@npc_name$);
+ mes("When refining to +5 or higher, you risk breaking your Shadow item.");
+ mes("You may also use Enriched or HD ingredients 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.";
+ while(true) {
+ mesf("%s", .@npc_name$);
+ mesf("%d Zeny will be spent as a refine fee.", .@zeny_cost);
+ 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]);
+ setarray .@s_material1[0], Oridecon, Elunium;
+ setarray .@s_material2[0], Enriched_Oridecon, Enriched_Elunium;
+ setarray .@s_material3[0], HD_Oridecon, HD_Elunium;
+ .@refine_type = REFINE_CHANCE_TYPE_NORMAL;
+ if (countitem(.@s_material1[.@index]))
+ .@mate$[0] = getitemname(.@s_material1[.@index]);
else{
- .@mate$[0] = "^8C8C8C"+ getitemname(.@s_weapon1[.@index]) +"^000000";
+ .@mate$[0] = "^8C8C8C"+ getitemname(.@s_material1[.@index]) +"^000000";
.@miss[0] = 1;
}
- if (countitem(.@s_weapon2[.@index]))
- .@mate$[1] = getitemname(.@s_weapon2[.@index]);
+ if (countitem(.@s_material2[.@index]))
+ .@mate$[1] = getitemname(.@s_material2[.@index]);
else{
- .@mate$[1] = "^8C8C8C"+ getitemname(.@s_weapon2[.@index]) +"^000000";
+ .@mate$[1] = "^8C8C8C"+ getitemname(.@s_material2[.@index]) +"^000000";
.@miss[1] = 1;
}
- if (getequiprefinerycnt(.@SelectedPart) > 6 && countitem(.@s_weapon3[.@index]))
- .@mate$[2] = getitemname(.@s_weapon3[.@index]);
+ if (getequiprefinerycnt(.@SelectedPart) > 6 && countitem(.@s_material3[.@index]))
+ .@mate$[2] = getitemname(.@s_material3[.@index]);
else {
- .@mate$[2] = "^8C8C8C"+ getitemname(.@s_weapon3[.@index]) +"^000000";
+ .@mate$[2] = "^8C8C8C"+ getitemname(.@s_material3[.@index]) +"^000000";
.@miss[2] = 1;
}
//-----------------------------------------------------------------------------
- .@option = select("Cancel",.@mate$[0],.@mate$[1],.@mate$[2]);
+ .@option = select("Cancel", .@mate$[0], .@mate$[1], .@mate$[2]);
if (.@option == 1){
- mes "[Shadow Blacksmith]";
- mes "You've cancelled refining.";
+ mesf("%s", .@npc_name$);
+ mes("You've cancelled refining.");
close;
}
.@option -= 2;
- if (.@option==2){ //HD
+ .@hoihoi = false;
+ 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.";
+ mesf("%s", .@npc_name$);
+ mes("HD ingredients are only possible to be used when refining an item of quality +7 or higher.");
close;
}
- .@hoihoi = 1;
+ .@hoihoi = true;
+ } else if (.@option == 1) {
+ .@refine_type = REFINE_CHANCE_TYPE_ENRICHED;
}
if (.@miss[.@option]){
- mes "[Shadow Blacksmith]";
- mes "You do not have proper ingredient for this refining.";
+ mesf("%s", .@npc_name$);
+ mes("You do not have the proper ingredient to proceed with refining.");
close;
}
.@choose = getd(".@s_weapon"+(.@option+1)+"["+ .@index +"]");
if (Zeny < 20000) {
- mes "[Shadow Blacksmith]";
- mes "You do not have enough refine fee.";
+ mesf("%s", .@npc_name$);
+ mes("You do not have enough Zeny to pay the refine fee.");
close;
}
if (getequiprefinerycnt(.@SelectedPart) > 9) {
- mes "[Shadow Blacksmith]";
- mes "Shadow item refining is only possible until +10 level.";
+ mesf("%s", .@npc_name$);
+ mes("Shadow item refining is only possible up to +10 level.");
close;
}
if (!getequipisenableref(.@SelectedPart)) {
- mes "[Shadow Blacksmith]";
- mes "This item cannot be refined.";
+ mesf("%s", .@npc_name$);
+ 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?";
+ if (getequippercentrefinery(.@SelectedPart, .@refine_type) < 100) {
+ mesf("%s", .@npc_name$);
+ mes("Safety guaranteed refine limit for shadow item is until +4.");
+ if (.@hoihoi == false) {
+ mes("If you try more refining, the item might break upon failing. Do you still want to refine?");
}
else {
- mes "If you try more refining, item refine level might go down when failed. Still want to refine?";
+ mes("If you try more refining, the item refine level might go down when failed. Do you still want to refine?");
}
next;
if (select("Proceed","Cancel") == 2) {
- mes "[Shadow Blacksmith]";
- mes "You've cancelled refining.";
+ mesf("%s", .@npc_name$);
+ mes("You've cancelled refining.");
close;
}
}
//-----------------------------------------------------------------------------
- mes "[Shadow Blacksmith]";
- mes "Here we go--!!!";
+ mesf("%s", .@npc_name$);
+ mes("Here we go--!!!");
next;
if (Zeny < 20000) {
- mes "[Shadow Blacksmith]";
- mes "You do not have enough refine fee.";
+ mesf("%s", .@npc_name$);
+ mes("You do not have enough Zeny to pay the refine fee.");
close;
}
- if (!countitem(.@choose)) {
- mes "[Shadow Blacksmith]";
- mes "You do not have enough "+ getitemname(.@choose) +".";
+ if (countitem(.@choose) == 0) {
+ mesf("%s", .@npc_name$);
+ mes("You do not have enough "+ getitemname(.@choose) +".");
close;
}
- delitem .@choose,1;
+ 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.";
+ if (getequippercentrefinery(.@SelectedPart, .@refine_type) > rand(100)) {
+ successrefitem(.@SelectedPart);
+ mesf("%s", .@npc_name$);
+ mes("Refine was successful.");
next;
}
else {
- if (.@hoihoi)
- downrefitem .@SelectedPart;
+ if (.@hoihoi == true)
+ downrefitem(.@SelectedPart);
else
- failedrefitem .@SelectedPart;
- mes "[Shadow Blacksmith]";
- mes "Oh no.. Refine was failed.";
+ failedrefitem(.@SelectedPart);
+ mesf("%s", .@npc_name$);
+ mes("Oh no.. Refine has failed.");
close;
}
}