#include maps\mp\zombies\_zm_weap_staff_air; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_net; #include maps\mp\zm_tomb_utility; #include maps\mp\zombies\_zm_ai_basic; #include maps\mp\zombies\_zm_spawner; #include maps\mp\zombies\_zm_audio; #include maps\mp\zombies\_zm_powerups; #include maps\mp\animscripts\shared; whirlwind_kill_zombies(n_level, str_weapon) { self endon("death"); n_range = get_air_blast_range(n_level); self.n_charge_level = n_level; while (true) { a_zombies = staff_air_zombie_range(self.origin, n_range); a_zombies = get_array_of_closest(self.origin, a_zombies); for (i = 0; i < a_zombies.size; i++) { if (!isdefined(a_zombies[i])) continue; if (a_zombies[i].ai_state != "find_flesh") continue; if (is_true(self._whirlwind_attract_anim)) continue; v_offset = (10, 10, 32); if (!bullet_trace_throttled(self.origin + v_offset, a_zombies[i].origin + v_offset, undefined)) continue; if (!isdefined(a_zombies[i]) || !isalive(a_zombies[i])) continue; v_offset = (-10, -10, 64); if (!bullet_trace_throttled(self.origin + v_offset, a_zombies[i].origin + v_offset, undefined)) continue; if (!isdefined(a_zombies[i]) || !isalive(a_zombies[i])) continue; if (is_true(a_zombies[i].is_mechz)) { a_zombies[i] do_damage_network_safe(self.player_owner, 3300, str_weapon, "MOD_IMPACT"); } else { a_zombies[i] thread whirlwind_drag_zombie(self, str_weapon); } wait 0.5; } wait_network_frame(); } }