//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2015  Hercules Dev Team
//= Copyright (C)  Euphy
//= Copyright (C)  L0ne_W0lf
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Orc's Memory
//================= Description ===========================================
//= Relive the memory of an orc.
//================= Current Version =======================================
//= 1.7
//=========================================================================

//== Entrance ==============================================
gef_fild10,242,202,0	script	Dimensional Gorge Piece	2_MONEMUS,{

	.@party_id = getcharid(CHAR_ID_PARTY);
	.@p_name$ = getpartyname(.@party_id);
	.@md_name$ = _("Orc's Memory");

	if (!instance_check_party(.@party_id, 2, 30, 80)) {
		mes("Only users between Levels ^ff000030 ~ 80^000000 can enter this Dungeon.");
		close();
	}

	.@orctime = questprogress(12059, PLAYTIME);
	if (.@orctime == 2) {
		mes("^0000ffAll records and after-effects related to the Orc's Memory Dungeon are deleted. You can now regenerate or re-enter the dungeon.^000000");
		erasequest(12059);
		close();
	}

	if (.@orctime == 1) {
		mes("You can enter the Dungeon if it has been generated.");
		next();
		.@str$ = sprintf(_$("Enter the Dungeon %s"), .@md_name$);
		if (select(.@str$, "Cancel") == 2)
			close();
		// Fall through to access the dungeon
	} else { // !.@orctime
		if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2)) {
			mesf("Party status confirmed. Would you like to book entrance to the %s?", .@md_name$);
			next();
			.@str$ = sprintf(_$("Reserve the %s"), .@md_name$);
			switch (select(.@str$, "Enter the Dungeon", "Cancel")) {
			case 1:
				.@instance = instance_create(.@md_name$, .@party_id);
				if (.@instance >= 0) {
					for (.@i = 1; .@i <= 2; ++.@i) {
						if (instance_attachmap(.@i + "@orcs", .@instance) == "") {
							mesf("Party Name: %s", .@p_name$);
							mesf("Party Leader: %s", strcharinfo(PC_NAME));
							mesf("^0000ff%s ^000000 - Reservation Failed.", .@md_name$);
							instance_destroy(.@instance);
							close();
						}
					}
					instance_set_timeout(7200, 300, .@instance);
					instance_init(.@instance);
				}
				mesf("^0000ff%s^000000- Attempting to book an entrance", .@md_name$);
				mesf("After making a reservation, you have to select 'Enter the Dungeon' from the menu if you wish to enter the %s.", .@md_name$);
				close();
			case 2:
				break; // Fall through to access the dungeon (after the else)
			case 3:
				close();
			}
		} else if (select(sprintf(_$("%s Enter the Memorial Dungeon"), .@md_name$), "Cancel") == 2) {
			end;
		}
		// Else access the dungeon
	}

	// Dungeon access

	if (has_instance("1@orcs") == "") {
		mesf("Memorial Dungeon %s does not exist.", .@md_name$);
		mes("The party leader has not reserved entrance to the dungeon yet.");
		next();
		mes("Once the reservation is complete, the dungeon will be generated.");
		mes("If your dungeon has been destroyed you must wait 7 days before re-entering.");
		close();
	}

	mapannounce("gef_fild10", sprintf(_$("%s of the party, %s is entering the %s."), strcharinfo(PC_NAME), .@p_name$, .@md_name$), bc_map, C_SPRINGGREEN);
	if (!questprogress(12059))
		setquest(12059);
	warp("1@orcs", 179, 15);
	end;
}

