#include maps\mp\zm_buried_sq_ows; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_sidequests; #include maps\mp\zm_buried_sq; ows_targets_start() { n_cur_second = 0; flag_clear("sq_ows_target_missed"); level thread sndsidequestowsmusic(); a_sign_spots = getstructarray("otw_target_spot", "script_noteworthy"); level.targets_hit = 0; while (n_cur_second < 40) { a_spawn_spots = ows_targets_get_cur_spots(n_cur_second); if (isdefined(a_spawn_spots) && a_spawn_spots.size > 0) ows_targets_spawn(a_spawn_spots); wait 1; n_cur_second++; } players = get_players(); if (level.targets_hit < (20 * players.size)) { flag_set("sq_ows_target_missed"); } if (!flag("sq_ows_target_missed")) { flag_set("sq_ows_success"); playsoundatposition("zmb_sq_target_success", (0, 0, 0)); } else playsoundatposition("zmb_sq_target_fail", (0, 0, 0)); level notify("sndEndOWSMusic"); } ows_targets_spawn(a_spawn_spots) { i = 0; foreach (s_spot in a_spawn_spots) { m_target = spawn("script_model", s_spot.origin); m_target.angles = s_spot.angles; m_target setmodel("p6_zm_bu_target"); m_target ghost(); wait_network_frame(); m_target show(); playfxontag(level._effect["sq_spawn"], m_target, "tag_origin"); m_target playsound("zmb_sq_target_spawn"); if (isdefined(s_spot.target)) m_target thread ows_target_move(s_spot.target); m_target thread ows_target_think(); m_target thread sndhit(); m_target thread sndtime(); i++; } } ows_target_think() { self setcandamage(1); self thread ows_target_delete_timer(); msg = self waittill_any_return("ows_target_timeout", "damage"); if (msg == "damage") { level.targets_hit++; } if (isdefined(self.m_linker)) { self unlink(); self.m_linker delete(); } self rotatepitch(-90, 0.15, 0.05, 0.05); self waittill("rotatedone"); self delete(); } ows_target_delete_timer() { self endon("death"); wait 4; self notify("ows_target_timeout"); }