//===== rAthena Script =======================================
//= Morse Cave
//===== Description: =========================================
//= [Walkthrough Conversion]
//= Morse Cave Instance
//===== Changelogs: ==========================================
//= 1.0 First version. [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;
	}
	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:
		break;
	}
	switch( isbegin_quest(9318) ) {
	case 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.";
		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";
		break;
	case 1:
		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
		completequest 9318;// Pursuing Hiding Morocc
		setquest 9319;// Pursuing Hiding Morocc Continues
		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";
		break;
	}
	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) > 0 && is_party_leader() == true) {
		next;
		if (select( "No.", "Yes." ) == 1) {
			mes "[Senior Tracker]";
			mes "Come back";
			mes "if you change your mind.";
			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.";
		if (instance_create("Morse's Cave") >= 0)
			'party_id = getcharid(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 (isbegin_quest(9318) == 1) {
		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 'map_rev$, 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:
	while(true) {
		sleep 15000;
		specialeffect 239;
	}
	end;
}

// Entrance
1@rev,27,181,0	script	#RZ Memorial Start	HIDDEN_WARP_NPC,4,4,{
	end;
OnTouch:
	// note : party member can also trigger this event
	disablenpc instance_npcname("#RZ Memorial Start");
	'soul_name$ = strcharinfo(0);	// name displayed on soul is defined at entrance
	mes "";
	sleep2 500;
	mapannounce 'map_rev$, "Morocc: Who dares to disrupt my sleep?!", bc_map,0xEBFF;
	unittalk getcharid(3), "" + strcharinfo(0) + " : We came to the right place!";
	sleep2 3000;
	unittalk getcharid(3), "" + strcharinfo(0) + " : Wait! There's something ahead of us!";
	sleep2 3000;
	specialeffect2 EF_LOCKON;
	unittalk getcharid(3), "" + strcharinfo(0) + " : Are these hideous monsters Morocc's lackeys?";
	donpcevent instance_npcname("#RZ Event_1") + "::OnStart";
	end;
}

// 1@rev,31,181,0	script	#RZ Event_1	HIDDEN_WARP_NPC,5,5,{
1@rev,1,1,0	script	#RZ Event_1	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#RZ Event_1");
	.@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$;
	end;
OnMobDead:
	if (mobcount( 'map_rev$, instance_npcname("#RZ Event_1") + "::OnMobDead" ) < 1) {
		donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_2") + "::OnStart";
		disablenpc instance_npcname("#RZ Event_1");
	}
	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");
	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");
	enablenpc instance_npcname("#RZ Event_3");
	sleep 3000;
	/* Officials scripts
	enablenpc instance_npcname("#RZ Move_30");
	enablenpc instance_npcname("#RZ Move_31");
	enablenpc instance_npcname("#RZ Move_32");
	*/
	mapwarp 'map_rev$,'map_rev$,103,177;	// note: officially players are warped when the next event start - player entering can't access to the current event
	end;
}

// Weakened Morocc Room
1@rev,104,176,0	script	#RZ Event_3	HIDDEN_WARP_NPC,4,4,{
	end;
OnTouch:	// note : party member can also trigger this event
	mes "";	// fix me
	disablenpc instance_npcname("#RZ Event_3");
	enablenpc instance_npcname("Weakened Morocc#RZ1");
	unittalk getcharid(3), "" + strcharinfo(0) + " : Finally, here we are, Morocc.";
	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;
	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");
	donpcevent instance_npcname("Weakened Morocc#control") + "::OnStart";
	end;
