begintownscript;

variables;

	short i,j;

body;

beginstate INIT_STATE;
	if(get_flag(1,11)==2){
		set_terrain(25,34,0);
		set_terrain(37,34,0);
	}
	if(get_flag(1,20)==1){
		set_height(46,13,13);
		set_height(45,13,12);
	}
break;

beginstate EXIT_STATE;
// Always called when the town is left.
break;

beginstate START_STATE;
	if(get_flag(1,16)==1){
		if(get_flag(1,17)==0){
			message_dialog("All around you shades begin to rise up from the depths!", "");
			set_flag(1,17,1);
		}
		if(char_on_loc(40,46) == -1){
			set_height(40,45,9);
			set_floor(40,45,7);
			place_monster(40,45,22,0);
			j= char_on_loc(40,45);
			set_character_facing(j,4);
			i=436;
			while(i>=432){
				set_terrain(40,45,i);
			force_instant_terrain_redraw();
				pause(3);
				i = i - 1;
			}
			relocate_character(j,40,46);
			set_character_facing(j,6);
			force_instant_terrain_redraw();
			pause(1);
			set_floor(40,45,71);
			set_height(40,45,1);
		}
		if(char_on_loc(44,46) == -1){
			set_height(44,45,5);
			set_floor(44,45,7);
			place_monster(44,45,22,0);
			j= char_on_loc(44,45);
			set_character_facing(j,4);
			i=436;
			while(i>=432){
				set_terrain(44,45,i);
				force_instant_terrain_redraw();
				pause(3);
				i = i - 1;
			}
			relocate_character(j,44,46);
			set_character_facing(j,2);
			force_instant_terrain_redraw();
			pause(1);
			set_floor(44,45,71);
			set_height(44,45,1);
		}
	}
break;

beginstate 10;
	move_to_new_town(1,46,38);
break;

beginstate 11;
	i=2;
	while(i<=9){
		set_floor(10,i,71);
		set_terrain(10,i,1);
		set_height(10,i,1);
		i = i + 1;
	}
break;

beginstate 12;
	i=2;
	while(i<=9){
		set_floor(10,i,95);
		set_terrain(10,i,295);
		set_height(10,i,27 + i);
		i = i + 1;
	}
break;

beginstate 13;
	teleport_party(13,10,1);
	set_character_facing(0,4);
break;

beginstate 14;
	teleport_party(1,9,1);
break;

beginstate 15;
	teleport_party(34,1,1);
break;

beginstate 16;
	teleport_party(22,2,1);
break;

beginstate 17;
	i=2;
	while(i<=9){
		set_floor(34,i,71);
		set_terrain(34,i,1);
		set_height(34,i,1);
		i = i + 1;
	}
break;

beginstate 18;
	i=2;
	while(i<=9){
		set_floor(34,i,95);
		set_terrain(34,i,295);
		set_height(34,i,27 + i);
		i = i + 1;
	}
break;

beginstate 19;
	teleport_party(37,10,1);
	set_character_facing(0,4);
break;

beginstate 20;
	teleport_party(25,9,1);
break;

beginstate 21;
	teleport_party(10,13,1);
break;

beginstate 22;
	teleport_party(46,2,1);
break;

beginstate 23;
	i=14;
	while(i<=21){
		set_floor(10,i,71);
		set_terrain(10,i,1);
		set_height(10,i,1);
		i = i + 1;
	}
break;

beginstate 24;
	i=14;
	while(i<=21){
		set_floor(10,i,95);
		set_terrain(10,i,295);
		set_height(10,i,15 + i);
		i = i + 1;
	}
break;

beginstate 25;
	teleport_party(13,22,1);
	set_character_facing(0,4);
break;

beginstate 26;
	teleport_party(1,21,1);
break;

beginstate 27;
	teleport_party(34,13,1);
break;

beginstate 28;
	teleport_party(22,14,1);
break;

beginstate 29;
	i=14;
	while(i<=21){
		set_floor(34,i,71);
		set_terrain(34,i,1);
		set_height(34,i,1);
		i = i + 1;
	}
