rathena/npc/re/merchants/enchan_sage_legacy_17_2.txt
Everade 7853e926c2
Episode 17.2 - Sage's Legacy (#6799)
* Episode 17.2 Initial Release of instances and quests
* Added warp portals and monster spawn scripts
* Added Episode 17.2 related database entries

Closed #6470 

Thanks to @Megelith @Pokye 

Co-authored-by: JohnnyPlayy <JohnnyPlayy@users.noreply.github.com>
Co-authored-by: Everade <privacy@gatheringro.com>
Co-authored-by: crazyarashi <26841779+crazy-arashi@users.noreply.github.com>
Co-authored-by: Atemo <capucrath@gmail.com>
2023-04-12 21:27:34 +02:00

486 lines
16 KiB
Plaintext
Raw Permalink Blame History

//===== rAthena Script =======================================
//= Episode 17.2 - Sage's Legacy Enchants
//===== Description: =========================================
//= [Walkthrough Conversion]
//= Sage's Legacy related merchants and enchanters
//===== Changelog: ===========================================
//= 1.0 Initial release [crazyarashi]
//= 1.1 Optimizations and cleanup [Everade]
//= 1.2 Cleanup [Capuche]
//============================================================
ba_in01,87,370,3 script Lisa#ep172_merchant 20698,{
if (checkweight(1201,3) == 0) {
mes "^ff0000It seems that the type or weight of the item you have is too much. Please organize your inventory.^000000";
close;
}
disable_items;
mes "[Lisa]";
mes "Welcome welcome~";
next;
switch( select( "Explore Devices", "Automatic Engine Wing Enhancement", "Automatic Armor Enhancement", "Automatic Leg Enhancement", "Automatic Accessories(R) Enhancement", "Automatic Accessories(L) Enhancement" ) ) {
case 1:
mes "[Lisa]";
mes "If you bring automatic equipment and reinforcement modules, we can enchant the appropriate module on the equipment.";
next;
mes "[Lisa]";
mes "This is done according to the specification module, so the equipment will not be destroyed. However, the number of upgrades can vary depending on the module.";
next;
mes "[Lisa]";
mes "Then please visit again when you need help~";
close;
case 2:
.@part = EQI_GARMENT;
setarray .@equip_required[0],480020,480021;
break;
case 3:
.@part = EQI_ARMOR;
setarray .@equip_required[0],450127,450128;
break;
case 4:
.@part = EQI_SHOES;
setarray .@equip_required[0],470022,470023;
break;
case 5:
.@part = EQI_ACC_R;
setarray .@equip_required[0],490024,490026;
break;
case 6:
.@part = EQI_ACC_L;
setarray .@equip_required[0],490025,490027;
break;
}
.@equip_id = getequipid(.@part);
.@equip_name$ = getequipname(.@part);
.@refine = getequiprefinerycnt(.@part);
for ( .@i = 0; .@i < 4; ++.@i )
.@card[.@i] = getequipcardid(.@part,.@i);
mes "[Lisa]";
mes "If you bring automatic equipment and reinforcement modules, we can enchant the appropriate module on the equipment.";
next;
mes "[Lisa]";
mes strcharinfo(0) + ".";
mes "Please select the grade of module that you want to use.";
next;
switch( select( "Cancel", "Normal Grade", "Rare Grade", "Unique Grade", "Legendary Grade", "Epic Grade 1", "Epic Grade 2", "Epic Grade 3" ) ) {
case 1:
mes "[Lisa]";
mes "Stopping conversation.";
close;
case 2:
setarray .@module_etc[0],1000105,1000106,1000107,1000108,1000109,1000110,1000111,1000112;
break;
case 3:
setarray .@module_etc[0],1000113,1000114,1000115,1000116,1000117,1000118,1000119,1000120,1000121,1000122,1000123,1000124,1000125,1000126,1000127;
break;
case 4:
setarray .@module_etc[0],1000128,1000129,1000130,1000131,1000132,1000133,1000134,1000135,1000136,1000137,1000138,1000139,1000140,1000141,1000142,1000143,1000207,1000208;
break;
case 5:
setarray .@module_etc[0],1000144,1000145,1000146,1000147,1000148,1000149;
break;
case 6:
setarray .@module_etc[0],1000152,1000153,1000154,1000155,1000156,1000157,1000158,1000159,1000160,1000161,1000162,1000163,1000164,1000165,1000166,1000167,1000168;
break;
case 7:
setarray .@module_etc[0],1000169,1000170,1000171,1000172,1000173,1000174,1000175,1000176,1000177,1000178,1000179,1000180,1000181,1000182,1000183,1000184,1000185;
break;
case 8:
setarray .@module_etc[0],1000186,1000187,1000188,1000189,1000190,1000191,1000192,1000193,1000194,1000195,1000196,1000197,1000198,1000199,1000200,1000201,1000202;
break;
}
.@size = getarraysize(.@module_etc);
.@menu$ = "Cancel:";
// Build the menu according to all the modules with the given grade in inventory
for ( .@i = 0; .@i < .@size; ++.@i ) {
if (countitem(.@module_etc[.@i]) < 1)
.@menu$ += "^808080(Module Amount 0)^000000" + ":";
else {
.@item_name$ = getitemname(.@module_etc[.@i]);
.@item_name$ = replacestr(.@item_name$, "Automatic Modification Module(", "");
.@item_name$ = replacestr(.@item_name$, ")", "");
.@menu$ += .@item_name$ + ":";
}
}
.@s = select(.@menu$) - 2;
if (.@s == -1) {
mes "[Lisa]";
mes "Stopping conversation.";
close;
}
.@module_id = .@module_etc[.@s];
if (countitem(.@module_id) < 1) {
mes "[Lisa]";
mes "You must possess a module in your inventory that matches the efficacy to proceed with the enhancement.";
close;
}
if (.@equip_required[0] != .@equip_id && .@equip_required[1] != .@equip_id) {
mes "[Lisa]";
mes "Please make sure you have equipped the proper automatic equipment that you want to enhance.";
close;
}
if (.@card[1] > 0) {
mes "[Lisa]";
mes "This automatic equipment is already at its maximum capacity.";
mes "Please try another automatic equipment.";
close;
}
if (.@module_id < 1000105 || .@module_id == 1000150 || .@module_id == 1000151 || (.@module_id >= 1000203 && .@module_id != 1000207 && .@module_id != 1000208)) {
mes "[Lisa]";
mes "Unknown error has occured.";
close;
}
// Each part has a list of allowed module and a maximum allowed number of the same module
switch( .@part ) {
case EQI_GARMENT:
setarray .@module_etc_data[0],1000105,3,1000106,3,1000125,2,1000126,2,1000127,2,1000135,1,1000142,1,1000208,1;
break;
case EQI_ARMOR:
setarray .@module_etc_data[0],1000105,3,1000106,3,1000122,2,1000123,2,1000124,2,1000128,1,1000129,1,1000130,1,1000131,1,1000132,1,1000133,1,1000207,1,1000140,1;
.@size = getarraysize(.@module_etc_data);
// Epic enchants. Max 2 epic enchants of the same enchant allowed
for (.@i = 1000152; .@i < 1000203; .@i++) {
setarray .@module_etc_data[.@size], .@i, 2;
.@size += 2;
}
break;
case EQI_SHOES:
setarray .@module_etc_data[0],
1000105,3,1000106,3,1000119,2,1000120,2,1000121,2,1000134,1,1000141,1,
1000144,1,1000145,1,1000146,1,1000147,1,1000148,1,1000149,1; // Legendary enchants (must be unique on EQI_SHOES)
break;
case EQI_ACC_L:
case EQI_ACC_R:
setarray .@module_etc_data[0],1000107,3,1000108,3,1000109,3,1000110,3,1000111,3,1000112,3,1000113,2,1000114,2,1000115,1,1000116,1,1000117,1,1000118,1,1000136,1,1000137,1,1000138,1,1000139,1,1000143,1;
break;
}
.@data_index = inarray(.@module_etc_data, .@module_id);
if (.@data_index == -1) {
mes "[Lisa]";
mes "You can not enchant this module to this automatic equipment.";
close;
}
// Max number of the selected module allowed
.@max_module = .@module_etc_data[.@data_index+1];
// Bind the module etc to the specific enchant
for ( .@i = 1000105; .@i < 1000203; ++.@i ) {
if (.@i == 1000150 || .@i == 1000151)
continue;
.@auto_module[.@i] = 310082 + .@size_auto_module;
.@size_auto_module++;
}
.@auto_module[1000207] = 310178;
.@auto_module[1000208] = 310179;
// Check the count of the corresponding enchant in card slots
.@enchant_id = .@auto_module[.@module_id];
if (.@enchant_id == 0) {
mes "[Lisa]";
mes "Unknown error has occured.";
close;
}
if (countinarray(.@card[0], .@enchant_id) >= .@max_module) {
mes "[Lisa]";
mes "This automatic equipment has already maximized the enhancement from this module.";
mes "Please try another module.";
close;
}
mes "[Lisa]";
mes "Are you sure you want to enchance your ^FF0000" + .@equip_name$ + "^000000 with ^0000CD" + getitemname(.@module_id) + "^000000? This process cannot be reversed.";
next;
if (select( "Wait... Don't", "I'm sure. Do it." ) == 1) {
mes "[Lisa]";
mes "Stopping conversation.";
close;
}
delitem .@module_id,1;
if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipRefineHack", .@part, .@refine) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]))
end;
for ( .@i = 3; .@i > 0; .@i--) {
if (.@card[.@i] == 0) {
.@card[.@i] = .@enchant_id;
break;
}
}
delequip .@part;
getitem2 .@equip_id,1,1,.@refine,0,.@card[0],.@card[1],.@card[2],.@card[3];
mes "[Lisa]";
mes "Woaaaah~ I can feel the power of your automatic equipment already~!";
close;
}
//= Merchants
- marketshop ep172littlemanager00 -1,1000227:172:999999
ba_in01,87,386,3 script Child Manager <20><>#ep172_pet EP17_2_CHILD_ADMIN1,{
if (checkweight(1201,3) == 0) {
mes "- You have too many items.";
mes "Please clear your inventory and try again. -";
close;
}
mes "[Child Manager <20><>]";
mes "I have a whole bunch of little stuffs!";
next;
switch( select( "Little Manager", "Cloud Cotton", "Little Headress", "Cancel" ) ) {
case 1:
mes "[Child Manager <20><>]";
mes "If you want to play with the little manager, it would cost you 30 Barmeal Tickets.";
next;
if (select( "Exchange.", "Stop." ) == 2) {
mes "[Child Manager <20><>]";
mes "Then, it's time for me to play!";
close;
}
if (countitem(1000103) < 30) {
mes "[Child Manager <20><>]";
mes "Like I said, if you want to play with the little manager, you'll need 30 Barmeal Tickets!";
close;
}
mes "[Child Manager <20><>]";
mes "Have fun with your new friend!";
delitem 1000103,30;
getitem 9123,1;
close;
case 2:
callshop "ep172littlemanager00";
end;
case 3:
callshop "barter_Ep_17_2_C_Admin_Acc";
end;
case 4:
mes "[Child Manager <20><>]";
mes "Then, it's time for me to play!";
close;
}
end;
}
//= Cube Shop
- marketshop ep172cubeshop00 -1,100251:10000000:-1,100252:30000000:-1
ba_in01,87,376,3 script Cube Lane#ep172cube 4_EP17_GUARD_B,{
mes "[Cube Lane]";
mes "We are offering reinforcement cubes that will refine your ^0000CD+4^000000 Illusion and Automatic Equipment to ^FF0000+7^000000 in an instant!";
mes "Varmundt is no doubt the best man in the world!";
close2;
callshop "ep172cubeshop00";
end;
}
//= Module Shop
ba_in01,87,373,3 script Spiera#ep172_soapstone MD_ASSISTANT,{
callshop "barter_EP17_2_EP";
end;
}
//= Equipment Shop
ba_in01,87,383,3 script Yeoncheong#equipment_exchange 4_EP17_CLEANER_W,{
if (checkweight(1201,3) == 0) {
cutin "ep172_omega.bmp",2;
mes "[Yeoncheong]";
mes "The bag is full. Please check the weight and number of items in your possession before talking again.";
close3;
}
disable_items;
cutin "ep172_omega",2;
mes "[Yeoncheong]";
mes "We accept Barmeal Tickets for upgrading your Illusion Equipment into Automatic Requipments.";
mes "What would you like to exchange?";
next;
switch( select( "Exchange Information", "Automatic Equipment Exchange", "Automatic Accessory Exchange", "Quit" ) ) {
case 1:
mes "[Yeoncheong]";
mes "You can exchange your ^0000CD+9 Illusion Armor, Engine, or Leg and 900 Barmeal Tickets^000000 to ^FF0000Automatic Armor, Engine, or Leg^000000.";
next;
mes "[Yeoncheong]";
mes "The ^FF0000Automatic Accessories^000000 can be exchanged for ^0000CDIllusion Accessories and 1500 Barmeal Tickets^000000.";
next;
mes "[Yeoncheong]";
mes "The equipment you want to exchange must be in your inventory and talk to me.";
mes "^FF0000Bring only one equipment that you want to exchange and proceed.^000000";
close3;
case 2:
.@shop$ = "barter_auto_equip_1";
break;
case 3:
.@shop$ = "barter_auto_equip_2";
break;
case 4:
mes "[Yeoncheong]";
mes "Have a nice day, dear guest~";
close3;
}
mes "[Yeoncheong]";
mes "^FF0000Bring only one equipment that you want to exchange and proceed.^000000";
mes "If there are multiple equipments in your inventory, it will be exchanged randomly if it meets the condition.";
close2;
cutin "",255;
callshop .@shop$;
end;
}
//= Device Module Exchange
ba_in01,87,380,3 script Yecheon#ep172module_trader 4_EP17_CLEANER_W,{
if (checkweight(1201,3) == 0) {
cutin "ep172_omega",2;
mes "[Yecheon]";
mes "The bag is full. Please check the weight and number of items in your possession before talking again.";
close3;
}
disable_items;
cutin "ep172_omega",2;
mes "[Yecheon]";
mes "I can provide you an Automatic Module, Physical Automatic Improvement Device, and Magical Automatic Improvement Device. It will help you the improve abilites of your automatic equipments.";
next;
cutin "",255;
switch( select( "More information.", "Get Automatic Module", "Get Physical Automatic Improvement Device", "Get Magical Automatic Improvement Device", "Cancel" ) ) {
case 1:
cutin "ep172_omega",2;
mes "[Yecheon]";
mes "You can get an ^FF0000automatic module^000000 for ^0000CD90 Barmeal Tickets^000000. I will give you a random automatic module excluding the epic grade modules.";
next;
mes "[Yecheon]";
mes "I'm also providing ^FF0000Physical Automatic Improvement Device and Magical Automatic Improvement Device^000000. You can exchange it for ^0000CD45 Barmeal Tickets^000000, or ^0000CD1500000 Zeny^000000.";
next;
mes "[Yecheon]";
mes "Then, combat-specialized guest, do safely improve your abilities.";
close3;
case 2:
.@price = 90;
cutin "ep172_omega",2;
mes "[Yecheon]";
mes "I will exchange 1 random Automatic Module excluding the epic grade modules for " + .@price + " " + mesitemlink(1000103) + ".";
next;
cutin "",255;
if (select( "Exchange Barmeal Ticket.", "Do not exchange" ) == 2) {
mes "[Yecheon]";
mes "Transaction ended.";
close3;
}
cutin "ep172_omega",2;
if (countitem(1000103) < .@price) {
mes "[Yecheon]";
mes "You don't have enough Barmeal tickets for the exchange.";
close3;
}
mes "[Yecheon]";
mes "I exchanged it for one random Automatic Module.";
delitem 1000103,.@price;
getitem rand(1000105,1000149),1;
close3;
case 3:
.@price = 45;
.@zeny = 1500000;
cutin "ep172_omega",2;
mes "[Yecheon]";
mes "I will exchange ^FF00001 Physical Automatic Improvement Device^000000 for " + .@price + " " + mesitemlink(1000103) + " or " + .@zeny + " Zeny.";
next;
cutin "",255;
switch( select( "Exchange for Barmeal Ticket.", "Exchange for 1500000 Zeny.", "Do not exchange." ) ) {
case 1:
cutin "ep172_omega",2;
if (countitem(1000103) < .@price) {
mes "[Yecheon]";
mes "You don't have enough Barmeal tickets for the exchange.";
close3;
}
delitem 1000103,.@price;
break;
case 2:
cutin "ep172_omega",2;
if (Zeny < .@zeny) {
mes "[Yecheon]";
mes "You don't have enough Zeny for the exchange.";
close3;
}
Zeny -= .@zeny;
break;
case 3:
mes "[Yecheon]";
mes "Transaction ended.";
close3;
}
mes "[Yecheon]";
mes "I exchanged it for one random Physical Automatic Improvement Device.";
.@r = rand(100);
if (.@r < 50)
getitem 100164,1;
else if (.@r < 80)
getitem 100165,1;
else
getitem 100166,1;
close3;
case 4:
.@price = 45;
.@zeny = 1500000;
cutin "ep172_omega",2;
mes "[Yecheon]";
mes "I will exchange ^FF00001 Magical Automatic Improvement Device^000000 for " + .@price + " " + mesitemlink(1000103) + " or " + .@zeny + " Zeny.";
next;
cutin "",255;
switch( select( "Exchange for Barmeal Ticket.", "Exchange for 1500000 Zeny.", "Do not exchange." ) ) {
case 1:
cutin "ep172_omega",2;
if (countitem(1000103) < .@price) {
mes "[Yecheon]";
mes "You don't have enough Barmeal tickets for the exchange.";
close3;
}
delitem 1000103,.@price;
break;
case 2:
cutin "ep172_omega",2;
if (Zeny < .@zeny) {
mes "[Yecheon]";
mes "You don't have enough Zeny for the exchange.";
close3;
}
Zeny -= .@zeny;
break;
case 3:
mes "[Yecheon]";
mes "Transaction ended.";
close3;
}
mes "[Yecheon]";
mes "I exchanged it for one random Magical Automatic Improvement Device.";
.@r = rand(100);
if (.@r < 50)
getitem 100167,1;
else if (.@r < 80)
getitem 100168,1;
else
getitem 100169,1;
close3;
case 5:
mes "[Yecheon]";
mes "Transaction ended.";
close3;
}
end;
}
ba_in01,87,389,2 script Butterfly Merchant#ba_in01 4_EP17_MASTER_A,{
if (ep17_2_main < 8) {
mes "[Butterfly Merchant]";
mes "Sorry. Registration is required to purchase butterflies.";
close;
}
mes "[Butterfly Merchant]";
mes "Welcome.";
mes "Do you need wings to move to Barmund Mansion?";
close2;
callshop "barter_Teleport_Ep17_02";
end;
}