OnTalk2:
	enablenpc instance_npcname("Weakened Morocc#RZ1");
	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;
	/* Officials scripts use WARPNPC
	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");
	for ( .@i = 1; .@i <= 12; .@i++ )
		enablenpc instance_npcname( "#Pause Effect RZ" + .@i );
	for ( .@i = 1; .@i <= 8; .@i++ )
		enablenpc instance_npcname( "#RZ Debuff_" + .@i );

	getpartymember 'party_id, 1, .@char_id;
	getpartymember 'party_id, 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$) {
			if ((.@count % 2) == 0)	// Right
				warp 'map_rev$, rand(33,36), rand(117,118), .@char_id[.@i];
			else	// Left
				warp 'map_rev$, rand(112,114), rand(116,118), .@char_id[.@i];
			.@count++;
		}
	}
	end;
}

1@rev,1,1,0	script	Weakened Morocc#control	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("Weakened Morocc#control");
	monster 'map_rev$,111,178,"Weakened Morocc",2998,1, instance_npcname("Weakened Morocc#control") + "::OnMobDead";	// EP14_MORS_EVENT
	end;
OnMobDead:
	donpcevent instance_npcname("Weakened Morocc#RZ1") + "::OnTalk2";
	disablenpc instance_npcname("Weakened Morocc#control");
	end;
}


1@rev,34,126,4	script	Grim Reaper Ankou#RZ Event_3		3029,{ end; }
1@rev,112,126,4	duplicate(Grim Reaper Ankou#RZ Event_3)	Grim Reaper Ankou#RZ Event_4	3029
1@rev,34,55,4	duplicate(Grim Reaper Ankou#RZ Event_3)	Grim Reaper Ankou#RZ Event_5	3029
1@rev,112,48,4	duplicate(Grim Reaper Ankou#RZ Event_3)	Grim Reaper Ankou#RZ Event_6	3029


// Battle 1 - waves, event A - left side
// 1@rev,35,119,0	script	#Battle_1RZ1	HIDDEN_WARP_NPC,10,10,{
1@rev,35,119,0	script	#Battle_1RZ1	HIDDEN_WARP_NPC,2,2,{
	end;
OnTouch:
	pcblockmove 0, true;
	if ('status_battle[0] == 0) {
		'status_battle[0] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart";
		mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your bodies are mine to control!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your souls are food for my resurrection!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF;
		donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart";
	}
	end;
}

// Event B - right side
// 1@rev,112,126,0	script	#Battle_1RZ2	HIDDEN_WARP_NPC,10,10
1@rev,112,116,0	script	#Battle_1RZ2	HIDDEN_WARP_NPC,2,2,{
	end;
OnTouch:
	pcblockmove 0, true;
	if ('status_battle[1] == 0) {
		'status_battle[1] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart";
	}
	end;
}

1@rev,1,1,0	script	#morse_cave_wave_1	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#morse_cave_wave_1");
	sleep 5000;
	callsub( S_Spawn,0 );
	sleep 20000;
	callsub( S_Spawn,0 );
	sleep 20000;
	callsub( S_Spawn,0 );
	mapannounce 'map_rev$, "Morocc: My soldiers, make them suffer! Feast on their bodies and souls!", bc_map,0xEBFF;
	sleep 20000;
	callsub( S_Spawn,0 );
	sleep 20000;
	callsub( S_Spawn,0 );
	mapannounce 'map_rev$, "Morocc: Not enough. Make them feel terror!", bc_map,0xEBFF;
	sleep 20000;
	callsub( S_Spawn,0 );
	sleep 20000;
	callsub( S_Spawn,0 );
	mapannounce 'map_rev$, "Morocc: Resist me! Fight to the death!", bc_map,0xEBFF;
	sleep 20000;
	callsub( S_Spawn,0 );
	sleep 15000;
	callsub( S_Spawn,1 );
	mapannounce 'map_rev$, "Morocc: Mwa hah hah, I can feel my power returning!", bc_map,0xEBFF;
	sleep 10000;
	callsub( S_Spawn,2 );
	sleep 12000;
	.@count[0] = mobcount( 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead" );
	.@count[1] = mobcount( 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead2" );
	killmonster 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead";
	killmonster 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead2";
	disablenpc instance_npcname("#Battle_1RZ1");
	disablenpc instance_npcname("#Battle_1RZ2");
	for ( .@i = 1; .@i <= 12; .@i++ )
		donpcevent instance_npcname( "#Pause Effect RZ" + .@i ) + "::OnStop";
	sleep 3000;
	if (.@count[0] > 19 || .@count[1] > 19) {
		.@reaper$[0] = instance_npcname("Grim Reaper Ankou#RZ Event_3");
		.@reaper$[1] = instance_npcname("Grim Reaper Ankou#RZ Event_4");
		enablenpc .@reaper$[0];
		enablenpc .@reaper$[1];
		npctalk "You're pathetic.", .@reaper$[0];
		npctalk "You're pathetic.", .@reaper$[1];
		sleep 3000;
		npctalk "Weaklings like you aren't enough food for Lord Morocc", .@reaper$[0];
		npctalk "Weaklings like you aren't enough food for Lord Morocc", .@reaper$[1];
		sleep 3000;
		npctalk "to get the energy he needs for a full recovery.", .@reaper$[0];
		npctalk "to get the energy he needs for a full recovery.", .@reaper$[1];
		sleep 3000;
		npctalk "I'll give you one chance to leave. NOW!", .@reaper$[0];
		npctalk "I'll give you one chance to leave. NOW!", .@reaper$[1];
		sleep 3000;
		disablenpc .@reaper$[0];
		disablenpc .@reaper$[1];
		sleep 5000;
		/* Officials scripts
		enablenpc instance_npcname("#RZ Move_5a");// warp to prontera,97,167
		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");
		*/
		getpartymember 'party_id, 1, .@char_id;
		getpartymember 'party_id, 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$)
				pcblockmove .@account_id[.@i], false;
		}
		mapwarp 'map_rev$,"prontera",97,167;
	}
	else {
		mapannounce 'map_rev$, "Morocc: You're more resilient than I thought.", bc_map,0xEBFF;
		sleep 2000;
		mapannounce 'map_rev$, "Morocc: But enough is enough.", bc_map,0xEBFF;
		sleep 5000;
		/* Officials scripts
		enablenpc instance_npcname("#RZ Move_5");// warp to 1@rev,31,50
		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");
		*/
		for ( .@i = 9; .@i <= 15; .@i++ )
			enablenpc instance_npcname( "#RZ Debuff_" + .@i );
		enablenpc instance_npcname("#Battle_2RZ1");
		for ( .@i = 1; .@i <= 12; .@i++ )
			enablenpc instance_npcname( "#Pause Effecto RZ" + .@i );
		warpparty 'map_rev$,31,50, 'party_id, 'map_rev$,1,1;
	}
	for ( .@i = 1; .@i <= 8; .@i++ )
		disablenpc instance_npcname( "#RZ Debuff_" + .@i );
	disablenpc instance_npcname("#morse_cave_wave_1");
	donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStop";
	donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStop";
	end;

