#include maps\mp\zombies\_zm_weap_blundersplat; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_net; #include maps\mp\zombies\_zm_weapons; #include maps\mp\zombies\_zm_spawner; #include maps\mp\animscripts\zm_shared; wait_for_blundersplat_fired() { self endon("disconnect"); self waittill("spawned_player"); for (;;) { self waittill("weapon_fired", str_weapon); if (str_weapon == "blundersplat_zm") { fire_time = weaponfiretime(str_weapon); for (i = 0; i < weaponclipsize(str_weapon); i++) { _titus_locate_target(1, i); wait fire_time; } } } } wait_for_blundersplat_upgraded_fired() { self endon("disconnect"); self waittill("spawned_player"); for (;;) { self waittill("weapon_fired", str_weapon); if (str_weapon == "blundersplat_upgraded_zm") { fire_time = weaponfiretime(str_weapon); for (i = 0; i < weaponclipsize(str_weapon); i++) { _titus_locate_target(1, i); wait fire_time; } } } } _titus_locate_target(is_not_upgraded = 1, count) { fire_angles = self getplayerangles(); fire_origin = self getplayercamerapos(); if (is_not_upgraded) n_fuse_timer = randomfloatrange(1.0, 2.5); else n_fuse_timer = randomfloatrange(3.0, 4.0); n_spread = 6; if (self hasPerk("specialty_deadshot")) { n_spread *= getdvarfloat("perk_weapSpreadMultiplier"); } if (count == 2) { fire_angles += (0, n_spread, 0); } else if (count == 0) { fire_angles += (0, n_spread / 3, 0); } else if (count == 1) { fire_angles -= (0, n_spread / 3, 0); } else if (count == 3) { fire_angles -= (0, n_spread, 0); } vec = anglestoforward(fire_angles); trace_end = fire_origin + vec * 20000; trace = bullettrace(fire_origin, trace_end, 1, self); offsetpos = trace["position"]; e_dart = magicbullet("blundersplat_bullet_zm", fire_origin, offsetpos, self); e_dart thread _titus_reset_grenade_fuse(n_fuse_timer); } _titus_reset_grenade_fuse(n_fuse_timer = randomfloatrange(1, 1.5), is_not_upgraded = 1) { self waittill("death"); a_grenades = getentarray("grenade", "classname"); foreach (e_grenade in a_grenades) { if (isdefined(e_grenade.model) && e_grenade.model == "t6_wpn_zmb_projectile_blundergat" && !isdefined(e_grenade.fuse_reset)) { e_grenade.fuse_reset = 1; e_grenade.fuse_time = n_fuse_timer; e_grenade resetmissiledetonationtime(n_fuse_timer); if (is_not_upgraded) e_grenade create_zombie_point_of_interest(250, 15, 10000); else e_grenade create_zombie_point_of_interest(500, 30, 10000); return; } } } _titus_target_animate_and_die(n_fuse_timer, inflictor) { self endon("death"); self endon("titus_target_timeout"); self thread _titus_target_timeout(n_fuse_timer); self thread _titus_check_for_target_death(inflictor); self thread _blundersplat_target_acid_stun_anim(); wait(n_fuse_timer); self notify("killed_by_a_blundersplat", inflictor); self dodamage(self.health + 1000, self.origin, inflictor); }