begintownscript;

variables;
short bmessage,leadchar,pcs,ranpc,smoving,slocy,invulnpcs,bmen;
short talk,treex,rctx,rcty,wiz;

body;

beginstate 0;

	set_flag(80,2,1);

	bmen = 35;
	while(bmen <= 44){
		if(char_ok(bmen) == TRUE)
			set_character_pose(bmen,2);
		bmen = (bmen + 1);
	}

		if(get_flag(75,0) == 0){
			talk = 14;
		}
		else{
			talk = get_flag(75,0);
		}

set_name(34,"General Kampf");

if(get_flag(41,0) == 0){
	leadchar = 0;
	while (char_ok(leadchar) == 0) {
		leadchar = leadchar + 1;
	}
	relocate_character(leadchar,25,9);
	if(party_size() == 4){
		pcs = (leadchar + 1);
		while(char_ok(pcs) == 0){
			pcs = pcs + 1;
		}
		relocate_character(pcs,24,8);
	}
	if(party_size() >= 3){
		pcs = (pcs + 1);
		while(char_ok(pcs) == 0){
			pcs = pcs + 1;
		}
		relocate_character(pcs,27,9);
	}
	if(party_size() >= 2){
		pcs = (pcs + 1);
		while(char_ok(pcs) == 0){
			pcs = pcs + 1;
		}
		relocate_character(pcs,27,7);
	}
	force_view_center(26,8);
	set_character_facing(1000,0);
	force_instant_terrain_redraw();

	message_dialog("You approach the Border Guard of South Canopy.  As you do, you see a large patrol of soldiers preparing to charge.  For some reason, they seem dejected.","There is a Northern General sitting near a bonfire.  He calls you over.");

	if(party_size() > 1)
		text_bubble_on_char(34,"Welcome, Specialists.");
	if(party_size() == 1)
		text_bubble_on_char(34,"Welcome, Specialist.");
	force_instant_terrain_redraw();
	pause(talk);

	text_bubble_on_char(34,"");
	text_bubble_on_char(34,"My name is General Kampf.");
	force_instant_terrain_redraw();
	pause(talk);

	text_bubble_on_char(34,"");
	text_bubble_on_char(34,"You arrived just in time.");
	force_instant_terrain_redraw();
	pause(talk);

	ranpc = random_party_member();
	text_bubble_on_char(34,"");
	text_bubble_on_char(ranpc,"What's going on, sir?");
	force_instant_terrain_redraw();
	pause(talk);

	text_bubble_on_char(ranpc,"");
	text_bubble_on_char(34,"Just beyond this copse");
	force_instant_terrain_redraw();
	pause(talk);

	text_bubble_on_char(34,"");
	text_bubble_on_char(34,"is an impasse.");
	force_instant_terrain_redraw();
	pause(talk);

	text_bubble_on_char(34,"");
	text_bubble_on_char(34,"Just watch:");
	force_instant_terrain_redraw();
	pause(talk);

	text_bubble_on_char(34,"");
	set_total_visibility(1);
	force_view_center(32,18);
	pause(5);

	smoving = 11;
	while(smoving <= 25){
		if(char_ok(smoving) == TRUE){
slocy = (char_loc_y(smoving) + 1);
relocate_character(smoving,char_loc_x(smoving),slocy);
		}
		smoving = (smoving + 1);
	}
	force_instant_terrain_redraw();
	pause(5);

	set_character_pose(55,1);
	put_straight_zap(36,17,char_loc_x(13),char_loc_y(13),0);
	put_straight_zap(36,17,char_loc_x(19),char_loc_y(19),0);
	put_straight_zap(36,17,char_loc_x(11),char_loc_y(11),0);
	put_straight_zap(36,17,char_loc_x(15),char_loc_y(15),0);
	put_straight_zap(36,17,char_loc_x(16),char_loc_y(16),0);
	put_straight_zap(36,17,char_loc_x(23),char_loc_y(23),0);
	put_boom_on_char(13,0,0);
	put_boom_on_char(19,0,0);
	put_boom_on_char(11,0,0);
	put_boom_on_char(15,0,0);
	put_boom_on_char(16,0,0);
	put_boom_on_char(23,0,0);
	force_instant_terrain_redraw();
	run_animation_sound(51);
	kill_char(19,2,0);
	kill_char(23,2,0);

	set_character_pose(55,0);
	force_instant_terrain_redraw();
	pause(5);

	smoving = 11;
	while(smoving <= 25){
		if(char_ok(smoving) == TRUE){
slocy = (char_loc_y(smoving) + 1);
relocate_character(smoving,char_loc_x(smoving),slocy);
		}
		smoving = (smoving + 1);
	}
	force_instant_terrain_redraw();
	pause(5);

	set_character_pose(56,1);
	put_straight_zap(36,18,char_loc_x(13),char_loc_y(13),5);
	put_straight_zap(36,18,char_loc_x(11),char_loc_y(11),5);
	put_straight_zap(36,18,char_loc_x(12),char_loc_y(12),5);
	put_straight_zap(36,18,char_loc_x(17),char_loc_y(17),5);
	put_straight_zap(36,18,char_loc_x(18),char_loc_y(18),5);
	put_straight_zap(36,18,char_loc_x(25),char_loc_y(25),5);
	put_boom_on_char(13,6,0);
	put_boom_on_char(11,6,0);
	put_boom_on_char(12,6,0);
	put_boom_on_char(17,6,0);
	put_boom_on_char(18,6,0);
	put_boom_on_char(25,6,0);
	force_instant_terrain_redraw();
	run_animation_sound(53);
	kill_char(13,2,0);
	kill_char(11,2,0);
	kill_char(17,2,0);
	kill_char(18,2,0);
	kill_char(25,2,0);

	set_character_pose(56,0);
	force_instant_terrain_redraw();
	pause(5);

	smoving = 11;
	while(smoving <= 25){
		if(char_ok(smoving) == TRUE){
slocy = (char_loc_y(smoving) + 1);
relocate_character(smoving,char_loc_x(smoving),slocy);
		}
		smoving = (smoving + 1);
	}
	force_instant_terrain_redraw();
	pause(5);

	set_character_pose(59,1);
	put_straight_zap(28,18,char_loc_x(12),char_loc_y(12),6);
	put_straight_zap(28,18,char_loc_x(16),char_loc_y(16),6);
	put_straight_zap(28,18,char_loc_x(15),char_loc_y(15),6);
	put_straight_zap(28,18,char_loc_x(21),char_loc_y(21),6);
	put_straight_zap(28,18,char_loc_x(22),char_loc_y(22),6);
	put_straight_zap(28,18,char_loc_x(14),char_loc_y(14),6);
	put_boom_on_char(12,4,0);
	put_boom_on_char(16,4,0);
	put_boom_on_char(14,4,0);
	put_boom_on_char(15,4,0);
	put_boom_on_char(21,4,0);
	put_boom_on_char(22,4,0);
	force_instant_terrain_redraw();
	run_animation_sound(54);
	kill_char(12,2,0);
	kill_char(16,2,0);
	kill_char(15,2,0);
	kill_char(21,2,0);
	kill_char(22,2,0);

	set_character_pose(59,0);
	force_instant_terrain_redraw();
	pause(5);

	smoving = 11;
	while(smoving <= 25){
		if(char_ok(smoving) == TRUE){
slocy = (char_loc_y(smoving) + 1);
relocate_character(smoving,char_loc_x(smoving),slocy);
		}
		smoving = (smoving + 1);
	}
	force_instant_terrain_redraw();
	pause(5);

	set_character_pose(58,1);
	put_straight_zap(28,17,char_loc_x(14),char_loc_y(14),0);
	put_straight_zap(28,17,char_loc_x(20),char_loc_y(20),0);
	put_straight_zap(28,17,char_loc_x(24),char_loc_y(24),0);
	put_boom_on_char(14,0,0);
	put_boom_on_char(20,0,0);
	put_boom_on_char(24,0,0);
	force_instant_terrain_redraw();
	run_animation_sound(54);
	kill_char(14,2,0);
	kill_char(20,2,0);
	kill_char(24,2,0);

	set_character_pose(58,0);
	force_view_center(26,8);
	set_total_visibility(0);
	force_instant_terrain_redraw();
	pause(5);

	reset_dialog();
	add_dialog_str(0,"General Kampf shakes his head.  _We have been sending our troops into a futile combat situation.  The gate to this fortress is well-defended._",0);
	add_dialog_str(1,"_There are six Wizards sitting on the ramparts.  I know what you're thinking, so let me say right away that these wizards are not normal._",0);
	add_dialog_str(2,"_Simply put, they're completely impervious to our attacks.  Archers, magic, nothing is good enough.  Everyone who we have sent thusfar hasn't gotten through._",0);
	add_dialog_str(3,"_But even beyond that, there's a sizable regiment of elite guards ready to tear up which ever weakened troops manage to make it through the gauntlet of Fireblasts and what-have-you._",0);
	if(party_size() > 1)
		add_dialog_str(4,"_That, Specialists, is where you come in._",0);
	if(party_size() == 1)
		add_dialog_str(4,"_That, Specialist, is where you come in._",0);
	add_dialog_choice(0,"Hunh?");
	bmessage = run_dialog(1);
	pause(5);

	set_character_pose(34,1);
	pcs = 0;
	while(pcs < 4){
		if(char_ok(pcs) == TRUE)
			put_sparkles_on_char(pcs,0,6);
		pcs = (pcs + 1);
	}
	set_char_status(1000,4,2,1,0);
	force_instant_terrain_redraw();
	run_animation_sound(4);
	pause(5);

	set_character_pose(34,0);
	force_instant_terrain_redraw();

	reset_dialog();
	add_dialog_str(0,"Your skin begins to tighten up, as if it were turning into steel.  It is still malleable, but it's not easy to get used to.",0);
	add_dialog_str(1,"General Kampf is heaving lightly.  _That is my gift to you.  With this, you will be invulnerable for a short amount of time._",0);
	add_dialog_str(2,"_Go past the wizards and into the fortress.  Remember, don't wait around.  This enchantment won't last forever!_",0);
	add_dialog_str(3,"You ask him if he expects you to destroy everyone in the fortress.  He sighs.  _We were expecting Spiegelbrecher to help, but..._",0);
	add_dialog_str(4,"_Leader said that Spiegelbrecher and you would bring this fortress' defenses down.  I hope that he will show up soon._",0);
	bmessage = run_dialog(1);

	set_flag(41,0,1);
	force_view_center(char_loc_x(leadchar),char_loc_y(leadchar));
	block_entry(1);

	wiz = 55;
	while(wiz < 61){
		set_attitude(wiz,4);
		wiz = (wiz + 1);
	}
}

