diff options
Diffstat (limited to 'npc/re/merchants')
-rw-r--r-- | npc/re/merchants/3rd_trader.txt | 266 | ||||
-rw-r--r-- | npc/re/merchants/advanced_refiner.txt | 196 | ||||
-rw-r--r-- | npc/re/merchants/alchemist.txt | 117 | ||||
-rw-r--r-- | npc/re/merchants/ammo_boxes.txt | 19 | ||||
-rw-r--r-- | npc/re/merchants/ammo_dealer.txt | 19 | ||||
-rw-r--r-- | npc/re/merchants/blessed_refiner.txt | 4 | ||||
-rw-r--r-- | npc/re/merchants/card_separation.txt | 231 | ||||
-rw-r--r-- | npc/re/merchants/catalog.txt | 6 | ||||
-rw-r--r-- | npc/re/merchants/coin_exchange.txt | 2 | ||||
-rw-r--r-- | npc/re/merchants/diamond.txt | 16 | ||||
-rw-r--r-- | npc/re/merchants/enchan_mal.txt | 12 | ||||
-rw-r--r-- | npc/re/merchants/enchan_mora.txt | 25 | ||||
-rw-r--r-- | npc/re/merchants/enchan_upg.txt | 264 | ||||
-rw-r--r-- | npc/re/merchants/flute.txt | 19 | ||||
-rw-r--r-- | npc/re/merchants/hd_refiner.txt | 4 | ||||
-rw-r--r-- | npc/re/merchants/inn.txt | 4 | ||||
-rw-r--r-- | npc/re/merchants/quivers.txt | 15 | ||||
-rw-r--r-- | npc/re/merchants/refine.txt | 202 | ||||
-rw-r--r-- | npc/re/merchants/renters.txt | 58 | ||||
-rw-r--r-- | npc/re/merchants/shops.txt | 39 | ||||
-rw-r--r-- | npc/re/merchants/ticket_refiner.txt | 4 |
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 |