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.

1459 lines
53 KiB
Plaintext

//===== rAthena Script =======================================
//= Morse Cave
//===== Description: =========================================
//= [Official Conversion]
//= Morse Cave Instance
//===== Changelogs: ==========================================
//= 1.0 First version. [Capuche]
//= 1.1 Updated to match official script. [Capuche]
//============================================================
moro_cav,61,69,3 script Senior Tracker#a1 4_M_JOB_ASSASSIN,{
if (ep14_3_isle == 0) {
mes "[Senior Tracker]";
mes "This is our advance base";
mes "to stop Morocc.";
mes "I'm a tracker";
mes "charged with leading my army";
mes "to Morocc's lair.";
close;
}
if (checkweight(2104,2) == 0) {
mes "Your backpack is too full";
mes "I can't talk to you!";
close;
}
if (BaseLevel < 160) {
mes "You need to reach level 160 first";
mes "to enter the Red Flower!";
close;
}
switch( checkquest(9319,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Senior Tracker]";
mes "We're nowhere near close";
mes "to stopping Morocc's resurrection.";
mes "I can't sleep at night,";
mes "knowing Morocc is doing everything he can";
mes "to recover his strength.";
mes "Could you come back tomorrow?";
close;
case 2:
mes "[Senior Tracker]";
mes "I knew you'd return.";
mes "You look well-rested.";
next;
mes "[Senior Tracker]";
mes "According to my intel,";
mes "Morocc is hiding out in this place,";
mes "recovering his strength.";
next;
mes "[Senior Tracker]";
mes "Fighting Morocc";
mes "takes more than a few warriors, no matter how strong they are.";
mes "I recommend you join forces with";
mes "as many comrades as you can find.";
mes "Are you ready to enter the Red Flower";
mes "where Morocc is believed to be hiding?";
if (getcharid(1) < 1 || is_party_leader() == false)
close;
next;
if (select( "No.", "Yes." ) == 1) {
mes "[Senior Tracker]";
mes "Come back";
mes "if you change your mind.";
close;
}
if (instance_create("Morse's Cave") < 1) {
mes "[Senior Tracker]";
mes "The entrance to the Red Flower";
mes "is not open yet.";
mes "Please come back later";
mes "and try again.";
close;
}
mes "[Senior Tracker]";
mes "The entrance to the Red Flower";
mes "has opened.";
mes "It will only stay open for a while.";
mes "You'd better use it";
mes "while you can.";
close;
}
.@hunting_9318 = checkquest(9318,HUNTING);
if (.@hunting_9318 == -1) {
mes "[Senior Tracker]";
mes "This is our advance base";
mes "to stop Morocc.";
mes "I'm a tracker";
mes "charged with leading my army";
mes "to Morocc's lair.";
next;
mes "[Senior Tracker]";
mes "After a painstaking search,";
mes "I've located";
mes "the place with the highest chance of";
mes "hiding Morocc inside.";
next;
mes "[Senior Tracker]";
mes "According to my intel,";
mes "Morocc is hiding out in this place,";
mes "trying to recover";
mes "his full strength.";
next;
mes "[Senior Tracker]";
mes "Even though I've located this place myself,";
mes "I have to admit";
mes "that I'm not equipped to";
mes "explore it by myself.";
mes "I'm a tracker after all, not a fighter.";
next;
mes "[Senior Tracker]";
mes "You look like";
mes "a warrior spoiling for";
mes "a good fight with Morocc,";
mes "and I think";
mes "you have a chance at winning it.";
next;
mes "[Senior Tracker]";
mes "How'd you like to";
mes "enter Morocc's lair,";
mes "defeat him,";
mes "and become the hero";
mes "who saved the world from evil?";
next;
if (getcharid(1) < 1 || is_party_leader() == false) {
mes "[Senior Tracker]";
mes "If you're interested in my proposition,";
mes "let me talk to your party leader.";
mes "We'll discuss more details together.";
close;
}
mes "[Senior Tracker]";
mes "Morocc may not have recovered his full strength, but fighting him still";
mes "takes more than a few warriors, no matter how strong they are.";
mes "I recommend you join forces with";
mes "as many comrades as you can find.";
mes "Are you ready to enter the Red Flower";
mes "where Morocc is believed to be hiding?";
next;
if (select( "No.", "Yes." ) == 1) {
mes "[Senior Tracker]";
mes "Come back";
mes "if you change your mind.";
close;
}
if (instance_create("Morse's Cave") < 1) {
mes "[Senior Tracker]";
mes "The entrance to the Red Flower";
mes "is not open yet.";
mes "Please come back later";
mes "and try again.";
close;
}
mes "[Senior Tracker]";
mes "The entrance to the Red Flower";
mes "has opened.";
mes "It will only stay open for a while.";
mes "You'd better use it";
mes "while you can.";
close;
}
else {
mes "[Senior Tracker]";
mes "Finally you're back!";
mes "What happened in there?";
next;
mes "- You relay";
mes "your experience in the Red Flower. -";
next;
mes "[Senior Tracker]";
mes "So Morocc got away.";
mes "That's a shame.";
next;
if (checkquest(9318,HUNTING) == 2) {
mes "[Senior Tracker]";
mes "At least";
mes "you wiped out";
mes "his army.";
mes "That's an accomplishment in itself.";
next;
}
mes "[Senior Tracker]";
mes "At least we know";
mes "where he is.";
mes "Could you come back tomorrow";
mes "and help me track";
mes "him down again?";
mes "I'll be waiting here.";
if (checkquest(9318,HUNTING) == 2)
getitem 6684,1; // TokenOfHero
erasequest 9318;// Pursuing Hiding Morocc
setquest 9319;// Pursuing Hiding Morocc Continues
ep14_3_mors01 = 1;
close;
}
}
moro_cav,57,69,3 script Red Flower#a1 CLEAR_NPC,{
if (ep14_3_isle == 0) {
mes "[Senior Tracker]";
mes "This is our advance base";
mes "to stop Morocc.";
mes "I'm a tracker";
mes "charged with leading my army";
mes "to Morocc's lair.";
close;
}
if (BaseLevel < 160) {
mes "You need to reach level 160 first";
mes "to enter the Red Flower!";
close;
}
if (isbegin_quest(9318) > 0) {
mes "- The Red Flower is closed.";
mes "You cannot enter it yet. -";
close;
}
switch( checkquest(9319,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "- The Red Flower is closed.";
mes "You cannot enter it yet. -";
close;
case 2:
break;
}
if (select( "Do not enter the Red Flower.", "Enter the Red Flower." ) == 1) {
mes "- You can sense some sinister energy. -";
close;
}
switch( instance_enter("Morse's Cave") ) {
case IE_OTHER:
mes "An unknown error occurred.";
close;
case IE_NOINSTANCE:
mes "The Memorial dungeon Morse's Cave does not exist.";
mes "Your party leader has not yet created the Memorial dungeon.";
close;
case IE_NOMEMBER:
mes "Only party members can enter this Memorial dungeon.";
close;
case IE_OK:
mapannounce "moro_cav", getpartyname( getcharid(1) ) + " party's " + strcharinfo(0) + " is entering Morse's Cave.", bc_map,0xFF99;
if (isbegin_quest(9319) > 0)
erasequest 9319;// Pursuing Hiding Morocc Continues
if (isbegin_quest(9318) > 0)
erasequest 9318;
setquest 9318;// Pursuing Hiding Morocc
// warp "1@rev",26,181;
end;
}
end;
OnInit:
initnpctimer;
end;
OnTimer3000:
specialeffect EF_BOTTOM_VO;
end;
OnTimer15000:
initnpctimer;
end;
}
1@rev,33,117,0 script #Pause Effect RZ1 HIDDEN_WARP_NPC,1,1,{
end;
OnTouch:
if (getnpctimer(0) > 0)
end;
initnpctimer;
//disablenpc();
hideonnpc instance_npcname( strnpcinfo(0) );
specialeffect EF_ICEWALL;
end;
OnTimer30000:
specialeffect EF_ICEWALL;
end;
OnTimer60000:
specialeffect EF_ICEWALL;
initnpctimer;
end;
}
1@rev,36,118,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ2 HIDDEN_WARP_NPC,1,1
1@rev,36,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ3 HIDDEN_WARP_NPC,1,1
1@rev,34,122,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ4 HIDDEN_WARP_NPC,1,1
1@rev,31,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ5 HIDDEN_WARP_NPC,1,1
1@rev,31,118,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ6 HIDDEN_WARP_NPC,1,1
1@rev,112,116,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ7 HIDDEN_WARP_NPC,1,1
1@rev,114,117,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ8 HIDDEN_WARP_NPC,1,1
1@rev,114,120,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ9 HIDDEN_WARP_NPC,1,1
1@rev,111,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ10 HIDDEN_WARP_NPC,1,1
1@rev,109,120,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ11 HIDDEN_WARP_NPC,1,1
1@rev,109,117,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ12 HIDDEN_WARP_NPC,1,1
1@rev,31,50,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ1_ HIDDEN_WARP_NPC,1,1
1@rev,36,49,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ2_ HIDDEN_WARP_NPC,1,1
1@rev,37,45,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ3_ HIDDEN_WARP_NPC,1,1
1@rev,30,45,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ4_ HIDDEN_WARP_NPC,1,1
1@rev,29,47,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ5_ HIDDEN_WARP_NPC,1,1
1@rev,33,51,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ6_ HIDDEN_WARP_NPC,1,1
1@rev,38,49,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ7_ HIDDEN_WARP_NPC,1,1
1@rev,34,44,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ8_ HIDDEN_WARP_NPC,1,1
1@rev,32,44,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ9_ HIDDEN_WARP_NPC,1,1
1@rev,29,49,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ10_ HIDDEN_WARP_NPC,1,1
1@rev,35,51,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ11_ HIDDEN_WARP_NPC,1,1
1@rev,37,47,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ12_ HIDDEN_WARP_NPC,1,1
// Event A
1@rev,27,181,0 script #RZ Memorial Start HIDDEN_WARP_NPC,4,4,{
end;
OnTouch:
disablenpc instance_npcname("#RZ Memorial Start");
enablenpc instance_npcname("#RZ Event_1");
.@mob_name$ = "" + strcharinfo(0) + "'s Soul";
.@label$ = instance_npcname("#RZ Memorial Start") + "::OnSoulDead";
monster 'map_rev$, 34,120, .@mob_name$, 3007,1, .@label$; // EP14_MORS_DUMMY
monster 'map_rev$,112,118, .@mob_name$, 3007,1, .@label$;
monster 'map_rev$, 34, 48, .@mob_name$, 3007,1, .@label$;
monster 'map_rev$,112, 48, .@mob_name$, 3007,1, .@label$;
end;
OnSoulDead:
end;
OnInstanceInit:
'map_rev$ = instance_mapname("1@rev");
'event_right = false;
'event_ended = false;
'boss_id = 0;
'monster_id[4] = 0;
'monster_id[5] = 0;
'monster_id[6] = 0;
'monster_id[7] = 0;
disablenpc instance_npcname("#RZ Event_1");
disablenpc instance_npcname("#RZ Event_3");
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_3");
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_4");
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_6");
disablenpc instance_npcname("#RZ Debuff Recovery_1");
disablenpc instance_npcname("#RZ Debuff Recovery_2");
disablenpc instance_npcname("#RZ Debuff Recovery_3");
disablenpc instance_npcname("#RZ Debuff Recovery_4");
for ( .@i = 5; .@i < 18; ++.@i )
disablenpc instance_npcname("#RZ Move_" + .@i + "a");
for ( .@i = 1; .@i < 13; ++.@i )
disablenpc instance_npcname("#RZ Debuff_" + .@i);
for ( .@i = 1; .@i < 17; ++.@i )
disablenpc instance_npcname("#RZ Move_" + .@i);
disablenpc instance_npcname("#RZ Move_30");
disablenpc instance_npcname("#RZ Move_31");
disablenpc instance_npcname("#RZ Move_32");
disablenpc instance_npcname("#Battle_1RZ1");
disablenpc instance_npcname("#Battle_1RZ2");
disablenpc instance_npcname("#Battle_2RZ1");
disablenpc instance_npcname("#Battle_3RZ2");
disablenpc instance_npcname("#Battle_3RZ3");
disablenpc instance_npcname("#Battle_3RZ4");
disablenpc instance_npcname("#Battle_3RZ5");
disablenpc instance_npcname("#Battle_3RZ6");
disablenpc instance_npcname("#Battle_3RZ7");
disablenpc instance_npcname("Weakened Morocc#RZ1");
disablenpc instance_npcname("Morocc Necromancer#RZ1");
end;
}
1@rev,34,120,0 script #RZ Memorial Effect 1 HIDDEN_WARP_NPC,4,4,{
end;
OnInstanceInit:
//disablenpc();
hideonnpc instance_npcname( strnpcinfo(0) );
initnpctimer;
end;
OnTimer1000:
specialeffect EF_CURSEATTACK;
end;
OnTimer2000:
initnpctimer;
end;
}
1@rev,112,118,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 2 HIDDEN_WARP_NPC,4,4
1@rev,34,48,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 3 HIDDEN_WARP_NPC,4,4
1@rev,31,181,0 script #RZ Event_1 HIDDEN_WARP_NPC,5,5,{
end;
OnTouch:
disablenpc instance_npcname("#RZ Event_1");
// specialeffect EF_HIT2, AREA, ""; // npc target undefined
mapannounce 'map_rev$, "Morocc: Who dares to disrupt my sleep?!", bc_map,00EBFF;
.@account_id = getcharid(3);
.@name$ = strcharinfo(0);
unittalk .@account_id, "" + .@name$ + " : We came to the right place!";
setpcblock PCBLOCK_NPC, true;
sleep2 3000;
unittalk .@account_id, "" + .@name$ + " : Wait! There's something ahead of us!";
sleep2 3000;
setpcblock PCBLOCK_NPC, false;
// debug in case of reload script
getpartymember getcharid(1), 1, .@char_id;
getpartymember getcharid(1), 2, .@account_id;
for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false)
continue;
if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$)
setpcblock PCBLOCK_MOVE, false, .@account_id[.@i];
}
specialeffect2 EF_LOCKON;
.@label$ = instance_npcname("#RZ Event_1") + "::OnMobDead";
monster 'map_rev$,38,180,"Morocc's Ghoul",3001,1, .@label$; // EP14_MORS_MOB1
monster 'map_rev$,38,181,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,38,182,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,54,180,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,54,181,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,54,182,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,70,180,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,70,181,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,70,182,"Morocc's Ghoul",3001,1, .@label$;
unittalk .@account_id, "" + .@name$ + " : Are these hideous monsters Morocc's lackeys?";
initnpctimer;
end;
OnTimer2000:
if (mobcount( 'map_rev$, instance_npcname("#RZ Event_1") + "::OnMobDead" ) < 1) {
stopnpctimer;
donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_2") + "::OnStart";
}
end;
OnTimer4000:
initnpctimer;
end;
OnMobDead:
end;
}
1@rev,64,181,4 script Grim Reaper Ankou#RZ Event_2 3029,{
end;
OnStart:
enablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");
enablenpc instance_npcname("#RZ Event_3");
npctalk "Grim Reaper Ankou: *Chuckle* We meet again!";
sleep 3000;
npctalk "Grim Reaper Ankou: You shouldn't have come. You're interrupting Lord Morocc from recovering his strength.";
sleep 3000;
npctalk "Grim Reaper Ankou: This world resides in his mind.";
sleep 3000;
npctalk "Grim Reaper Ankou: You can't do anything against his will. *Chuckle*";
sleep 3000;
npctalk "Grim Reaper Ankou: Lord Morocc is expecting you. Let me take you to him. *Chuckle*";
sleep 3000;
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");
sleep 3000;
enablenpc instance_npcname("#RZ Move_30");
enablenpc instance_npcname("#RZ Move_31");
enablenpc instance_npcname("#RZ Move_32");
end;
}
// Fail, warp out
1@rev,34,126,4 script Grim Reaper Ankou#RZ Event_3 3029,{
end;
OnEnd:
.@ankou_3$ = instance_npcname("Grim Reaper Ankou#RZ Event_3");
.@ankou_4$ = instance_npcname("Grim Reaper Ankou#RZ Event_4");
enablenpc .@ankou_3$;
enablenpc .@ankou_4$;
npctalk "Grim Reaper Ankou: You're pathetic.", .@ankou_3$;
npctalk "Grim Reaper Ankou: You're pathetic.", .@ankou_4$;
sleep 3000;
npctalk "Grim Reaper Ankou: Weaklings like you aren't enough food for Lord Morocc", .@ankou_3$;
npctalk "Grim Reaper Ankou: Weaklings like you aren't enough food for Lord Morocc", .@ankou_4$;
sleep 3000;
npctalk "Grim Reaper Ankou: to get the energy he needs for a full recovery.", .@ankou_3$;
npctalk "Grim Reaper Ankou: to get the energy he needs for a full recovery.", .@ankou_4;
sleep 3000;
npctalk "Grim Reaper Ankou: I'll give you one chance to leave. NOW!", .@ankou_3$;
npctalk "Grim Reaper Ankou: I'll give you one chance to leave. NOW!", .@ankou_4$;
sleep 3000;
disablenpc .@ankou_3$;
disablenpc .@ankou_4$;
sleep 5000;
enablenpc instance_npcname("#RZ Move_5a");
enablenpc instance_npcname("#RZ Move_6a");
enablenpc instance_npcname("#RZ Move_7a");
enablenpc instance_npcname("#RZ Move_8a");
enablenpc instance_npcname("#RZ Move_9a");
enablenpc instance_npcname("#RZ Move_10a");
enablenpc instance_npcname("#RZ Move_11a");
enablenpc instance_npcname("#RZ Move_12a");
end;
}
1@rev,112,126,4 script Grim Reaper Ankou#RZ Event_4 3029,{ end; }
1@rev,34,55,4 script Grim Reaper Ankou#RZ Event_5 3029,{
end;
OnEnd:
enablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
npctalk "Grim Reaper Ankou: You're pathetic.";
sleep 3000;
npctalk "Grim Reaper Ankou: Weaklings like you aren't enough food for Lord Morocc";
sleep 3000;
npctalk "Grim Reaper Ankou: to get the energy he needs for a full recovery.";
sleep 3000;
npctalk "Grim Reaper Ankou: I'll give you one chance to leave. NOW!!";
sleep 3000;
disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
sleep 5000;
enablenpc instance_npcname("#RZ Move_13a");
enablenpc instance_npcname("#RZ Move_14a");
enablenpc instance_npcname("#RZ Move_15a");
enablenpc instance_npcname("#RZ Move_16a");
end;
}
// Event B
1@rev,104,176,0 script #RZ Event_3 HIDDEN_WARP_NPC,4,4,{
end;
OnTouch:
disablenpc instance_npcname("#RZ Event_3");
enablenpc instance_npcname("Weakened Morocc#RZ1");
unittalk getcharid(3), "" + strcharinfo(0) + " : Finally, here we are, Morocc.";
setpcblock PCBLOCK_NPC, true;
sleep2 3000;
unittalk getcharid(3), "" + strcharinfo(0) + " : It's been almost too easy to find you,";
sleep2 3000;
unittalk getcharid(3), "" + strcharinfo(0) + " : but it doesn't matter; you'll die today!";
sleep2 3000;
setpcblock PCBLOCK_NPC, false;
specialeffect2 EF_LOCKON;
donpcevent instance_npcname("Weakened Morocc#RZ1") + "::OnTalk1";
end;
}
1@rev,111,178,4 script Weakened Morocc#RZ1 1916,{
end;
OnTalk1:
npctalk "Weakened Morocc: I should punish you for disturbing my slumber.";
sleep 3000;
npctalk "Weakened Morocc: Do you really think you can stop me?";
sleep 3000;
npctalk "Weakened Morocc: I'll make you regret ever coming here.";
sleep 3000;
npctalk "Weakened Morocc: I may have not recovered my full strength,";
specialeffect EF_ENERGYCOAT;
sleep 3000;
npctalk "Weakened Morocc: but I still can take down a bunch of you easily.";
sleep 3000;
npctalk "Weakened Morocc: Death is your only escape!";
specialeffect EF_VOLCANO;
sleep 3000;
disablenpc instance_npcname("Weakened Morocc#RZ1");
initnpctimer;
monster 'map_rev$,111,178,"Weakened Morocc",2998,1, instance_npcname("Weakened Morocc#RZ1") + "::OnMobDead"; // EP14_MORS_EVENT
end;
OnTalk2:
npctalk "Weakened Morocc: I'm sorry, but I haven't recovered my full strength.";
sleep 3000;
npctalk "Weakened Morocc: I'll have to leave you to my soldiers for now.";
sleep 3000;
npctalk "Weakened Morocc: Do your worst to get out of my world!";
sleep 3000;
npctalk "Weakened Morocc: In the end, you'll learn the meaning of helplessness in the most painful way!";
sleep 3000;
npctalk "Weakened Morocc: And your souls will be mine! Mwah hah hah!";
sleep 3000;
disablenpc instance_npcname("Weakened Morocc#RZ1");
sleep 3000;
enablenpc instance_npcname("#RZ Move_1");
enablenpc instance_npcname("#RZ Move_2");
enablenpc instance_npcname("#RZ Move_3");
enablenpc instance_npcname("#RZ Move_4");
enablenpc instance_npcname("#Battle_1RZ1");
enablenpc instance_npcname("#Battle_1RZ2");
end;
OnTimer2000:
if (mobcount( 'map_rev$, instance_npcname("Weakened Morocc#RZ1") + "::OnMobDead" ) < 1) {
stopnpctimer;
enablenpc instance_npcname("Weakened Morocc#RZ1");
donpcevent instance_npcname("Weakened Morocc#RZ1") + "::OnTalk2";
}
end;
OnTimer4000:
initnpctimer;
end;
OnMobDead:
end;
}
// Event C1 - left side
1@rev,35,119,0 script #Battle_1RZ1 HIDDEN_WARP_NPC,10,10,{
end;
OnTouch:
disablenpc instance_npcname("#Battle_1RZ1");
disablenpc instance_npcname("#RZ Move_30");
disablenpc instance_npcname("#RZ Move_31");
disablenpc instance_npcname("#RZ Move_32");
specialeffect EF_STORMGUST, AREA, instance_npcname("#RZ Memorial Effect 1");
mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0x00EBFF;
setpcblock PCBLOCK_MOVE, true;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0x00EBFF;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: Your bodies are mine to control!", bc_map,0x00EBFF;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: Your souls are food for my resurrection!", bc_map,0x00EBFF;
sleep2 3000;
setpcblock (PCBLOCK_NPC ^ PCBLOCK_MOVE), false;
mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0x00EBFF;
initnpctimer;
end;
OnTimer4000:
callsub( S_Spawn );
OnTimer25000:
callsub( S_Spawn );
OnTimer45000:
if ('event_right == false)
mapannounce 'map_rev$, "Morocc: My soldiers, make them suffer! Feast on their bodies and souls!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer65000:
callsub( S_Spawn );
OnTimer85000:
if ('event_right == false)
mapannounce 'map_rev$, "Morocc: Not enough. Make them feel terror!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer105000:
callsub( S_Spawn );
OnTimer125000:
if ('event_right == false)
mapannounce 'map_rev$, "Morocc: Resist me! Fight to the death!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer145000:
callsub( S_Spawn );
OnTimer160000:
if ('event_right == false)
mapannounce 'map_rev$, "Morocc: Mwa hah hah, I can feel my power returning!", bc_map,0x00EBFF;
monster 'map_rev$,33,111,"Morocc's Archer Skeleton",3003,1, instance_npcname("#Battle_1RZ1") + "::OnMobDead";// EP14_MORS_MOB3
callsub( S_Spawn );
OnTimer170000:
monster 'map_rev$,32,128,"Morocc's Archer Skeleton",3003,1, instance_npcname("#Battle_1RZ1") + "::OnMobDead";
callsub( S_Spawn );
OnTimer180000:
if (mobcount( 'map_rev$, instance_npcname("#Battle_1RZ1") + "::OnMobDead") > 19) {
stopnpctimer;
stopnpctimer instance_npcname("#Battle_1RZ2");
donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_3") + "::OnEnd";
}
end;
OnTimer186000:
killmonster 'map_rev$, instance_npcname("#Battle_1RZ1") + "::OnMobDead";
end;
OnTimer187000:
enablenpc instance_npcname("#Battle_2RZ1");
mapannounce 'map_rev$, "Morocc: You're more resilient than I thought.", bc_map,0x00EBFF;
sleep 2000;
mapannounce 'map_rev$, "Morocc: But enough is enough.", bc_map,0x00EBFF;
end;
OnTimer193000:
enablenpc instance_npcname("#RZ Move_5");
enablenpc instance_npcname("#RZ Move_6");
enablenpc instance_npcname("#RZ Move_7");
enablenpc instance_npcname("#RZ Move_8");
enablenpc instance_npcname("#RZ Move_9");
enablenpc instance_npcname("#RZ Move_10");
enablenpc instance_npcname("#RZ Move_11");
enablenpc instance_npcname("#RZ Move_12");
stopnpctimer;
end;
OnMobDead:
end;
S_Spawn:
.@label$ = instance_npcname("#Battle_1RZ1") + "::OnMobDead";
monster 'map_rev$,33,128,"Morocc's Ghoul",3001,1, .@label$;// EP14_MORS_MOB1
monster 'map_rev$,42,120,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,34,111,"Morocc's Ghoul",3001,1, .@label$;
monster 'map_rev$,25,119,"Morocc's Ghoul",3001,1, .@label$;
end;
}
// Event C2 - right side
1@rev,112,126,0 script #Battle_1RZ2 HIDDEN_WARP_NPC,10,10,{
end;
OnTouch:
disablenpc instance_npcname("#RZ Move_30");
disablenpc instance_npcname("#RZ Move_31");
disablenpc instance_npcname("#RZ Move_32");
disablenpc instance_npcname("#Battle_1RZ2");
specialeffect EF_STORMGUST, AREA, instance_npcname("#RZ Memorial Effect 2");
setpcblock PCBLOCK_NPC, true;
sleep2 6000;
'event_right = true;
setpcblock (PCBLOCK_NPC ^ PCBLOCK_MOVE), false;
initnpctimer;
end;
OnTimer4000:
callsub( S_Spawn );
OnTimer25000:
mapannounce 'map_rev$, "Morocc: My soldiers, make them suffer! Feast on their bodies and souls!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer45000:
callsub( S_Spawn );
OnTimer65000:
mapannounce 'map_rev$, "Morocc: Not enough. Make them feel terror!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer85000:
callsub( S_Spawn );
OnTimer105000:
mapannounce 'map_rev$, "Morocc: Resist me! Fight to the death!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer125000:
callsub( S_Spawn );
OnTimer145000:
mapannounce 'map_rev$, "Morocc: Mwa hah hah, I can feel my power returning!", bc_map,0x00EBFF;
callsub( S_Spawn );
OnTimer160000:
monster 'map_rev$,103,118, "Morocc's Archer Skeleton", 3003,1, instance_npcname("#Battle_1RZ2") + "::OnMobDead"; // EP14_MORS_MOB3
callsub( S_Spawn );
OnTimer170000:
monster 'map_rev$,120,117, "Morocc's Archer Skeleton", 3003,1, instance_npcname("#Battle_1RZ2") + "::OnMobDead";
callsub( S_Spawn );
OnTimer182000:
//if (mobcount( 'map_rev$, instance_npcname("#Battle_1RZ1") + "::OnMobDead") > 19) { // Official script check Battle_1RZ1
if (mobcount( 'map_rev$, instance_npcname("#Battle_1RZ2") + "::OnMobDead") > 19) {
stopnpctimer;
stopnpctimer instance_npcname("#Battle_1RZ1");
donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_3") + "::OnEnd";
}
end;
OnTimer186000:
enablenpc instance_npcname("#Battle_2RZ1");
killmonster 'map_rev$, instance_npcname("#Battle_1RZ2") + "::OnMobDead";
end;
OnTimer194000:
enablenpc instance_npcname("#RZ Move_5");
enablenpc instance_npcname("#RZ Move_6");
enablenpc instance_npcname("#RZ Move_7");
enablenpc instance_npcname("#RZ Move_8");
enablenpc instance_npcname("#RZ Move_9");
enablenpc instance_npcname("#RZ Move_10");
enablenpc instance_npcname("#RZ Move_11");
enablenpc instance_npcname("#RZ Move_12");
stopnpctimer;
end;
OnMobDead:
end;
S_Spawn:
.@label$ = instance_npcname("#Battle_1RZ2") + "::OnMobDead";
monster 'map_rev$,112,126, "Morocc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1
monster 'map_rev$,120,118, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,109, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,103,117, "Morocc's Ghoul", 3001,1, .@label$;
end;
}
// Event D
1@rev,34,47,0 script #Battle_2RZ1 HIDDEN_WARP_NPC,10,10,{
end;
OnTouch:
disablenpc instance_npcname("#Battle_2RZ1");
specialeffect EF_STORMGUST, AREA, instance_npcname("#RZ Memorial Effect 3");
mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0x00EBFF;
setpcblock PCBLOCK_NPC, true;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: My power is returning!", bc_map,0x00EBFF;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: Your bodies and souls are under my command!", bc_map,0x00EBFF;
sleep2 3000;
setpcblock (PCBLOCK_NPC ^ PCBLOCK_MOVE), false;
mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0x00EBFF;
initnpctimer;
end;
OnTimer4000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,27,53, "Morocc's Archer Skeleton", 3003,1, .@label$; // EP14_MORS_MOB3
monster 'map_rev$,27,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
mapannounce 'map_rev$, "Morocc: This power! It feels great! Mwah hah hah!", bc_map,0x00EBFF;
end;
OnTimer30000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
mapannounce 'map_rev$, "Morocc: How do you like losing control of your own body? *Chuckle*", bc_map,0x00EBFF;
end;
OnTimer55000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$; // EP14_MORS_MOB5
end;
OnTimer80000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
mapannounce 'map_rev$, "Morocc: More! I need more energy!", bc_map,0x00EBFF;
end;
OnTimer105000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
mapannounce 'map_rev$, "Morocc: Mwah hah hah! Fear my army! Struggle harder!", bc_map,0x00EBFF;
end;
OnTimer130000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
end;
OnTimer155000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,27,53, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,27,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,41, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Verit", 3005,1, .@label$;
mapannounce 'map_rev$, "Morocc: You're pathetic, struggling to survive!", bc_map,0x00EBFF;
end;
OnTimer170000:
.@label$ = callsub(S_Spawn);
monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,27,41, "Morocc's Verit", 3005,1, .@label$;
end;
OnTimer180000:
if (mobcount( 'map_rev$, instance_npcname("#Battle_2RZ1") + "::OnMobDead" ) > 19) {
stopnpctimer;
donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_5") + "::OnEnd";
}
end;
OnTimer185000:
killmonster 'map_rev$, instance_npcname("#Battle_2RZ1") + "::OnMobDead";
disablenpc instance_npcname("#RZ Debuff_9");
disablenpc instance_npcname("#RZ Debuff_10");
disablenpc instance_npcname("#RZ Debuff_11");
disablenpc instance_npcname("#RZ Debuff_12");
end;
OnTimer186000:
mapannounce 'map_rev$, "Morocc: I'm surprised you've lasted this long. Thank you for helping me recover most of my strength.", bc_map,0x00EBFF;
end;
OnTimer190000:
mapannounce 'map_rev$, "Morocc: Good, I feel rejuvenated.", bc_map,0x00EBFF;
end;
OnTimer192500:
enablenpc instance_npcname("#RZ Debuff Recovery_1");
enablenpc instance_npcname("#RZ Debuff Recovery_2");
enablenpc instance_npcname("#RZ Debuff Recovery_3");
enablenpc instance_npcname("#RZ Debuff Recovery_4");
end;
OnTimer193000:
enablenpc instance_npcname("#RZ Move_13");
enablenpc instance_npcname("#RZ Move_14");
enablenpc instance_npcname("#RZ Move_15");
enablenpc instance_npcname("#RZ Move_16");
stopnpctimer;
end;
S_Spawn:
.@label$ = instance_npcname("#Battle_2RZ1") + "::OnMobDead";
monster 'map_rev$,34,57, "Morocc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1
monster 'map_rev$,43,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,33,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,24,48, "Morocc's Ghoul", 3001,1, .@label$;
return .@label$;
OnMobDead:
end;
}
// Event E - final
1@rev,112,48,4 script Morocc Necromancer#RZ1 4_GHOST_STAND,{
end;
OnFinal:
.@ankou$ = instance_npcname("Grim Reaper Ankou#RZ Event_6");
'event_ended = true;
sleep 3000;
enablenpc .@ankou$;
npctalk "Grim Reaper Ankou: Sigh, Necromancer, why did you have to die so quickly?", .@ankou$;
sleep 3000;
npctalk "Grim Reaper Ankou: Don't be so happy!", .@ankou$;
sleep 3000;
npctalk "Grim Reaper Ankou: Now that Lord Morocc has fully recovered his strength, you're as good as dead!", .@ankou$;
sleep 3000;
npctalk "Grim Reaper Ankou: We'll meet again. *Chuckle*", .@ankou$;
sleep 3000;
disablenpc .@ankou$;
enablenpc instance_npcname("#RZ Move_17a");
specialeffect EF_THUNDERSTORM, AREA, instance_npcname("#morocc_necromancer_dummy");
sleep 1000;
specialeffect EF_LORD, AREA, instance_npcname("#morocc_necromancer_dummy");
end;
}
1@rev,112,48,4 script Grim Reaper Ankou#RZ Event_6 3029,{ end; }
// additionnal npc to display the effect on Morocc Necromancer#RZ1 coordinates without bothered the player
1@rev,112,48,4 script #morocc_necromancer_dummy HIDDEN_WARP_NPC,{ end; }
1@rev,104,47,0 script #Battle_3RZ1 HIDDEN_WARP_NPC,5,5,{
end;
OnTouch:
disablenpc instance_npcname("#Battle_3RZ1");
mapannounce 'map_rev$, "Morocc: I can't let you go unscathed!", bc_map,0x00EBFF;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: Hah hah, my Necromancer. I'll leave them to you.", bc_map,0x00EBFF;
sleep2 3000;
mapannounce 'map_rev$, "Morocc: My loyal soldier, I'll trust you with their deaths!", bc_map,0x00EBFF;
sleep2 3000;
killmonster 'map_rev$, instance_npcname("#RZ Memorial Start") + "::OnSoulDead";
.@necromancer$ = instance_npcname("Morocc Necromancer#RZ1");
enablenpc .@necromancer$;
sleep2 3000;
specialeffect EF_TWOHANDQUICKEN, AREA, .@necromancer$;
npctalk "Morocc Necromancer: As you wish, My Lord!", .@necromancer$;
sleep2 3000;
npctalk "Morocc Necromancer: *Chuckle* You still have no idea, do you?", .@necromancer$;
sleep2 3000;
npctalk "Morocc Necromancer: The energy you generated to protect me while I was hiding within your soul", .@necromancer$;
sleep2 3000;
npctalk "Morocc Necromancer: has been converted to healing energy for Lord Morocc the moment you entered this world of his!", .@necromancer$;
sleep2 3000;
npctalk "Morocc Necromancer: *Chuckle* Your stupidity was a blessing for us. We don't need you anymore. DIE!", .@necromancer$;
specialeffect EF_BEGINSPELL2, AREA, .@necromancer$;
sleep2 3000;
disablenpc .@necromancer$;
monster 'map_rev$,112,48, "Morocc Necromancer", 2999,1, instance_npcname("#Battle_3RZ1") + "::OnMobDead"; // EP14_MORS_BOSSA
'boss_id = $@mobid[0];
initnpctimer;
end;
OnTimer2000:
if (unitexists('boss_id) == false || mobcount( 'map_rev$, instance_npcname("#Battle_3RZ1") + "::OnMobDead" ) < 1) {
stopnpctimer;
donpcevent instance_npcname("#Battle_3RZ2") + "::OnStart";
}
end;
OnTimer4000:
initnpctimer;
end;
OnMobDead:
end;
}
1@rev,106,57,0 script #Battle_3RZ2 HIDDEN_WARP_NPC,{
end;
OnStart:
.@necromancer$ = instance_npcname("Morocc Necromancer#RZ1");
enablenpc .@necromancer$;
sleep 3000;
npctalk "Morocc Necromancer: You're stronger than you look.", .@necromancer$;
sleep 3000;
npctalk "Morocc Necromancer: *Giggle* I'll show you what I'm truly capable of.", .@necromancer$;
sleep 3000;
npctalk "Morocc Necromancer: Beg me for your lives!", .@necromancer$;
sleep 3000;
npctalk "Morocc Necromancer: *Giggle*", .@necromancer$;
sleep 3000;
disablenpc .@necromancer$;
monster 'map_rev$,112,48, "Morocc Necromancer", 3000,1, instance_npcname("#Battle_3RZ2") + "::OnMobDead"; // EP14_MORS_BOSSB
'boss_id = $@mobid[0];
initnpctimer instance_npcname("#Battle_3RZ3"); // init monsters spawn
initnpctimer;
end;
OnTimer1000:
if (mobcount( 'map_rev$, instance_npcname("#Battle_3RZ2") + "::OnMobDead" ) < 1 || unitexists('boss_id) == false) {
donpcevent instance_npcname("#Battle_3RZ3") + "::OnStop";
donpcevent instance_npcname("Morocc Necromancer#RZ1") + "::OnFinal";
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStop";
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStop";
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStop";
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStop";
stopnpctimer;
end;
}
'timer++;
if ('timer == 30) {
getunitdata 'boss_id, .@data;
if (.@data[UMOB_HP] < 3000000 && .@data[UMOB_HP] > 1) {
.@necromancer$ = instance_npcname("#morocc_necromancer_dummy");
setunitdata 'boss_id, UMOB_HP, 3000000;
specialeffect EF_HEAL, AREA, .@necromancer$;
specialeffect EF_HEAL2, AREA, .@necromancer$;
specialeffect EF_HEAL4, AREA, .@necromancer$;
specialeffect EF_HEAL3, AREA, .@necromancer$;
unittalk 'boss_id, "Morocc Necromancer: You can't kill me!";
}
'timer = 0;
}
initnpctimer;
end;
OnMobDead:
end;
}
1@rev,120,54,0 script #Battle_3RZ3 HIDDEN_WARP_NPC,{
end;
OnStop:
stopnpctimer;
killmonster 'map_rev$, instance_npcname("#Battle_3RZ3") + "::OnMobDead";
end;
OnTimer4500:
if ('event_ended == true) {
stopnpctimer;
end;
}
end;
OnTimer7000:
if ('event_ended == true) {
stopnpctimer;
end;
}
.@count = mobcount( 'map_rev$, instance_npcname("#Battle_3RZ3") + "::OnMobDead" );
if (.@count > 39) {
if (unitexists('boss_id) == true)
unittalk 'boss_id, "Morocc Necromancer: You are surrounded by a lot! It's already in the middle of it! Can't escape! Hey!";
end;
}
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStop";
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStop";
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStop";
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStop";
.@label$ = instance_npcname("#Battle_3RZ3") + "::OnMobDead";
if (.@count < 10) {
.@wRand = rand(1,100);
if (.@wRand < 11) {
.@string$ = "Morocc Necromancer: We the soldiers of Morocc know no mercy!";
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$; // EP14_MORS_MOB3
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$; // EP14_MORS_MOB5
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$; // EP14_MORS_MOB4
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
}
else if (.@wRand < 21) {
.@string$ = "Morocc Necromancer: You're doing good so far. *Giggle*";
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
}
else if (.@wRand < 31) {
.@string$ = "Morocc Necromancer: I see you're weakening, though.";
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
}
else if (.@wRand < 41) {
.@string$ = "Morocc Necromancer: Feel the power of his army!";
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
}
else if (.@wRand < 51) {
.@string$ = "Morocc Necromancer: Feel the power of his army!";
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
}
else if (.@wRand < 61) {
.@string$ = "Morocc Necromancer: I see you're weakening, though.";
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Verit", 3005,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
}
else if (.@wRand < 71) {
.@string$ = "Morocc Necromancer: You're doing good so far. *Giggle*";
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Verit", 3005,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
}
else if (.@wRand < 81) {
.@string$ = "Morocc Necromancer: We the soldiers of Morocc know no mercy!";
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Verit", 3005,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
}
else if (.@wRand < 91) {
.@string$ = "Morocc Necromancer: Feel the power of his army!";
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
}
else if (.@wRand < 101) {
.@string$ = "Morocc Necromancer: I see you're weakening, though.";
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
}
}
else if (.@count < 15) {
.@wRand = rand(1,60);
if (.@wRand < 11) {
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
.@string$ = "Morocc Necromancer: Go to hell! Send them to hell!";
}
else if (.@wRand < 21) {
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
.@string$ = "Morocc Necromancer: Morocc's army is not afraid!";
}
else if (.@wRand < 31) {
monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
.@string$ = "Morocc Necromancer: My loyal men are coming! Come over!";
}
else if (.@wRand < 41) {
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
.@string$ = "Morocc Necromancer: For Morocc!!";
}
else if (.@wRand < 51) {
monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
.@string$ = "Morocc Necromancer: For Morocc!!";
}
else {
monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
.@string$ = "Morocc Necromancer: My loyal men are coming! Come over!";
}
}
else if (.@count < 20) {
.@wRand = rand(1,40);
monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
if (.@wRand < 11) {
monster 'map_rev$,120,54, "Morroc's Pumpkin Soul", 3006,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
.@string$ = "Morocc Necromancer: You are alive and can't go back!";
}
else if (.@wRand < 21) {
monster 'map_rev$,119,40, "Morroc's Pumpkin Soul", 3006,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
.@string$ = "Morocc Necromancer: You are alive and can't go back!";
}
else if (.@wRand < 31) {
monster 'map_rev$,104,40, "Morroc's Pumpkin Soul", 3006,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
.@string$ = "Morocc Necromancer: You are gradually entering death!";
}
else {
monster 'map_rev$,104,54, "Morroc's Pumpkin Soul", 3006,1, .@label$;
donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
.@string$ = "Morocc Necromancer: Let me pray for your impending death!";
}
}
else {
.@wRand = rand(1,100);
if (.@wRand < 21) {
monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
if (.@wRand < 11)
.@string$ = "Morocc Necromancer: You are no different from the walking dead!";
else
.@string$ = "Morocc Necromancer: Can hold you up now and you are lucky!";
}
else if (.@wRand < 31) {
monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
.@string$ = "Morocc Necromancer: The result is only this level!";
}
else if (.@wRand < 51) {
monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
.@string$ = "Morocc Necromancer: Even I can't cope with it and dare to fight against Morocc!";
}
else {
monster 'map_rev$,119,40, "Morroc's Pumpkin Soul", 3006,1, .@label$; // EP14_MORS_MOB6
monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
monster 'map_rev$,104,54, "Morocc's Wraith", 3004,1, .@label$;
if (.@wRand < 61)
.@string$ = "Morocc Necromancer: The result is only this level!";
else
.@string$ = "Morocc Necromancer: Can hold you up now and you are lucky!";
}
}
if (unitexists('boss_id) == true)
unittalk 'boss_id, .@string$;
end;
OnTimer24000:
OnTimer24500:
if ('event_ended == true)
stopnpctimer;
end;
OnTimer25000:
if ('event_ended == true) {
stopnpctimer;
end;
}
initnpctimer;
end;
OnMobDead:
end;
}
1@rev,120,55,0 script #Battle_3RZ4 HIDDEN_WARP_NPC,{
end;
OnStart:
sscanf( strnpcinfo(2), "Battle_3RZ%d", .@num );
if (.@num == 4) setarray .@xy[0],112,57;
else if (.@num == 5) setarray .@xy[0],121,47;
else if (.@num == 6) setarray .@xy[0],112,38;
else setarray .@xy[0],102,48;
monster 'map_rev$, .@xy[0], .@xy[1], "Morocc's Osiris", 3002,1, instance_npcname( strnpcinfo(0) ) + "::OnMobDead"; // EP14_MORS_MOB2
'monster_id[.@num] = $mobid[0];
initnpctimer;
end;
OnStop:
stopnpctimer;
killmonster 'map_rev$, instance_npcname( strnpcinfo(0) ) + "::OnMobDead";
end;
OnTimer4500:
callsub S_Spawn;
end;
OnTimer9000:
callsub S_Spawn;
initnpctimer;
end;
OnMobDead:
end;
S_Spawn:
if ('event_ended == true) {
donpcevent instance_npcname( strnpcinfo(0) ) + "::OnStop";
end;
}
sscanf( strnpcinfo(2), "Battle_3RZ%d", .@num );
if (unitexists('monster_id[.@num]) == true && mobcount( 'map_rev$, instance_npcname( strnpcinfo(0) ) + "::OnMobDead" ) > 0) {
getunitdata 'monster_id[.@num], .@data;
monster 'map_rev$, .@data[UMOB_X], .@data[UMOB_Y], "#Poison", 3008,1, instance_npcname( strnpcinfo(0) ) + "::OnMobDead"; // EP14_MORS_HIDDEN
}
return;
}
1@rev,120,56,0 duplicate(#Battle_3RZ4) #Battle_3RZ5 HIDDEN_WARP_NPC
1@rev,120,57,0 duplicate(#Battle_3RZ4) #Battle_3RZ6 HIDDEN_WARP_NPC
1@rev,120,58,0 duplicate(#Battle_3RZ4) #Battle_3RZ7 HIDDEN_WARP_NPC
// Warps
// Entrance -> Weakened Morocc
1@rev,63,181,0 warp2 #RZ Move_30 10,10,1@rev,103,177
1@rev,47,181,0 warp2 #RZ Move_31 10,10,1@rev,103,177
1@rev,31,181,0 warp2 #RZ Move_32 10,10,1@rev,103,177
1@rev,106,183,0 script #RZ Move_1 WARPNPC,10,10,{
end;
OnTouch:
if (is_party_leader() == false)
end;
sscanf( strnpcinfo(2), "RZ Move_%d", .@num );
if (.@num < 5) {
setarray .@x[0], 33, 112, 36, 114, 36, 114, 34, 111, 31, 109, 31, 109;
setarray .@y[0], 117, 116, 118, 117, 121, 120, 122, 121, 121, 120, 118, 117;
}
else if (.@num < 13) {
setarray .@x[0], 31, 36, 37, 30, 29, 33, 38, 34, 32, 29, 35, 37;
setarray .@y[0], 50, 49, 45, 45, 47, 51, 49, 44, 44, 49, 51, 47;
}
else {
setarray .@x[0], 104, 104, 104, 104, 103, 103, 103, 103, 102, 102, 102, 102;
setarray .@y[0], 48, 47, 46, 49, 49, 48, 47, 46, 46, 47, 48, 49;
}
.@size = getarraysize(.@x);
getpartymember getcharid(1), 1, .@char_id;
getpartymember getcharid(1), 2, .@account_id;
for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false)
continue;
if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) {
.@n = (.@index % .@size);
warp 'map_rev$, .@x[.@n], .@y[.@n], .@char_id[.@i];
}
.@index++;
}
end;
}
1@rev,106,172,0 duplicate(#RZ Move_1) #RZ Move_2 WARPNPC,10,10
1@rev,117,172,0 duplicate(#RZ Move_1) #RZ Move_3 WARPNPC,10,10
1@rev,117,183,0 duplicate(#RZ Move_1) #RZ Move_4 WARPNPC,10,10
1@rev,28,125,0 duplicate(#RZ Move_1) #RZ Move_5 WARPNPC,10,10
1@rev,28,114,0 duplicate(#RZ Move_1) #RZ Move_6 WARPNPC,10,10
1@rev,39,114,0 duplicate(#RZ Move_1) #RZ Move_7 WARPNPC,10,10
1@rev,39,125,0 duplicate(#RZ Move_1) #RZ Move_8 WARPNPC,10,10
1@rev,106,123,0 duplicate(#RZ Move_1) #RZ Move_9 WARPNPC,10,10
1@rev,106,112,0 duplicate(#RZ Move_1) #RZ Move_10 WARPNPC,10,10
1@rev,117,112,0 duplicate(#RZ Move_1) #RZ Move_11 WARPNPC,10,10
1@rev,117,123,0 duplicate(#RZ Move_1) #RZ Move_12 WARPNPC,10,10
1@rev,28,53,0 duplicate(#RZ Move_1) #RZ Move_13 WARPNPC,10,10
1@rev,28,42,0 duplicate(#RZ Move_1) #RZ Move_14 WARPNPC,10,10
1@rev,39,42,0 duplicate(#RZ Move_1) #RZ Move_15 WARPNPC,10,10
1@rev,39,53,0 duplicate(#RZ Move_1) #RZ Move_16 WARPNPC,10,10
1@rev,28,125,0 script #RZ Move_5a WARPNPC,10,10,{
end;
OnTouch:
setpcblock PCBLOCK_MOVE, false;
warp "prontera",97,167;
end;
}
1@rev,28,114,0 duplicate(#RZ Move_5a) #RZ Move_6a WARPNPC,10,10
1@rev,39,114,0 duplicate(#RZ Move_5a) #RZ Move_7a WARPNPC,10,10
1@rev,39,125,0 duplicate(#RZ Move_5a) #RZ Move_8a WARPNPC,10,10
1@rev,106,123,0 duplicate(#RZ Move_5a) #RZ Move_9a WARPNPC,10,10
1@rev,106,112,0 duplicate(#RZ Move_5a) #RZ Move_10a WARPNPC,10,10
1@rev,117,112,0 duplicate(#RZ Move_5a) #RZ Move_11a WARPNPC,10,10
1@rev,117,123,0 duplicate(#RZ Move_5a) #RZ Move_12a WARPNPC,10,10
1@rev,28,53,0 duplicate(#RZ Move_5a) #RZ Move_13a WARPNPC,10,10
1@rev,28,42,0 duplicate(#RZ Move_5a) #RZ Move_14a WARPNPC,10,10
1@rev,39,42,0 duplicate(#RZ Move_5a) #RZ Move_15a WARPNPC,10,10
1@rev,39,53,0 duplicate(#RZ Move_5a) #RZ Move_16a WARPNPC,10,10
1@rev,112,56,3 script #RZ Move_17a PORTAL,{
mes "Do you want to exit through the portal?";
next;
if (select( "No.", "Yes." ) == 1)
close;
mes "- Teleporting... -";
close2;
warp "moro_cav",59,63;
end;
}
// dummy npc
// 1@rev,10,10,0 script #RZ Move_18 WARPNPC,{ end; }
1@rev,28,125,0 script #RZ Debuff_1 HIDDEN_WARP_NPC,10,10,{
end;
OnTouch:
setpcblock PCBLOCK_MOVE, true;
end;
}
1@rev,28,114,0 duplicate(#RZ Debuff_1) #RZ Debuff_2 HIDDEN_WARP_NPC,10,10
1@rev,39,114,0 duplicate(#RZ Debuff_1) #RZ Debuff_3 HIDDEN_WARP_NPC,10,10
1@rev,39,125,0 duplicate(#RZ Debuff_1) #RZ Debuff_4 HIDDEN_WARP_NPC,10,10
1@rev,106,123,0 duplicate(#RZ Debuff_1) #RZ Debuff_5 HIDDEN_WARP_NPC,10,10
1@rev,106,112,0 duplicate(#RZ Debuff_1) #RZ Debuff_6 HIDDEN_WARP_NPC,10,10
1@rev,117,112,0 duplicate(#RZ Debuff_1) #RZ Debuff_7 HIDDEN_WARP_NPC,10,10
1@rev,117,123,0 duplicate(#RZ Debuff_1) #RZ Debuff_8 HIDDEN_WARP_NPC,10,10
1@rev,28,53,0 duplicate(#RZ Debuff_1) #RZ Debuff_9 HIDDEN_WARP_NPC,10,10
1@rev,28,42,0 duplicate(#RZ Debuff_1) #RZ Debuff_10 HIDDEN_WARP_NPC,10,10
1@rev,39,42,0 duplicate(#RZ Debuff_1) #RZ Debuff_11 HIDDEN_WARP_NPC,10,10
1@rev,39,53,0 duplicate(#RZ Debuff_1) #RZ Debuff_12 HIDDEN_WARP_NPC,10,10
1@rev,28,53,0 script #RZ Debuff Recovery_1 HIDDEN_WARP_NPC,10,10,{
end;
OnTouch:
setpcblock PCBLOCK_MOVE, false;
end;
}
1@rev,28,42,0 duplicate(#RZ Debuff Recovery_1) #RZ Debuff Recovery_2 HIDDEN_WARP_NPC,10,10
1@rev,39,42,0 duplicate(#RZ Debuff Recovery_1) #RZ Debuff Recovery_3 HIDDEN_WARP_NPC,10,10
1@rev,39,53,0 duplicate(#RZ Debuff Recovery_1) #RZ Debuff Recovery_4 HIDDEN_WARP_NPC,10,10
// GM NPC
sec_in02,20,20,6 script Death Cave#a2 4_M_KHKYEL,{
if (callfunc("F_GM_NPC",1854,0,1,9999) < 1)
end;
switch( select( "Death Cave Reset", "Set Vars", "Cancel" ) ) {
case 1:
mes "[Death Cave]";
mes "Yes. Reset.";
next;
if (isbegin_quest(9318) > 0)
erasequest 9318;
if (isbegin_quest(9319) > 0)
erasequest 9319;
mes "[Death Cave]";
mes "Done!";
close;
case 2:
ep14_3_bios01 = 1;
mes "[Death Cave]";
mes "Thank You!";
close;
case 3:
mes "[Death Cave]";
mes "Thank You!";
close;
}
}