Beispiel #1
0
// seg000:0EA8
// returns 1 if level is restarted, 0 otherwise
int __pascal far play_kid_frame() {
	loadkid_and_opp();
	load_fram_det_col();
	check_killed_shadow();
	play_kid();
	if (upside_down && Char.alive >= 0) {
		upside_down = 0;
		need_redraw_because_flipped = 1;
	}
	if (is_restart_level) {
		return 1;
	}
	if (Char.room != 0) {
		play_seq();
		fall_accel();
		fall_speed();
		load_frame_to_obj();
		load_fram_det_col();
		set_char_collision();
		bump_into_opponent();
		check_collisions();
		check_bumped();
		check_gate_push();
		check_action();
		check_press();
		check_spike_below();
		if (resurrect_time == 0) {
			check_spiked();
			check_chomped_kid();
		}
		check_knock();
	}
	savekid();
	return 0;
}
Beispiel #2
0
void restore_room_after_quick_load() {
	int temp1 = curr_guard_color;
	int temp2 = next_level;
	reset_level_unused_fields(false);
	load_lev_spr(current_level);
	curr_guard_color = temp1;
	next_level = temp2;

	//need_full_redraw = 1;
	different_room = 1;
	next_room = drawn_room;
	load_room_links();
	//draw_level_first();
	//gen_palace_wall_colors();
	draw_game_frame(); // for falling
	//redraw_screen(1); // for room_L

	hitp_delta = guardhp_delta = 1; // force HP redraw
	draw_hp();
	loadkid_and_opp();
	// Get rid of "press button" message if kid was dead before quickload.
	text_time_total = text_time_remaining = 0;
	//next_sound = current_sound = -1;
	exit_room_timer = 0;
}
Beispiel #3
0
// seg002:0D1A
void __pascal far check_sword_hurting() {
	short kid_frame;
	kid_frame = Kid.frame;
	// frames 217..228: go up on stairs
	if (kid_frame != 0 && (kid_frame < frame_219_exit_stairs_3 || kid_frame >= 229)) {
		loadshad_and_opp();
		check_hurting();
		saveshad_and_opp();
		loadkid_and_opp();
		check_hurting();
		savekid_and_opp();
	}
}