Jump to content
  • 0

Devil tower instance minor bugs


drifterxxxx2

Question


  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.02
  • Content Count:  83
  • Reputation:   3
  • Joined:  10/22/17
  • Last Seen:  

Hi guys

 

Added devil tower instance recently and I'm having 2 minor problems

//===== rAthena Script =======================================
//= Devil Tower
//===== Description: =========================================
//= [Walkthrough Conversion]
//= Devil Tower Instance
//===== Changelogs: ==========================================
//= 1.0 First version. [Capuche]
//============================================================

dali02,134,119,5	script	Historian Shep#tnm01	4_F_NOVICE,{
	if (BaseLevel < 130) {
		mes "[Shep]";
		mes "Are you volunteering to explore the Devil's Tower?";
		mes "It's extremely dangerous so you need to be at least ^4d4dffLevel 130^000000.";
		next;
		mes "[Shep]";
		mes "Will you come back when you get stronger?";
		mes "You know what I mean right?";
		close;
	}
	switch( checkquest(7577,PLAYTIME) ) {// daily timer
	case -1:
		break;
	case 0:
	case 1:
		mes "[Shep]";
		mes "You want to explore again so soon?";
		mes "Your body needs to recover from the time traveling.";
		next;
		mes "[Shep]";
		mes "Take a rest day and come back tomorrow.!";
		mes "You understand?";
		close;
	case 2:
		mes "[Shep]";
		mes "Have you rested long enough?";
		mes "I am scheduled to explore today!";
		mes "I have always been waiting for a member of the expedition!";
		erasequest 7577;// Space distortion
		devil_tower_can_reenter = 0;
		devil_tower_enter = 0;
		next;
		mes "!- Notice -!";
		mes "You can now re-enter the Devil's Tower.";
		close;
	}
	if (isbegin_quest(7576) > 0) {// instance completed
		mes "[Shep]";
		mes "So time and space seem to have converged there?";
		mes "I'm amazed that time travel is possible.";
		next;
		mes "[Shep]";
		mes "This is all you have.";
		mes "You did a good job.";
		mes "I look forward to more discoveries!";
		setquest 7577;// Space distortion
		erasequest 7568;// Explore the tower
		erasequest 7571;// Tower Expedition
		erasequest 7574;// Thanatos Tower
		erasequest 7576;// Morocc castle seal
		getexp 450000,450000;
		devil_tower_can_reenter = 0;
		devil_tower_enter = 0;
		mes "Please come back tomorrow!";
		close;
	}
	if (isbegin_quest(7574) > 0) {// failed after seal
		mes "[Shep]";
		mes "Oh, you are back so soon...";
		mes "Ok, I see what happened.";
		next;
		mes "[Shep]";
		mes "This is all you have.";
		mes "You did a good job.";
		mes "I look forward to more discoveries!";
		setquest 7577;// Space distortion
		erasequest 7568;// Explore the tower
		erasequest 7571;// Tower Expedition
		erasequest 7574;// Thanatos Tower
		getexp 300000,300000;
		devil_tower_can_reenter = 0;
		devil_tower_enter = 0;
		mes "Please come back tomorrow!";
		close;
	}
	if (isbegin_quest(7571) > 0) {// failed at stair 2 tnm1
		mes "[Shep]";
		mes "Oh, you are back.";
		mes "Let me see... you mean this tower has a passage to connect to the demon world.";
		next;
		mes "[Shep]";
		mes "This is all you have.";
		mes "You did a good job.";
		mes "I look forward to more discoveries!";
		setquest 7577;// Space distortion
		erasequest 7568;// Explore the tower
		erasequest 7571;// Tower Expedition
		if (isbegin_quest(7572)) erasequest 7572;// Lucile...?
		if (isbegin_quest(7573)) erasequest 7573;// Magic Swordman Thanatos
		getexp 200000,200000;
		devil_tower_can_reenter = 0;
		devil_tower_enter = 0;
		mes "Please come back tomorrow!";
		close;
	}
	switch( checkquest(7568,PLAYTIME) ) {// entrance timer - 1h30 to enter
	case -1:
		mes "[Shep]";
		mes "Are you volunteering to explore the Devil's Tower? I have been waiting for someone like you!";
		next;
		mes "[Shep]";
		mes "Finally, someone to share the mysteries of the tower for me.";
		mes "No one has been volunteering up this point so I was getting worried.";
		next;
		mes "[Shep]";
		mes "Please report anything you find in the tower to me.";
		mes "The better the info~ the better the zeny I'll pay you!";
		next;
		mes "[Shep]";
		mes "That Laphine scholar over there will open up the dimensional gap with this time device.";
		mes "It is still unstable so your time for exploring will be limited.";
		next;
		mes "[Shep]";
		mes "If you are unexpectedly bounced back to here again, you should return quickly.";
		mes "If you do you may or may not be able to re-enter depending on how fast you are.";
		next;
		mes "[Shep]";
		mes "But if you run out of time, the access to the tower will disappear.";
		mes "So do you want to volunteer?";
		next;
		if (select( "Volunteer", "No Thanks" ) == 2) {
			mes "[Shep]";
			mes "Oh that's too bad";
			mes "There is nothing I can do I guess.";
			mes "I'll just find someone else...";
			close;
		}
		mes "[Shep]";
		mes "Thank you.";
		mes "Okay, gather your party and remember to report to me what you find.";
		next;
		mes "[Shep]";
		mes "^4d4dffExploring time limit is for your safety^000000!";
		setquest 7568;// Explore the tower
		close;
	case 0:
	case 1:
		if (devil_tower_can_reenter == 0)// player can re-enter
			break;
		// fall through
	case 2:
		mes "[Shep]";
		mes "You seem to be late.";
		mes "You took an extraordinarily long time.";
		mes ".....";
		mes "I can't use any of your info.";
		next;
		mes "[Shep]";
		mes "There is nothing we can do .";
		mes "There's always opportunities for other expeditions.";
		setquest 7577;// Space distortion
		erasequest 7568;
		if (isbegin_quest(7569)) erasequest 7569;// Treat the injured
		if (isbegin_quest(7570)) erasequest 7570;// Destroy the demons
		devil_tower_can_reenter = 0;
		devil_tower_enter = 0;
		close;
	}
	mes "[Shep]";
	mes "First of all, you need to reserve a queue at the gate.";
	mes "The Laphine Scholar Artie will reserve your queue for you.";
	next;
	mes "[Shep]";
	mes "Time is limited because the dimensional gap is still unstable.";
	mes "Make your exploration short and sweet.";
	next;
	mes "[Shep]";
	mes "Rewards will be different depending on your time.";
	mes "Good luck!";
	next;
	if (select( "Trust me!", "Cancel my reservation" ) == 1) {
		mes "[Shep]";
		mes "I believe that you can manage under these restrictions.";
		mes "I believe in you!";
		close;
	}
	if (devil_tower_enter == 1) {
		mes "[Shep]";
		mes "You seem to be tired of exploring.";
		mes "^4d4dffIf you cancel now. You will be able to challenge one day after.^000000";
		mes "Is that okay?";
		next;
		if (select( "Yes Cancel.", "Wait, don't cancel!" ) == 2) {
			mes "[Shep]";
			mes "Ok, I won't cancel.";
			close;
		}
		mes "[Shep]";
		mes "Really.";
		mes "then, come back tomorrow.";
		setquest 7577;// Space distortion
		erasequest 7568;
		if (isbegin_quest(7569)) erasequest 7569;// Treat the injured
		if (isbegin_quest(7570)) erasequest 7570;// Destroy the demons
		devil_tower_enter = 0;
		devil_tower_can_reenter = 0;
		close;
	}
	mes "[Shep]";
	mes "Really?";
	mes "After listening to all this explanation?";
	erasequest 7568;// Explore the tower
	close;
}

dali02,137,121,3	script	Magic Scholar Artie#tnm	4_M_FAIRYKID6,{
	.@party_id = getcharid(1);
	if (.@party_id == 0) {
		mes "[Artie]";
		mes "let's have fun since we just left bifrost.";
		mes "No?";
		mes "you are applying as a volunteer?";
		mes "You'd better gather a party for this expedition.";
		next;
		mes "[Artie]";
		mes "Don't take any unncessary risks, okay?";
		close;
	}
	if (getpartyleader(.@party_id,2) != getcharid(0)) {
		mes "[Artie]";
		mes "Bring the Expedition Chief.";
		mes "Devil's Tower is not a place to visit alone.";
		mes "Bring the manager.";
		close;
	}
	if (devil_tower_enter == 1) {
		mes "[Artie]";
		mes "You have already entered by connecting it.";
		mes "Connect to the space again? I can not do that.";
		close;
	}
	switch( checkquest(7568,PLAYTIME) ) {
	case 0:
	case 1:
		break;
	case -1:
	case 2:
		mes "[Artie]";
		mes "Hrm... It is difficult to connect to unless it is an appointed exploration time.";
		mes "Not to mention dangerous as well.";
		close;
	}
	mes "[Artie]";
	mes "Are you a volunteer to explore the Devil's Tower?";
	mes "Do you want me to activate the Dimensional Device?";
	next;
	mes "[Artie]";
	mes "Decide quickly because you only have a finite amount of time in there.";
	next;
	if (select( "Yes, activate the device.", "Wait for a minute." ) == 2) {
		mes "[Artie]";
		mes "Your time to explore is dwindling.";
		mes "Time is very important.";
		mes "What are you waiting for?";
		close;
	}
	mes "[Artie]";
	mes "The Dimensional Device is activated.";
	mes "If you're lucky, you can get through this quickly.";
	mes "I look forward to hearing good news.";
	instance_create("Devil's Tower");
	close;
}

dali02,141,120,3	script	Dimensional Device#tnm0	PORTAL,{
	if (devil_tower_can_reenter == 1) {// can't re-enter
		mes "[Artie]";
		mes "Hey, Hey";
		mes "It is difficult to send to you through the device right now.";
		mes "We should stop exploring today and let's go again another day.";
		close;
	}
	switch( checkquest(7568,PLAYTIME) ) {
	case 0:
	case 1:
		break;
	case -1:
	case 2:
		mes "[Artie]";
		mes "Look, I am sorry but it is not allowed to enter except during the allowed time, Devil's Tower is dangerous.";
		close;
	}
	mes "[Artie]";
	mes "Yes, this is the Dimensional Device.";
	mes "It is used to travel time.";
	mes "It will be difficult to enter again if you leave.";
	next;
	mes "[Artie]";
	mes "Don't worry though, I'm a genius scholar~";
	mes "Anyway, ready to enter?";
	next;
	if (select( "Enter the device.", "Stop." ) == 2) {
		mes "[Artie]";
		mes "Right.";
		mes "It seems like quite a long time has passed since you activated the device. Am I right?";
		close;
	}
	.@md_name$ = "Devil's Tower";
	switch( instance_enter(.@md_name$) ) {
	case IE_OTHER:
		mes "An unknown error occurred.";
		close;
	case IE_NOINSTANCE:
		mes "[Shep]";
		mes "The Dimensional Device needs to be activated first before entering.";
		mes "It doesn't seem to be activated yet.";
		next;
		mes "[Shep]";
		mes "Please get a permission to activate it by talking to the Magic Scholar Artie.";
		close;
	case IE_NOMEMBER:
		mes "[Artie]";
		mes "Exploring Devil's Tower will be permitted only for expeditions in parties.";
		mes "Make sure you are ready.";
		close;
	case IE_OK:
		mapannounce "dali02", "Party member " + strcharinfo(0) + " of party's " + getpartyname( getcharid(1) ) + " enters Room " + .@md_name$ + "", bc_map,0xFF99;
		// warp "1@tnm1",50,104;
		devil_tower_enter = 1;
		end;
	}
}

dali02,134,112,3	script	#tnmtks01	HIDDEN_WARP_NPC,3,3,{
	end;
OnTouch_:
	disablenpc "#tnmtks01";
	initnpctimer;
	end;
