







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!targetname zombiegoto
award_grenades_for_survivors()
{
players = get_players();
for (i = 0; i < players.size; i++)
{
if (!players[i].is_zombie)
{
if ( players[i] hasPerk( "specialty_extraammo" ))
{
if ( !players[i] hasWeapon( "bo3_zm_widows_grenade" ) )
{
players[i] giveWeapon( "bo3_zm_widows_grenade" );
}
// Extra precautions
if ( players[i] HasWeapon( "frag_grenade_zm" ) )
{
players[i] TakeWeapon( "frag_grenade_zm" );
}
clip_ammo = players[i] GetWeaponAmmoClip( "bo3_zm_widows_grenade" );
if ( !isDefined( clip_ammo ) )
{
clip_ammo = 0;
}
clip_ammo += 2;
if ( clip_ammo > 4 )
{
clip_ammo = 4;
}
players SetWeaponAmmoClip( "bo3_zm_widows_grenade", clip_ammo );
self set_player_lethal_grenade( "bo3_zm_widows_grenade" );
}
else
{
if( !players[i] HasWeapon( "frag_grenade_zm" ) )
{
players[i] GiveWeapon( "frag_grenade_zm" );
players[i] SetWeaponAmmoClip( "frag_grenade_zm", 0 );
}
// Extra precautions
if ( players[i] HasWeapon( "bo3_zm_widows_grenade" ) )
{
players[i] TakeWeapon( "bo3_zm_widows_grenade" );
}
if ( players[i] GetFractionMaxAmmo( "frag_grenade_zm" ) < .25 )
{
players[i] SetWeaponAmmoClip( "frag_grenade_zm", 2 );
}
else if (players[i] GetFractionMaxAmmo( "frag_grenade_zm" ) < .5 )
{
players[i] SetWeaponAmmoClip( "frag_grenade_zm", 3 );
}
else
{
players[i] SetWeaponAmmoClip( "frag_grenade_zm", 4 );
}
self set_player_lethal_grenade( "frag_grenade_zm" );
}
}
}
}
//players[i] giveweapon( players[i] get_player_lethal_grenade() );
//players[i] setweaponammoclip( players[i] get_player_lethal_grenade(), 0);
// so players get init'ed with grenades
players = get_players();
for (i = 0; i < players.size; i++)
{
//players[i] giveweapon( players[i] get_player_lethal_grenade() );
//players[i] setweaponammoclip( players[i] get_player_lethal_grenade(), 0);
players[i] SetClientDvars( "ammoCounterHide", "0", "miniscoreboardhide", "0" );
//players[i] thread maps\_zombiemode_ability::give_round1_abilities();
}
if( !self zombie_should_gib( amount, attacker, type ) )
{
continue;
}
self thread maps\_zombiemode_perks_functions::perks_zombie_hit_effect(amount, attacker, point, type);
if( !self zombie_should_gib( amount, attacker, type ) )
{
continue;
}
// Double tap 2.0
if( isDefined(attacker) && isplayer(attacker) && isAlive(attacker) )
{
if(attacker HasPerk("specialty_rof") && ( type == "MOD_PISTOL_BULLET" || type == "MOD_RIFLE_BULLET" ) )
{
//iprintln( "Si entra Double Tap" );
self harrybo21_perks_doubletap_damage( amount, self.origin, attacker, self.damageLocation );
}
if ( ( self.damageLocation == "head" || self.damageLocation == "helmet" ) && attacker hasPerk( "specialty_deadshot" ) )
{
//iprintln( "Si entra Death Shot" );
self harrybo21_perks_deadshot_damage( amount, attacker, type, self.damageLocation );
}
}
// Double tap 2.0
// the seeker logic for zombies
find_flesh()
{
self endon( "death" );
level endon( "intermission" );
self endon( "stop_find_flesh" );
if( level.intermission )
{
return;
}
self.helitarget = true;
self.ignoreme = false; // don't let attack dogs give chase until the zombie is in the playable area
self.noDodgeMove = true; // WW (0107/2011) - script_forcegoal KVP overwites this variable which allows zombies to push the player in laststand
//PI_CHANGE - 7/2/2009 JV Changing this to an array for the meantime until we get a more substantial fix
//for ignoring multiple players - Reenabling change 274916 (from DLC3)
self.ignore_player = ;
self zombie_history( "find flesh -> start" );
self.goalradius = 32;
while( 1 )
{
zombie_poi = undefined;
// try to split the zombies up when the bunch up
// see if a bunch zombies are already near my current target; if there's a bunch
// and I'm still far enough away, ignore my current target and go after another one
near_zombies = getaiarray("axis");
same_enemy_count = 0;
for (i = 0; i < near_zombies.size; i++)
{
if ( isdefined( near_zombies[i] ) && isalive( near_zombies[i] ) )
{
if ( isdefined( near_zombies[i].favoriteenemy ) && isdefined( self.favoriteenemy )
&& near_zombies[i].favoriteenemy == self.favoriteenemy )
{
if ( distancesquared( near_zombies[i].origin, self.favoriteenemy.origin ) < 225 * 225
&& distancesquared( near_zombies[i].origin, self.origin ) > 525 * 525)
{
same_enemy_count++;
}
}
}
}
if (same_enemy_count > 12)
{
self.ignore_player[self.ignore_player.size] = self.favoriteenemy;
}
//PI_CHANGE_BEGIN - 6/18/09 JV It was requested that we use the poi functionality to set the "wait" point while all players
//are in the process of teleportation. It should not intefere with the monkey. The way it should work is, if all players are in teleportation,
//zombies should go and wait at the stage, but if there is a valid player not in teleportation, they should go to him
if (isDefined(level.zombieTheaterTeleporterSeekLogicFunc) )
{
self [[ level.zombieTheaterTeleporterSeekLogicFunc ]]();
}
//PI_CHANGE_END
if( IsDefined( level._poi_override ) )
{
zombie_poi = self [[ level._poi_override ]]();
}
if( !IsDefined( zombie_poi ) )
{
zombie_poi = self get_zombie_point_of_interest( self.origin );
}
players = get_players();
// If playing single player, never ignore the player
if( players.size == 1 )
{
self.ignore_player = ;
}
//PI_CHANGE_BEGIN - 7/2/2009 JV Reenabling change 274916 (from DLC3)
else
{
for(i = 0; i < self.ignore_player.size; i++)
{
if( IsDefined( self.ignore_player[i] ) && IsDefined( self.ignore_player[i].ignore_counter ) && self.ignore_player[i].ignore_counter > 3 )
{
self.ignore_player[i].ignore_counter = 0;
self.ignore_player = array_remove( self.ignore_player, self.ignore_player[i] );
}
}
}
//PI_CHANGE_END
player = maps\_zombiemode_perks_functions::get_closest_valid_player_plus_perks( self.origin, self.ignore_player );
if( !isDefined( player ) )
{
if ( isDefined( level.zombiegoto ) && !isDefined( zombie_poi ) )
{
self SetGoalPos( level.zombiegoto.origin );
wait randomfloatrange( 1, 2 );
continue;
}
else if ( !isDefined( zombie_poi ) )
{
self zombie_history( "find flesh -> can't find player, continue" );
if( IsDefined( self.ignore_player ) )
{
self.ignore_player = ;
}
wait( 1 );
continue;
}
}
//PI_CHANGE - 7/2/2009 JV Reenabling change 274916 (from DLC3)
//self.ignore_player = undefined;
if ( !isDefined( level.check_for_alternate_poi ) || ![[level.check_for_alternate_poi]]() )
{
self.enemyoverride = zombie_poi;
self.favoriteenemy = player;
}
self thread zombie_pathing();
//PI_CHANGE_BEGIN - 7/2/2009 JV Reenabling change 274916 (from DLC3)
if( players.size > 1 )
{
for(i = 0; i < self.ignore_player.size; i++)
{
if( IsDefined( self.ignore_player[i] ) )
{
if( !IsDefined( self.ignore_player[i].ignore_counter ) )
self.ignore_player[i].ignore_counter = 0;
else
self.ignore_player[i].ignore_counter += 1;
}
}
}
//PI_CHANGE_END
self thread attractors_generated_listener();
self.zombie_path_timer = GetTime() + ( RandomFloatRange( 1, 3 ) * 1000 );// + path_timer_extension;
while( GetTime() < self.zombie_path_timer )
{
wait( 0.1 );
}
self notify( "path_timer_done" );
self zombie_history( "find flesh -> bottom of loop" );
debug_print( "Zombie is re-acquiring enemy, ending breadcrumb search" );
self notify( "zombie_acquire_enemy" );
}
}
window_notetracks(msg)
{
while(1)
{
self waittill( msg, notetrack );
if( notetrack == "end" )
{
//self waittill("end");
self teleport(self.old_origin);
return;
}
if( notetrack == "fire" )
{
if(self.ignoreall)
{
self.ignoreall = false;
}
// just hit a player
if ( isDefined( self.first_node ) )
{
_MELEE_DIST_SQ = 90*90;
_TRIGGER_DIST_SQ = 51*51;
for ( i = 0; i < self.player_targets.size; i++ )
{
// !!=====!! Widow's Wine
if ( self.player_targets[i] hasPerk("specialty_extraammo") )
{
self.player_targets[i] notify("widows_wine_melee", self);
wait_network_frame();
}
playerDistSq = Distance2DSquared( self.player_targets[i].origin, self.origin );
heightDiff = abs( self.player_targets[i].origin[2] - self.origin[2] ); // be sure we're on the same floor
if ( playerDistSq < _MELEE_DIST_SQ && (heightDiff * heightDiff) < _MELEE_DIST_SQ )
{
triggerDistSq = Distance2DSquared( self.player_targets[i].origin, self.first_node.trigger_location.origin );
heightDiff = abs( self.player_targets[i].origin[2] - self.first_node.trigger_location.origin[2] ); // be sure we're on the same floor
if ( triggerDistSq < _TRIGGER_DIST_SQ && (heightDiff * heightDiff) < _TRIGGER_DIST_SQ )
{
self.player_targets[i] DoDamage( self.meleeDamage, self.origin, self, 0, "MOD_MELEE" );
break;
}
}
}
}
else
{
self melee();
}
}
}
}
// Double tap 2.0
harrybo21_perks_doubletap_damage( amount, origin, attacker, location, direction_vec, point, type )
{
self endon( "death" );
self.damageLocation = location;
wait_network_frame();
setPlayerIgnoreRadiusDamage( true );
self.attacker radiusDamage( self.origin, 1, amount, amount, self.attacker, self.damagemod );
setPlayerIgnoreRadiusDamage( false );
// self doDamage( amount, origin, attacker );
self.damageLocation = location;
wait_network_frame();
}
harrybo21_perks_deadshot_damage( amount, origin, attacker, location )
{
self endon( "death" );
self.deadshot_hit = true;
new_damage = amount / 4;
if ( attacker hasPerk( "specialty_rof" ) )
new_damage = new_damage * 2;
if ( new_damage > self.health )
{
score = 40;
if ( isDefined( level.zombie_vars["zombie_powerup_point_doubler_on"] ) && level.zombie_vars["zombie_powerup_point_doubler_on"] )
score = score * 2;
attacker maps\_zombiemode_score::add_to_player_score( score );
}
self.damageLocation = location;
wait_network_frame();
self.attacker radiusDamage( self.origin, 1, amount, amount, self.attacker, self.damagemod );
// self doDamage( new_damage, origin, attacker );
wait_network_frame();
self.deadshot_hit = undefined;
}
// Double tap 2.0
self waittill("meleeanim", note);
if ( !IsDefined( self.enemy ) )
{
break;
}
// !!=====!! Widow's Wine
if ( self.enemy hasPerk("specialty_extraammo") )
{
self.enemy notify("widows_wine_melee", self);
wait_network_frame();
}
maps\_zombiemode::main();
thread fix_Health();
fix_Health()
{
flag_wait("all_players_connected");
players = get_players();
for(i=0;i<players.size;i++)
{
players[i] thread return_fix();
}
}
return_fix()
{
while(1)
{
self waittill_any_return( "player_revived", "spawned_player");
self SetMaxHealth( 150 );
//iprintln("150 de vida");
}
}
_zombiemode_perks
_zombiemode_perks_functions
_zombiemode_perks_items
//Perks
sound,map_sounds
material,specialty_cherry_zombies
material,specialty_vulture_zombies
material,specialty_vulture_zombies_glow
material,specialty_widowswine_zombies
material,vending_widows_grenade_indicator
fx,cherry\cherry_1
fx,cherry\cherry_2
fx,cherry\cherry_3
fx,cherry\cherry_4
fx,maps\zombie\fx_zombie_tesla_bolt_secondary
fx,maps\zombie\fx_zombie_tesla_shock
fx,maps\zombie\fx_zombie_tesla_shock_secondary
fx,maps\zombie\fx_zombie_tesla_shock_eyes
fx,vulture_powerup
fx,vulture_smell
fx,vulture\fx_vulture_box
fx,vulture\fx_vulture_pap
fx,vulture\fx_vulture_rifle
fx,vulture\fx_vulture_revive
fx,vulture\fx_vulture_speed
fx,vulture\fx_vulture_jugg
fx,vulture\fx_vulture_double
fx,vulture\fx_vulture_deadshot
fx,vulture\fx_vulture_stamin
fx,vulture\fx_vulture_mule
fx,vulture\fx_vulture_phd
fx,vulture\fx_vulture_cherry
fx,vulture\fx_vulture_vulture
fx,vulture\fx_vulture_widow
fx,widowswine\fx_widows_wine_explode
fx,widowswine\fx_widows_wine_zombie
weapon,sp/zombie_perk_bottle_cherry
weapon,sp/zombie_perk_bottle_vulture
weapon,sp/zombie_perk_bottle_widowswine
weapon,sp/bo3_zm_widows_grenade
xmodel,bo2_p6_zm_vending_electric_cherry_on
xmodel,bo2_zombie_vending_vultureaid_on
xmodel,bo2_p6_zm_perk_vulture_ammo
xmodel,bo2_p6_zm_perk_vulture_points
xmodel,bo3_p7_zm_vending_widows_wine_on
xmodel,bo3_t7_ww_grenade_proj
xmodel,bo3_t7_ww_powerup