break;

beginstate 30;
	i=14;
	while(i<=21){
		set_floor(34,i,95);
		set_terrain(34,i,295);
		set_height(34,i,15 + i);
		i = i + 1;
	}
break;

beginstate 31;
	teleport_party(37,22,1);
	set_character_facing(0,4);
break;

beginstate 32;
	teleport_party(25,21,1);
break;

beginstate 33;
	teleport_party(10,25,1);
break;

beginstate 34;
	teleport_party(46,14,1);
break;

beginstate 35;
	i=26;
	while(i<=33){
		set_floor(10,i,71);
		set_terrain(10,i,1);
		set_height(10,i,1);
		i = i + 1;
	}
break;

beginstate 36;
	i=26;
	while(i<=33){
		set_floor(10,i,95);
		set_terrain(10,i,295);
		set_height(10,i,3 + i);
		i = i + 1;
	}
break;

beginstate 37;
	teleport_party(13,34,1);
	set_character_facing(0,4);
break;

beginstate 38;
	teleport_party(1,33,1);
break;

beginstate 39;
	teleport_party(34,25,1);
break;

beginstate 40;
	teleport_party(22,26,1);
break;

beginstate 41;
	i=26;
	while(i<=33){
		set_floor(34,i,71);
		set_terrain(34,i,1);
		set_height(34,i,1);
		i = i + 1;
	}
break;

beginstate 42;
	i=26;
	while(i<=33){
		set_floor(34,i,95);
		set_terrain(34,i,295);
		set_height(34,i,3 + i);
		i = i + 1;
	}
break;

beginstate 43;
	teleport_party(38,34,1);
break;

beginstate 44;
	if(get_flag(1,12)==1){
		message_dialog("You can't ignore your enemy. You have to stand and fight.","");
		block_entry(1);
		end();
	}
	teleport_party(25,33,1);
break;

beginstate 45;
	if(get_flag(1,12)==1){
		message_dialog("You can't ignore your enemy. You have to stand and fight.","");
		block_entry(1);
		end();
	}
	teleport_party(10,37,1);
break;

beginstate 46;
	teleport_party(46,26,1);
break;

beginstate 47;
	i=38;
	while(i<=45){
		set_floor(10,i,71);
		set_terrain(10,i,1);
		set_height(10,i,1);
		i = i + 1;
	}
break;

beginstate 48;
	i=38;
	while(i<=45){
		set_floor(10,i,95);
		set_terrain(10,i,295);
		set_height(10,i,i - 9);
		i = i + 1;
	}
break;

beginstate 49;
	teleport_party(13,46,1);
	set_character_facing(0,4);
break;

beginstate 50;
	teleport_party(1,45,1);
break;

beginstate 51;
	teleport_party(34,37,1);
break;

beginstate 52;
	teleport_party(22,38,1);
break;

beginstate 53;
	i=38;
	while(i<=45){
		set_floor(34,i,71);
		set_terrain(34,i,1);
		set_height(34,i,1);
		i = i + 1;
	}
break;

beginstate 54;
	i=38;
	while(i<=45){
		set_floor(34,i,95);
		set_terrain(34,i,295);
		set_height(34,i,i - 9);
		i = i + 1;
	}
break;

beginstate 55;
	teleport_party(37,46,1);
	set_character_facing(0,4);
break;

beginstate 56;
	teleport_party(25,45,1);
break;

beginstate 57;
	if(get_flag(1,10)==0){
		message_dialog("The feeling of being watched is growing unbearable again. You look around frantically, fearing that you'll see another shade.","But there is nothing around you. Listening closely, though, you hear a whispering sound. It sounds almost like words that you can't make out.");
		set_flag(1,10,1);
	}
break;