OnTimer1000:
	npctalk "Artie: Hey, you! How is your research going?", "Magic Scholar Artie#tnm";
	end;
OnTimer3000:
	npctalk "Shep: Who are you calling hey you? You're just a dusty little fairy!", "Historian Shep#tnm01";
	end;
OnTimer6000:
	npctalk "Artie: A dusty little what? I'll have you know, I have superior genes to your species you ape!", "Magic Scholar Artie#tnm";
	end;
OnTimer9000:
	npctalk "Shep: What do I care what you say? Even our kids are bigger than you tiny little fairies!", "Historian Shep#tnm01";
	end;
OnTimer12000:
	npctalk "Shep: Think you're so big just because you're a magic scholar huh?", "Historian Shep#tnm01";
	end;
OnTimer14000:
	npctalk "Artie: You know nothing human. Remind me again who found this tower entrance?", "Magic Scholar Artie#tnm";
	end;
OnTimer18000:
	npctalk "Shep: *Sigh*... Y....You did.", "Historian Shep#tnm01";
	end;
OnTimer21000:
	npctalk "Artie: Y....You? Did I stutter? And who solved the formula calculating the dimensional gap connected to the tower?", "Magic Scholar Artie#tnm";
	end;
OnTimer24000:
	npctalk "Shep: Yes, yes it was you!", "Historian Shep#tnm01";
	end;
OnTimer27000:
	npctalk "Artie: So I take it you're no longer questioning how smart I am right?", "Magic Scholar Artie#tnm";
	end;
OnTimer30000:
	npctalk "Shep: Alright, alright. I need an adventurer to explore the tower for us.", "Historian Shep#tnm01";
	end;
OnTimer33000:
	npctalk "Shep: No one has volunteered because everyone says it's too dangerous!", "Historian Shep#tnm01";
	end;
OnTimer36000:
	npctalk "Artie: No volunteers? Come on. Harness your motivational skills and find someone.", "Magic Scholar Artie#tnm";
	end;
OnTimer37000:
	emotion ET_KIK, getnpcid(0, "Magic Scholar Artie#tnm");
	end;
OnTimer39000:
	npctalk "Shep: Hello!!! Now recruiting new members to exploring the Devil's Tower!", "Historian Shep#tnm01";
	end;
OnTimer42000:
	npctalk "Shep: Please come! Now's your chance to possibly come face to face with the infamous minions of Satan Morocc himself!", "Historian Shep#tnm01";
	end;
OnTimer45000:
	npctalk "Artie: You sure that's the right thing to say? Maybe your recruiting tactics need refining...", "Magic Scholar Artie#tnm";
	stopnpctimer;
	enablenpc "#tnmtks01";
	end;
}

// Entrance
1@tnm1,50,104,0	script	#event01	HIDDEN_WARP_NPC,1,1,{
	end;
OnTouch:
	disablenpc instance_npcname("#event01");
	initnpctimer;
	end;
OnTimer2000:
	npctalk "Officer Heim: This is an emergency.. How things are going?", instance_npcname("Officer Heim#heim0");
	end;
OnTimer5000:
	npctalk "A tirailleur: Next floor is the highest one... but there are so many demons...", instance_npcname("A tirailleur#tnm01");
	end;
OnTimer6000:
	emotion ET_THINK, getnpcid(0, instance_npcname("Officer Heim#heim0"));
	end;
OnTimer8000:
	npctalk "A tirailleur: It is impossible to break through with the number of our people.", instance_npcname("A tirailleur#tnm01");
	emotion ET_PROFUSELY_SWEAT, getnpcid(0, instance_npcname("A tirailleur#tnm01"));
	end;
OnTimer11000:
	npctalk "Officer Heim: How many soldiers have survived now? When is the support team arriving?", instance_npcname("Officer Heim#heim0");
	end;
OnTimer12000:
	emotion ET_THINK, getnpcid(0, instance_npcname("An aide#tnm02"));
	end;
OnTimer16000:
	npctalk "An aide: There aren't enough to call in...", instance_npcname("An aide#tnm02");
	end;
OnTimer17000:
	npctalk "An aide: The good news is the demons have stopped attacking.", instance_npcname("An aide#tnm02");
	end;
OnTimer21000:
	npctalk "Officer Heim: We can't just be stuck here and can go further. Why did the demons stop attacking ?", instance_npcname("Officer Heim#heim0");
	end;
OnTimer24000:
	npctalk "A tirailleur: It seems like there is something going on up there...", instance_npcname("A tirailleur#tnm01");
	end;
OnTimer26000:
	disablenpc instance_npcname("Officer Heim#heim0");
	enablenpc instance_npcname("Officer Heim#heim");
	npctalk "Officer Heim: Who are you?", instance_npcname("Officer Heim#heim");
	stopnpctimer;
	end;
}

1@tnm1,57,112,5	script	Officer Heim#heim0	4_TOWER_05,{ end; }

1@tnm1,56,110,3	script	Officer Heim#heim	4_TOWER_05,{
	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
		mes "[Officer Heim]";
		mes "Who brought you all here?";
		mes "I will talk to a representative.";
		close;
	}
	switch('devil_tower) {
	case 0:
		mes "[Officer Heim]";
		mes "Back up soldiers? So why are you just standing there?";
		npctalk "Officer Heim: Back up soldiers? So why are you just standing there?";
		next;
		select("Right now?");
		enablenpc instance_npcname("Healer Fama#feima");
		'devil_tower = 1;
		mes "[Healer Fama]";
		mes "Commander please help me. I can't do it by myself~!";
		npctalk "Healer Fama: Commander please help me. I can't do it by myself~!", instance_npcname("Healer Fama#feima");
		next;
		mes "[Officer Heim]";
		mes "Do you hear that?";
		mes "Help Fama take care of the injured soldiers.";
		mes "Fama will give you first aid-kits, use it to help the injured people.";
		// close2;// still attached
		npctalk "Officer Heim: Do you hear that?";
		sleep2 2000;
		npctalk "Officer Heim: Help Fama take care of the injured soldiers.";
		sleep2 2000;
		npctalk "Healer Fama: Okay~ You are going to help me? Come here and receive the first aid kit~!";
		end;
	case 1:
		mes "[Officer Heim]";
		mes "It is priority to treat the injured soldiers by assisting Fama.";
		mes "Please do your best even if the environment is the worst.";
		close;
	default:
		mes "[Officer Heim]";
		mes "Luckily, no one is dead yet.";
		mes "I do not want to see my soldiers die.";
		close;
	}
}

1@tnm1,47,109,3	script	Healer Fama#feima	4_TOWER_10,{
	if ('devil_tower == 1) {
		if (countitem(7641) < 1) {
			mes "[Healer Fama]";
			mes "Please cure the injured with this first aid kit.";
			mes "It's not difficult. Just follow the instructions.";
			next;
			mes "[Healer Fama]";
			mes "We are low on supplies. So I will give them once at a time.";
			mes "Sorry, please request again if you run out.";
			getitem 7641,1;// Medical_Cure_Box
			close;
		}
		mes "[Healer Fama]";
		mes "Sorry... procurement is not good right now so I can only provide one first-aid kit at a time.";
		mes "Please request again if you run out.";
		close;
	}
	mes "[Healer Fama]";
	mes "Huh... Okay, we can take a break now.";
	mes "Thank you very much!";
	close;
}

1@tnm1,39,114,3	script	Injured Soldier#1_1	4_TOWER_01,3,3,{
	if ('devil_tower != 1)
		end;
	if (countitem(7641) < 1) {
		mes "I need 1 first-aid-kit to treat the injured soldier.";
		close;
	}
	mes "This soldier has lost consciousness and groaning.";
	mes "Should I use the first-aid kit?";
	next;
	if (select( "Use first-aid kit.", "Observe condition." ) == 2) {
		mes "You decide to observe the condition of the injured soldier more.";
		close;
	}
	mes "You administer the first-aid-kit to the soldier.";
	next;
	specialeffect EF_SPHERE;
	progressbar "000000",10;
	delitem 7641,1;
	specialeffect EF_ENTRY;
	disablenpc instance_npcname( strnpcinfo(0) );
	enablenpc instance_npcname( strnpcinfo(1) + "#" + replacestr( strnpcinfo(2), "_1", "" ) );
	specialeffect EF_ENTRY,AREA, instance_npcname( strnpcinfo(1) + "#" + replacestr( strnpcinfo(2), "_1", "" ) );
	mes "It worked.";
	'heal_count++;
	if ('heal_count == 7) {
		'devil_tower = 2;
		npctalk "Healer Fama: Assassins?!", instance_npcname("Healer Fama#feima");
		enablenpc instance_npcname("Lucile#tnm01");
		enablenpc instance_npcname("Magic Swordman#tnm01");
		enablenpc instance_npcname("Assassin Huey#tnm01");
		enablenpc instance_npcname("Assassin Louie#tnm01");
	}
	close;

OnTouch:
	.@num = atoi( replacestr( strnpcinfo(2), "_1", "" ) );
	if (.@num == 1)
		npctalk "Injured Soldier: groaning....";
	else if (.@num == 2)
		npctalk "Injured Soldier: Owww...";
	else if (.@num == 3)
		npctalk "Injured Soldier: .... aah.. aah..";
	else if (.@num == 4)
		npctalk "Injured Soldier: Owww...";
	else if (.@num == 5)
		npctalk "Injured Soldier: I do not want to die...";
	else if (.@num == 6)
		npctalk "Injured Soldier: Owww~";
	else
		npctalk "Injured Soldier: Groaning...";
	end;
}

1@tnm1,30,120,3	duplicate(Injured Soldier#1_1)	Injured Soldier#2_1	4_TOWER_03,3,3
1@tnm1,25,117,5	duplicate(Injured Soldier#1_1)	Injured Soldier#3_1	4_TOWER_06,3,3
1@tnm1,19,118,4	duplicate(Injured Soldier#1_1)	Injured Soldier#4_1	4_TOWER_08,3,3
1@tnm1,18,110,4	duplicate(Injured Soldier#1_1)	Injured Soldier#5_1	4_TOWER_11,3,3
1@tnm1,24,104,7	duplicate(Injured Soldier#1_1)	Injured Soldier#6_1	4_TOWER_13,3,3
1@tnm1,31,110,3	duplicate(Injured Soldier#1_1)	Injured Soldier#7_1	4_TOWER_03,3,3

1@tnm1,39,114,3	script	Injured Soldier#1	4_TOWER_02,{
	mes "[Injured soldiers]";
	mes "whew.. it seems to be okay now.";
	mes "Thank you.";
	close;
}

1@tnm1,30,120,3	script	Injured Soldier#2	4_TOWER_04,{
	mes "[Injured soldiers]";
	mes "Groaning... Just let me die.";
	mes "No it hurts too much.";
	close;
}

1@tnm1,25,117,5	script	Injured Soldier#3	4_TOWER_07,{
	mes "[Injured soldiers]";
	mes "His conscious seems to be blur still.";
	mes "Leave him to get some rest.";
	close;
}

1@tnm1,19,118,4	script	Injured Soldier#4	4_TOWER_09,{
	mes "[Injured soldiers]";
	mes "I thought I was going to die.";
	mes "But I'm alive!";
	close;
}

1@tnm1,18,110,4	script	Injured Soldier#5	4_TOWER_12,{
	mes "[Injured soldiers]";
	mes "I can't die here. I have to propose to my beloved when I get home.";
	mes "We will be happy for sure?";
	close;
}

1@tnm1,24,104,7	script	Injured Soldier#6	4_TOWER_14,{
	mes "[Injured soldiers]";
	mes "I feel much better but I still can't move.";
	mes "Still I'm lucky to be alive.";
	close;
}

1@tnm1,31,110,3	script	Injured Soldier#7	4_TOWER_04,{
	mes "[Injured soldiers]";
	mes "Thank you.. Thank you..";
	close;
}

