You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
11 KiB
Plaintext

//===== 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;
}
}