gef_fild10,238,202,6	script	Mad Scientist#orc	4_LGTSCIENCE,{
	if (BaseLevel < 50) {
		mes("The Mad Scientist doesn't seem to notice you and keeps mumbling to himself...");
		close();
	}
	if (mad == 0) {
		mes("[Mad Scientist]");
		mes("Haha, no Orcs are coming near me!");
		mes("The power of the Dimensional Gorge is undefeatable!!");
		next();
		switch (select("Orcs don't attack you?", "You wish!")) {
		case 1:
			mes("[Mad Scientist]");
			mes("Yeah, yeah.. I know it's hard to belive. I don't blame ya.");
			mes("I used to study the Dimensional Gorge discovered near Morroc.");
			mes("According to my research, the minerals found there have enormous power inside them!");
			next();
			break;
		case 2:
			mes("[Mad Scientist]");
			mes("You are a pretty distrustful person, huh?");
			next();
			break;
		}
		select("Oh? Like what, travel to alternate space?");
		mes("[Mad Scientist]");
		mes("Very smart! I have actually just done that! See that statue over there? It's not your normal Monolith!");
		next();
		mes("[Mad Scientist]");
		mes("I have created it with a combination of our technology and the unlimited energy I discovered from the Gorge! Want to try it?");
		next();
		select("...Um, that doesn't sound legal?");
		mes("[Mad Scientist]");
		mes("Hey, since when did something so interesting have to be legal!? How about it! You can talk to the Orcs! C'mon!");
		next();
		mes("[Mad Scientist]");
		mes("Chances are they'll just give you lots of instructions once they see you, so just wing it! They're always saying the same thing, to the point where I memorized them!");
		next();
		switch (select("Alright... What do I do?", "Umm, maybe not.")) {
		case 1:
			mes("[Mad Scientist]");
			mes("Very good! Just sit in the hands of this statue! And try to act natural when you're in there!");
			mad = 1;
			close();
		case 2:
			mes("[Mad Scientist]");
			mes("Oh fine, be that way!");
			close();
		}
	} else if (mad == 1) {
		mes("[Mad Scientist]");
		mes("Hmm? Put your hand on that Monemus Statue if you want to experience traveling through dimensions!");
		close();
	} else {
		mad = 1;
		end;
	}
}

//== Orc's Memory Floor 1 ==================================
1@orcs,180,30,0	script	#Resurrect Monsters1	CLEAR_NPC,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("#Resurrect Monsters1"));
	end;

OnDisable:
	stopnpctimer();
	killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
	end;