1@tnm1,61,110,3	script	An aide#tnm02	4_M_MOCASS2,{
	mes "[An aide]";
	mes "The calamity that happened hundreds of years ago will not happen again right?";
	mes "Why have the demons showed up again so suddenly?";
	close;
}

1@tnm1,61,113,3	script	A tirailleur#tnm01	4_M_MOCASS1,{
	mes "[A tirailleur]";
	mes "Are you a member of back-up team?";
	mes "Good. things are getting worse here.";
	mes "Glad that you all are here to help.";
	close;
}

1@tnm1,46,105,5	script	Lucile#tnm01	4_F_LUCILE,{
	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
		cutin "tnm_lucile01.bmp",2;
		mes "[Lucile]";
		mes "Who is in charge of the back-up team?";
		close3;
	}
	if ('devil_tower == 2) {
		.@lucile$ = instance_npcname("Lucile#tnm01");
		.@heim$ = instance_npcname("Officer Heim#heim");
		'devil_tower = 3;
		mes "";	// todo fix me "workinprogress"
		cutin "tnm_lucile01.bmp",2;
		sleep2 1500;
		npctalk "Lucile: I am Lucile from the Assassin Guild.", .@lucile$;
		sleep2 2000;
		npctalk "Officer Heim: Our back-up is from the Assassin Guild? Thanks for arriving in time.", .@heim$;
		sleep2 3000;
		npctalk "Lucile: The situation doesn't seem to be good.", .@lucile$;
		sleep2 3000;
		npctalk "Lucile: What happened to the brave knights of Prontera?", .@lucile$;
		sleep2 3000;
		npctalk "Officer Heim: Are you mocking me?", .@heim$;
		sleep2 3000;
		npctalk "Lucile: Not at all. I really want to know. What's going on upstairs?", .@lucile$;
		sleep2 2500;
		emotion ET_OHNO, getnpcid(0, .@heim$);
		sleep2 1000;
		npctalk "Officer Heim: How did you know that? Yes, the demons have stopped their attack from upstairs.", .@heim$;
		sleep2 3000;
		emotion ET_SMILE, getnpcid(0, .@lucile$);
		npctalk "Lucile: What do you think about the situation Magic Swordman?", .@lucile$;
		cutin "tnm_lucile01.bmp",0;
		sleep2 3000;
		npctalk "Magic swordman: Hmm, I will go and investigate.", instance_npcname("Magic Swordman#tnm01");
		cutin "tnm_loki.bmp",2;
		sleep2 2000;
		cutin "",255;
		disablenpc instance_npcname("Magic Swordman#tnm01");
		sleep2 1000;
		npctalk "Lucile: How are you so fast?", .@lucile$;
		cutin "tnm_lucile01.bmp",2;
		sleep2 2000;
		npctalk "Officer Heim: What are you doing? If you go alone you will be killed!", .@heim$;
		sleep2 3000;
		npctalk "Lucile: I won't be alone. There are still some uninjured soldiers!", .@lucile$;
		sleep2 2500;
		npctalk "Lucile: All right, I will ask you to be my back up. Hahaha right Dewey?", .@lucile$;
		sleep2 500;
		enablenpc instance_npcname("Assassin Dewey#tnm01");
		enablenpc instance_npcname("#tnm1stepmob");
		npctalk "Dewey: Okay, I will.", instance_npcname("Assassin Dewey#tnm01");
		'devil_tower = 4;
		sleep2 500;
		cutin "",255;
		disablenpc .@lucile$;
		disablenpc instance_npcname("Assassin Huey#tnm01");
		disablenpc instance_npcname("Assassin Louie#tnm01");
		sleep2 2000;
		npctalk "Officer Heim: They are so unpredictable. You know what is going on right? Back them up...", .@heim$;
		sleep2 2500;
		npctalk "Officer Heim: Help us take care of the demons coming down from upstairs.", .@heim$;
		end;
	}
}

