// TOWN SCRIPT
//    Town 0: Pergamos - Part 1

// This is the special encounter script for this town.
// The states INIT_STATE, EXIT_STATE, and START_STATE have
// meanings that are described in the documentation. States you write
// yourself should be numbered from 10-100.

// flags:
// 0, 2 = screen display value.
// 0, 3 = lever add value (for screen value).
// 0, 5 = horse pen opened.
// 0, 6 = conversation flag.

begintownscript;

variables;

short choice, sval, lvrval, y;

body;

beginstate INIT_STATE;
	turn_off_training(1);
	set_crime_tolerance(3);

	set_name(9, "Father Antipas");
	set_char_dialogue_pic(9, 1961, 0);
	set_name(14, "Wendy");
	set_char_dialogue_pic(14, 521, 0);
	set_name(15, "Brian");
	set_char_dialogue_pic(15, 1945, 0);
	set_name(16, "Martha");
	set_char_dialogue_pic(16, 1950, 0);
	set_name(21, "Ben");
	set_char_dialogue_pic(21, 1955, 0);
	set_name(22, "Jeri");
	set_char_dialogue_pic(22, 532, 0);
	set_name(23, "Helga");
	set_char_dialogue_pic(23, 1951, 0);
	// no conversation chars
	set_name(24, "Townsman");
	set_name(29, "Townsman");
break;

beginstate EXIT_STATE;
	// Always called when the town is left.
	set_flag(0, 4, 1);
break;

beginstate START_STATE;
	if (get_ran(1, 0, 100) < 5) {
		if (get_ran(1, 0, 100) < 50) {
			text_bubble_on_char(10, "Don't steal.");
		}
		else {
			text_bubble_on_char(10, "Obey the laws.");
		}
	}
	if (get_ran(1, 0, 100) < 5) {
		if (get_ran(1, 0, 100) < 50) {
			text_bubble_on_char(11, "No loitering allowed.");
		}
		else {
			text_bubble_on_char(11, "Keep moving.");
		}
	}
	if (get_ran(1, 0, 100) < 5) {
		if (get_ran(1, 0, 100) < 50) {
			text_bubble_on_char(12, "We're watching you.");
		}
		else {
			text_bubble_on_char(12, "Don't steal.");
		}
	}
	if (get_ran(1, 0, 100) < 5) {
		if (get_ran(1, 0, 100) < 50) {
			text_bubble_on_char(13, "Obey the laws.");
		}
		else {
			text_bubble_on_char(13, "We see all you do.");
		}
	}
	if (get_ran(1, 0, 100) < 5) {
		if (get_ran(1, 0, 100) < 50) {
			text_bubble_on_char(20, "Purrrrr");
		}
		else {
			text_bubble_on_char(20, "Meow");
		}
	}
	if (get_ran(1, 0, 100) < 4) {
		text_bubble_on_char(21, "Mmmm, ice cream.");
	}
	if (get_ran(1, 0, 100) < 4) {
		text_bubble_on_char(22, "Mmmm, toppings.");
	}

	if (get_flag(0, 1) == 0) {
		set_flag(0, 1, 1);
		reset_dialog();
		add_dialog_str(0, "You come to consciousness in a dirty alleyway", 0);
		add_dialog_str(1, "You shiver in the chill, aware of your nakedness", 0);
		add_dialog_str(2, "At the head of the alley, someone has carelessly left a basket of washing.", 0);
		add_dialog_choice(0, "Ok");
		choice = run_dialog(1);
	}
	if ((get_flag(50, 9) == 0) && (has_special_item(1) > 0)) {
		set_flag(50, 9, 1);
		set_state_continue(11);
	}
	if (get_flag(50, 9) > 0) {
		erase_char(17);
	}
break;

beginstate 10;
	if (get_flag(0, 0) == 0) {
		set_flag(0, 0, 1);
		message_dialog("The city entrance gates seem to be locked up tight.", "This is probably not the way out.");
	}
break;

beginstate 11;
	// get hint to where to find number needed
	message_dialog("You feel yourself being moved.", "");
	y = 34;
	if (party_size() == 2) {
		y = 33;
	}
	else if (party_size() == 1) {
		y = 32;
	}
	teleport_party(36, y, 1);
	force_view_center(36, 32);
	set_character_facing(1000, 2);
	force_instant_terrain_redraw();
	pause(5);

	message_dialog("A man sidles up to you.", "");
	spawn_creature(17);
	relocate_character(17, 35, 32);
	force_instant_terrain_redraw();
	pause(5);

	text_bubble_on_char(17, "Pzzzst.  Want to know a secret.");
	force_instant_terrain_redraw();
	pause(15);

	text_bubble_on_char(17, "");
	text_bubble_on_char(17, "You need to see the garbage man.");
	force_instant_terrain_redraw();
	pause(15);

	text_bubble_on_char(17, "");
	text_bubble_on_char(17, "He'll have the number you need.");
	force_instant_terrain_redraw();
	pause(20);
	text_bubble_on_char(17, "");
	force_instant_terrain_redraw();

	message_dialog("He then disappears.", "");
break;

beginstate 12;
	block_entry(1);
	move_to_new_town(1, 61, 61);
break;

beginstate 13;
	teleport_party(6, 45, 1);
break;

beginstate 14;
	block_entry(1);
	y = char_loc_y(0);
	move_to_new_town(2, 3, y); // mid = 15
break;

beginstate 15;
	block_entry(1);
	y = char_loc_y(0);
	move_to_new_town(2, 3, y); // mid = 40
break;

beginstate 16;
	sval = get_flag(0, 2);
	lvrval = get_flag(0, 3);
	set_flag(0, 2, sval + lvrval);
	print_big_str("The value in the center of screen changes to: (", get_flag(0, 2), ").");
	if (get_flag(0, 2) == get_flag(50, 3)) {
		// matched magic number
		if (get_flag(50, 4) == 0) {
			set_flag(50, 4, 1);
			award_party_xp(500, 25);
			message_dialog("You hear a voice in your head saying:", "_The door to home is now open._");
		}
	}
break;

beginstate 17;
	// print_big_str("Magic number = ", get_flag(50, 3), "");
	// reset value generated by levers
	if (get_flag(0, 4) > 0) {
		set_flag(0, 4, 0);
		set_flag(0, 2, 0);
		set_flag(0, 3, 0);
	}
break;
