Add assets for zm_ai_pack mod.

This commit is contained in:
JezuzLizard
2024-01-07 18:35:38 -08:00
parent c8972ced8b
commit edbacfed4c
345 changed files with 53950 additions and 0 deletions

View File

@ -0,0 +1,91 @@
// T6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
#include clientscripts\mp\_utility;
#include clientscripts\mp\zombies\_zm_utility;
precache()
{
}
main()
{
if ( getDvar( "mapname" ) == "zm_prison" )
{
return;
}
registerclientfield( "actor", "helmet_off", 9000, 1, "int", ::brutus_helmet_launch_cb );
registerclientfield( "actor", "brutus_lock_down", 9000, 1, "int", ::brutus_lock_down_effects_cb );
registerbrutusfootstepcb( "zm_alcatraz_brutus", ::brutusfootstepcbfunc );
}
brutus_helmet_launch_cb( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
{
if ( is_true( self.helmet_launched ) )
return;
if ( newval )
{
self.helmet_launched = 1;
createdynentandlaunch( localclientnum, "c_zom_cellbreaker_helmet", self.origin + vectorscale( ( 0, 0, 1 ), 85.0 ), self.angles, self.origin + vectorscale( ( 0, 0, 1 ), 85.0 ), anglestoforward( self.angles ) );
}
}
brutus_lock_down_effects_cb( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
{
if ( bwasdemojump )
return;
if ( bnewent )
{
/#
println( "LDS: NewEnt!" );
#/
}
if ( binitialsnap )
{
/#
println( "LDS: InitialSnap!" );
#/
}
player = getlocalplayer( localclientnum );
player earthquake( 0.7, 1, self.origin, 1500 );
playrumbleonposition( localclientnum, "explosion_generic", self.origin );
}
brutusfootstepcbfunc( localclientnum, pos, surface, notetrack, bone )
{
players = getlocalplayers();
for ( i = 0; i < players.size; i++ )
{
if ( abs( self.origin[2] - players[i].origin[2] ) < 100 )
{
players[i] earthquake( 0.5, 0.1, self.origin, 1500 );
playerlocalclientnum = players[i] getlocalclientnumber();
if ( isdefined( playerlocalclientnum ) )
playrumbleonposition( playerlocalclientnum, "brutus_footsteps", self.origin );
}
}
footstepdoeverything();
}
registerbrutusfootstepcb( aitype, func )
{
if ( !isdefined( level._footstepcbfuncs ) )
level._footstepcbfuncs = [];
if ( isdefined( level._footstepcbfuncs[aitype] ) )
{
/#
println( "Attempting to register footstep callback function for ai type " + aitype + " multiple times." );
#/
return;
}
level._footstepcbfuncs[aitype] = func;
}

View File

@ -0,0 +1,319 @@
// T6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
#include clientscripts\mp\_utility;
#include clientscripts\mp\zombies\_zm_utility;
precache()
{
}
#using_animtree("mechz_claw");
init_animtree()
{
scriptmodelsuseanimtree( #animtree );
}
add_fx_element( index, fx_element, tag_name, min_freq, max_freq )
{
if ( !isdefined( level.mechz_clientside_fx ) )
level.mechz_clientside_fx = [];
if ( !isdefined( level.mechz_clientside_fx_inst ) )
level.mechz_clientside_fx_inst = [];
if ( !isdefined( level.mechz_clientside_fx[index] ) )
level.mechz_clientside_fx[index] = [];
if ( !isdefined( level.mechz_clientside_fx_inst[index] ) )
level.mechz_clientside_fx_inst[index] = [];
new_fx_struct = spawnstruct();
new_fx_struct.fx_element = loadfx( fx_element );
new_fx_struct.tag_name = tag_name;
new_fx_struct.min_freq = min_freq;
new_fx_struct.max_freq = max_freq;
curr_size = level.mechz_clientside_fx[index].size;
level.mechz_clientside_fx[index][curr_size] = new_fx_struct;
}
main()
{
if ( getDvar( "mapname" ) == "zm_tomb" )
{
return;
}
clientscripts\mp\zombies\_callbacks::onfinalizeinitialization_callback( ::mechz_clientfields );
}
mechz_clientfields()
{
registerclientfield( "actor", "mechz_fx", 14000, 12, "int", ::mechz_handle_fx );
registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int", ::mechz_claw_callback );
registerclientfield( "actor", "anim_rate", 14000, 2, "float", undefined, 0 );
setupclientfieldanimspeedcallbacks( "actor", 1, "anim_rate" );
}
init()
{
add_fx_element( 0, "maps/zombie_tomb/fx_tomb_mech_dmg_armor", "J_Knee_Attach_LE" );
add_fx_element( 0, "maps/zombie_tomb/fx_tomb_mech_dmg_sparks", "J_Knee_Attach_LE", 0.25, 0.75 );
add_fx_element( 0, "maps/zombie_tomb/fx_tomb_mech_dmg_steam", "J_Knee_Attach_LE", 0.1, 0.3 );
add_fx_element( 1, "maps/zombie_tomb/fx_tomb_mech_dmg_armor", "J_Knee_Attach_RI" );
add_fx_element( 1, "maps/zombie_tomb/fx_tomb_mech_dmg_sparks", "J_Knee_Attach_RI", 0.25, 0.75 );
add_fx_element( 1, "maps/zombie_tomb/fx_tomb_mech_dmg_steam", "J_Knee_Attach_RI", 0.1, 0.3 );
add_fx_element( 2, "maps/zombie_tomb/fx_tomb_mech_dmg_armor", "J_ShoulderArmor_LE" );
add_fx_element( 2, "maps/zombie_tomb/fx_tomb_mech_dmg_sparks", "J_ShoulderArmor_LE", 0.25, 0.75 );
add_fx_element( 2, "maps/zombie_tomb/fx_tomb_mech_dmg_steam", "J_ShoulderArmor_LE", 0.1, 0.3 );
add_fx_element( 3, "maps/zombie_tomb/fx_tomb_mech_dmg_armor", "J_ShoulderArmor_RI" );
add_fx_element( 3, "maps/zombie_tomb/fx_tomb_mech_dmg_sparks", "J_ShoulderArmor_RI", 0.25, 0.75 );
add_fx_element( 3, "maps/zombie_tomb/fx_tomb_mech_dmg_steam", "J_ShoulderArmor_RI", 0.1, 0.3 );
add_fx_element( 4, "maps/zombie_tomb/fx_tomb_mech_dmg_sparks", "J_Root_Attach_RI", 0.25, 0.75 );
add_fx_element( 4, "maps/zombie_tomb/fx_tomb_mech_dmg_steam", "J_Root_Attach_RI", 0.1, 0.3 );
add_fx_element( 5, "maps/zombie_tomb/fx_tomb_mech_dmg_sparks", "J_Root_Attach_LE", 0.25, 0.75 );
add_fx_element( 5, "maps/zombie_tomb/fx_tomb_mech_dmg_steam", "J_Root_Attach_LE", 0.1, 0.3 );
add_fx_element( 6, "maps/zombie_tomb/fx_tomb_mech_wpn_flamethrower", "tag_flamethrower_FX", 0.25 );
add_fx_element( 7, "maps/zombie_tomb/fx_tomb_mech_jump_booster", "tag_booster_LE_FX", 0.25 );
add_fx_element( 7, "maps/zombie_tomb/fx_tomb_mech_jump_booster", "tag_booster_RI_FX", 0.25 );
add_fx_element( 7, "maps/zombie_tomb/fx_tomb_mech_jump_booster_sm", "tag_leg_booster_LE_FX", 0.25 );
add_fx_element( 7, "maps/zombie_tomb/fx_tomb_mech_jump_booster_sm", "tag_leg_booster_RI_FX", 0.25 );
add_fx_element( 8, "maps/zombie_tomb/fx_tomb_mech_wpn_source", "tag_claw", 0.5 );
add_fx_element( 9, "maps/zombie_tomb/fx_tomb_mech_jump_landing", "tag_origin" );
add_fx_element( 10, "maps/zombie_tomb/fx_tomb_mech_dmg_armor_face", "J_Helmet" );
add_fx_element( 11, "maps/zombie_tomb/fx_tomb_mech_head_light", "tag_headlamp_FX" );
registermechzfootstepcb( "zm_tomb_mech_zombie", ::mechzfootstepcbfunc );
level._effect["mech_footstep_steam"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_foot_step_steam" );
level._effect["mech_exhaust_smoke"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_exhaust_smoke" );
init_animtree();
}
setup_fx( localclientnum, index, bnewent, binitialsnap, fieldname, bwasdemojump )
{
if ( !is_true( self.fx_initialized ) )
{
self.fx_initialized = 1;
self.smoke_fx = playfxontag( localclientnum, level._effect["mech_exhaust_smoke"], self, "tag_back_exhaust_FX" );
self setsoundentcontext( "f35", "interior" );
}
if ( index == 10 )
self setsoundentcontext( "f35", "exterior" );
for ( i = 0; i < level.mechz_clientside_fx[index].size; i++ )
{
fx_struct = level.mechz_clientside_fx[index][i];
unique_script_id = "kill_fx_" + index + "_" + self getentitynumber();
self thread sndplayfxloops( localclientnum, index, fx_struct.tag_name );
if ( isdefined( fx_struct.min_freq ) )
{
self thread mechz_do_manual_looping_fx( localclientnum, unique_script_id, fx_struct.tag_name, fx_struct.fx_element, fx_struct.min_freq, fx_struct.max_freq );
continue;
}
self thread mechz_do_auto_looping_fx( localclientnum, index, fx_struct.tag_name, fx_struct.fx_element );
}
}
cleanup_fx( localclientnum, index, bnewent, binitialsnap, fieldname, bwasdemojump )
{
unique_script_id = "kill_fx_" + index + "_" + self getentitynumber();
fx_array = level.mechz_clientside_fx_inst[index];
if ( isdefined( fx_array ) && fx_array.size > 0 )
{
for ( i = fx_array.size - 1; i >= 0; i-- )
{
stopfx( localclientnum, fx_array[i] );
fx_array[i] = undefined;
}
}
self notify( unique_script_id );
}
mechz_handle_fx( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
{
for ( i = 0; i < level.mechz_clientside_fx.size; i++ )
{
set_in_new = ( newval & 1 << i ) != 0;
set_in_old = ( oldval & 1 << i ) != 0;
if ( set_in_new && !set_in_old )
{
self thread setup_fx( localclientnum, i, bnewent, binitialsnap, fieldname, bwasdemojump );
continue;
}
if ( !set_in_new && set_in_old )
self thread cleanup_fx( localclientnum, i, bnewent, binitialsnap, fieldname, bwasdemojump );
}
if ( !newval && is_true( self.fx_initialized ) )
{
self.fx_initialized = 0;
if ( isdefined( self.smoke_fx ) )
deletefx( localclientnum, self.smoke_fx );
}
}
mechz_do_manual_looping_fx( localclientnum, script_id, tag_name, fx_element, min_wait, max_wait )
{
self endon( script_id );
self endon( "death" );
if ( !isdefined( min_wait ) )
{
playfxontag( localclientnum, fx_element, self, tag_name );
return;
}
if ( !isdefined( max_wait ) )
max_wait = min_wait;
while ( true )
{
if ( !isdefined( self ) )
return;
playfxontag( localclientnum, fx_element, self, tag_name );
//waitrealtime( randomfloatrange( min_wait, max_wait ) );
wait randomfloatrange( min_wait, max_wait );
}
}
mechz_do_auto_looping_fx( localclientnum, index, tag_name, fx_element )
{
curr_size = level.mechz_clientside_fx_inst[index].size;
level.mechz_clientside_fx_inst[index][curr_size] = playfxontag( localclientnum, fx_element, self, tag_name );
}
mechz_screen_shake_loop( localclientnum )
{
self endon( "death" );
self endon( "disconnect" );
self endon( "kill_screen_shake" );
while ( true )
{
self playrumbleonentity( localclientnum, "mechz_footsteps" );
//waitrealtime( 0.1 );
wait 0.1;
}
}
mechz_claw_callback( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
{
if ( oldval == 1 && newval == 0 )
{
self stoprumble( localclientnum, "mechz_footsteps" );
self notify( "kill_screen_shake" );
}
else if ( newval == 1 )
self thread mechz_screen_shake_loop( localclientnum );
}
mechzfootstepcbfunc( localclientnum, pos, surface, notetrack, bone )
{
players = getlocalplayers();
for ( i = 0; i < players.size; i++ )
{
if ( !players[i] isplayer() )
continue;
if ( abs( self.origin[2] - players[i].origin[2] ) < 100 )
{
n_distance = distance2d( self.origin, players[i].origin );
if ( n_distance < 1500 && n_distance > 750 )
{
if ( !is_true( players[i].mechz_camshake ) )
{
players[i] earthquake( 0.25, 0.1, self.origin, 1500 );
players[i] thread prevent_camshake_stacking();
}
playerlocalclientnum = players[i] getlocalclientnumber();
if ( isdefined( playerlocalclientnum ) )
playrumbleonposition( playerlocalclientnum, "shotgun_fire", self.origin );
continue;
}
if ( n_distance < 750 )
{
if ( !is_true( players[i].mechz_camshake ) )
{
players[i] earthquake( 0.35, 0.1, self.origin, 750 );
players[i] thread prevent_camshake_stacking();
}
playerlocalclientnum = players[i] getlocalclientnumber();
if ( isdefined( playerlocalclientnum ) )
playrumbleonposition( playerlocalclientnum, "mechz_footsteps", self.origin );
}
}
}
if ( bone == "j_ball_ri" )
playfxontag( localclientnum, level._effect["mech_footstep_steam"], self, "tag_foot_steam_RI" );
else if ( bone == "j_ball_le" )
playfxontag( localclientnum, level._effect["mech_footstep_steam"], self, "tag_foot_steam_LE" );
footstepdoeverything();
}
prevent_camshake_stacking()
{
self.mechz_camshake = 1;
wait 0.1;
self.mechz_camshake = 0;
}
registermechzfootstepcb( aitype, func )
{
if ( !isdefined( level._footstepcbfuncs ) )
level._footstepcbfuncs = [];
if ( isdefined( level._footstepcbfuncs[aitype] ) )
{
/#
println( "Attempting to register footstep callback function for ai type " + aitype + " multiple times." );
#/
return;
}
level._footstepcbfuncs[aitype] = func;
}
sndplayfxloops( localclientnum, index, tag_name )
{
if ( index == 6 )
self thread sndflamethrower_start( localclientnum, index, tag_name );
}
sndflamethrower_start( localclientnum, index, tag_name )
{
self endon( "stop_flamethrower" );
sndorigin = self gettagorigin( tag_name );
sndent = spawn( 0, sndorigin, "script_origin" );
sndent linkto( self, tag_name );
sndent playsound( 0, "zmb_ai_mechz_flame_start" );
sndent playloopsound( "zmb_ai_mechz_flame_loop", 0.6 );
self thread sndflamethrower_stop( sndent, index );
}
sndflamethrower_stop( ent, index )
{
notify_name = "kill_fx_" + index + "_" + self getentitynumber();
self waittill( notify_name );
ent playsound( 0, "zmb_ai_mechz_flame_stop" );
ent stoploopsound( 0.25 );
wait 1;
ent delete();
}

View File

@ -0,0 +1,33 @@
// T6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
#include clientscripts\mp\_utility;
#include clientscripts\mp\zombies\_zm_utility;
#include clientscripts\mp\_visionset_mgr;
precache()
{
}
main()
{
if ( getDvar( "mapname" ) == "zm_transit" )
{
return;
}
clientscripts\mp\zombies\_callbacks::onfinalizeinitialization_callback( ::screecher_clientfields );
}
screecher_clientfields()
{
clientscripts\mp\_visionset_mgr::vsmgr_register_overlay_info_style_blur( "zm_ai_screecher_blur", 1, 1, 0.1, 0.25, 4 );
registerclientfield( "actor", "render_third_person", 1, 1, "int", ::screecher_render_clientfield_cb, 0 );
}
screecher_render_clientfield_cb( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
{
if ( newval )
self setrenderinthirdpersonspectate( 1 );
else
self setrenderinthirdpersonspectate( 0 );
}

View File

@ -0,0 +1,161 @@
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include common_scripts\utility;
#include maps\mp\zombies\_zm_ai_mechz;
#include maps\mp\zombies\_zm_ai_screecher;
/*
{
"classname" "actor_zm_buried_sloth"
"model" "c_zom_dunk_fb"
"export" "14"
"spawnflags" "3"
"origin" "-117 472 16"
"script_noteworthy" "sloth_zombie_spawner"
"script_forcespawn" "1"
"count" "9999"
"guid" "AAE258C6"
}
{
"script_forcespawn" "1"
"spawnflags" "3"
"export" "9"
"model" "c_zom_zombie_buried_ghost_woman_fb"
"classname" "actor_zm_buried_ghost_female"
"targetname" "female_ghost"
"script_noteworthy" "ghost_zombie_spawner"
"count" "9999"
"origin" "-168 473 16"
"guid" "B6A85D0D"
}
{
"origin" "-64 0 0"
"script_disable_bleeder" "1"
"script_noteworthy" "screecher_zombie_spawner"
"spawnflags" "3"
"export" "135"
"model" "c_zom_screecher_fb"
"classname" "actor_zm_transit_screecher"
"script_forcespawn" "1"
"count" "9999"
"guid" "FC2F54CC"
}
{
"classname" "actor_zm_transit_avogadro"
"model" "c_zom_electrician_fb"
"export" "138"
"origin" "120 1 39"
"count" "9999"
"spawnflags" "3"
"script_disable_bleeder" "1"
"script_forcespawn" "1"
"script_noteworthy" "avogadro_zombie_spawner"
"guid" "EB278249"
}
{
"classname" "actor_zombie_dog"
"model" "zombie_wolf"
"export" "1"
"spawnflags" "17"
"origin" "0 0 0"
"script_noteworthy" "zombie_dog_spawner"
"guid" "10894F27"
}
{
"classname" "actor_zm_highrise_leaper"
"model" "c_zom_quad_body"
"export" "5"
"spawnflags" "3"
"script_disable_bleeder" "1"
"script_forcespawn" "1"
"script_noteworthy" "leaper_zombie_spawner"
"count" "9999"
"origin" "1184 1264 3408"
"guid" "26D0C557"
}
{
"origin" "-6 194 4088"
"export" "1"
"model" "veh_t6_dlc_zm_mech"
"classname" "actor_zm_tomb_mech_zombie"
"script_noteworthy" "mechz_spawner"
"spawnflags" "1"
"guid" "8115A178"
}
{
"classname" "actor_zm_tomb_giant_robot_0"
"model" "veh_t6_dlc_zm_robot"
"export" "4"
"spawnflags" "23"
"origin" "-2784 5600 -4480"
"targetname" "ai_giant_robot_0"
"guid" "87C1A304"
}
{
"classname" "actor_zm_tomb_giant_robot_1"
"model" "veh_t6_dlc_zm_robot"
"export" "6"
"spawnflags" "23"
"origin" "-2784 7776 -4480"
"targetname" "ai_giant_robot_1"
"guid" "DB9B4302"
}
{
"classname" "actor_zm_tomb_giant_robot_2"
"model" "veh_t6_dlc_zm_robot"
"export" "8"
"spawnflags" "23"
"origin" "-2784 10240 -4480"
"targetname" "ai_giant_robot_2"
"guid" "CE9DDEC4"
}
{
"classname" "actor_zm_alcatraz_brutus"
"model" "c_zom_cellbreaker_fb"
"export" "2"
"angles" "0 180 0"
"spawnflags" "3"
"script_noteworthy" "brutus_zombie_spawner"
"origin" "1824 10968 1352"
"guid" "6B553A99"
}
*/
init()
{
level.player_out_of_playable_area_monitor = false;
flag_wait( "initial_blackscreen_passed" );
//brutus_spawners = getEntArray( "brutus_zombie_spawner", "script_noteworthy" );
//giant_robot0_spawners = getEntArray( "ai_giant_robot_0", "targetname" );
//giant_robot1_spawners = getEntArray( "ai_giant_robot_1", "targetname" );
//giant_robot2_spawners = getEntArray( "ai_giant_robot_2", "targetname" );
//leaper_spawners = getEntArray( "leaper_zombie_spawner", "script_noteworthy" );
//mechz_spawners = getEntArray( "mechz_spawner", "script_noteworthy" );
//zombie_dog_spawners = getEntArray( "zombie_dog_spawner", "script_noteworthy" );
//avogadro_spawners = getEntArray( "avogadro_zombie_spawner", "script_noteworthy" );
//screecher_spawners = getEntArray( "screecher_zombie_spawner", "script_noteworthy" );
//ghost_spawners = getEntArray( "ghost_zombie_spawner", "script_noteworthy" );
//sloth_spawners = getEntArray( "sloth_zombie_spawner", "script_noteworthy" );
origin = level.players[ 0 ].origin;
//spawn_guy( brutus_spawners, origin );
//spawn_guy( giant_robot0_spawners, origin );
//spawn_guy( mechz_spawners, origin );
//spawn_guy( zombie_dog_spawners, origin );
//spawn_guy( avogadro_spawners, origin );
//spawn_guy( screecher_spawners, origin );
//spawn_guy( ghost_spawners, origin );
//spawn_guy( sloth_spawners, origin );
}
spawn_guy( spawners, origin )
{
if ( !isDefined( spawners ) )
{
return;
}
guy = spawners[ 0 ] spawnactor();
guy forceteleport( spawners[ 0 ].origin );
guy.origin = origin;
}

View File

@ -0,0 +1,8 @@
main()
{
maps\mp\zombies\_zm_ai_brutus::main();
}
init()
{
}

View File

@ -0,0 +1,128 @@
#include maps\mp\zombies\_zm_utility;
#include common_scripts\utility;
#include maps\mp\_utility;
main()
{
level thread on_player_connect();
level thread command_thread();
maps\mp\zombies\_zm_ai_mechz::precache();
maps\mp\_utility::onfinalizeinitialization_callback( ::register_clientfields );
}
init()
{
maps\mp\zombies\_zm_ai_mechz::init();
}
register_clientfields()
{
registerclientfield( "actor", "mechz_fx", 14000, 12, "int" );
registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int" );
registerclientfield( "actor", "anim_rate", 14000, 2, "float" );
}
command_thread()
{
for (;;)
{
level waittill( "say", message, player, is_hidden );
if ( message == "print" )
{
player iPrintLn( player.origin );
}
else if ( message == "zone" )
{
player iPrintLn( player maps\mp\zombies\_zm_zonemgr::get_player_zone() );
}
}
}
on_player_connect()
{
while ( true )
{
level waittill( "connected", player );
player thread zone_hud();
}
}
zone_hud()
{
self endon("disconnect");
x = 5;
y = -119;
if (level.script == "zm_buried")
{
y -= 25;
}
else if (level.script == "zm_tomb")
{
y -= 60;
}
zone_hud = newClientHudElem(self);
zone_hud.alignx = "left";
zone_hud.aligny = "middle";
zone_hud.horzalign = "user_left";
zone_hud.vertalign = "user_bottom";
zone_hud.x += x;
zone_hud.y += y;
zone_hud.fontscale = 1.4;
zone_hud.alpha = 0;
zone_hud.color = ( 1, 1, 1 );
zone_hud.hidewheninmenu = 1;
zone_hud.foreground = 1;
zone_hud endon("death");
zone_hud thread destroy_on_intermission();
flag_wait( "initial_blackscreen_passed" );
zone = self get_current_zone();
prev_zone = zone;
zone_hud settext(zone);
zone_hud.alpha = 1;
while (1)
{
zone = self get_current_zone();
if(prev_zone != zone)
{
prev_zone = zone;
zone_hud fadeovertime(0.25);
zone_hud.alpha = 0;
wait 0.25;
zone_hud settext(zone);
zone_hud fadeovertime(0.25);
zone_hud.alpha = 1;
wait 0.25;
continue;
}
wait 0.05;
}
}
destroy_on_intermission()
{
self endon("death");
level waittill("intermission");
if(isDefined(self.elemtype) && self.elemtype == "bar")
{
self.bar destroy();
self.barframe destroy();
}
self destroy();
}

View File

@ -0,0 +1,17 @@
main()
{
maps\mp\zombies\_zm_ai_screecher::precache();
maps\mp\_utility::onfinalizeinitialization_callback( ::register_clientfields );
}
init()
{
maps\mp\zombies\_zm_ai_screecher::init();
}
register_clientfields()
{
maps\mp\_visionset_mgr::vsmgr_register_info( "overlay", "zm_ai_screecher_blur", 1, level.vsmgr_prio_overlay_zm_ai_screecher_blur, 1, 1, maps\mp\_visionset_mgr::vsmgr_timeout_lerp_thread_per_player, 0 );
registerclientfield( "actor", "render_third_person", 1, 1, "int" );
}