S_Spawn:
	.@additionnal_monster = getarg(0);
	.@label$ = instance_npcname("#morse_cave_wave_1") + "::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$;
	if (.@additionnal_monster == 1)
		monster 'map_rev$,33,111,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	else if (.@additionnal_monster == 2)
		monster 'map_rev$,32,128,"Morocc's Archer Skeleton",3003,1, .@label$;

	if ('status_battle[1] == true) {
		.@label$ = instance_npcname("#morse_cave_wave_1") + "::OnMobDead2";
		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$;
		if (.@additionnal_monster == 1)
			monster 'map_rev$,103,118,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
		else if (.@additionnal_monster == 2)
			monster 'map_rev$,120,117,"Morocc's Archer Skeleton",3003,1, .@label$;
	}
	return;

OnMobDead:
OnMobDead2:
	end;
}

// display icewall every 30s
1@rev,33,117,0	script	#Pause Effect RZ1	HIDDEN_WARP_NPC,1,1,{
	end;
OnTouch:
	if (countstr( strnpcinfo(0), "Effecto" ) == 0)
		.@num = atoi( replacestr( strnpcinfo(2), "Pause Effect RZ", "" ) );
	else
		.@num = atoi( replacestr( strnpcinfo(2), "Pause Effecto RZ", "" ) ) + 20;
	if ('pause_effect[.@num] == 0) {
		'pause_effect[.@num] = 1;
		specialeffect EF_ICEWALL;
		initnpctimer;
	}
	pcblockmove 0, true;
	if (.@num < 7 && 'status_battle[0] == 0) {
		mes "";	// fix me
		'status_battle[0] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart";
		mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your bodies are mine to control!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your souls are food for my resurrection!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF;
		donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart";
	}
	else if (.@num >= 7 && .@num < 13 && 'status_battle[1] == 0) {
		'status_battle[1] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart";
	}
	else if (.@num >= 21 && .@num < 33 && 'status_battle[2] == 0) {
		mes "";	// fix me
		'status_battle[2] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart";
		mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0xEBFF;
		sleep2 2000;
		mapannounce 'map_rev$, "Morocc: My power is returning!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your bodies and souls are under my command!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF;
		donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart";
	}
	end;
OnTimer30000:
	specialeffect EF_ICEWALL;
	initnpctimer;
	end;
OnStop:
	stopnpctimer;
	disablenpc instance_npcname( strnpcinfo(0) );
	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

// Event B - right side
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