1@tnm1,52,104,2	duplicate(Officer Heim#heim0)	Magic Swordman#tnm01	4_M_ROKI
1@tnm1,42,104,4	duplicate(Officer Heim#heim0)	Assassin Huey#tnm01	4_TOWER_15
1@tnm1,44,101,5	duplicate(Officer Heim#heim0)	Assassin Louie#tnm01	4_M_ACROSS

1@tnm1,70,108,3	script	Assassin Dewey#tnm01	4_M_ACROSS,{
	if ('devil_tower < 4)
		end;
	if (isbegin_quest(7569) == 0)
		setquest 7569;// Treat the injured
	if (isbegin_quest(7570) == 0)
		setquest 7570;// Destroy the demons
	mes "[Dewey]";
	mes "I will guide you to the upper floor.";
	mes "Do not forget to get rid of any demons that you encounter on the way.";
	next;
	if (select( "Move now", "I need more time to prepare." ) == 2) {
		mes "[Dewey]";
		mes "Be prepared for anything.";
		close;
	}
	mes "[Dewey]";
	mes "Travel carefully.";
	close2;
	warp 'map_tnm1$,91,23;
	devil_tower_can_reenter = 1;// nb. different from official (condition overcomplicated)
	end;
}

// Stairs tnm1
// spawn inaccurate
1@tnm1,91,23,0	script	#tnm1stepmob	HIDDEN_WARP_NPC,1,1,{
	end;
OnTouch:
	if ('devil_tower != 4)
		end;
	disablenpc instance_npcname("#tnm1stepmob");
	enablenpc instance_npcname("Assassin Louie#tnm02");
	enablenpc instance_npcname("Lucile#tnm02");
	initnpctimer;
	monster 'map_tnm1$,99,24,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	'mob_id = $@mobid[0];
	end;
OnTimer2000:
	if (unitexists('mob_id) == true)
		unittalk 'mob_id, "What is this? A human? How dare they must have lost their minds!";
	end;
OnTimer5000:
	monster 'map_tnm1$,103,21,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	unittalk $@mobid[0], "Did you make a resolution?";
	monster 'map_tnm1$,103,26,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	unittalk $@mobid[0], "Ha ha ha ha....Let's fight..!!!";
	end;
OnTimer11000:
	monster 'map_tnm1$,106,25,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,106,27,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,110,20,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,112,24,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,107,22,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	monster 'map_tnm1$,114,24,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	end;
OnTimer17000:
	monster 'map_tnm1$,120,20,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,122,23,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	end;
OnTimer23000:
	monster 'map_tnm1$,116,25,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,116,21,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	end;
OnTimer29000:
	monster 'map_tnm1$,134,21,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,130,25,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,129,27,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,120,27,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	monster 'map_tnm1$,118,22,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	end;
OnTimer35000:
	monster 'map_tnm1$,138,27,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,144,23,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,129,20,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	end;
OnTimer41000:
	monster 'map_tnm1$,140,24,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,144,20,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,130,27,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	monster 'map_tnm1$,127,24,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	monster 'map_tnm1$,142,27,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	monster 'map_tnm1$,140,22,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead";	// MM_EVIL_SHADOW3
	stopnpctimer;
	end;
OnMobDead:
	end;
}

1@tnm1,158,24,3	script	Assassin Louie#tnm02	4_M_ACROSS,{
	if ('devil_tower < 4)
		end;
	if (checkquest(7570,HUNTING) != 2) {
		mes "[Louie]";
		mes "The Captain says that we need to get rid of all of the demons...";
		mes "Better get to it.";
		close;
	}
	mes "[Louie]";
	mes "A lot of soldiers still survived the attacks.";
	mes "They got rid of all the demons.";
	next;
	mes "[Louie]";
	mes "I was making sure that no one goes upstairs, I was afraid something might happen again.";
	next;
	mes "[Louie]";
	mes "I wish you would help me.";
	mes "I will guide you.";
	if (isbegin_quest(7571) == 0) {
		erasequest 7569;// Treat the injured
		erasequest 7570;// Destroy the demons
		setquest 7571;// Tower Expedition
	}
	next;
	mes "I have been exploring the passages of this tower for a while now.";
	close2;
	warp 'map_tnm1$,124,86;
	end;
}

// Stairs 2 tnm1
1@tnm1,138,96,3	script	Lucile#tnm02	4_F_LUCILE,{
	if (isbegin_quest(7571) == 0)
		end;
	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
		mes "You wave your hand in front of her but she doesn't react.";
		close;
	}
	if ('devil_tower < 4)
		end;
	if ('devil_tower < 6) {
		if ('devil_tower == 4) {
			mes "[Lucile]";
			mes "I am sorry if I'm giving you any attitude but I can't move.";
			npctalk "Lucile: I am sorry if I'm giving you any attitude but I can't move.";
			cutin "tnm_lucile02.bmp",2;
			next;
			select("Can I help?");
			mes "[Lucile]";
			mes "I can use self-recovery but I don't have time for that.";
			mes "Will you share your power with me?";
			npctalk "Lucile: I can use self-recovery but I don't have time for that. Will you share your power with me?";
			next;
			mes "[Lucile]";
			mes "I need your help to activate my restoration system.";
			mes "Please hold tight.";
			npctalk "Lucile: I need your help to activate my restoration system.";
			next;
			sleep2 750;
			npctalk "Lucile: Please hold tight.";
			donpcevent instance_npcname("Huey#hui02") + "::OnEnable";
			'devil_tower = 5;
			percentheal -30,0;
		}
		cutin "tnm_lucile03.bmp",2;
		mes "Lucile seems to be a machine.";
		mes "I can hear mechanical sounds all of a sudden.";
		specialeffect EF_LEVEL99_3;
		progressbar "000000",40;
		if (isbegin_quest(7572) == 0)
			setquest 7572;// Lucile...?
		mes "System is restored.";
		'devil_tower = 6;
		next;
		mes "[Lucile]";
		mes "Wow! You fixed it faster than I thought.";
		mes "Did that surprise you?";
		mes "I have to be fixed occasionally because I don't have a normal body";
		cutin "tnm_lucile02.bmp",2;
		next;
		mes "[Lucile]";
		mes "This body was a gift from the gods.";
		mes "Do you see the gate in the middle?";
		cutin "tnm_lucile01.bmp",2;
		next;
		mes "[Lucile]";
		mes "Hurry up or this world will be in a danger.";
		close2;
		cutin "",255;
		// continue
	}
	if ('devil_tower == 6) {
		sleep 1500;
		npctalk "Lucile: Let me excuse myself, follow me if you want to save the world.";
		sleep 2000;
		npctalk "Huey: sister...", instance_npcname("Huey#hui02");
		disablenpc instance_npcname("Lucile#tnm02");
		enablenpc instance_npcname("Lucile#tnm03");
		enablenpc instance_npcname("Magic Swordman#tnm02");
		enablenpc instance_npcname("Demon Morocc#tnm01");
		'devil_tower = 7;
	}
	end;
}
	
1@tnm1,135,99,5	script	Huey#hui02	4_TOWER_15,{
	if ('devil_tower < 5)
		end;
	if ('devil_tower == 5 || 'devil_tower == 6) {
		mes "[Huey]";
		mes "I am concerned about her.";
		mes "It happens whenever she's wounded.";
		mes "Because she's mostly machine...";
		close;
	}
	if ('mob_count > 0) {
		mes "[Huey]";
		mes "I know the path upstairs...";
		mes "First of all, we have to get rid of these demons!";
		close;
	}
	mes "[Huey]";
	mes "I wonder how the others are doing...";
	mes "Only Thanatos and Lucile have ever entered to upper floor...";
	next;
	mes "[Huey]";
	mes "If you want to assist them, you must hurry.";
	mes "I will guide the way for you.";
	next;
	if (select( "Move immediately.", "Do not follow." ) == 2) {
		mes "[Huey]";
		mes "...I see.";
		close;
	}
	mes "[Huey]";
	mes "This way.";
	mes "Be careful.";
	close2;
	warp 'map_tnm2$,152,130;
	end;

OnEnable:
	enablenpc instance_npcname("Huey#hui02");
	initnpctimer;
	end;
OnTimer3000:
	npctalk "Huey: Oh no, sister watch out! Demons have suddenly appeared!";
	'mob_count = 16;
	monster 'map_tnm1$,142,90,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,139,91,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,130,86,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	monster 'map_tnm1$,143,95,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW3
	monster 'map_tnm1$,134,90,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	end;
OnTimer6000:
	npctalk "Huey: Where are they coming from? Demons again......";
	end;
OnTimer8000:
	monster 'map_tnm1$,137,103,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,140,102,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	monster 'map_tnm1$,132,103,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW2
	monster 'map_tnm1$,146,100,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	monster 'map_tnm1$,142,105,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	monster 'map_tnm1$,135,107,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW3
	end;
OnTimer11000:
	npctalk "Huey: Oh, no...";
	end;
OnTimer12000:
	monster 'map_tnm1$,135,107,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead";	// MM_EVIL_SHADOW1
	monster 'map_tnm1$,146,100,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	monster 'map_tnm1$,130,86,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";		// MM_EVIL_SHADOW2
	monster 'map_tnm1$,137,103,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead";
	monster 'map_tnm1$,143,95,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead";		// MM_EVIL_SHADOW3
	stopnpctimer;
	end;
OnMobDead:
	'mob_count--;
	if ('mob_count == 0)
		npctalk "Huey: This way. This way... we can go upstairs by using the gap that the demons were coming from!";
	end;
}

// Morocc - Thanatos Battle
1@tnm2,136,139,3	script	Magic Swordman#tnm02	THANATOS_KEEP,{
	mes "[Magic Swordman Thanatos]";
	mes "I am sorry but I have been through tough time...";
	close;
}

1@tnm2,133,139,5	duplicate(Officer Heim#heim0)	Demon Morocc#tnm01	1916

1@tnm2,144,137,3	script	Lucile#tnm03	4_F_LUCILE,{
	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
		mes "[Lucile]";
		mes "I am talking to your party leader now so please step back for a while.";
		cutin "tnm_lucile01.bmp",2;
		close3;
	}
	if ('devil_tower == 7) {
		mes "[Lucile]";
		mes "Oh. You just have arrived in time.";
		mes "Do you want to take a look over there?";
		cutin "tnm_lucile01.bmp",2;
		next;
		mes "[Lucile]";
		mes "We need to stop the demon...";
		mes "Can you do that?";
		npctalk "Lucile: We need to stop the demon... Can you do that?";
		if (isbegin_quest(7573) == 0)
			setquest 7573;// Magic Swordman Thanatos
		'demon$ = instance_npcname("Demon Morocc#tnm01");
		'thanatos$ = instance_npcname("Magic Swordman#tnm02");
		initnpctimer;
		'devil_tower = 8;
		close3;
	}
	mes "[Lucile]";
	mes "We need to hold this spot until the trap is set by the Magic Swordman.";
	cutin "tnm_lucile01.bmp",2;
	close3;

OnTimer2000:
	npctalk "Demon Morocc: You silly human. How long do you think you can manage to tie me up!", 'demon$;
	end;
OnTimer5000:
	npctalk "Demon Morocc: Shadows! Come out and kill all enemies of darkness!", 'demon$;
	end;
OnTimer6000:
	donpcevent instance_npcname("#devil_seal_timer") + "::OnStart";
	end;
OnTimer8000:
	npctalk "Thanatos: You are so desperate that you're begging me to save you.", 'thanatos$;
	end;
OnTimer11500:
	npctalk "Lucile: Thanatos. Sir, should you be bluffing like that?";
	end;
OnTimer12000:
	npctalk "Demon Morocc: Be afraid of the destruction that I will bring when I'm released!", 'demon$;
	end;
OnTimer15000:
	npctalk "Thanatos: Shut up! You will never leave here unless I kill you!", 'thanatos$;
	end;
OnTimer16500:
	npctalk "Thanatos: Lucile! Watch my back while I conjure up a shield to hold him!", 'thanatos$;
	end;
OnTimer19500:
	npctalk "Lucile: Yes sir.";
	end;
OnTimer22500:
	npctalk "Lucile: Okay everyone, now we know what to do. We have to prevent the Magic Seal from reaching here!";
	stopnpctimer;
	end;
}

1@tnm2,1,1,0	script	#devil_flamecross	HIDDEN_WARP_NPC,{
	end;
OnStart:
	npctalk "Demon Morocc: No way!! Troublemakers!", 'demon$;
	mapannounce 'map_tnm2$, "Demon Morocc: No way!! Troublemakers!", bc_map,0xFF0000;
	initnpctimer;
	end;
OnTimer1000:
	setarray .@north[0], 138,151, 138,160, 140,165, 140,176, 140,170, 140,181, 140,186, 140,191;
	setarray .@north_west[0], 126,149, 122,151, 118,153, 113,154, 107,156, 101,158, 96,160, 91,161, 86,162, 81,163;
	setarray .@south_west[0], 128,130, 125,127, 122,124, 118,121, 115,118, 112,115, 109,114, 106,106, 102,102, 99,98;
	setarray .@south_east[0], 145,130, 148,126, 151,122, 156,120, 160,117, 164,113, 168,109, 172,105, 176,101, 180,97;
	setarray .@north_east[0], 146,149, 148,149, 150,151, 155,152, 162,153, 167,154, 173,156, 179,158, 185,160, 191,161;
	.@label$ = instance_npcname("#devil_flamecross") + "::OnFlameDead";
	for ( .@i = 0; .@i < 20; .@i += 2 ) {
		if (.@north[.@i] > 0)	// 8 mobs for north
			monster 'map_tnm2$,.@north[.@i],.@north[.@i+1], "",2960,1, .@label$;
		monster 'map_tnm2$,.@north_west[.@i],.@north_west[.@i+1], "",2960,1, .@label$;
		monster 'map_tnm2$,.@south_west[.@i],.@south_west[.@i+1], "",2960,1, .@label$;	
		monster 'map_tnm2$,.@south_east[.@i],.@south_east[.@i+1], "",2960,1, .@label$;	
		monster 'map_tnm2$,.@north_east[.@i],.@north_east[.@i+1], "",2960,1, .@label$;	
		sleep 200;
	}
	end;
OnTimer6000:
	killmonster 'map_tnm2$, instance_npcname("#devil_flamecross") + "::OnFlameDead";
	end;
OnTimer20000:
	stopnpctimer;
	donpcevent instance_npcname("#devil_flamecross") + "::OnStart";
	end;
OnStop:
	stopnpctimer;
	killmonster 'map_tnm2$, instance_npcname("#devil_flamecross") + "::OnFlameDead";
	end;
OnFlameDead:
	end;
}

1@tnm2,1,1,0	script	#devil_seal_timer	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#devil_seal_timer");
	enablenpc instance_npcname("#devil_flamecross");
	for ( .@i = 1; .@i < 6; .@i++ ) {
		enablenpc instance_npcname("devil_seal_spawn#" + .@i);
		enablenpc instance_npcname("devil_seal_reach_center#" + .@i);
	}
	enablenpc instance_npcname("#devil_seal_dead");
	donpcevent instance_npcname("#devil_seal_spawn_global") + "::OnCoord";
	initnpctimer;
	end;
OnTimer5000:
	mapannounce 'map_tnm2$, "A Magic Seal has just appeared in southeast direction of the tower.", bc_map,0xFFFFFF;
	donpcevent instance_npcname("#devil_seal_spawn_global") + "::OnFirstSpawn";
	end;
OnTimer10000:
	donpcevent instance_npcname("#devil_flamecross") + "::OnStart";
	end;
OnTimer25000:
	mapannounce 'map_tnm2$, "Lucile: We should stop before Magic Seal has just started to move again.", bc_map,0xFFFFFF;
	end;
OnTimer65000:
	mapannounce 'map_tnm2$, "Lucile: We should stop before Magic Seal reaches the center.", bc_map,0xFFFFFF;
	end;
OnTimer95000:
	mapannounce 'map_tnm2$, "Lucile: The Magic Seal has just started to move again.", bc_map,0xFFFFFF;
	end;
OnTimer125000:
	mapannounce 'map_tnm2$, "Lucile: It is coming closer... No... It's too dangerous.", bc_map,0xFFFFFF;
	end;
OnTimer155000:
	mapannounce 'map_tnm2$, "Lucile: The Magic Seal is almost approaching the center!!", bc_map,0xFFFFFF;
	end;
OnTimer180000:
	donpcevent instance_npcname("#devil_flamecross") + "::OnStop";
	end;
OnTimer185000:
	mapannounce 'map_tnm2$, "Lucile: We should stop it now!", bc_map,0xFFFFFF;
	end;
OnTimer191000:
	npctalk "Thanatos: What are you doing!!! Are you playing a game now?!", 'thanatos$;
	mapannounce 'map_tnm2$, "Thanatos: What are you doing!!! Are you playing a game now?!", bc_map,0xFF00;
	end;
OnTimer193000:
	specialeffect EF_MAGNUMBREAK,AREA, 'thanatos$;
	specialeffect EF_LORD,AREA, 'thanatos$;
	donpcevent instance_npcname("devil_seal_spawn#1") + "::OnStop";
	donpcevent instance_npcname("devil_seal_spawn#2") + "::OnStop";
	donpcevent instance_npcname("devil_seal_spawn#3") + "::OnStop";
	donpcevent instance_npcname("devil_seal_spawn#4") + "::OnStop";
	donpcevent instance_npcname("devil_seal_spawn#5") + "::OnStop";
	end;
OnTimer195000:
	npctalk "Demon Morocc: Are you going to keep disturbing me!!!", 'demon$;
	mapannounce 'map_tnm2$, "Demon Morocc: Are you going to keep disturbing me!!!", bc_map,0xFF0000;
	end;
OnTimer198000:
	npctalk "Demon Morocc: Okay, Let's see who is going to win!!! Come out!", 'demon$;
	mapannounce 'map_tnm2$, "Demon Morocc: Okay, Let's see who is going to win!!! Come out!", bc_map,0xFF0000;
	end;
OnTimer201000:
	npctalk "Thanatos: It will be the same no matter how many times you try! Give up and go back to demon world!!", 'thanatos$;
	mapannounce 'map_tnm2$, "Thanatos: It will be the same no matter how many times you try! Give up and go back to demon world!!", bc_map,0xFF00;
	initnpctimer;
	end;
OnStop:
	stopnpctimer;
	donpcevent instance_npcname("#devil_flamecross") + "::OnStop";
	disablenpc instance_npcname("#devil_flamecross");
	disablenpc instance_npcname("#devil_seal_timer");
	end;
}

1@tnm2,1,1,0	script	#devil_seal_spawn_global	HIDDEN_WARP_NPC,{
	end;
OnCoord:
	enablenpc instance_npcname("#devil_seal_spawn_global");
	// setarray 'coord_seal_1[0],  68,167,	 78,165,	88,163,		98,160,		108,156,	118,152,	127,147;
	setarray 'coord_seal_1[0],  68,167,	 78,165,	88,163,		98,160,		108,156,	118,152,	118,152;// officially
	setarray 'coord_seal_2[0],  90, 86,	 96, 95,	103,103,	110,110,	116,116,	122,122,	129,130;
	setarray 'coord_seal_3[0], 191,86,	183, 94,	174,103,	165,112,	156,120,	147,128,	143,131;
	setarray 'coord_seal_4[0], 197,162,	188,161,	179,158,	170,155,	161,152,	152,149,	144,148;
	setarray 'coord_seal_5[0], 142,214,	140,205,	140,195,	140,185,	140,173,	139,161,	138,150;
	end;
OnFirstSpawn:
	'round[0] = 'round[1] = 'round[2] = 'round[3] = 'round[4] = 0;
	donpcevent instance_npcname("devil_seal_spawn#1") + "::OnFirstSpawn";
	donpcevent instance_npcname("devil_seal_spawn#2") + "::OnFirstSpawn";
	donpcevent instance_npcname("devil_seal_spawn#3") + "::OnFirstSpawn";
	donpcevent instance_npcname("devil_seal_spawn#4") + "::OnFirstSpawn";
	donpcevent instance_npcname("devil_seal_spawn#5") + "::OnFirstSpawn";
	initnpctimer;
	end;
OnTimer2000:
	donpcevent instance_npcname("devil_seal_spawn#1") + "::OnSlaves";
	donpcevent instance_npcname("devil_seal_spawn#2") + "::OnSlaves";
	donpcevent instance_npcname("devil_seal_spawn#3") + "::OnSlaves";
	donpcevent instance_npcname("devil_seal_spawn#4") + "::OnSlaves";
	donpcevent instance_npcname("devil_seal_spawn#5") + "::OnSlaves";
	end;
OnTimer20000:
	donpcevent instance_npcname("devil_seal_spawn#1") + "::OnStart";// upper left
	donpcevent instance_npcname("devil_seal_spawn#3") + "::OnStart";// bottom right
	donpcevent instance_npcname("devil_seal_spawn#5") + "::OnStart";// upper
	end;
OnTimer30000:
	donpcevent instance_npcname("devil_seal_spawn#2") + "::OnStart";// bottom left
	donpcevent instance_npcname("devil_seal_spawn#4") + "::OnStart";// upper right
	end;
OnStop:
	stopnpctimer;
	disablenpc instance_npcname("#devil_seal_spawn_global");
	end;
}