OnEnable:
	enablenpc(instance_npcname("#Resurrect Monsters1"));
	monster(instance_mapname("1@orcs"), 0, 0, _("Orc Warrior"), ORK_WARRIOR, 30, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("1@orcs");
	.@mob_dead_num = 30 - mobcount(.@map$, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
	if (.@mob_dead_num > 0) {
		.@mob_ran = rand(1, 30);
		if (.@mob_ran > 29) {
			monster(.@map$, 0, 0, _("Orc Warrior"), ORK_WARRIOR, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
		} else if (.@mob_ran > 28 && .@mob_ran < 30) {
			monster(.@map$, 0, 0, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
			if (rand(1, 10) == 9)
				mapannounce(.@map$, _("High Orc: We need more defenses! Get more people here!"), bc_map, "0xff4444");
		} else if (.@mob_ran > 26 && .@mob_ran < 29) {
			areamonster(.@map$, 41, 91, 51, 81, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
			if (rand(1, 10) == 9)
				mapannounce(.@map$, _("Where are the High Orcs!? Get them to stop the enemies!"), bc_map, "0xff4444");
		} else {
			areamonster(.@map$, 17, 187, 27, 177, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
			if (rand(1, 5) == 3)
				mapannounce(.@map$, _("Caution: The army's starting to concentrate at Zone No. 4."), bc_map, "0x77ff77");
			if (rand(1, 100) == 50)
				initnpctimer();
		}
	}
	end;

OnTimer10:
	mapannounce(instance_mapname("1@orcs"), _("Shouts of the Chief Orc of Safeguards: Looks like this will take longer than expected. Summon the Stalactic Golems!"), bc_map, "0xff4444");
	end;

OnTimer4010:
	.@map$ = instance_mapname("1@orcs");
	mapannounce(.@map$, _("Stalactic Golems are digging out of the deep underground."), bc_map, "0x77ff77");
	areamonster(.@map$, 17, 187, 27, 177, _("Stalactic Golem"), STALACTIC_GOLEM, 20, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
	stopnpctimer();
	end;
}

1@orcs,180,30,0	script	#Resurrect Monsters2	CLEAR_NPC,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("#Resurrect Monsters2"));
	end;

OnDisable:
	killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
	end;

OnEnable:
	enablenpc(instance_npcname("#Resurrect Monsters2"));
	monster(instance_mapname("1@orcs"), 0, 0, _("Trained Wolf"), DESERT_WOLF, 15, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("1@orcs");
	.@mob_dead_num = 15 - mobcount(.@map$, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
	if (rand(1, 30) > 15) {
		if (.@mob_dead_num > 0)
			monster(.@map$, 0, 0, _("Trained Wolf"), DESERT_WOLF, .@mob_dead_num, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
	} else {
		if (.@mob_dead_num > 0)
			areamonster(.@map$, 17, 187, 27, 177, _("Trained Wolf"), DESERT_WOLF, .@mob_dead_num, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
	}
	end;
}

1@orcs,180,30,0	script	#Resurrect Monsters3	CLEAR_NPC,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("#Resurrect Monsters3"));
	end;

OnDisable:
	killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
	end;

OnEnable:
	enablenpc(instance_npcname("#Resurrect Monsters3"));
	monster(instance_mapname("1@orcs"), 0, 0, _("Orc Archer"), ORC_ARCHER, 15, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("1@orcs");
	.@mob_dead_num = 15 - mobcount(.@map$, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
	.@mob_ran = rand(1, 30);
	if (.@mob_ran > 29) {
		if (.@mob_dead_num > 0)
			monster(.@map$, 0, 0, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
	} else if (.@mob_ran > 26 && .@mob_ran < 30) {
		if (.@mob_dead_num > 0) {
			areamonster(.@map$, 43, 155, 47, 159, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
			if (rand(1, 3) == 3)
				mapannounce(.@map$, _("High Orc: Attack them from behind! Cut off their support!"), bc_map, "0xff4444");
		}
	} else {
		if (.@mob_dead_num > 0)
			areamonster(.@map$, 17, 187, 27, 177, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
	}
	end;
}

1@orcs,180,30,0	script	#Resurrect Monsters4	CLEAR_NPC,{
	end;

OnInstanceInit:
	enablenpc(instance_npcname("#Resurrect Monsters4"));
	areamonster(instance_mapname("1@orcs"), 98, 35, 178, 115, _("Anopheles"), ANOPHELES, 10, instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("1@orcs");
	.@mob_dead_num = 10 - mobcount(.@map$, instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
	if (.@mob_dead_num > 0)
		monster(.@map$, 0, 0, _("Anopheles"), ANOPHELES, .@mob_dead_num, instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
	end;

OnDisable:
	killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
	end;
}

1@orcs,180,29,4	script	Kruger#1-1	4_ORCWARRIOR,{
	donpcevent(instance_npcname("Kruger#1-2")+"::OnEnable");
	end;
}

1@orcs,180,29,4	script	Kruger#1-2	4_ORCWARRIOR,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("Kruger#1-2"));
	end;

OnEnable:
	disablenpc(instance_npcname("Kruger#1-1"));
	enablenpc(instance_npcname("Kruger#1-2"));
	initnpctimer();
	end;

OnTimer10:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: Damn... What took you so long!! I don't have all day!!"), bc_map, C_YELLOW);
	end;

OnTimer5710:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: My plan was to let our comrades open the gate, but it's all ruined since I got busted by the Orc Shaman."), bc_map, C_YELLOW);
	end;

OnTimer14610:
	mapannounce(instance_mapname("1@orcs"), _("Shouts of the Chief Orc of Safeguards: I smell a rat.. Send some patrols to the entrance!!"), bc_map, "0xff4444");
	end;

OnTimer20210:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: Darn it.. They'll be here any minute. Ok. Listen to me now."), bc_map, C_YELLOW);
	end;

OnTimer24910:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: The Orc Shaman has sealed the 1st basement by dividing it into 4 zones. Each zone has one Enchanted Orc who has the power to unseal the next zone."), bc_map, C_YELLOW);
	end;

OnTimer34310:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: Find those Enchanted Orcs and get rid of them to move to the next zone."), bc_map, C_YELLOW);
	end;

OnTimer39710:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: Try to avoid encountering Orcs other then the Enchanted ones. Everytime you kill a normal Orc, High Orcs will gather at the last path to the 2nd floor."), bc_map, C_YELLOW);
	end;

OnTimer49210:
	mapannounce(instance_mapname("1@orcs"), _("Kruger: In the worst case, the path to the 2nd floor could be completely blocked. For your own sake, you should be as sneaky as possible."), bc_map, C_YELLOW);
	end;

OnTimer56310:
	mapannounce(instance_mapname("1@orcs"), _("Mission: Sneak in and get rid of the 'Enchanted Orcs'. Avoiding battles with other Orcs is the best way of getting into the 2nd floor."), bc_map, "0x44ffff");
	donpcevent(instance_npcname("#Resurrect Monsters1")+"::OnEnable");
	donpcevent(instance_npcname("#Resurrect Monsters2")+"::OnEnable");
	donpcevent(instance_npcname("#Resurrect Monsters3")+"::OnEnable");
	disablenpc(instance_npcname("Kruger#1-2"));
	end;

OnTimer60000:
	areamonster(instance_mapname("1@orcs"), 137, 83, 143, 89, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead");
	stopnpctimer();
	end;

}

1@orcs,168,125,0	script	B1 Area 1	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("B1 Area 1"));
	end;

OnEnable:
	enablenpc(instance_npcname("B1 Area 1"));
	areamonster(instance_mapname("1@orcs"), 103, 105, 109, 111, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead1");
	end;

OnTouch:
	warp(instance_mapname("1@orcs"), 168, 130);
	end;

OnContinue:
	donpcevent(instance_npcname("B1 Area 2")+"::OnEnable");
	initnpctimer();
	end;

OnTimer10300:
	mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: The Orcs here used to be my companions. They just lost their will ever since the Orc Shaman started to control them with her magic."), bc_map, "0xff4499");
	end;

OnTimer18700:
	mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: There's nothing we can do but to defeat the Orc Shaman if we want to save the remaining tribes."), bc_map, "0xff4499");
	stopnpctimer();
	end;
}

1@orcs,89,94,0	script	B1 Area 2	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("B1 Area 2"));
	end;

OnEnable:
	enablenpc(instance_npcname("B1 Area 2"));
	areamonster(instance_mapname("1@orcs"), 32, 40, 38, 46, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead2");
	end;

OnTouch:
	warp(instance_mapname("1@orcs"), 85, 85);
	end;

OnContinue:
	donpcevent(instance_npcname("B1 Area 3")+"::OnEnable");
	initnpctimer();
	end;

OnTimer30300:
	mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: I saw the bodies of our tribe. It seems that the Orc Shaman used those Orcs for her rituals."), bc_map, "0xff4499");
	end;

OnTimer37600:
	mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: ... It all has to do with me. I am responsible for this evil."), bc_map, "0xff4499");
	stopnpctimer();
	end;
}

1@orcs,38,105,0	script	B1 Area 3	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("B1 Area 3"));
	end;

OnEnable:
	enablenpc(instance_npcname("B1 Area 3"));
	areamonster(instance_mapname("1@orcs"), 19, 177, 25, 183, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead3");
	end;

OnTouch:
	warp(instance_mapname("1@orcs"), 38, 110);
	end;

OnContinue:
	donpcevent(instance_npcname("B1 Area 4")+"::OnEnable");
	initnpctimer();
	end;

OnTimer30300:
	mapannounce(instance_mapname("1@orcs"), _("Please, hang in there!"), bc_map, "0xff4499");
	end;

OnTimer32700:
	mapannounce(instance_mapname("1@orcs"), _("We'll get some rest when we get to the 2nd basement after passing through here."), bc_map, "0xff4499");
	stopnpctimer();
	end;
}

1@orcs,21,189,0	script	B1 Area 4	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("B1 Area 4"));
	end;

OnEnable:
	enablenpc(instance_npcname("B1 Area 4"));
	donpcevent(instance_npcname("#Resurrect Monsters1")+"::OnDisable");
	donpcevent(instance_npcname("#Resurrect Monsters2")+"::OnDisable");
	donpcevent(instance_npcname("#Resurrect Monsters3")+"::OnDisable");
	donpcevent(instance_npcname("#Resurrect Monsters4")+"::OnDisable");
	end;

OnTouch:
	warp(instance_mapname("2@orcs"), 32, 171);
	end;
}

1@orcs,1,1,0	script	B1 Area Mobs	FAKE_NPC,{
	end;

OnMyMobDead:
	donpcevent(instance_npcname("B1 Area 1")+"::OnEnable");
	end;

OnMyMobDead1:
	donpcevent(instance_npcname("B1 Area 1")+"::OnContinue");
	end;

OnMyMobDead2:
	donpcevent(instance_npcname("B1 Area 2")+"::OnContinue");
	end;

OnMyMobDead3:
	donpcevent(instance_npcname("B1 Area 3")+"::OnContinue");
	end;
}

//== Orc's Memory Floor 2 ==================================
2@orcs,36,171,0	script	#2Resurrect Monsters1	CLEAR_NPC,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("#2Resurrect Monsters1"));
	end;

OnEnable:
	enablenpc(instance_npcname("#2Resurrect Monsters1"));
	monster(instance_mapname("2@orcs"), 0, 0, _("Vengeful Orc"), ORC_SKELETON, 30, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
	end;

OnDisable:
	stopnpctimer();
	killmonster(instance_mapname("2@orcs"), instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("2@orcs");
	.@mob_dead_num = 30 - mobcount(.@map$, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
	if (.@mob_dead_num > 0) {
		.@mob_ran = rand(1, 30);
		if (.@mob_ran > 29) {
			monster(.@map$, 0, 0, _("Vengeful Orc"), ORC_SKELETON, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
		} else if (.@mob_ran > 28 && .@mob_ran < 30) {
			monster(.@map$, 0, 0, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
		} else if (.@mob_ran > 26 && .@mob_ran < 29) {
			areamonster(.@map$, 157, 112, 167, 122, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
			if (rand(1, 10) == 9)
				mapannounce(.@map$, _("Warning: High Orcs are gathering near area 3."), bc_map, "0xff4444");
		} else {
			areamonster(.@map$, 173, 13, 183, 23, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
			if (rand(1, 5) == 3)
				mapannounce(.@map$, _("Caution: The Forces have started to concentrate at the Shaman's Altar."), bc_map, "0x77ff77");
			if (rand(1, 70) == 50)
				initnpctimer();
		}
	}
	end;

OnTimer10:
	mapannounce(instance_mapname("2@orcs"), _("Voice from somewhere: Foolish... Do you really think the altar would fall like that?"), bc_map, "0xff4444");
	end;

OnTimer4010:
	.@map$ = instance_mapname("2@orcs");
	mapannounce(.@map$, _("[ Wraiths were summoned by an unknown power ]"), bc_map, "0x77ff77");
	areamonster(.@map$, 167, 25, 177, 35, _("Wraith"), G_WRAITH, 30, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
	stopnpctimer();
	end;
}

2@orcs,36,171,0	script	#2Resurrect Monsters3	CLEAR_NPC,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("#2Resurrect Monsters3"));
	end;

OnEnable:
	enablenpc(instance_npcname("#2Resurrect Monsters3"));
	monster(instance_mapname("2@orcs"), 0, 0, _("Orc Zombie"), ORC_ZOMBIE, 15, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("2@orcs");
	.@mob_dead_num = 15 - mobcount(.@map$, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
	.@mob_ran = rand(1, 30);
	if (.@mob_ran > 29) {
		if (.@mob_dead_num > 0) {
			monster(.@map$, 0, 0, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
		}
	} else if (.@mob_ran > 6 && .@mob_ran < 30) {
		if (.@mob_dead_num > 0) {
			areamonster(.@map$, 168, 10, 184, 26, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
			if (rand(1, 15) == 3)
				mapannounce(.@map$, _("Warning: Orc Archer teams are gathering near the altar."), bc_map, "0xff4444");
		}
	} else {
		if (.@mob_dead_num > 0)
			areamonster(.@map$, 168, 21, 184, 21, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
	}
	end;

OnDisable:
	killmonster(instance_mapname("2@orcs"), instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
	end;
}

2@orcs,180,30,0	script	#2Resurrect Monsters4	CLEAR_NPC,{
	end;

OnInstanceInit:
	enablenpc(instance_npcname("#2Resurrect Monsters4"));
	monster(instance_mapname("2@orcs"), 0, 0, _("Anopheles"), ANOPHELES, 10, instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
	end;

OnMyMobDead:
	.@map$ = instance_mapname("2@orcs");
	.@mob_dead_num = 10 - mobcount(.@map$, instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
	if (.@mob_dead_num > 0)
		monster(.@map$, 0, 0, _("Anopheles"), ANOPHELES, 1, instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
	end;
}

2@orcs,35,169,4	script	Kruger#2-1	4_ORCWARRIOR,{
	donpcevent(instance_npcname("Kruger#2-2")+"::OnEnable");
	end;
}

2@orcs,35,169,4	script	Kruger#2-2	4_ORCWARRIOR,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("Kruger#2-2"));
	end;

OnEnable:
	disablenpc(instance_npcname("Kruger#2-1"));
	enablenpc(instance_npcname("Kruger#2-2"));
	initnpctimer();
	end;

OnTimer10:
	mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: I'll tell you how to get to the Shaman's altar."), bc_map, C_YELLOW);
	end;

OnTimer3510:
	mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: Do you see the braziers that light the path? Unseal the next zone by strengthening their flames."), bc_map, C_YELLOW);
	end;

OnTimer10710:
	mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: Of course those monsters won't let you touch the braziers that easily."), bc_map, C_YELLOW);
	end;

OnTimer16310:
	mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: But still, try keep the battles not too noticable so the Shaman won't guard the altar with her army squad."), bc_map, C_YELLOW);
	end;

OnTimer21910:
	mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: Only the Party Leader can strengthen the flames, so protect your leader."), bc_map, C_YELLOW);
	end;

OnTimer23910:
	mapannounce(instance_mapname("2@orcs"), _("Mission: Unseal the zone by lighting the braziers. They can only be lit in a certain order, so be careful."), bc_map, "0x4444ff");
	donpcevent(instance_npcname("#2Resurrect Monsters1")+"::OnEnable");
	donpcevent(instance_npcname("#2Resurrect Monsters3")+"::OnEnable");
	donpcevent(instance_npcname("Torch#1-1")+"::OnEnable");
	disablenpc(instance_npcname("Kruger#2-2"));
	end;
}

2@orcs,26,164,0	script	Torch#1-1	CLEAR_NPC,{
	if (getpartyleader(getcharid(CHAR_ID_PARTY), 2) != getcharid(CHAR_ID_CHAR))
		end;
	progressbar(sprintf("0x%x", C_YELLOW), 5);
	setarray(.@id[0], atoi(charat(strnpcinfo(NPC_NAME_HIDDEN), 0)), atoi(charat(strnpcinfo(NPC_NAME_HIDDEN), 2)));
	if (.@id[1] == 4)
		donpcevent(instance_npcname("#Warp2-"+.@id[0])+"::OnEnable");
	else
		donpcevent(instance_npcname("Torch#"+.@id[0]+"-"+(.@id[1]+1))+"::OnEnable");
	initnpctimer();
	disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
	end;

OnInstanceInit:
	if (strnpcinfo(NPC_NAME) != "Torch#2-1" && strnpcinfo(NPC_NAME) != "Torch#3-1")
		disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
	end;

OnEnable:
	enablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
	end;

OnTimer100:
	specialeffect(EF_FIREPILLAR);
	end;

OnTimer2000:
	specialeffect(EF_FIREPILLARBOMB);
	stopnpctimer();
	end;
}
2@orcs,55,155,0	duplicate(Torch#1-1)	Torch#1-2	CLEAR_NPC
2@orcs,108,146,0	duplicate(Torch#1-1)	Torch#1-3	CLEAR_NPC
2@orcs,98,171,0	duplicate(Torch#1-1)	Torch#1-4	CLEAR_NPC

2@orcs,48,100,0	script	#Warp2-1	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("#Warp2-1"));
	end;

OnEnable:
	.@map$ = instance_mapname("2@orcs");
	monster(.@map$, 109, 156, _("Safeguard Chief"), I_HIGH_ORC, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead1");
	mapannounce(.@map$, _("The Chief Orc of Safeguards: Oh!! Looks like I have company. Defeat me if you can!!"), bc_map, "0xff8888");
	end;

OnContinue:
	enablenpc(instance_npcname("#Warp2-1"));
	initnpctimer();
	end;

OnTimer10000:
	areamonster(instance_mapname("2@orcs"), 28, 158, 40, 170, _("Safeguard Chief"), I_HIGH_ORC, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead1");
	stopnpctimer();
	end;

OnTouch:
	warp(instance_mapname("2@orcs"), 47, 93);
	end;
}

2@orcs,35,92,0	duplicate(Torch#1-1)	Torch#2-1	CLEAR_NPC
2@orcs,32,70,0	duplicate(Torch#1-1)	Torch#2-2	CLEAR_NPC
2@orcs,70,31,0	duplicate(Torch#1-1)	Torch#2-3	CLEAR_NPC
2@orcs,84,51,0	duplicate(Torch#1-1)	Torch#2-4	CLEAR_NPC

2@orcs,101,55,0	script	#Warp2-2	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("#Warp2-2"));
	end;

OnEnable:
	.@map$ = instance_mapname("2@orcs");
	monster(.@map$, 67, 64, _("Orc Sniper"), I_ORC_ARCHER, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead2");
	mapannounce(.@map$, _("Orc Sniper: Hah! Pretty impressive that you made it this far, but your foolish little trip ends here..."), bc_map, "0xff8888");
	end;

OnContinue:
	enablenpc(instance_npcname("#Warp2-2"));
	initnpctimer();
	end;

OnTimer10000:
	areamonster(instance_mapname("2@orcs"), 40, 91, 52, 103, _("Orc Sniper"), I_ORC_ARCHER, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead2");
	stopnpctimer();
	end;

OnTouch:
	warp(instance_mapname("2@orcs"), 107, 55);
	end;
}

2@orcs,142,145,0	duplicate(Torch#1-1)	Torch#3-1	CLEAR_NPC
2@orcs,162,134,0	duplicate(Torch#1-1)	Torch#3-2	CLEAR_NPC
2@orcs,144,117,0	duplicate(Torch#1-1)	Torch#3-3	CLEAR_NPC
2@orcs,136,98,0	duplicate(Torch#1-1)	Torch#3-4	CLEAR_NPC

2@orcs,167,104,0	script	#Warp2-3	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("#Warp2-3"));
	end;

OnEnable:
	.@map$ = instance_mapname("2@orcs");
	monster(.@map$, 152, 147, _("Depraved Orc Spirit"), I_ORC_SKELETON, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead3");
	mapannounce(.@map$, _("Depraved Orc Spirit: I smell flesh! Hungry! Wanna try some human meat!!"), bc_map, "0xff8888");
	end;

OnContinue:
	areamonster(instance_mapname("2@orcs"), 117, 61, 129, 73, _("Depraved Orc Spirit"), I_ORC_SKELETON, 1);
	donpcevent(instance_npcname("#Boss Control")+"::OnEnable");
	enablenpc(instance_npcname("#Warp2-3"));
	initnpctimer();
	end;

OnTimer10:
	mapannounce(instance_mapname("2@orcs"), _("Shaman Cargalache: Hahaha!! So, you finally made it here. The assassin you sent was just terrible. That stupid Orc is getting cold under my feet."), bc_map, C_YELLOW);
	end;

OnTimer6810:
	mapannounce(instance_mapname("2@orcs"), _("Shaman Cargalache: My loyal slave, go get those intruders!"), bc_map, C_YELLOW);
	end;

OnTimer10310:
	mapannounce(instance_mapname("2@orcs"), _("Depraved Orc Hero: Whatever you say, my lord."), bc_map, "0xff7777");
	end;

OnTimer13110:
	mapannounce(instance_mapname("2@orcs"), _("Caution: You have been discovered by Shaman Cargalache. Kruger's plan to assassinate the Shaman has failed. You must defeat Cargalache and find traces of Kruger."), bc_map, "0x8888ff");
	stopnpctimer();
	end;

OnTouch:
	warp(instance_mapname("2@orcs"), 167, 95);
	end;
}

2@orcs,36,171,0	script	#Boss Control	CLEAR_NPC,{
	end;

OnInstanceInit:
	disablenpc(instance_npcname("#Boss Control"));
	end;

OnEnable:
	.@map$ = instance_mapname("2@orcs");
	monster(.@map$, 185, 8, _("Shaman Cargalache"), I_ORC_LADY, 1, instance_npcname("#Boss Control")+"::OnMyMobDead");
	monster(.@map$, 179, 15, _("Depraved Orc Hero"), ORK_HERO, 1);
	enablenpc(instance_npcname("#Boss Control"));
	end;

OnMyMobDead:
	donpcevent(instance_npcname("Kruger#")+"::OnEnable");
	.@map$ = instance_mapname("2@orcs");
	.@mob_ran = rand(1, 5);
	if (.@mob_ran == 1)
		mapannounce(.@map$, _("Shaman Cargalache: How... How could this be... How could someone like you...!!"), bc_map, C_YELLOW);
	else if (.@mob_ran == 2)
		mapannounce(.@map$, _("Shaman Cargalache: How is it that I've been overpowered by mere humans!"), bc_map, C_YELLOW);
	else if (.@mob_ran == 3)
		mapannounce(.@map$, _("Shaman Cargalache: This... This can't be the end..."), bc_map, C_YELLOW);
	else if (.@mob_ran == 4)
		mapannounce(.@map$, _("Shaman Cargalache: I... Can't die... Yet...!"), bc_map, C_YELLOW);
	else
		mapannounce(.@map$, _("Shaman Cargalache: Defeated by these fools... It can't be happening...!"), bc_map, C_YELLOW);
	donpcevent(instance_npcname("#2Resurrect Monsters1")+"::OnDisable");
	donpcevent(instance_npcname("#2Resurrect Monsters3")+"::OnDisable");
	donpcevent(instance_npcname("#Warp Outside Orc Dun")+"::OnEnable");
	end;
}

2@orcs,182,8,0	script	#Warp Outside Orc Dun	WARPNPC,3,3,{
OnInstanceInit:
	disablenpc(instance_npcname("#Warp Outside Orc Dun"));
	end;

OnEnable:
	enablenpc(instance_npcname("#Warp Outside Orc Dun"));
	end;

OnTouch:
	warp("gef_fild10", 240, 197);
	end;
}

2@orcs,172,13,0	script	Kruger#	4_ORCWARRIOR2,{
	if (yong_odun < 2) {
		mes("[Kruger]");
		mes("*Coughing*");
		mesf("%s, it's you...", strcharinfo(PC_NAME));
		next();
		mesf("[%s]", strcharinfo(PC_NAME));
		mes("Don't move! You are wounded!");
		next();
		mes("[Kruger]");
		mes("It's... all right.. I'm dying...");
		mes("....");
		mes("The Shaman? What about the Shaman?");
		next();
		mesf("[%s]", strcharinfo(PC_NAME));
		mes("The Shaman's dead now. Who was that Shaman really?");
		next();
		mes("Kruger seemed to be relieved as he hears of the death of the Shaman, but you notice the bitter expression on his face.");
		next();
		mes("[Kruger]");
		mes("I.. I just couldn't kill my own daughter...");
		mes("Thank you, I'm sure she's finally free from the nightmare that used to choke her soul.");
		next();
		mes("Kruger was about to say something more, but he breathed his last breath before he could...");
		yong_odun = 2;
		close();
	} else {
		mes("You can see the dead body of Kruger, peacefully lying on the ground.");
		close();
	}

OnInstanceInit:
	disablenpc(instance_npcname("Kruger#"));
	end;

OnEnable:
	enablenpc(instance_npcname("Kruger#"));
	end;
}

2@orcs,36,171,0	script	#Mobs Control	CLEAR_NPC,{
	end;

OnMyMobDead1:
	donpcevent(instance_npcname("#Warp2-1")+"::OnContinue");
	end;

OnMyMobDead2:
	donpcevent(instance_npcname("#Warp2-2")+"::OnContinue");
	end;

OnMyMobDead3:
	donpcevent(instance_npcname("#Warp2-3")+"::OnContinue");
	end;
}