// Battle 2 - waves
1@rev,31,50,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ1	HIDDEN_WARP_NPC,1,1
1@rev,36,49,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ2	HIDDEN_WARP_NPC,1,1
1@rev,37,45,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ3	HIDDEN_WARP_NPC,1,1
1@rev,30,45,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ4	HIDDEN_WARP_NPC,1,1
1@rev,29,47,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ5	HIDDEN_WARP_NPC,1,1
1@rev,33,51,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ6	HIDDEN_WARP_NPC,1,1
1@rev,38,49,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ7	HIDDEN_WARP_NPC,1,1
1@rev,34,44,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ8	HIDDEN_WARP_NPC,1,1
1@rev,32,44,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ9	HIDDEN_WARP_NPC,1,1
1@rev,29,49,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ10	HIDDEN_WARP_NPC,1,1
1@rev,35,51,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ11	HIDDEN_WARP_NPC,1,1
1@rev,37,47,0	duplicate(#Pause Effect RZ1)	#Pause Effecto RZ12	HIDDEN_WARP_NPC,1,1

// Event A - left side - debuff
1@rev,33,111,0	script	#RZ Debuff_1	HIDDEN_WARP_NPC,12,4,{
	end;
OnTouch:
	pcblockmove 0, true;
	.@num = atoi( replacestr( strnpcinfo(2), "RZ Debuff_", "" ) );
	if (.@num < 5 && 'status_battle[0] == 0) {
		mes "";	// fix me
		'status_battle[0] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart";
		mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your bodies are mine to control!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your souls are food for my resurrection!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF;
		donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart";
	}
	else if (.@num >= 5 && .@num < 9 && 'status_battle[1] == 0) {
		'status_battle[1] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart";
	}
	else if (.@num >= 9 && .@num < 16 && 'status_battle[2] == 0) {
		mes "";	// fix me
		'status_battle[2] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart";
		mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0xEBFF;
		sleep2 2000;
		mapannounce 'map_rev$, "Morocc: My power is returning!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: Your bodies and souls are under my command!", bc_map,0xEBFF;
		sleep2 3000;
		mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF;
		donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart";
	}
	end;
}
1@rev,42,124,0	duplicate(#RZ Debuff_1)	#RZ Debuff_2	HIDDEN_WARP_NPC,4,8
1@rev,25,124,0	duplicate(#RZ Debuff_1)	#RZ Debuff_3	HIDDEN_WARP_NPC,4,8
1@rev,33,128,0	duplicate(#RZ Debuff_1)	#RZ Debuff_4	HIDDEN_WARP_NPC,4,4

// Event B - right side - debuff
1@rev,112,110,0	duplicate(#RZ Debuff_1)	#RZ Debuff_5	HIDDEN_WARP_NPC,12,4
1@rev,103,122,0	duplicate(#RZ Debuff_1)	#RZ Debuff_6	HIDDEN_WARP_NPC,4,7
1@rev,120,122,0	duplicate(#RZ Debuff_1)	#RZ Debuff_7	HIDDEN_WARP_NPC,4,7
1@rev,112,126,0	duplicate(#RZ Debuff_1)	#RZ Debuff_8	HIDDEN_WARP_NPC,4,3

// Battle 2 - waves - debuff
1@rev,32,47,0	duplicate(#RZ Debuff_1)	#RZ Debuff_9	HIDDEN_WARP_NPC,1,1
1@rev,24,48,0	duplicate(#RZ Debuff_1)	#RZ Debuff_10	HIDDEN_WARP_NPC,3,5
1@rev,27,56,0	duplicate(#RZ Debuff_1)	#RZ Debuff_11	HIDDEN_WARP_NPC,4,4
1@rev,43,47,0	duplicate(#RZ Debuff_1)	#RZ Debuff_12	HIDDEN_WARP_NPC,3,4
1@rev,41,56,0	duplicate(#RZ Debuff_1)	#RZ Debuff_13	HIDDEN_WARP_NPC,4,4
1@rev,34,56,0	duplicate(#RZ Debuff_1)	#RZ Debuff_14	HIDDEN_WARP_NPC,2,3
1@rev,34,39,0	duplicate(#RZ Debuff_1)	#RZ Debuff_15	HIDDEN_WARP_NPC,12,3

// official npcs to block the player from moving
// Event A - left side
// 1@rev,28,125,0	script	#RZ Debuff_1	HIDDEN_WARP_NPC,10,10,{
// 1@rev,28,114,0	script	#RZ Debuff_2	HIDDEN_WARP_NPC,10,10,{
// 1@rev,39,114,0	script	#RZ Debuff_3	HIDDEN_WARP_NPC,10,10,{
// 1@rev,39,125,0	script	#RZ Debuff_4	HIDDEN_WARP_NPC,10,10,{

// Event B - right side
// 1@rev,106,123,0	script	#RZ Debuff_5	HIDDEN_WARP_NPC,10,10,{
// 1@rev,106,112,0	script	#RZ Debuff_6	HIDDEN_WARP_NPC,10,10,{
// 1@rev,117,112,0	script	#RZ Debuff_7	HIDDEN_WARP_NPC,10,10,{
// 1@rev,117,123,0	script	#RZ Debuff_8	HIDDEN_WARP_NPC,10,10,{

// Battle 2 - waves
// 1@rev,28,53,0	script	#RZ Debuff_9	HIDDEN_WARP_NPC,10,10,{
// 1@rev,28,42,0	script	#RZ Debuff_10	HIDDEN_WARP_NPC,10,10,{
// 1@rev,39,42,0	script	#RZ Debuff_11	HIDDEN_WARP_NPC,10,10,{
// 1@rev,39,53,0	script	#RZ Debuff_12	HIDDEN_WARP_NPC,10,10,{

// 1@rev,28,53,0	script	#RZ Debuff Recovery_1	HIDDEN_WARP_NPC,10,10,{
// 1@rev,28,42,0	script	#RZ Debuff Recovery_2	HIDDEN_WARP_NPC,10,10,{
// 1@rev,39,42,0	script	#RZ Debuff Recovery_3	HIDDEN_WARP_NPC,10,10,{
// 1@rev,39,53,0	script	#RZ Debuff Recovery_4	HIDDEN_WARP_NPC,10,10,{

// Battle 2 - waves
// 1@rev,34,47,0	script	#Battle_2RZ1	HIDDEN_WARP_NPC,10,10,{
1@rev,34,47,0	script	#Battle_2RZ1	HIDDEN_WARP_NPC,3,3,{
	end;
OnTouch:
	pcblockmove 0, true;
	if ('status_battle[2] == 0) {
		'status_battle[2] = 1;
		donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart";
		mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0xEBFF;
		sleep 2000;
		mapannounce 'map_rev$, "Morocc: My power is returning!", bc_map,0xEBFF;
		sleep 3000;
		mapannounce 'map_rev$, "Morocc: Your bodies and souls are under my command!", bc_map,0xEBFF;
		sleep 3000;
		mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF;
		donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart";
	}
	end;
}

1@rev,1,1,0	script	#morse_cave_wave_2	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#morse_cave_wave_2");
	.@label$ = instance_npcname("#morse_cave_wave_2") + "::OnMobDead";
	sleep 5000;
	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,0xEBFF;
	sleep 25000;
	callsub( S_Spawn );
	monster 'map_rev$,40,41,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	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,0xEBFF;
	sleep 25000;
	callsub( S_Spawn );
	monster 'map_rev$,40,41,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	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
	sleep 25000;
	callsub( S_Spawn );
	monster 'map_rev$,40,41,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	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
	mapannounce 'map_rev$, "Morocc: More! I need more energy!", bc_map,0xEBFF;
	sleep 25000;
	callsub( S_Spawn );
	monster 'map_rev$,40,41,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	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
	mapannounce 'map_rev$, "Morocc: Mwah hah hah! Fear my army! Struggle harder!", bc_map,0xEBFF;
	sleep 25000;
	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$,40,41,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	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
	sleep 25000;
	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$;
	monster 'map_rev$,40,41,"Morocc's Verit",3005,1, .@label$;// EP14_MORS_MOB5
	monster 'map_rev$,40,54,"Morocc's Verit",3005,1, .@label$;
	mapannounce 'map_rev$, "Morocc: You're pathetic, struggling to survive!", bc_map,0xEBFF;
	sleep 15000;
	callsub( S_Spawn );
	monster 'map_rev$,40,41,"Morocc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3
	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
	monster 'map_rev$,27,41,"Morocc's Verit",3005,1, .@label$;
	sleep 12000;
	.@count = mobcount( 'map_rev$, instance_npcname("#morse_cave_wave_2") + "::OnMobDead" );
	killmonster 'map_rev$, instance_npcname("#morse_cave_wave_2") + "::OnMobDead";
	disablenpc instance_npcname("#Battle_2RZ1");
	for ( .@i = 1; .@i <= 12; .@i++ )
		donpcevent instance_npcname( "#Pause Effecto RZ" + .@i ) + "::OnStop";
	sleep 3000;
	if (.@count > 19) {
		.@reaper$ = instance_npcname("Grim Reaper Ankou#RZ Event_5");
		enablenpc .@reaper$;
		npctalk "You're pathetic.", .@reaper$;
		sleep 3000;
		npctalk "Weaklings like you aren't enough food for Lord Morocc", .@reaper$;
		sleep 3000;
		npctalk "to get the energy he needs for a full recovery.", .@reaper$;
		sleep 3000;
		npctalk "I'll give you one chance to leave. NOW!", .@reaper$;
		sleep 3000;
		disablenpc .@reaper$;
		sleep 5000;
		/* Officials scripts
		enablenpc instance_npcname("#Move_13a");// warp to prontera,97,167
		enablenpc instance_npcname("#Move_14a");
		enablenpc instance_npcname("#Move_15a");
		enablenpc instance_npcname("#Move_16a");
		*/
		getpartymember 'party_id, 1, .@char_id;
		getpartymember 'party_id, 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$)
				pcblockmove .@account_id[.@i], false;
		}
		mapwarp 'map_rev$,"prontera",97,167;
	}
	else {
		mapannounce 'map_rev$, "Morocc: I'm surprised you've lasted this long. Thank you for helping me recover most of my strength.", bc_map,0xEBFF;
		sleep 4000;
		mapannounce 'map_rev$, "Morocc: Good, I feel rejuvenated.", bc_map,0xEBFF;
		sleep 3000;
		for ( .@i = 9; .@i <= 15; .@i++ )
			disablenpc instance_npcname( "#RZ Debuff_" + .@i );
		getpartymember 'party_id, 1, .@char_id;
		getpartymember 'party_id, 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$)
				pcblockmove .@account_id[.@i], false;
		}
		// 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");
		sleep 1000;
		// enablenpc instance_npcname("#RZ Move_13");// warp to 1@rev,104,48
		// enablenpc instance_npcname("#RZ Move_14");
		// enablenpc instance_npcname("#RZ Move_15");
		// enablenpc instance_npcname("#RZ Move_16");
		enablenpc instance_npcname("#Battle_3RZ1");
		mapwarp 'map_rev$,'map_rev$,104,48;
	}
	disablenpc instance_npcname("#morse_cave_wave_2");
	donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStop";
	end;
S_Spawn:
	.@label$ = instance_npcname("#morse_cave_wave_2") + "::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;
OnMobDead:
	end;
}


// Display EF_CURSEATTACK effect overhead 'Soul' monster
// Event A - left side
1@rev,34,120,0	script	#RZ Memorial Effect 1	HIDDEN_WARP_NPC,{
	end;
OnStart:
	.@npc_name$ = instance_npcname( strnpcinfo(0) );
	enablenpc .@npc_name$;
	getmapxy .@map$,.@x,.@y, BL_NPC;
	monster 'map_rev$,.@x,.@y,('soul_name$ + "'s Soul"),3007,1, .@npc_name$ + "::OnStop";	// EP14_MORS_DUMMY
	initnpctimer;
	specialeffect EF_STORMGUST;
	specialeffect EF_CURSEATTACK;
	end;
OnTimer2000:
	specialeffect EF_CURSEATTACK;
	initnpctimer;
	end;
OnStop:
	stopnpctimer;
	killmonster 'map_rev$, instance_npcname( strnpcinfo(0) ) + "::OnStop";
	disablenpc instance_npcname( strnpcinfo(0) );
	end;
}
// Event B - right side
1@rev,112,118,0	duplicate(#RZ Memorial Effect 1)	#RZ Memorial Effect 2	HIDDEN_WARP_NPC

// Battle 2 - waves
1@rev,34,48,0	duplicate(#RZ Memorial Effect 1)	#RZ Memorial Effect 3	HIDDEN_WARP_NPC

// official range
// 1@rev,34,120,0	script	#RZ Memorial Effect 1	HIDDEN_WARP_NPC,4,4,{
// 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

// Battle 3
1@rev,112,48,4	script	Morocc Necromancer#RZ1	4_GHOST_STAND,{ 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,0xEBFF;
	sleep2 3000;
	mapannounce 'map_rev$, "Morocc: Hah hah, my Necromancer. I'll leave them to you.", bc_map,0xEBFF;
	sleep2 3000;
	mapannounce 'map_rev$, "Morocc: My loyal soldier, I'll trust you with their deaths!", bc_map,0xEBFF;
	sleep2 3000;
	.@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$;
	donpcevent instance_npcname("#morse_cave_3") + "::OnStart";
	end;
}

1@rev,1,1,0	script	#morse_cave_3	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#morse_cave_3");
	monster 'map_rev$,112,48,"Morocc Necromancer",2999,1, instance_npcname("#morse_cave_3") + "::OnMobDead";// EP14_MORS_BOSSA
	end;
OnMobDead:
	.@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("#morse_cave_3") + "::OnMobDead2";// EP14_MORS_BOSSB
	'boss_id = $@mobid[0];
	donpcevent instance_npcname("#morse_cave_wave_3") + "::OnStart";
	donpcevent instance_npcname("#morse_cave_boss_talk") + "::OnStart";
	end;
OnMobDead2:
	donpcevent instance_npcname("#morse_cave_wave_3") + "::OnStop";
	donpcevent instance_npcname("#morse_cave_boss_talk") + "::OnStop";
	donpcevent instance_npcname("#morse_cave_wave_3_mobs") + "::OnStop";
	sleep 3000;
	.@reaper$ = instance_npcname("Grim Reaper Ankou#RZ Event_6");
	enablenpc .@reaper$;
	sleep 1000;
	npctalk "Grim Reaper Ankou: Sigh, Necromancer, why did you have to die so quickly?", .@reaper$;
	sleep 3000;
	npctalk "Grim Reaper Ankou: Don't be so happy!", .@reaper$;
	sleep 3000;
	npctalk "Grim Reaper Ankou: Now that Lord Morocc has fully recovered his strength, you're as good as dead!", .@reaper$;
	sleep 3000;
	npctalk "Grim Reaper Ankou: We'll meet again. *Chuckle*", .@reaper$;
	sleep 2000;
	hideonnpc .@reaper$;
	enablenpc instance_npcname("#RZ Move_17a");
	specialeffect EF_THUNDERSTORM,AREA, .@reaper$;	// officially Morocc Necromancer#RZ1 display the effects but they have the same coordinates
	sleep 1000;
	specialeffect EF_LORD,AREA, .@reaper$;
	specialeffect EF_THUNDERSTORM,AREA, .@reaper$;
	sleep 1000;
	specialeffect EF_LORD,AREA, .@reaper$;
	end;
}

1@rev,1,1,0	script	#morse_cave_wave_3	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#morse_cave_wave_3");
	initnpctimer;
	end;
OnTimer7000:
	stopnpctimer;
	donpcevent instance_npcname("#morse_cave_wave_3_mobs") + "::OnStart";
	end;
OnStop:
	disablenpc instance_npcname("#morse_cave_wave_3");
	stopnpctimer;
	end;
}

1@rev,1,1,0	script	#morse_cave_boss_talk	HIDDEN_WARP_NPC,{
	end;
OnStart:
	initnpctimer;
	end;
OnTimer8000:
	.@r = rand(4);
	if (.@r == 0)
		unittalk 'boss_id, "Morocc Necromancer: We the soldiers of Morocc know no mercy!";
	else if (.@r == 1)
		unittalk 'boss_id, "Morocc Necromancer: You're doing good so far. *Giggle*";
	else if (.@r == 2)
		unittalk 'boss_id, "Morocc Necromancer: I see you're weakening, though.";
	else
		unittalk 'boss_id, "Morocc Necromancer: Feel the power of his army!";
	initnpctimer;
	end;
OnTimer25000:
	initnpctimer;
	end;
OnStop:
	disablenpc instance_npcname("#morse_cave_boss_talk");
	stopnpctimer;
	end;
}

1@rev,1,1,0	script	#morse_cave_wave_3_mobs	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#morse_cave_wave_3_mobs");
	initnpctimer;

	setarray 'coord[0],
		112,57,
		121,47,
		112,38,
		120,54,
		119,40,
		104,40,
		102,48;
	'num_coord = getarraysize('coord) / 2;
	end;
OnTimer25000:
	for ( .@i = 0; .@i < 'num_coord; .@i++ ) {
		.@last = ( 'num_coord - .@i - 1 ) * 2;
		.@r = rand( 'num_coord - .@i ) * 2;
		setarray .@xy[0], 'coord[.@r], 'coord[.@r+1];
		setarray 'coord[.@r], 'coord[.@last], 'coord[.@last+1];
		setarray 'coord[.@last], .@xy[0], .@xy[1];
	}
	.@label$ = instance_npcname("#morse_cave_wave_3_mobs") + "::OnMobDead";
	if (mobcount( 'map_rev$, .@label$ ) < 100) {	// stop to 100 mobs for performance
		monster 'map_rev$,'coord[0],'coord[1], "Morocc's Ghoul", 3001,1, .@label$;				// EP14_MORS_MOB1
		monster 'map_rev$,'coord[2],'coord[3], "Morocc's Ghoul", 3001,1, .@label$;				// EP14_MORS_MOB1
		monster 'map_rev$,'coord[4],'coord[5], "Morocc's Ghoul", 3001,1, .@label$;				// EP14_MORS_MOB1
		monster 'map_rev$,'coord[6],'coord[7], "Morocc's Osiris", 3002,1, .@label$;				// EP14_MORS_MOB2
		monster 'map_rev$,'coord[8],'coord[9], "Morocc's Archer Skeleton", 3003,1, .@label$;	// EP14_MORS_MOB3
		monster 'map_rev$,'coord[10],'coord[11], "Morocc's Wraith", 3004,1, .@label$;			// EP14_MORS_MOB4

		if (rand(100) < 20)
			monster 'map_rev$,'coord[12],'coord[12], "Morocc's Archer Skeleton", 3003,1, .@label$;	// EP14_MORS_MOB3
		else
			monster 'map_rev$,'coord[12],'coord[13], "Morocc's Verit", 3005,1, .@label$;		// EP14_MORS_MOB5

		// inaccurate
		areamonster 'map_rev$,102,38,121,57, "#Poison", 3008,1, .@label$;		// EP14_MORS_HIDDEN
	}
	initnpctimer;
	end;
OnStop:
	stopnpctimer;
	killmonster 'map_rev$, instance_npcname("#morse_cave_wave_3_mobs") + "::OnMobDead";
	disablenpc instance_npcname("#morse_cave_wave_3_mobs");
	end;
OnMobDead:
	end;
}

// 1@rev,106,57,0	script	#Battle_3RZ2	HIDDEN_WARP_NPC,{
// 1@rev,120,54,0	script	#Battle_3RZ3	HIDDEN_WARP_NPC,{
// 1@rev,120,55,0	script	#Battle_3RZ4	HIDDEN_WARP_NPC,{
// 1@rev,120,56,0	script	#Battle_3RZ5	HIDDEN_WARP_NPC,{
// 1@rev,120,57,0	script	#Battle_3RZ6	HIDDEN_WARP_NPC,{
// 1@rev,120,58,0	script	#Battle_3RZ7	HIDDEN_WARP_NPC,{

1@rev,112,56,3	script	#RZ Move_17a	PORTAL,{
	mes "Do you want to exit through the portal?";
	next;
	if (select( "No.", "Yes." ) == 2) {
		mes "- Teleporting... -";
		close2;
		warp "moro_cav",59,63;
		end;
	}
	end;

OnInstanceInit:
	'map_rev$ = instance_mapname("1@rev");
	'status_battle[0] = 0;
	'status_battle[1] = 0;
	'status_battle[2] = 0;

	// Entrance
	disablenpc instance_npcname("#RZ Event_1");
	disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");

	// Weakened Morocc
	disablenpc instance_npcname("#RZ Event_3");
	disablenpc instance_npcname("Weakened Morocc#RZ1");
	disablenpc instance_npcname("Weakened Morocc#control");

	// Battle 1
	disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_3");
	disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_4");
	disablenpc instance_npcname("#Battle_1RZ1");
	disablenpc instance_npcname("#Battle_1RZ2");
	disablenpc instance_npcname("#RZ Memorial Effect 1");
	disablenpc instance_npcname("#RZ Memorial Effect 2");
	disablenpc instance_npcname("#morse_cave_wave_1");
	for ( .@i = 1; .@i <= 12; .@i++ )
		disablenpc instance_npcname( "#Pause Effect RZ" + .@i );

	// Battle 2
	disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
	disablenpc instance_npcname("#RZ Memorial Effect 3");
	disablenpc instance_npcname("#morse_cave_wave_2");
	disablenpc instance_npcname("#Battle_2RZ1");
	for ( .@i = 1; .@i <= 12; .@i++ )
		disablenpc instance_npcname( "#Pause Effecto RZ" + .@i );

	// Battle 3
	disablenpc instance_npcname("#morse_cave_3");
	disablenpc instance_npcname("#morse_cave_wave_3");
	disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_6");
	disablenpc instance_npcname("#Battle_3RZ1");
	disablenpc instance_npcname("Morocc Necromancer#RZ1");
	disablenpc instance_npcname("#RZ Move_17a");

	// Debuff - Battle 1 & 2
	for ( .@i = 1; .@i <= 15; .@i++ )
		disablenpc instance_npcname( "#RZ Debuff_" + .@i );

	// reload
	if ('party_id > 0) {
		getpartymember 'party_id, 1, .@char_id;
		getpartymember 'party_id, 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$)
				pcblockmove .@account_id[.@i], false;
		}
	}
	end;
}

/*
// Original 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

// Weakened Morocc -> Battle Wave 1a
1@rev,106,172,0	warp2	#RZ Move_1	10,10,1@rev,33,117
1@rev,106,172,0	warp2	#RZ Move_2	10,10,1@rev,33,117
1@rev,117,172,0	warp2	#RZ Move_3	10,10,1@rev,33,117
1@rev,117,183,0	warp2	#RZ Move_4	10,10,1@rev,33,117

// Weakened Morocc -> Battle Wave 1b
1@rev,106,172,0	warp2	#RZ Move_1	10,10,1@rev,112,116
1@rev,106,172,0	warp2	#RZ Move_2	10,10,1@rev,112,116
1@rev,117,172,0	warp2	#RZ Move_3	10,10,1@rev,112,116
1@rev,117,183,0	warp2	#RZ Move_4	10,10,1@rev,112,116

// Battle Wave 1a -> Battle Wave 2
1@rev,28,125,0	warp2	#RZ Move_5	10,10,1@rev,31,50
1@rev,28,114,0	warp2	#RZ Move_6	10,10,1@rev,31,50
1@rev,39,114,0	warp2	#RZ Move_7	10,10,1@rev,31,50
1@rev,39,125,0	warp2	#RZ Move_8	10,10,1@rev,31,50

// Battle Wave 1a -> Prontera
1@rev,28,125,0	warp2	#RZ Move_5a	10,10,prontera,97,167
1@rev,28,114,0	warp2	#RZ Move_6a	10,10,prontera,97,167
1@rev,39,114,0	warp2	#RZ Move_7a	10,10,prontera,97,167
1@rev,39,125,0	warp2	#RZ Move_8a	10,10,prontera,97,167

// Battle Wave 1b -> Battle Wave 2
1@rev,106,123,0	warp2	#RZ Move_9	10,10,1@rev,31,50
1@rev,106,112,0	warp2	#RZ Move_10	10,10,1@rev,31,50
1@rev,117,112,0	warp2	#RZ Move_11	10,10,1@rev,31,50
1@rev,117,123,0	warp2	#RZ Move_12	10,10,1@rev,31,50

// Battle Wave 1b -> Prontera
1@rev,106,123,0	warp2	#RZ Move_9a	10,10,prontera,97,167
1@rev,106,112,0	warp2	#RZ Move_10a	10,10,prontera,97,167
1@rev,117,112,0	warp2	#RZ Move_11a	10,10,prontera,97,167
1@rev,117,123,0	warp2	#RZ Move_12a	10,10,prontera,97,167

// Battle Wave 2 -> Final Battle
1@rev,28,53,0	warp2	#RZ Move_13	10,10,1@rev,104,48
1@rev,28,42,0	warp2	#RZ Move_14	10,10,1@rev,104,48
1@rev,39,42,0	warp2	#RZ Move_15	10,10,1@rev,104,48
1@rev,39,53,0	warp2	#RZ Move_16	10,10,1@rev,104,48

// Battle Wave 2 -> Prontera
1@rev,28,53,0	warp2	#RZ Move_13a	10,10,prontera,97,167
1@rev,28,42,0	warp2	#RZ Move_14a	10,10,prontera,97,167
1@rev,39,42,0	warp2	#RZ Move_15a	10,10,prontera,97,167
1@rev,39,53,0	warp2	#RZ Move_16a	10,10,prontera,97,167
*/