1@tnm2,1,1,0	script	devil_seal_spawn#1	HIDDEN_WARP_NPC,{
	end;
OnStart:
	.@num = atoi(strnpcinfo(2)) - 1;
	if ('seal_id[.@num] == 0 || unitexists('seal_id[.@num]) == 0)
		stopnpctimer;
	else {
		getunitdata 'seal_id[.@num], .@data;
		'seal_hp[.@num] = .@data[UMOB_HP];
		killmonster 'map_tnm2$, instance_npcname("#devil_seal_dead") + "::OnSealDead" + strnpcinfo(2);
		initnpctimer;
	}
	end;
OnFirstSpawn:
OnTimer5000:
	.@num = atoi(strnpcinfo(2)) - 1;
	.@index = 'round[.@num] * 2;
	if (.@index == 0 || 'seal_id[.@num]) {
		.@x = getd( "'coord_seal_" + (.@num+1) + "[" + .@index + "]" );
		.@y = getd( "'coord_seal_" + (.@num+1) + "[" + (.@index+1) + "]" );

		monster 'map_tnm2$,.@x,.@y,"Magic Seal",2938,1, instance_npcname("#devil_seal_dead") + "::OnSealDead" + (.@num+1);	// MM_MAGIC_SEAL
		'seal_id[.@num] = $@mobid[0];
		if (.@index == 0)
			setunitdata 'seal_id[.@num], UMOB_HP, 3000000;
		else if ('seal_hp[.@num] > 0)
			setunitdata 'seal_id[.@num], UMOB_HP, 'seal_hp[.@num];
		else
			stopnpctimer;
		'round[.@num]++;
		if ('round[.@num] == 7)
			donpcevent instance_npcname("devil_seal_reach_center#" + (.@num+1)) + "::OnStart";
	}
	end;
OnSlaves:
OnTimer7000:
	killmonster 'map_tnm2$, instance_npcname(strnpcinfo(0)) + "::OnMobDead";
	.@num = atoi(strnpcinfo(2)) - 1;
	if ('seal_id[.@num] && unitexists('seal_id[.@num])) {
		.@index = ('round[.@num] - 1) * 2;
		.@x = getd( "'coord_seal_" + (.@num+1) + "[" + .@index + "]" );
		.@y = getd( "'coord_seal_" + (.@num+1) + "[" + (.@index+1) + "]" );
		areamonster 'map_tnm2$,(.@x-1),(.@y-1),(.@x+1),(.@y+1),"Evil Shadow",2939,2, instance_npcname(strnpcinfo(0)) + "::OnMobDead";	// MM_EVIL_SHADOW1
		areamonster 'map_tnm2$,(.@x-1),(.@y-1),(.@x+1),(.@y+1),"Evil Shadow",2940,2, instance_npcname(strnpcinfo(0)) + "::OnMobDead";	// MM_EVIL_SHADOW2
		if ('round[.@num] == 7)
			stopnpctimer;
	}
	end;
OnTimer30000:
	donpcevent instance_npcname("devil_seal_spawn#" + strnpcinfo(2)) + "::OnStart";
	end;

OnDisable:
	stopnpctimer;
	killmonster 'map_tnm2$, instance_npcname(strnpcinfo(0)) + "::OnMobDead";	// note : officially still alive
	killmonster 'map_tnm2$, instance_npcname("#devil_seal_dead") + "::OnSealDead" + strnpcinfo(2);	// note : officially still alive
	disablenpc instance_npcname(strnpcinfo(0));
	end;
OnStop:
	stopnpctimer;
	killmonster 'map_tnm2$, instance_npcname(strnpcinfo(0)) + "::OnMobDead";
	killmonster 'map_tnm2$, instance_npcname("#devil_seal_dead") + "::OnSealDead" + strnpcinfo(2);
	end;
OnMobDead:
	end;
}
1@tnm2,1,1,0	duplicate(devil_seal_spawn#1)	devil_seal_spawn#2	HIDDEN_WARP_NPC
1@tnm2,1,1,0	duplicate(devil_seal_spawn#1)	devil_seal_spawn#3	HIDDEN_WARP_NPC
1@tnm2,1,1,0	duplicate(devil_seal_spawn#1)	devil_seal_spawn#4	HIDDEN_WARP_NPC
1@tnm2,1,1,0	duplicate(devil_seal_spawn#1)	devil_seal_spawn#5	HIDDEN_WARP_NPC

1@tnm2,1,1,0	script	devil_seal_reach_center#1	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname(strnpcinfo(0));
	initnpctimer;
	end;
OnTimer2000:
	npctalk "Demon Morocc: Kuh ha ha ha ha Pieces of my power! Gather here again!!!", 'demon$;
	mapannounce 'map_tnm2$, "Demon Morocc: Kuh ha ha ha ha Pieces of my power! Gather here again!!!", bc_map,0xFF0000;
	end;
OnTimer4000:
	npctalk "Thanatos: Stop him! Prevent him from coming closer!!!", 'thanatos$;
	mapannounce 'map_tnm2$, "Thanatos: Stop him! Prevent him from coming closer!!!", bc_map,0xFF00;
	stopnpctimer;
	disablenpc instance_npcname(strnpcinfo(0));
	end;
}
1@tnm2,1,1,0	duplicate(devil_seal_reach_center#1)	devil_seal_reach_center#2	HIDDEN_WARP_NPC
1@tnm2,1,1,0	duplicate(devil_seal_reach_center#1)	devil_seal_reach_center#3	HIDDEN_WARP_NPC
1@tnm2,1,1,0	duplicate(devil_seal_reach_center#1)	devil_seal_reach_center#4	HIDDEN_WARP_NPC
1@tnm2,1,1,0	duplicate(devil_seal_reach_center#1)	devil_seal_reach_center#5	HIDDEN_WARP_NPC

1@tnm2,1,1,0	script	#devil_seal_dead	HIDDEN_WARP_NPC,{
	end;
OnSealDead1: callsub S_Sealdead,0;
OnSealDead2: callsub S_Sealdead,1;
OnSealDead3: callsub S_Sealdead,2;
OnSealDead4: callsub S_Sealdead,3;
OnSealDead5: callsub S_Sealdead,4;

S_Sealdead:
	'seal_id[ getarg(0) ] = 0;
	'seal_dead[ getarg(0) ] = 1;
	.@total_seal = 'seal_dead[0] + 'seal_dead[1] + 'seal_dead[2] + 'seal_dead[3] + 'seal_dead[4];
	if (.@total_seal == 3)
		mapannounce 'map_tnm2$, "Lucile: It is too early to feel easy! There are Magic Seals that haven't been destroyed yet.", bc_map,0xFF00;
	else if (.@total_seal != 5)
		mapannounce 'map_tnm2$, "There are still Magic Seals to destroy.", bc_map,0xFF00;
	else {
		donpcevent instance_npcname("#devil_seal_spawn_global") + "::OnStop";
		donpcevent instance_npcname("#devil_seal_timer") + "::OnStop";	// stop timer of npc #devil_flamecross as well
		for ( .@i = 0; .@i < 5; .@i++ )
			donpcevent instance_npcname("devil_seal_spawn#" + (.@i+1)) + "::OnDisable";// note: on official seals and slaves are alive
		mapannounce 'map_tnm2$, "Demon Morocc: No.. This can't be.. Who the hell.. are you!", bc_map,0xFF0000;
		npctalk "Demon Morocc: No.. This can't be.. Who the hell.. are you!", 'demon$;
		initnpctimer;
	}
	end;
OnTimer3000:
	mapannounce 'map_tnm2$, "Thanatos: It will be the last time to show off!! Good bye!!!", bc_map,0xFF0000;
	npctalk "Thanatos: It will be the last time to show off!! Good bye!!!", 'thanatos$;
	end;
OnTimer5000:
	specialeffect EF_LORD,AREA, 'thanatos$;
	end;
OnTimer7000:
	stopnpctimer;
	disablenpc 'demon$;
	disablenpc 'thanatos$;
	disablenpc instance_npcname("Lucile#tnm03");
	enablenpc instance_npcname("Lucile#tnm04");
	enablenpc instance_npcname("#tnm3event01");
	enablenpc instance_npcname("Young Girl#tnm01");
	'devil_tower = 9;

	'demon$ = 'thanatos$ = "";
	'round[0] = 'round[1] = 'round[2] = 'round[3] = 'round[4] = 0;
	'seal_id[0] = 'seal_id[1] = 'seal_id[2] = 'seal_id[3] = 'seal_id[4] = 0;
	'seal_hp[0] = 'seal_hp[1] = 'seal_hp[2] = 'seal_hp[3] = 'seal_hp[4] = 0;
	'seal_dead[0] = 'seal_dead[1] = 'seal_dead[2] = 'seal_dead[3] = 'seal_dead[4] = 0;
	deletearray 'coord_seal_1[0],14;
	deletearray 'coord_seal_2[0],14;
	deletearray 'coord_seal_3[0],14;
	deletearray 'coord_seal_4[0],14;
	deletearray 'coord_seal_5[0],14;
	end;
}

1@tnm2,144,137,3	script	Lucile#tnm04	4_F_LUCILE,{
	if ('devil_tower < 9)
		end;
	if (isbegin_quest(7574) == 0) {
		if (isbegin_quest(7572) == 1)
			erasequest 7572;// Lucile...?
		if (isbegin_quest(7573) == 1)	// leader
			erasequest 7573;// Magic Swordman Thanatos
		setquest 7574;// Thanatos Tower
		mes "[Lucile]";
		mes "I guess the power of Demon Morocc to break the shield of seal has collided with Thanatos.";
		cutin "tnm_lucile01.bmp",2;
		next;
		mes "[Lucile]";
		mes "It has gone too far somewhere in the south";
		mes "Will you go there?";
	}
	else {
		mes "[Lucile]";
		mes "The collision of those two powers is too much to handle.";
		mes "It could have influenced the south of Rune Midgard.";
	}
	next;
	if (select( "Follow.", "Stop." ) == 2) {
		mes "[Lucile]";
		mes "...I guess this is what you are able to?";
		cutin "tnm_lucile02.bmp",2;
		close3;
	}
	mes "[Lucile]";
	mes "Good luck.";
	close2;
	warp 'map_tnm3$,21,171;
	end;
}

// tnm3 Stairs 1
1@tnm3,21,171,0	script	#tnm3event01	HIDDEN_NPC,1,1,{
	end;
OnTouch:
	if ('devil_tower != 9)
		end;
	mes "";	// todo fix me "workinprogress"
	disablenpc instance_npcname("#tnm3event01");
	enablenpc instance_npcname("Young Girl#tnm01");
	sleep2 4000;
	mapannounce 'map_tnm3$, "Young Girl: Odin Preserve me! A demon!! Help me!", bc_map,0xFF00;
	'mob_count = 12;
	initnpctimer;
	end;
OnTimer1000:
	monster 'map_tnm3$,33,171,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1
	end;
OnTimer2000:
	monster 'map_tnm3$,39,172,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1
	end;
OnTimer3000:
	monster 'map_tnm3$,34,177,"Evil Shadow",2940,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW2
	end;
OnTimer4000:
	monster 'map_tnm3$,36,176,"Evil Shadow",2940,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW2
	end;
OnTimer5000:
	monster 'map_tnm3$,37,175,"Evil Shadow",2940,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW2
	end;
OnTimer6000:
	monster 'map_tnm3$,37,173,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3
	monster 'map_tnm3$,36,172,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3
	end;
OnTimer7000:
	monster 'map_tnm3$,29,178,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3
	monster 'map_tnm3$,35,172,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3
	end;
OnTimer8000:
	monster 'map_tnm3$,34,173,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3
	monster 'map_tnm3$,35,172,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1
	end;
OnTimer9000:
	monster 'map_tnm3$,34,173,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3
	stopnpctimer;
	end;
}

1@tnm3,43,175,3	script	Young Girl#tnm01	4_F_DST_CHILD,{
	if ('devil_tower < 9)
		end;
	if ('devil_tower == 9) {
		mes "[Young Girl]";
		mes "Why are there demons in the castle?!";
		mes "HELP ME!";
		close;
	}
	if ('devil_tower == 10) {
		if (getpartyleader(getcharid(1),2) != getcharid(0)) {
			mes "[Young Girl]";
			mes "*weeping* The demons are so scary.";
			close;
		}
		mes "[Young Girl]";
		mes "Why would demons come all of a sudden,";
		mes "lots of guards are hurt.";
		npctalk "Young Girl: Why would demons come all of a sudden, lots of guards are hurt.";
		next;
		select("Where are they?");
		unittalk getcharid(3), "" + strcharinfo(0) + " : Where are they?";
		mes "[Young Girl]";
		mes "They are in Morroc castle. My father is a knight.";
		npctalk "They are in Morroc castle. My father is a knight.";
		next;
		mes "[Young Girl]";
		mes "It seems like something is happening, I hear strange noises downstairs.";
		npctalk "Young Girl: It seems like something is happening, I hear strange noises downstairs.";
		next;
		mes "[Young Girl]";
		mes "I saw some guys in black entering. What is going on in the castle?";
		npctalk "Young Girl: I saw some guys in black entering. What is going on in the castle?";
		next;
		mes "[Young Girl]";
		mes "Papa.. Papa please be safe. *sob*";
		mes "Please come with me through the passage behind that shelf!";
		npctalk "Young Girl: Please come with me through the passage behind that shelf!";
		close2;
		enablenpc instance_npcname("#tnm3gate01");
		enablenpc instance_npcname("#tnm3event02ect");
		'devil_tower = 11;
		end;
	}
	if ('devil_tower == 11) {
		mes "[Young Girl]";
		mes "Behind that shelf is a secret passage to the basement!";
		mes "Please come with me to make sure my Papa is safe.";
		close;
	}
	end;

OnMobDead:
	'mob_count--;
	if ('mob_count == 0) {
		'devil_tower = 10;
		npctalk "Young Girl: Thank you for saving me... but why is there a demon?";
	}
	end;
}

1@tnm3,52,176,0	warp	#tnm3gate01	2,2,1@tnm3,85,178

// tnm3 Stairs 2
1@tnm3,85,178,0	script	#tnm3event02ect	HIDDEN_NPC,1,1,{
	end;
OnTouch:
	if ('devil_tower != 11)
		end;
	disablenpc instance_npcname("#tnm3event02ect");
	enablenpc instance_npcname("Young Girl#tnm02");
	npctalk "Young Girl: Look! More demons, they will overwhelm the castle soon!", instance_npcname("Young Girl#tnm02");
	'mob_count = 18;
	initnpctimer;
	end;
OnTimer1000:
	.@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead";
	monster 'map_tnm3$,97,174,"Evil Shadow",2939,1, .@label$;
	monster 'map_tnm3$,98,175,"Evil Shadow",2939,1, .@label$;
	monster 'map_tnm3$,100,166,"Evil Shadow",2939,1, .@label$;
	monster 'map_tnm3$,108,171,"Evil Shadow",2940,1, .@label$;
	monster 'map_tnm3$,104,172,"Evil Shadow",2940,1, .@label$;
	end;
OnTimer3000:
	.@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead";
	monster 'map_tnm3$,109,169,"Evil Shadow",2941,1, .@label$;
	monster 'map_tnm3$,111,173,"Evil Shadow",2941,1, .@label$;
	monster 'map_tnm3$,113,167,"Evil Shadow",2941,1, .@label$;
	monster 'map_tnm3$,101,176,"Evil Shadow",2939,1, .@label$;
	monster 'map_tnm3$,116,170,"Evil Shadow",2941,1, .@label$;
	end;
OnTimer5000:
	.@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead";
	monster 'map_tnm3$,107,175,"Evil Shadow",2940,1, .@label$;
	monster 'map_tnm3$,106,174,"Evil Shadow",2940,1, .@label$;
	monster 'map_tnm3$,106,169,"Evil Shadow",2939,1, .@label$;
	monster 'map_tnm3$,103,177,"Evil Shadow",2940,1, .@label$;
	end;
OnTimer7000:
	stopnpctimer;
	.@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead";
	monster 'map_tnm3$,121,171,"Evil Shadow",2941,1, .@label$;
	monster 'map_tnm3$,119,173,"Evil Shadow",2941,1, .@label$;
	monster 'map_tnm3$,127,166,"Evil Shadow",2941,1, .@label$;
	monster 'map_tnm3$,125,166,"Evil Shadow",2941,1, .@label$;
	end;
}

1@tnm3,89,179,4	script	Young Girl#tnm02	4_F_DST_CHILD,{
	end;
OnMobDead:
	'mob_count--;
	if ('mob_count == 0) {
		mapannounce 'map_tnm3$, "Young Girl: The way underground is along this aisle!", bc_map,0xFF00;
		disablenpc instance_npcname("Young Girl#tnm02");
		enablenpc instance_npcname("Young Girl#tnm03");
		npctalk "Young Girl: The way underground is along this aisle!", instance_npcname("Young Girl#tnm03");
		enablenpc instance_npcname("#tnm3gate02");
		enablenpc instance_npcname("Evil Shadow#tnm3mob01");
	}
	end;
}

1@tnm3,128,164,3	script	Young Girl#tnm03	4_F_DST_CHILD,{
	mes "[Young Girl]";
	mes "From here.. I do not know well...";
	mes "I see so many stairs...";
	mes "See there are so many demons. My father will be in a danger!";
	mes "Please save him.";
	close;
}

1@tnm3,134,156,0	warp	#tnm3gate02	1,1,1@tnm3,169,165

// tnm3 Stairs 3
1@tnm3,179,172,3	script	Evil Shadow#tnm3mob01	2941,4,4,{
	end;
OnTouch_:
	if ('devil_tower == 11) {
		'devil_tower = 12;
		mes "";	// todo fix me "workinprogress"
		sleep2 1000;
		npctalk "Evil Shadow: I thought I smelled rats sneaking in here. I was right!!";
		sleep2 3000;
		npctalk "Evil Shadow: You will rue your curiosity and interference. Time to feed!";
		sleep2 3000;
		npctalk "Evil Shadow: I summon the Darkness!!";
		disablenpc instance_npcname("Evil Shadow#tnm3mob01");
		donpcevent instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnSummon";
	}
	end;
}

1@tnm3,1,1,0	script	Evil Shadow kill#tnm3mob01	HIDDEN_WARP_NPC,{
	end;
OnSummon:
	enablenpc instance_npcname("Evil Shadow kill#tnm3mob01");
	'mob_count = 5;
	initnpctimer;
	monster 'map_tnm3$,179,172, "Evil Shadow",2941,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";// MM_EVIL_SHADOW3
	end;
OnTimer1000:
	monster 'map_tnm3$,181,172, "Evil Shadow",2940,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";// MM_EVIL_SHADOW2
	monster 'map_tnm3$,178,172, "Evil Shadow",2940,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";
	end;
OnTimer2000:
	monster 'map_tnm3$,179,172, "Evil Shadow",2939,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";// MM_EVIL_SHADOW1
	monster 'map_tnm3$,176,173, "Evil Shadow",2939,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";
	stopnpctimer;
	end;
OnMobDead:
	'mob_count--;
	if ('mob_count == 0) {
		enablenpc instance_npcname("#tnm3gate03");
		enablenpc instance_npcname("Demonic Shade#mobmaster");
		enablenpc instance_npcname("Morocc Lord Knight#mocl");
		enablenpc instance_npcname("Loki#tnmloki01");
	}
	end;
}

1@tnm3,183,177,0	warp	#tnm3gate03	1,1,1@tnm3,97,6

// Demonic Shade (Boss room)
1@tnm3,97,18,3	script	Demonic Shade#mobmaster	2939,5,5,{
	end;
OnTouch_:// possibility to skip this step
	if ('devil_tower < 12)
		end;
	if ('shade == 0) {
		'shade = 1;
		mes "";	// todo fix me "workinprogress"
		sleep2 1000;
		npctalk "Demonic Shade: So you are the trouble makers!";
		sleep2 2000;
		npctalk "Demonic Shade: Tsk, You couldn't even manage to protect..?.whatever.. you will all die here.";
		sleep2 3000;
		npctalk "Demonic Shade: The eternal truth is I will turn your deaths into Masin's life with your hearts' blood!!!";
		disablenpc instance_npcname("Demonic Shade#mobmaster");
		donpcevent instance_npcname("#mobmaster_kill") + "::OnSummon";
	}
	end;
}

1@tnm3,1,1,0	script	#mobmaster_kill	HIDDEN_WARP_NPC,{
	end;
OnSummon:
	enablenpc instance_npcname("#mobmaster_kill");
	initnpctimer;
	monster 'map_tnm3$,97,18, "Demonic Shade",2939,1, instance_npcname("#mobmaster_kill") + "::OnMobDead";
	end;
OnTimer1000:
	.@label$ = instance_npcname("#mobmaster_kill") + "::OnMobDead";
	stopnpctimer;
	monster 'map_tnm3$,94,18, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,96,18, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,113,18, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,119,22, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,116,18, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,116,18, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,114,12, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,116,21, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,74,18, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,75,12, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,76,21, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,69,16, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,57,43, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,58,44, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,59,46, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,60,48, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,56,45, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,57,44, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,80,71, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,59,77, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,77,73, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,77,72, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,59,70, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,81,66, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,60,69, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,57,73, "Demonic Shade",2940,1, .@label$;
	monster 'map_tnm3$,62,74, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,78,67, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,75,22, "Demonic Shade",2941,1, .@label$;
	monster 'map_tnm3$,81,69, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,77,11, "Demonic Shade",2939,1, .@label$;
	monster 'map_tnm3$,58,74, "Demonic Shade",2941,1, .@label$;
	end;

OnMobDead:
	end;
}

1@tnm3,93,52,4	script	Morocc Lord Knight#mocl	1_M_MOC_LORD,{
	mes "[Morocc Lord Knight]";
	mes "You were the rats who were sneaking around here!";
	close;
}

1@tnm3,97,48,3	script	Loki#tnmloki01	4_M_ROKI2,{
	if ('devil_tower == 12) {
		'devil_tower = 13;
		donpcevent instance_npcname("#morroc_lord_talk") + "::OnStart";
		end;
	}
	mes "[Loki]";
	mes "You have no power here.";
	close;
}

1@tnm3,94,51,4	duplicate(Officer Heim#heim0)	Young Girl#tnm04	4_F_DST_CHILD

1@tnm2,1,1,0	script	#morroc_lord_talk	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#morroc_lord_talk");
	'morroc$ = instance_npcname("Morocc Lord Knight#mocl");
	'loki$ = instance_npcname("Loki#tnmloki01");
	npctalk "Morocc Lord Knight: So.. the rat was an assassin? You came here to die?", 'morroc$;
	initnpctimer;
	end;
OnTimer3000:
	npctalk "Loki: What will you accomplish by waking the Masin in the Wall?", 'loki$;
	end;
OnTimer6000:
	npctalk "Loki: My mission brought me here to bury it again.", 'loki$;
	end;
OnTimer9000:
	npctalk "Morocc Lord Knight: Really.. the Assassin guild who I thought was on a mission to balance power in the world.", 'morroc$;
	end;
OnTimer12000:
	npctalk "Morocc Lord Knight: Resurrecting the demon would bring balance! Even the mightiest become slaves to a god..", 'morroc$;
	end;
OnTimer15000:
	npctalk "Morocc Lord Knight: The gods have their own plans. Do you know what the gods plan for you or I?", 'morroc$;
	end;
OnTimer18000:
	npctalk "Morocc Lord Knight: They want this world to only be in their image. Where do we fit into that?!", 'morroc$;
	end;
OnTimer20000:
	npctalk "Loki: Shut up!", 'loki$;
	end;
OnTimer22000:
	npctalk "Loki: I do not care about gods or demons or the plans that they have made. The only thing that matters is kill you.", 'loki$;
	end;
OnTimer25000:
	npctalk "Loki: That is my mission!", 'loki$;
	end;
OnTimer28000:
	npctalk "Morocc Lord Knight: So all you want is to finish your damn mission?..", 'morroc$;
	end;
OnTimer31000:
	npctalk "Loki: *Grins* Of course!!", 'loki$;
	specialeffect EF_BEGINSPELL3,AREA, 'loki$;
	end;
OnTimer33000:
	npctalk "Loki: Mind blaster-!!!", 'loki$;
	end;
OnTimer34000:
	enablenpc instance_npcname("Young Girl#tnm04");
	npctalk "Young Girl: No..!! Don't hurt my Papa!!!", instance_npcname("Young Girl#tnm04");
	specialeffect EF_HIT3,AREA, instance_npcname("Young Girl#tnm04");
	end;
OnTimer34500:
	specialeffect EF_HIT2,AREA, instance_npcname("Young Girl#tnm04");
	end;
OnTimer35500:
	specialeffect EF_ICECRASH,AREA, instance_npcname("Young Girl#tnm04");
	end;
OnTimer36500:
	npctalk "!!!", 'loki$;
	end;
OnTimer38500:
	npctalk "Morocc Lord Knight: Oh no.. They should have sent better than you, Mr. Assassin, for this mission.", 'morroc$;
	end;
OnTimer41500:
	npctalk "Young Girl: Something is wrong....", instance_npcname("Young Girl#tnm04");
	end;
OnTimer44500:
	npctalk "Young Girl: My Papa would never act this way.. Ugh..", instance_npcname("Young Girl#tnm04");
	end;
OnTimer47500:
	npctalk "Morocc Lord Knight: Human.. To do such a stupid thing.. a sacrifice.", 'morroc$;
	end;
OnTimer50500:
	npctalk "Morocc Lord Knight: You know, the truth is, that it is useless.", 'morroc$;
	end;
OnTimer53500:
	npctalk "Morocc Lord Knight: Gwuaaa hahahaha. You stupid humans I will kill you all as sacrifices for the demon!!", 'morroc$;
	specialeffect EF_COUPLECASTING,AREA, 'morroc$;
	specialeffect EF_VOLCANO,AREA, 'morroc$;
	end;
OnTimer54500:
	npctalk "Loki:... tsk! useless....!", 'loki$;
	end;
OnTimer55500:
	enablenpc instance_npcname("Loki#tnmloki02");
	mapwarp 'map_tnm3$, 'map_tnm3$,136,62;// todo area 1x1
	'devil_tower = 13;
	stopnpctimer;
	disablenpc instance_npcname("#morroc_lord_talk");
	disablenpc instance_npcname("Morocc Lord Knight#mocl");
	disablenpc instance_npcname("Loki#tnmloki01");
	disablenpc instance_npcname("Young Girl#tnm04");
	end;
}

1@tnm3,137,65,3	script	Loki#tnmloki02	4_M_ROKI2,{
	if ('devil_tower != 13)
		end;
	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
		mes "[Loki]";
		mes "I am talking to your boss.";
		close;
	}
	if (getmercinfo(0) > 0) {
		mes "[Loki]";
		mes "...embarrassing.";
		mes "You should ^4d4dffTerminate the mercenary contract^000000, if you want to help me on this mission.";
		close;
	}
	mes "[Loki]";
	mes "Where did you come from?";
	mes "I may need help here.";
	npctalk "Loki: Where did you come from? I may need help here.", instance_npcname("Loki#tnmloki02");
	next;
	mes "[Loki]";
	mes "The Lord Knight is no longer human. I have to send him to his eternity for his demonic followings.";
	npctalk "Loki: The Lord Knight is no longer human. I have to send him to his eternity.", instance_npcname("Loki#tnmloki02");
	next;
	mes "[Loki]";
	mes "^4d4dffThe ones who are infernally blessed by demons are invincible. We can sever the blessing with Mind Blaster.^000000";
	npctalk "Loki: The ones who are infernally blessed by demons are invincible. We can sever the blessing with Mind Blaster.", instance_npcname("Loki#tnmloki02");
	next;
	mes "[Loki]";
	mes "You will be in charge of activating Mind Blaster.";
	npctalk "Loki: You will be in charge of activating Mind Blaster.", instance_npcname("Loki#tnmloki02");
	next;
	disablenpc instance_npcname("Loki#tnmloki02");
	mes "^4d4dffLoki, Guillotine Cross of the Assassin Guild, has joined your party.";
	mes "We have to get rid of the demonic Lord Knight by Mind Blasting him with Loki's skill.^000000";
	'devil_tower = 14;
	mercenary_create 2937,1800000;// M_LOKI
	mapannounce 'map_tnm3$, "Demon Worshipper's Voice: Such rubbish! Where did you hide yourself?", bc_map,0xFF00;
	initnpctimer;
	close;
OnTimer500:
	monster 'map_tnm3$,93,52,"Evil Believer",2942,1, instance_npcname("#boss_skills_timer") + "::OnBossDead";// MM_EVIL_FANATICS
	'boss_id = $@mobid[0];
	end;
OnTimer2000:
	mapannounce 'map_tnm3$, "Demon Worshipper's Voice: You will all be sacrificed to awaken Masin!!!", bc_map,0xFF00;
	end;
OnTimer12000:
	donpcevent instance_npcname("#boss_skills_timer") + "::OnStart";
	stopnpctimer;
	end;
}

