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