//===== rAthena Script ======================================= //= Infinite Space //===== Description: ========================================= //= [Walkthrough Conversion] //= Infinite Space related merchants and enchanter //===== Changelogs: ========================================== //= 1.0 Initial release [crazyarashi] //= 1.1 Removed unecessary use of functions [Everade] //= 1.2 Added warp scroll merchant [Everade] //============================================================ // Food Merchant - shop inf_ration -1,512:-1,513:-1,515:-1,516:-1 cmd_fild07,63,268,1 script Emergency Food Merchant#pa0829_01 4_M_BIBI,{ mes "[Emergency Food Merchant]"; mes "I have a lot of stuff over here, of course, not for free."; close2; callshop "inf_ration",1; end; } // Warp Scroll Seller cmd_fild07,375,167,1 script Ruins Black Trader#pa0829_01 4_F_JOB_HUNTER,{ mes "[Ruins Black Trader]"; mes "Hey, isn't it hard to walk in and out of here every time? For just ^0000ff20,000^000000 Zeny, you can have a scroll that will take you directly to the entrance of the ruins, what do you think?"; Purchase: next; switch( select( "Give me one", "I don't think so" )) { case 1: if (!checkweight(22980,1) || (MaxWeight - Weight) < 1000) { mes "You can't proceed with the conversation because you have a large quantity of items."; mes "Please organize your items and try again."; close; } else if (Zeny < 20000) { mes "[Ruins Black Trader]"; mes "You don't seem to have any more money. A scroll costs 20,000 Zeny."; close; } Zeny -= 20000; getitem 22980,1; mes "[Ruins Black Trader]"; mes "It was a good deal. Need more?"; goto Purchase; case 2: mes "[Ruins Black Trader]"; mes "Come back anytime"; close; } } // Equipment Shop cmd_fild07,57,275,5 script Artifact Appraiser#pa0829_01 1_F_02,{ if (!checkweight(1201,1) || (MaxWeight - Weight) < 1000) { mes "You can't proceed with the conversation because you have a large quantity of items."; mes "Please organize your items and try again."; close; } .@stone_id = 6905; mes "[ Artifact Appraiser ]"; mes "Choose the type of equipment that you want to purchase. You can purchase as many as you want, as long as you have " + getitemname(.@stone_id) + "."; next; switch (select("Cancel:Weapons:Armors")) { case 1: mes "[ Artifact Appraiser ]"; mes "Please come back whenever you want~"; close; case 2: setarray .@equip_id,1994,1938,13323,13126,28703,2024,16038,21014,28105,18128; .@price = 50; break; case 3: setarray .@equip_id,15141,22075,20779,19033; .@price = 50; break; } .@menu$ = "Cancel:"; for (.@i = 0; .@i < getarraysize(.@equip_id); .@i++) .@menu$ += getitemname(.@equip_id[.@i]) + ":"; .@s = select(.@menu$) - 1; switch (.@s) { case 0: mes "[ Artifact Appraiser ]"; mes "Please come back whenever you want~"; close; default: .@s--; mes "[ Artifact Appraiser ]"; mes "You need ^0000FF" + .@price + "^000000 " + getitemname(.@stone_id) + " to purchase the " + getitemname(.@equip_id[.@s]) + "~"; next; if (select("Cancel:Purchase") == 1) { mes "[ Artifact Appraiser ]"; mes "Please come back whenever you want~"; close; } if (countitem(.@stone_id) < .@price) { mes "[ Artifact Appraiser ]"; mes "You don't have enough " + getitemname(.@stone_id) + " to purchase this item."; close; } mes "[ Artifact Appraiser ]"; mes "Thank you for your trust. Please come back again next time."; delitem .@stone_id,.@price; getitem .@equip_id[.@s],1; close; } } // Equipment Enchanter cmd_fild07,60,275,3 script Artifact Enhancer#pa0829_01 4_F_JOB_BLACKSMITH,{ if (!checkweight(1201,1) || (MaxWeight - Weight) < 1000) { mes "You can't proceed with the conversation because you have a large quantity of items."; mes "Please organize your items and try again."; close; } disable_items; .@stone_id = 6905; function equip_check; mes "[ Artifact Enhancer ]"; mes "If you're looking to strengthen the equipment that you've obtained in the Infinite Space, you have come to the right place."; mes "Do you have any " + getitemname(.@stone_id) + "?"; next; switch (select("How do I enchant my equipment?:Enchant equipment.:Initialize equipment's enchant.")) { case 1: mes "[ Artifact Enhancer ]"; mes "You'll be able to obtain " + getitemname(.@stone_id) + ", if you explore the space under the Paros Lighthouse."; next; mes "[ Artifact Enhancer ]"; mes "For that material, I can reinforce the equipment that you got from the Infinite Space."; next; mes "[ Artifact Enhancer ]"; mes "I can only enchant the 3rd and the 4th slot."; next; mes "[ Artifact Enhancer ]"; mes "There is no chance of the equipment being destroyed during the enchanting process, but there's a high probability that it will be destroyed when initializing the enchants."; next; mes "[ Artifact Enhancer ]"; mes "Then come visit me when you want to enchant the equipment."; break; case 2: .@stone_id = 6905; .@fee = 20; mes "[ Artifact Enhancer ]"; mes "Please select the equipment that you want to enchant."; next; switch (select("Cancel:Weapon:Armor:Shoes:Garment:Helm")) { case 1: mes "[ Artifact Enhancer ]"; mes "Then come visit me when you want to enchant the equipment."; close; case 2: .@part = EQI_HAND_R; break; case 3: .@part = EQI_ARMOR; break; case 4: .@part = EQI_SHOES; break; case 5: .@part = EQI_GARMENT; break; case 6: .@part = EQI_HEAD_TOP; break; } .@equip_id = getequipid(.@part); .@refine = getequiprefinerycnt(.@part); equip_check(.@equip_id); for (.@i = 0;.@i < 4;.@i++) { .@card[.@i] = getequipcardid(.@part,.@i); .@check[.@i] = getequipcardid(.@part,.@i); } if (.@card[2] > 0) { mes "[ Artifact Enhancer ]"; mes "I can only enchant up to the third slot. Your equipment can't be further enchanted."; close; } switch (.@part) { case EQI_HAND_R: setarray .@enchant$, "4700,4701:4710,4711:4720,4721", "4811,4810,4809,4808,4820,4821,4822,4823:4815,4814,4813,4812,4826,4827,4828,4829:4832,4833,4834,4835,4836,4837,4838,4839"; break; case EQI_ARMOR: case EQI_SHOES: setarray .@enchant$, "4700,4701,4702,4703:4710,4711,4712,4713:4720,4721,4722,4723", "4795,4796,4797:4870,4871,4800:4870,4871,4800"; break; case EQI_GARMENT: case EQI_HEAD_TOP: setarray .@enchant$, "4700,4701,4702,4703:4710,4711,4712,4713:4720,4721,4722,4723", "4861,4862,4867,4868,4900:4861,4862,4867,4868,4900:4861,4862,4867,4868,4900"; break; } .@slot = (.@card[3] > 0 ? 2 : 3); .@index = (.@slot == 3 ? 0 : 1); mes "[ Artifact Enhancer ]"; mes "You can choose 3 types of enchant, and the enchant fee is " + .@fee + " " + getitemname(.@stone_id) + "."; mes "I'll make sure it gets enchanted without a problem."; next; .@type = select("Quit:Physical:Magical:Range") - 2; mes "[ Artifact Enhancer ]"; if (.@slot == 3) mes "Okay, let's begin the first enchantment."; else mes "Okay, let's proceed with the second enchantment."; next; if (select("I'll return later.:Please proceed.") == 1) { mes "[ Artifact Enhancer ]"; mes "If you change your mind, just return to me."; close; } if (countitem(.@stone_id) < .@fee) { mes "[ Artifact Enhancer ]"; mes "Hm. By the way, I don't think you were listening, you don't have enough " + getitemname(.@stone_id) + "."; close; } explode(.@T$,.@enchant$[.@index],":"); explode(.@TT$,.@T$[.@type],","); .@enchant = atoi(.@TT$[rand(getarraysize(.@TT$))]); .@card[.@slot] = .@enchant; delitem .@stone_id,.@fee; if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipRefineHack", .@part, .@refine) || callfunc("F_IsEquipCardHack", .@part, .@check[0], .@check[1], .@check[2], .@check[3])) close; delequip .@part; getitem2 .@equip_id,1,1,.@refine,0,.@card[0],.@card[1],.@card[2],.@card[3]; specialeffect2 EF_REPAIRWEAPON; mes "[ Artifact Enhancer ]"; mes "Hm. It was well done. Check your equipment at once."; break; case 3: .@stone_id = 6905; .@fee = 30; .@break_chance = 30; mes "[ Artifact Enhancer ]"; mes "Please select the equipment that you want to enchant."; next; switch (select("Cancel:Weapon:Armor:Shoes:Garment:Helm")) { case 1: mes "[ Artifact Enhancer ]"; mes "Then come visit me when you want to enchant the equipment."; close; case 2: .@part = EQI_HAND_R; break; case 3: .@part = EQI_ARMOR; break; case 4: .@part = EQI_SHOES; break; case 5: .@part = EQI_GARMENT; break; case 6: .@part = EQI_HEAD_TOP; break; } .@equip_id = getequipid(.@part); .@refine = getequiprefinerycnt(.@part); equip_check(.@equip_id); for (.@i = 0; .@i < 4; .@i++) { .@card[.@i] = getequipcardid(.@part,.@i); .@check[.@i] = .@card[.@i]; } if (.@card[3] == 0) { mes "[ Artifact Enhancer ]"; mes "Your equipment doesn't have any enchant on it."; close; } mes "[ Artifact Enhancer ]"; mes "There is a chance that your infinite space equipment will be destroyed on the initializion process. Are you still willing to proceed?"; next; if (select("Quit:Proceed") == 1) { mes "[ Artifact Enhancer ]"; mes "If you change your mind, just return to me."; close; } if (countitem(.@stone_id) < .@fee) { mes "[ Artifact Enhancer ]"; mes "Hm. By the way, I don't think you were listening, you don't have enough " + getitemname(.@stone_id) + "."; close; } delitem .@stone_id,.@fee; if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipRefineHack", .@part, .@refine) || callfunc("F_IsEquipCardHack", .@part, .@check[0], .@check[1], .@check[2], .@check[3])) close; delequip .@part; if (rand(1,100) > .@chance) { getitem2 .@equip_id,1,1,.@refine,0,.@card[0],.@card[1],0,0; specialeffect2 EF_REPAIRWEAPON; mes "[ Artifact Enhancer ]"; mes "Hm. It was well done. Check your equipment at once."; } else { specialeffect2 EF_REFINEFAIL; mes "[ Artifact Enhancer ]"; mes "Well, I did warn you. You aren't lucky, eh?"; } break; } close; function equip_check { setarray .@equip_id,1994,1938,13323,13126,28703,2024,16038,21014,28105,18128,15141,22075,20779,19033; if (!getarg(0)) { mes "[ Artifact Enhancer ]"; mes "Did you take off your equipment?"; close; } if (inarray(.@equip_id,getarg(0)) == -1) { mes "[ Artifact Enhancer ]"; mes "This equipment is not suitable for enchanting. Don't forget that only the infinite equipment series can be enchanted."; close; } return; } }