1@tnm3,1,1,0	script	#boss_skills_timer	HIDDEN_WARP_NPC,{
	end;
OnStart:
	enablenpc instance_npcname("#boss_skills_timer");
	'label$ = instance_npcname("#boss_skills_timer") + "::OnMobDead";
	initnpctimer;
	end;
OnTimer1000:// + form
	getunitdata 'boss_id, .@data;
	'x_boss = .@data[UMOB_X];
	'y_boss = .@data[UMOB_Y];
	monster 'map_tnm3$, 'x_boss, 'y_boss, "",2943,1, 'label$;// MM_ICE_MINE
	monster 'map_tnm3$, ('x_boss-5), 'y_boss, "",2943,1, 'label$;
	monster 'map_tnm3$, ('x_boss+5), 'y_boss, "",2943,1, 'label$;
	monster 'map_tnm3$, 'x_boss, ('y_boss-5), "",2943,1, 'label$;
	monster 'map_tnm3$, 'x_boss, ('y_boss+5), "",2943,1, 'label$;
	end;
OnTimer3000:
	monster 'map_tnm3$, ('x_boss-10), 'y_boss, "",2943,1, 'label$;// MM_ICE_MINE
	monster 'map_tnm3$, ('x_boss+10), 'y_boss, "",2943,1, 'label$;
	monster 'map_tnm3$, 'x_boss, ('y_boss-10), "",2943,1, 'label$;
	monster 'map_tnm3$, 'x_boss, ('y_boss+10), "",2943,1, 'label$;
	end;
OnTimer6000:
	killmonster 'map_tnm3$, 'label$;
	end;
OnTimer21000:// X form
	getunitdata 'boss_id, .@data;
	'x_boss = .@data[UMOB_X];
	'y_boss = .@data[UMOB_Y];
	monster 'map_tnm3$, ('x_boss+3), ('y_boss+3), "",2960,1, 'label$;// MM_FLAMECROSS
	monster 'map_tnm3$, ('x_boss+3), ('y_boss-3), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-3), ('y_boss+3), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-3), ('y_boss-3), "",2960,1, 'label$;
	end;
OnTimer21350:
	monster 'map_tnm3$, ('x_boss+6), ('y_boss+6), "",2960,1, 'label$;// MM_FLAMECROSS
	monster 'map_tnm3$, ('x_boss+6), ('y_boss-6), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-6), ('y_boss+6), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-6), ('y_boss-6), "",2960,1, 'label$;
	end;
OnTimer21700:
	monster 'map_tnm3$, ('x_boss+9), ('y_boss+9), "",2960,1, 'label$;// MM_FLAMECROSS
	monster 'map_tnm3$, ('x_boss+9), ('y_boss-9), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-9), ('y_boss+9), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-9), ('y_boss-9), "",2960,1, 'label$;
	end;
OnTimer22050:
	monster 'map_tnm3$, ('x_boss+13), ('y_boss+13), "",2960,1, 'label$;// MM_FLAMECROSS
	monster 'map_tnm3$, ('x_boss+13), ('y_boss-13), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-13), ('y_boss+13), "",2960,1, 'label$;
	monster 'map_tnm3$, ('x_boss-13), ('y_boss-13), "",2960,1, 'label$;
	end;
OnTimer30000:
	killmonster 'map_tnm3$, 'label$;
	end;
OnTimer51000:// X form
	getunitdata 'boss_id, .@data;
	'x_boss = .@data[UMOB_X];
	'y_boss = .@data[UMOB_Y];
	monster 'map_tnm3$, 'x_boss, 'y_boss, "",2943,1, 'label$;// MM_ICE_MINE
	monster 'map_tnm3$, ('x_boss+5), ('y_boss+5), "",2943,1, 'label$;
	monster 'map_tnm3$, ('x_boss-5), ('y_boss-5), "",2943,1, 'label$;
	monster 'map_tnm3$, ('x_boss+10), ('y_boss+10), "",2943,1, 'label$;
	monster 'map_tnm3$, ('x_boss-10), ('y_boss-10), "",2943,1, 'label$;
	end;
OnTimer53000:
	monster 'map_tnm3$, ('x_boss-5), ('y_boss+5), "",2943,1, 'label$;// MM_ICE_MINE
	monster 'map_tnm3$, ('x_boss+5), ('y_boss-5), "",2943,1, 'label$;
	monster 'map_tnm3$, ('x_boss-10), ('y_boss+10), "",2943,1, 'label$;
	monster 'map_tnm3$, ('x_boss+10), ('y_boss-10), "",2943,1, 'label$;
	end;
OnTimer56000:
	killmonster 'map_tnm3$, 'label$;
	end;
OnTimer81000:// S form
	getunitdata 'boss_id, .@data;
	'x_boss = .@data[UMOB_X];
	'y_boss = .@data[UMOB_Y];
	monster 'map_tnm3$, ('x_boss-2), ('y_boss+5), "",2960,1, 'label$;// MM_FLAMECROSS
	end;
OnTimer81300:
	monster 'map_tnm3$, ('x_boss+4), ('y_boss+8), "",2960,1, 'label$;
	end;
OnTimer81600:
	monster 'map_tnm3$, ('x_boss+10), ('y_boss+2), "",2960,1, 'label$;
	end;
OnTimer82000:
	monster 'map_tnm3$, ('x_boss+10), ('y_boss-1), "",2960,1, 'label$;
	end;
OnTimer82300:
	monster 'map_tnm3$, ('x_boss+7), ('y_boss-7), "",2960,1, 'label$;
	end;
OnTimer82600:
	monster 'map_tnm3$, ('x_boss+1), ('y_boss-10), "",2960,1, 'label$;
	end;
OnTimer83000:
	monster 'map_tnm3$, ('x_boss-11), ('y_boss-1), "",2960,1, 'label$;
	end;
OnTimer83300:
	monster 'map_tnm3$, ('x_boss-11), ('y_boss+5), "",2960,1, 'label$;
	end;
OnTimer83600:
	monster 'map_tnm3$, ('x_boss-8), ('y_boss+11), "",2960,1, 'label$;
	end;
OnTimer84000:
	monster 'map_tnm3$, ('x_boss-2), ('y_boss+17), "",2960,1, 'label$;
	end;
OnTimer84300:
	monster 'map_tnm3$, ('x_boss+7), ('y_boss+20), "",2960,1, 'label$;
	end;
OnTimer90000:
	killmonster 'map_tnm3$, 'label$;
	initnpctimer;
	end;
OnMobDead:
	end;
OnBossDead:
	stopnpctimer;
	killmonster 'map_tnm3$, 'label$;
	'x_boss = 'y_boss = 'boss_id = 0;
	'label$ = "";
	mapannounce 'map_tnm3$, "Demon Worshipper's Voice: NO it is impossible. It cannot be.. This force.. power.. you.. may..be you are..", bc_map,0xFF0000;
	sleep2 1000;
	warpparty 'map_tnm3$,71,70, getcharid(1), 'map_tnm3$,1,1;
	enablenpc instance_npcname("Loki#tnmloki03");
	enablenpc instance_npcname("box#tnmbosang");
	disablenpc instance_npcname("#boss_skills_timer");
	'devil_tower = 15;
	end;
}

