Posts
66
Respect
Forum Rank
Rotting Walker
Primary Group
Member
Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include animscripts\Utility;
init()
{
thread quads_enabled();
init_quad_zombie_anims();
level.quad_spawners = GetEntArray( "quad_zombie_spawner", "script_noteworthy" );
array_thread( level.quad_spawners, ::add_spawn_function, maps\_zombiemode_ai_quad::quad_prespawn );
}
quads_enabled()
{
level.quads = false;
// flag_wait("electricity_on");
level.quads = true;
}
#using_animtree( "generic_human" );
quad_prespawn()
{
if( level.quads == false )
{
// iprintln( "level quads false or count higher than 10" );
self DetachAll();
character\char_ger_pnzrgren_helm_zombies_gear1::main();
self.animname = "zombie";
self maps\_zombiemode_spawner::zombie_spawn_init( true );
return;
}
else
self.animname = "quad_zombie";
self.quad = true;
self.custom_idle_setup = maps\_zombiemode_ai_quad::quad_zombie_idle_setup;
self.a.idleAnimOverrideArray = [];
self.a.idleAnimOverrideArray["stand"] = [];
self.a.idleAnimOverrideArray["stand"] = [];
self.a.idleAnimOverrideArray["stand"][0][0] = %quad_idle;
self.a.idleAnimOverrideWeights["stand"][0][0] = 10;
self.no_eye_glow = true;
self maps\_zombiemode_spawner::zombie_spawn_init( true );
self.maxhealth = int( self.maxhealth * 0.75 );
self.health = self.maxhealth;
self.meleeDamage = 45;
self playsound( "quad_spawn1" );
self.death_explo_radius_zomb = 96;
self.death_explo_radius_plr = 96;
self.death_explo_damage_zomb = 0.75;
self.death_gas_radius = 125;
self.death_gas_time = 7;
self.deathanimscript = ::quad_post_death;
//self.actor_killed_override = ::quad_killed_override;
//self set_default_attack_properties();
self.thundergun_disintegrate_func = ::quad_thundergun_disintegrate;
self.thundergun_knockdown_func = ::quad_thundergun_knockdown;
self.can_explode = false;
if ( isdefined( level.quad_explode ) && level.quad_explode == true )
{
self.can_explode = true;
}
self.exploded = false;
self thread quad_trail();
self thread quad_vox();
if ( isdefined( level.quad_traverse_death_fx ) )
{
self thread [[ level.quad_traverse_death_fx ]]();
}
}
quad_zombie_idle_setup()
{
self.a.array["turn_left_45"] = %exposed_tracking_turn45L;
self.a.array["turn_left_90"] = %exposed_tracking_turn90L;
self.a.array["turn_left_135"] = %exposed_tracking_turn135L;
self.a.array["turn_left_180"] = %exposed_tracking_turn180L;
self.a.array["turn_right_45"] = %exposed_tracking_turn45R;
self.a.array["turn_right_90"] = %exposed_tracking_turn90R;
self.a.array["turn_right_135"] = %exposed_tracking_turn135R;
self.a.array["turn_right_180"] = %exposed_tracking_turn180L;
self.a.array["exposed_idle"] = array( %quad_idle, %quad_idle );
self.a.array["straight_level"] = %quad_idle;
self.a.array["stand_2_crouch"] = %ai_zombie_shot_leg_right_2_crawl;
}
init_quad_zombie_anims()
{
// deaths
level.scr_anim["quad_zombie"]["death1"] = %ai_zombie_quad_death;
level.scr_anim["quad_zombie"]["death2"] = %ai_zombie_quad_death_2;
level.scr_anim["quad_zombie"]["death3"] = %ai_zombie_quad_death_3;
level.scr_anim["quad_zombie"]["death4"] = %ai_zombie_quad_death_4;
// run cycles
level.scr_anim["quad_zombie"]["walk1"] = %ai_zombie_quad_crawl;
level.scr_anim["quad_zombie"]["walk2"] = %ai_zombie_quad_crawl;
level.scr_anim["quad_zombie"]["walk3"] = %ai_zombie_quad_crawl;
level.scr_anim["quad_zombie"]["walk4"] = %ai_zombie_quad_crawl_2;
level.scr_anim["quad_zombie"]["walk5"] = %ai_zombie_quad_crawl_2;
level.scr_anim["quad_zombie"]["walk6"] = %ai_zombie_quad_crawl_3;
level.scr_anim["quad_zombie"]["walk7"] = %ai_zombie_quad_crawl_3;
level.scr_anim["quad_zombie"]["walk8"] = %ai_zombie_quad_crawl_3;
level.scr_anim["quad_zombie"]["run1"] = %ai_zombie_quad_crawl_run;
level.scr_anim["quad_zombie"]["run2"] = %ai_zombie_quad_crawl_run_2;
level.scr_anim["quad_zombie"]["run3"] = %ai_zombie_quad_crawl_run_3;
level.scr_anim["quad_zombie"]["run4"] = %ai_zombie_quad_crawl_run_4;
level.scr_anim["quad_zombie"]["run5"] = %ai_zombie_quad_crawl_run_5;
level.scr_anim["quad_zombie"]["run6"] = %ai_zombie_quad_crawl_run;
level.scr_anim["quad_zombie"]["sprint1"] = %ai_zombie_quad_crawl_sprint;
level.scr_anim["quad_zombie"]["sprint2"] = %ai_zombie_quad_crawl_sprint_2;
level.scr_anim["quad_zombie"]["sprint3"] = %ai_zombie_quad_crawl_sprint_3;
level.scr_anim["quad_zombie"]["sprint4"] = %ai_zombie_quad_crawl_sprint;
level.scr_anim["quad_zombie"]["sprint5"] = %ai_zombie_quad_crawl_sprint_3;
level.scr_anim["quad_zombie"]["sprint6"] = %ai_zombie_quad_crawl_sprint_2;
// run cycles in prone
level.scr_anim["quad_zombie"]["crawl1"] = %ai_zombie_crawl;
level.scr_anim["quad_zombie"]["crawl2"] = %ai_zombie_crawl_v1;
level.scr_anim["quad_zombie"]["crawl3"] = %ai_zombie_crawl_v2;
level.scr_anim["quad_zombie"]["crawl4"] = %ai_zombie_crawl_v3;
level.scr_anim["quad_zombie"]["crawl5"] = %ai_zombie_crawl_v4;
level.scr_anim["quad_zombie"]["crawl6"] = %ai_zombie_crawl_v5;
level.scr_anim["quad_zombie"]["crawl_hand_1"] = %ai_zombie_walk_on_hands_a;
level.scr_anim["quad_zombie"]["crawl_hand_2"] = %ai_zombie_walk_on_hands_b;
level.scr_anim["quad_zombie"]["crawl_sprint1"] = %ai_zombie_crawl_sprint;
level.scr_anim["quad_zombie"]["crawl_sprint2"] = %ai_zombie_crawl_sprint_1;
level.scr_anim["quad_zombie"]["crawl_sprint3"] = %ai_zombie_crawl_sprint_2;
if( !isDefined( level._zombie_melee ) )
{
level._zombie_melee = [];
}
if( !isDefined( level._zombie_walk_melee ) )
{
level._zombie_walk_melee = [];
}
if( !isDefined( level._zombie_run_melee ) )
{
level._zombie_run_melee = [];
}
level._zombie_melee["quad_zombie"] = [];
level._zombie_walk_melee["quad_zombie"] = [];
level._zombie_run_melee["quad_zombie"] = [];
level._zombie_melee["quad_zombie"][0] = %ai_zombie_quad_attack;
level._zombie_melee["quad_zombie"][1] = %ai_zombie_quad_attack_2;
level._zombie_melee["quad_zombie"][2] = %ai_zombie_quad_attack_3;
level._zombie_melee["quad_zombie"][3] = %ai_zombie_quad_attack_4;
level._zombie_melee["quad_zombie"][4] = %ai_zombie_quad_attack_5;
level._zombie_melee["quad_zombie"][5] = %ai_zombie_quad_attack_6;
level._zombie_melee["quad_zombie"][6] = %ai_zombie_quad_attack_double;
level._zombie_melee["quad_zombie"][7] = %ai_zombie_quad_attack_double_2;
level._zombie_melee["quad_zombie"][8] = %ai_zombie_quad_attack_double_3;
level._zombie_melee["quad_zombie"][9] = %ai_zombie_quad_attack_double_4;
level._zombie_melee["quad_zombie"][10] = %ai_zombie_quad_attack_double_5;
level._zombie_melee["quad_zombie"][11] = %ai_zombie_quad_attack_double_6;
/*
level._zombie_run_melee["quad_zombie"][0] = %ai_zombie_quad_attack;
level._zombie_run_melee["quad_zombie"][1] = %ai_zombie_quad_attack;
level._zombie_run_melee["quad_zombie"][2] = %ai_zombie_quad_attack;
level._zombie_walk_melee["quad_zombie"][0] = %ai_zombie_quad_attack;
level._zombie_walk_melee["quad_zombie"][1] = %ai_zombie_quad_attack;
level._zombie_walk_melee["quad_zombie"][2] = %ai_zombie_quad_attack;
level._zombie_walk_melee["quad_zombie"][3] = %ai_zombie_quad_attack;
*/
if( isDefined( level.quad_zombie_anim_override ) )
{
[[ level.quad_zombie_anim_override ]]();
}
// melee in crawl
if( !isDefined( level._zombie_melee_crawl ) )
{
level._zombie_melee_crawl = [];
}
level._zombie_melee_crawl["quad_zombie"] = [];
level._zombie_melee_crawl["quad_zombie"][0] = %ai_zombie_attack_crawl;
level._zombie_melee_crawl["quad_zombie"][1] = %ai_zombie_attack_crawl_lunge;
if( !isDefined( level._zombie_stumpy_melee ) )
{
level._zombie_stumpy_melee = [];
}
level._zombie_stumpy_melee["quad_zombie"] = [];
level._zombie_stumpy_melee["quad_zombie"][0] = %ai_zombie_walk_on_hands_shot_a;
level._zombie_stumpy_melee["quad_zombie"][1] = %ai_zombie_walk_on_hands_shot_b;
// tesla deaths
if( !isDefined( level._zombie_tesla_death ) )
{
level._zombie_tesla_death = [];
}
level._zombie_tesla_death["quad_zombie"] = [];
level._zombie_tesla_death["quad_zombie"][0] = %ai_zombie_quad_death_tesla;
level._zombie_tesla_death["quad_zombie"][1] = %ai_zombie_quad_death_tesla_2;
level._zombie_tesla_death["quad_zombie"][2] = %ai_zombie_quad_death_tesla_3;
level._zombie_tesla_death["quad_zombie"][3] = %ai_zombie_quad_death_tesla_4;
if( !isDefined( level._zombie_tesla_crawl_death ) )
{
level._zombie_tesla_crawl_death = [];
}
level._zombie_tesla_crawl_death["quad_zombie"] = [];
level._zombie_tesla_crawl_death["quad_zombie"][0] = %ai_zombie_tesla_crawl_death_a;
level._zombie_tesla_crawl_death["quad_zombie"][1] = %ai_zombie_tesla_crawl_death_b;
// deaths
if( !isDefined( level._zombie_deaths ) )
{
level._zombie_deaths = [];
}
level._zombie_deaths["quad_zombie"] = [];
level._zombie_deaths["quad_zombie"][0] = %ai_zombie_quad_death;
level._zombie_deaths["quad_zombie"][1] = %ai_zombie_quad_death_2;
level._zombie_deaths["quad_zombie"][2] = %ai_zombie_quad_death_3;
level._zombie_deaths["quad_zombie"][3] = %ai_zombie_quad_death_4;
/*
ground crawl
*/
if( !isDefined( level._zombie_rise_anims ) )
{
level._zombie_rise_anims = [];
}
// set up the arrays
level._zombie_rise_anims["quad_zombie"] = [];
level._zombie_rise_anims["quad_zombie"][1]["walk"][0] = %ai_zombie_traverse_ground_v1_crawl;
level._zombie_rise_anims["quad_zombie"][1]["run"][0] = %ai_zombie_traverse_ground_v1_crawlfast;
level._zombie_rise_anims["quad_zombie"][1]["sprint"][0] = %ai_zombie_traverse_ground_v1_crawlfast;
level._zombie_rise_anims["quad_zombie"][2]["walk"][0] = %ai_zombie_traverse_ground_v1_crawl;
// ground crawl death
if( !isDefined( level._zombie_rise_death_anims ) )
{
level._zombie_rise_death_anims = [];
}
level._zombie_rise_death_anims["quad_zombie"] = [];
level._zombie_rise_death_anims["quad_zombie"][1]["in"][0] = %ai_zombie_traverse_ground_v1_deathinside;
level._zombie_rise_death_anims["quad_zombie"][1]["in"][1] = %ai_zombie_traverse_ground_v1_deathinside_alt;
level._zombie_rise_death_anims["quad_zombie"][1]["out"][0] = %ai_zombie_traverse_ground_v1_deathoutside;
level._zombie_rise_death_anims["quad_zombie"][1]["out"][1] = %ai_zombie_traverse_ground_v1_deathoutside_alt;
level._zombie_rise_death_anims["quad_zombie"][2]["in"][0] = %ai_zombie_traverse_ground_v2_death_low;
level._zombie_rise_death_anims["quad_zombie"][2]["in"][1] = %ai_zombie_traverse_ground_v2_death_low_alt;
level._zombie_rise_death_anims["quad_zombie"][2]["out"][0] = %ai_zombie_traverse_ground_v2_death_high;
level._zombie_rise_death_anims["quad_zombie"][2]["out"][1] = %ai_zombie_traverse_ground_v2_death_high_alt;
//taunts
if( !isDefined( level._zombie_run_taunt ) )
{
level._zombie_run_taunt = [];
}
if( !isDefined( level._zombie_board_taunt ) )
{
level._zombie_board_taunt = [];
}
level._zombie_run_taunt["quad_zombie"] = [];
level._zombie_board_taunt["quad_zombie"] = [];
level._zombie_board_taunt["quad_zombie"][0] = %ai_zombie_quad_taunt;
level._zombie_board_taunt["quad_zombie"][1] = %ai_zombie_quad_taunt_2;
level._zombie_board_taunt["quad_zombie"][2] = %ai_zombie_quad_taunt_3;
level._zombie_board_taunt["quad_zombie"][3] = %ai_zombie_quad_taunt_4;
level._zombie_board_taunt["quad_zombie"][4] = %ai_zombie_quad_taunt_5;
level._zombie_board_taunt["quad_zombie"][5] = %ai_zombie_quad_taunt_6;
level._effect[ "quad_explo_gas" ] = LoadFX( "maps/zombie/fx_zombie_quad_gas_nova6" );
level._effect[ "quad_trail" ] = Loadfx( "maps/zombie/fx_zombie_quad_trail" );
}
quad_thundergun_disintegrate( player )
{
self endon( "death" );
self DoDamage( self.health + 666, player.origin, player );
}
quad_thundergun_knockdown( player, gib )
{
self endon( "death" );
damage = int( self.maxhealth * 0.5 );
self DoDamage( damage, player.origin, player );
}
quad_trail()
{
self endon( "death" );
//self waittill( "quad_end_traverse_anim" );
self.fx_quad_trail = Spawn( "script_model", self GetTagOrigin( "tag_origin" ) );
self.fx_quad_trail.angles = self GetTagAngles( "tag_origin" );
self.fx_quad_trail SetModel( "tag_origin" );
self.fx_quad_trail LinkTo( self, "tag_origin" );
maps\_zombiemode_net::network_safe_play_fx_on_tag( "quad_fx", 2, level._effect[ "quad_trail" ], self.fx_quad_trail, "tag_origin" );
}
quad_post_death()
{
if( self.can_explode == true )
{
if ( isdefined( self.fx_quad_trail ) )
{
self.fx_quad_trail unlink();
self.fx_quad_trail delete();
}
mod = self.damagemod;
if ( mod == "MOD_PISTOL_BULLET" || mod == "MOD_RIFLE_BULLET" )
{
self thread quad_gas_explo_death();
}
}
}
quad_gas_explo_death()
{
death_vars = [];
death_vars["explo_radius_zomb"] = self.death_explo_radius_zomb;
death_vars["explo_radius_plr"] = self.death_explo_radius_plr;
death_vars["explo_damage_zomb"] = self.death_explo_damage_zomb;
death_vars["gas_radius"] = self.death_gas_radius;
death_vars["gas_time"] = self.death_gas_time;
self thread quad_death_explo( self.origin, death_vars );
level thread quad_gas_area_of_effect( self.origin, death_vars );
self Delete();
}
quad_death_explo( origin, death_vars )
{
playsoundatposition( "quad_explo1", origin );
PlayFx( level._effect["dog_gib"], origin );
players = get_players();
zombies = GetAIArray( "axis" );
for(i = 0; i < zombies.size; i++)
{
if( Distance( origin, zombies[i].origin ) <= death_vars["explo_radius_zomb"] )
{
if( zombies[i].animname != "quad_zombie" )
{
if( zombies[i].animname != "boss_zombie" )
{
zombies[i] DoDamage( zombies[i].maxhealth * death_vars["explo_damage_zomb"], origin );
}
}
}
}
for(i = 0; i < players.size; i++)
{
if( Distance( origin, players[i].origin ) <= death_vars["explo_radius_plr"] )
{
players[i] ShellShock( "explosion", 2.5 );
RadiusDamage( players[i].origin, death_vars["explo_radius_zomb"], 15, 10, self, "MOD_EXPLOSIVE" );
}
}
self.exploded = true;
//self RadiusDamage( origin, death_vars["explo_radius_zomb"], level.zombie_health, level.zombie_health, self, "MOD_EXPLOSIVE" );
}
quad_gas_area_of_effect( origin, death_vars )
{
effectArea = spawn( "trigger_radius", origin, 0, death_vars["gas_radius"], 100 );
PlayFX( level._effect[ "quad_explo_gas" ], origin );
gas_time = 0;
while( gas_time <= death_vars["gas_time"] )
{
players = get_players();
for(i = 0; i < players.size; i++)
{
if( players[i] IsTouching( effectArea ))
{
players[i] setblur( 4, .1 );
}
else
{
players[i] setblur( 0, .5 );
}
}
wait(1);
gas_time = gas_time + 1;
}
players = get_players();
for ( i = 0; i < players.size; i++ )
{
players[i] setblur( 0, .5 );
}
effectArea Delete();
}
quad_killed_override( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime )
{
if ( sMeansOfDeath == "MOD_PISTOL_BULLET" || sMeansOfDeath == "MOD_RIFLE_BULLET" )
{
self.can_explode = true;
}
else
{
self.can_explode = false;
if ( isdefined( self.fx_quad_trail ) )
{
self.fx_quad_trail unlink();
self.fx_quad_trail delete();
}
}
}
quad_vox()
{
self endon( "death" );
wait( 5 );
quad_wait = 5;
while(1)
{
players = getplayers();
for(i=0;i<players.size;i++)
{
if(DistanceSquared(self.origin, players[i].origin) > 1200 * 1200)
{
self playsound( "quad_amb" );
quad_wait = 8;
}
else if(DistanceSquared(self.origin, players[i].origin) > 200 * 200)
{
self playsound( "quad_vox" );
quad_wait = 6;
}
else if(DistanceSquared(self.origin, players[i].origin) < 150 * 150)
{
self playsound( "quad_close" );
quad_wait = 3;
}
}
wait randomfloatrange( 1, quad_wait );
}
}
quad_close()
{
self endon( "death" );
while(1)
{
players = getplayers();
for(i=0;i<players.size;i++)
{
if ( is_player_valid( players[i], true ) )
{
if(DistanceSquared(self.origin, players[i].origin) < 150 * 150)
{
self playsound( "quad_close" );
wait randomfloatrange( 1, 2 );
}
}
}
wait_network_frame();
}
}