Untitled diff

Created Diff never expires
111 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
452 lines
46 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
386 lines
#include maps\_utility;
#include maps\_utility;
#include common_scripts\utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include maps\_zombiemode_utility;
#using_animtree( "generic_human" );
#using_animtree( "generic_human" );
init()
init()
{
{
set_zombie_var( "freezegun_cylinder_radius", 120 );
set_zombie_var( "freezegun_cylinder_radius", 120 );
set_zombie_var( "freezegun_inner_range", 60 );
set_zombie_var( "freezegun_inner_range", 60 );
set_zombie_var( "freezegun_outer_range", 600 );
set_zombie_var( "freezegun_outer_range", 600 );
set_zombie_var( "freezegun_inner_damage", 1000 );
set_zombie_var( "freezegun_inner_damage", 1000 );
set_zombie_var( "freezegun_outer_damage", 500 );
set_zombie_var( "freezegun_outer_damage", 500 );
set_zombie_var( "freezegun_shatter_range", 180 );
set_zombie_var( "freezegun_shatter_range", 180 );
set_zombie_var( "freezegun_shatter_inner_damage", 500 );
set_zombie_var( "freezegun_shatter_inner_damage", 500 );
set_zombie_var( "freezegun_shatter_outer_damage", 250 );
set_zombie_var( "freezegun_shatter_outer_damage", 250 );
set_zombie_var( "freezegun_cylinder_radius_upgraded", 180 );
set_zombie_var( "freezegun_cylinder_radius_upgraded", 180 );
set_zombie_var( "freezegun_inner_range_upgraded", 120 );
set_zombie_var( "freezegun_inner_range_upgraded", 120 );
set_zombie_var( "freezegun_outer_range_upgraded", 900 );
set_zombie_var( "freezegun_outer_range_upgraded", 900 );
set_zombie_var( "freezegun_inner_damage_upgraded", 1500 );
set_zombie_var( "freezegun_inner_damage_upgraded", 1500 );
set_zombie_var( "freezegun_outer_damage_upgraded", 750 );
set_zombie_var( "freezegun_outer_damage_upgraded", 750 );
set_zombie_var( "freezegun_shatter_range_upgraded", 300 );
set_zombie_var( "freezegun_shatter_range_upgraded", 300 );
set_zombie_var( "freezegun_shatter_inner_damage_upgraded", 750 );
set_zombie_var( "freezegun_shatter_inner_damage_upgraded", 750 );
set_zombie_var( "freezegun_shatter_outer_damage_upgraded", 500 );
set_zombie_var( "freezegun_shatter_outer_damage_upgraded", 500 );
level._effect[ "freezegun_shatter" ] = LoadFX( "weapon/freeze_gun/fx_trail_freezegun_blood_streak_waw" );
level._effect[ "freezegun_shatter" ] = LoadFX( "ugxm/freeze_gun/fx_freezegun_shatter" );
level._effect[ "freezegun_smoke_cloud" ] = Loadfx( "weapon/freeze_gun/fx_freezegun_smoke_cloud_waw" );
level._effect[ "freezegun_smoke_cloud" ] = loadfx( "ugxm/freeze_gun/fx_freezegun_smoke_cloud" );
level._effect[ "freezegun_damage_torso" ] = LoadFX( "weapon/freeze_gun/fx_zombie_freeze_torso_waw" );
level._effect[ "freezegun_damage_torso" ] = LoadFX( "ugxm/freeze_gun/fx_zombie_freeze_torso" );
level._effect[ "freezegun_damage_sm" ] = LoadFX( "weapon/freeze_gun/fx_zombie_freeze_sm_waw" );
level._effect[ "freezegun_damage_sm" ] = LoadFX( "ugxm/freeze_gun/fx_zombie_freeze_md" );
level._zombie_freezegun_death["zombie"] = %ai_zombie_taunts_9;
level.ugxm_fx["boss_frozen_smoke"] = loadFx("ugxm/freeze_gun/fx_zombie_freeze_md_inf");
thread freezegun_on_player_connect();
level._zombie_freezegun_death["zombie"] = %ai_zombie_frozen_trem;
level thread freezegun_on_player_connect();
}
}
freezegun_on_player_connect()
freezegun_on_player_connect()
{
{
for(;;)
for(;;)
{
{
level waittill("connecting", player);
level waittill("connecting", player);
player thread wait_for_freezegun_fired();
player thread wait_for_freezegun_fired();
}
}
}
}
wait_for_freezegun_fired()
wait_for_freezegun_fired()
{
{
self endon("disconnect");
self endon("disconnect");
self waittill("spawned_player");
self.freezegun_enemies = [];
self.freezegun_enemies = [];
for (;;)
for (;;)
{
{
// iprintln("Checking for freeze gun fired");
self waittill("projectile_impact", weapon, point, radius);
self waittill("projectile_impact", weapon, point, radius);
switch(weapon)
switch(weapon)
{
{
case "freeze_gun":
case "freezegun_sp":
// iprintln("Freezegun Fired");
self.freeze_upgraded = undefined;
self thread freezegun_death(self, 0, "MOD_PROJECTILE", point);
break;
case "freeze_gun_upgraded":
self.freeze_upgraded = true;
self thread freezegun_death(self, 0, "MOD_PROJECTILE", point);
self thread freezegun_death(self, 0, "MOD_PROJECTILE", point);
break;
break;
}
}
}
}
}
}
freezegun_death(player, amount, type, point)
freezegun_death(player, amount, type, point) //time to die, bitch
{
{
self endon("death");
self endon("death"); //should keep this func from playing duplicate sounds, even though the zom will already be deleted (thus not able to play sounds for fx)
self freezegun_get_enemies_in_range(false, player, amount, point, type);
self freezegun_get_enemies_in_range(false, player, amount, point, type); //find the bitch's homies
self thread freezegun_slowdown(player, amount);
self thread freezegun_slowdown(player, amount); //slow down the nearby bitches so they be walkin
if(level.round_number >= 18)
{
if (!isdefined(self.freeze_upgraded)) // Non Upgraded
{
if( RandomInt( 100 ) < 70 )
self.freeze_enemy = true;
else
self.freeze_enemy = undefined;
}
else // Upgraded
{
if( RandomInt( 100 ) < 85 )
self.freeze_enemy = true;
else
self.freeze_enemy = undefined;
if (level.round_number <= 24)
self.freeze_enemy = true;
}
}
else
self.freeze_enemy = true;
original_zombie = player.freezegun_enemies[player.freezegun_enemies.size];
original_zombie = player.freezegun_enemies[player.freezegun_enemies.size];
// iprintln("freezegun death");
if(isDefined(player.freezegun_enemies) && player.freezegun_enemies.size > 0)
if(isDefined(player.freezegun_enemies) && player.freezegun_enemies.size > 0)
{
{
for(i=0;i<player.freezegun_enemies.size;i++)
for(i=0;i<player.freezegun_enemies.size;i++)
{
{
if(isdefined(self.freeze_enemy))
player.freezegun_enemies[i] thread freezegun_fx(); //if there are any nearby bitches, freeze their asses
{
player.freezegun_enemies[i] thread freezegun_death_reward(player, type, point); //give the shooter his points for popin' a cap in a bitch
player.freezegun_enemies[i] thread freezegun_fx();
player.freezegun_enemies[i] thread freezegun_wait_for_shoot_shatter(player, type, point);
player.freezegun_enemies[i] thread freezegun_death_reward(player, type, point);
player.freezegun_enemies[i] thread freezegun_wait_for_touch_shatter(player, type, point);
player.freezegun_enemies[i] thread freezegun_wait_for_shoot_shatter(player, type, point);
player.freezegun_enemies[i] thread freezegun_death_end(player, type, point);
player.freezegun_enemies[i] thread freezegun_wait_for_touch_shatter(player, type, point);
player.freezegun_enemies[i] thread freezegun_death_end(player, type, point);
}
else
{
if (!isdefined(player.freezegun_enemies[i].slow))
player.freezegun_enemies[i] thread slowdown_zombie();
else
{
player.freezegun_enemies[i] thread freezegun_fx();
player.freezegun_enemies[i] thread freezegun_death_reward(player, type, point);
player.freezegun_enemies[i] thread freezegun_wait_for_shoot_shatter(player, type, point);
player.freezegun_enemies[i] thread freezegun_wait_for_touch_shatter(player, type, point);
player.freezegun_enemies[i] thread freezegun_death_end(player, type, point);
}
}
}
}
maps\ugxm_challenges::SpecialChallengeFreezegunZombies(player.freezegun_enemies.size);
}
}
player.freezegun_enemies = [];
player.freezegun_enemies = []; //empty the array
}
}
freezegun_death_end(player, type, point)
freezegun_death_end(player, type, point)
{
{
self endon("death");
self endon("death");
wait(getanimlength(level._zombie_freezegun_death["zombie"]));
wait(getanimlength(level._zombie_freezegun_death["zombie"]));
PlayFx(level._effect["freezegun_shatter"], self getTagOrigin("J_MainRoot"));
PlayFx(level._effect["freezegun_shatter"], self getTagOrigin("J_MainRoot"));
thread spawn_sound("ice_break", self getTagOrigin("J_MainRoot"));
thread spawn_sound("fg_shatter", self getTagOrigin("J_MainRoot"));
self thread stop_magic_bullet_shield();
self thread stop_magic_bullet_shield();
new_origin = (self.freezegun_ice_fx.origin[0], self.freezegun_ice_fx.origin[1], self.origin[2]);
new_origin = (self.freezegun_ice_fx.origin[0], self.freezegun_ice_fx.origin[1], self.origin[2]);
self.freezegun_ice_fx delete();
self.freezegun_ice_fx delete();
self hide();
self hide(); // hide cuz dropping a powerup has a chance of taking some time
self drop_powerup_manually(player, new_origin);
self drop_powerup_manually(player, new_origin);
player maps\ugxm_challenges::WeaponChallenge(self, "freezegun_sp", "MOD_FREEZEGUN_NORMAL");
self delete();
self delete();
}
}
drop_powerup_manually(player, drop_origin)
drop_powerup_manually(player, drop_origin)
{
{
if(isDefined(level.ugxm_powerup_settings["using_custom_powerups"]) && level.ugxm_powerup_settings["using_custom_powerups"])
player maps\ugxm_powerups::powerup_drop( drop_origin, self );
else
level maps\_zombiemode_powerups::powerup_drop( drop_origin );
level maps\_zombiemode_powerups::powerup_drop( drop_origin );
}
}
spawn_sound(sound_name, origin)
spawn_sound(sound_name, origin)
{
{
sound = Spawn("script_origin", origin);
sound = Spawn("script_origin", origin);
sound PlaySound(sound_name);
sound PlaySound(sound_name);
wait 5;
wait 5;
sound delete();
sound delete(); // delete sounds otherwise you get a gspawn error
}
}
freezegun_get_enemies_in_range( upgraded, player, amount, point, type )
freezegun_get_enemies_in_range( upgraded, player, amount, point, type )
{
{
outer_range = 300;
outer_range = 300;
zombies = get_array_of_closest( point, GetAiSpeciesArray( "axis", "all" ), undefined, undefined, outer_range);
zombies = get_array_of_closest( point, GetAiSpeciesArray( "axis", "all" ), undefined, undefined, outer_range);
if(!isDefined(zombies))
if(!isDefined(zombies))
{
{
return;
return;
}
}
// else iPrintLn("# of zombies found nearby: "+zombies.size);
//else iPrintLn("# of zombies found nearby: "+zombies.size);
for(i=0;i<zombies.size;i++)
for(i=0;i<zombies.size;i++)
{
{
if(!isDefined(zombies[i]) || !isAlive(zombies[i]))
if(!isDefined(zombies[i]) || !isAlive(zombies[i]))
{
{
continue;
continue;
}
}
if(!within_fov(self GetEye(), self GetPlayerAngles(), zombies[i].origin, cos(30)))
if(!within_fov(self GetEye(), self GetPlayerAngles(), zombies[i].origin, cos(30)))
{
{
if(distance2d(zombies[i].origin, self.origin) > 175) //there is a flaw with within_fov where zombies who are in your face are excluded from the FOV. By exlcuding zombies that are close, this eliminates the bug
if(distance2d(zombies[i].origin, self.origin) > 175) //there is a flaw with within_fov where zombies who are in your face are excluded from the FOV. By exlcuding zombies that are close, this eliminates the bug
continue;
continue;
}
}
if (0 == zombies[i] DamageConeTrace(self.origin + (0,0, 72/2 + 10), self))
if (0 == zombies[i] DamageConeTrace(self.origin + (0,0, 72/2 + 10), self))
{
{
continue;
continue;
}
}
if(isdefined(zombies[i].boss_enemy))
if(zombies[i].isbosszombie)
{
{
//zombies[i] thread maps\ugxm_boss::boss_handle_freezegun(); // do this before the check for inground/traversing because this should always damage the boss
continue;
continue;
}
}
if(!zombies[i] inmap())
if(zombies[i].in_the_ground || zombies[i].currentlyTraversing || !zombies[i].found_flesh)
{
{
zombies[i] thread after_death_freeze_fx();
zombies[i] thread after_death_freeze_fx();
wait 0.01;
wait 0.01;
self maps\ugxm_challenges::WeaponChallenge(zombies[i], "freezegun_sp", "MOD_FREEZEGUN_INSTANTKILL");
zombies[i] DoDamage(zombies[i].health + 666, self.origin, self); //kill zombies who are rising/traversing instead of freezging
zombies[i] DoDamage(zombies[i].health + 666, self.origin, self); //kill zombies who are rising/traversing instead of freezging
continue;
continue;
}
}
if(!zombies[i].frozen)
if(!zombies[i].frozen)
{
{
player.freezegun_enemies[player.freezegun_enemies.size] = zombies[i];
player.freezegun_enemies[player.freezegun_enemies.size] = zombies[i];
zombies[i].frozen = true;
zombies[i].frozen = true;
}
}
}
}
}
}
slowdown_zombie()
{
if ( "sprint" == self.run_combatanim )
{
self.run_combatanim = level.scr_anim["zombie"]["run1"];
}
else
{
self.run_combatanim = level.scr_anim["zombie"]["walk1"];
}
self.slow = true;
wait .1;
self maps\_zombiemode_spawner::set_zombie_run_cycle( self.new_move_speed );
// Freeze FX
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Elbow_RI" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Elbow_LE" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Knee_RI" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Knee_LE" );
self.freezegun_ice_fx = Spawn( "script_model", self GetTagOrigin( "J_SpineLower" ) );
self.freezegun_ice_fx.angles = self GetTagAngles("J_SpineLower");
self.freezegun_ice_fx SetModel( "tag_origin" );
self.freezegun_ice_fx LinkTo( self, "J_SpineLower" );
PlayFxOnTag( level._effect[ "freezegun_damage_torso" ], self.freezegun_ice_fx, "tag_origin" );
}
freezegun_slowdown( player, amount )
freezegun_slowdown( player, amount )
{
{
self.freezegun_damage += amount;
self.freezegun_damage += amount;
new_move_speed = self.zombie_move_speed;
new_move_speed = self.zombie_move_speed;
percent_dmg = self enemy_percent_damaged_by_freezegun();
percent_dmg = self enemy_percent_damaged_by_freezegun();
if ( 0.66 <= percent_dmg )
if ( 0.66 <= percent_dmg )
{
{
new_move_speed = "walk";
new_move_speed = "walk";
}
}
else if ( 0.33 <= percent_dmg )
else if ( 0.33 <= percent_dmg )
{
{
if ( "sprint" == self.zombie_move_speed )
if ( "sprint" == self.zombie_move_speed )
{
{
new_move_speed = "run";
new_move_speed = "run";
}
}
else
else
{
{
new_move_speed = "walk";
new_move_speed = "walk";
}
}
}
}
if ( !self.isdog && self.zombie_move_speed != new_move_speed )
if ( !self.isdog && self.zombie_move_speed != new_move_speed )
{
{
maps\_zombiemode_spawner::set_zombie_run_cycle( new_move_speed );
maps\_zombiemode_spawner::set_zombie_run_cycle( new_move_speed );
}
}
}
}
freezegun_do_damage( upgraded, player, dist_ratio )
freezegun_do_damage( upgraded, player, dist_ratio )
{
{
damage = Int((freezegun_get_outer_damage(upgraded) + freezegun_get_inner_damage(upgraded)) * dist_ratio );
damage = Int((freezegun_get_outer_damage(upgraded) + freezegun_get_inner_damage(upgraded)) * dist_ratio );
self waittill("freezegun_do_damage"); //sent by _spawner after deathanim is set and fx are played
self waittill("freezegun_do_damage"); //sent by _spawner after deathanim is set and fx are played
self DoDamage( damage, player.origin, player, undefined, "projectile" );
self DoDamage( damage, player.origin, player, undefined, "projectile" );
self freezegun_debug_print( damage, (0, 1, 0) );
//self freezegun_debug_print( damage, (0, 1, 0) );
}
}
freezegun_fx()
freezegun_fx()
{
{
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Elbow_RI" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Elbow_RI" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Elbow_LE" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Elbow_LE" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Knee_RI" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Knee_RI" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Knee_LE" );
PlayFxOnTag( level._effect[ "freezegun_damage_sm" ], self, "J_Knee_LE" );
self thread magic_bullet_shield(); //dont let the engine take the death
self thread magic_bullet_shield(); //dont let the engine take the death
self.freezegun_ice_fx = Spawn( "script_model", self GetTagOrigin( "J_SpineLower" ) );
self.freezegun_ice_fx = Spawn( "script_model", self GetTagOrigin( "J_SpineLower" ) );
self.freezegun_ice_fx.angles = self GetTagAngles("J_SpineLower");
self.freezegun_ice_fx.angles = self GetTagAngles("J_SpineLower");
self.freezegun_ice_fx SetModel( "tag_origin" );
self.freezegun_ice_fx SetModel( "tag_origin" );
self.freezegun_ice_fx LinkTo( self, "J_SpineLower" );
self.freezegun_ice_fx LinkTo( self, "J_SpineLower" );
PlayFxOnTag( level._effect[ "freezegun_damage_torso" ], self.freezegun_ice_fx, "tag_origin" );
PlayFxOnTag( level._effect[ "freezegun_damage_torso" ], self.freezegun_ice_fx, "tag_origin" );
self model_playanim(level._zombie_freezegun_death["zombie"]);
self model_playanim(level._zombie_freezegun_death["zombie"]); //precached in ugx_freezegun.gsc, slows down zombie while he freezes
}
}
freezegun_wait_for_touch_shatter(player, type, point)
freezegun_wait_for_touch_shatter(player, type, point)
{
{
self endon("death");
self endon("death");
while(1)
while(1)
{
{
players = getplayers();
players = getplayers();
for(i=0;i<players.size;i++)
for(i=0;i<players.size;i++)
{
{
dist = distance(players[i].origin, self.origin);
dist = distance(players[i].origin, self.origin);
if(dist < 72)
if(dist < 72)
{
{
PlayFx(level._effect["freezegun_shatter"], self getTagOrigin("J_MainRoot"));
PlayFx(level._effect["freezegun_shatter"], self getTagOrigin("J_MainRoot"));
thread spawn_sound("ice_break", self getTagOrigin("J_MainRoot"));
thread spawn_sound("fg_shatter", self getTagOrigin("J_MainRoot"));
self thread stop_magic_bullet_shield();
self thread stop_magic_bullet_shield();
if (!isdefined(level.chaos_high_per))
level.chaos_percent += randomintrange(50,85);
new_origin = (self.freezegun_ice_fx.origin[0], self.freezegun_ice_fx.origin[1], self.origin[2]);
new_origin = (self.freezegun_ice_fx.origin[0], self.freezegun_ice_fx.origin[1], self.origin[2]);
self.freezegun_ice_fx delete();
self.freezegun_ice_fx delete();
self hide(); // hide cuz dropping a powerup has a chance of taking some time
self hide(); // hide cuz dropping a powerup has a chance of taking some time
self drop_powerup_manually(players[i], new_origin);
self drop_powerup_manually(players[i], new_origin);
players[i] maps\ugxm_challenges::WeaponChallenge(self, "freezegun_sp", "MOD_FREEZEGUN_TOUCH");
self delete();
self delete();
break;
break;
}
}
}
}
wait 0.05;
wait 0.05;
}
}
}
}
freezegun_wait_for_shoot_shatter(player, type, point)
freezegun_wait_for_shoot_shatter(player, type, point)
{
{
self endon("death");
self endon("death");
orig_attacker = self.attacker;
orig_attacker = self.attacker;
while(1)
while(1)
{
{
self waittill( "damage", amount, attacker, direction_vec, spot, mod ); //if the zomb gets shot again while he's freezing/frozen, check the attacker, then prematurely shatter him
self waittill( "damage", amount, attacker, direction_vec, spot, mod ); //if the zomb gets shot again while he's freezing/frozen, check the attacker, then prematurely shatter him
if(isDefined(attacker) && IsPlayer(attacker))//attacker == orig_attacker)
if(isDefined(attacker) && IsPlayer(attacker))//attacker == orig_attacker)
{
{
PlayFx(level._effect["freezegun_shatter"], self getTagOrigin("J_MainRoot"));
PlayFx(level._effect["freezegun_shatter"], self getTagOrigin("J_MainRoot"));
thread spawn_sound("ice_break", self getTagOrigin("J_MainRoot"));
thread spawn_sound("fg_shatter", self getTagOrigin("J_MainRoot"));
self thread stop_magic_bullet_shield();
self thread stop_magic_bullet_shield();
self notify("freezegun_do_damage");
self notify("freezegun_do_damage");
new_origin = (self.freezegun_ice_fx.origin[0], self.freezegun_ice_fx.origin[1], self.origin[2]);
new_origin = (self.freezegun_ice_fx.origin[0], self.freezegun_ice_fx.origin[1], self.origin[2]);
self.freezegun_ice_fx delete();
self.freezegun_ice_fx delete();
self hide(); // hide cuz dropping a powerup has a chance of taking some time
self hide(); // hide cuz dropping a powerup has a chance of taking some time
self drop_powerup_manually(player, new_origin);
self drop_powerup_manually(player, new_origin);
player maps\ugxm_challenges::WeaponChallenge(self, "freezegun_sp", "MOD_FREEZEGUN_SHOOT");
self delete();
self delete();
break;
break;
}
}
wait 0.05;
wait 0.05;
}
}
}
}
after_death_freeze_fx(fx1, fx2, fx3, fx4)
after_death_freeze_fx(fx1, fx2, fx3, fx4)
{
{
fx1 = self spawn_after_death_freeze_fx("J_Elbow_RI");
fx1 = self spawn_after_death_freeze_fx("J_Elbow_RI");
fx2 = self spawn_after_death_freeze_fx("J_Elbow_LE");
fx2 = self spawn_after_death_freeze_fx("J_Elbow_LE");
fx3 = self spawn_after_death_freeze_fx("J_Knee_RI");
fx3 = self spawn_after_death_freeze_fx("J_Knee_RI");
fx4 = self spawn_after_death_freeze_fx("J_Knee_LE");
fx4 = self spawn_after_death_freeze_fx("J_Knee_LE");
wait 7;
wait 7;
fx1 delete();
fx1 delete();
fx2 delete();
fx2 delete();
fx3 delete();
fx3 delete();
fx4 delete();
fx4 delete();
}
}
spawn_after_death_freeze_fx(tag)
spawn_after_death_freeze_fx(tag)
{
{
fx = Spawn( "script_model", self GetTagOrigin( tag ) );
fx = Spawn( "script_model", self GetTagOrigin( tag ) );
fx.angles = (0,0,0);
fx.angles = (0,0,0);
fx SetModel( "tag_origin" );
fx SetModel( "tag_origin" );
fx LinkTo( self, tag );
fx LinkTo( self, tag );
PlayFxOnTag( level.ugxm_fx["boss_frozen_smoke"], fx, "tag_origin" );
return fx;
return fx;
}
}
freezegun_death_reward(player, type, point)
freezegun_death_reward(player, type, point)
{
{
self waittill("death");
self waittill("death");
player maps\_zombiemode_score::player_add_points( "death", type, point , false);
player maps\_zombiemode_score::player_add_points( "death", type, point , false);
player.kills++;
player.kills++;
}
}
//Shithole
//Shithole
freezegun_debug_print( msg, color )
freezegun_debug_print( msg, color )
{
{
players = getplayers();
players = getplayers();
players[0] iPrintLn(msg);
//players[0] iPrintLn(msg);
}
}
model_playanim(animname)
model_playanim(animname)
{
{
self useanimtree(#animtree);
self useanimtree(#animtree);
self animscripted("test_anim",self.origin,self.angles, animname);
self animscripted("test_anim",self.origin,self.angles, animname);
}
}
enemy_percent_damaged_by_freezegun()
enemy_percent_damaged_by_freezegun()
{
{
return self.freezegun_damage / self.maxhealth;
return self.freezegun_damage / self.maxhealth;
}
}
freezegun_get_cylinder_radius( upgraded )
freezegun_get_cylinder_radius( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_cylinder_radius_upgraded"];
return level.zombie_vars["freezegun_cylinder_radius_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_cylinder_radius"];
return level.zombie_vars["freezegun_cylinder_radius"];
}
}
}
}
freezegun_get_inner_range( upgraded )
freezegun_get_inner_range( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_inner_range_upgraded"];
return level.zombie_vars["freezegun_inner_range_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_inner_range"];
return level.zombie_vars["freezegun_inner_range"];
}
}
}
}
freezegun_get_outer_range( upgraded )
freezegun_get_outer_range( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_outer_range_upgraded"];
return level.zombie_vars["freezegun_outer_range_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_outer_range"];
return level.zombie_vars["freezegun_outer_range"];
}
}
}
}
freezegun_get_inner_damage( upgraded )
freezegun_get_inner_damage( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_inner_damage_upgraded"];
return level.zombie_vars["freezegun_inner_damage_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_inner_damage"];
return level.zombie_vars["freezegun_inner_damage"];
}
}
}
}
freezegun_get_outer_damage( upgraded )
freezegun_get_outer_damage( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_outer_damage_upgraded"];
return level.zombie_vars["freezegun_outer_damage_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_outer_damage"];
return level.zombie_vars["freezegun_outer_damage"];
}
}
}
}
freezegun_get_shatter_range( upgraded )
freezegun_get_shatter_range( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_shatter_range_upgraded"];
return level.zombie_vars["freezegun_shatter_range_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_shatter_range"];
return level.zombie_vars["freezegun_shatter_range"];
}
}
}
}
freezegun_get_shatter_inner_damage( upgraded )
freezegun_get_shatter_inner_damage( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_shatter_inner_damage_upgraded"];
return level.zombie_vars["freezegun_shatter_inner_damage_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_shatter_inner_damage"];
return level.zombie_vars["freezegun_shatter_inner_damage"];
}
}
}
}
freezegun_get_shatter_outer_damage( upgraded )
freezegun_get_shatter_outer_damage( upgraded )
{
{
if ( upgraded )
if ( upgraded )
{
{
return level.zombie_vars["freezegun_shatter_outer_damage_upgraded"];
return level.zombie_vars["freezegun_shatter_outer_damage_upgraded"];
}
}
else
else
{
{
return level.zombie_vars["freezegun_shatter_outer_damage"];
return level.zombie_vars["freezegun_shatter_outer_damage"];
}
}
}
}
inMap() // If target is in playable area
{
playableArea = getEntArray("playable_area", "targetname");
for(m = 0; m < playableArea.size; m++)
if(self isTouching(playableArea[m]))
return true;
return false;
}