From 28a9fec0916db3d92629ae6e6cd62b5777b09e73 Mon Sep 17 00:00:00 2001 From: j-tkay Date: Thu, 4 Jul 2013 05:15:48 +0800 Subject: Merged/Updated/Added scripts from rAthena. - Fixed Bug #7400 Signed-off-by: j-tkay --- npc/re/merchants/blessed_refiner.txt | 173 ++++++++ npc/re/merchants/coin_exchange.txt | 352 +++++++++++++++- npc/re/merchants/enchan_mora.txt | 751 ++++------------------------------- npc/re/merchants/hd_refiner.txt | 308 ++++++++++++++ npc/re/merchants/refine.txt | 420 +++++++++++--------- npc/re/merchants/ticket_refiner.txt | 162 ++++++++ 6 files changed, 1308 insertions(+), 858 deletions(-) create mode 100644 npc/re/merchants/blessed_refiner.txt create mode 100644 npc/re/merchants/hd_refiner.txt create mode 100644 npc/re/merchants/ticket_refiner.txt (limited to 'npc/re/merchants') diff --git a/npc/re/merchants/blessed_refiner.txt b/npc/re/merchants/blessed_refiner.txt new file mode 100644 index 000000000..a25701774 --- /dev/null +++ b/npc/re/merchants/blessed_refiner.txt @@ -0,0 +1,173 @@ +//===== rAthena Script ======================================= +//= Blessed Refiner +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= [Official Conversion] +//= Refiners that use Blessed ores to refine equipment. +//= Upon failure, the equipment is not destroyed. The success +//= rate is identical to that for Enriched ores. +//= - "Blacksmith Dister" only refines from +6~12. +//= NOTE: This NPC is currently disabled on official servers. +//===== Additional Comments: ================================= +//= 1.0 First version. [Euphy] +//============================================================ + +- script ::BlacksmithDister -1,{ + disable_items; + mes "[Blacksmith Dister]"; + mes "In this highly competitive society, we must be different in order to survive!"; + mes "I only refine equipment at the +6 ~ 12 levels."; + next; + mes "[Blacksmith Dister]"; + mes "I will need ^ff9999Blessed Weapon Ore^000000 for weapons, and ^ff9999Blessed Armor Ore^000000 for armors."; + mes "Failed refines ^FF0000will not break or reduce the refine level^000000."; + next; + mes "[Blacksmith Dister]"; + mes "How about it? Do you want 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) + set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Unequipped]")+":"; + set .@part, select(.@menu$); + if (!getequipisequiped(.@part)) { + mes "[Blacksmith Dister]"; + switch(.@part) { + case 1: + mes "I'm a blacksmith, not a hairstylist."; + break; + case 2: + mes "With my hammer, I will make you a star of the sky."; + break; + case 3: + case 4: + mes "Making artificial hands is not my specialty."; + break; + case 5: + mes "Bring out the item so I can refine it!"; + break; + case 6: + mes "Where is this weird smell coming from?"; + break; + case 7: + case 8: + mes "Where is the accessory?"; + break; + case 9: + mes "What do you want me to refine?"; + break; + case 10: + mes "Huh? What do you want me to do?"; + break; + } + close; + } + if (!getequipisenableref(.@part)) { + mes "[Blacksmith Dister]"; + mes "This item cannot be refined."; + close; + } + set .@equip_refine, getequiprefinerycnt(.@part); + if (.@equip_refine < 6 || .@equip_refine > 12) { + mes "[Blacksmith Dister]"; + mes "This equipment has refined to "+.@equip_refine+". I only handle items with refine levels from +6 to +12!"; + close; + } + set .@equip_lv, getequipweaponlv(.@part); + switch(.@equip_lv) { + default: + case 0: + set .@price,20000; + set .@material,6439; //Unbreakable_Def + set .@type$,"Armor"; + break; + case 1: + set .@price,1000; + set .@material,6438; //Unbreakable_Weap + set .@type$,"Weapon"; + break; + case 2: + set .@price,2000; + set .@material,6438; //Unbreakable_Weap + set .@type$,"Weapon"; + break; + case 3: + set .@price,20000; + set .@material,6438; //Unbreakable_Weap + set .@type$,"Weapon"; + break; + case 4: + set .@price,40000; + set .@material,6438; //Unbreakable_Weap + set .@type$,"Weapon"; + break; + } + set .@ore$,"^ff9999Blessed "+.@type$+" Ore^000000"; + mes "[Blacksmith Dister]"; + mes "This "+.@type$+" has been refined to "+.@equip_refine+". To refine it, I need "+.@ore$+" and a "+(.@price/1000)+",000 zeny refining fee."; + mes "Do you want to proceed?"; + next; + if(select("Yes:No") == 2) { + mes "[Blacksmith Dister]"; + mes "I am busy, don't joke with me!"; + close; + } + if (getequippercentrefinery(.@part) < 100) { + mes "[Blacksmith Dister]"; + mes "This "+.@type$+" has been refined many times. Although it will not disappear upon failure, the "+.@ore$+" will disappear!"; + next; + mes "[Blacksmith Dister]"; + mes "Of course, the refining fee will not be returned! Do you want to continue?"; + next; + if(select("Yes:No") == 2) { + mes "[Blacksmith Dister]"; + mes "Good. I'd be sad if it failed, too."; + close; + } + } + if (countitem(.@material) == 0 || Zeny < .@price) { + mes "[Blacksmith Dister]"; + mes "Materials insufficient."; + mes "To refine "+((.@equip_lv)?"a level "+.@equip_lv+" weapon":"armor")+", I need "+.@ore$+" and a "+(.@price/1000)+",000 zeny refining fee."; + close; + } + delitem .@material,1; + set Zeny, Zeny-.@price; + mes "[Blacksmith Dister]"; + mes "Tac! Tac! Tac!"; + if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) { + specialeffect EF_BLESSING; + successrefitem .@part; + next; + mes "[Blacksmith Dister]"; + mes "Hahahahahaha!!!"; + next; + mes "[Blacksmith Dister]"; + mes "Refine was a huge success~ Hahaha!"; + close; + } + specialeffect EF_CURSEATTACK; + specialeffect2 EF_SUI_EXPLOSION; + next; + emotion (!rand(5))?e_ag:e_omg; + mes "[Blacksmith Dister]"; + mes "Oh my goodness!!!!"; + next; + mes "[Blacksmith Dister]"; + mes "Oh! Although it was blessed by "+.@ore$+" to retain the equipment..."; + next; + mes "[Blacksmith Dister]"; + mes "My mood is worse when I fail!!"; + close; +} +prt_in,52,56,3 duplicate(BlacksmithDister) Blacksmith Dister#prt 826 +payon,148,172,3 duplicate(BlacksmithDister) Blacksmith Dister#pay 826 +alberta_in,20,56,3 duplicate(BlacksmithDister) Blacksmith Dister#alb 826 +yuno_in01,175,18,3 duplicate(BlacksmithDister) Blacksmith Dister#yuno 826 +ein_in01,26,82,3 duplicate(BlacksmithDister) Blacksmith Dister#ein 826 +lhz_in02,280,15,3 duplicate(BlacksmithDister) Blacksmith Dister#lhz 826 diff --git a/npc/re/merchants/coin_exchange.txt b/npc/re/merchants/coin_exchange.txt index 7ee6a53af..a78491ffc 100644 --- a/npc/re/merchants/coin_exchange.txt +++ b/npc/re/merchants/coin_exchange.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Hercules Dev Team //===== Current Version: ===================================== -//= 1.1 +//= 1.2 //===== Compatible With: ===================================== //= Hercules //===== Description: ========================================= @@ -12,6 +12,7 @@ //===== Additional Comments: ================================= //= 1.0 First version. [Euphy/Lemongrass] //= 1.1 Added remaining Malangdo traders. [Euphy/Lemongrass] +//= 1.2 Added Eclage traders (not fully complete). [Euphy] //============================================================ // Malangdo @@ -434,7 +435,7 @@ function script F_mal_coin { mes "Ahaaa~"; mes "If you want to buy this stuff,"; mes "you can talk to me"; - mes "when you grow up little more."; + mes "when you grow up a little more."; mes "This stuff is too expensive"; mes "for a child~"; close; @@ -825,3 +826,350 @@ malangdo,150,135,5 script Roving Merchant 495,{ next; } } + +// Eclage +//============================================================ +ecl_in01,66,95,2 script Armor Merchant Naphara 436,{ + mes "[Armor Merchant]"; + mes "Hello, this is Naphara's store, a place of high class goods."; + mes "What would you need?"; + next; + set .@i, select("Str Glove:Int Glove:Agi Glove:Vit Glove:Dex Glove:Luk Glove"); + mes "[Armor Merchant]"; + switch(.@i) { + case 1: // Str Glove + mes "^3131FFStr Glove^000000"; + mes "^3131FFMHP + 100, MSP + 20^000000"; + mes "^3131FFATK+1 increases for every STR+10^000000"; + mes "^3131FFATK +1% added above STR 110^000000"; + set .@item,2917; //Str_Glove + break; + case 2: + mes "^3131FFInt Glove^000000"; + mes "^3131FFMHP + 100, MSP + 20^000000"; + mes "^3131FFMATK+1 increases for every INT+10^000000"; + mes "^3131FFMATK +1% added above INT 110^000000"; + set .@item,2918; //Int_Glove + break; + case 3: + mes "^3131FFAgi Glove^000000"; + mes "^3131FFMHP + 100, MSP + 20^000000"; + mes "^3131FFFLEE+1 increases for every AGI+10^000000"; + mes "^3131FFComplete Flee +1 added above AGI 110^000000"; + set .@item,2919; //Agi_Glove + break; + case 4: + mes "^3131FFVit Glove^000000"; + mes "^3131FFMHP + 100, MSP + 20^000000"; + mes "^3131FFMHP+50 for every VIT+10^000000"; + mes "^3131FFMHP+1% added above VIT 110^000000"; + set .@item,2920; //Vit_Glove + break; + case 5: + mes "^3131FFDex Glove^000000"; + mes "^3131FFMHP + 100, MSP + 20^000000"; + mes "^3131FFHIT+1 increases for every DEX+10^000000"; + mes "^3131FFRanged attack power +1% added above DEX 110^000000"; + set .@item,2921; //Dex_Glove + break; + case 6: + mes "^3131FFLuk Glove^000000"; + mes "^3131FFMHP + 100, MSP + 20^000000"; + mes "^3131FFCRI+1 increases for every LUK+10^000000"; + mes "^3131FFCritical damage +1% added above LUK 110^000000"; + set .@item,2922; //Luk_Glove + break; + } + mes "^3131FFRequired Level: 100^000000"; + mes "^3131FFSlot: 0^000000"; + mes "^3131FFWeight: 10^000000"; + mes "are the characteristic options."; + next; + mes "[Armor Merchant]"; + mes "It costs 10 Splendide Coins."; + mes "Would you like to buy it?"; + next; + if(select("Buy it.:Don't buy it.") == 2) + close; + if (countitem(6081) < 10) { + mes "[Armor Merchant]"; + mes "It seems like you don't have enough coins."; + close; + } + mes "[Armor Merchant]"; + mes "Here you go!"; //custom + delitem 6081,10; //Splendide_Coin + getitem .@item,1; + close; +} + +ecl_in01,64,97,4 script Slot Expert Nattuer#ecl 436,{ + mes "[Slot Expert]"; + mes "I am Slot Expert Nattuer."; + mes "If you bring me an item from my little brother Naphara along with 5 Splendide Coins, I will open up one Slot for you."; + next; + if(select("Activate a Slot.:Forget it.") == 2) + close; + mes "[Slot Expert]"; + mes "Slot activation is an extremely difficult procedure that can fail even with heightened care and the use of a magnifying lens."; + next; + mes "[Slot Expert]"; + mes "Of course, if your heart were as big as that flower-filled land, you wouldn't mind. Right? Should I go for it?"; + next; + if(select("Continue.:Forget it.") == 2) + close; + mes "[Slot Expert]"; + mes "Which item would you like to activate with a Slot?"; + next; + setarray .@noslots[0],2917,2918,2919,2920,2921,2922; + setarray .@slotted[0],2923,2924,2925,2926,2927,2928; + set .@i, select("Str Glove:Int Glove:Ag Glove:Vit Glove:Dex Glove:Luk Glove")-1; + set .@item, .@noslots[.@i]; + set .@new_item, .@slotted[.@i]; + mes "[Slot Expert]"; + mes "Let's confirm for the last time. Is the one you want "+getitemname(.@item)+"?"; + next; + if(select("Yes:No") == 2) { + mes "[Slot Expert]"; + mes "Why don't you talk to me when you know for sure."; + close; + } + if (countitem(.@item) == 0) { + mes "[Slot Expert]"; + mes "You don't have that item. Why don't you talk to me when you know for sure."; + close; + } + if (countitem(6081) < 5) { + mes "[Slot Expert]"; + mes "You don't have enough coins. Why don't you talk to me when you know for sure."; //custom + close; + } + delitem 6081,5; //Splendide_Coin + delitem .@item,1; + //custom to the end + if (rand(100) < 5) { + mes "[Slot Expert]"; + mes "Oh no, it failed! I'm sorry, but I warned you this could happen. Better luck next time."; + close; + } + mes "[Slot Expert]"; + mes "Success! I've activated the slot."; + getitem .@new_item,1; + close; +} + +ecl_in01,67,39,4 script Replication Expert Palt 445,{ + emotion e_lv; + mes "[Paltu]"; + mes "Woohoo- Greetings. What are you looking for? Lots of goods here."; + next; + switch(select("No thanks.:Replication?:I know you got lots up your sleeve!")) { + case 1: + emotion e_an; + mes "[Paltu]"; + mes "Really? Hmm?"; + close; + case 2: + mes "[Paltu]"; + mes "One can say that there's no one better in Eclage than I at utilizing magic resistance."; + next; + mes "[Paltu]"; + mes "I'll give you a good price whatever it is. Just trust me."; + next; + select("Could you do something for me?"); + emotion e_no1; + mes "[Paltu]"; + mes "Hey, I like your attitude."; + next; + mes "[Paltu]"; + mes "Ah- you know the hat you're wearing?"; + next; + emotion e_what; + mes "[Paltu]"; + mes "Don't you have any of those hats lying around in storage that are solid but too ugly to wear? You do, right?"; + next; + select("........."); + emotion e_dots,1; + emotion e_heh; + mes "[Paltu]"; + mes "See! I knew it. I knew it from the first minute."; + next; + mes "[Paltu]"; + mes "If you bring me ^ff0000 50 Splendide Coins and the ingredients^000000, I'll make you a new hat in the same shape but worn as a ^ff0000Costume^000000."; + next; + mes "[Paltu]"; + mes "Hmm, what was it...?"; + mes "I think you adventurers call them ^0571B0Costumes^000000? right?"; + next; + select("Yes~ What do you need?"); + mes "[Paltu]"; + mes "I need 1 ^0571B0hat to replicate^000000 and"; + mes "I need ^E1281E 4 Crystal Mirrors^000000 for magic resistance, ^E1281E 1 Fairy Magic Powder^000000 as the catalyst, and ^E1281E Emerald, Ruby, Sapphire, Topaz, and Zircon, 10 of each^000000, to be used for amplifying the magic power."; + next; + emotion e_no; + mes "[Paltu]"; + mes "There's quite a lot of ingredients, right? Well, I can't do anything about that. Dealing with magic power is not a joke."; + next; + select("Which hats can be replicated?"); + mes "[Paltu]"; + mes "Oh! You're pretty sharp!"; + mes "Almost forgot the most important thing."; + next; + mes "[Paltu]"; + mes "Hats that I can replicate are:"; + mes "^0571B0Frog Hat, Romantic Flower, Magestic Goat, Blush, Valkyrie Helm, Deviruchi Hat, Assassin Mask, Elven Ears, Hahoe Mask, and Boys Cap^000000 a total of 10 types."; + next; + mes "[Paltu]"; + mes "What do you think? I'll make it happen as long as I have the ingredients and the compensation."; + next; + if(select("I'll do it later.:Show me what you got!") == 1) { + emotion e_dots; + mes "[Paltu]"; + mes "What? Are you kidding me? Please tell me you are!"; + close; + } + break; + case 3: + break; + } + mes "[Paltu]"; + mes "Oh wow."; + mes "You made the right call. I thought I was going to starve to death because the Laphines have no interest in pretty hats."; + next; + mes "[Paltu]"; + mes "I'll make it a great deal for you. You really should know I'm giving you a good deal here."; + next; + mes "[Paltu]"; + mes "Is there something you had in mind? Why don't you take a look?"; + next; + setarray .@items[0], + 5447, //Frog_Cap + 2269, //Centimental_Flower + 2256, //Magestic_Goat + 5040, //Blush + 5171, //Valkyrie_Helm + 5038, //Deviruchi_Cap + 5096, //Assassin_Mask_ + 2286, //Elven_Ears + 5176, //Hahoe_Mask + 5016; //Boy's_Cap + setarray .@costumes[0], + 19548, //C_Frog_Cap + 19552, //C_Centimental_Flower + 19549, //C_Magestic_Goat + 19550, //C_Blush + 19546, //C_Valkyrie_Helm + 19547, //C_Deviruchi_Cap + 19553, //C_Assassin_Mask_ + 19551, //C_Elven_Ears + 0, //-- not implemented? -- + 19545; //C_Boys_Cap + if (countitem(6081) >= 50 && countitem(747) >= 4 && countitem(6395) >= 1 && countitem(721) >= 10 && countitem(723) >= 10 && countitem(726) >= 10 && countitem(728) >= 10 && countitem(729) >= 10) + set .@item_check,1; + for(set .@i,0; .@i,,<4-x enchants possible>; // Enchant types: // [1]ATK [2]CRIT [3]EVA [4]Healer [5]Spell 1 [6]Assist 1 [7]Assist 2 [8]STR [9]Range [10]Physical [11]Spell 2 @@ -1803,294 +1479,17 @@ function script F_Mora_Enchant { delitem 6380,5; //Mora_Coin delitem getarg(0),1; set .@i, rand(1,4568); - if (.@i <= 11) setarray .@enchants[1],4766,4720,4700; //Atk2 Dexterity1 Strength1 - else if (.@i <= 22) setarray .@enchants[1],4766,4720,4701; //Atk2 Dexterity1 Strength2 - else if (.@i <= 33) setarray .@enchants[1],4766,4720,4730; //Atk2 Dexterity1 Agility1 - else if (.@i <= 44) setarray .@enchants[1],4766,4720,4731; //Atk2 Dexterity1 Agility2 - else if (.@i <= 55) setarray .@enchants[1],4766,4720,4740; //Atk2 Dexterity1 Vitality1 - else if (.@i <= 66) setarray .@enchants[1],4766,4720,4741; //Atk2 Dexterity1 Vitality2 - else if (.@i <= 77) setarray .@enchants[1],4766,4721,4700; //Atk2 Dexterity2 Strength1 - else if (.@i <= 88) setarray .@enchants[1],4766,4721,4701; //Atk2 Dexterity2 Strength2 - else if (.@i <= 99) setarray .@enchants[1],4766,4721,4730; //Atk2 Dexterity2 Agility1 - else if (.@i <= 110) setarray .@enchants[1],4766,4721,4731; //Atk2 Dexterity2 Agility2 - else if (.@i <= 121) setarray .@enchants[1],4766,4721,4740; //Atk2 Dexterity2 Vitality1 - else if (.@i <= 132) setarray .@enchants[1],4766,4721,4741; //Atk2 Dexterity2 Vitality2 - else if (.@i <= 143) setarray .@enchants[1],4766,4710,4700; //Atk2 Inteligence1 Strength1 - else if (.@i <= 154) setarray .@enchants[1],4766,4710,4701; //Atk2 Inteligence1 Strength2 - else if (.@i <= 165) setarray .@enchants[1],4766,4710,4730; //Atk2 Inteligence1 Agility1 - else if (.@i <= 176) setarray .@enchants[1],4766,4710,4731; //Atk2 Inteligence1 Agility2 - else if (.@i <= 187) setarray .@enchants[1],4766,4710,4740; //Atk2 Inteligence1 Vitality1 - else if (.@i <= 198) setarray .@enchants[1],4766,4710,4741; //Atk2 Inteligence1 Vitality2 - else if (.@i <= 209) setarray .@enchants[1],4766,4711,4700; //Atk2 Inteligence2 Strength1 - else if (.@i <= 220) setarray .@enchants[1],4766,4711,4701; //Atk2 Inteligence2 Strength2 - else if (.@i <= 231) setarray .@enchants[1],4766,4711,4730; //Atk2 Inteligence2 Agility1 - else if (.@i <= 242) setarray .@enchants[1],4766,4711,4731; //Atk2 Inteligence2 Agility2 - else if (.@i <= 253) setarray .@enchants[1],4766,4711,4740; //Atk2 Inteligence2 Vitality1 - else if (.@i <= 264) setarray .@enchants[1],4766,4711,4741; //Atk2 Inteligence2 Vitality2 - else if (.@i <= 275) setarray .@enchants[1],4766,4750,4700; //Atk2 Luck1 Strength1 - else if (.@i <= 286) setarray .@enchants[1],4766,4750,4701; //Atk2 Luck1 Strength2 - else if (.@i <= 297) setarray .@enchants[1],4766,4750,4730; //Atk2 Luck1 Agility1 - else if (.@i <= 308) setarray .@enchants[1],4766,4750,4731; //Atk2 Luck1 Agility2 - else if (.@i <= 319) setarray .@enchants[1],4766,4750,4740; //Atk2 Luck1 Vitality1 - else if (.@i <= 330) setarray .@enchants[1],4766,4750,4741; //Atk2 Luck1 Vitality2 - else if (.@i <= 341) setarray .@enchants[1],4766,4751,4700; //Atk2 Luck2 Strength1 - else if (.@i <= 352) setarray .@enchants[1],4766,4751,4701; //Atk2 Luck2 Strength2 - else if (.@i <= 363) setarray .@enchants[1],4766,4751,4730; //Atk2 Luck2 Agility1 - else if (.@i <= 374) setarray .@enchants[1],4766,4751,4731; //Atk2 Luck2 Agility2 - else if (.@i <= 385) setarray .@enchants[1],4766,4751,4740; //Atk2 Luck2 Vitality1 - else if (.@i <= 396) setarray .@enchants[1],4766,4751,4741; //Atk2 Luck2 Vitality2 - else if (.@i <= 407) setarray .@enchants[1],4767,4720,4700; //Atk3 Dexterity1 Strength1 - else if (.@i <= 418) setarray .@enchants[1],4767,4720,4701; //Atk3 Dexterity1 Strength2 - else if (.@i <= 429) setarray .@enchants[1],4767,4720,4730; //Atk3 Dexterity1 Agility1 - else if (.@i <= 440) setarray .@enchants[1],4767,4720,4731; //Atk3 Dexterity1 Agility2 - else if (.@i <= 451) setarray .@enchants[1],4767,4720,4740; //Atk3 Dexterity1 Vitality1 - else if (.@i <= 462) setarray .@enchants[1],4767,4720,4741; //Atk3 Dexterity1 Vitality2 - else if (.@i <= 473) setarray .@enchants[1],4767,4721,4700; //Atk3 Dexterity2 Strength1 - else if (.@i <= 484) setarray .@enchants[1],4767,4721,4701; //Atk3 Dexterity2 Strength2 - else if (.@i <= 495) setarray .@enchants[1],4767,4721,4730; //Atk3 Dexterity2 Agility1 - else if (.@i <= 506) setarray .@enchants[1],4767,4721,4731; //Atk3 Dexterity2 Agility2 - else if (.@i <= 517) setarray .@enchants[1],4767,4721,4740; //Atk3 Dexterity2 Vitality1 - else if (.@i <= 528) setarray .@enchants[1],4767,4721,4741; //Atk3 Dexterity2 Vitality2 - else if (.@i <= 539) setarray .@enchants[1],4767,4710,4700; //Atk3 Inteligence1 Strength1 - else if (.@i <= 550) setarray .@enchants[1],4767,4710,4701; //Atk3 Inteligence1 Strength2 - else if (.@i <= 561) setarray .@enchants[1],4767,4710,4730; //Atk3 Inteligence1 Agility1 - else if (.@i <= 572) setarray .@enchants[1],4767,4710,4731; //Atk3 Inteligence1 Agility2 - else if (.@i <= 583) setarray .@enchants[1],4767,4710,4740; //Atk3 Inteligence1 Vitality1 - else if (.@i <= 594) setarray .@enchants[1],4767,4710,4741; //Atk3 Inteligence1 Vitality2 - else if (.@i <= 605) setarray .@enchants[1],4767,4711,4700; //Atk3 Inteligence2 Strength1 - else if (.@i <= 616) setarray .@enchants[1],4767,4711,4701; //Atk3 Inteligence2 Strength2 - else if (.@i <= 627) setarray .@enchants[1],4767,4711,4730; //Atk3 Inteligence2 Agility1 - else if (.@i <= 638) setarray .@enchants[1],4767,4711,4731; //Atk3 Inteligence2 Agility2 - else if (.@i <= 649) setarray .@enchants[1],4767,4711,4740; //Atk3 Inteligence2 Vitality1 - else if (.@i <= 660) setarray .@enchants[1],4767,4711,4741; //Atk3 Inteligence2 Vitality2 - else if (.@i <= 671) setarray .@enchants[1],4767,4750,4700; //Atk3 Luck1 Strength1 - else if (.@i <= 682) setarray .@enchants[1],4767,4750,4701; //Atk3 Luck1 Strength2 - else if (.@i <= 693) setarray .@enchants[1],4767,4750,4730; //Atk3 Luck1 Agility1 - else if (.@i <= 704) setarray .@enchants[1],4767,4750,4731; //Atk3 Luck1 Agility2 - else if (.@i <= 715) setarray .@enchants[1],4767,4750,4740; //Atk3 Luck1 Vitality1 - else if (.@i <= 726) setarray .@enchants[1],4767,4750,4741; //Atk3 Luck1 Vitality2 - else if (.@i <= 737) setarray .@enchants[1],4767,4751,4700; //Atk3 Luck2 Strength1 - else if (.@i <= 748) setarray .@enchants[1],4767,4751,4701; //Atk3 Luck2 Strength2 - else if (.@i <= 759) setarray .@enchants[1],4767,4751,4730; //Atk3 Luck2 Agility1 - else if (.@i <= 770) setarray .@enchants[1],4767,4751,4731; //Atk3 Luck2 Agility2 - else if (.@i <= 781) setarray .@enchants[1],4767,4751,4740; //Atk3 Luck2 Vitality1 - else if (.@i <= 792) setarray .@enchants[1],4767,4751,4741; //Atk3 Luck2 Vitality2 - else if (.@i <= 803) setarray .@enchants[1],4764,4720,4700; //Critical5 Dexterity1 Strength1 - else if (.@i <= 814) setarray .@enchants[1],4764,4720,4701; //Critical5 Dexterity1 Strength2 - else if (.@i <= 825) setarray .@enchants[1],4764,4720,4730; //Critical5 Dexterity1 Agility1 - else if (.@i <= 836) setarray .@enchants[1],4764,4720,4731; //Critical5 Dexterity1 Agility2 - else if (.@i <= 847) setarray .@enchants[1],4764,4720,4740; //Critical5 Dexterity1 Vitality1 - else if (.@i <= 858) setarray .@enchants[1],4764,4720,4741; //Critical5 Dexterity1 Vitality2 - else if (.@i <= 869) setarray .@enchants[1],4764,4721,4700; //Critical5 Dexterity2 Strength1 - else if (.@i <= 880) setarray .@enchants[1],4764,4721,4701; //Critical5 Dexterity2 Strength2 - else if (.@i <= 891) setarray .@enchants[1],4764,4721,4730; //Critical5 Dexterity2 Agility1 - else if (.@i <= 902) setarray .@enchants[1],4764,4721,4731; //Critical5 Dexterity2 Agility2 - else if (.@i <= 913) setarray .@enchants[1],4764,4721,4740; //Critical5 Dexterity2 Vitality1 - else if (.@i <= 924) setarray .@enchants[1],4764,4721,4741; //Critical5 Dexterity2 Vitality2 - else if (.@i <= 935) setarray .@enchants[1],4764,4710,4700; //Critical5 Inteligence1 Strength1 - else if (.@i <= 946) setarray .@enchants[1],4764,4710,4701; //Critical5 Inteligence1 Strength2 - else if (.@i <= 957) setarray .@enchants[1],4764,4710,4730; //Critical5 Inteligence1 Agility1 - else if (.@i <= 968) setarray .@enchants[1],4764,4710,4731; //Critical5 Inteligence1 Agility2 - else if (.@i <= 979) setarray .@enchants[1],4764,4710,4740; //Critical5 Inteligence1 Vitality1 - else if (.@i <= 990) setarray .@enchants[1],4764,4710,4741; //Critical5 Inteligence1 Vitality2 - else if (.@i <= 1001) setarray .@enchants[1],4764,4711,4700; //Critical5 Inteligence2 Strength1 - else if (.@i <= 1012) setarray .@enchants[1],4764,4711,4701; //Critical5 Inteligence2 Strength2 - else if (.@i <= 1023) setarray .@enchants[1],4764,4711,4730; //Critical5 Inteligence2 Agility1 - else if (.@i <= 1034) setarray .@enchants[1],4764,4711,4731; //Critical5 Inteligence2 Agility2 - else if (.@i <= 1045) setarray .@enchants[1],4764,4711,4740; //Critical5 Inteligence2 Vitality1 - else if (.@i <= 1056) setarray .@enchants[1],4764,4711,4741; //Critical5 Inteligence2 Vitality2 - else if (.@i <= 1067) setarray .@enchants[1],4764,4750,4700; //Critical5 Luck1 Strength1 - else if (.@i <= 1078) setarray .@enchants[1],4764,4750,4701; //Critical5 Luck1 Strength2 - else if (.@i <= 1089) setarray .@enchants[1],4764,4750,4730; //Critical5 Luck1 Agility1 - else if (.@i <= 1100) setarray .@enchants[1],4764,4750,4731; //Critical5 Luck1 Agility2 - else if (.@i <= 1111) setarray .@enchants[1],4764,4750,4740; //Critical5 Luck1 Vitality1 - else if (.@i <= 1122) setarray .@enchants[1],4764,4750,4741; //Critical5 Luck1 Vitality2 - else if (.@i <= 1133) setarray .@enchants[1],4764,4751,4700; //Critical5 Luck2 Strength1 - else if (.@i <= 1144) setarray .@enchants[1],4764,4751,4701; //Critical5 Luck2 Strength2 - else if (.@i <= 1155) setarray .@enchants[1],4764,4751,4730; //Critical5 Luck2 Agility1 - else if (.@i <= 1166) setarray .@enchants[1],4764,4751,4731; //Critical5 Luck2 Agility2 - else if (.@i <= 1177) setarray .@enchants[1],4764,4751,4740; //Critical5 Luck2 Vitality1 - else if (.@i <= 1188) setarray .@enchants[1],4764,4751,4741; //Critical5 Luck2 Vitality2 - else if (.@i <= 1199) setarray .@enchants[1],4765,4720,4700; //Critical7 Dexterity1 Strength1 - else if (.@i <= 1210) setarray .@enchants[1],4765,4720,4701; //Critical7 Dexterity1 Strength2 - else if (.@i <= 1221) setarray .@enchants[1],4765,4720,4730; //Critical7 Dexterity1 Agility1 - else if (.@i <= 1232) setarray .@enchants[1],4765,4720,4731; //Critical7 Dexterity1 Agility2 - else if (.@i <= 1243) setarray .@enchants[1],4765,4720,4740; //Critical7 Dexterity1 Vitality1 - else if (.@i <= 1254) setarray .@enchants[1],4765,4720,4741; //Critical7 Dexterity1 Vitality2 - else if (.@i <= 1265) setarray .@enchants[1],4765,4721,4700; //Critical7 Dexterity2 Strength1 - else if (.@i <= 1276) setarray .@enchants[1],4765,4721,4701; //Critical7 Dexterity2 Strength2 - else if (.@i <= 1287) setarray .@enchants[1],4765,4721,4730; //Critical7 Dexterity2 Agility1 - else if (.@i <= 1298) setarray .@enchants[1],4765,4721,4731; //Critical7 Dexterity2 Agility2 - else if (.@i <= 1309) setarray .@enchants[1],4765,4721,4740; //Critical7 Dexterity2 Vitality1 - else if (.@i <= 1320) setarray .@enchants[1],4765,4721,4741; //Critical7 Dexterity2 Vitality2 - else if (.@i <= 1331) setarray .@enchants[1],4765,4710,4700; //Critical7 Inteligence1 Strength1 - else if (.@i <= 1342) setarray .@enchants[1],4765,4710,4701; //Critical7 Inteligence1 Strength2 - else if (.@i <= 1353) setarray .@enchants[1],4765,4710,4730; //Critical7 Inteligence1 Agility1 - else if (.@i <= 1364) setarray .@enchants[1],4765,4710,4731; //Critical7 Inteligence1 Agility2 - else if (.@i <= 1375) setarray .@enchants[1],4765,4710,4740; //Critical7 Inteligence1 Vitality1 - else if (.@i <= 1386) setarray .@enchants[1],4765,4710,4741; //Critical7 Inteligence1 Vitality2 - else if (.@i <= 1397) setarray .@enchants[1],4765,4711,4700; //Critical7 Inteligence2 Strength1 - else if (.@i <= 1408) setarray .@enchants[1],4765,4711,4701; //Critical7 Inteligence2 Strength2 - else if (.@i <= 1419) setarray .@enchants[1],4765,4711,4730; //Critical7 Inteligence2 Agility1 - else if (.@i <= 1430) setarray .@enchants[1],4765,4711,4731; //Critical7 Inteligence2 Agility2 - else if (.@i <= 1441) setarray .@enchants[1],4765,4711,4740; //Critical7 Inteligence2 Vitality1 - else if (.@i <= 1452) setarray .@enchants[1],4765,4711,4741; //Critical7 Inteligence2 Vitality2 - else if (.@i <= 1463) setarray .@enchants[1],4765,4750,4700; //Critical7 Luck1 Strength1 - else if (.@i <= 1474) setarray .@enchants[1],4765,4750,4701; //Critical7 Luck1 Strength2 - else if (.@i <= 1485) setarray .@enchants[1],4765,4750,4730; //Critical7 Luck1 Agility1 - else if (.@i <= 1496) setarray .@enchants[1],4765,4750,4731; //Critical7 Luck1 Agility2 - else if (.@i <= 1507) setarray .@enchants[1],4765,4750,4740; //Critical7 Luck1 Vitality1 - else if (.@i <= 1518) setarray .@enchants[1],4765,4750,4741; //Critical7 Luck1 Vitality2 - else if (.@i <= 1529) setarray .@enchants[1],4765,4751,4700; //Critical7 Luck2 Strength1 - else if (.@i <= 1540) setarray .@enchants[1],4765,4751,4701; //Critical7 Luck2 Strength2 - else if (.@i <= 1551) setarray .@enchants[1],4765,4751,4730; //Critical7 Luck2 Agility1 - else if (.@i <= 1562) setarray .@enchants[1],4765,4751,4731; //Critical7 Luck2 Agility2 - else if (.@i <= 1573) setarray .@enchants[1],4765,4751,4740; //Critical7 Luck2 Vitality1 - else if (.@i <= 1584) setarray .@enchants[1],4765,4751,4741; //Critical7 Luck2 Vitality2 - else if (.@i <= 1595) setarray .@enchants[1],4762,4720,4700; //Evasion6 Dexterity1 Strength1 - else if (.@i <= 1606) setarray .@enchants[1],4762,4720,4701; //Evasion6 Dexterity1 Strength2 - else if (.@i <= 1617) setarray .@enchants[1],4762,4720,4730; //Evasion6 Dexterity1 Agility1 - else if (.@i <= 1628) setarray .@enchants[1],4762,4720,4731; //Evasion6 Dexterity1 Agility2 - else if (.@i <= 1639) setarray .@enchants[1],4762,4720,4740; //Evasion6 Dexterity1 Vitality1 - else if (.@i <= 1650) setarray .@enchants[1],4762,4720,4741; //Evasion6 Dexterity1 Vitality2 - else if (.@i <= 1661) setarray .@enchants[1],4762,4721,4700; //Evasion6 Dexterity2 Strength1 - else if (.@i <= 1672) setarray .@enchants[1],4762,4721,4701; //Evasion6 Dexterity2 Strength2 - else if (.@i <= 1683) setarray .@enchants[1],4762,4721,4730; //Evasion6 Dexterity2 Agility1 - else if (.@i <= 1694) setarray .@enchants[1],4762,4721,4731; //Evasion6 Dexterity2 Agility2 - else if (.@i <= 1705) setarray .@enchants[1],4762,4721,4740; //Evasion6 Dexterity2 Vitality1 - else if (.@i <= 1716) setarray .@enchants[1],4762,4721,4741; //Evasion6 Dexterity2 Vitality2 - else if (.@i <= 1727) setarray .@enchants[1],4762,4710,4700; //Evasion6 Inteligence1 Strength1 - else if (.@i <= 1738) setarray .@enchants[1],4762,4710,4701; //Evasion6 Inteligence1 Strength2 - else if (.@i <= 1749) setarray .@enchants[1],4762,4710,4730; //Evasion6 Inteligence1 Agility1 - else if (.@i <= 1760) setarray .@enchants[1],4762,4710,4731; //Evasion6 Inteligence1 Agility2 - else if (.@i <= 1771) setarray .@enchants[1],4762,4710,4740; //Evasion6 Inteligence1 Vitality1 - else if (.@i <= 1782) setarray .@enchants[1],4762,4710,4741; //Evasion6 Inteligence1 Vitality2 - else if (.@i <= 1793) setarray .@enchants[1],4762,4711,4700; //Evasion6 Inteligence2 Strength1 - else if (.@i <= 1804) setarray .@enchants[1],4762,4711,4701; //Evasion6 Inteligence2 Strength2 - else if (.@i <= 1815) setarray .@enchants[1],4762,4711,4730; //Evasion6 Inteligence2 Agility1 - else if (.@i <= 1826) setarray .@enchants[1],4762,4711,4731; //Evasion6 Inteligence2 Agility2 - else if (.@i <= 1837) setarray .@enchants[1],4762,4711,4740; //Evasion6 Inteligence2 Vitality1 - else if (.@i <= 1848) setarray .@enchants[1],4762,4711,4741; //Evasion6 Inteligence2 Vitality2 - else if (.@i <= 1859) setarray .@enchants[1],4762,4750,4700; //Evasion6 Luck1 Strength1 - else if (.@i <= 1870) setarray .@enchants[1],4762,4750,4701; //Evasion6 Luck1 Strength2 - else if (.@i <= 1881) setarray .@enchants[1],4762,4750,4730; //Evasion6 Luck1 Agility1 - else if (.@i <= 1892) setarray .@enchants[1],4762,4750,4731; //Evasion6 Luck1 Agility2 - else if (.@i <= 1903) setarray .@enchants[1],4762,4750,4740; //Evasion6 Luck1 Vitality1 - else if (.@i <= 1914) setarray .@enchants[1],4762,4750,4741; //Evasion6 Luck1 Vitality2 - else if (.@i <= 1925) setarray .@enchants[1],4762,4751,4700; //Evasion6 Luck2 Strength1 - else if (.@i <= 1936) setarray .@enchants[1],4762,4751,4701; //Evasion6 Luck2 Strength2 - else if (.@i <= 1947) setarray .@enchants[1],4762,4751,4730; //Evasion6 Luck2 Agility1 - else if (.@i <= 1958) setarray .@enchants[1],4762,4751,4731; //Evasion6 Luck2 Agility2 - else if (.@i <= 1969) setarray .@enchants[1],4762,4751,4740; //Evasion6 Luck2 Vitality1 - else if (.@i <= 1980) setarray .@enchants[1],4762,4751,4741; //Evasion6 Luck2 Vitality2 - else if (.@i <= 1991) setarray .@enchants[1],4763,4720,4700; //Evasion12 Dexterity1 Strength1 - else if (.@i <= 2002) setarray .@enchants[1],4763,4720,4701; //Evasion12 Dexterity1 Strength2 - else if (.@i <= 2013) setarray .@enchants[1],4763,4720,4730; //Evasion12 Dexterity1 Agility1 - else if (.@i <= 2024) setarray .@enchants[1],4763,4720,4731; //Evasion12 Dexterity1 Agility2 - else if (.@i <= 2035) setarray .@enchants[1],4763,4720,4740; //Evasion12 Dexterity1 Vitality1 - else if (.@i <= 2046) setarray .@enchants[1],4763,4720,4741; //Evasion12 Dexterity1 Vitality2 - else if (.@i <= 2057) setarray .@enchants[1],4763,4721,4700; //Evasion12 Dexterity2 Strength1 - else if (.@i <= 2068) setarray .@enchants[1],4763,4721,4701; //Evasion12 Dexterity2 Strength2 - else if (.@i <= 2079) setarray .@enchants[1],4763,4721,4730; //Evasion12 Dexterity2 Agility1 - else if (.@i <= 2090) setarray .@enchants[1],4763,4721,4731; //Evasion12 Dexterity2 Agility2 - else if (.@i <= 2101) setarray .@enchants[1],4763,4721,4740; //Evasion12 Dexterity2 Vitality1 - else if (.@i <= 2112) setarray .@enchants[1],4763,4721,4741; //Evasion12 Dexterity2 Vitality2 - else if (.@i <= 2123) setarray .@enchants[1],4763,4710,4700; //Evasion12 Inteligence1 Strength1 - else if (.@i <= 2134) setarray .@enchants[1],4763,4710,4701; //Evasion12 Inteligence1 Strength2 - else if (.@i <= 2145) setarray .@enchants[1],4763,4710,4730; //Evasion12 Inteligence1 Agility1 - else if (.@i <= 2156) setarray .@enchants[1],4763,4710,4731; //Evasion12 Inteligence1 Agility2 - else if (.@i <= 2167) setarray .@enchants[1],4763,4710,4740; //Evasion12 Inteligence1 Vitality1 - else if (.@i <= 2178) setarray .@enchants[1],4763,4710,4741; //Evasion12 Inteligence1 Vitality2 - else if (.@i <= 2189) setarray .@enchants[1],4763,4711,4700; //Evasion12 Inteligence2 Strength1 - else if (.@i <= 2200) setarray .@enchants[1],4763,4711,4701; //Evasion12 Inteligence2 Strength2 - else if (.@i <= 2211) setarray .@enchants[1],4763,4711,4730; //Evasion12 Inteligence2 Agility1 - else if (.@i <= 2222) setarray .@enchants[1],4763,4711,4731; //Evasion12 Inteligence2 Agility2 - else if (.@i <= 2233) setarray .@enchants[1],4763,4711,4740; //Evasion12 Inteligence2 Vitality1 - else if (.@i <= 2244) setarray .@enchants[1],4763,4711,4741; //Evasion12 Inteligence2 Vitality2 - else if (.@i <= 2255) setarray .@enchants[1],4763,4750,4700; //Evasion12 Luck1 Strength1 - else if (.@i <= 2266) setarray .@enchants[1],4763,4750,4701; //Evasion12 Luck1 Strength2 - else if (.@i <= 2277) setarray .@enchants[1],4763,4750,4730; //Evasion12 Luck1 Agility1 - else if (.@i <= 2288) setarray .@enchants[1],4763,4750,4731; //Evasion12 Luck1 Agility2 - else if (.@i <= 2299) setarray .@enchants[1],4763,4750,4740; //Evasion12 Luck1 Vitality1 - else if (.@i <= 2310) setarray .@enchants[1],4763,4750,4741; //Evasion12 Luck1 Vitality2 - else if (.@i <= 2321) setarray .@enchants[1],4763,4751,4700; //Evasion12 Luck2 Strength1 - else if (.@i <= 2332) setarray .@enchants[1],4763,4751,4701; //Evasion12 Luck2 Strength2 - else if (.@i <= 2343) setarray .@enchants[1],4763,4751,4730; //Evasion12 Luck2 Agility1 - else if (.@i <= 2354) setarray .@enchants[1],4763,4751,4731; //Evasion12 Luck2 Agility2 - else if (.@i <= 2365) setarray .@enchants[1],4763,4751,4740; //Evasion12 Luck2 Vitality1 - else if (.@i <= 2376) setarray .@enchants[1],4763,4751,4741; //Evasion12 Luck2 Vitality2 - else if (.@i <= 2387) setarray .@enchants[1],4760,4720,4700; //Matk1 Dexterity1 Strength1 - else if (.@i <= 2398) setarray .@enchants[1],4760,4720,4701; //Matk1 Dexterity1 Strength2 - else if (.@i <= 2409) setarray .@enchants[1],4760,4720,4730; //Matk1 Dexterity1 Agility1 - else if (.@i <= 2420) setarray .@enchants[1],4760,4720,4731; //Matk1 Dexterity1 Agility2 - else if (.@i <= 2431) setarray .@enchants[1],4760,4720,4740; //Matk1 Dexterity1 Vitality1 - else if (.@i <= 2442) setarray .@enchants[1],4760,4720,4741; //Matk1 Dexterity1 Vitality2 - else if (.@i <= 2453) setarray .@enchants[1],4760,4721,4700; //Matk1 Dexterity2 Strength1 - else if (.@i <= 2464) setarray .@enchants[1],4760,4721,4701; //Matk1 Dexterity2 Strength2 - else if (.@i <= 2475) setarray .@enchants[1],4760,4721,4730; //Matk1 Dexterity2 Agility1 - else if (.@i <= 2486) setarray .@enchants[1],4760,4721,4731; //Matk1 Dexterity2 Agility2 - else if (.@i <= 2497) setarray .@enchants[1],4760,4721,4740; //Matk1 Dexterity2 Vitality1 - else if (.@i <= 2508) setarray .@enchants[1],4760,4721,4741; //Matk1 Dexterity2 Vitality2 - else if (.@i <= 2519) setarray .@enchants[1],4760,4710,4700; //Matk1 Inteligence1 Strength1 - else if (.@i <= 2530) setarray .@enchants[1],4760,4710,4701; //Matk1 Inteligence1 Strength2 - else if (.@i <= 2541) setarray .@enchants[1],4760,4710,4730; //Matk1 Inteligence1 Agility1 - else if (.@i <= 2552) setarray .@enchants[1],4760,4710,4731; //Matk1 Inteligence1 Agility2 - else if (.@i <= 2563) setarray .@enchants[1],4760,4710,4740; //Matk1 Inteligence1 Vitality1 - else if (.@i <= 2574) setarray .@enchants[1],4760,4710,4741; //Matk1 Inteligence1 Vitality2 - else if (.@i <= 2585) setarray .@enchants[1],4760,4711,4700; //Matk1 Inteligence2 Strength1 - else if (.@i <= 2596) setarray .@enchants[1],4760,4711,4701; //Matk1 Inteligence2 Strength2 - else if (.@i <= 2607) setarray .@enchants[1],4760,4711,4730; //Matk1 Inteligence2 Agility1 - else if (.@i <= 2618) setarray .@enchants[1],4760,4711,4731; //Matk1 Inteligence2 Agility2 - else if (.@i <= 2629) setarray .@enchants[1],4760,4711,4740; //Matk1 Inteligence2 Vitality1 - else if (.@i <= 2640) setarray .@enchants[1],4760,4711,4741; //Matk1 Inteligence2 Vitality2 - else if (.@i <= 2651) setarray .@enchants[1],4760,4750,4700; //Matk1 Luck1 Strength1 - else if (.@i <= 2662) setarray .@enchants[1],4760,4750,4701; //Matk1 Luck1 Strength2 - else if (.@i <= 2673) setarray .@enchants[1],4760,4750,4730; //Matk1 Luck1 Agility1 - else if (.@i <= 2684) setarray .@enchants[1],4760,4750,4731; //Matk1 Luck1 Agility2 - else if (.@i <= 2695) setarray .@enchants[1],4760,4750,4740; //Matk1 Luck1 Vitality1 - else if (.@i <= 2706) setarray .@enchants[1],4760,4750,4741; //Matk1 Luck1 Vitality2 - else if (.@i <= 2717) setarray .@enchants[1],4760,4751,4700; //Matk1 Luck2 Strength1 - else if (.@i <= 2728) setarray .@enchants[1],4760,4751,4701; //Matk1 Luck2 Strength2 - else if (.@i <= 2739) setarray .@enchants[1],4760,4751,4730; //Matk1 Luck2 Agility1 - else if (.@i <= 2750) setarray .@enchants[1],4760,4751,4731; //Matk1 Luck2 Agility2 - else if (.@i <= 2761) setarray .@enchants[1],4760,4751,4740; //Matk1 Luck2 Vitality1 - else if (.@i <= 2772) setarray .@enchants[1],4760,4751,4741; //Matk1 Luck2 Vitality2 - else if (.@i <= 2783) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1 - else if (.@i <= 2794) setarray .@enchants[1],4761,4720,4701; //Matk2 Dexterity1 Strength2 - else if (.@i <= 2805) setarray .@enchants[1],4761,4720,4730; //Matk2 Dexterity1 Agility1 - else if (.@i <= 2816) setarray .@enchants[1],4761,4720,4731; //Matk2 Dexterity1 Agility2 - else if (.@i <= 2827) setarray .@enchants[1],4761,4720,4740; //Matk2 Dexterity1 Vitality1 - else if (.@i <= 2838) setarray .@enchants[1],4761,4720,4741; //Matk2 Dexterity1 Vitality2 - else if (.@i <= 2849) setarray .@enchants[1],4761,4721,4700; //Matk2 Dexterity2 Strength1 - else if (.@i <= 2860) setarray .@enchants[1],4761,4721,4701; //Matk2 Dexterity2 Strength2 - else if (.@i <= 2871) setarray .@enchants[1],4761,4721,4730; //Matk2 Dexterity2 Agility1 - else if (.@i <= 2882) setarray .@enchants[1],4761,4721,4731; //Matk2 Dexterity2 Agility2 - else if (.@i <= 2893) setarray .@enchants[1],4761,4721,4740; //Matk2 Dexterity2 Vitality1 - else if (.@i <= 2904) setarray .@enchants[1],4761,4721,4741; //Matk2 Dexterity2 Vitality2 - else if (.@i <= 2915) setarray .@enchants[1],4761,4710,4700; //Matk2 Inteligence1 Strength1 - else if (.@i <= 2926) setarray .@enchants[1],4761,4710,4701; //Matk2 Inteligence1 Strength2 - else if (.@i <= 2937) setarray .@enchants[1],4761,4710,4730; //Matk2 Inteligence1 Agility1 - else if (.@i <= 2948) setarray .@enchants[1],4761,4710,4731; //Matk2 Inteligence1 Agility2 - else if (.@i <= 2959) setarray .@enchants[1],4761,4710,4740; //Matk2 Inteligence1 Vitality1 - else if (.@i <= 2970) setarray .@enchants[1],4761,4710,4741; //Matk2 Inteligence1 Vitality2 - else if (.@i <= 2981) setarray .@enchants[1],4761,4711,4700; //Matk2 Inteligence2 Strength1 - else if (.@i <= 2992) setarray .@enchants[1],4761,4711,4701; //Matk2 Inteligence2 Strength2 - else if (.@i <= 3003) setarray .@enchants[1],4761,4711,4730; //Matk2 Inteligence2 Agility1 - else if (.@i <= 3014) setarray .@enchants[1],4761,4711,4731; //Matk2 Inteligence2 Agility2 - else if (.@i <= 3025) setarray .@enchants[1],4761,4711,4740; //Matk2 Inteligence2 Vitality1 - else if (.@i <= 3036) setarray .@enchants[1],4761,4711,4741; //Matk2 Inteligence2 Vitality2 - else if (.@i <= 3047) setarray .@enchants[1],4761,4750,4700; //Matk2 Luck1 Strength1 - else if (.@i <= 3058) setarray .@enchants[1],4761,4750,4701; //Matk2 Luck1 Strength2 - else if (.@i <= 3069) setarray .@enchants[1],4761,4750,4730; //Matk2 Luck1 Agility1 - else if (.@i <= 3080) setarray .@enchants[1],4761,4750,4731; //Matk2 Luck1 Agility2 - else if (.@i <= 3091) setarray .@enchants[1],4761,4750,4740; //Matk2 Luck1 Vitality1 - else if (.@i <= 3102) setarray .@enchants[1],4761,4750,4741; //Matk2 Luck1 Vitality2 - else if (.@i <= 3113) setarray .@enchants[1],4761,4751,4700; //Matk2 Luck2 Strength1 - else if (.@i <= 3124) setarray .@enchants[1],4761,4751,4701; //Matk2 Luck2 Strength2 - else if (.@i <= 3135) setarray .@enchants[1],4761,4751,4730; //Matk2 Luck2 Agility1 - else if (.@i <= 3146) setarray .@enchants[1],4761,4751,4731; //Matk2 Luck2 Agility2 - else if (.@i <= 3157) setarray .@enchants[1],4761,4751,4740; //Matk2 Luck2 Vitality1 - else if (.@i <= 3168) setarray .@enchants[1],4761,4751,4741; //Matk2 Luck2 Vitality2 + if (.@i <= 3168) { + // Basic combinations + // (raw: .@i increments by 11) + setarray .@enchant_slot1[0],4766,4767,4764,4765,4762,4763,4760,4761; //Atk2,Atk3,Critical5,Critical7,Evasion6,Evasion12,Matk1,Matk2 + setarray .@enchant_slot2[0],4720,4721,4710,4711,4750,4751; //Dexterity1,Dexterity2,Inteligence1,Inteligence2,Luck1,Luck2 + setarray .@enchant_slot3[0],4700,4701,4730,4731,4740,4741; //Strength1,Strength2,Agility1,Agility2,Vitality1,Vitality2 + setarray .@enchants[1], + .@enchant_slot1[rand(getarraysize(.@enchant_slot1))], + .@enchant_slot2[rand(getarraysize(.@enchant_slot2))], + .@enchant_slot3[rand(getarraysize(.@enchant_slot3))]; + } else if (.@i <= 3179) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1 else if (.@i <= 3181) setarray .@enchants[1],4761,4712,4712; //Matk2 Inteligence3 Inteligence3 else if (.@i <= 3183) setarray .@enchants[1],4765,4732,4732; //Critical7 Agility3 Agility3 diff --git a/npc/re/merchants/hd_refiner.txt b/npc/re/merchants/hd_refiner.txt new file mode 100644 index 000000000..897986cd6 --- /dev/null +++ b/npc/re/merchants/hd_refiner.txt @@ -0,0 +1,308 @@ +//===== rAthena 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 +//= failure, the equipment is not destroyed; rather, its +//= refine level decreases by 1. The success rate is identical +//= to that for Enriched ores. +//= - "Blacksmith Mighty Hammer" only refines from +7~9. +//= - "Basta" only refines from +10 and up. +//===== Additional Comments: ================================= +//= 1.0 First version. [Euphy] +//============================================================ + +// Blacksmith Mighty Hammer (+7~9) +//============================================================ +- script ::MightyHammer -1,{ + disable_items; + mes "[Blacksmith Mighty Hammer]"; + mes "Unlike others, I am a blacksmith who refines a very limited number of items."; + mes "I refine only items that are ^CC0000+7 to +9^000000."; + next; + mes "[Blacksmith Mighty Hammer]"; + mes "My specialty is that even if my refining fails, the refine level decreases by 1 without losing the gear. Isn't it great?"; + next; + mes "[Blacksmith Mighty Hammer]"; + mes "So lets kick this into overdrive, what d' ya say? What item do you want 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) + set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Not equipped]")+":"; + set .@part, select(.@menu$); + if (!getequipisequiped(.@part)) { + mes "[Blacksmith Mighty Hammer]"; + switch(.@part) { + case 1: + mes "I'm a blacksmith, not a hairstylist."; + break; + case 2: + mes "With my hammer, I will make you a star of the sky."; + break; + case 3: + case 4: + mes "Making artificial hands is not my specialty."; + break; + case 5: + mes "Bring out the item so I can refine it!"; + break; + case 6: + mes "Where is this foot odor coming from?"; + break; + case 7: + case 8: + mes "Where is the accessory?"; + break; + case 9: + mes "What do you want me to refine?"; + break; + case 10: + mes "Huh? What do you want me to do?"; + break; + } + close; + } + if (!getequipisenableref(.@part)) { + mes "[Blacksmith Mighty Hammer]"; + mes "This item can't be refined."; + close; + } + if (getequiprefinerycnt(.@part) < 7 || getequiprefinerycnt(.@part) > 9) { + mes "[Blacksmith Mighty Hammer]"; + mes "I only handle items with refine levels from +7 to +9."; + close; + } + switch(getequipweaponlv(.@part)) { + default: + case 0: + set .@price,20000; + set .@material,6241; //HD_Elunium + break; + case 1: + case 2: + case 3: + case 4: + set .@price,20000; + set .@material,6240; //HD_Oridecon + break; + } + mes "[Blacksmith Mighty Hammer]"; + mes "In order to refine the gear you selected you need ^ff9999"+getitemname(.@material)+"^000000 and 20,000 zeny as a fee."; + mes "Do you have them ready?"; + next; + if(select("Yes:No") == 2) { + mes "[Blacksmith Mighty Hammer]"; + mes "I will wait until you are ready."; + close; + } + if (getequippercentrefinery(.@part) < 100) { + mes "[Blacksmith Mighty Hammer]"; + mes "It looks like this item will likely fail to be refined."; + mes "Well, even if it fails, it only decreases by 1 refine level."; + mes "Would you like to continue refining?"; + next; + if(select("Yes:No") == 2) { + mes "[Blacksmith Mighty Hammer]"; + mes "Only those who overcome fear of failure will obtain a masterpiece."; + close; + } + } + if (countitem(.@material) == 0 || Zeny < .@price) { + mes "[Blacksmith Mighty Hammer]"; + mes "Didn't you just say you had everything ready?"; + close; + } + delitem .@material,1; + set Zeny, Zeny-.@price; + mes "[Blacksmith Mighty Hammer]"; + mes "Tac! Tac! Tac!"; + if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) { + successrefitem .@part; + next; + emotion e_no1; + mes "[Blacksmith Mighty Hammer]"; + mes "The sound refreshes my mind everytime I hear it."; + mes "Here, have it. Refine succeeded flawlessly!"; + close; + } + downrefitem .@part; + next; + emotion e_omg; + mes "[Blacksmith Mighty Hammer]"; + mes "Oops!!"; + next; + mes "[Blacksmith Mighty Hammer]"; + mes "I am sure a person like you would never blame me for a decrease in refine level by 1. Hmm."; + close; +} +prt_in,59,54,3 duplicate(MightyHammer) Mighty Hammer#prt 826 +morocc_in,65,30,3 duplicate(MightyHammer) Mighty Hammer#morocc 826 +payon,148,176,3 duplicate(MightyHammer) Mighty Hammer#pay 826 +alberta_in,16,56,3 duplicate(MightyHammer) Mighty Hammer#alb 826 +yuno_in01,171,18,3 duplicate(MightyHammer) Mighty Hammer#yuno 826 +ein_in01,22,82,3 duplicate(MightyHammer) Mighty Hammer#ein 826 +lhz_in02,280,19,3 duplicate(MightyHammer) Mighty Hammer#lhz 826 + +// iRO NPC locations: +// moc_para01,38,185,4 duplicate(MightyHammer) Mighty Hammer#ed 826 +// payon,174,133,4 duplicate(MightyHammer) Mighty Hammer#im 826 + +// Basta (+10 and up) +//============================================================ +- script ::Basta -1,{ + disable_items; + mes "[Basta]"; + mes "I'm the best Blacksmith in the whole world, Basta."; + mes "But I don't provide a normal refine service."; + mes "I only refine equipment ^CC0000over +10^000000."; + next; + mes "[Basta]"; + mes "Which equipment do you want 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) + set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Unequipped]")+":"; + set .@part, select(.@menu$); + if (!getequipisequiped(.@part)) { + mes "[Basta]"; + switch(.@part) { + case 1: + mes "Is your head an equipment?"; + break; + case 2: + mes "What do you want me to do?"; + break; + case 3: + case 4: + mes "Making artificial hands is not my specialty."; + break; + case 5: + mes "Do you even know what a robe is?"; + break; + case 6: + mes "If you want to refine your feet, don't come to me, try running a marathon."; + break; + case 7: + case 8: + mes "Where is the accessory?"; + break; + case 9: + mes "Well... I don't see any equipment worth refining."; + break; + case 10: + mes "I can't make you smart. Go see a school teacher for that."; + break; + } + close; + } + if (!getequipisenableref(.@part)) { + mes "[Basta]"; + mes "Even I cannot refine this item. There's no way."; + close; + } + if (getequiprefinerycnt(.@part) < 10) { + mes "[Basta]"; + mes "Haven't I told you? I only refine equipments that are +10 and above."; + close; + } + if (getequiprefinerycnt(.@part) == 20) { + mes "[Basta]"; + mes "This weapon is perfect, no need to refine it anymore~"; + close; + } + switch(getequipweaponlv(.@part)) { + default: + case 0: + set .@price,100000; + set .@material,6225; //HD_Carnium + set .@type$,"armor"; + break; + case 1: + case 2: + case 3: + case 4: + set .@price,100000; + set .@material,6226; //HD_Bradium + set .@type$,"weapon"; + break; + } + mes "[Basta]"; + mes "Hmm... is this the one you want to refine?"; + mes "To refine this equipment, I need 1 ^ff9999"+getitemname(.@material)+"^000000 and 100,000 zeny as a fee."; + mes "Do you really want to refine this?"; + next; + if(select("Yes:No") == 2) { + mes "[Basta]"; + mes "Okay. If that's what you want..."; + close; + } + if (getequippercentrefinery(.@part) < 100) { + mes "[Basta]"; + mes "This "+.@type$+" has already been refined pretty high."; + mes "If you try to refine it more, the refine level could decrease."; + next; + mes "[Basta]"; + mes "I am different from the blacksmiths in others places."; + mes "It is impossible that the refine level will drop by, say, 3 or 4... that sounds scary."; + mes "Here it can only decrease by 1 level."; + next; + mes "[Basta]"; + mes "Compared to other blacksmiths, the risk is smaller."; + mes "I've given all precautions. Do you want to try it?"; + next; + if(select("Yes:No") == 2) { + mes "[Basta]"; + mes "Well~"; + mes "Not challenging at all could also be a kind of wisdom in life."; + close; + } + } + if (countitem(.@material) == 0 || Zeny < .@price) { + mes "[Basta]"; + mes "Hmm... You didn't bring all the materials needed."; + mes "Come back when you have them all."; + close; + } + delitem .@material,1; + set Zeny, Zeny-.@price; + mes "Pow! Pow! Pow! Pow!"; + if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) { + successrefitem .@part; + next; + emotion e_no1; + mes "[Basta]"; + mes "Great! Nicely done!!"; + mes "I really am the best blacksmith in the whole wide world!"; + close; + } + downrefitem .@part; + next; + emotion (!rand(5))?e_cash:e_omg; + mes "[Basta]"; + mes "Aaaaaaaaaaak!!!"; + next; + mes "[Basta]"; + mes "Damn it!"; + mes "Refining failed and refine level has decreased!"; + mes "Even the best blacksmith in the world doesn't guarantee 100% success!"; + mes "Too bad."; + next; + mes "[Basta]"; + mes "I'll do better next time! Don't worry!"; + close; +} +prt_in,57,54,3 duplicate(Basta) Basta#prt 826 +morocc_in,68,30,3 duplicate(Basta) Basta#morocc 826 +payon,148,174,3 duplicate(Basta) Basta#payon 826 +alberta_in,18,56,3 duplicate(Basta) Basta#alberta 826 +yuno_in01,173,18,3 duplicate(Basta) Basta#yuno 826 +ein_in01,24,82,3 duplicate(Basta) Basta#einbroch 826 +lhz_in02,280,17,3 duplicate(Basta) Basta#lighthalzen 826 diff --git a/npc/re/merchants/refine.txt b/npc/re/merchants/refine.txt index 27a09fce7..b1493e12d 100644 --- a/npc/re/merchants/refine.txt +++ b/npc/re/merchants/refine.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Hercules Dev Team //===== Current Version: ===================================== -//= 1.0a +//= 1.2 //===== Compatible With: ===================================== //= Hercules //===== Description: ========================================= @@ -11,20 +11,23 @@ //===== Additional Comments: ================================= //= 1.0 Moved some scripts to Renewal file, optimized "Austry" NPC. [Euphy] //= 1.0a Added 'disable_items' command. [Euphy] +//= 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] //============================================================ // +11 and above Refiners //============================================================ prt_in,90,72,5 script Bestry#prt 826,{ - callfunc "refinenew","Bestry",0,0; + callfunc "refinenew","Bestry",0; end; } morocc_in,64,41,5 script Bestry#moc 826,{ - callfunc "refinenew","Bestry",0,0; + callfunc "refinenew","Bestry",0; end; } payon_in01,18,132,3 script Bestry#pay 826,{ - callfunc "refinenew","Bestry",0,0; + callfunc "refinenew","Bestry",0; end; } @@ -36,10 +39,8 @@ payon_in01,18,132,3 script Bestry#pay 826,{ //= If you enable this function, be sure to edit the value of //= .@safe to the max safe refine in refine_db.txt as well. //= -//= The official script uses a command which seems to generate a -//= random result upon refining: success, downgrade, or failure. -//= To enable that feature, set the third argument to '1' in the -//= function call. Otherwise, the chance in refine_db.txt is used. +//= On official servers, if an item is unsuccessfully refined +//= it will break at a 20% rate and downgrade at an 80% rate. //============================================================ function script refinenew { disable_items; @@ -76,16 +77,6 @@ function script refinenew { mes "refine this item at all..."; close; } - //Check if the item is identified... (Don't know why this is in here... but kept it anyway) - if(!getequipisidentify(.@part)) { - mes "[" + getarg(0) + "]"; - mes "You can't refine this"; - mes "if you haven't appraised"; - mes "it first. Make sure your"; - mes "stuff is identified before"; - mes "I can refine it."; - close; - } //Check to see if the items is at least +10 if(getequiprefinerycnt(.@part) < 10) { mes "["+ getarg(0) +"]"; @@ -104,7 +95,12 @@ function script refinenew { if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) { set .@material,6224; set .@price,100000; - set .@safe,10; + switch(getequipweaponlv(.@part)) { + case 1: set .@safe,17; break; + case 2: set .@safe,16; break; + case 3: set .@safe,15; break; + case 4: set .@safe,14; break; + } mes "["+ getarg(0) +"]"; mes "Hmm a weapon, is that ok?"; mes "If you want to refine this weapon,"; @@ -113,7 +109,7 @@ function script refinenew { } else { set .@material,6223; set .@price,100000; - set .@safe,10; + set .@safe,14; mes "["+ getarg(0) +"]"; mes "Hmm an armor, is that ok?"; mes "If you want to refine this armor,"; @@ -179,19 +175,17 @@ function script refinenew { mes "You switched the item while I wasn't looking! Get out of here!"; close; } - if(getarg(2) == 1){ - set .@rand,rand(1,3); - if (.@rand == 1) { - mes "Clang! Clang! Clang! Clang!"; - successrefitem .@part; - next; - emotion e_no1; - mes "["+ getarg(0) +"]"; - mes "Good! Succes!!!"; - mes "I am the best Blacksmith."; - close; - } - if (.@rand == 2) { + if (getequippercentrefinery(.@part) > rand(100)) { + mes "Clang! Clang! Clang! Clang!"; + successrefitem .@part; + next; + emotion e_no1; + mes "["+ getarg(0) +"]"; + mes "Good! Succes!!!"; + mes "I am the best Blacksmith."; + close; + } else { + if (rand(100) < 80) { mes "["+ getarg(0) +"]"; mes "Clang! Clang! Clang! Clang!"; downrefitem .@part; @@ -209,72 +203,26 @@ function script refinenew { mes "["+ getarg(0) +"]"; mes "I will do a better job next time! Don't worry!"; close; + } else { + mes "["+ getarg(0) +"]"; + mes "Clang! Clang! Clang!"; + failedrefitem .@part; + next; + emotion (!rand(5))?e_cash:e_omg; + mes "["+ getarg(0) +"]"; + mes "Hmmm!"; + next; + 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 "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang!"; - failedrefitem .@part; - next; - emotion (!rand(5))?e_cash:e_omg; - mes "["+ getarg(0) +"]"; - mes "Hmmm!"; - next; - 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; } - set .@rand,rand(100); - if (getequippercentrefinery(.@part) > .@rand) { - mes "Clang! Clang! Clang! Clang!"; - successrefitem .@part; - next; - emotion e_no1; - mes "["+ getarg(0) +"]"; - mes "Good! Succes!!!"; - mes "I am the best Blacksmith."; - close; - } - if (getequippercentrefinery(.@part) < .@rand) { - mes "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang! Clang!"; - downrefitem .@part; - next; - emotion (!rand(5))?e_cash:e_omg; - mes "["+ getarg(0) +"]"; - mes "Ahhh!!!"; - next; - mes "["+ getarg(0) +"]"; - mes "Oh my!"; - 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; - } - mes "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang!"; - failedrefitem .@part; - next; - emotion (!rand(5))?e_cash:e_omg; - mes "["+ getarg(0) +"]"; - mes "Hmmm!"; - next; - 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; } // New +11 and above Refining Functions ======================== if(getequiprefinerycnt(.@part) < .@safe) { @@ -289,13 +237,12 @@ function script refinenew { set .@refinecnt,.@safe - getequiprefinerycnt(.@part); break; case 2: - next; mes "[" + getarg(0) + "]"; mes "How many times would you like me to refine your item?"; next; input .@refinecnt; set .@refinecheck,.@refinecnt + getequiprefinerycnt(.@part); - if (.@refinecnt < 1 || .@refinecheck > 10) { + if (.@refinecnt < 1 || .@refinecheck > 20) { mes "[" + getarg(0) + "]"; mes "I can't refine this item that many times."; close; @@ -313,7 +260,6 @@ function script refinenew { } break; case 3: - next; mes "[" + getarg(0) + "]"; mes "You said so... So be it."; close; @@ -347,20 +293,13 @@ function script refinenew { mes "Get out before I stun you with my Hammer!!"; close; } - if(getarg(2) == 1){ - set .@rand,rand(1,3); - if (.@rand == 1) { - mes "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang! Clang!"; - successrefitem .@part; - next; - emotion e_no1; - mes "["+ getarg(0) +"]"; - mes "Good! Succes!!!"; - mes "I am the best Blacksmith."; - close; - } - if (.@rand == 2) { + if (getequippercentrefinery(.@part) > rand(100)) { + mes "Clang! Clang! Clang! Clang!"; + successrefitem .@part; + set .@refinecnt,.@refinecnt - 1; + next; + } else { + if (rand(100) < 80) { mes "["+ getarg(0) +"]"; mes "Clang! Clang! Clang! Clang!"; downrefitem .@part; @@ -378,75 +317,31 @@ function script refinenew { mes "["+ getarg(0) +"]"; mes "I will do a better job next time! Don't worry!"; close; + } else { + mes "["+ getarg(0) +"]"; + mes "Clang! Clang! Clang!"; + failedrefitem .@part; + next; + emotion (!rand(5))?e_cash:e_omg; + mes "["+ getarg(0) +"]"; + mes "Hmmm!"; + next; + 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 "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang!"; - failedrefitem .@part; - next; - emotion (!rand(5))?e_cash:e_omg; - mes "["+ getarg(0) +"]"; - mes "Hmmm!"; - next; - 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; - } - set .@rand,rand(100); - if (getequippercentrefinery(.@part) > .@rand) { - mes "Clang! Clang! Clang! Clang!"; - successrefitem .@part; - next; - emotion e_no1; - mes "["+ getarg(0) +"]"; - mes "Good! Succes!!!"; - mes "I am the best Blacksmith."; - close; } - if (getequippercentrefinery(.@part) < .@rand) { - mes "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang! Clang!"; - downrefitem .@part; - next; - emotion (!rand(5))?e_cash:e_omg; - mes "["+ getarg(0) +"]"; - mes "Ahhh!!!"; - next; - mes "["+ getarg(0) +"]"; - mes "Oh my!"; - 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; - } - mes "["+ getarg(0) +"]"; - mes "Clang! Clang! Clang!"; - failedrefitem .@part; - next; - emotion (!rand(5))?e_cash:e_omg; - mes "["+ getarg(0) +"]"; - mes "Hmmm!"; - next; - 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 "[" + getarg(0) + "]"; - mes "All finished... Come again soon."; + emotion e_no1; + mes "["+ getarg(0) +"]"; + mes "Good! Succes!!!"; + mes "I am the best Blacksmith."; close; } @@ -499,3 +394,168 @@ function script refinenew { 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 + +// Malangdo Refiner +//============================================================ +malangdo,224,172,6 script Clink#mal_normal 544,{ + disable_items; + mes "[Clink]"; + mes "My cool dad Holink said I have the world's greatest refine hammer!!"; + mes "Meow Meow~"; + mes "Who do you think I am?"; + mes "Yes!!! You!! You want 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) + set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Empty]")+":"; + set .@part, select(.@menu$); + if (!getequipisequiped(.@part)) { + mes "[Clink]"; + switch(.@part) { + case 1: + mes "Dad said. There's no cure for stupidity..."; + break; + case 2: + mes "There's nothing to see here!!"; + break; + case 3: + mes "What an arrogant left hand this is!"; + break; + case 4: + mes "What an arrogant right hand this is!"; + break; + case 5: + mes "Get that dirty thing off my face!!"; + break; + case 6: + mes "Kyaong~! Do not provoke me."; + break; + case 7: + case 8: + mes "Where is the accessory?"; + break; + case 9: + case 10: + mes "Are you talking about the other head part?"; + break; + } + close; + } + if (!getequipisenableref(.@part)) { + mes "[Clink]"; + mes "This can't be refined!!"; + close; + } + if (getequiprefinerycnt(.@part) >= 10) { + mes "[Clink]"; + mes "Perfect refining. Did I do this for you?"; + close; + } + mes "[Clink]"; + switch(getequipweaponlv(.@part)) { + default: + case 0: // Armor + set .@price,2000; + set .@material,985; //Elunium + set .@type$,"armor"; + mes "Hmm, an armor refine? Someone like you?"; + break; + case 1: // Level 1 Weapon + set .@price,50; + set .@material,1010; //Phracon + set .@type$,"weapon"; + mes "A level 1 weapon?"; + mes "Urr... Annoying... Okay, let's try..."; + break; + case 2: // Level 2 Weapon + set .@price,200; + set .@material,1011; //Emveretarcon + set .@type$,"weapon"; + mes "A level 2 weapon?"; + break; + case 3: // Level 3 Weapon + set .@price,20000; + set .@material,984; //Oridecon + set .@type$,"weapon"; + mes "Woot!! A level 3 weapon? Impressive~"; + break; + case 4: // Level 4 Weapon + set .@price,50000; + set .@material,984; //Oridecon + set .@type$,"weapon"; + mes "Wow!... A level 4 weapon~!!"; + break; + } + mes "You need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny. Do you have them?"; + next; + if(select("Yes, I do!!:Forget about it!!") == 2) { + mes "[Clink]"; + mes "I knew it!!"; + mes "I knew you were not worth trying my magical refining hammer for."; + close; + } + if (getequippercentrefinery(.@part) < 100) { + mes "[Clink]"; + mes "Wow!!"; + mes "This "+.@type$+" has been refined quite a bit, huh?"; + mes "You do know that this might break, right?"; + next; + mes "[Clink]"; + mes "If you break the "+.@type$+", you can never use it again."; + mes "Cards and enchant effects..."; + mes "the ^ff0000whole thing will disappear^000000."; + mes "You still up for this~?"; + next; + if(select("Yes, I am!!:Forget about it!!") == 2) { + mes "[Clink]"; + mes "I knew it!!"; + mes "You can't even take this big step. Don't think about refining..."; + close; + } + } + if (countitem(.@material) == 0 || Zeny < .@price) { + mes "[Clink]"; + mes "Hey you!! Didn't I tell you"; + mes "that you need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny??!!"; + close; + } + delitem .@material,1; + set Zeny, Zeny-.@price; + if (getequippercentrefinery(.@part) <= rand(100)) { + failedrefitem .@part; + mes "[Clink]"; + mes "Cry Hammer!! Cry!!!"; + 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 "[Clink]"; + mes "Huh?! I failed?!"; + next; + mes "[Clink]"; + mes "Arrgg~ It's all~ Broken...? What a pity~"; + next; + mes "[Clink]"; + mes "Hey...!! Get me another one."; + mes "This is not possible."; + mes "How can my hammer fail from refining?"; + close; + } + successrefitem .@part; + mes "[Clink]"; + mes "Cry Hammer!! Cry!!!"; + next; + emotion e_kis; + mes "[Clink]"; + mes "Ok!! Perfect!!"; + mes "There's nothing I can't refine"; + mes "with this special hammer."; + mes "You can praise me!!"; + mes "What a day!!"; + close; +} diff --git a/npc/re/merchants/ticket_refiner.txt b/npc/re/merchants/ticket_refiner.txt new file mode 100644 index 000000000..7246528a4 --- /dev/null +++ b/npc/re/merchants/ticket_refiner.txt @@ -0,0 +1,162 @@ +//===== rAthena 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 +//= equipment with no chance of failure. +//= NOTE: This NPC is currently disabled on official servers. +//===== Additional Comments: ================================= +//= 1.0 First version. [Euphy] +//============================================================ + +prontera,184,177,6 script Refine Master 851,{ + disable_items; + if (countitem(6238) || countitem(6228) || countitem(6229) || countitem(6230) || countitem(6231) || countitem(6456)) + set .@bWeaponUp,1; + if (countitem(6239) || countitem(6232) || countitem(6233) || countitem(6234) || countitem(6235) || countitem(6457)) + set .@bArmorUp,1; + if (!.@bWeaponUp && !.@bArmorUp) { + mes "[Refine Master]"; + mes "Hello!"; + mes "What's up?"; + mes "I'm a specialist"; + mes "for refining items,"; + mes "but I don't work anymore."; + next; + switch(select("I'll go on my way.:Hmm... this makes me curious.")) { + case 1: + mes "[Refine Master]"; + mes "Take care, adventurer."; + close; + case 2: + mes "[Refine Master]"; + mes "Actully, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000..."; + mes "Bye bye~!"; + close; + } + } + emotion e_gasp; + mes "[Refine Master]"; + mes "Greetings!"; + mes "I can refine an item up to the ^006400same level as your ticket^000000."; + mes "You don't have to worry! There's no chance of breaking your item."; + next; + if(select("I'll come back later.:Refine item with ticket.") == 1) { + mes "[Refine Master]"; + mes "Okay."; + mes "You can come again later."; + close; + } + mes "[Refine Master]"; + mes "Which equipment would you like to refine?"; + next; + setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower"; + 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 "[Refine Master]"; + mes "You have to equip the item you want to refine."; + close; + } + if (!getequipisenableref(.@part)) { + emotion e_otl; + mes "[Refine Master]"; + mes "Oh, I'm sorry."; + mes "This item is impossible to refine."; + close; + } + switch(getequipweaponlv(.@part)) { + default: + case 0: + setarray .@tickets[0],6457,6235,6234,6233,6232,6239; + setarray .@levels[0],5,6,7,8,9,11; + set .@type$,"Armor"; + set .@check,.@bArmorUp; + break; + case 1: + case 2: + case 3: + case 4: + setarray .@tickets[0],6456,6231,6230,6229,6228,6238; + setarray .@levels[0],5,6,7,8,9,11; + set .@type$,"Weapon"; + set .@check,.@bWeaponUp; + break; + } + if (!.@check) { + emotion e_dots; + mes "[Refine Master]"; + mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000."; + mes "See you later!"; + close; + } + mes "[Refine Master]"; + mes "Please choose which ^006400"+.@type$+" Refine Ticket^000000 you want to use."; + next; + set .@menu$,""; + for(set .@i,0; .@i= .@ticket_lv) { + emotion e_swt2; + mes "[Refine Master]"; + mes "^8B4513This item is already refined as much as your deed.^000000"; + mes "Please come along with an item refined less than your ticket."; + close; + } + mes "[Refine Master]"; + mes "I'm going to refine ^006400"+getequipname(.@part)+"^8B4513 up to the +"+.@ticket_lv+" level^000000 with ^006400"+getitemname(.@ticket_id)+"^000000."; + mes "May I proceed?"; + next; + if(select("No.:Yes.") == 1) { + emotion e_dots; + mes "[Refine Master]"; + mes "Oh, you changed your mind."; + mes "Ok."; + mes "You can come back later."; + close; + } + mes "[Refine Master]"; + mes "Great."; + mes "As you wish!"; + mes "I have my own special way to refine..."; + mes ".......ka boom!"; + specialeffect EF_SUI_EXPLOSION; + if (countitem(.@ticket_id)) + delitem .@ticket_id,1; + else { + next; + mes "Error!"; + mes "Please report this."; + close; + } + for(set .@i,getequiprefinerycnt(.@part); .@i<.@ticket_lv; set .@i,.@i+1) + successrefitem .@part; + next; + emotion e_ho; + mes "[Refine Master]"; + mes "Alright, here it is~"; + mes "Well, ^0000FF"+strcharinfo(0)+"^000000!"; + mes "Congratulations on your shining "+.@type$+"."; + mes "You look GREAT!"; + mes "Farewell~!"; + close; +} -- cgit v1.2.3-60-g2f50