1@tnm3,69,70,3	script	box#tnmbosang	4_TREASURE_BOX,{
	if ('devil_tower != 15)
		end;
	specialeffect EF_COIN;
	disablenpc instance_npcname("box#tnmbosang");
	makeitem 7293,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5));	// Rose Quartz
	makeitem 749,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5));	// Frozen Rose
	makeitem 7511,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5));	// Rune of Darkness
	if (rand(100) < 75)
		makeitem 616,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5));	// Old Card Album
	if (rand(100) < 50)
		makeitem 748,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5));	// Witherless_Rose

	setarray .@item_id_list[0],
		1671,	// Devil_Won_Staff
		13094,	// Devil_Pierced_Dagger
		16027,	// Hammer_Of_Evil_Slayer
		18120, 	// Bow_Of_Evil_Slayer
		21010, 	// Tw_Sword_Of_Evil_Slayer
		28001; 	// Katar_Of_Evil_Slayer
	setarray .@bonus_list1[0],
		4800,	// SP50
		4811,	// Fighting_Spirit1
		4810,	// Fighting_Spirit2
		4809,	// Fighting_Spirit3
		4808,	// Fighting_Spirit4
		4820,	// Fighting_Spirit5
		4821,	// Fighting_Spirit6
		4815,	// Spell1
		4814,	// Spell2
		4813,	// Spell3
		4812,	// Spell4
		4786;	// Mdef2
	setarray .@bonus_list2[0],
		4815,	// Spell1
		4814,	// Spell2
		4813,	// Spell3
		4812,	// Spell4
		4826,	// Spell5
		4811,	// Fighting_Spirit1
		4810,	// Fighting_Spirit2
		4809,	// Fighting_Spirit3
		4808,	// Fighting_Spirit4
		4820,	// Fighting_Spirit5
		4786;	// Mdef2
	setarray .@bonus_list3[0],
		4815,	// Spell1
		4814,	// Spell2
		4813,	// Spell3
		4812,	// Spell4
		4811,	// Fighting_Spirit1
		4810,	// Fighting_Spirit2
		4809,	// Fighting_Spirit3
		4808,	// Fighting_Spirit4
		4820,	// Fighting_Spirit5
		4821,	// Fighting_Spirit6
		4791,	// DEF+3
		4786;	// Mdef2
	.@item_id = .@item_id_list[ rand( getarraysize(.@item_id_list) ) ];
	.@refine = rand(1,6);
	.@bonus1 = .@bonus_list1[ rand( getarraysize(.@bonus_list1) ) ];
	.@bonus2 = .@bonus_list1[ rand( getarraysize(.@bonus_list2) ) ];
	.@bonus3 = .@bonus_list1[ rand( getarraysize(.@bonus_list3) ) ];

	makeitem2 .@item_id,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)), 0, .@refine,0, 0,.@bonus1,.@bonus2,.@bonus3;
	end;
}

