summaryrefslogtreecommitdiff
path: root/npc/re/merchants
diff options
context:
space:
mode:
Diffstat (limited to 'npc/re/merchants')
-rw-r--r--npc/re/merchants/3rd_trader.txt266
-rw-r--r--npc/re/merchants/advanced_refiner.txt196
-rw-r--r--npc/re/merchants/alchemist.txt117
-rw-r--r--npc/re/merchants/ammo_boxes.txt19
-rw-r--r--npc/re/merchants/ammo_dealer.txt19
-rw-r--r--npc/re/merchants/blessed_refiner.txt4
-rw-r--r--npc/re/merchants/card_separation.txt231
-rw-r--r--npc/re/merchants/catalog.txt6
-rw-r--r--npc/re/merchants/coin_exchange.txt2
-rw-r--r--npc/re/merchants/diamond.txt16
-rw-r--r--npc/re/merchants/enchan_mal.txt12
-rw-r--r--npc/re/merchants/enchan_mora.txt25
-rw-r--r--npc/re/merchants/enchan_upg.txt264
-rw-r--r--npc/re/merchants/flute.txt19
-rw-r--r--npc/re/merchants/hd_refiner.txt4
-rw-r--r--npc/re/merchants/inn.txt4
-rw-r--r--npc/re/merchants/quivers.txt15
-rw-r--r--npc/re/merchants/refine.txt202
-rw-r--r--npc/re/merchants/renters.txt58
-rw-r--r--npc/re/merchants/shops.txt39
-rw-r--r--npc/re/merchants/ticket_refiner.txt4
21 files changed, 1141 insertions, 381 deletions
diff --git a/npc/re/merchants/3rd_trader.txt b/npc/re/merchants/3rd_trader.txt
index 86dd01656..134a3422d 100644
--- a/npc/re/merchants/3rd_trader.txt
+++ b/npc/re/merchants/3rd_trader.txt
@@ -1,20 +1,26 @@
//===== Hercules Script ======================================
//= 3rd Item Seller
-//===== By: ==================================================
+//===== By: ==================================================
//= Masao, Mercurial
-//===== Current Version: =====================================
-//= 1.2
-//===== Description: =========================================
-//= [Aegis Conversion]
-//= Sells some 3rd Job related items.
-//===== Additional Comments: =================================
+//===== Current Version: =====================================
+//= 1.5
+//===== Description: =========================================
+//= [Official Conversion]
+//= Sells some 3rd Job related items:
+//= - Poison Herbs, Rune Stones, Rare Herbs, Points
+//===== Additional Comments: =================================
//= 1.0 First Version.
//= 1.1 Optimized Poison Herb Salesman NPC
//= 1.2 Optimized and standardized. [Euphy]
-//============================================================
+//= 1.3 Added Malangdo/Mora Points NPC. [Euphy]
+//= 1.4 Updated to match the official scripts. [Euphy]
+//= 1.5 Added Izlude duplicates. [Euphy]
+//============================================================
-job3_guil01,79,96,3 script Poison Herb Salesman::PHS 877,{
- if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+// Poison Herb Merchants (Guillotine Cross)
+//============================================================
+- script ::phs -1,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
@@ -22,68 +28,65 @@ job3_guil01,79,96,3 script Poison Herb Salesman::PHS 877,{
mes "- after you lose some weight. -";
close;
}
- mes "[Poison Herb Salesman]";
+ mes "[Poison Herb Merchant]";
mes "I am the professional";
- mes "poison herb seller.";
- mes "Which one do you want?";
- mes "They cost 4,000 zeny each!";
- set .@i, select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit")-1;
+ mes "Poison Herb merchant.";
+ mes "Each Herb costs 4,000 zeny.";
+ mes "What would you like?";
next;
+ set .@i, select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit:Cancel")-1;
+ mes "[Poison Herb Merchant]";
if (.@i < 6) {
- mes "[Poison Herb Salesman]";
- mes "How many do you want? You can";
- mes "only buy a maximum of 2000 ea";
- mes "and if you want to cancel, enter '0'.";
- next;
- input .@amount;
- mes "[Poison Herb Salesman]";
- if (.@amount == 0) {
- mes "You've cancelled the trade.";
- close;
- }
- if (.@amount > 2000) {
- mes "Please check the maximum";
- mes "amount and then try again.";
- close;
- }
- if (Zeny < .@amount*4000) {
- mes "Please check the money you have.";
- mes "It doesn't seem like you have enough money.";
- close;
- }
- set Zeny, Zeny-(.@amount*4000);
- getitem 7932+.@i,.@amount;
- mes "Thank you. See you~!";
- close;
+ set .@item,7932+.@i;
+ set .@price,4000;
+ set .@max,2000;
+ set .@max$,"2,000";
+ } else if (.@i == 6) {
+ set .@item,7931;
+ set .@price,5000;
+ set .@max,500;
+ set .@max$,"500";
+ mes "Each Poison Kit costs 5,000 zeny.";
} else {
- mes "[Poison Herb Salesman]";
- mes "You can only buy";
- mes "1 Poison Kit and it costs 5,000 zeny.";
- mes "Will you buy it?";
- next;
- if(select("Yes, I will.:No, I won't.") == 2) {
- mes "[Poison Herb Salesman]";
- mes "Well, I see. See you~!";
- close;
- }
- mes "[Poison Herb Salesman]";
- if (Zeny < 5000) {
- mes "Please check the money you have.";
- mes "It doesn't seem like you have enough money.";
- close;
- }
- set Zeny, Zeny-5000;
- getitem 7931,1;
- mes "[Poison Herb Salesman]";
- mes "Thank you. See you~!";
+ mes "Well, I see. Come back again~!";
+ close;
+ }
+ mes "How many do you want?";
+ mes "You can only buy a maximum of '"+.@max+"' ea.";
+ mes "Enter '0' if you want to cancel.";
+ next;
+ input .@amount;
+ if (.@amount == 0) {
+ mes "[Poison Herb Merchant]";
+ mes "You've cancelled the trade.";
+ close;
+ }
+ if (.@amount > .@max) {
+ mes "[Poison Herb Merchant]";
+ mes "The number must be less than "+.@max$+"!";
+ close;
+ }
+ set .@total, .@amount * .@price;
+ if (Zeny < .@total) {
+ mes "[Poison Herb Merchant]";
+ mes "You don't have enough money.";
+ mes "Check how much money you have first.";
close;
}
+ set Zeny, Zeny - .@total;
+ getitem .@item, .@amount;
+ mes "[Poison Herb Merchant]";
+ mes "Thank you. Come back again~!";
+ close;
}
-morocc,190,96,4 duplicate(PHS) Poison Herb Salesman#moc 877
-lhz_in02,16,205,4 duplicate(PHS) Poison Herb Salesman#lhz 877
+job3_guil01,79,96,3 duplicate(phs) Poison Herb Merchant 877
+morocc,191,94,4 duplicate(phs) Poison Herb Merchant#moc 877 //Official: (190,96) -> in a wall
+lhz_in02,16,205,4 duplicate(phs) Poison Herb Merchant#lhz 877
-job3_rune01,90,62,3 script Rune Salesman::runesale 853,{
- if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+// Rune Stone Merchants (Rune Knight)
+//============================================================
+- script ::runesale -1,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
@@ -91,57 +94,67 @@ job3_rune01,90,62,3 script Rune Salesman::runesale 853,{
mes "- after you lose some weight. -";
close;
}
- mes "[Rune Salesman]";
+ mes "[Rune Merchant]";
mes "Hey, do you need Runes?!";
- mes "I sell all kinds of Rune Stones!";
- mes "What kind of Rune do you want?";
+ mes "I sell all sorts of Rune Stones!";
+ mes "What would you like?";
next;
set .@i, select("Buy high-quality Rune Stones.:Buy ordinary Rune Stones.");
- mes "[Rune Salesman]";
+ mes "[Rune Merchant]";
if (.@i == 1) {
mes "High-quality Runes!";
mes "They cost 2,500 zeny each!";
- setarray .@rune[0],12734,2500;
+ set .@item,12734; //Runstone_Quality
+ set .@price,2500;
} else {
mes "Ordinary Rune Stones?";
mes "They cost 1,000 zeny each!";
+ set .@item,12737; //Runstone_Ordinary
+ set .@price,1000;
setarray .@rune[0],12737,1000;
}
- mes "Tell me how many you want to buy";
+ mes "Tell me how many you want,";
mes "and remember, you can only";
- mes "buy a maximum amount of 2000 ea!";
+ mes "buy a maximum of '2000' ea.";
next;
input .@amount;
- mes "[Rune Salesman]";
if (.@amount == 0) {
- mes "You're not buying? Go away!";
+ mes "[Rune Merchant]";
+ mes "You're not buying? Please leave!";
close;
}
if (.@amount > 2000) {
- mes "Please check the maximum";
- mes "amount and then come back to me again!";
+ mes "[Rune Merchant]";
+ mes "The number must be less than 2,000!";
close;
}
- if (Zeny < .@amount*.@rune[1]) {
- mes "Money! Money!";
- mes "You are short of money!";
- mes "Check the amount of money you have!!";
+ set .@total, .@amount * .@price;
+ if (Zeny < .@total) {
+ mes "[Rune Merchant]";
+ mes "Zeny! Zeny!";
+ mes "You don't have enough money.";
+ mes "Check how much money you have first.";
close;
}
- if (!checkweight(.@rune[0],.@amount)) {
- mes "You're not able to carry it, so why are you trying to buy it?!";
+ if (!checkweight(.@item,.@amount)) {
+ mes "[Rune Merchant]";
+ mes "It doesn't seem like you are able to carry it all, why are you trying it?!";
close;
}
- set Zeny, Zeny-(.@amount*.@rune[1]);
- getitem .@rune[0],.@amount;
- mes "You can buy more again.";
- mes "So, see you later.";
+ set Zeny, Zeny - .@total;
+ getitem .@item, .@amount;
+ mes "[Rune Merchant]";
+ mes "Thank you.";
+ mes "Please come back again~!";
close;
}
-prontera,168,228,3 duplicate(runesale) Rune Salesman#1 853
+job3_rune01,90,62,3 duplicate(runesale) Rune Merchant#job3 853
+prontera,168,228,3 duplicate(runesale) Rune Merchant#prt 853
+// Rare Herb Merchants (Guillotine Cross)
+//============================================================
job3_guil01,91,93,3 script Rare Herb Collector 49,{
- if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
@@ -151,27 +164,48 @@ job3_guil01,91,93,3 script Rare Herb Collector 49,{
}
if (Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T || Class == Job_Baby_Cross) {
mes "[Rare Poison Herb Collector]";
- mes "I wander around the world and collect rare poison herbs. Recently, I am dealing in the herb called Izidor. If you are interested, you can buy them.";
+ mes "I wander around the world and collect rare poison herbs. Recently, I started dealing in the herb called Izidor. If you are interested, you can buy them.";
next;
- set .@i, select("How can I buy them?:Exchange it with Animal Blood:Exchange it with a Bitter Herb:Exchange it with a Deadly Noxious Herb:Exchange it with a Frozen Rose:Exchange it with Ment:Exchange it with Hinalle")-1;
- if (.@i == 0) {
+ set .@i, select("How can I buy them?:Exchange it for Animal Blood:Exchange it for a Bitter Herb:Exchange it for a Deadly Noxious Herb:Exchange it for a Frozen Rose:Exchange it for Ment:Exchange it for Hinalle")-2;
+ if (.@i == -1) {
mes "[Rare Poison Herb Collector]";
- mes "You can buy any of those items for 10,000 zeny: Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or Hinalle. ";
+ mes "You can buy them for 10,000 zeny and one of these rare items, Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or an Hinalle.";
next;
mes "[Rare Poison Herb Collector]";
- mes "Why I ask for money? That is just to pay a little respect to a collector like me. Ha ha ha...";
+ mes "Why do I ask money? That's just to pay a little respect to a collector like me. Ha ha ha...";
close;
} else {
- setarray .@exchange[1],702,621,631,749,605,703;
+ setarray .@exchange[0],702,621,631,749,605,703;
+ set .@item, .@exchange[.@i];
+ set .@price, 10000;
+
mes "[Rare Poison Herb Collector]";
- if (!countitem(.@exchange[.@i]) || Zeny < 10000) {
- mes "Hey, try again after you've prepared all the requirements for the exchange.";
+ mes "How many do you want?";
+ mes "You can only buy a maximum of '2000' ea.";
+ mes "Enter '0' if you want to cancel.";
+ next;
+ input .@amount;
+ if (.@amount == 0) {
+ mes "[Rare Poison Herb Collector]";
+ mes "You've cancelled the trade.";
+ close;
+ }
+ if (.@amount > 2000) {
+ mes "[Rare Poison Herb Collector]";
+ mes "The number must be less than 2,000!";
+ close;
+ }
+ set .@total, .@amount * .@price;
+ if (countitem(.@item) < .@amount || Zeny < .@total) {
+ mes "[Rare Poison Herb Collector]";
+ mes "Hey, come back when you have all the requirements for the exchange.";
close;
}
- mes "Thank you. I've received your payment.";
- delitem .@exchange[.@i],1;
- set Zeny, Zeny-10000;
- getitem 709,1;
+ mes "[Rare Poison Herb Collector]";
+ mes "Good. I've received the money and the special item.";
+ delitem .@item, .@amount;
+ set Zeny, Zeny - .@total;
+ getitem 709, .@amount; //Izidor
close;
}
}
@@ -180,8 +214,10 @@ job3_guil01,91,93,3 script Rare Herb Collector 49,{
close;
}
-gef_tower,105,172,5 script Point Salesman#Sorcerer::pss 700,{
- if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+// Point Merchants (Sorcerer)
+//============================================================
+- script ::pss -1,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
@@ -189,11 +225,11 @@ gef_tower,105,172,5 script Point Salesman#Sorcerer::pss 700,{
mes "- after you lose some weight. -";
close;
}
- mes "[Point Salesman]";
+ mes "[Point Merchant]";
mes "Hello. I'm selling a catalyst called ^FF0000Points^000000 for Sorcerers. What would you like?";
next;
set .@i, select("Scarlet Points - 200z:Lime Green Points - 200z:Indigo Points - 200z:Yellow Wish Points - 200z:Cancel")-1;
- mes "[Point Salesman]";
+ mes "[Point Merchant]";
if (.@i == 4) {
mes "You can't find the stuff you need?";
close;
@@ -205,7 +241,7 @@ gef_tower,105,172,5 script Point Salesman#Sorcerer::pss 700,{
mes "If you want to cancel, enter 0.";
next;
input .@amount;
- mes "[Point Salesman]";
+ mes "[Point Merchant]";
if (.@amount == 0) {
mes "You've cancelled the trade.";
close;
@@ -223,6 +259,22 @@ gef_tower,105,172,5 script Point Salesman#Sorcerer::pss 700,{
mes "Thank you very much. See you~!";
close;
}
-comodo,241,103,6 duplicate(pss) Point Salesman#1 700
-alberta,105,52,7 duplicate(pss) Point Salesman#2 700
-veins,202,128,6 duplicate(pss) Point Salesman#3 700
+gef_tower,105,172,5 duplicate(pss) Point Merchant#Sorcerer 700
+prt_in,131,66,0 duplicate(pss) Point Merchant#Prontera 700
+alberta,105,52,7 duplicate(pss) Point Merchant#Alberta 700
+aldebaran,133,114,5 duplicate(pss) Point Merchant#Aldebaran 700
+comodo,193,159,5 duplicate(pss) Point Merchant#Comodo 700
+geffen,129,49,5 duplicate(pss) Point Merchant#Geffen 700
+izlude,138,163,5 duplicate(pss) Point Merchant#Izlude 700 // Old coordinates: izlude (135,121)
+izlude_a,138,163,5 duplicate(pss) Point Merchant#Izlude_a 700
+izlude_b,138,163,5 duplicate(pss) Point Merchant#Izlude_b 700
+izlude_c,138,163,5 duplicate(pss) Point Merchant#Izlude_c 700
+izlude_d,138,163,5 duplicate(pss) Point Merchant#Izlude_d 700
+malangdo,214,163,5 duplicate(pss) Point Merchant#Malangdo 700
+mora,115,118,3 duplicate(pss) Point Merchant#Mora 700
+ra_in01,256,273,3 duplicate(pss) Point Merchant#Rachel 700
+veins,202,128,5 duplicate(pss) Point Merchant#Veins 700
+dicastes01,207,200,5 duplicate(pss) Point Merchant#Dicastes 700
+manuk,261,206,3 duplicate(pss) Point Merchant#Manuk 700
+splendide,207,160,5 duplicate(pss) Point Merchant#Splendide 700
+mid_camp,224,237,3 duplicate(pss) Point Merchant#Midgard 700
diff --git a/npc/re/merchants/advanced_refiner.txt b/npc/re/merchants/advanced_refiner.txt
new file mode 100644
index 000000000..c6aa75124
--- /dev/null
+++ b/npc/re/merchants/advanced_refiner.txt
@@ -0,0 +1,196 @@
+//===== Hercules Script ======================================
+//= Advanced Refiner
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Description: =========================================
+//= [Official Conversion]
+//= Refiner that uses Enriched ores to increase upgrade success.
+//= After a conversation with Doddler, it's been established that
+//= the advanced refiner works similar the the "Bubble Gum" item.
+//= The success percentage is not "increased" however, if it fails
+//= You get a second try. This tries twice at the same time,
+//= effectively giving you a re-roll on your attempt.
+//===== Additional Comments: =================================
+//= 1.0 Added Malangdo Refiner "Holink". [Euphy]
+//============================================================
+
+malangdo,221,174,6 script Holink#mal_cash 559,{
+ disable_items;
+ mes "[Holink]";
+ mes "I am the meow~ Blacksmith Holink~";
+ mes "Master of refining, Holink~";
+ mes "I am the special cat Holink who learned from Morroc~";
+ mes "My daughter is so proud of me, Holink~";
+ mes "What should Holink~ refine today?";
+ next;
+ setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
+ set .@menu$,"";
+ for(set .@i,1; .@i<=10; set .@i,.@i+1)
+ set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Empty]")+":";
+ set .@part, select(.@menu$);
+ if (!getequipisequiped(.@part)) {
+ mes "[Holink]";
+ switch(.@part) {
+ case 1:
+ mes "My teacher Aragam said meow~";
+ mes "There's no cure for stupidity...";
+ break;
+ case 2:
+ mes "There's nothing to see here, meow!!";
+ break;
+ case 3:
+ mes "Meow? What do you want me to do with this left hand...?";
+ break;
+ case 4:
+ mes "Meow? What do you want me to do with this right hand...?";
+ break;
+ case 5:
+ mes "Meow? You don't have anything on.";
+ break;
+ case 6:
+ mes "Kyang~! Do not mess with my sensitive olfactory, meow~.";
+ break;
+ case 7:
+ case 8:
+ mes "Meow? Where is the accessory?";
+ break;
+ case 9:
+ case 10:
+ mes "Meow? You talking about the other head parts, meow?~";
+ break;
+ }
+ close;
+ }
+ if (!getequipisenableref(.@part)) {
+ mes "[Holink]";
+ mes "Even Aragam can't refine such a thing, meow.";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) >= 10) {
+ mes "[Holink]";
+ mes "Meow~ Perfect refining. Did Aragam do this, meow?~";
+ close;
+ }
+ mes "[Holink]";
+ switch(getequipweaponlv(.@part)) {
+ default:
+ case 0: // Armor
+ set .@price,15000;
+ set .@material,7619; //Enriched_Elunium
+ set .@type$,"armor";
+ mes "You have chosen an armor, meow~";
+ break;
+ case 1: // Level 1 Weapon
+ set .@price,500;
+ set .@material,7620; //Enriched_Oridecon
+ set .@type$,"weapon";
+ mes "A level 1 weapon...?";
+ break;
+ case 2: // Level 2 Weapon
+ set .@price,2000;
+ set .@material,7620; //Enriched_Oridecon
+ set .@type$,"weapon";
+ mes "Meow, a level 2 weapon...?";
+ break;
+ case 3: // Level 3 Weapon
+ set .@price,20000;
+ set .@material,7620; //Enriched_Oridecon
+ set .@type$,"weapon";
+ mes "Meow Meow~~ A level 3 weapon~~";
+ break;
+ case 4: // Level 4 Weapon
+ set .@price,50000;
+ set .@material,7620; //Enriched_Oridecon
+ set .@type$,"weapon";
+ mes "Me-Meow!... A level 4 weapon...!";
+ mes "I've only seen it twice while";
+ mes "learning from Aragam... Me-Meow!!";
+ break;
+ }
+ mes "You need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny for this refine, meow~";
+ mes "Want to continue, meow?~";
+ next;
+ if(select("Yes!!:No!!") == 2) {
+ mes "[Holink]";
+ mes "Kyack!!";
+ mes "You don't belive in refine master Holink, meow?~";
+ close;
+ }
+ if (getequippercentrefinery(.@part) < 100) {
+ mes "[Holink]";
+ mes "Meow!!";
+ if (.@type$ == "armor")
+ mes "This armor was already refined so many times, meow.";
+ else {
+ mes "Danger. Danger~";
+ mes "This weapon was refined a lot, meow~";
+ next;
+ mes "[Holink]";
+ }
+ mes "You might break it if you continue";
+ mes "to try refining this item further, meow.";
+ next;
+ mes "[Holink]";
+ mes "Once the "+.@type$+" is broken, you can";
+ mes "never use it again, meow. Not to mention... all current";
+ mes "^ff0000cards and enchantments will vanish for sure^000000.";
+ mes "You still want to try, meow~?";
+ next;
+ if(select("Yes, I do!!:Forget about it!!") == 2) {
+ mes "[Holink]";
+ mes "Meow! Wise choice, meow.";
+ mes "But!!";
+ mes "I am not happy to see you doubting the refine master Holink, meow~";
+ close;
+ }
+ }
+ if (countitem(.@material) == 0 || Zeny < .@price) {
+ mes "[Holink]";
+ mes "You don't have the ingredients.";
+ mes "You need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny, meow~";
+ mes "Go get it, meow~";
+ close;
+ }
+ delitem .@material,1;
+ set Zeny, Zeny-.@price;
+ if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
+ successrefitem .@part;
+ mes "[Holink]";
+ mes "Me~ Me~ Meow! Fun fun refining~";
+ next;
+ emotion e_kis;
+ mes "[Holink]";
+ mes "Perfect!! Perfect, meow!!";
+ mes "I am the disciple of the refining wizard Aragam~";
+ mes "Holink!!";
+ mes "Another day of successful refining, meow!!";
+ close;
+ }
+ failedrefitem .@part;
+ mes "[Holink]";
+ mes "Meo~ Meow~ Kyaaak!!";
+ next;
+ switch(rand(1,5)) {
+ case 1: emotion e_sob; break;
+ case 2: emotion e_swt2; break;
+ case 3: emotion e_wah; break;
+ case 4: emotion e_hmm; break;
+ case 5: emotion e_lv2; break;
+ }
+ mes "[Holink]";
+ mes "Meow!! Aaaaakk~~!!!!";
+ mes "Kyaaak!! I have failed, meow!!";
+ next;
+ mes "[Holink]";
+ mes "......";
+ mes "......";
+ mes "All~ Everything~ Broken, meow...";
+ next;
+ mes "[Holink]";
+ mes "Meow.... Master Aragam once said,";
+ mes "learn from your failures...";
+ mes "Human, this one failure will be the beginning of your success in the future.";
+ close;
+}
diff --git a/npc/re/merchants/alchemist.txt b/npc/re/merchants/alchemist.txt
new file mode 100644
index 000000000..8687cb946
--- /dev/null
+++ b/npc/re/merchants/alchemist.txt
@@ -0,0 +1,117 @@
+//===== Hercules Script ======================================
+//= Alchemist Shop
+//===== By: ==================================================
+//= rAthena Dev Team
+//===== Current Version: =====================================
+//= 1.0
+//===== Description: =========================================
+//= [Official Conversion]
+//= Merchants for Alchemist Materials and Manuals.
+//===== Additional Comments: =================================
+//= 1.0 Split Geneticist shop from main file. [Euphy]
+//= Updated dialogue to match the official script.
+//============================================================
+
+alde_alche,31,186,3 script Craft Book Merchant#alde 883,{
+ mes "[Craft Book Merchant]";
+ mes "Welcome.";
+ mes "I'm here to sell";
+ mes "^0000FFspecial craft books^000000 for Geneticists.";
+ next;
+ mes "[Craft Book Merchant]";
+ mes "Geneticists have some skills";
+ mes "that require craft books to activate.";
+ next;
+ mes "[Craft Book Merchant]";
+ mes "The more craft books you have,";
+ mes "the more skills you can use.";
+ next;
+ mes "[Craft Book Merchant]";
+ mes "Please understand that";
+ mes "I specialize in the sale of these special books and";
+ mes "I ^FF0000don't sell other items^000000.";
+ next;
+ mes "[Craft Book Merchant]";
+ mes "Would you like to take a look at my craft books?";
+ next;
+ if(select("Sure.:No.") == 2) {
+ mes "[Craft Book Merchant]";
+ mes "Thank you for visiting my shop.";
+ mes "Please be safe on your travels.";
+ close;
+ }
+ if (checkweight(1201,1) == 0) {
+ mes "[Craft Book Merchant]";
+ mes "I'm sorry, but your inventory is almost full.";
+ mes "Please empty your inventory first.";
+ close;
+ }
+ if (MaxWeight - Weight < 2500) {
+ mes "[Craft Book Merchant]";
+ mes "Please empty your inventory first.";
+ close;
+ }
+ mes "[Craft Book Merchant]";
+ mes "Okay then, here's the list of available craft books.";
+ next;
+ switch(select("[Apple Bomb Craft Book] 100,000 zeny:[Pineapple Bomb Craft Book] 100,000 zeny:[Coconut Bomb Craft Book] 100,000 zeny:[Melon Bomb Craft Book] 100,000 zeny:[Banana Bomb Craft Book] 100,000 zeny:[Plant Gene Cultivation Method] 100,000 zeny:[Superior Potion Craft Manual] 100,000 zeny:[Mix Cooking Book] 100,000 zeny:[Health Improvement Research Book] 100,000 zeny:[Vigor Drink Recipe] 100,000 zeny:Close")){
+ case 1: set .@item,6279; break;
+ case 2: set .@item,6280; break;
+ case 3: set .@item,6281; break;
+ case 4: set .@item,6282; break;
+ case 5: set .@item,6283; break;
+ case 6: set .@item,6284; break;
+ case 7: set .@item,6285; break;
+ case 8: set .@item,11022; break;
+ case 9: set .@item,11023; break;
+ case 10: set .@item,11024; break;
+ case 11:
+ mes "[Craft Book Merchant]";
+ mes "Thank you for your patronage.";
+ mes "Please come again.";
+ close;
+ }
+ mes "[Craft Book Merchant]";
+ mes "^0000FF["+getitemname(.@item)+"] costs";
+ mes "100,000 zeny.";
+ mes "How many would you like to purchase?";
+ next;
+ input .@amount;
+ if (.@amount == 0) {
+ mes "[Craft Book Merchant]";
+ mes "Would you like to see some different books?";
+ close;
+ }
+ if (.@amount < 1 || .@amount > 99 ){
+ mes "[Craft Book Merchant]";
+ mes "You cannot purchase more than 100 at a time.";
+ close;
+ }
+ mes "[Craft Book Merchant]";
+ mes "You've entered "+.@amount+"x ^0000FF["+getitemname(.@item)+"]^000000 to be purchased.";
+ mes "Would you like to continue?";
+ next;
+ if (select("Yes:No") == 1) {
+ set .@total, .@amount * 100000;
+ if (Zeny < .@total) {
+ mes "[Craft Book Merchant]";
+ mes "I'm sorry, but you don't have enough money.";
+ close;
+ }
+ if (checkweight(.@item,.@amount) == 0){
+ mes "[Craft Book Merchant]";
+ mes "It doesn't seem like you can carry everything.";
+ mes "Please check the space in your inventory.";
+ close;
+ }
+ mes "[Craft Book Merchant]";
+ mes "Thank you for your patronage.";
+ set Zeny,Zeny - .@total;
+ getitem .@item,.@amount;
+ close;
+ }
+ mes "[Craft Book Merchant]";
+ mes "Please take your time";
+ mes "before you make your decision.";
+ close;
+}
diff --git a/npc/re/merchants/ammo_boxes.txt b/npc/re/merchants/ammo_boxes.txt
new file mode 100644
index 000000000..ba9e4fd96
--- /dev/null
+++ b/npc/re/merchants/ammo_boxes.txt
@@ -0,0 +1,19 @@
+//===== Hercules Script ======================================
+//= Magazine Dealers
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.1
+//===== Description: =========================================
+//= Turns bullets into magazines/packs.
+//===== Additional Comments: =================================
+//= 1.0 First version, Renewal duplicates.
+//= 1.1 Added Izlude duplicates. [Euphy]
+//============================================================
+
+que_ng,187,149,3 duplicate(mdk) Magazine Dealer Kenny#ng 83
+izlude,74,104,3 duplicate(mdk) Magazine Dealer Kenny#iz 83
+izlude_a,74,104,3 duplicate(mdk) Magazine Dealer Kenny#a 83
+izlude_b,74,104,3 duplicate(mdk) Magazine Dealer Kenny#b 83
+izlude_c,74,104,3 duplicate(mdk) Magazine Dealer Kenny#c 83
+izlude_d,74,104,3 duplicate(mdk) Magazine Dealer Kenny#d 83
diff --git a/npc/re/merchants/ammo_dealer.txt b/npc/re/merchants/ammo_dealer.txt
new file mode 100644
index 000000000..9925d809c
--- /dev/null
+++ b/npc/re/merchants/ammo_dealer.txt
@@ -0,0 +1,19 @@
+//===== Hercules Script ======================================
+//= Bullet Dealers
+//===== By ===================================================
+//= Euphy
+//===== Version ==============================================
+//= 1.1
+//===== Description ==========================================
+//= Bullet trader.
+//===== Comments =============================================
+//= 1.0 First version, Renewal duplicates.
+//= 1.1 Added Izlude duplicates. [Euphy]
+//============================================================
+
+que_ng,187,156,3 duplicate(bdt) Bullet Dealer Tony#ng 86
+izlude,77,104,3 duplicate(bdt) Bullet Dealer Tony#iz 86 //Official: (74,106) -> in the water
+izlude_a,77,104,3 duplicate(bdt) Bullet Dealer Tony#a 86
+izlude_b,77,104,3 duplicate(bdt) Bullet Dealer Tony#b 86
+izlude_c,77,104,3 duplicate(bdt) Bullet Dealer Tony#c 86
+izlude_d,77,104,3 duplicate(bdt) Bullet Dealer Tony#d 86
diff --git a/npc/re/merchants/blessed_refiner.txt b/npc/re/merchants/blessed_refiner.txt
index a25701774..fc62cd216 100644
--- a/npc/re/merchants/blessed_refiner.txt
+++ b/npc/re/merchants/blessed_refiner.txt
@@ -1,11 +1,9 @@
-//===== rAthena Script =======================================
+//===== Hercules Script ======================================
//= Blessed Refiner
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
//===== Description: =========================================
//= [Official Conversion]
//= Refiners that use Blessed ores to refine equipment.
diff --git a/npc/re/merchants/card_separation.txt b/npc/re/merchants/card_separation.txt
index 386474000..8187d4fe7 100644
--- a/npc/re/merchants/card_separation.txt
+++ b/npc/re/merchants/card_separation.txt
@@ -1,19 +1,18 @@
//===== Hercules Script ======================================
//= Card Separation System
-//===== By: ==================================================
+//===== By: ==================================================
//= Muad_Dib
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= Hercules
-//===== Description: =========================================
+//===== Current Version: =====================================
+//= 1.1
+//===== Description: =========================================
//= [Official Conversion]
//= Separates cards from equipment.
-//===== Additional Comments: =================================
+//===== Additional Comments: =================================
//= 1.0 First Version. [Euphy]
-//============================================================
+//= 1.1 Added "Richard" NPC. [Euphy]
+//============================================================
-malangdo,215,166,4 script Jeremy#mal 553,{
+- script ::CardSeparation_mal -1,{
disable_items;
if (checkweight(1201,1) == 0) {
mes "You have too many kinds of objects. Let's try to continue after reducing those objects.";
@@ -23,19 +22,32 @@ malangdo,215,166,4 script Jeremy#mal 553,{
mes "Can't continue because you have too many heavy objects. Let's try to continue after reducing the weight.";
close;
}
- mes "[Jeremy]";
- mes "Long time no see~";
- mes "I have learned a new skill that separates cards from Armor, Shoes, Garment and Headgear. Do you want to try it?";
+ if (strnpcinfo(1) == "Jeremy") {
+ set .@Jeremy,1;
+ set .@n$, "[Jeremy]";
+ setarray .@equip_name$[0], "Armor", "Shoes", "Garment", "Upper Hat";
+ setarray .@equip_slot[0], EQI_ARMOR,EQI_SHOES,EQI_GARMENT,EQI_HEAD_TOP;
+
+ mes .@n$;
+ mes "Long time no see~";
+ mes "I have learned a new skill that separates cards from Armor, Shoes, Garment and Headgear. Do you want to try it?";
+ } else {
+ set .@Jeremy,0;
+ set .@n$, "[Richard]";
+ setarray .@equip_name$[0], "Left hand", "Right hand";
+ setarray .@equip_slot[0], EQI_HAND_L, EQI_HAND_R;
+
+ mes .@n$;
+ mes "Silly Jeremy does not want to touch weapons and shields because of picking several cards that might be damaged. That is why I prepared a card separaion skill for weapons and shields...";
+ }
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "Generally the fee is 1,000,000 Zeny. During the card separation, you can use ^990000special items that reduce the rate of destroying equipment or cards^000000. We don't charge additional zeny for this.";
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "There is a possibility of destroying them even using a special item. Also, ^ff0000the refine level might be lost^000000. Do you have any equipment to separate?";
next;
- setarray .@equip_name$[0], "Armor", "Shoes", "Garment", "Upper Hat";
- setarray .@equip_slot[0], EQI_ARMOR,EQI_SHOES,EQI_GARMENT,EQI_HEAD_TOP;
for(set .@i,0; .@i<getarraysize(.@equip_slot); set .@i,.@i+1) {
if (getequipisequiped(.@equip_slot[.@i]))
set .@menu$, .@menu$+getequipname(.@equip_slot[.@i])+":";
@@ -43,62 +55,55 @@ malangdo,215,166,4 script Jeremy#mal 553,{
set .@menu$, .@menu$+"^999999"+.@equip_name$[.@i]+" (empty)^000000:";
}
- set .@i, select("Stop the work:How is it possible?:"+.@menu$);
+ set .@i, select("Stop the work:"+((.@Jeremy)?"How is it possible?":"")+":"+.@menu$);
switch(.@i) {
case 1:
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
case 2:
- mes "[Jeremy]";
+ mes .@n$;
mes "You wonder what is so special. Well, I hate to give only a guide, so let me tell you the story...";
next;
mes "^000099Jeremy is stretching his shoulders and hands. He might be waiting for someone to talk with him.^000000";
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "Do you know that Malangdo's specialty is canned food?";
next;
select("I knew that well. Is it that limited?");
- mes "[Jeremy]";
+ mes .@n$;
mes "Hehe... Everyone loves it. But there were some problems before.";
next;
select("Problems? Is there any faulty fish?");
- mes "[Jeremy]";
+ mes .@n$;
mes "No, the fish does not have any problem. The problem is lots of fish oil produced after processing. That is such an industrial waste.";
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "However, after a revitalizing refining process, this fish oil became valuable to use for old equipment care and industrial lubricant.";
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "In addition, this oil is so useful to separate relics from equipped weapons that we can't buy Premium Lubricant and Ordinary Lubricant with Zeny.";
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "Well, don't worry about money. Surely the Premium Lubricant is expensive. If you pay some zeny, I can give you cheaper lubricant.";
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "I'm not sure about the quality of success. Anyway, this is so cheap, right?";
close;
default:
set .@equip_num, .@equip_slot[.@i-3];
if (!getequipisequiped(.@equip_num)) {
- mes "[Jeremy]";
- mes "In this part, there is nothing?";
+ mes .@n$;
+ if (.@Jeremy)
+ mes "In this part, there is nothing?";
+ else
+ mes "There is nothing on that part?";
close;
}
break;
}
- setarray .@equip_card[0], getequipcardid(.@equip_num,0),getequipcardid(.@equip_num,1),getequipcardid(.@equip_num,2),getequipcardid(.@equip_num,3);
- for(set .@i,0; .@i<4; set .@i,.@i+1) {
- if (.@equip_card[.@i] >= 4700) // Armor Enchant System
- set .@equip_card[.@i],0;
- }
- if (!getarraysize(.@equip_card)) {
- mes "[Jeremy]";
- mes "The card is not equipped. Do you want to check again?";
- close;
- }
- // Detect MVP cards.
+ setarray .@equip_card[0], getequipcardid(.@equip_num,0),getequipcardid(.@equip_num,1),getequipcardid(.@equip_num,2),getequipcardid(.@equip_num,3);
set .@mvp_list$,
"|4408|4128|4456|4168|4142"+ //Gloom_Under_Night_Card, Golden_Bug_Card, Nidhogg_Shadow_Card, Dark_Lord_Card, Doppelganger_Card
"|4134|4137|4386|4407|4357"+ //Dracula_Card, Drake_Card, Detale_Card, Randgris_Card, B_Seyren_Card
@@ -109,15 +114,64 @@ malangdo,215,166,4 script Jeremy#mal 553,{
"|4403|4399|4376|4441|4302"+ //Kiel_Card, Thanatos_Card, Lady_Tanee_Card, Fallen_Bishop_Card, Tao_Gunka_Card
"|4305|4148|4318|4121|4365"+ //Turtle_General_Card, Pharaoh_Card, Knight_Windstorm_Card, Phreeoni_Card, B_Katrinn_Card
"|4363|4324|4361|4330|4342|"; //B_Magaleta_Card, Garm_Card, B_Harword_Card, Dark_Snake_Lord_Card, Rsx_0806_Card
- if ((.@equip_card[0] && compare(.@mvp_list$,"|"+.@equip_card[0]+"|")) ||
- (.@equip_card[1] && compare(.@mvp_list$,"|"+.@equip_card[1]+"|")) ||
- (.@equip_card[2] && compare(.@mvp_list$,"|"+.@equip_card[2]+"|")) ||
- (.@equip_card[3] && compare(.@mvp_list$,"|"+.@equip_card[3]+"|")))
- set .@boss_chk,1;
+ if (.@Jeremy) {
+ for(set .@i,0; .@i<4; set .@i,.@i+1) {
+ if (.@equip_card[.@i] >= 4700) // Armor Enchant System
+ set .@equip_card[.@i],0;
+ }
+ if (!getarraysize(.@equip_card)) {
+ mes .@n$;
+ mes "The card is not equipped. Do you want to check again?";
+ close;
+ }
+ if ((.@equip_card[0] && compare(.@mvp_list$,"|"+.@equip_card[0]+"|")) ||
+ (.@equip_card[1] && compare(.@mvp_list$,"|"+.@equip_card[1]+"|")) ||
+ (.@equip_card[2] && compare(.@mvp_list$,"|"+.@equip_card[2]+"|")) ||
+ (.@equip_card[3] && compare(.@mvp_list$,"|"+.@equip_card[3]+"|")))
+ set .@boss_chk,1;
+ } else {
+ // Official "Richard" script uses a hardcoded list including every possible item.
+ //if (!getequipisequiped(.@equip_num)) {
+ // mes "[Richard]";
+ // mes "I'm sorry. We don't provide that equipmnet yet.";
+ // close;
+ //}
+
+ mes "[Richard]";
+ mes "Which number socket do you want to separate the card? From the left socket, they are sorted 1,2,3,4.";
+ next;
+ set .@menu$,"";
+ for(set .@i,0; .@i<4; set .@i,.@i+1) {
+ if (.@equip_card[.@i] && .@equip_card[.@i] < 4700) // Armor Enchant System
+ set .@menu$, .@menu$+"Socket "+(.@i+1)+" - "+getitemname(.@equip_card[.@i])+":";
+ else
+ set .@menu$, .@menu$+"^777777Socket "+(.@i+1)+" - No card^000000:";
+ }
+ set .@i, select("Stop the work:"+.@menu$);
+ switch(.@i) {
+ case 1:
+ mes .@n$;
+ mes "Whenever you need to work, please come to me.";
+ close;
+ default:
+ set .@slot, .@i-2;
+ if (.@equip_card[.@slot] == 0 || .@equip_card[.@slot] >= 4700) {
+ mes .@n$;
+ mes "This socket is not equipped with any card. Why don't you check again?";
+ close;
+ }
+ break;
+ }
+ if (compare(.@mvp_list$,"|"+.@equip_card[.@slot]+"|"))
+ set .@boss_chk,1;
+ }
if (.@boss_chk == 0) {
- mes "[Jeremy]";
- mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:";
+ mes .@n$;
+ if (.@Jeremy)
+ mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:";
+ else
+ mes "Please choose the working fee.";
next;
set .@menu$,
"Next time...:"+
@@ -126,20 +180,20 @@ malangdo,215,166,4 script Jeremy#mal 553,{
((countitem(6440))?"Use Ordinary Lubricant":"^999999Ordinary Lubricant (Insufficient)^000000");
switch(select(.@menu$)) {
case 1:
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
case 2:
if (Zeny < 1000000) {
- mes "[Jeremy]";
+ mes .@n$;
mes "You don't have enough zeny. Please come back with enough fees.";
close;
}
- mes "[Jeremy]";
+ mes .@n$;
mes "This is pretty old equipment. There is a high rate of destroying the cards or equipment during the work. Are you sure you want to continue?";
next;
if(select("Next time...:Continue") == 1) {
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
}
@@ -150,15 +204,15 @@ malangdo,215,166,4 script Jeremy#mal 553,{
break;
case 3:
if (countitem(6441) == 0) {
- mes "[Jeremy]";
+ mes .@n$;
mes "You don't have Premium Lubricant.";
close;
}
- mes "[Jeremy]";
+ mes .@n$;
mes "If you use the Premium Lubricant, the rate of destruction will be decreased highly, but I can't give you a 100% guarantee. Are you sure you want to continue?";
next;
if(select("Next time...:Continue") == 1) {
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
}
@@ -169,15 +223,15 @@ malangdo,215,166,4 script Jeremy#mal 553,{
break;
case 4:
if (countitem(6440) == 0) {
- mes "[Jeremy]";
+ mes .@n$;
mes "You don't have Ordinary Lubricant.";
close;
}
- mes "[Jeremy]";
+ mes .@n$;
mes "If you use the Ordinary Lubricant, the rate of destruction will be decreased highly, but I can't give you a 100% guarantee. Are you sure you want to continue?";
next;
if(select("Next time...:Continue") == 1) {
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
}
@@ -188,28 +242,34 @@ malangdo,215,166,4 script Jeremy#mal 553,{
break;
}
} else if (.@boss_chk == 1) {
- mes "[Jeremy]";
+ mes .@n$;
mes "This equipment contains a precious MVP card. This card can't be separated with lubricant. If you bring the super surfactant ^0000ffSillit Pong^000000, I will be able to work.";
next;
switch(select("Next time...:I have a Sillit Pong.")) {
case 1:
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
case 2:
if (countitem(6443) == 0) {
- mes "[Jeremy]";
+ mes .@n$;
mes "You don't have Sillit Pong.";
close;
}
break;
}
- mes "[Jeremy]";
- mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:";
+ mes .@n$;
+ if (.@Jeremy) {
+ mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:";
+ set .@menu$,"Alright, let's do it!";
+ } else {
+ mes "May I continue?";
+ set .@menu$,"I got it. Just do it quickly!";
+ }
next;
- switch(select("Next time...:Alright, let's do it!")) {
+ switch(select("Next time...:"+.@menu$)) {
case 1:
- mes "[Jeremy]";
+ mes .@n$;
mes "Whenever you need the work, visit me here.";
close;
case 2:
@@ -229,20 +289,37 @@ malangdo,215,166,4 script Jeremy#mal 553,{
if (rand(1,.@sf_r_num) >= 61)
set .@equip_refine,0;
- // Chance of retaining equipment.
- if (rand(1,.@sf_w_num) < 61) {
- set .@equip_safe,1;
- getitem2 .@equip_id,1,1,.@equip_refine,0,0,0,0,0;
- }
+ if (.@Jeremy) {
+ // Chance of retaining equipment.
+ if (rand(1,.@sf_w_num) < 61) {
+ set .@equip_safe,1;
+ getitem2 .@equip_id,1,1,.@equip_refine,0,0,0,0,0;
+ }
- // Chance of retaining cards.
- for(set .@i,0; .@i<4; set .@i,.@i+1) {
- if (.@equip_card[.@i]) {
- if (rand(1,.@sf_c_num) < 61)
- getitem .@equip_card[.@i],1;
- else
- set .@card_break,1;
+ // Chance of retaining cards.
+ for(set .@i,0; .@i<4; set .@i,.@i+1) {
+ if (.@equip_card[.@i]) {
+ if (rand(1,.@sf_c_num) < 61)
+ getitem .@equip_card[.@i],1;
+ else
+ set .@card_break,1;
+ }
}
+ } else {
+ set .@card, .@equip_card[.@slot];
+ set .@equip_card[.@slot],0;
+
+ // Chance of retaining equipment.
+ if (rand(1,.@sf_w_num) < 61) {
+ set .@equip_safe,1;
+ getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
+ }
+
+ // Chance of retaining card.
+ if (rand(1,.@sf_c_num) < 61)
+ getitem .@card,1;
+ else
+ set .@card_break,1;
}
// Display corresponding effect.
@@ -273,7 +350,9 @@ malangdo,215,166,4 script Jeremy#mal 553,{
mes "Card has been damaged. ^ff0000Unrecoverable.^000000";
}
next;
- mes "[Jeremy]";
+ mes .@n$;
mes "That is all for the results of the card separation. Please come again.";
close;
}
+malangdo,215,166,4 duplicate(CardSeparation_mal) Jeremy#pa0829 553
+malangdo,208,166,6 duplicate(CardSeparation_mal) Richard#pa0829 559
diff --git a/npc/re/merchants/catalog.txt b/npc/re/merchants/catalog.txt
index 67f45059a..8d4d47cdc 100644
--- a/npc/re/merchants/catalog.txt
+++ b/npc/re/merchants/catalog.txt
@@ -4,8 +4,6 @@
//= skyiing, Scriptor
//===== Current Version: =====================================
//= 1.1
-//===== Compatible With: =====================================
-//= Hercules
//===== Description: =========================================
//= [Official Conversion]
//= Catalogs allow players to easily search for items in-game,
@@ -13,7 +11,7 @@
//===== Additional Comments: =================================
//= 1.0 Moved from root directory. [Euphy]
//= 1.1 Updated dialogue. [Euphy]
-//============================================================
+//============================================================
moc_para01,22,16,5 script Catalog Magician#catal01 704,{
if (!checkweight(1301,3)) {
@@ -105,4 +103,4 @@ moc_para01,22,16,5 script Catalog Magician#catal01 704,{
mes "So... let's start!! Buy more of them, please! PLEASE...!";
close;
}
-} \ No newline at end of file
+}
diff --git a/npc/re/merchants/coin_exchange.txt b/npc/re/merchants/coin_exchange.txt
index a78491ffc..2796a4a70 100644
--- a/npc/re/merchants/coin_exchange.txt
+++ b/npc/re/merchants/coin_exchange.txt
@@ -4,8 +4,6 @@
//= Hercules Dev Team
//===== Current Version: =====================================
//= 1.2
-//===== Compatible With: =====================================
-//= Hercules
//===== Description: =========================================
//= [Official Conversion]
//= Renewal coin redemption NPCs.
diff --git a/npc/re/merchants/diamond.txt b/npc/re/merchants/diamond.txt
index fa19f372d..43d565188 100644
--- a/npc/re/merchants/diamond.txt
+++ b/npc/re/merchants/diamond.txt
@@ -4,18 +4,16 @@
//= Z3R0
//===== Current Version: =====================================
//= 1.5
-//===== Compatible With: =====================================
-//= Hercules
//===== Description: =========================================
-//= [Aegis Conversion]
+//= [Official Conversion]
//= Exchanges 17 Carat Diamond
//===== Additional Comments: =================================
-//= v1.0 First / Optimized Version
-//= v1.1 Adjusted for Missing ; on Line #271 (#15425)
-//= v1.2 Removed Comments per Request (#15426)
-//= v1.3 Changed Emotion # to Const Definition (#15427)
-//= v1.4 Removed Double Space on Line #148 (#15428)
-//= v1.5 Added This Version History (#15429)
+//= 1.0 First / Optimized Version
+//= 1.1 Adjusted for Missing ; on Line #271 (#15425)
+//= 1.2 Removed Comments per Request (#15426)
+//= 1.3 Changed Emotion # to Const Definition (#15427)
+//= 1.4 Removed Double Space on Line #148 (#15428)
+//= 1.5 Added This Version History (#15429)
//============================================================
- script RareDiamondMerchant 58,{
diff --git a/npc/re/merchants/enchan_mal.txt b/npc/re/merchants/enchan_mal.txt
index c7e182005..98a8fbf37 100644
--- a/npc/re/merchants/enchan_mal.txt
+++ b/npc/re/merchants/enchan_mal.txt
@@ -4,8 +4,6 @@
//= Muad_Dib
//===== Current Version: =====================================
//= 1.0a
-//===== Compatible With: =====================================
-//= Hercules
//===== Description: =========================================
//= [Official Conversion]
//= Adds enchantments to many high level weapons in exchange
@@ -28,10 +26,10 @@ malangdo,213,167,4 script Mayomayo#mal 555,{
mes "[Mayomayo]";
mes "Wow welcome. It is new Mayomayo refinement store~ I enchant some luxury weapons including level 4 weapons.";
next;
- switch(select("Any store policy is changes?:Enhance high ranked weapons:Reset reinforcement capability")) {
+ switch(select("Any store policy changes?:Enchant High Ranked Weapon:Initialize Enchant (Need Silvervine Fruit)")) {
case 1:
mes "[Mayomayo]";
- mes "When I enchanted weapons, the slotted cards or refined level sometimes dissipated. I hated it. However, one day I found how to do it without any extinction.";
+ mes "When I enchant weapons, the slotted cards or refined level are dissipated sometimes. I hated it. However, one day I found how to do it without any extinction.";
next;
mes "[Mayomayo]";
mes "Have you ever seen a building of person of reinforcement capacity association?";
@@ -42,7 +40,7 @@ malangdo,213,167,4 script Mayomayo#mal 555,{
close;
}
mes "[Mayomayo]";
- mes "If you go the place, there is someone who enchants the Archangel Wing. At that time that was amazing, because that was impossible ability by my own skill.";
+ mes "If you go to the place, there is someone who enchants the Archangel Wing. At that time that was amazing, because that was impossible ability by my own skill.";
next;
mes "[Mayomayo]";
mes "Every night I became his butler and did odd jobs. That is how I learned to enchant.";
@@ -67,7 +65,7 @@ malangdo,213,167,4 script Mayomayo#mal 555,{
set @mal_equip_id, getequipid(EQI_HAND_R);
set .@equip_type, getiteminfo(@mal_equip_id,11);
- //callsub L_Socket,<cost multiplier>,<type>;
+ //callsub L_Socket,<cost multiplier>,<4-x enchants possible>;
switch(.@equip_type) { // Check weapon type first to speed up the checks.
case 1: // Daggers
switch(@mal_equip_id) {
@@ -305,7 +303,7 @@ malangdo,213,167,4 script Mayomayo#mal 555,{
}
mes "[Mayomayo]";
if (@mal_enchant_select == 1)
- mes "This is not suitable equipment for the enchant. Don't forget we only take care of high class weapons, including level 4 weapons~";
+ mes "This is not a suitable equipment for the enchant. Don't forget we only take care of high class weapons, including level 4 weapons~";
else
mes "This equipment can not be initialized. Don't forget we only handle some luxury weapons, including level 4 weapons~";
set @mal_equip_id,0;
diff --git a/npc/re/merchants/enchan_mora.txt b/npc/re/merchants/enchan_mora.txt
index b23a33494..5c0ecdc7a 100644
--- a/npc/re/merchants/enchan_mora.txt
+++ b/npc/re/merchants/enchan_mora.txt
@@ -1,20 +1,19 @@
-//===== rAthena Script =======================================
+//===== Hercules Script ======================================
//= Mora Enchants
-//===== By: ==================================================
+//===== By: ==================================================
//= Euphy
-//===== Current Version: =====================================
-//= 1.1a
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
+//===== Current Version: =====================================
+//= 1.2
+//===== Description: =========================================
//= [Official Conversion]
//= Adds enchantments to various items in exchange for
//= Mora coins.
-//===== Additional Comments: =================================
+//===== Additional Comments: =================================
//= 1.0 First Version. [Euphy]
//= 1.1 Optimized. [Euphy]
//= 1.1a Bug fixes. [Lemongrass]
-//============================================================
+//= 1.2 Bug fixes (bugreport:7930) [DeadlySilence]
+//============================================================
// Arch Bishop Enchants :: coin_arc
//============================================================
@@ -222,7 +221,7 @@ mora,96,74,5 script Master of Relics#pa0829 495,{
if (.@i <= 1024) {
// Basic combinations
// (raw: .@i increments by 16, 4 repeats)
- setarray .@enchant_slot2[0],4710,4720,4721,4240; //Inteligence2,Dexterity1,Dexterity2,Vitality1
+ setarray .@enchant_slot2[0],4711,4720,4721,4740; //Inteligence2,Dexterity1,Dexterity2,Vitality1
setarray .@enchant_slot3[0],.@sp,4799,4766,4788; //[sp],HP500,Atk2,Mdef6
setarray .@enchants[2],
.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
@@ -457,7 +456,7 @@ mora,99,93,5 script Artifact Crafter#pa0829 495,{
break;
}
set .@item, .@items[(.@select-2)%4];
- if (countitem(6380) == 0 || countitem(.@item) == 0) {
+ if (countitem(6380) < 2 || countitem(.@item) == 0) {
mes "[Artifact Crafter]";
mes "You have to have 2 Mora Coins and an item to be reinforced before I can do my work.";
close;
@@ -634,7 +633,7 @@ mora,148,98,3 script Artifact Researcher#new 521,{
}
if (Zeny < 100000 || countitem(6380) == 0) {
mes "[Artifact Researcher]";
- mes "I'm not giving these services out for free pal. 100,000 zeny or 1 Mora Coin. Is that too much to ask?";
+ mes "I'm not giving these services out for free pal. 100,000 zeny and 1 Mora Coin. Is that too much to ask?";
close;
}
mes "[Artifact Researcher]";
@@ -1227,7 +1226,7 @@ mora,124,82,4 script Artifact Collector#blan 522,{
mes "[Artifact Collector]";
mes "+1, +2, +3, +4, +5, +6 those refinements are not strong enough to work on my craft.";
next;
- emotion 57,0;
+ emotion e_otl,0;
mes "[Artifact Collector]";
mes "But +7! +7 is rare and just barely strong enough to work in my crafting attempts.";
next;
diff --git a/npc/re/merchants/enchan_upg.txt b/npc/re/merchants/enchan_upg.txt
new file mode 100644
index 000000000..6e5728aa2
--- /dev/null
+++ b/npc/re/merchants/enchan_upg.txt
@@ -0,0 +1,264 @@
+//===== Hercules Script ======================================
+//= Upgrade Weapon Enchants
+//===== By: ==================================================
+//= Skorm
+//===== Current Version: =====================================
+//= 1.1
+//===== Description: =========================================
+//= [Official Conversion]
+//= Adds enchantments to Upgrade weapons.
+//===== Additional Comments: =================================
+//= 1.0 First version.
+//= 1.1 Standardizing, grammar and bug fixes. [Euphy]
+//============================================================
+
+prt_in,28,73,3 script Devil Enchant Master#prq 63,{
+ disable_items;
+ if (checkweight(1201,1) == 0) {
+ mes "You are carrying too many items, please reduce it and come back again!";
+ close;
+ }
+ if (MaxWeight - Weight < 10000) {
+ mes "You are over the weight limit, please reduce it and come back again!";
+ close;
+ }
+ mes "[Devil Enchant Master]";
+ mes "Yes?";
+ mes "You are looking for me?";
+ next;
+ switch(select("This is the first time seeing you!:I heard that you are the best!:Please initialize the enchant.")) {
+ case 1:
+ mes "[Devil Enchant Master]";
+ mes "Ha ha ha~ Of course, I am not the kind of person that simply deals with people.";
+ next;
+ mes "[Devil Enchant Master]";
+ mes "Including you! Even if you offer me plenty of money, I will not simply enchant for you!!";
+ next;
+ mes "[Devil Enchant Master]";
+ mes "Have you seen my title? Very few people have this title for a reason!";
+ next;
+ mes "[Devil Enchant Master]";
+ mes "I will only enchant if you bring an ^0000ffEnchant Book^000000 along!";
+ next;
+ mes "[Devil Enchant Master]";
+ mes "Else, I will not enchant for you....";
+ close;
+ case 2:
+ if (!countitem(6484)) {
+ mes "[Devil Enchant Master]";
+ mes "Are you listening to me? I will only do for you if you bring the Enchant Book!";
+ close;
+ }
+ set .@select,1;
+ break;
+ case 3:
+ mes "[Devil Enchant Master]";
+ if (Zeny < 100000) {
+ mes "Initializing will cost 100,000 zeny. It seems you do not have enough zeny...";
+ close;
+ }
+ mes "Initializing will cost 100,000 zeny and confirming whether the weapon is enchanted!";
+ next;
+ if (select("Let me think about it.:Initialize it now!") == 1) {
+ mes "[Devil Enchant Master]";
+ mes "Come back after you have confirmed!";
+ close;
+ }
+ set .@select,2;
+ break;
+ }
+ set .@part, EQI_HAND_R;
+
+ mes "[Devil Enchant Master]";
+ if (!getequipisequiped(.@part)) {
+ mes "Are you trying to remove the enchanted equipment?";
+ close;
+ }
+ setarray .@equip_card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
+ if (!getequipisequiped(.@part)) {
+ mes "It is dangerous to remove equipment during enchant process!";
+ close;
+ }
+ set .@equip_id, getequipid(.@part);
+ set .@item$, "|1292|1394|1491|1585|2015|13071|13115|16019|18112|21000|";
+ if (!compare(.@item$,"|"+.@equip_id+"|")) {
+ mes "I don't want to touch your equipment now!";
+ close;
+ }
+ set .@equip_refine, getequiprefinerycnt(.@part);
+
+ if (.@select == 1) {
+ if (!countitem(6484)) {
+ mes "Are you listening to me? I will only do for you if you bring the Enchant Book!";
+ close;
+ }
+ mes "Which type of effect do you want to enchant?";
+ next;
+ switch(select("Let me think about it.:Physical Series:Magical Series")) {
+ case 1:
+ mes "[Devil Enchant Master]";
+ mes "Come back again after you change your mind!";
+ close;
+ case 2:
+ set .@enc_type,1;
+ break;
+ case 3:
+ set .@enc_type,2;
+ break;
+ }
+ mes "[Devil Enchant Master]";
+ if (.@equip_card[3]) {
+ mes "This equipment has been enchanted! You need to initialize first before you want to enchant it again.";
+ close;
+ }
+ mes "The enchant process might fail, and ^ff0000it will reduce partial refine level^000000, but the slotted card and weapon will not be broken! Are you sure you want to continue?";
+ next;
+ if (select("Next time!:Start now!") == 1) {
+ mes "[Devil Enchant Master]";
+ mes "Come back again after you have decided!";
+ close;
+ }
+ if (.@equip_card[3]) {
+ mes "[Devil Enchant Master]";
+ mes "It seems there's a problem, let me take a look.";
+ close;
+ }
+
+ if (.@enc_type == 1) { // Physical Series
+ set .@i, rand(1,1300);
+ if (.@i < 51) set .@enchant,4734; //Agility5
+ else if (.@i < 76) set .@enchant,4735; //Agility6
+ else if (.@i < 88) set .@enchant,4736; //Agility7
+ else if (.@i < 93) set .@enchant,4737; //Agility8
+ else if (.@i < 95) set .@enchant,4738; //Agility9
+ else if (.@i < 96) set .@enchant,4739; //Agility10
+ else if (.@i < 146) set .@enchant,4724; //Dexterity5
+ else if (.@i < 171) set .@enchant,4725; //Dexterity6
+ else if (.@i < 183) set .@enchant,4726; //Dexterity7
+ else if (.@i < 188) set .@enchant,4727; //Dexterity8
+ else if (.@i < 190) set .@enchant,4728; //Dexterity9
+ else if (.@i < 191) set .@enchant,4729; //Dexterity10
+ else if (.@i < 291) set .@enchant,4704; //Strength5
+ else if (.@i < 341) set .@enchant,4705; //Strength6
+ else if (.@i < 366) set .@enchant,4706; //Strength7
+ else if (.@i < 378) set .@enchant,4707; //Strength8
+ else if (.@i < 383) set .@enchant,4708; //Strength9
+ else if (.@i < 384) set .@enchant,4709; //Strength10
+ else if (.@i < 434) set .@enchant,4754; //Luck5
+ else if (.@i < 459) set .@enchant,4755; //Luck6
+ else if (.@i < 471) set .@enchant,4756; //Luck7
+ else if (.@i < 476) set .@enchant,4757; //Luck8
+ else if (.@i < 478) set .@enchant,4758; //Luck9
+ else if (.@i < 479) set .@enchant,4759; //Luck10
+ else if (.@i < 679) set .@enchant,4744; //Vitality5
+ else if (.@i < 779) set .@enchant,4745; //Vitality6
+ else if (.@i < 829) set .@enchant,4746; //Vitality7
+ else if (.@i < 854) set .@enchant,4747; //Vitality8
+ else if (.@i < 866) set .@enchant,4748; //Vitality9
+ else if (.@i < 867) set .@enchant,4749; //Vitality10
+ else if (.@i < 967) set .@enchant,4808; //Fighting_Spirit4
+ else if (.@i < 992) set .@enchant,4820; //Fighting_Spirit5
+ else if (.@i < 1092) set .@enchant,4835; //Expert_Archer4
+ else if (.@i < 1117) set .@enchant,4836; //Expert_Archer5
+ else if (.@i < 1217) set .@enchant,4835; //Expert_Archer4
+ else if (.@i < 1242) set .@enchant,4836; //Expert_Archer5
+ else set .@enchant,0;
+ } else if (.@enc_type == 2) { // Magical Series
+ set .@i, rand(1,1200);
+ if (.@i < 51) set .@enchant,4714; //Inteligence5
+ else if (.@i < 76) set .@enchant,4715; //Inteligence6
+ else if (.@i < 88) set .@enchant,4716; //Inteligence7
+ else if (.@i < 93) set .@enchant,4717; //Inteligence8
+ else if (.@i < 95) set .@enchant,4718; //Inteligence9
+ else if (.@i < 96) set .@enchant,4719; //Inteligence10
+ else if (.@i < 146) set .@enchant,4724; //Dexterity5
+ else if (.@i < 171) set .@enchant,4725; //Dexterity6
+ else if (.@i < 183) set .@enchant,4726; //Dexterity7
+ else if (.@i < 188) set .@enchant,4727; //Dexterity8
+ else if (.@i < 190) set .@enchant,4728; //Dexterity9
+ else if (.@i < 191) set .@enchant,4729; //Dexterity10
+ else if (.@i < 291) set .@enchant,4734; //Agility5
+ else if (.@i < 341) set .@enchant,4735; //Agility6
+ else if (.@i < 366) set .@enchant,4736; //Agility7
+ else if (.@i < 378) set .@enchant,4737; //Agility8
+ else if (.@i < 383) set .@enchant,4738; //Agility9
+ else if (.@i < 384) set .@enchant,4739; //Agility10
+ else if (.@i < 484) set .@enchant,4754; //Luck5
+ else if (.@i < 534) set .@enchant,4755; //Luck6
+ else if (.@i < 559) set .@enchant,4756; //Luck7
+ else if (.@i < 571) set .@enchant,4757; //Luck8
+ else if (.@i < 576) set .@enchant,4758; //Luck9
+ else if (.@i < 577) set .@enchant,4759; //Luck10
+ else if (.@i < 777) set .@enchant,4744; //Vitality5
+ else if (.@i < 877) set .@enchant,4745; //Vitality6
+ else if (.@i < 927) set .@enchant,4746; //Vitality7
+ else if (.@i < 952) set .@enchant,4747; //Vitality8
+ else if (.@i < 964) set .@enchant,4748; //Vitality9
+ else if (.@i < 969) set .@enchant,4749; //Vitality10
+ else if (.@i < 1069) set .@enchant,4812; //Spell4
+ else if (.@i < 1094) set .@enchant,4826; //Spell5
+ else if (.@i < 1119) set .@enchant,4761; //Matk2
+ else if (.@i < 1124) set .@enchant,4806; //Matk3
+ else set .@enchant,0;
+ } else {
+ mes "[Devil Enchant Master]";
+ mes "Hmm! This item is having a problem, please check it again!";
+ close;
+ }
+ mes "[Devil Enchant Master]";
+ if (.@equip_card[3]) {
+ mes "This item has been enchanted!";
+ close;
+ }
+ if (!countitem(6484)) {
+ mes "Are you listening to me? I will only do for you if you bring the Enchant Book!";
+ close;
+ }
+ if (.@enchant == 0) {
+ specialeffect EF_SHIELDCHARGE;
+ mes "Oh! Unbelievable!! It failed!! Please come again!";
+ set .@lost_refine, rand(0,.@equip_refine);
+ set .@equip_refine, .@equip_refine - .@lost_refine;
+ } else {
+ specialeffect EF_REPAIRWEAPON;
+ mes "The slot ^9900004^000000 has been enchanted!";
+ }
+ delitem 6484,1; //Enchant_Book
+ delequip .@part;
+
+// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@enchant
+ getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@enchant;
+
+ if (.@lost_refine) {
+ next;
+ mes "[Devil Enchant Master]";
+ mes "The failure has reduced the refine by "+.@lost_refine+" level"+((.@lost_refine == 1)?"":"s")+"! Don't be depressed!";
+ }
+ close;
+ } else if (.@select == 2) {
+ if (Zeny < 100000) {
+ mes "You need to bring some money to initialize!!";
+ close;
+ }
+ if (.@equip_card[3] < 4700) { // Armor Enchant System
+ mes "This item is not enchanted!";
+ close;
+ }
+ if (!getequipisequiped(.@part)) {
+ mes "Are you unequipping now?";
+ close;
+ }
+ specialeffect EF_REPAIRWEAPON;
+ mes "I initialized the enchant effects.";
+ set Zeny, Zeny - 100000;
+ delequip .@part;
+
+// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] 0
+ getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],0;
+
+ close;
+ } else {
+ mes "It seems you have chosen the wrong job??";
+ close;
+ }
+} \ No newline at end of file
diff --git a/npc/re/merchants/flute.txt b/npc/re/merchants/flute.txt
index 1aa7c38d4..b882c490f 100644
--- a/npc/re/merchants/flute.txt
+++ b/npc/re/merchants/flute.txt
@@ -3,20 +3,20 @@
//===== By: ==================================================
//= Masao, Muad_Dib, Ziu
//===== Current Version: =====================================
-//= 1.2
-//===== Compatible With: =====================================
-//= Hercules
+//= 1.2a
//===== Description: =========================================
+//= [Official Conversion]
//= Sells Falcon Flute and Wolf Flute.
//===== Additional Comments: =================================
//= 1.0 First Version. [Masao]
//= 1.1 Added Baby Hunter and Baby Ranger check. bugreport:5728 [Masao]
//= 1.2 Added Wolf Flute trader, optimized. [Euphy]
+//= 1.2a Fixed some conditions. [Euphy]
//============================================================
- script Falcon Flute Trader::fflute -1,{
mes "[Falcon Flute Trader]";
- if (BaseJob == Job_Hunter || Class == Job_Ranger || Class == Job_Ranger_T || Class == Job_Baby_Ranger) {
+ if (BaseJob == Job_Hunter) {
mes "Do you need a Falcon?";
mes "With a magical Flute, you can call your Falcon from anywhere!";
next;
@@ -40,14 +40,13 @@
mes "[Falcon Flute Trader]";
mes "If you need a Falcon Flute I will sell them for 12,500 zeny. Or is that too expensive?";
next;
- if (BaseJob == Job_Hunter)
- set .@price,12500;
- else {
+ if (eaclass()&EAJL_THIRD) {
mes "[Falcon Flute Trader]";
mes "For Rangers, however, I have a special price of 10,000 zeny!";
set .@price,10000;
next;
- }
+ } else
+ set .@price,12500;
if(select("Don't buy one:Buy a Falcon Flute") == 1) {
mes "[Falcon Flute Trader]";
mes "That's too bad. If you need one, come back!";
@@ -65,7 +64,7 @@
mes "Here, take this flute.";
mes "With it you can whistle for your Falcon from anywhere.";
set Zeny, Zeny - .@price;
- getitem 12848,1; // Falcon Flute
+ getitem 12848,1; //Falcon_Flute
next;
mes "[Falcon Flute Trader]";
mes "Just a reminder.";
@@ -76,7 +75,7 @@
mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
close;
}
- if (Class == Job_Baby_Archer || Class == Job_Archer) {
+ if (BaseJob == Job_Archer) {
mes "Hello, young one!";
mes "Currently I can't help you,";
mes "but why don't you return to me when you've become a great Hunter and learned how to handle Falcons properly?";
diff --git a/npc/re/merchants/hd_refiner.txt b/npc/re/merchants/hd_refiner.txt
index 897986cd6..fed923af9 100644
--- a/npc/re/merchants/hd_refiner.txt
+++ b/npc/re/merchants/hd_refiner.txt
@@ -1,11 +1,9 @@
-//===== rAthena Script =======================================
+//===== Hercules Script ======================================
//= HD Refiners
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
//===== Description: =========================================
//= [Official Conversion]
//= Refiners that use HD ores to refine equipment. Upon
diff --git a/npc/re/merchants/inn.txt b/npc/re/merchants/inn.txt
index 14e1a2eff..7f86a7d2d 100644
--- a/npc/re/merchants/inn.txt
+++ b/npc/re/merchants/inn.txt
@@ -4,8 +4,6 @@
//= c, L0ne_W0lf
//===== Current Version: =====================================
//= 1.1
-//===== Compatible With: =====================================
-//= Hercules
//===== Description: =========================================
//= Inn Npcs, Save and Heal
//===== Additional Comments: =================================
@@ -40,7 +38,7 @@ bra_in01,27,24,3 script Hotel Keeper#bra1 478,{
mes "[Hotel Keeper]";
mes "I will show you a great room.";
close2;
- set zeny,zeny-5000;
+ set Zeny, Zeny-5000;
percentheal 100,100;
warp "bra_in01",144,69;
end;
diff --git a/npc/re/merchants/quivers.txt b/npc/re/merchants/quivers.txt
index 45e44401a..ff95ae7a4 100644
--- a/npc/re/merchants/quivers.txt
+++ b/npc/re/merchants/quivers.txt
@@ -1,18 +1,17 @@
-//===== rAthena Script =======================================
+//===== Hercules Script ======================================
//= Arrow Quivers
//===== By: ==================================================
//= Muad_Dib (Prometheus Project); L0ne_W0lf
//===== Current Version: =====================================
//= 1.1
-//===== Compatible With: =====================================
-//= rAthena SVN
//===== Description: =========================================
+//= [Official Conversion]
//= Turns arrows into Arrow Quivers.
-// Breakdown of Subroutine "S_BuyQuiver"
-// arg(0): Type of Arrow to be packaged (item ID).
-// arg(1): How many of each 'getarg(0)' arrow per quiver.
-// arg(2): The cost of making a 'getarg(0)' quiver.
-// arg(3): The quiver given by the NPC (item ID).
+//= Breakdown of Subroutine "S_BuyQuiver"
+//= arg(0): Type of Arrow to be packaged (item ID).
+//= arg(1): How many of each 'getarg(0)' arrow per quiver.
+//= arg(2): The cost of making a 'getarg(0)' quiver.
+//= arg(3): The quiver given by the NPC (item ID).
//===== Additional Comments: =================================
//= 1.0 Added Mora NPC. [Euphy]
//= 1.1 Updated to match the official scripts. [Euphy]
diff --git a/npc/re/merchants/refine.txt b/npc/re/merchants/refine.txt
index b1493e12d..923e862e6 100644
--- a/npc/re/merchants/refine.txt
+++ b/npc/re/merchants/refine.txt
@@ -3,9 +3,7 @@
//===== By: ==================================================
//= Hercules Dev Team
//===== Current Version: =====================================
-//= 1.2
-//===== Compatible With: =====================================
-//= Hercules
+//= 1.3
//===== Description: =========================================
//= Renewal-specific refining NPCs and material merchants.
//===== Additional Comments: =================================
@@ -14,20 +12,21 @@
//= 1.1 Added Malangdo Refiner "Clink". [Euphy]
//= 1.2 Added official success calculation, thanks to Helvetica.
//= The safe/multiple refine feature is now functional. [Euphy]
+//= 1.3 Updated to match the latest official script. [Euphy]
//============================================================
// +11 and above Refiners
//============================================================
-prt_in,90,72,5 script Bestry#prt 826,{
- callfunc "refinenew","Bestry",0;
+prt_in,90,72,5 script Vestri#prt 826,{
+ callfunc "refinenew","Vestri",0;
end;
}
-morocc_in,64,41,5 script Bestry#moc 826,{
- callfunc "refinenew","Bestry",0;
+morocc_in,64,41,5 script Vestri#moc 826,{
+ callfunc "refinenew","Vestri",0;
end;
}
-payon_in01,18,132,3 script Bestry#pay 826,{
- callfunc "refinenew","Bestry",0;
+payon_in01,18,132,3 script Vestri#pay 826,{
+ callfunc "refinenew","Vestri",0;
end;
}
@@ -45,24 +44,32 @@ payon_in01,18,132,3 script Bestry#pay 826,{
function script refinenew {
disable_items;
mes "["+ getarg(0) +"]";
- mes "I am the best Blacksmith ever!";
- mes "I don't work with normal, boring items.";
- mes "But only with items that are level 10 or higher!";
+ mes "I am the best Armsmith ever!";
+ mes "I don't refine normal, boring items.";
+ mes "I only refine items that are Level 10 or higher.";
next;
mes "["+ getarg(0) +"]";
- mes "Anyway, you may use my services if your item is lv 10 or higher.";
- mes "What do you want to have refined?";
+ mes "Anyway, you may use my services if your item is Level 10 or higher.";
+ mes "What do you want me to refine?";
next;
setarray .@position$[1],"Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
set .@menu$,"";
for(set .@i,1; .@i<=10; set .@i,.@i+1) {
- if(getequipisequiped(.@i))
+ if (getequipisequiped(.@i)) {
set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
+ set .@equipped,1;
+ }
set .@menu$, .@menu$ + ":";
}
- set .@part,select(.@menu$);
- if(!getequipisequiped(.@part)) {
+ if (.@equipped == 0) {
+ mes "[" + getarg(0) + "]";
+ mes "I don't think I can refine any items you have...";
+ close;
+ }
+ set .@part, select(.@menu$);
+
+ if (!getequipisequiped(.@part)) { //custom check
mes "[" + getarg(0) + "]";
mes "You're not wearing";
mes "anything there that";
@@ -70,20 +77,18 @@ function script refinenew {
emotion e_an;
close;
}
- //Check if the item is refinable...
- if(!getequipisenableref(.@part)) {
+ if (!getequipisenableref(.@part)) {
mes "[" + getarg(0) + "]";
mes "I don't think I can";
mes "refine this item at all...";
close;
}
- //Check to see if the items is at least +10
- if(getequiprefinerycnt(.@part) < 10) {
+ if (getequiprefinerycnt(.@part) < 10) {
mes "["+ getarg(0) +"]";
- mes "I said I don't work with Equipment under lv. 10.";
+ mes "I said I don't work with items that are lower than Level 10.";
close;
}
- if(getequiprefinerycnt(.@part) >= 20) {
+ if (getequiprefinerycnt(.@part) >= 20) { //custom check
mes "["+ getarg(0) +"]";
mes "I can't refine this";
mes "any more. This is as";
@@ -93,7 +98,8 @@ function script refinenew {
set .@refineitemid, getequipid(.@part); // save id of the item
set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count
if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) {
- set .@material,6224;
+ set .@type$,"weapon";
+ set .@material,6224; //Bradium
set .@price,100000;
switch(getequipweaponlv(.@part)) {
case 1: set .@safe,17; break;
@@ -105,69 +111,61 @@ function script refinenew {
mes "Hmm a weapon, is that ok?";
mes "If you want to refine this weapon,";
mes "I will need 1 ^003366Bradium^000000 and 100,000 zeny.";
- mes "Are you sure you want to continue?";
} else {
- set .@material,6223;
+ set .@type$,"armor";
+ set .@material,6223; //Carnium
set .@price,100000;
set .@safe,14;
mes "["+ getarg(0) +"]";
mes "Hmm an armor, is that ok?";
mes "If you want to refine this armor,";
mes "I will need 1 ^003366Carnium^000000 and 100,000 zeny.";
- mes "Are you sure you want to continue?";
}
+ mes "Are you sure you want to continue?";
next;
if(select("Yes:No") == 2){
mes "["+ getarg(0) +"]";
- mes "Well, no challenge is one way...";
- mes "No risk... that could be wise.";
+ mes "Hm... if you mind... never mind...";
close;
}
- if(getarg(1) != 1) {
- if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) {
+ if (getarg(1) != 1) {
+ if (getequippercentrefinery(.@part) < 100) {
mes "["+ getarg(0) +"]";
- mes "This weapon already has been refined serveral times.";
- mes "It could be destroyed if you try more.";
- mes "It won't break 100%, but is has a small chance.";
+ mes "This "+.@type$+" already has been refined serveral times.";
+ mes "It could be destroyed if I try again.";
+ mes "It won't break for sure, but there is has a small chance.";
next;
mes "["+ getarg(0) +"]";
- mes "You could have the upgrade level of the weapon decreased,";
+ mes "You could be ^FF0000lowering the upgrade level^000000 of the "+.@type$+",";
mes "or if it breaks, you will lose ^FF0000any cards^000000 or special properties added to it.";
- } else {
- mes "["+ getarg(0) +"]";
- mes "This armor already has been refined serveral times.";
- mes "It could be destroyed if you try more.";
- mes "It won't break 100%, but is has a small chance.";
next;
mes "["+ getarg(0) +"]";
- mes "You could have the upgrade level of the armor decreased,";
- mes "or if it breaks, you will lose ^FF0000any cards^000000 or special properties added to it.";
- }
- next;
- mes "["+ getarg(0) +"]";
- mes "Do you want me to refine it?";
- mes "I think I gave you enough warnings.";
- next;
- if(select("Yes.:No.") == 2) {
- mes "["+ getarg(0) +"]";
- mes "Well, no challenge is one way..";
- mes "No risk.. that could be wise.";
- close;
+ mes "Do you still want me to refine it?";
+ mes "I think I have given you enough warning.";
+ next;
+ if(select("Yes.:No.") == 2) {
+ mes "["+ getarg(0) +"]";
+ mes "Well, no challenge is one way to go...";
+ mes "No risk... that could be wise.";
+ close;
+ }
}
- if(countitem(.@material) < 1 || Zeny < .@price) {
+ if (countitem(.@material) < 1 || Zeny < .@price) {
mes "["+ getarg(0) +"]";
- mes "Hm, it seems you don't have enough materials or money.";
- mes "Please check it out.";
+ mes "Hm. You don't seem to have enough money or "+getitemname(.@material)+".";
+ mes "Please come back when you have them.";
close;
}
set Zeny,Zeny - .@price;
delitem .@material,1;
- if(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?)
+
+ //custom checks
+ if (getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?)
mes "[" + getarg(0) + "]";
mes "Look here... you don't have any items on...";
close;
}
- if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item
+ if (getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item
mes "[" + getarg(0) + "]";
emotion e_an;
mes "Wait a second...";
@@ -175,6 +173,7 @@ function script refinenew {
mes "You switched the item while I wasn't looking! Get out of here!";
close;
}
+
if (getequippercentrefinery(.@part) > rand(100)) {
mes "Clang! Clang! Clang! Clang!";
successrefitem .@part;
@@ -182,7 +181,7 @@ function script refinenew {
emotion e_no1;
mes "["+ getarg(0) +"]";
mes "Good! Succes!!!";
- mes "I am the best Blacksmith.";
+ mes "I am the best Armsmith.";
close;
} else {
if (rand(100) < 80) {
@@ -195,14 +194,8 @@ function script refinenew {
mes "Ahhh!!!";
next;
mes "["+ getarg(0) +"]";
- mes "Oh my!";
+ mes "Oh my god!";
mes "The upgrade level has dropped...";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
} else {
mes "["+ getarg(0) +"]";
mes "Clang! Clang! Clang!";
@@ -215,17 +208,17 @@ function script refinenew {
mes "["+ getarg(0) +"]";
mes "Oh my! I've failed to refine stuff...";
mes "I didn't mean it!";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
}
+ mes "I could have made a mistake even though I am the best Armsmith ever.";
+ mes "It just wasn't meant to be.";
+ next;
+ mes "["+ getarg(0) +"]";
+ mes "I will do a better job next time! Don't worry!";
+ close;
}
}
// New +11 and above Refining Functions ========================
- if(getequiprefinerycnt(.@part) < .@safe) {
+ if (getequiprefinerycnt(.@part) < .@safe) {
mes "[" + getarg(0) + "]";
mes "I can refine this to the safe limit or a desired number of times. It's your choice.";
next;
@@ -247,7 +240,7 @@ function script refinenew {
mes "I can't refine this item that many times.";
close;
}
- if(.@refinecheck > .@safe) {
+ if (.@refinecheck > .@safe) {
set .@refinecheck,.@refinecheck - .@safe;
mes "[" + getarg(0) + "]";
mes "This will try to refine the equipment " + .@refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?";
@@ -268,14 +261,15 @@ function script refinenew {
mes "[" + getarg(0) + "]";
mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?";
next;
- if(select("Yes","No...") == 2){
+ if(select("Yes:No...") == 2){
mes "[" + getarg(0) + "]";
mes "You said so... So be it.";
close;
}
- if(countitem(.@material) < .@refinecnt || Zeny < .@fullprice) {
+ if (countitem(.@material) < .@refinecnt || Zeny < .@fullprice) {
mes "[" + getarg(0) + "]";
- mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes.";
+ mes "Hm. You don't seem to have enough money or "+getitemname(.@material)+".";
+ mes "Please come back when you have them.";
close;
}
set Zeny,Zeny - .@fullprice;
@@ -309,14 +303,8 @@ function script refinenew {
mes "Ahhh!!!";
next;
mes "["+ getarg(0) +"]";
- mes "Oh my!";
+ mes "Oh my god!";
mes "The upgrade level has dropped...";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
} else {
mes "["+ getarg(0) +"]";
mes "Clang! Clang! Clang!";
@@ -329,13 +317,13 @@ function script refinenew {
mes "["+ getarg(0) +"]";
mes "Oh my! I've failed to refine stuff...";
mes "I didn't mean it!";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
}
+ mes "I could have made a mistake even though I am the best Armsmith ever.";
+ mes "It just wasn't meant to be.";
+ next;
+ mes "["+ getarg(0) +"]";
+ mes "I will do a better job next time! Don't worry!";
+ close;
}
}
emotion e_no1;
@@ -347,8 +335,16 @@ function script refinenew {
// Ori/Elu to Carnium/Bradium Refiners
//============================================================
-- script Austry#ref -1,{
- mes "[Austry]";
+- script Austri#ref -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 "[Austri]";
mes "If you bring me 3";
mes "Oridecon or Elunium";
mes "I can exchange them for";
@@ -366,7 +362,7 @@ function script refinenew {
setarray .@i[0],6090,1,6223; //Purified_Bradium -> Carnium
break;
case 4:
- mes "[Austry]";
+ mes "[Austri]";
mes "Hmm...";
close;
}
@@ -374,26 +370,26 @@ function script refinenew {
delitem .@i[0],.@i[1];
set Zeny, Zeny - 50000;
getitem .@i[2],1;
- mes "[Austry]";
+ mes "[Austri]";
if (.@i[0] == 6090) {
- mes "Refining with Purified Bradium";
- mes "is a little expensive. I can";
- mes "trade it for some Carnium.";
+ mes "Refining with Refined Bradium";
+ mes "can be a little expensive.";
+ mes "I can exchange it for some Carnium.";
} else
- mes "Ok! Here is your "+getitemname(.@i[2])+".";
+ mes "Ok! Here's your "+getitemname(.@i[2])+".";
mes "Take it and use it well.";
close;
}
- mes "[Austry]";
+ mes "[Austri]";
mes "You better not be trying";
mes "to cheat me because you";
- mes "don't have enough zeny";
+ mes "don't have enough money";
mes "or "+getitemname(.@i[0])+".";
close;
}
-prt_in,85,71,5 duplicate(Austry#ref) Austry#prt 826
-payon_in01,14,125,5 duplicate(Austry#ref) Austry#pay 826
-morocc_in,60,38,5 duplicate(Austry#ref) Austry#moc 826
+prt_in,85,71,5 duplicate(Austri#ref) Austri#prt 826
+payon_in01,14,125,5 duplicate(Austri#ref) Austri#pay 826
+morocc_in,60,38,5 duplicate(Austri#ref) Austri#moc 826
// Malangdo Refiner
//============================================================
diff --git a/npc/re/merchants/renters.txt b/npc/re/merchants/renters.txt
index e4f1a02c7..c721af536 100644
--- a/npc/re/merchants/renters.txt
+++ b/npc/re/merchants/renters.txt
@@ -1,16 +1,18 @@
//===== Hercules Script ======================================
//= Renters
-//===== By: ==================================================
+//===== By: ==================================================
//= Hercules Dev Team
-//===== Current Version: =====================================
+//===== Current Version: =====================================
//= 2.1
-//===== Description: =========================================
+//===== Description: =========================================
+//= [Official Conversion]
//= Renewal-specific breeder NPCs.
-//===== Additional Comments: =================================
+//===== Additional Comments: =================================
//= 2.1 Moved some renters to a separate renewal file. [Daegaladh]
-//============================================================
+//= 2.2 Updated to match the official scripts. [Euphy]
+//============================================================
-// Dragon Breeder on the Rune Knight job change map, couldn't find NPC on iRO.
+// Dragon Breeder
//============================================================
job3_rune01,88,62,5 script Dragon Breeder 105,{
mes "[Dragon Breeder]";
@@ -146,21 +148,35 @@ prontera,125,208,5 script Peco Peco Remover 105,{
// Magic Gear Renter
//============================================================
-prontera,163,178,3 script Magic Gear Master 105,{
+- script ::mgm -1,{
mes "[Magic Gear Master]";
if (Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic) {
- mes "Welcome. Would you like to rent a Magic Gear?";
+ mes "Welcome, Mechanic.";
+ mes "Would you like to rent a Pushcart or";
+ mes "ride a Magic Gear?";
next;
- switch(select("Yes:No")) {
+ switch(select("Rent a Pushcart:Ride a Magic Gear:Cancel")) {
case 1:
- if (!getskilllv("NC_MADOLICENCE")) {
+ if (checkcart()) {
+ mes "[Magic Gear Master]";
+ mes "I'm sorry, but you already";
+ mes "have a Pushcart.";
+ close;
+ }
+ setcart;
+ mes "[Magic Gear Master]";
+ mes "There you go!";
+ close;
+ case 2:
+ if (checkmadogear()) {
mes "[Magic Gear Master]";
- mes "Please learn how to use a Magic Gear first.";
+ mes "I'm sorry, but you're already";
+ mes "riding a Magic Gear.";
close;
}
- else if (checkmadogear()) {
+ else if (!getskilllv("NC_MADOLICENCE")) {
mes "[Magic Gear Master]";
- mes "You already have a Magic Gear.";
+ mes "Please learn the skill to get the Magic Gear License first.";
close;
}
else if(ismounting()) {
@@ -169,10 +185,10 @@ prontera,163,178,3 script Magic Gear Master 105,{
close;
}
setmadogear;
- close;
- case 2:
mes "[Magic Gear Master]";
- mes "I see. Then have a great day.";
+ mes "Have fun, and please come again!";
+ close;
+ case 3:
close;
}
}
@@ -180,3 +196,13 @@ prontera,163,178,3 script Magic Gear Master 105,{
mes "Magic Gears are only available for Mechanics.";
close;
}
+prontera,163,178,3 duplicate(mgm) Magic Gear Master#prt 105
+geffen,103,55,5 duplicate(mgm) Magic Gear Master#gef 105
+payon,166,106,5 duplicate(mgm) Magic Gear Master#pay 105
+aldebaran,133,112,5 duplicate(mgm) Magic Gear Master#alde 105
+yuno,167,187,3 duplicate(mgm) Magic Gear Master#yuno 105
+rachel,106,134,5 duplicate(mgm) Magic Gear Master#ra 105
+dicastes01,187,207,3 duplicate(mgm) Magic Gear Master#dic 105
+manuk,273,212,5 duplicate(mgm) Magic Gear Master#man 105
+splendide,180,174,5 duplicate(mgm) Magic Gear Master#spl 105
+mid_camp,242,243,3 duplicate(mgm) Magic Gear Master#mid 105
diff --git a/npc/re/merchants/shops.txt b/npc/re/merchants/shops.txt
index b27e5cc1d..42fc5bd03 100644
--- a/npc/re/merchants/shops.txt
+++ b/npc/re/merchants/shops.txt
@@ -1,22 +1,21 @@
//===== Hercules Script ======================================
//= Shops
-//===== By: ==================================================
+//===== By: ==================================================
//= Hercules Dev Team
-//===== Current Version: =====================================
-//= 1.5
-//===== Compatible With: =====================================
-//= Hercules
-//===== Description: =========================================
+//===== Current Version: =====================================
+//= 1.7
+//===== Description: =========================================
//= Renewal-specific town shop NPCs.
-//===== Additional Comments: =================================
+//===== Additional Comments: =================================
//= 1.0 Moved some merchants to a separate renewal file. [Kenpachi]
//= 1.1 Added Dicastes merchants. [Joseph]
//= 1.2 Moved more shops to Renewal file. [Euphy]
//= 1.3 Added Malangdo tool dealer. [Euphy]
//= 1.4 Moved Izlude merchants. [Streusel]
//= 1.5 Added Dewata merchants. [Lemongrass]
-//= 1.6 Added Mora and Porta Malaya merchants. [Euphy]
-//============================================================
+//= 1.6 Added Mora and Port Malaya merchants.
+//= 1.7 Added Izlude duplicates. [Euphy]
+//============================================================
//=======================================================
// Comodo
@@ -46,11 +45,23 @@ dicastes01,207,200,6 shop Points Merchant#dic 66,6360:-1,6361:-1,6362:-1,6363:-1
//=======================================================
// Izlude
//=======================================================
-izlude,160,186,0 shop Butcher#iz 54,517:-1
izlude,124,165,4 shop Fruit Gardener#iz 53,512:-1,513:-1,515:-1,516:-1
-izlude,128,158,6 shop Vendor from Milk Ranch#i 90,519:-1
-izlude_in,72,98,3 shop Pet Groomer#iz 124,537:-1,643:-1,10013:-1,10014:-1,554:-1,6113:-1,6114:-1,6115:-1
-izlude_in,57,109,0 shop Tool Dealer#iz 47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,1750:-1
+izlude_a,124,165,4 duplicate(Fruit Gardener#iz) Fruit Gardener#iz_a 53
+izlude_b,124,165,4 duplicate(Fruit Gardener#iz) Fruit Gardener#iz_b 53
+izlude_c,124,165,4 duplicate(Fruit Gardener#iz) Fruit Gardener#iz_c 53
+izlude_d,124,165,4 duplicate(Fruit Gardener#iz) Fruit Gardener#iz_d 53
+izlude,160,186,0 shop Butcher#iz 54,517:-1
+izlude_a,160,186,0 duplicate(Butcher#iz) Butcher#iz_a 54
+izlude_b,160,186,0 duplicate(Butcher#iz) Butcher#iz_b 54
+izlude_c,160,186,0 duplicate(Butcher#iz) Butcher#iz_c 54
+izlude_d,160,186,0 duplicate(Butcher#iz) Butcher#iz_d 54
+izlude,128,158,7 shop Vendor from Milk Ranch#i 90,519:-1
+izlude_a,128,158,7 duplicate(Vendor from Milk Ranch#i) Vendor from Milk Ranch#a 90
+izlude_b,128,158,7 duplicate(Vendor from Milk Ranch#i) Vendor from Milk Ranch#b 90
+izlude_c,128,158,7 duplicate(Vendor from Milk Ranch#i) Vendor from Milk Ranch#c 90
+izlude_d,128,158,7 duplicate(Vendor from Milk Ranch#i) Vendor from Milk Ranch#d 90
+izlude_in,72,98,4 shop Pet Groomer#iz 124,537:-1,643:-1,10013:-1,10014:-1,554:-1,6113:-1,6114:-1,6115:-1
+izlude_in,57,110,0 shop Tool Dealer#iz 47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,1750:-1
izlude_in,72,110,3 shop Trading Merchant#iz 900,13200:-1,13201:-1,13202:-1,13150:-1,13102:-1,13151:-1,13154:-1,13155:-1,13163:-1,13165:-1,13168:-1
//=======================================================
@@ -73,7 +84,7 @@ malangdo,232,163,5 shop Tool Dealer Myo 560,611:-1,1750:-1,645:-1,656:-1,601:-1,
//=======================================================
// Mora
//=======================================================
-mora,100,118,4 shop Tool Dealer#mora 517,11522:-1,11523:-1,11524:-1,602:-1,601:-1,611:-1,1773:-1,1774:-1,713:-1
+mora,100,118,4 shop Tool Dealer#mora 517,11522:-1,11523:-1,11524:-1,602:-1,601:-1,611:-1,1773:-1,1774:-1
mora,138,110,4 shop Mora Chef 518,11519:-1
//=======================================================
diff --git a/npc/re/merchants/ticket_refiner.txt b/npc/re/merchants/ticket_refiner.txt
index 7246528a4..ef8b29135 100644
--- a/npc/re/merchants/ticket_refiner.txt
+++ b/npc/re/merchants/ticket_refiner.txt
@@ -1,11 +1,9 @@
-//===== rAthena Script =======================================
+//===== Hercules Script ======================================
//= Ticket Refiner
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
//===== Description: =========================================
//= [Official Conversion]
//= Refiner that uses +5~9/+11 refine tickets to refine