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.

882 lines
26 KiB
Plaintext

//===== rAthena Script =======================================
//= Friday Memorial Dungeon
//===== Description: =========================================
//= [Walkthrough Conversion]
//= Friday Memorial Dungeon
//===== Changelogs: ==========================================
//= 1.0 Initial release [Everade]
//= 1.1 Clean-up [Capuche]
//============================================================
gef_tower,57,170,3 script Marry Jay 4_F_JOB_BLACKSMITH,{
if (BaseLevel < 130) {
mes "[Marry Jay]";
mes "Your base level is too low, come back when you hit level 130.";
close;
}
mes "^ff0000If you do any monster processing, such as monster taming within the dungeon, it won't count towards your progress. Please take note.^000000";
next;
.@day = gettime(DT_DAYOFWEEK);
if (.@day != FRIDAY) {
mes "[Marry Jay]";
mes "Oh, a curious onlooker? I'm Marry Jay, the person in charge of Fridays among the days of the week.";
next;
select( "When is the opening time?" );
mes "[Marry Jay]";
mes "The dungeon will be open during:";
mes "^0000FFFriday 00:00 ~ Friday 23:59^000000";
next;
mes "[Marry Jay]";
mes "I hope to see you when Friday arrives~";
close;
}
.@md_name$ = "Friday Dungeon";
switch(checkquest(12379,PLAYTIME)) {
case -1:
break;
case 0:
case 1:
mes "[Marry Jay]";
mes "Sorry, but the entry period to the " + .@md_name$ + " has expired.";
mes "Take a rest while waiting for the dungeon to be available again.";
close;
case 2:
erasequest 12379;
mes "[Marry Jay]";
mes "The cooldown has expired.";
mes "You may re-enter the Memorial Dungeon.";
close;
}
mes "[Marry Jay]";
mes "You came just in time.";
mes "The memorial dungeon is just ready to be opened.";
mes "Would you like to enter now?";
next;
if (is_party_leader() == true)
.@menu$ = "Prepare Friday Memorial";
switch( select( .@menu$, "Enter Friday Memorial", "Cancel" ) ) {
case 1:
instance_create(.@md_name$);
mes "[Marry Jay]";
mes "The Memorial Dungeon has been created.";
mes "You may now enter.";
close;
case 2:
switch( instance_enter(.@md_name$) ) {
case IE_NOMEMBER:
if (is_party_leader() == true)
end;
mes "Only party members can enter this Memorial dungeon.";
close;
case IE_NOINSTANCE:
if (is_party_leader() == true) {
mes "There is no Memorial Dungeon registered.";
close;
}
mes "The Friday Memorial Dungeon does not exist.";
mes "Your party leader has not yet created the Memorial dungeon.";
close;
case IE_OTHER:
mes "An unknown error occurred.";
close;
case IE_OK:
mes "[Marry Jay]";
mes "Off you go!";
mapannounce "gef_tower", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering the " + .@md_name$ + ".", bc_map, 0xFF99;
if (isbegin_quest(12379) < 1)
setquest 12379;
end;
}
end;
case 3:
mes "[Marry Jay]";
mes "You have not prepared?";
mes "Can't really help it I guess";
close;
}
end;
}
//Instance
1@md_gef,185,81 monster Shining Plant 1083,1,1800000,900000
1@md_gef,110,129,6 script Marry Jay#0_1 4_F_JOB_BLACKSMITH,{
if (is_party_leader() == false)
end;
mes "[Marry Jay]";
mes "Before we start setting up the environment here, we'll give you the chance to choose an appropriate difficulty level.";
mes "I could make my own choice, but each person handles it differently based on their abilities.";
next;
switch( select( "Cancel", "LV130 ~ 199", "LV200 + " ) ) {
case 1:
close;
case 2:
//MinLevel, Lich Lord, Nightmare, Jakk, Ghoul, Drainliar
'hard = 0;
setarray 'mob[0],130,3658,3660,3662,3664,3666;
break;
case 3:
if (BaseLevel < 200) {
mes "[Marry Jay]";
mes "You can't choose this difficulty, because your base level is below 200.";
close;
}
'hard = 1;
setarray 'mob[0],200,3659,3661,3663,3665,3667;
break;
}
if (BaseLevel < 'mob[0]) {
mes "[Marry Jay]";
mes "Your base level is too low to select this, you need to be level " + 'mob[0] + " or above.";
close;
}
close2;
npctalk "Now, this place is about to become a hunting ground. I'll get out and close the front door.";
sleep 4000;
npctalk "Good Luck~";
sleep 3000;
if ('step == 0) {
'step = 1;
donpcevent instance_npcname("md_gef_mobs_spawn") + "::OnStart";
disablenpc();
enablenpc instance_npcname("The Stranger#cadaver");
enablenpc instance_npcname("Bizzare Sculpture#boss");
}
end;
}
1@md_gef,1,1,6 script md_gef_mobs_spawn -1,{
end;
OnStart:
.@npc_name$ = instance_npcname("md_gef_mobs_spawn");
monster 'map_md_gef$,0,0,"Nightmare",'mob[2],20, .@npc_name$ + "::OnNightmareDead";
monster 'map_md_gef$,0,0,"Jakk",'mob[3],30, .@npc_name$ + "::OnJakkDead";
monster 'map_md_gef$,0,0,"Ghoul",'mob[4],30, .@npc_name$ + "::OnGhoulDead";
monster 'map_md_gef$,0,0,"Drainliar",'mob[5],20, .@npc_name$ + "::OnDrainliarDead";
end;
OnNightmareDead:
callsub( S_Mob, 'mob[2], "Nightmare", "OnNightmareDead" );
OnJakkDead:
callsub( S_Mob, 'mob[3], "Jakk", "OnJakkDead" );
OnGhoulDead:
callsub( S_Mob, 'mob[4], "Ghoul", "OnGhoulDead" );
OnDrainliarDead:
callsub( S_Mob, 'mob[5], "Drainliar", "OnDrainliarDead" );
S_Mob:
'count++;
if (('count % 100) == 0) {
'rand_chest++;
if ('rand_chest > 4)
'rand_chest = 1;
// Treasure Chest Spawn
donpcevent instance_npcname("#fd_box" + 'rand_chest) + "::OnStart";
}
sleep 10000;
monster 'map_md_gef$,0,0, getarg(1), getarg(0),1, instance_npcname("md_gef_mobs_spawn") + "::" + getarg(2);
end;
OnInstanceInit:
'step = 0;
'hard = 0;
'count = 0;
'rand_chest = 0;
'freestones = 0;
'boss_actv = 0;
'map_md_gef$ = instance_mapname("1@md_gef");
end;
}
1@md_gef,110,129,6 script(DISABLED) Mary Juj#0_2 4_F_JOB_BLACKSMITH,{
npctalk "Hello";
end;
}
1@md_gef,183,222,5 script(DISABLED) The Stranger#cadaver 4_TOWER_11,{
mes "It is a stranger's corpse.";
mes "Perhaps he died while wandering in this place on the search for treasure.";
next;
if (select( "Calm down", "Investigate the body" ) == 1) {
mes "You respect the dead and decided to leave the body alone.";
close;
}
mes "Looking at a hastily scribbled note in his pocket, perhaps the adventurer's name was Walter.";
next;
mes "[Adventurer's Log]";
mes "My name is Walter. For the adventurers who will visit this place in the future, I'm leaving this so that you don't make the same mistake again.";
next;
mes "[Adventurer's Log]";
mes "On the first day, I curiously put my hand on the slab of a strange Sculpture nearby.";
mes "...and I awokened something that I should not have.";
next;
mes "[Adventurer's Log]";
mes "Right now the revived ancient king is wandering in front of me.";
mes "Perhaps he has no memories of his previous life.";
mes "One thing is certain, he will kill me.";
next;
mes "[Adventurer's Log]";
mes "To the adventurers who will visit this place in the future, I hope you do not make the same mistake as me.";
mes "If you do see a suspicious slab, do not show any interest and pass by it.";
next;
mes "[Adventurer's Log]";
mes "Again, never touch the slab. Whatever temptation you may have.";
if ('freestones != 0)
close;
next;
mes "Several craft stones fall from his body. They were probably collected while exploring this place.";
close2;
if ('freestones == 0) {
'freestones = 1;
if ('hard == 1)
.@num = rand(7,9);
else
.@num = rand(5,7);
for ( .@i = 0; .@i < .@num; ++.@i )
makeitem 25235,1, 'map_md_gef$, rand(181,183), rand(221,224);
}
end;
}
1@md_gef,199,73,0 script(DISABLED) Bizzare Sculpture#boss CLEAR_NPC,{
if ('count < 100) {
mes "It is a strange sculpture with a lot of dust piled up. I don't see anything suspicious.";
close;
}
if ('boss_actv >= 1) {
mes "Craft Stones have been melted by a powerful force into the sockets.";
mes "Seems like the sockets can't be used for a while.";
close;
}
mes "At some point, the accumulated dust scatters, and 10 hollow holes are visible on the slab under the sculpture.";
next;
mes "Each of the 10 hollow sockets seem to perfectly fit a craft stone.";
next;
if (select( "Ignore", "Try inserting craft stones" ) == 1)
end;
if (countitem(25235) < 10) {
mes "Craft Stones have been melted by a powerful force into the sockets.";
mes "Seems like the sockets can't be used for a while.";
close;
}
mes "When you insert a craft stone into a hole, it emits a bright light and melts.";
next;
delitem 25235,10;
specialeffect EF_ANGELUS;
if (rand(1,10) == 10) {
mes "Something seems to have changed in the air around me.";
instance_announce 0, "Lord of the Dead: Who Awakened Me? I will meet you in person and ask you why.", bc_map, "0xFFFF00";
if ('boss_actv == 0) {
'boss_actv = 1;
monster 'map_md_gef$,210,110,"Lich King",'mob[1],1;
}
}
else {
mes "But nothing else happened.";
close2;
if ('boss_actv == 0) {
disablenpc(); // Disable NPC for 5 minutes when MVP didn't spawn.
initnpctimer;
}
end;
}
close;
OnTimer300000:
stopnpctimer;
enablenpc();
end;
}
// Treasure Chest Reward
1@md_gef,212,212,3 script(DISABLED) #fd_box1 4_TREASURE_BOX,{
specialeffect EF_COIN;
disablenpc();
stopnpctimer;
sleep 500;
if ('hard == 1)
.@num = rand(7,9);
else
.@num = rand(5,7);
.@npc_name$ = strnpcinfo(2);
if (.@npc_name$ == "fd_box1") {
for ( .@i = 0; .@i < .@num; ++.@i )
makeitem 25235,1, 'map_md_gef$, rand(210,214), rand(210,214);
}
if (.@npc_name$ == "fd_box2") {
for ( .@i = 0; .@i < .@num; ++.@i )
makeitem 25235,1, 'map_md_gef$, rand(188,192), rand(54,58);
}
if (.@npc_name$ == "fd_box3") {
for ( .@i = 0; .@i < .@num; ++.@i )
makeitem 25235,1, 'map_md_gef$, rand(47,51), rand(55,59);
}
if (.@npc_name$ == "fd_box4") {
for ( .@i = 0; .@i < .@num; ++.@i )
makeitem 25235,1, 'map_md_gef$, rand(42,46), rand(209,213);
}
end;
OnStart:
enablenpc();
instance_announce 0, "A treasure chest appeared somewhere in the dungeon. It'll disappear after a while, so let's find it.", bc_map, "0xff5500";
initnpctimer;
end;
OnTimer180000: //3min before chest disappears
disablenpc();
stopnpctimer;
end;
}
1@md_gef,190,56,3 duplicate(#fd_box1) #fd_box2 4_TREASURE_BOX
1@md_gef,49,57,3 duplicate(#fd_box1) #fd_box3 4_TREASURE_BOX
1@md_gef,44,211,3 duplicate(#fd_box1) #fd_box4 4_TREASURE_BOX
//Merchant
gef_tower,57,167,3 script Amateur Collector#pa0829 1_F_01,{
disable_items;
function F_equip_menu;
function F_enchant;
if (checkweight(1201,1) == 0) {
mes "You have too many kinds of objects. Clear your inventory.";
close;
}
if (MaxWeight - Weight < 10000) {
mes "Can't continue because you have too many heavy objects. Reduce your total weight by clearing your inventory.";
close;
}
mes "[Amateur Collector]";
mes "If you bring me a " + mesitemlink(25235, false) + ", I can enchant a wonderful effect on your accessory!";
next;
switch( select( "What can you do with the Crafting Stone?", "Accessory Enchantment", "Reset Enchant" ) ) {
case 1:
mes "[Amateur Collector]";
mes "I trade expensive stones from the dungeon in exchange for my craftsmanship. I'm still a beginner, but my skills are passable.";
mes "Please take care of me.";
next;
if (select( "I've heard this before.", "I'm listening." ) == 1) {
mes "[Amateur Collector]";
mes "Is that so?";
close;
}
mes "[Amateur Collector]";
mes "By using the Craft Stone, I can enchant one of your accessories with abilities.";
next;
mes "[Amateur Collector]";
mes "I need 10 x " + mesitemlink(25235, false) + " and 100,000 Zeny.";
mes "There is no failure in the enchantment process.";
next;
mes "[Amateur Collector]";
mes "However ^0000FFif the accessory has a random option, the random option will be removed after enchantment.^000000";
next;
select( "Anything else?" );
mes "[Amateur Collector]";
mes "Cards slotted to the accessory will remain after the enchantement.";
next;
mes "[Amateur Collector]";
mes "A reset is possible, but I can't say that I'm experienced.";
mes "My success rate is:";
mes "Royal Ring: 80%";
mes "Other Accessory: 20%";
next;
mes "[Amateur Collector]";
mes "^0000FFIf the accessory has a random option, the random option will be removed after initialization.^000000";
close;
case 2:
.@type = 1;
.@type_name$ = "enchant";
break;
case 3:
.@type = 2;
.@type_name$ = "reset";
break;
}
.@slot = F_equip_menu();
.@equip_id = getequipid(.@slot);
setarray .@equip_card[0], getequipcardid(.@slot,0), getequipcardid(.@slot,1), getequipcardid(.@slot,2), getequipcardid(.@slot,3);
copyarray .@card[0], .@equip_card[0], 4;
switch( .@equip_id ) {
case 0:
mes "[Amateur Collector]";
mes "Please equip your accessory.";
close;
case 28483:
case 2601:
case 2602:
case 2603:
case 2605:
case 2607:
case 2608:
case 2609:
case 2610:
case 2611:
case 2612:
case 2613:
case 2614:
case 2615:
case 2616:
case 2617:
case 2618:
case 2619:
case 2620:
case 2621:
case 2622:
case 2623:
case 2625:
case 2626:
case 2627:
case 2628:
case 2636:
case 2637:
case 2638:
case 2639:
case 2640:
case 2641:
case 2645:
case 2648:
case 2649:
case 2650:
case 2651:
case 2652:
case 2653:
case 2654:
case 2655:
case 2656:
case 2658:
case 2663:
case 2664:
case 2665:
case 2666:
case 2667:
case 2671:
case 2680:
case 2692:
case 2700:
case 2701:
case 2702:
case 2703:
case 2712:
case 2714:
case 2715:
case 2716:
case 2718:
case 2719:
case 2720:
case 2721:
case 2722:
case 2723:
case 2724:
case 2725:
case 2726:
case 2727:
case 2728:
case 2729:
case 2730:
case 2731:
case 2732:
case 2736:
case 2737:
case 2743:
case 2744:
case 2745:
case 2746:
case 2747:
case 2748:
case 2749:
case 2766:
case 2767:
case 2768:
case 2769:
case 2770:
case 2771:
case 2772:
case 2773:
case 2774:
case 2777:
case 2778:
case 2779:
case 2780:
case 2781:
case 2783:
case 2784:
case 2787:
case 2788:
case 2789:
case 2790:
case 2794:
case 2795:
case 2800:
case 2801:
case 2802:
case 2803:
case 2804:
case 2805:
case 2807:
case 2808:
case 2809:
case 2810:
case 2826:
case 2827:
case 2843:
case 2853:
case 2854:
case 2881:
case 2956:
break;
default:
mes "[Amateur Collector]";
mes "I cannot " + .@type_name$ + " this " + mesitemlink(.@equip_id, false) + " accessory.";
close;
}
if (.@type == 1) { // enchant
switch( .@equip_id ) {
case 28483: //Royal Ring Enchantment
if (.@equip_card[2] != 0) {
mes "[Amateur Collector]";
mes "The " + mesitemlink(.@equip_id, false) + " already has maximum enchantment.";
mes "I cannot work on this any further.";
close;
}
.@pos = .@equip_card[3] != 0 ? 2 : 3;
mes "[Amateur Collector]";
mes "Please select an enchantment type~";
next;
switch( select( "Physical", "Magical", "Ranged" ) ) {
case 1:
if (.@pos == 2)
.@equip_card[2] = F_enchant(2);
else
.@equip_card[3] = F_enchant(3);
break;
case 2:
if (.@pos == 2)
.@equip_card[2] = F_enchant(4);
else
.@equip_card[3] = F_enchant(5);
break;
case 3:
if (.@pos == 2)
.@equip_card[2] = F_enchant(6);
else
.@equip_card[3] = F_enchant(7);
break;
}
if (.@pos == 2) {
mes "[Amateur Collector]";
mes "Are you sure to enhance the " + mesitemlink(.@equip_id, false) + "?";
mes "^0000FFThere is a no chance of failure^000000.";
next;
if (select( "Yes, please proceed", "Cancel" ) == 2)
end;
}
if (countitem(25235) < 10) {
mes "[Amateur Collector]";
mes "Please bring me 10 x " + mesitemlink(25235, false) + ".";
close;
}
if (Zeny < 100000) {
mes "[Amateur Collector]";
mes "I need 100,000 zeny!";
close;
}
delitem 25235,10; //Catalyst
Zeny -= 100000;
// anti-hack
if (callfunc("F_IsEquipIDHack", .@slot, .@equip_id) || callfunc("F_IsEquipCardHack", .@slot, .@card[0], .@card[1], .@card[2], .@card[3]))
end;
delequip .@slot;
specialeffect2 EF_REPAIRWEAPON;
mes "[Amateur Collector]";
mes "The " + mesitemlink(.@equip_id, false) + " has been enchanted!!";
getitem2 .@equip_id,1,1,0,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
close;
default: // Normal Accessory Enchantment
if (.@equip_card[3] != 0) {
mes "[Amateur Collector]";
mes "The " + mesitemlink(.@equip_id, false) + " already has an enchant.";
mes "I cannot work on this any further.";
close;
}
mes "[Amateur Collector]";
mes "Are you sure you want to enhance the " + mesitemlink(.@equip_id, false) + "?";
mes "^0000FFThere is a no chance of failure^000000.";
next;
if (select( "Yes, please proceed", "Cancel") == 2)
end;
if (countitem(25235) < 10) {
mes "[Amateur Collector]";
mes "Please bring me 10 x " + mesitemlink(25235, false) + ".";
close;
}
if (Zeny < 100000) {
mes "[Amateur Collector]";
mes "I need 100,000 zeny!";
close;
}
delitem 25235,10; //Catalyst
Zeny -= 100000;
// anti-hack
if (callfunc("F_IsEquipIDHack", .@slot, .@equip_id) || callfunc("F_IsEquipCardHack", .@slot, .@card[0], .@card[1], .@card[2], .@card[3]))
end;
delequip .@slot;
.@enchant = F_enchant(1);
specialeffect2 EF_REPAIRWEAPON;
mes "[Amateur Collector]";
mes "The " + mesitemlink(.@equip_id, false) + " has been enchanted with " + mesitemlink(.@enchant, false) + ".";
getitem2 .@equip_id,1,1,0,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@enchant;
close;
}
end;
}
else { // reset
if (.@equip_id == 28483) {
.@pos = 2;
.@success = 80; // success royal
} else {
.@pos = 3;
.@success = 20; // success normal
}
if (.@equip_card[.@pos] == 0) {
mes "[Amateur Collector]";
mes "The " + mesitemlink(.@equip_id, false) + " is not at its maximum enchantment.";
mes "I cannot reset this accessory.";
close;
}
mes "[Amateur Collector]";
mes "All enchanted effects will be removed from the " + mesitemlink(.@equip_id, false) + "?";
mes "^FF0000There is a " + .@success + "% chance of success. The accessory will be destroyed if the reset fails!^000000";
next;
if (select( "I'll be back later", "Please proceed") == 1)
end;
if (countitem(25235) < 10) {
mes "[Amateur Collector]";
mes "Please bring me 10 x " + mesitemlink(25235, false) + "";
close;
}
if (Zeny < 100000) {
mes "[Amateur Collector]";
mes "I need 100,000 zeny!";
close;
}
delitem 25235,10; //Catalyst
Zeny -= 100000;
// anti-hack
if (callfunc("F_IsEquipIDHack", .@slot, .@equip_id) || callfunc("F_IsEquipCardHack", .@slot, .@card[0], .@card[1], .@card[2], .@card[3]))
end;
delequip .@slot;
if (rand(100) > .@success) {
specialeffect2 EF_SUI_EXPLOSION;
mes "[Amateur Collector]";
mes "Darn it...";
mes "I have failed and the accessory has been destroyed. I'm so sorry.";
close;
}
specialeffect2 EF_REPAIRWEAPON;
mes "[Amateur Collector]";
mes "I have succeeded.";
mes "The " + mesitemlink(.@equip_id, false) + " has been initialized.";
getitem2 .@equip_id,1,1,0,0,.@equip_card[0],.@equip_card[1],0,0;
close;
}
end;
function F_equip_menu {
.@l$ = getitemname(getequipid(EQI_ACC_L));
.@r$ = getitemname(getequipid(EQI_ACC_R));
.@acc_l$ = .@l$ == "null" ? "" : "Left Acc - " + .@l$;
.@acc_r$ = .@r$ == "null" ? "" : "Right Acc - " + .@r$;
switch( select( .@acc_l$, .@acc_r$ ) ) {
case 1:
.@slot = EQI_ACC_L;
break;
case 2:
.@slot = EQI_ACC_R;
break;
}
return .@slot;
}
function F_enchant {
.@type = getarg(0);
switch(.@type) {
case 1: //Normal Enchant
.@i = rand(920);
if (.@i < 30) .@enchant = 4701; //STR+2
else if (.@i < 60) .@enchant = 4702; //STR+3
else if (.@i < 90) .@enchant = 4703; //STR+4
else if (.@i < 120) .@enchant = 4711; //INT+2
else if (.@i < 150) .@enchant = 4712; //INT+3
else if (.@i < 180) .@enchant = 4713; //INT+4
else if (.@i < 210) .@enchant = 4721; //DEX+2
else if (.@i < 240) .@enchant = 4722; //DEX+3
else if (.@i < 270) .@enchant = 4723; //DEX+4
else if (.@i < 300) .@enchant = 4731; //AGI+2
else if (.@i < 330) .@enchant = 4732; //AGI+3
else if (.@i < 360) .@enchant = 4733; //AGI+4
else if (.@i < 390) .@enchant = 4741; //VIT+2
else if (.@i < 420) .@enchant = 4742; //VIT+3
else if (.@i < 450) .@enchant = 4743; //VIT+4
else if (.@i < 480) .@enchant = 4796; //HP+200
else if (.@i < 510) .@enchant = 4798; //HP+400
else if (.@i < 540) .@enchant = 4792; //DEF+6
else if (.@i < 570) .@enchant = 4794; //DEF+12
else if (.@i < 600) .@enchant = 4800; //SP+50
else if (.@i < 630) .@enchant = 4801; //SP+100
else if (.@i < 660) .@enchant = 4786; //MDEF+2
else if (.@i < 690) .@enchant = 4787; //MDEF+4
else if (.@i < 710) .@enchant = 4861; //MHP+1%
else if (.@i < 730) .@enchant = 4862; //MHP+2%
else if (.@i < 750) .@enchant = 4929; //MSP+1%
else if (.@i < 770) .@enchant = 4882; //ATK+1%
else if (.@i < 790) .@enchant = 4883; //MATK+1%
else if (.@i < 800) .@enchant = 4817; //Sharp2
else if (.@i < 810) .@enchant = 4816; //Sharp3
else if (.@i < 815) .@enchant = 4843; //Sharp4
else if (.@i < 825) .@enchant = 29047; //Fatal
else if (.@i < 835) .@enchant = 4863; //Fatal1Lv
else if (.@i < 840) .@enchant = 4864; //Fatal2Lv
else if (.@i < 850) .@enchant = 4832; //Expert Archer1
else if (.@i < 860) .@enchant = 4813; //Spell3
else if (.@i < 870) .@enchant = 4812; //Spell4
else if (.@i < 875) .@enchant = 4826; //Spell5
else if (.@i < 885) .@enchant = 4805; //Archbishop1Lv
else if (.@i < 895) .@enchant = 4850; //Heal Amount2
else if (.@i < 905) .@enchant = 4809; //Fighting Spirit3
else if (.@i < 915) .@enchant = 4808; //Fighting Spirit4
else .@enchant = 4820; //Fighting Spirit5
break;
case 2: //Royal Physical Slot 3
.@i = rand(225);
if (.@i < 30) .@enchant = 4809; //Fighting Spirit3
else if (.@i < 60) .@enchant = 4808; //Fighting Spirit4
else if (.@i < 70) .@enchant = 4820; //Fighting Spirit5
else if (.@i < 80) .@enchant = 4821; //Fighting Spirit6
else if (.@i < 85) .@enchant = 4822; //Fighting Spirit7
else if (.@i < 115) .@enchant = 4818; //Sharp1
else if (.@i < 145) .@enchant = 4817; //Sharp2
else if (.@i < 155) .@enchant = 4816; //Sharp3
else if (.@i < 165) .@enchant = 4843; //Sharp4
else if (.@i < 170) .@enchant = 4844; //Sharp5
else if (.@i < 200) .@enchant = 4819; //Atk1
else if (.@i < 210) .@enchant = 4766; //ATK+2%
else if (.@i < 215) .@enchant = 4767; //ATK+3%
else if (.@i < 220) .@enchant = 4807; //Atk Speed1
else .@enchant = 4842; //Atk Speed2
break;
case 3: //Royal Physical Slot 4
.@i = rand(375);
if (.@i < 50) .@enchant = 4702; //STR+3
else if (.@i < 100) .@enchant = 4703; //STR+4
else if (.@i < 110) .@enchant = 4704; //STR+5
else if (.@i < 120) .@enchant = 4705; //STR+6
else if (.@i < 125) .@enchant = 4706; //STR+7
else if (.@i < 175) .@enchant = 4732; //AGI+3
else if (.@i < 225) .@enchant = 4733; //AGI+4
else if (.@i < 235) .@enchant = 4734; //AGI+5
else if (.@i < 245) .@enchant = 4735; //AGI+6
else if (.@i < 250) .@enchant = 4736; //AGI+7
else if (.@i < 300) .@enchant = 4742; //VIT+3
else if (.@i < 350) .@enchant = 4743; //VIT+4
else if (.@i < 360) .@enchant = 4744; //VIT+5
else if (.@i < 370) .@enchant = 4745; //VIT+6
else .@enchant = 4746; //VIT+7
break;
case 4: //Royal Magical Slot 3
.@i = rand(230);
if (.@i < 30) .@enchant = 4813; //Spell3
else if (.@i < 60) .@enchant = 4812; //Spell4
else if (.@i < 70) .@enchant = 4826; //Spell5
else if (.@i < 80) .@enchant = 4827; //Spell6
else if (.@i < 85) .@enchant = 4828; //Spell7
else if (.@i < 115) .@enchant = 4929; //MSP+1%
else if (.@i < 145) .@enchant = 4805; //Archbishop1Lv
else if (.@i < 155) .@enchant = 4850; //Archbishop2Lv
else if (.@i < 165) .@enchant = 4851; //Archbishop3Lv
else if (.@i < 170) .@enchant = 4852; //Archbishop4Lv
else if (.@i < 200) .@enchant = 4883; //MATK + 1%
else if (.@i < 210) .@enchant = 4896; //MATK + 2%
else if (.@i < 215) .@enchant = 4897; //MATK + 3%
else if (.@i < 225) .@enchant = 4760; //MATK 1Lv
else .@enchant = 4761; //MATK 2Lv
break;
case 5: //Royal Magical Slot 4
.@i = rand(375);
if (.@i < 50) .@enchant = 4712; //INT+3
else if (.@i < 100) .@enchant = 4713; //INT+4
else if (.@i < 110) .@enchant = 4714; //INT+5
else if (.@i < 120) .@enchant = 4715; //INT+6
else if (.@i < 125) .@enchant = 4716; //INT+7
else if (.@i < 175) .@enchant = 4722; //DEX+3
else if (.@i < 225) .@enchant = 4723; //DEX+4
else if (.@i < 235) .@enchant = 4724; //DEX+5
else if (.@i < 245) .@enchant = 4725; //DEX+6
else if (.@i < 250) .@enchant = 4726; //DEX+7
else if (.@i < 300) .@enchant = 4742; //VIT+3
else if (.@i < 350) .@enchant = 4743; //VIT+4
else if (.@i < 360) .@enchant = 4744; //VIT+5
else if (.@i < 370) .@enchant = 4745; //VIT+6
else .@enchant = 4746; //VIT+7
break;
case 6: //Royal Ranged Slot 3
.@i = rand(225);
if (.@i < 30) .@enchant = 29047; //Fatal
else if (.@i < 60) .@enchant = 4863; //Fatal1Lv
else if (.@i < 70) .@enchant = 4864; //Fatal2Lv
else if (.@i < 80) .@enchant = 4865; //Fatal3Lv
else if (.@i < 85) .@enchant = 4866; //Fatal4Lv
else if (.@i < 115) .@enchant = 4818; //Sharp1
else if (.@i < 145) .@enchant = 4817; //Sharp2
else if (.@i < 155) .@enchant = 4816; //Sharp3
else if (.@i < 165) .@enchant = 4843; //Sharp4
else if (.@i < 170) .@enchant = 4844; //Sharp5
else if (.@i < 200) .@enchant = 4832; //Expert Archer1
else if (.@i < 210) .@enchant = 4833; //Expert Archer2
else if (.@i < 215) .@enchant = 4834; //Expert Archer3
else if (.@i < 220) .@enchant = 4807; //Atk Speed1
else .@enchant = 4842; //Atk Speed2
break;
case 7: //Royal Ranged Slot 4
.@i = rand(375);
if (.@i < 50) .@enchant = 4732; //AGI+3
else if (.@i < 100) .@enchant = 4733; //AGI+4
else if (.@i < 110) .@enchant = 4734; //AGI+5
else if (.@i < 120) .@enchant = 4735; //AGI+6
else if (.@i < 125) .@enchant = 4736; //AGI+7
else if (.@i < 175) .@enchant = 4722; //DEX+3
else if (.@i < 225) .@enchant = 4723; //DEX+4
else if (.@i < 235) .@enchant = 4724; //DEX+5
else if (.@i < 245) .@enchant = 4725; //DEX+6
else if (.@i < 250) .@enchant = 4726; //DEX+7
else if (.@i < 300) .@enchant = 4752; //LUK+3
else if (.@i < 350) .@enchant = 4753; //LUK+4
else if (.@i < 360) .@enchant = 4754; //LUK+5
else if (.@i < 370) .@enchant = 4755; //LUK+6
else .@enchant = 4756; //LUK+7
break;
}
return .@enchant;
}
}