//1@tnm3,69,72,3	script	Loki#tnmloki03	4_M_ROKI2,5,5,{
1@tnm3,69,72,3	script	Loki#tnmloki03	4_M_ROKI2,{
	if ('devil_tower != 15)
		end;
	if (isbegin_quest(7576) == 0) {
		mes "[Loki]";
		mes ".. annoying";
		mes "The demon was destroyed before the resurrection ceremony was completed.";
		mes "Things will be fine for awhile.";
		setquest 7576;// Morocc castle seal
		next;
		mes "I have gained unexpected information during my exploration of the Tower.";
		next;
		mes "[Loki]";
		mes "I will remain apart from my conscience for a bit longer";
		mes "someday I'll let myself feel again, and today will occupy my thoughts..";
		close;
	}
	mes "[Loki]";
	mes "Interesting.. there is a daughter..";
	mes "What should be done about it?";
	mes "I am not sure of what my next move is to be..";
	next;
	mes "[Loki]";
	mes "But no matter, you obviously shouldn't be here, now.";
	mes "Will stay here any longer?";
	mes "I can send you back where and when you belong.";
	next;
	if (select( "Get out of here.", "Take a look around." ) == 2) {
		mes "[Loki]";
		mes "It is unwise to linger where time is distorted.";
		close;
	}
	mes "[Loki]";
	mes "Perhaps, our missions will ally us again in the future..";
	close2;
	warp "dali02",134,112;
	end;

OnInstanceInit:
	'heal_count = 0;
	'devil_tower = 0;
	'mob_count = 0;
	'shade = 0;

	'map_tnm1$ = instance_mapname("1@tnm1");
	'map_tnm2$ = instance_mapname("1@tnm2");
	'map_tnm3$ = instance_mapname("1@tnm3");

	// Entrance
	disablenpc instance_npcname("Officer Heim#heim");
	disablenpc instance_npcname("Healer Fama#feima");
	for ( .@i = 1; .@i < 8; .@i++ )
		disablenpc instance_npcname( "Injured Soldier#" + .@i );
	disablenpc instance_npcname("Lucile#tnm01");
	disablenpc instance_npcname("Magic Swordman#tnm01");
	disablenpc instance_npcname("Assassin Huey#tnm01");
	disablenpc instance_npcname("Assassin Louie#tnm01");
	disablenpc instance_npcname("Assassin Dewey#tnm01");

	// Stairs tnm1
	disablenpc instance_npcname("#tnm1stepmob");
	disablenpc instance_npcname("Assassin Louie#tnm02");

	// Stairs 2 tnm1
	disablenpc instance_npcname("Lucile#tnm02");
	disablenpc instance_npcname("Huey#hui02");

	// Morocc - Thanatos Battle
	disablenpc instance_npcname("Magic Swordman#tnm02");
	disablenpc instance_npcname("Demon Morocc#tnm01");
	disablenpc instance_npcname("Lucile#tnm03");
	disablenpc instance_npcname("Lucile#tnm04");
	disablenpc instance_npcname("#devil_flamecross");
	disablenpc instance_npcname("#devil_seal_timer");
	disablenpc instance_npcname("#devil_seal_spawn_global");
	for ( .@i = 1; .@i < 6; .@i++ ) {
		disablenpc instance_npcname("devil_seal_spawn#" + .@i);
		disablenpc instance_npcname("devil_seal_reach_center#" + .@i);
	}
	disablenpc instance_npcname("#devil_seal_dead");

	'demon$ = 'thanatos$ = "";
	'round[0] = 'round[1] = 'round[2] = 'round[3] = 'round[4] = 0;
	'seal_id[0] = 'seal_id[1] = 'seal_id[2] = 'seal_id[3] = 'seal_id[4] = 0;
	'seal_hp[0] = 'seal_hp[1] = 'seal_hp[2] = 'seal_hp[3] = 'seal_hp[4] = 0;
	'seal_dead[0] = 'seal_dead[1] = 'seal_dead[2] = 'seal_dead[3] = 'seal_dead[4] = 0;
	deletearray 'coord_seal_1[0],14;
	deletearray 'coord_seal_2[0],14;
	deletearray 'coord_seal_3[0],14;
	deletearray 'coord_seal_4[0],14;
	deletearray 'coord_seal_5[0],14;

	// tnm3 Stairs 1
	disablenpc instance_npcname("#tnm3event01");
	disablenpc instance_npcname("Young Girl#tnm01");
	disablenpc instance_npcname("#tnm3gate01");

	// tnm3 Stairs 2
	disablenpc instance_npcname("#tnm3event02ect");
	disablenpc instance_npcname("Young Girl#tnm02");
	disablenpc instance_npcname("Young Girl#tnm03");
	disablenpc instance_npcname("#tnm3gate02");

	// tnm3 Stairs 3
	disablenpc instance_npcname("Evil Shadow#tnm3mob01");
	disablenpc instance_npcname("Evil Shadow kill#tnm3mob01");
	disablenpc instance_npcname("#tnm3gate03");

	// Demonic Shade (Boss room)
	disablenpc instance_npcname("Demonic Shade#mobmaster");
	disablenpc instance_npcname("#mobmaster_kill");

	// Boss
	disablenpc instance_npcname("Morocc Lord Knight#mocl");
	disablenpc instance_npcname("#morroc_lord_talk");
	disablenpc instance_npcname("Loki#tnmloki01");
	disablenpc instance_npcname("Young Girl#tnm04");
	disablenpc instance_npcname("Loki#tnmloki02");
	disablenpc instance_npcname("#boss_skills_timer");
	'x_boss = 'y_boss = 'boss_id = 0;
	'label$ = "";

	// Final
	disablenpc instance_npcname("Loki#tnmloki03");
	disablenpc instance_npcname("box#tnmbosang");
	end;
}

1. After I click on any npc the dialog appears above their head (normal behaviour), but the text window also appears (in blank) with no close button or anything, it just sits there

After the npc finishes talking, the close button appears and you can continue

 

Does it have something to do with 'close3' function? I added it already in Global_Functions.txt

 

2. Second one is that my mercenary doesn't have any skill to use and it won't disappear after the instance finishes (after killing mvp)

Added this line in mercenary_db.txt

2937,M_LOKI,Loki's Shadow,145,1215600,1,2,1835,2279,15,89,76,66,90,55,189,22,10,12,1,7,20,175,800,750,300

 

Not sure where to look :/

 

/thx 

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 1

  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  

1. The blank message is a trick (until better implementation) to prevent attached player to interact with others NPCs (to mimic official behaviour).

2. We need more information about the effect of Mind Blaster skill before implement it.

Edited by Capuche
  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.02
  • Content Count:  83
  • Reputation:   3
  • Joined:  10/22/17
  • Last Seen:  

9 hours ago, Capuche said:

1. The blank message is a trick (until better implementation) to prevent attached player to interact with others NPCs (to mimic official behaviour).

2. We need more information about the effect of Mind Blaster skill before implement it.

/thx 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...