break;

beginstate 1;

	set_flag(80,2,0);

	activate_hidden_group(12);
	force_instant_terrain_redraw();
	pause(14);

	reset_dialog();
	add_dialog_str(0,"As you leave the Border Guard, you see the army of Canopy march at your back.  Leader is leading the pack, but breaks off as the Army reaches the gate.  He seems very pleased.",0);
	if(party_size() > 1)
		add_dialog_str(1,"_Specialists, I'm incredibly proud of this nation's achievements.  We experienced more casualties than we should have, however.  Can you give me a quick run-down of your siege?_",0);
	if(party_size() == 1)
		add_dialog_str(1,"_Specialist, I'm incredibly proud of this nation's achievements.  We experienced more casualties than we should have, however.  Can you give me a quick run-down of your siege?_",0);
	add_dialog_str(2,"You give him a run-down of the events as they happened, save for Spiegelbrecher's departure.  You tell him that he merely ran off in order to attack Sud Canopy, not that he went insane.  You also don't tell him about Emery or Stahlmann.",0);
	add_dialog_str(3,"Leader nods.  _Very good.  There is a small hamlet south of here, we will sack it.  Meet us there, we will reconvene to discuss a strategy for sacking Fides Keep._",0);
	add_dialog_str(4,"Leader and his cadre advance around you and march to the south.  Since Sud Canopy put most of its stock in the Border Guard, there should be no resistance left when you arrive.",0);
	bmessage = run_dialog(1);

