mirror of
https://github.com/JezuzLizard/t6-fastfile-mods.git
synced 2025-04-20 21:45:44 +00:00
Add ghost and add all anims to zm_all_basic.
Add all scripts to mod zones.
This commit is contained in:
parent
39acd2f339
commit
047834cd80
@ -764,6 +764,7 @@ zm_traverse : aliased restart notify traverse_anim
|
|||||||
jump_up_to_climb ai_zombie_jump_up_2_climb
|
jump_up_to_climb ai_zombie_jump_up_2_climb
|
||||||
// jump_up_to_climb_coast ai_zombie_jump_up_2_climb_coast
|
// jump_up_to_climb_coast ai_zombie_jump_up_2_climb_coast
|
||||||
mantle_over_40_hurdle ai_zombie_traverse_v6
|
mantle_over_40_hurdle ai_zombie_traverse_v6
|
||||||
|
/*
|
||||||
traverse_diner_roof ai_zombie_traverse_diner_roof
|
traverse_diner_roof ai_zombie_traverse_diner_roof
|
||||||
traverse_diner_roof_up ai_zombie_jump_up_diner_roof
|
traverse_diner_roof_up ai_zombie_jump_up_diner_roof
|
||||||
traverse_diner_roof_hatch_up ai_zombie_diner_roof_hatch_jump_up
|
traverse_diner_roof_hatch_up ai_zombie_diner_roof_hatch_jump_up
|
||||||
@ -773,14 +774,15 @@ zm_traverse : aliased restart notify traverse_anim
|
|||||||
traverse_car_reverse ai_zombie_traverse_car_pass_to_driver_side
|
traverse_car_reverse ai_zombie_traverse_car_pass_to_driver_side
|
||||||
traverse_diner_counter_reverse ai_zombie_traverse_diner_counter_from_stools
|
traverse_diner_counter_reverse ai_zombie_traverse_diner_counter_from_stools
|
||||||
traverse_diner_counter ai_zombie_traverse_diner_counter_to_stools
|
traverse_diner_counter ai_zombie_traverse_diner_counter_to_stools
|
||||||
|
*/
|
||||||
traverse_garage_door ai_zombie_traverse_garage_roll
|
traverse_garage_door ai_zombie_traverse_garage_roll
|
||||||
jump_up_startrailing ai_zombie_jump_up_startrailing
|
jump_up_startrailing ai_zombie_jump_up_startrailing
|
||||||
jump_down_startrailing ai_zombie_jump_down_startrailing
|
jump_down_startrailing ai_zombie_jump_down_startrailing
|
||||||
|
|
||||||
jump_up_grabbed_48 ai_zombie_jump_up_grabbed_48
|
jump_up_grabbed_48 ai_zombie_jump_up_grabbed_48
|
||||||
traverse_48 ai_zombie_traverse_48
|
traverse_48 ai_zombie_traverse_48
|
||||||
traverse_garage_door ai_zombie_traverse_garage_roll
|
|
||||||
|
|
||||||
|
/*
|
||||||
jump_down_cellblock ai_zombie_sprint_jump_down_cellblock
|
jump_down_cellblock ai_zombie_sprint_jump_down_cellblock
|
||||||
jump_up_cellblock ai_zombie_sprint_jump_up_cellblock
|
jump_up_cellblock ai_zombie_sprint_jump_up_cellblock
|
||||||
climb_over_dock_fence ai_zombie_climb_over_dock_fence
|
climb_over_dock_fence ai_zombie_climb_over_dock_fence
|
||||||
@ -793,6 +795,7 @@ zm_traverse : aliased restart notify traverse_anim
|
|||||||
cellblock_jump_up_climb ai_zombie_jump_up_2_climb
|
cellblock_jump_up_climb ai_zombie_jump_up_2_climb
|
||||||
dock_mid_way_jump_up_climb ai_zombie_jump_up_dock_middle
|
dock_mid_way_jump_up_climb ai_zombie_jump_up_dock_middle
|
||||||
dock_tommygun_dropdown ai_zombie_jump_down_dock_tommygun
|
dock_tommygun_dropdown ai_zombie_jump_down_dock_tommygun
|
||||||
|
*/
|
||||||
|
|
||||||
// zm_highrise specific traversals
|
// zm_highrise specific traversals
|
||||||
dierise_traverse_1_high_to_low ai_zombie_traverse_dierise_1_high_to_low
|
dierise_traverse_1_high_to_low ai_zombie_traverse_dierise_1_high_to_low
|
||||||
@ -979,7 +982,7 @@ zm_traverse_crawl : aliased restart missing_legs notify traverse_anim
|
|||||||
jump_up_grabbed_48_crawl ai_zombie_crawl_jump_up_grabbed_48
|
jump_up_grabbed_48_crawl ai_zombie_crawl_jump_up_grabbed_48
|
||||||
traverse_48_crawl ai_zombie_crawl_traverse_48
|
traverse_48_crawl ai_zombie_crawl_traverse_48
|
||||||
traverse_garage_door_crawl ai_zombie_crawl
|
traverse_garage_door_crawl ai_zombie_crawl
|
||||||
|
/*
|
||||||
// zm_highrise specific traversals
|
// zm_highrise specific traversals
|
||||||
dierise_traverse_1_high_to_low_crawl ai_zombie_crawl_traverse_dierise_1_high_to_low
|
dierise_traverse_1_high_to_low_crawl ai_zombie_crawl_traverse_dierise_1_high_to_low
|
||||||
// dierise_traverse_1_low_to_high_crawl ai_zombie_crawl_traverse_dierise_1_low_to_high
|
// dierise_traverse_1_low_to_high_crawl ai_zombie_crawl_traverse_dierise_1_low_to_high
|
||||||
@ -1068,6 +1071,7 @@ zm_traverse_crawl : aliased restart missing_legs notify traverse_anim
|
|||||||
vault_barbedwire_48_crawl ai_zombie_crawl_vaultover_barbedwire
|
vault_barbedwire_48_crawl ai_zombie_crawl_vaultover_barbedwire
|
||||||
vault_barbedwire_24_crawl ai_zombie_crawl_vaultover_barbedwire_24
|
vault_barbedwire_24_crawl ai_zombie_crawl_vaultover_barbedwire_24
|
||||||
jump_down_church_crawl ai_zombie_crawl_jump_down_church
|
jump_down_church_crawl ai_zombie_crawl_jump_down_church
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
//traverse anims, not all necessarily used on every level
|
//traverse anims, not all necessarily used on every level
|
||||||
|
@ -11372,3 +11372,15 @@
|
|||||||
"origin" "367 454 -60"
|
"origin" "367 454 -60"
|
||||||
"guid" "76357ECA"
|
"guid" "76357ECA"
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
2786
zm_ai_pack/maps/mp/zombies/_zm_ai_ghost.gsc
Normal file
2786
zm_ai_pack/maps/mp/zombies/_zm_ai_ghost.gsc
Normal file
File diff suppressed because it is too large
Load Diff
308
zm_ai_pack/maps/mp/zombies/_zm_ai_ghost_ffotd.gsc
Normal file
308
zm_ai_pack/maps/mp/zombies/_zm_ai_ghost_ffotd.gsc
Normal file
@ -0,0 +1,308 @@
|
|||||||
|
// T6 GSC SOURCE
|
||||||
|
// Generated by https://github.com/xensik/gsc-tool
|
||||||
|
#include common_scripts\utility;
|
||||||
|
#include maps\mp\_utility;
|
||||||
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
#include maps\mp\zm_buried;
|
||||||
|
#include maps\mp\zombies\_zm_zonemgr;
|
||||||
|
#include maps\mp\zombies\_zm_ai_ghost;
|
||||||
|
|
||||||
|
ghost_init_start()
|
||||||
|
{
|
||||||
|
level ghost_bad_path_init();
|
||||||
|
level.is_player_in_ghost_zone = ::is_player_in_ghost_zone;
|
||||||
|
level ghost_bad_spawn_zone_init();
|
||||||
|
level.ghost_round_start_monitor_time = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_init_end()
|
||||||
|
{
|
||||||
|
disable_traversal_clip_around_mansion();
|
||||||
|
}
|
||||||
|
|
||||||
|
prespawn_start()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
prespawn_end()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_round_start()
|
||||||
|
{
|
||||||
|
level thread ghost_teleport_to_playable_area();
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_round_end()
|
||||||
|
{
|
||||||
|
disable_traversal_clip_around_mansion();
|
||||||
|
}
|
||||||
|
|
||||||
|
is_player_in_ghost_zone( player )
|
||||||
|
{
|
||||||
|
result = 0;
|
||||||
|
|
||||||
|
if ( !isdefined( level.ghost_zone_overrides ) )
|
||||||
|
level.ghost_zone_overrides = getentarray( "ghost_round_override", "script_noteworthy" );
|
||||||
|
|
||||||
|
is_player_in_override_trigger = 0;
|
||||||
|
|
||||||
|
if ( isdefined( level.zombie_ghost_round_states ) && !is_true( level.zombie_ghost_round_states.is_started ) )
|
||||||
|
{
|
||||||
|
foreach ( trigger in level.ghost_zone_overrides )
|
||||||
|
{
|
||||||
|
if ( player istouching( trigger ) )
|
||||||
|
{
|
||||||
|
is_player_in_override_trigger = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
curr_zone = player get_current_zone();
|
||||||
|
|
||||||
|
if ( !is_player_in_override_trigger && isdefined( curr_zone ) && curr_zone == "zone_mansion" )
|
||||||
|
result = 1;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_bad_path_init()
|
||||||
|
{
|
||||||
|
level.bad_zones = [];
|
||||||
|
level.bad_zones[0] = spawnstruct();
|
||||||
|
level.bad_zones[0].name = "zone_underground_courthouse";
|
||||||
|
level.bad_zones[0].adjacent = [];
|
||||||
|
level.bad_zones[0].adjacent[0] = "zone_underground_courthouse2";
|
||||||
|
level.bad_zones[0].adjacent[1] = "zone_tunnels_north2";
|
||||||
|
//level.bad_zones[0].ignore_func = maps\mp\zm_buried::is_courthouse_open;
|
||||||
|
level.bad_zones[0].ignore_func = getFunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
||||||
|
level.bad_zones[1] = spawnstruct();
|
||||||
|
level.bad_zones[1].name = "zone_underground_courthouse2";
|
||||||
|
level.bad_zones[1].adjacent = [];
|
||||||
|
level.bad_zones[1].adjacent[0] = "zone_underground_courthouse";
|
||||||
|
level.bad_zones[1].adjacent[1] = "zone_tunnels_north2";
|
||||||
|
//level.bad_zones[1].ignore_func = maps\mp\zm_buried::is_courthouse_open;
|
||||||
|
level.bad_zones[1].ignore_func = getFunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
||||||
|
level.bad_zones[2] = spawnstruct();
|
||||||
|
level.bad_zones[2].name = "zone_tunnels_north2";
|
||||||
|
level.bad_zones[2].adjacent = [];
|
||||||
|
level.bad_zones[2].adjacent[0] = "zone_underground_courthouse2";
|
||||||
|
level.bad_zones[2].adjacent[1] = "zone_underground_courthouse";
|
||||||
|
level.bad_zones[2].flag = "tunnels2courthouse";
|
||||||
|
level.bad_zones[2].flag_adjacent = "zone_tunnels_north";
|
||||||
|
//level.bad_zones[2].ignore_func = maps\mp\zm_buried::is_courthouse_open;
|
||||||
|
level.bad_zones[2].ignore_func = getFunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
||||||
|
level.bad_zones[3] = spawnstruct();
|
||||||
|
level.bad_zones[3].name = "zone_tunnels_north";
|
||||||
|
level.bad_zones[3].adjacent = [];
|
||||||
|
level.bad_zones[3].adjacent[0] = "zone_tunnels_center";
|
||||||
|
level.bad_zones[3].flag = "tunnels2courthouse";
|
||||||
|
level.bad_zones[3].flag_adjacent = "zone_tunnels_north2";
|
||||||
|
//level.bad_zones[3].ignore_func = maps\mp\zm_buried::is_tunnel_open;
|
||||||
|
level.bad_zones[3].ignore_func = getFunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
||||||
|
level.bad_zones[4] = spawnstruct();
|
||||||
|
level.bad_zones[4].name = "zone_tunnels_center";
|
||||||
|
level.bad_zones[4].adjacent = [];
|
||||||
|
level.bad_zones[4].adjacent[0] = "zone_tunnels_north";
|
||||||
|
level.bad_zones[4].adjacent[1] = "zone_tunnels_south";
|
||||||
|
//level.bad_zones[4].ignore_func = maps\mp\zm_buried::is_tunnel_open;
|
||||||
|
level.bad_zones[4].ignore_func = getFunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
||||||
|
level.bad_zones[5] = spawnstruct();
|
||||||
|
level.bad_zones[5].name = "zone_tunnels_south";
|
||||||
|
level.bad_zones[5].adjacent = [];
|
||||||
|
level.bad_zones[5].adjacent[0] = "zone_tunnels_center";
|
||||||
|
//level.bad_zones[5].ignore_func = maps\mp\zm_buried::is_tunnel_open;
|
||||||
|
level.bad_zones[5].ignore_func = getFunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_bad_path_failsafe()
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
self notify( "stop_bad_path_failsafe" );
|
||||||
|
self endon( "stop_bad_path_failsafe" );
|
||||||
|
self thread non_ghost_round_failsafe();
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
player = self.favoriteenemy;
|
||||||
|
|
||||||
|
if ( isdefined( player ) )
|
||||||
|
{
|
||||||
|
in_bad_zone = 0;
|
||||||
|
|
||||||
|
foreach ( zone in level.bad_zones )
|
||||||
|
{
|
||||||
|
if ( isdefined( zone.ignore_func ) )
|
||||||
|
{
|
||||||
|
if ( level [[ zone.ignore_func ]]() )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( player maps\mp\zombies\_zm_zonemgr::entity_in_zone( zone.name ) )
|
||||||
|
{
|
||||||
|
if ( self maps\mp\zombies\_zm_zonemgr::entity_in_zone( zone.name ) )
|
||||||
|
break;
|
||||||
|
|
||||||
|
ghost_is_adjacent = 0;
|
||||||
|
|
||||||
|
foreach ( adjacent in zone.adjacent )
|
||||||
|
{
|
||||||
|
if ( self maps\mp\zombies\_zm_zonemgr::entity_in_zone( adjacent ) )
|
||||||
|
{
|
||||||
|
ghost_is_adjacent = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isdefined( zone.flag ) && flag( zone.flag ) )
|
||||||
|
{
|
||||||
|
if ( self maps\mp\zombies\_zm_zonemgr::entity_in_zone( zone.flag_adjacent ) )
|
||||||
|
ghost_is_adjacent = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !ghost_is_adjacent )
|
||||||
|
{
|
||||||
|
in_bad_zone = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( in_bad_zone )
|
||||||
|
{
|
||||||
|
nodes = getnodesinradiussorted( player.origin, 540, 180, 60, "Path" );
|
||||||
|
|
||||||
|
if ( nodes.size > 0 )
|
||||||
|
node = nodes[randomint( nodes.size )];
|
||||||
|
else
|
||||||
|
node = getnearestnode( player.origin );
|
||||||
|
|
||||||
|
if ( isdefined( node ) )
|
||||||
|
{
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
if ( !is_true( self.is_traversing ) )
|
||||||
|
break;
|
||||||
|
|
||||||
|
wait 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
self forceteleport( node.origin, ( 0, 0, 0 ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wait 0.25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
non_ghost_round_failsafe()
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
self waittill( "bad_path" );
|
||||||
|
|
||||||
|
if ( self.state == "runaway_update" )
|
||||||
|
{
|
||||||
|
if ( !maps\mp\zombies\_zm_ai_ghost::is_ghost_round_started() && is_true( self.is_spawned_in_ghost_zone ) )
|
||||||
|
{
|
||||||
|
self maps\mp\zombies\_zm_ai_ghost::start_evaporate( 1 );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wait 0.25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
disable_traversal_clip_around_mansion()
|
||||||
|
{
|
||||||
|
if ( isdefined( level.ghost_zone_door_clips ) && level.ghost_zone_door_clips.size > 0 )
|
||||||
|
{
|
||||||
|
foreach ( door_clip in level.ghost_zone_door_clips )
|
||||||
|
door_clip notsolid();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_bad_spawn_zone_init()
|
||||||
|
{
|
||||||
|
level.ghost_bad_spawn_zones = [];
|
||||||
|
level.ghost_bad_spawn_zones[0] = "zone_mansion_backyard";
|
||||||
|
level.ghost_bad_spawn_zones[1] = "zone_maze";
|
||||||
|
level.ghost_bad_spawn_zones[2] = "zone_maze_staircase";
|
||||||
|
}
|
||||||
|
|
||||||
|
can_use_mansion_back_flying_out_node( zone_name )
|
||||||
|
{
|
||||||
|
if ( zone_name == "zone_mansion_backyard" )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if ( zone_name == "zone_maze" )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if ( zone_name == "zone_maze_staircase" )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_teleport_to_playable_area()
|
||||||
|
{
|
||||||
|
level endon( "intermission" );
|
||||||
|
|
||||||
|
if ( level.intermission )
|
||||||
|
return;
|
||||||
|
|
||||||
|
level endon( "ghost_round_end" );
|
||||||
|
monitor_time = 0;
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
ghosts = get_current_ghosts();
|
||||||
|
|
||||||
|
foreach ( ghost in ghosts )
|
||||||
|
{
|
||||||
|
if ( !is_true( self.is_spawned_in_ghost_zone ) && !is_true( self.is_teleported_in_bad_zone ) )
|
||||||
|
{
|
||||||
|
foreach ( bad_spawn_zone_name in level.ghost_bad_spawn_zones )
|
||||||
|
{
|
||||||
|
if ( ghost maps\mp\zombies\_zm_zonemgr::entity_in_zone( bad_spawn_zone_name ) )
|
||||||
|
{
|
||||||
|
if ( is_player_valid( ghost.favoriteenemy ) )
|
||||||
|
{
|
||||||
|
destination_node = ghost maps\mp\zombies\_zm_ai_ghost::get_best_flying_target_node( ghost.favoriteenemy );
|
||||||
|
|
||||||
|
if ( isdefined( destination_node ) )
|
||||||
|
{
|
||||||
|
ghost forceteleport( destination_node.origin, ( 0, 0, 0 ) );
|
||||||
|
self.is_teleported_in_bad_zone = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !is_true( self.is_teleported_in_bad_zone ) )
|
||||||
|
{
|
||||||
|
if ( can_use_mansion_back_flying_out_node( bad_spawn_zone_name ) )
|
||||||
|
ghost forceteleport( level.ghost_back_flying_out_path_starts[0].origin, ( 0, 0, 0 ) );
|
||||||
|
else
|
||||||
|
ghost forceteleport( level.ghost_front_flying_out_path_starts[0].origin, ( 0, 0, 0 ) );
|
||||||
|
|
||||||
|
self.is_teleported_in_bad_zone = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor_time = monitor_time + 0.1;
|
||||||
|
|
||||||
|
if ( monitor_time > level.ghost_round_start_monitor_time )
|
||||||
|
break;
|
||||||
|
|
||||||
|
wait 0.1;
|
||||||
|
}
|
||||||
|
}
|
173
zm_ai_pack/scripts/zm/_zm_ai_ghost.csc
Normal file
173
zm_ai_pack/scripts/zm/_zm_ai_ghost.csc
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
// T6 GSC SOURCE
|
||||||
|
// Generated by https://github.com/xensik/gsc-tool
|
||||||
|
#include clientscripts\mp\_utility;
|
||||||
|
#include clientscripts\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
|
precache()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#using_animtree("zm_buried_ghost");
|
||||||
|
|
||||||
|
init_animtree()
|
||||||
|
{
|
||||||
|
scriptmodelsuseanimtree( #animtree );
|
||||||
|
}
|
||||||
|
|
||||||
|
precache_fx()
|
||||||
|
{
|
||||||
|
if ( !isdefined( level.ghost_effects ) )
|
||||||
|
{
|
||||||
|
level.ghost_effects = [];
|
||||||
|
level.ghost_effects[1] = loadfx( "maps/zombie_buried/fx_buried_ghost_death" );
|
||||||
|
level.ghost_effects[2] = loadfx( "maps/zombie_buried/fx_buried_ghost_drain" );
|
||||||
|
level.ghost_effects[3] = loadfx( "maps/zombie_buried/fx_buried_ghost_spawn" );
|
||||||
|
level.ghost_effects[4] = loadfx( "maps/zombie_buried/fx_buried_ghost_trail" );
|
||||||
|
level.ghost_effects[5] = loadfx( "maps/zombie_buried/fx_buried_ghost_evaporation" );
|
||||||
|
level.ghost_impact_effects[1] = loadfx( "maps/zombie_buried/fx_buried_ghost_impact" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
precache_fx();
|
||||||
|
register_client_fields();
|
||||||
|
}
|
||||||
|
|
||||||
|
register_client_fields()
|
||||||
|
{
|
||||||
|
registerclientfield( "actor", "ghost_impact_fx", 12000, 1, "int", ::play_impact_fx_clientfield_cb, 0 );
|
||||||
|
registerclientfield( "actor", "ghost_fx", 12000, 3, "int", ::play_fx_clientfield_cb, 0 );
|
||||||
|
registerclientfield( "actor", "sndGhostAudio", 12000, 3, "int", ::sndghostaudio, 0 );
|
||||||
|
registerclientfield( "scriptmover", "ghost_fx", 12000, 3, "int", ::play_fx_clientfield_cb, 0 );
|
||||||
|
registerclientfield( "scriptmover", "sndGhostAudio", 12000, 3, "int", ::sndghostaudio, 0 );
|
||||||
|
registerclientfield( "world", "ghost_round_light_state", 12000, 1, "int", ::ghost_round_presentation_light_state_cb, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
play_impact_fx_clientfield_cb( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
|
||||||
|
{
|
||||||
|
if ( !isdefined( newval ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( newval > 0 )
|
||||||
|
self thread play_impact_fx_internal( localclientnum, newval );
|
||||||
|
}
|
||||||
|
|
||||||
|
play_impact_fx_internal( localclientnum, newval )
|
||||||
|
{
|
||||||
|
self endon( "entityshutdown" );
|
||||||
|
self waittill_dobj( localclientnum );
|
||||||
|
effect = level.ghost_impact_effects[newval];
|
||||||
|
|
||||||
|
if ( isdefined( effect ) )
|
||||||
|
playfx( localclientnum, effect, self.origin + vectorscale( ( 0, 0, 1 ), 36.0 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
play_fx_clientfield_cb( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
|
||||||
|
{
|
||||||
|
if ( !isdefined( newval ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( newval > 0 )
|
||||||
|
self play_fx( localclientnum, newval );
|
||||||
|
else if ( isdefined( self._fx_array ) && isdefined( self._fx_array[localclientnum] ) )
|
||||||
|
deletefx( localclientnum, self._fx_array[localclientnum], 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
play_fx( localclientnum, newval )
|
||||||
|
{
|
||||||
|
self thread play_fx_internal( localclientnum, newval );
|
||||||
|
}
|
||||||
|
|
||||||
|
play_fx_internal( localclientnum, newval )
|
||||||
|
{
|
||||||
|
self endon( "entityshutdown" );
|
||||||
|
self waittill_dobj( localclientnum );
|
||||||
|
|
||||||
|
if ( !isdefined( self._fx_array ) )
|
||||||
|
self._fx_array = [];
|
||||||
|
|
||||||
|
linktag = "tag_origin";
|
||||||
|
effect = level.ghost_effects[newval];
|
||||||
|
|
||||||
|
if ( isdefined( self._fx_tag_override ) )
|
||||||
|
linktag = self._fx_tag_override;
|
||||||
|
|
||||||
|
if ( isdefined( self._fx_array[localclientnum] ) )
|
||||||
|
deletefx( localclientnum, self._fx_array[localclientnum], 0 );
|
||||||
|
|
||||||
|
if ( newval == 1 )
|
||||||
|
self notify( "sndDeath" );
|
||||||
|
|
||||||
|
if ( newval == 1 || newval == 5 )
|
||||||
|
self._fx_array[localclientnum] = playfx( localclientnum, effect, self.origin );
|
||||||
|
else
|
||||||
|
self._fx_array[localclientnum] = playfxontag( localclientnum, effect, self, linktag );
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_round_presentation_light_state_cb( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
|
||||||
|
{
|
||||||
|
if ( !isdefined( newval ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( newval == 1 )
|
||||||
|
{
|
||||||
|
if ( !is_true( level.ghost_round_presentation_light_flicker_on ) )
|
||||||
|
{
|
||||||
|
level notify( "ghost_round_flicker" );
|
||||||
|
level.ghost_round_presentation_light_flicker_on = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( is_true( level.ghost_round_presentation_light_flicker_on ) )
|
||||||
|
{
|
||||||
|
level notify( "ghost_round_flicker" );
|
||||||
|
level.ghost_round_presentation_light_flicker_on = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sndghostaudio( localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump )
|
||||||
|
{
|
||||||
|
if ( !isdefined( self.sndent ) )
|
||||||
|
{
|
||||||
|
self.sndent = spawn( 0, self.origin, "script_origin" );
|
||||||
|
self.sndent linkto( self );
|
||||||
|
self thread sndghostaudiodeleteent( self.sndent );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( newval == 1 )
|
||||||
|
{
|
||||||
|
self playsound( 0, "zmb_ai_ghost_apparate" );
|
||||||
|
self.sndent playloopsound( "zmb_ai_ghost_loop", 1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self playsound( 0, "zmb_ai_ghost_disapparate" );
|
||||||
|
self.sndent playloopsound( "zmb_ai_ghost_loop", 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sndghostaudiodeleteent( ent )
|
||||||
|
{
|
||||||
|
self waittill_any( "death", "entityshutdown", "sndDeath" );
|
||||||
|
ent delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
sndghostattackaudio()
|
||||||
|
{
|
||||||
|
if ( !isdefined( self.sndattackent ) )
|
||||||
|
{
|
||||||
|
self.sndattackent = spawn( 0, self.origin, "script_origin" );
|
||||||
|
self.sndattackent linkto( self );
|
||||||
|
self thread sndghostattackaudiodeleteent( self.sndattackent );
|
||||||
|
}
|
||||||
|
|
||||||
|
self.sndattackent playloopsound( "zmb_ai_ghost_attack_loop", 0.1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
sndghostattackaudiodeleteent( ent )
|
||||||
|
{
|
||||||
|
self endon( "sndDoneAttacking" );
|
||||||
|
self waittill_any( "death", "entityshutdown" );
|
||||||
|
ent delete();
|
||||||
|
}
|
98
zm_ai_pack/scripts/zm/ghost.gsc
Normal file
98
zm_ai_pack/scripts/zm/ghost.gsc
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
#include maps\mp\zombies\_zm_ai_ghost;
|
||||||
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
#include maps\mp\_utility;
|
||||||
|
#include common_scripts\utility;
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
if ( getDvar( "mapname" ) == "zm_buried" )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
maps\mp\zombies\_zm_ai_ghost::precache_fx();
|
||||||
|
maps\mp\zombies\_zm_ai_ghost::init();
|
||||||
|
}
|
||||||
|
|
||||||
|
init()
|
||||||
|
{
|
||||||
|
level thread ghost_zone_spawning_think();
|
||||||
|
}
|
||||||
|
|
||||||
|
ghost_zone_spawning_think()
|
||||||
|
{
|
||||||
|
level endon( "intermission" );
|
||||||
|
|
||||||
|
if ( isdefined( level.intermission ) && level.intermission )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( !isdefined( level.female_ghost_spawner ) )
|
||||||
|
{
|
||||||
|
/#
|
||||||
|
assertmsg( "No female ghost spawner in the map. Check to see if the zone is active and if it's pointing to spawners." );
|
||||||
|
#/
|
||||||
|
}
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
if ( level.zombie_ghost_count >= level.zombie_ai_limit_ghost )
|
||||||
|
{
|
||||||
|
wait 0.1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( level.zombie_spawn_locations.size <= 0 )
|
||||||
|
{
|
||||||
|
wait 0.1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
spawn_point = random( level.zombie_spawn_locations );
|
||||||
|
|
||||||
|
if ( !isdefined( spawn_point ) )
|
||||||
|
{
|
||||||
|
print( "No spawn point" );
|
||||||
|
wait 0.1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/#
|
||||||
|
if ( isdefined( level.force_no_ghost ) && level.force_no_ghost )
|
||||||
|
{
|
||||||
|
wait 0.1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#/
|
||||||
|
ghost_ai = undefined;
|
||||||
|
|
||||||
|
if ( isdefined( level.female_ghost_spawner ) )
|
||||||
|
ghost_ai = spawn_zombie( level.female_ghost_spawner, level.female_ghost_spawner.targetname, spawn_point );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print( "No spawner" );
|
||||||
|
/#
|
||||||
|
assertmsg( "No female ghost spawner in the map." );
|
||||||
|
#/
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isdefined( ghost_ai ) )
|
||||||
|
{
|
||||||
|
ghost_ai setclientfield( "ghost_fx", 3 );
|
||||||
|
ghost_ai.spawn_point = spawn_point;
|
||||||
|
ghost_ai.is_ghost = 1;
|
||||||
|
ghost_ai.is_spawned_in_ghost_zone = 1;
|
||||||
|
ghost_ai.find_target = 1;
|
||||||
|
level.zombie_ghost_count++;
|
||||||
|
/#
|
||||||
|
ghost_print( "ghost total " + level.zombie_ghost_count );
|
||||||
|
#/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/#
|
||||||
|
assertmsg( "Female ghost: failed spawn" );
|
||||||
|
#/
|
||||||
|
}
|
||||||
|
|
||||||
|
wait 0.1;
|
||||||
|
}
|
||||||
|
}
|
@ -61,7 +61,6 @@ image,c_gen_eye_n
|
|||||||
image,~-gc_gen_eye_blue_c
|
image,~-gc_gen_eye_blue_c
|
||||||
image,c_gen_eye_ir
|
image,c_gen_eye_ir
|
||||||
image,thermal_gradient5
|
image,thermal_gradient5
|
||||||
image,,sw_radiant_default
|
|
||||||
material,mc/mtl_gen_eye_iris_thermal
|
material,mc/mtl_gen_eye_iris_thermal
|
||||||
material,mc/mtl_gen_eye_iris_blue
|
material,mc/mtl_gen_eye_iris_blue
|
||||||
image,c_gen_eye_color_a
|
image,c_gen_eye_color_a
|
||||||
@ -72,7 +71,6 @@ image,~~-gc_gen_insidemouth_s-rgb&~~8dbd539a
|
|||||||
image,c_gen_insidemouth_n
|
image,c_gen_insidemouth_n
|
||||||
image,~-gc_gen_insidemouth_c
|
image,~-gc_gen_insidemouth_c
|
||||||
image,c_gen_insidemouth_ir
|
image,c_gen_insidemouth_ir
|
||||||
image,,thermal_gradient2
|
|
||||||
material,mc/mtl_c_gen_insidemouth_thermal
|
material,mc/mtl_c_gen_insidemouth_thermal
|
||||||
material,mc/mtl_c_gen_insidemouth
|
material,mc/mtl_c_gen_insidemouth
|
||||||
image,~-gc_zom_buried_ghost_woman_hair_c
|
image,~-gc_zom_buried_ghost_woman_hair_c
|
||||||
@ -80,3 +78,25 @@ material,mc/mtl_c_zom_buried_ghost_woman_hair
|
|||||||
xmodel,c_zom_zombie_buried_ghost_woman_fb
|
xmodel,c_zom_zombie_buried_ghost_woman_fb
|
||||||
script,character/clientscripts/c_zom_zombie_buried_ghost_woman.csc
|
script,character/clientscripts/c_zom_zombie_buried_ghost_woman.csc
|
||||||
script,aitype/clientscripts/zm_buried_ghost_female.csc
|
script,aitype/clientscripts/zm_buried_ghost_female.csc
|
||||||
|
script,maps/mp/zombies/_zm_ai_ghost.gsc
|
||||||
|
script,maps/mp/zombies/_zm_ai_ghost_ffotd.gsc
|
||||||
|
script,scripts/zm/_zm_ai_ghost.csc
|
||||||
|
script,scripts/zm/ghost.gsc
|
||||||
|
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_impact
|
||||||
|
material,gfx_fxt_bio_bloodtrail
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_red_trail
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_death_os
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_death
|
||||||
|
material,gfx_fxt_env_snow_flake_cloud_01i_add
|
||||||
|
material,gfx_fxt_env_snow_flake_cloud_04i_add
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_drain
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_spawn
|
||||||
|
material,gfx_fxt_smk_whisp_add_z5
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_trail_smk
|
||||||
|
image,fxt_smk_trail_wisp
|
||||||
|
material,gfx_fxt_smk_trail_wisp
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_trail
|
||||||
|
fx,maps/zombie_buried/fx_buried_ghost_evaporation
|
||||||
|
|
||||||
|
footsteptable,fly_step_ghost
|
@ -10,7 +10,7 @@
|
|||||||
include,zm_all_basic
|
include,zm_all_basic
|
||||||
|
|
||||||
include,buried/zm_buried_basic_no_anims
|
include,buried/zm_buried_basic_no_anims
|
||||||
//include,buried/zm_buried_ghost
|
include,buried/zm_buried_ghost
|
||||||
//include,buried/zm_buried_sloth
|
//include,buried/zm_buried_sloth
|
||||||
|
|
||||||
include,highrise/zm_highrise_basic_no_anims
|
include,highrise/zm_highrise_basic_no_anims
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
>name,mod_1
|
>name,mod_1
|
||||||
|
|
||||||
include,buried/zm_buried_basic
|
include,buried/zm_buried_basic
|
||||||
//include,buried/zm_buried_ghost
|
include,buried/zm_buried_ghost
|
||||||
//include,buried/zm_buried_sloth
|
//include,buried/zm_buried_sloth
|
||||||
|
|
||||||
include,highrise/zm_highrise_basic
|
include,highrise/zm_highrise_basic
|
||||||
|
@ -368,6 +368,50 @@ xmodel,c_zom_dlc0_zom_solciv_body1_g_rlegspawn
|
|||||||
xmodel,c_zom_dlc0_zom_solciv_body1_g_llegspawn
|
xmodel,c_zom_dlc0_zom_solciv_body1_g_llegspawn
|
||||||
script,character/clientscripts/c_zom_dlc0_zombie_soldier_civ_1.csc
|
script,character/clientscripts/c_zom_dlc0_zombie_soldier_civ_1.csc
|
||||||
script,aitype/clientscripts/zm_nuked_basic_02.csc
|
script,aitype/clientscripts/zm_nuked_basic_02.csc
|
||||||
|
script,aitype/zm_nuked_basic_01.gsc
|
||||||
|
script,character/c_zom_dlc0_zombie_hazmat_1.gsc
|
||||||
|
image,~~-gc_zom_dlc0_hazmat_zombie_~47de35f4
|
||||||
|
image,c_zom_dlc0_hazmat_zombie_body_n
|
||||||
|
image,~-gc_zom_dlc0_hazmat_zombie_body_1_c
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_body_1
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_upclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_rarmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_larmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_behead
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_lowclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_rlegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_llegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_legsoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_rarmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_larmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_rlegspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_llegspawn
|
||||||
|
script,character/clientscripts/c_zom_dlc0_zombie_hazmat_1.csc
|
||||||
|
script,character/c_zom_dlc0_zombie_hazmat_2.gsc
|
||||||
|
image,~~-gc_zom_dlc0_hazmat_zombie_~56115f4b
|
||||||
|
image,c_zom_dlc0_hazmat_zombie_mask_n
|
||||||
|
image,~-gc_zom_dlc0_hazmat_zombie_mask_c
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_head_mask
|
||||||
|
image,~-gc_zom_dlc0_hazmat_zombie_body_2_c
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_body_2
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_head_mask_u
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_head_mask
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_upclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_rarmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_larmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_behead
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_lowclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_rlegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_llegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_legsoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_rarmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_larmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_rlegspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_llegspawn
|
||||||
|
script,character/clientscripts/c_zom_dlc0_zombie_hazmat_2.csc
|
||||||
|
script,aitype/clientscripts/zm_nuked_basic_01.csc
|
||||||
script,aitype/zm_nuked_basic_01_beyes.gsc
|
script,aitype/zm_nuked_basic_01_beyes.gsc
|
||||||
script,character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc
|
script,character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc
|
||||||
script,xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc
|
script,xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc
|
||||||
|
@ -96,6 +96,50 @@ xmodel,c_zom_dlc0_zom_solciv_body1_g_rlegspawn
|
|||||||
xmodel,c_zom_dlc0_zom_solciv_body1_g_llegspawn
|
xmodel,c_zom_dlc0_zom_solciv_body1_g_llegspawn
|
||||||
script,character/clientscripts/c_zom_dlc0_zombie_soldier_civ_1.csc
|
script,character/clientscripts/c_zom_dlc0_zombie_soldier_civ_1.csc
|
||||||
script,aitype/clientscripts/zm_nuked_basic_02.csc
|
script,aitype/clientscripts/zm_nuked_basic_02.csc
|
||||||
|
script,aitype/zm_nuked_basic_01.gsc
|
||||||
|
script,character/c_zom_dlc0_zombie_hazmat_1.gsc
|
||||||
|
image,~~-gc_zom_dlc0_hazmat_zombie_~47de35f4
|
||||||
|
image,c_zom_dlc0_hazmat_zombie_body_n
|
||||||
|
image,~-gc_zom_dlc0_hazmat_zombie_body_1_c
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_body_1
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_upclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_rarmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_larmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_behead
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_lowclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_rlegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_llegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_legsoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_rarmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_larmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_rlegspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body1_g_llegspawn
|
||||||
|
script,character/clientscripts/c_zom_dlc0_zombie_hazmat_1.csc
|
||||||
|
script,character/c_zom_dlc0_zombie_hazmat_2.gsc
|
||||||
|
image,~~-gc_zom_dlc0_hazmat_zombie_~56115f4b
|
||||||
|
image,c_zom_dlc0_hazmat_zombie_mask_n
|
||||||
|
image,~-gc_zom_dlc0_hazmat_zombie_mask_c
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_head_mask
|
||||||
|
image,~-gc_zom_dlc0_hazmat_zombie_body_2_c
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_body_2
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2
|
||||||
|
material,mc/mtl_c_zom_dlc0_zombie_hazmat_head_mask_u
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_head_mask
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_upclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_rarmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_larmoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_behead
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_lowclean
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_rlegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_llegoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_legsoff
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_rarmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_larmspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_rlegspawn
|
||||||
|
xmodel,c_zom_dlc0_zom_haz_body2_g_llegspawn
|
||||||
|
script,character/clientscripts/c_zom_dlc0_zombie_hazmat_2.csc
|
||||||
|
script,aitype/clientscripts/zm_nuked_basic_01.csc
|
||||||
script,aitype/zm_nuked_basic_01_beyes.gsc
|
script,aitype/zm_nuked_basic_01_beyes.gsc
|
||||||
script,character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc
|
script,character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc
|
||||||
script,xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc
|
script,xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc
|
||||||
|
@ -97,3 +97,5 @@ material,hud_obit_tact_grenade
|
|||||||
weapon,willy_pete_zm
|
weapon,willy_pete_zm
|
||||||
|
|
||||||
script,scripts/zm/_zm_ai_brutus.csc
|
script,scripts/zm/_zm_ai_brutus.csc
|
||||||
|
script,maps/mp/zombies/_zm_ai_brutus.gsc
|
||||||
|
script,scripts/zm/brutus.gsc
|
@ -107,6 +107,13 @@ xmodel,c_zom_mech_body
|
|||||||
script,character/clientscripts/c_zom_dlc_mech.csc
|
script,character/clientscripts/c_zom_dlc_mech.csc
|
||||||
script,aitype/clientscripts/zm_tomb_mech_zombie.csc
|
script,aitype/clientscripts/zm_tomb_mech_zombie.csc
|
||||||
script,scripts/zm/_zm_ai_mechz.csc
|
script,scripts/zm/_zm_ai_mechz.csc
|
||||||
|
script,maps/mp/zombies/_zm_ai_mechz.gsc
|
||||||
|
script,maps/mp/zombies/_zm_ai_mechz_ft.gsc
|
||||||
|
script,maps/mp/zombies/_zm_ai_mechz_ffotd.gsc
|
||||||
|
script,maps/mp/zombies/_zm_ai_mechz_dev.gsc
|
||||||
|
script,maps/mp/zombies/_zm_ai_mechz_claw.gsc
|
||||||
|
script,maps/mp/zombies/_zm_ai_mechz_booster.gsc
|
||||||
|
script,scripts/zm/mechz.gsc
|
||||||
|
|
||||||
fx,maps/zombie_tomb/fx_tomb_mech_death
|
fx,maps/zombie_tomb/fx_tomb_mech_death
|
||||||
material,gfx_fxt_smk_light_old_z10
|
material,gfx_fxt_smk_light_old_z10
|
||||||
@ -159,3 +166,4 @@ xmodel,c_zom_mech_armor_shoulder_right
|
|||||||
rawfile,rumble/mechz_footsteps
|
rawfile,rumble/mechz_footsteps
|
||||||
rawfile,animtrees/mechz_claw.atr
|
rawfile,animtrees/mechz_claw.atr
|
||||||
footsteptable,fly_step_mechz
|
footsteptable,fly_step_mechz
|
||||||
|
|
||||||
|
@ -119,3 +119,5 @@ material,mc/mtl_p6_zm_screecher_hole_p
|
|||||||
xmodel,p6_zm_screecher_hole
|
xmodel,p6_zm_screecher_hole
|
||||||
|
|
||||||
script,scripts/zm/_zm_ai_screecher.csc
|
script,scripts/zm/_zm_ai_screecher.csc
|
||||||
|
script,maps/mp/zombies/_zm_ai_screecher.gsc
|
||||||
|
script,scripts/zm/screecher.gsc
|
@ -213,7 +213,7 @@ xanim,ai_zombie_crawl_inert_2_sprint_v2
|
|||||||
xanim,ai_zombie_window_attack_arm_l_out
|
xanim,ai_zombie_window_attack_arm_l_out
|
||||||
xanim,ai_zombie_window_attack_arm_r_out
|
xanim,ai_zombie_window_attack_arm_r_out
|
||||||
xanim,ai_zombie_traverse_ground_v1_walk
|
xanim,ai_zombie_traverse_ground_v1_walk
|
||||||
xanim,ai_zombie_traverse_ground_v2_walk_altA
|
//xanim,ai_zombie_traverse_ground_v2_walk_altA
|
||||||
xanim,ai_zombie_traverse_ground_v1_run
|
xanim,ai_zombie_traverse_ground_v1_run
|
||||||
xanim,ai_zombie_traverse_ground_climbout_fast
|
xanim,ai_zombie_traverse_ground_climbout_fast
|
||||||
xanim,ai_zombie_traverse_ground_v1_deathinside
|
xanim,ai_zombie_traverse_ground_v1_deathinside
|
||||||
@ -753,4 +753,4 @@ xanim,ai_zombie_acid_stun_d
|
|||||||
xanim,ai_zombie_acid_stun_e
|
xanim,ai_zombie_acid_stun_e
|
||||||
|
|
||||||
rawfile,animtrees/zm_all_basic.atr
|
rawfile,animtrees/zm_all_basic.atr
|
||||||
//rawfile,animstatedefs/zm_all_basic.asd
|
rawfile,animstatedefs/zm_all_basic.asd
|
Loading…
x
Reference in New Issue
Block a user