beginstate 58;
	if(get_flag(1,11) < 2){
		reset_dialog_preset_options(0);
		if(get_flag(1,11) == 0){
			add_dialog_str(0,"There is a drawing of a shade sketched out in chalk on this wall. It gives you a cold creeping sensation.",0);
			add_dialog_str(1,"You could rub out the drawing if you wanted to.",0);
			set_flag(1,11,1);
		}
		else if(get_flag(1,11) == 1){
			add_dialog_str(0,"You walk past the drawing of a shade. You feel as through it's watching you.",0);
		}
		add_dialog_choice(0,"Leave it alone");
		add_dialog_choice(1,"Erase it");
		i = run_dialog(1);
		if(i == 2){
			message_dialog("You rub out the drawing.","");
			set_flag(1,11,2);
			set_terrain(25,34,0);
			set_terrain(37,34,0);
		}
	}
		
break;

beginstate 59;
	if(get_flag(1,11)<2){
		message_dialog("You suddenly have the bad feeling that something is moving behind you. You spin around in time to see a shade step out of the chalk drawing in on the wall.","");
		set_character_facing(0,2);
		activate_hidden_group(1);
		set_flag(1,11,2);
		set_flag(1,12,1);
		set_terrain(25,34,0);
		set_terrain(37,34,0);
	}
break;

beginstate 60;
	if(get_flag(1,13)==0){
		message_dialog("As you walk down this flight of stairs, an explosion goes off right in front of you!","");
		relocate_character(0,46,6);
		play_sound(49);
		put_boom_on_space(46,6,1,0);
		put_effect_on_space(46,6,1,4,2);
		relocate_character(0,45,6);
		set_character_pose(0,11);
		set_terrain(45,6,432);
		run_animation_sound(152);
		set_terrain(45,6,433);
		set_character_pose(0,12);
		force_instant_terrain_redraw();
		pause(1);
		set_terrain(45,6,434);
		force_instant_terrain_redraw();
		pause(1);
		set_terrain(45,6,435);
		force_instant_terrain_redraw();
		pause(1);
		set_terrain(45,6,436);
		force_instant_terrain_redraw();
		pause(1);
		teleport_party(22,18,1);
		pause(1);
		set_character_pose(0,0);
		message_dialog("Miraculously, you are able you catch yourself on the next flight of stairs down. You pull yourself up and rest for a moment to get over the massive rush of adrenaline.","This place is really unnerving.");
		set_flag(1,13,1);
	}
	else if(get_flag(1,13)==1){
		message_dialog("This is the spot where an explosion knocked you off earlier. You approach warily this time, but nothing unusual happens.","");
		set_flag(1,13,2);
	}
break;

beginstate 61;
	if(get_flag(1,15) == 0){
		message_dialog("You notice something white on the steps and pick it up. It's a piece of chalk. ","It seems like it might be useful. ");
		char_give_item(0,445);
		set_flag(1,15,1);
	}
break;

beginstate 64;
	if(get_flag(1,19)==0){
		message_dialog("In front of you the next section of stairs is in the wrong place. It's too high to reach. Who would possibly build stairs like this?","As you examine the surface of the raised portion closely, you find a tiny slot. Maybe something should fit in it?");
		set_flag(1,19,1);
	}
	if(get_flag(1,20)==0 && char_has_item(0,206)){
		reset_dialog_preset_options(0);
		add_dialog_str(0,"The only object that you have with you that might fit in the slot is the ring. If you stuck it in, though, you can't see any way that you could get it back out.",0);
		add_dialog_choice(0,"Insert the ring into the slot");
		add_dialog_choice(1,"Keep the ring");
		i = run_dialog(1);
		if(i==1){
			take_all_of_item(206);
			message_dialog("You stick the ring into the slot. It falls down inside with a series of clinking noises. Then the stone begins to move.","");
			set_height(46,13,14);
			set_height(45,13,13);
			force_instant_terrain_redraw();
			play_sound(45);
			pause(1);
			set_height(46,13,13);
			set_height(45,13,12);
			force_instant_terrain_redraw();
			play_sound(45);
			pause(1);
			set_flag(1,20,1);
			message_dialog("Well, now you can get through. You hope you won't be wanting that ring for anything else though.","");
		}
		else if(i==2){
			message_dialog("You decide not to risk losing the ring that way.","");
		}
	}
break;

beginstate 65;
	move_to_new_town(3,10,1);
break;