break;

beginstate START_STATE;

	if(get_flag(41,0) < 5 && get_flag(41,0) >= 1){
		invulnpcs = 0;
		while(invulnpcs < 4){
			if(char_ok(invulnpcs) == TRUE){
if(get_char_status(invulnpcs,4) < 2){
	set_char_status(invulnpcs,4,2,1,0);
}
			}
		invulnpcs = (invulnpcs + 1);
		}
	}

break;

beginstate 10;
	message_dialog("You have no reason to turn back now!","Your business is in South Canopy.  You had best attend to it.");
	block_entry(1);
break;

beginstate 11;

	if(get_flag(41,0) < 2){
		message_dialog("The Shielded Wizards that General Kampf described are still here.  Fortunately, they shouldn't be able to harm you.","Still, you should probably not dawdle here for very long.");
		set_flag(41,0,2);
	}
break;

beginstate 12;

	if(get_flag(41,0) < 3){
		reset_dialog();
		add_dialog_str(0,"Not that you are here to admire Sud Canopy's Border Guard, but it genuinely is a beautiful structure.",0);
		add_dialog_str(1,"Its raised daises are studded with a type of ornamental tiles, and the pillars surrounded by ceremonial braziers, creating a strikingly dramatic effect.",0);
		add_dialog_str(2,"In spite of clear and obvious military inferiority, Sud Canopy at least looks nice on the outside.  If you weren't here on a mission, you might stop and gawk.  Unfortunately, duty calls...",0);
		bmessage = run_dialog(1);
		set_flag(41,0,3);
	}
break;

