// 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; }
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; }
// 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(); } }