beginstate 13;

	if(is_combat() == 1){
		block_entry(1);
		end();
	}

	if(get_flag(41,0) < 5){
		reset_dialog();
		add_dialog_str(0,"You stare out into the open.  What you see, were it not for your enchantment, would be outright frightening.",0);
		add_dialog_str(1,"There is a large number of elite Sud Canopy Warriors standing before you with swords bared and shields raised.  Standing on two large platforms before gigantic statues are elite archers.",0);
		add_dialog_str(2,"Then, looking at the statues, it strikes you:  The statues are of Emery J Bishop!  How could they know what he looks like, and what loyalty do they owe to him?",0);
		add_dialog_str(3,"You don't have much time to ponder this, though, as three powerful-looking figures standing behind the bulwark of soldiers seem intent on dispensing with you.",0);
		add_dialog_choice(0,"Oh no...");
		bmessage = run_dialog(1);

		if(get_flag(75,0) == 0){
			talk = 14;
		}
		else{
			talk = get_flag(75,0);
		}

		set_total_visibility(1);
		force_view_center(32,37);
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"Damnation.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		if(party_size() > 1)
			text_bubble_on_char(26,"It's the Specialists.");
		if(party_size() == 1)
			text_bubble_on_char(26,"It's the Specialist.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(63,"Miraa, should I");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		text_bubble_on_char(63,"dispose of them?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		text_bubble_on_char(62,"Not necessary.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(62,"");
		text_bubble_on_char(62,"They don't look");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(62,"");
		text_bubble_on_char(62,"particularly strong.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(62,"");
		text_bubble_on_char(26,"Silva.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"Silence yourself.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(62,"Mistress Miraa?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(62,"");
		text_bubble_on_char(26,"I want you to");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"deal with their leader.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"Kill General Kampf.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(62,"No problem.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(62,"");
		erase_char(62);
		put_boom_on_space(31,37,2,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		text_bubble_on_char(26,"And now...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"To deal with THEM.");
		force_instant_terrain_redraw();
		pause(talk);

		set_character_pose(26,1);
		put_sparkles_on_char(26,3,6);
		force_instant_terrain_redraw();
		run_animation_sound(60);
		pause(5);

		force_view_center(32,29);
		force_instant_terrain_redraw();
		pause(5);

		treex = 30;
		while(treex <= 34){
			set_terrain(treex,28,149);
			put_sparkles_on_space(treex,28,3,6);
			treex = (treex + 1);
		}

		force_instant_terrain_redraw();
		run_animation_sound(58);
		pause(5);

		treex = 30;
		while(treex <= 34){
			set_terrain(treex,28,147);
			put_sparkles_on_space(treex,28,3,6);
			treex = (treex + 1);
		}

		force_instant_terrain_redraw();
		run_animation_sound(58);
		pause(5);

		set_character_pose(26,0);
		set_total_visibility(0);
	force_view_center(char_loc_x(leadchar),char_loc_y(leadchar));
		force_instant_terrain_redraw();

		message_dialog("Blast- your path has been blocked by trees!    The one who was called Silva was told to kill General Kampf.  You must protect him, so that he can lead the troops!","Furthermore, you feel your invulnerability wearing off.  This is bad news.");
		wiz = 55;
		while(wiz < 61){
			set_attitude(wiz,10);
			wiz = (wiz + 1);
		}
		invulnpcs = 0;
		while(invulnpcs < 4){
			if(char_ok(invulnpcs) == TRUE){
while(get_char_status(invulnpcs,4) <= 1){
	set_char_status(invulnpcs,4,-1,1,0);
}
			}
		invulnpcs = (invulnpcs + 1);
		}

		set_flag(41,0,5);
		block_entry(1);
	}
break;

beginstate 14;

	if(get_flag(41,0) == 5){
		message_dialog("You have to protect General Kampf!","He's to the northwest of here, and you don't have time to take any detours in any other directions.");
		block_entry(1);
	}

break;

beginstate 15;

	if(get_flag(41,0) == 5){

		pcs = 0;
		while(pcs <= 3){
			set_char_status(pcs,29,-250,1,0);
			pcs = (pcs + 1);
		}

		if(get_flag(75,0) == 0){
			talk = 14;
		}
		else{
			talk = get_flag(75,0);
		}

		force_view_center(26,8);
		march_party(29,9);
		force_instant_terrain_redraw();
		pause(5);

		march_party(28,8);
		force_instant_terrain_redraw();
		pause(5);

		march_party(27,7);
		force_instant_terrain_redraw();
		pause(5);

		march_party(26,7);
		force_instant_terrain_redraw();
		pause(5);

		if(party_size() > 1)
			text_bubble_on_char(34,"Specialists!");
		if(party_size() == 1)
			text_bubble_on_char(34,"Specialist!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(34,"");
		text_bubble_on_char(34,"Why aren't you");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(34,"");
		text_bubble_on_char(34,"attacking the enemy?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(34,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"We had problems.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"A gal named Miraa");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"blocked our path");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"with trees.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Plus, she removed");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"your enchantment.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"But even worse,");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"she sent a general");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"to kill you!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(34,"...I see.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(34,"");
		set_terrain(21,9,144);
		put_sparkles_on_space(21,9,3,6);
		force_instant_terrain_redraw();
		run_animation_sound(58);
		pause(5);

		activate_hidden_group(7);
		relocate_character(64,21,9);
		force_instant_terrain_redraw();
		pause(5);

		relocate_character(64,22,9);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(64,"No, General Kampf,");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"You don't see.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		relocate_character(34,24,6);
		set_character_facing(34,6);
		set_character_pose(34,2);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(34,"Sud Canopy scum!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(34,"");
		text_bubble_on_char(34,"I will kill you!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(34,"");
		force_instant_terrain_redraw();
		pause(5);

		erase_char(34);
		set_terrain(24,6,154);
		put_jagged_zap(22,9,24,6,3);
		put_sparkles_on_space(24,6,3,6);
		force_instant_terrain_redraw();
		run_animation_sound(43);
		pause(5);

		set_character_pose(64,0);
		text_bubble_on_char(64,"Too easy.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"And now...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"I will kill");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"Leader's beloved");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		if(party_size() > 1)
			text_bubble_on_char(64,"Specialists!");
		if(party_size() == 1)
			text_bubble_on_char(64,"Specialist!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"Die!");
		set_character_pose(64,1);
		ranpc = random_party_member();
	put_jagged_zap(22,9,char_loc_x(ranpc),char_loc_y(ranpc),3);
	put_sparkles_on_space(char_loc_x(ranpc),char_loc_y(ranpc),3,6);
		force_instant_terrain_redraw();
		run_animation_sound(68);
		pause(talk);

		text_bubble_on_char(64,"");
		set_character_pose(64,0);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(64,"What?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(ranpc,"Nice try.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(64,"But...!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(ranpc,"But nothing.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(64,"Silence!");
		set_character_pose(64,1);
		ranpc = random_party_member();
	put_jagged_zap(22,9,char_loc_x(ranpc),char_loc_y(ranpc),3);
	put_sparkles_on_space(char_loc_x(ranpc),char_loc_y(ranpc),3,6);
		force_instant_terrain_redraw();
		run_animation_sound(68);
		pause(talk);

		text_bubble_on_char(64,"");
		set_character_pose(64,0);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(ranpc,"Give it up.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(64,"Never!");
		force_instant_terrain_redraw();
		pause((talk / 2));

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"Eat this!");
		set_character_pose(64,1);
		pcs = 0;
		while(pcs < 4){
			if(char_ok(pcs) == TRUE){
				put_effect_on_char(pcs,13,4,1);
				change_char_health(pcs,(get_health(pcs) * -1));
			}
			pcs = (pcs + 1);
		}
		force_instant_terrain_redraw();
		run_animation_sound(17);
		pause(talk);

		message_dialog("Suddenly, you are blasted by a wave of searing acid that rends your skin and clothes.  You are totally flayed and on your last breath.","Is this how you will die?");

		text_bubble_on_char(64,"");
		set_character_pose(64,0);
		activate_hidden_group(10);
		relocate_character(81,33,6);
		force_instant_terrain_redraw();
		pause(5);

		relocate_character(81,32,6);
		force_instant_terrain_redraw();
		pause(5);

		relocate_character(81,31,6);
		force_instant_terrain_redraw();
		pause(5);

		relocate_character(81,30,6);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"General Silva!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(64,"Moerder, you bitch!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(81,"Rotten-crotch cooze,");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(81,"and totally arrogant.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(81,"Like always.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(64,"Whores like you");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"Shouldn't wear uniforms.");
		force_instant_terrain_redraw();
		pause(talk + 4);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"Back off, or I--");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"YAAH!");
		text_bubble_on_char(81,"Dirty slut!");
		set_character_pose(81,1);
		put_straight_zap(30,6,22,9,5);
		put_boom_on_char(64,6,0);
		force_instant_terrain_redraw();
		run_animation_sound(53);
		pause(talk + 4);

		text_bubble_on_char(64,"");
		text_bubble_on_char(81,"");
		set_character_pose(81,2);
		relocate_character(81,29,6);
		force_instant_terrain_redraw();
		pause((talk / 5));

		relocate_character(81,28,7);
		force_instant_terrain_redraw();
		pause((talk / 5));

		relocate_character(81,27,8);
		force_instant_terrain_redraw();
		pause((talk / 5));

		relocate_character(81,26,9);
		force_instant_terrain_redraw();
		pause((talk / 5));

		relocate_character(81,25,9);
		force_instant_terrain_redraw();
		pause((talk / 5));

		relocate_character(81,24,9);
		force_instant_terrain_redraw();
		pause((talk / 5));

		relocate_character(81,23,9);
		force_instant_terrain_redraw();
		pause((talk / 5));

		set_character_pose(81,1);
		put_effect_on_char(64,12,1,2);
		force_instant_terrain_redraw();
		run_animation_sound(69);
		pause(5);

		set_character_pose(81,0);
		set_character_pose(64,1);
		put_effect_on_char(81,13,4,1);
		force_instant_terrain_redraw();
		run_animation_sound(17);
		pause(5);

		set_character_pose(64,0);
		text_bubble_on_char(81,"*cough*");
		force_instant_terrain_redraw();
		play_sound(3);
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(64,"Does it hurt?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(81,"Lousy beanflicker...");
		force_instant_terrain_redraw();
		pause(talk + 2);

		text_bubble_on_char(81,"");
		text_bubble_on_char(64,"Any last words?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(81,"Why, yes...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		set_total_visibility(1);
		force_view_center(23,9);
		force_instant_terrain_redraw();
		pause(5);
		set_character_pose(81,2);
		text_bubble_on_char(81,"NOTANGRIFF!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		set_height(23,9,8);
		set_height(22,9,8);
		force_instant_terrain_redraw();
		play_sound(51);
		play_sound(48);
		pause((talk / 5));

		text_bubble_on_char(81,"Schnellangriff!");
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"");
		put_effect_on_char(81,10,4,0);
		run_animation_sound(12);
		pause(3);

		set_character_pose(81,1);
		put_boom_on_space(22,9,4,0);
		force_instant_terrain_redraw();
		run_animation_sound(54);
		pause(3);

		text_bubble_on_char(81,"Obskurangriff!");
		set_character_pose(81,2);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"");
		put_effect_on_char(81,8,4,0);
		run_animation_sound(12);
		pause(3);

		set_character_pose(81,1);
		put_boom_on_space(22,9,7,0);
		force_instant_terrain_redraw();
		run_animation_sound(54);
		pause(3);

		text_bubble_on_char(81,"Magieangriff!");
		set_character_pose(81,2);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"");
		put_effect_on_char(81,2,4,0);
		run_animation_sound(12);
		pause(3);

		set_character_pose(81,1);
		put_boom_on_space(22,9,6,0);
		force_instant_terrain_redraw();
		run_animation_sound(54);
		pause(3);

		text_bubble_on_char(81,"Todesangriff!");
		set_character_pose(81,2);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"");
		put_effect_on_char(81,5,4,0);
		run_animation_sound(12);
		pause(3);

		set_character_pose(81,1);
		put_boom_on_space(22,9,3,0);
		force_instant_terrain_redraw();
		run_animation_sound(54);
		pause(3);

		set_character_pose(81,0);
		set_total_visibility(0);
		set_height(22,9,5);
		set_height(23,9,5);
	force_view_center(char_loc_x(leadchar),char_loc_y(leadchar));
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(64,"");
		text_bubble_on_char(64,"Y-you...  BITCH!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(64,"");
		text_bubble_on_char(81,"Go ahead.  Flee.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		erase_char(64);
		put_boom_on_space(22,9,2,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		set_character_facing(81,6);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"");
		text_bubble_on_char(81,"Take these.");
		force_instant_terrain_redraw();
		pause(talk);

		move_item_on_spot(4,6,24,9);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(81,"");
		text_bubble_on_char(81,"I'm going to");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(81,"hunt Silva down.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		text_bubble_on_char(81,"Best of luck.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(81,"");
		erase_char(81);
		put_boom_on_space(23,9,2,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Well.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"What now?");
		force_instant_terrain_redraw();
		pause(talk);

		set_total_visibility(1);
		force_view_center(49,16);
		activate_hidden_group(11);
		force_instant_terrain_redraw();
		pause(5);

		rcty = 7;
		while(rcty <= 13){
			relocate_character(61,49,rcty);
			force_instant_terrain_redraw();
			pause(5);
			rcty = (rcty + 1);
		}

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(61,"Time to demonstrate");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(61,"");
		text_bubble_on_char(61,"the ambiguity of");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(61,"");
		text_bubble_on_char(61,"fortress entrances.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(61,"");
		set_character_pose(61,2);
		force_instant_terrain_redraw();
		pause(5);

		set_character_pose(61,1);
		rcty = 16;
		while(rcty <= 23){
			rctx = 48;
			while(rctx <= 50){
				put_boom_on_space(rctx,rcty,0,0);
				set_height(rctx,rcty,5);
				set_terrain(rctx,rcty,0);
				set_floor(rctx,rcty,89);

				rctx = (rctx + 1);
			}
			force_instant_terrain_redraw();
			run_animation_sound(152);

			rcty = (rcty + 1);
		}

		set_character_pose(61,2);
		force_instant_terrain_redraw();
		pause(5);

		rcty = 14;
		while(rcty <= 31){
			relocate_character(61,49,rcty);
			force_instant_terrain_redraw();
			pause((talk / 7));

			rcty = (rcty + 1);
		}

		erase_char(61);

		set_total_visibility(0);
	force_view_center(char_loc_x(leadchar),char_loc_y(leadchar));
		set_terrain(42,13,145);
		set_terrain(43,13,146);
		set_flag(41,0,6);
		force_instant_terrain_redraw();
		message_dialog("You hear a loud explosion to the east.  What could have caused it?","Perhaps this might be your secret entrance into the fortress.");

		block_entry(1);
	}
break;

beginstate 16;

	if(get_flag(41,0) == 6){

		if(get_flag(75,0) == 0){
			talk = 14;
		}
		else{
			talk = get_flag(75,0);
		}

		set_total_visibility(1);
		force_view_center(32,38);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(26,"Damn it all!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(63,"Milady?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		text_bubble_on_char(26,"Silva was beaten.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(63,"How...?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		text_bubble_on_char(26,"General Moerder.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"Plus, it gets worse.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"We've been breached.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		if(party_size() > 1)
			text_bubble_on_char(26,"The Specialists");
		if(party_size() == 1)
			text_bubble_on_char(26,"The Specialist");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		if(party_size() > 1)
		text_bubble_on_char(26,"are in our walls.");
		if(party_size() == 1)
		text_bubble_on_char(26,"is in our walls.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"And so is...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(63,"Say no more.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		text_bubble_on_char(63,"I will take care");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		if(party_size() > 1)
			text_bubble_on_char(63,"of the Specialists.");
		if(party_size() == 1)
			text_bubble_on_char(63,"of the Specialist.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(63,"");
		text_bubble_on_char(26,"Go ahead.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"Try your luck...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		erase_char(63);
		put_effect_on_space(33,37,4,4,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		text_bubble_on_char(26,"It's over...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"We're doomed.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		set_total_visibility(0);
	force_view_center(char_loc_x(leadchar),char_loc_y(leadchar));

		set_flag(41,0,7);
		block_entry(1);
	}

	if(get_flag(41,0) >= 8 && get_flag(41,0) < 20){
		message_dialog("You have to slay General Shroud, you cannot flee!","");
		block_entry(1);
	}

break;

beginstate 17;

	if(get_flag(41,0) < 8){

		if(is_combat() == 1){
			block_entry(1);
			end();
		}

		if(get_flag(75,0) == 0){
			talk = 14;
		}
		else{
			talk = get_flag(75,0);
		}

		activate_hidden_group(1);

		relocate_character(27,47,30);
		force_instant_terrain_redraw();
		if(party_can_see_loc(47,30) == TRUE){
			pause(5);
		}

		relocate_character(27,48,30);
		force_instant_terrain_redraw();
		pause(5);

		relocate_character(27,49,30);
		force_instant_terrain_redraw();
		pause(5);

		set_character_facing(27,0);
		relocate_character(27,49,29);
		force_instant_terrain_redraw();
		pause(5);

		rctx = 48;
		while(rctx <= 50){
			set_terrain(rctx,30,26);
			rctx = (rctx + 1);
		}
		force_instant_terrain_redraw();
		play_sound(99);
		pause(5);

		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Who are you?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(27,"General Shroud.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(27,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Give it up.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"We slew Zauberer.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"We slew Trahison.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Senseless fights...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(27,"Silence~!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(27,"");
		text_bubble_on_char(27,"Enough of this.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(27,"");
		text_bubble_on_char(27,"It is time...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(27,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"For us to die?");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(27,"...");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(27,"");
		text_bubble_on_char(ranpc,"How original.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(ranpc,"Let's do it.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		pcs = 0;
		while(pcs < 4){
			set_flag(0,(5 + pcs),get_spell_level(pcs,0,0));
			change_spell_level(pcs,0,0,-100);

			set_flag(1,(5 + pcs),get_spell_level(pcs,0,3));
			change_spell_level(pcs,0,3,-100);

			set_flag(2,(5 + pcs),get_spell_level(pcs,0,6));
			change_spell_level(pcs,0,6,-100);

			set_flag(3,(5 + pcs),get_spell_level(pcs,0,16));
			change_spell_level(pcs,0,16,-100);

			set_flag(4,(5 + pcs),get_spell_level(pcs,1,5));
			change_spell_level(pcs,1,5,-100);

			set_flag(5,(5 + pcs),get_spell_level(pcs,1,13));
			change_spell_level(pcs,1,13,-100);

			set_flag(7,(5 + pcs),get_spell_level(pcs,1,17));
			change_spell_level(pcs,1,17,-100);

			pcs = (pcs + 1);
		}

		rctx = 46;
		while(rctx < 53){
			set_floor(rctx,27,99);
			rctx = (rctx + 1);
		}
		rctx = 48;
		while(rctx < 51){
			set_floor(rctx,27,133);
			rctx = (rctx + 1);
		}

		set_character_pose(27,1);
		pcs = 0;
		while(pcs < 4){
			if(char_ok(pcs) == TRUE){
	put_sparkles_on_char(pcs,9,4);
	put_straight_zap(49,29,char_loc_x(pcs),char_loc_y(pcs),4);
			}
			pcs = (pcs + 1);
		}
		force_instant_terrain_redraw();
		run_animation_sound(65);
		pause(5);
		message_dialog("Suddenly, Shroud strikes you with a beam that strikes you in the forehead.  If only you had seen it coming!  Vertigo spreads instantaneously throughout your brain, leaving you feeling inept.","[The majority of your offensive spells have been disabled.]");

		erase_char(27);
		activate_hidden_group(2);
		relocate_character(51,49,29);
		put_effect_on_space(49,29,4,4,0);
		force_instant_terrain_redraw();
		run_animation_sound(165);
		pause(5);

		message_dialog("Suddenly, General Shroud turns blue.  Whatever it means is likely bad news for you.","Time to show him what-for.");
		block_entry(1);
		set_flag(41,0,8);
	}
break;

beginstate 18;

	if(get_flag(41,0) < 21){
		message_dialog("The soldiers here stare at you nervously as you approach.  Indeed, while they do not appear as if they will attack you, they appear ready to do so at a moment's notice.","Miraa stands patiently, waiting for you to approach.");

		if(get_flag(75,0) == 0){
			talk = 14;
		}
		else{
			talk = get_flag(75,0);
		}

		set_total_visibility(1);
		activate_hidden_group(9);
		leadchar = 0;
		while (char_ok(leadchar) == 0) {
			leadchar = leadchar + 1;
		}
		force_view_center(32,38);
		relocate_character(leadchar,38,33);
		force_instant_terrain_redraw();
		pause(5);

		march_party(37,33);
		force_instant_terrain_redraw();
		pause(5);

		march_party(36,33);
		force_instant_terrain_redraw();
		pause(5);

		march_party(35,33);
		force_instant_terrain_redraw();
		pause(5);

		march_party(34,32);
		force_instant_terrain_redraw();
		pause(5);

		march_party(33,32);
		force_instant_terrain_redraw();
		pause(5);

		march_party(32,32);
		force_instant_terrain_redraw();
		pause(5);

		march_party(31,32);
		force_instant_terrain_redraw();
		pause(5);

		set_character_facing(1000,4);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(26,"Greetings.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Miraa, I presume.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(26,"Correct you are.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"I summoned you");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"to fight.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"Give it up.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		text_bubble_on_char(26,"No.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"You must not be");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"allowed to live.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(29,"Foolish woman.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		set_character_facing(26,4);
		text_bubble_on_char(26,"Come down from there.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		set_character_facing(29,0);
		relocate_character(29,32,41);
		put_effect_on_space(32,41,1,4,0);
		put_effect_on_space(35,44,1,4,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		set_character_pose(29,1);
		bmen = 35;
		while(bmen <= 50){
			if(char_ok(bmen) == TRUE){
				put_effect_on_char(bmen,3,3,2);
				erase_char(bmen);
			}
			bmen = (bmen + 1);
		}
		force_instant_terrain_redraw();
		run_animation_sound(152);
		play_sound(152);
		pause(5);

		set_character_pose(29,0);
		force_instant_terrain_redraw();
		pause(5);

		text_bubble_on_char(26,"You must be");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(26,"Spiegelbrecher.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(26,"");
		text_bubble_on_char(29,"My reputation");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		text_bubble_on_char(29,"Precedes me.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		if(party_size() > 1)
			text_bubble_on_char(29,"Specialists,");
		if(party_size() == 1)
			text_bubble_on_char(29,"Specialist,");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		text_bubble_on_char(29,"stay out of");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		text_bubble_on_char(29,"this fight.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		ranpc = random_party_member();
		text_bubble_on_char(ranpc,"...very well.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(ranpc,"");
		set_character_pose(26,2);
		set_character_pose(29,1);
		force_instant_terrain_redraw();
		play_sound(18);
		pause(3);

		set_character_pose(26,1);
		text_bubble_on_char(26,"Glaube!");
		put_effect_on_char(29,6,8,2);
		force_instant_terrain_redraw();
		run_animation_sound(90);
		pause(5);

		text_bubble_on_char(26,"");
		set_character_pose(26,2);
		force_instant_terrain_redraw();
		pause(3);

		set_character_pose(26,1);
		text_bubble_on_char(26,"Seele!");
		put_boom_on_char(29,7,0);
		put_effect_on_char(29,4,4,0);
		force_instant_terrain_redraw();
		run_animation_sound(112);
		pause(5);

		text_bubble_on_char(26,"");
		set_character_pose(26,2);
		force_instant_terrain_redraw();
		pause(3);

		text_bubble_on_char(29,"Cute.");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		text_bubble_on_char(29,"Now die, you!");
		force_instant_terrain_redraw();
		pause(talk);

		text_bubble_on_char(29,"");
		put_sparkles_on_char(29,2,4);
		put_sparkles_on_char(29,10,4);
		force_instant_terrain_redraw();
		run_animation_sound(12);
		pause(5);

		set_character_pose(29,1);
		rctx = 31;
		while(rctx <= 33){
			rcty = 37;
			while(rcty <= 39){
				set_terrain(rctx,rcty,0);
				set_floor(rctx,rcty,89);

				rcty = (rcty + 1);
			}
			rctx = (rctx + 1);
		}
		put_straight_zap(32,41,32,38,0);

		rcty = 38;
		while(rcty <= 40){
			put_boom_on_space(32,rcty,0,0);
			put_boom_on_space(32,rcty,0,0);
			put_boom_on_space(32,rcty,1,0);
			put_boom_on_space(32,rcty,1,0);

			rcty = (rcty + 1);
		}
		force_instant_terrain_redraw();
		run_animation_sound(152);
		pause(5);

		message_dialog("Miraa is struck hard by the blow.  The sound of her bones being jarred violently out of alignment and tearing apart her flesh like shrapnel is barely audible above the explosion.","Her skin is both shredded and burnt.  Blood flows out of her mouth like water out of a fountain.  She struggles to say her final words, but the blood in her lungs has already begun drowning her.");

		kill_char(26,2,0);

		reset_dialog();
		add_dialog_str(0,"Spiegelbrecher turns around frantically.  _What was that?_  He seems to be panicking.  You have no idea what he's talking about, however.",0);
		if(party_size() > 1)
			add_dialog_str(1,"_You!  Specialists!  Did you do this?_  You shake your heads in confusion.  Wasn't he the one who fired the beam?",0);
		if(party_size() == 1)
			add_dialog_str(1,"_You!  Specialist!  Did you do this?_  You shake your heads in confusion.  Wasn't he the one who fired the beam?",0);
		add_dialog_str(2,"_I didn't put that much power in it...  I didn't!  Something's not right._  Suddenly, you see a fiery glow come out of his helmet as he turns his head towards you.  _You have it.  The stone, you have it!_",0);
		add_dialog_choice(0,"Produce the stone.");
		bmessage = run_dialog(1);

		force_view_center(31,33);
		set_character_pose(29,0);
		set_terrain(31,33,464);
		force_instant_terrain_redraw();
		pause(5);

		put_effect_on_space(31,33,9,1,2);
		put_sparkles_on_space(31,33,2,4);
		run_animation_sound(28);
		pause(5);

		message_dialog("Spiegelbrecher stares at the stone.  The flames around his eyes begin to envelope the entirety of his head, writhing around the metal of his helm.","He turns to his side and readies his sword.");

		set_character_facing(29,2);
		set_character_pose(29,2);
		force_instant_terrain_redraw();
		pause(5);

		set_character_pose(29,1);
		put_boom_on_space(29,38,2,0);
		put_straight_zap(32,41,29,38,6);
		force_instant_terrain_redraw();
		run_animation_sound(54);
		pause(5);

		activate_hidden_group(8);
		set_character_pose(29,0);
		put_sparkles_on_space(29,38,0,4);
		force_instant_terrain_redraw();
		run_animation_sound(62);
		pause(5);

		reset_dialog();
		add_dialog_str(0,"Emery!  Was he watching this entire time?  He claps his hands while Spiegelbrecher's attack stance slowly disintegrates into convulsions.",0);
		add_dialog_str(1,"_Good job, Spiegelbrecher.  You've done your job well._  Spiegelbrecher slowly turns his head and gasps.",0);
		add_dialog_str(2,"_You gave them the stone!  It was you!  My name isn't Spiegelbrecher; I'm not your tool!_",0);
		add_dialog_str(3,"Emery shakes his head and smiles wickedly.  _I am the sun.  Below the canopy that is Canopy, I cannot be seen, yet my glow illuminates the world and protects it from night.  I am the--_",0);
		add_dialog_str(4,"_ENOUGH!  I've had enough of your pretentious, egotistical trash!  I've had enough of your trite metaphors; I've had enough of your illusions and lies!_  Spiegelbrecher begins panting out of rage.",5);
		add_dialog_str(5,"Has Spiegelbrecher gone mad?  It certainly looks like this is the case.",0);
		add_dialog_choice(0,"...!");
		bmessage = run_dialog(1);

		set_terrain(31,33,0);
		erase_char(29);
		put_effect_on_space(32,41,1,4,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		message_dialog("Emery turns his head to you.  _Chase after him.  Here, I'll allow North Canopy's army through..._","");

		set_character_facing(28,0);
		force_instant_terrain_redraw();
		pause(5);

		set_character_pose(28,1);
		force_instant_terrain_redraw();
		play_sound(90);
		pause(5);

		force_view_center(32,28);
		force_instant_terrain_redraw();
		pause(5);

		treex = 30;
		while(treex <= 34){
			set_terrain(treex,28,149);
			put_sparkles_on_space(treex,28,3,6);
			treex = (treex + 1);
		}

		force_instant_terrain_redraw();
		run_animation_sound(58);
		pause(5);

		treex = 30;
		while(treex <= 34){
			set_terrain(treex,28,0);
			put_sparkles_on_space(treex,28,3,6);
			treex = (treex + 1);
		}

		force_instant_terrain_redraw();
		run_animation_sound(58);
		pause(5);

		force_view_center(32,18);
		force_instant_terrain_redraw();
		pause(5);

		put_boom_on_space(28,17,7,0);
		put_boom_on_space(28,18,7,0);
		put_boom_on_space(28,19,7,0);
		put_boom_on_space(36,17,7,0);
		put_boom_on_space(36,18,7,0);
		put_boom_on_space(36,19,7,0);
		rcty = 55;
		while(rcty <= 60){
			erase_char(rcty);

			rcty = (rcty + 1);
		}
		force_instant_terrain_redraw();
		run_animation_sound(102);
		pause(5);

		set_character_pose(28,0);
		force_view_center(32,38);
		force_instant_terrain_redraw();
		pause(5);

		if(party_size() > 1)
			message_dialog("Emery nods.  _Move out, Specialists, lest you never get another chance again._","He sighs.  _I'll see what I can do about Spiegelbrecher.  Meanwhile, just try to watch out for him.  And keep the Obispopiedra._");
		if(party_size() == 1)
			message_dialog("Emery nods.  _Move out, Specialist, lest you never get another chance again._","He sighs.  _I'll see what I can do about Spiegelbrecher.  Meanwhile, just try to watch out for him.  And keep the Obispopiedra._");

		erase_char(28);
		put_boom_on_space(30,41,2,0);
		force_instant_terrain_redraw();
		run_animation_sound(10);
		pause(5);

		rcty = 33;
		while(rcty <= 50){
			march_party(32,rcty);
			force_view_center(32,rcty);
			force_instant_terrain_redraw();
			pause(3);

			rcty = (rcty + 1);
		}

		block_entry(1);
		set_total_visibility(0);
		set_flag(41,0,21);

	}

break;

beginstate 19;
	block_entry(1);
break;