diff --git a/zm_ai_pack/scripts/zm/_zm_ai_avogadro.csc b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_avogadro.csc similarity index 72% rename from zm_ai_pack/scripts/zm/_zm_ai_avogadro.csc rename to zm_ai_pack/clientscripts/mp/zombies/_zm_ai_avogadro.csc index 5cccf35..32d37b9 100644 --- a/zm_ai_pack/scripts/zm/_zm_ai_avogadro.csc +++ b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_avogadro.csc @@ -9,11 +9,12 @@ precache() } -main() +init() { - if ( getDvar( "mapname" ) == "zm_transit" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } clientscripts\mp\_visionset_mgr::vsmgr_register_overlay_info_style_electrified( "zm_ai_avogadro_electrified", 1, 15, 1 ); } + +main() +{ + clientscripts\mp\_visionset_mgr::vsmgr_register_overlay_info_style_electrified( "zm_ai_avogadro_electrified", 1, 15, 1 ); +} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/_zm_ai_brutus.csc b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_brutus.csc similarity index 88% rename from zm_ai_pack/scripts/zm/_zm_ai_brutus.csc rename to zm_ai_pack/clientscripts/mp/zombies/_zm_ai_brutus.csc index 07b8e1f..0129bf0 100644 --- a/zm_ai_pack/scripts/zm/_zm_ai_brutus.csc +++ b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_brutus.csc @@ -8,12 +8,15 @@ precache() } +init() +{ + 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 ); +} + 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 ); diff --git a/zm_ai_pack/scripts/zm/_zm_ai_ghost.csc b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_ghost.csc similarity index 97% rename from zm_ai_pack/scripts/zm/_zm_ai_ghost.csc rename to zm_ai_pack/clientscripts/mp/zombies/_zm_ai_ghost.csc index de560fc..2645e62 100644 --- a/zm_ai_pack/scripts/zm/_zm_ai_ghost.csc +++ b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_ghost.csc @@ -29,12 +29,13 @@ precache_fx() } } +init() +{ + register_client_fields(); +} + main() { - if ( getDvar( "mapname" ) == "zm_buried" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } precache_fx(); register_client_fields(); } diff --git a/zm_ai_pack/scripts/zm/_zm_ai_mechz.csc b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_mechz.csc similarity index 76% rename from zm_ai_pack/scripts/zm/_zm_ai_mechz.csc rename to zm_ai_pack/clientscripts/mp/zombies/_zm_ai_mechz.csc index ab1b112..1c66716 100644 --- a/zm_ai_pack/scripts/zm/_zm_ai_mechz.csc +++ b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_mechz.csc @@ -39,24 +39,11 @@ add_fx_element( index, fx_element, tag_name, min_freq, max_freq ) } 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 ); @@ -88,6 +75,41 @@ init() init_animtree(); } +init() +{ + registerclientfield( "actor", "mechz_fx", 14000, 12, "int", ::mechz_handle_fx ); + 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" ); + registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int", ::mechz_claw_callback ); + 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 ) ) diff --git a/zm_ai_pack/scripts/zm/_zm_ai_screecher.csc b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_screecher.csc similarity index 88% rename from zm_ai_pack/scripts/zm/_zm_ai_screecher.csc rename to zm_ai_pack/clientscripts/mp/zombies/_zm_ai_screecher.csc index 1946b65..8d57988 100644 --- a/zm_ai_pack/scripts/zm/_zm_ai_screecher.csc +++ b/zm_ai_pack/clientscripts/mp/zombies/_zm_ai_screecher.csc @@ -9,12 +9,13 @@ precache() } +init() +{ + clientscripts\mp\zombies\_callbacks::onfinalizeinitialization_callback( ::screecher_clientfields ); +} + main() { - if ( getDvar( "mapname" ) == "zm_transit" ) - { - return; - } clientscripts\mp\zombies\_callbacks::onfinalizeinitialization_callback( ::screecher_clientfields ); } diff --git a/zm_ai_pack/maps/mp/zombies/_zm_ai_avogadro.gsc b/zm_ai_pack/maps/mp/zombies/_zm_ai_avogadro.gsc index c7647a8..ac0b579 100644 --- a/zm_ai_pack/maps/mp/zombies/_zm_ai_avogadro.gsc +++ b/zm_ai_pack/maps/mp/zombies/_zm_ai_avogadro.gsc @@ -35,6 +35,11 @@ precache_fx() level._effect["avogadro_health_low"] = loadfx( "maps/zombie/fx_zmb_avog_health_low" ); } +main() +{ + precache(); +} + init() { init_phase_anims(); diff --git a/zm_ai_pack/maps/mp/zombies/_zm_ai_brutus.gsc b/zm_ai_pack/maps/mp/zombies/_zm_ai_brutus.gsc index e169e43..0541bec 100644 --- a/zm_ai_pack/maps/mp/zombies/_zm_ai_brutus.gsc +++ b/zm_ai_pack/maps/mp/zombies/_zm_ai_brutus.gsc @@ -19,6 +19,29 @@ #include maps\mp\animscripts\zm_death; #include maps\mp\zombies\_zm_perks; +precache() +{ + level._effect["brutus_flashlight"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_light" ); + level._effect["brutus_spawn"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_spawn" ); + level._effect["brutus_death"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_spawn" ); + level._effect["brutus_teargas"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_gas" ); + level._effect["brutus_lockdown"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_lock" ); + level._effect["brutus_lockdown_sm"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" ); + level._effect["brutus_lockdown_lg"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" ); + precachemodel( "c_zom_cellbreaker_helmet" ); + precacheshellshock( "mp_radiation_high" ); + precacheshellshock( "mp_radiation_med" ); + precacheshellshock( "mp_radiation_low" ); + precachestring( &"ZOMBIE_LOCKED_COST" ); + precachestring( &"ZOMBIE_LOCKED_COST_2000" ); + precachestring( &"ZOMBIE_LOCKED_COST_4000" ); + precachestring( &"ZOMBIE_LOCKED_COST_6000" ); + flag_init( "brutus_setup_complete" ); + setdvar( "zombie_double_wide_checks", 1 ); + registerclientfield( "actor", "helmet_off", 9000, 1, "int" ); + registerclientfield( "actor", "brutus_lock_down", 9000, 1, "int" ); +} + main() { level._effect["brutus_flashlight"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_light" ); @@ -118,8 +141,84 @@ main() setup_devgui(); #/ level.custom_perk_validation = ::check_perk_machine_valid; - //level.custom_craftable_validation = ::check_craftable_table_valid; - //level.custom_plane_validation = ::check_plane_valid; + level.custom_craftable_validation = ::check_craftable_table_valid; + level.custom_plane_validation = ::check_plane_valid; + } +} + +init() +{ + level.brutus_spawners = getentarray( "brutus_zombie_spawner", "script_noteworthy" ); + + if ( level.brutus_spawners.size == 0 ) + return; + + array_thread( level.brutus_spawners, ::add_spawn_function, ::brutus_prespawn ); + + for ( i = 0; i < level.brutus_spawners.size; i++ ) + { + level.brutus_spawners[i].is_enabled = 1; + level.brutus_spawners[i].script_forcespawn = 1; + } + + level.brutus_spawn_positions = getstructarray( "brutus_location", "script_noteworthy" ); + level thread setup_interaction_matrix(); + level.sndbrutusistalking = 0; + level.brutus_health = 500; + level.brutus_health_increase = 1000; + level.brutus_round_count = 0; + level.brutus_last_spawn_round = 0; + level.brutus_count = 0; + level.brutus_max_count = 1; + level.brutus_damage_percent = 0.1; + level.brutus_helmet_shots = 5; + level.brutus_team_points_for_death = 500; + level.brutus_player_points_for_death = 250; + level.brutus_points_for_helmet = 250; + level.brutus_alarm_chance = 100; + level.brutus_min_alarm_chance = 100; + level.brutus_alarm_chance_increment = 10; + level.brutus_max_alarm_chance = 200; + level.brutus_min_round_fq = 4; + level.brutus_max_round_fq = 7; + level.brutus_reset_dist_sq = 262144; + level.brutus_aggro_dist_sq = 16384; + level.brutus_aggro_earlyout = 12; + level.brutus_blocker_pieces_req = 1; + level.brutus_zombie_per_round = 1; + level.brutus_players_in_zone_spawn_point_cap = 120; + level.brutus_teargas_duration = 7; + level.player_teargas_duration = 2; + level.brutus_teargas_radius = 64; + level.num_pulls_since_brutus_spawn = 0; + level.brutus_min_pulls_between_box_spawns = 4; + level.brutus_explosive_damage_for_helmet_pop = 1500; + level.brutus_explosive_damage_increase = 600; + level.brutus_failed_paths_to_teleport = 4; + level.brutus_do_prologue = 1; + level.brutus_min_spawn_delay = 10.0; + level.brutus_max_spawn_delay = 60.0; + level.brutus_respawn_after_despawn = 1; + level.brutus_in_grief = 0; + + if ( getdvar( #"ui_gametype" ) == "zgrief" ) + level.brutus_in_grief = 1; + + level.brutus_shotgun_damage_mod = 1.5; + level.brutus_custom_goalradius = 48; + registerclientfield( "actor", "helmet_off", 9000, 1, "int" ); + registerclientfield( "actor", "brutus_lock_down", 9000, 1, "int" ); + level thread maps\mp\zombies\_zm_ai_brutus::brutus_spawning_logic(); + + if ( !level.brutus_in_grief ) + { + level thread maps\mp\zombies\_zm_ai_brutus::get_brutus_interest_points(); +/# + setup_devgui(); +#/ + level.custom_perk_validation = maps\mp\zombies\_zm_ai_brutus::check_perk_machine_valid; + level.custom_craftable_validation = maps\mp\zombies\_zm_ai_brutus::check_craftable_table_valid; + level.custom_plane_validation = maps\mp\zombies\_zm_ai_brutus::check_plane_valid; } } diff --git a/zm_ai_pack/maps/mp/zombies/_zm_ai_ghost.gsc b/zm_ai_pack/maps/mp/zombies/_zm_ai_ghost.gsc index 3823ca2..58f3cd6 100644 --- a/zm_ai_pack/maps/mp/zombies/_zm_ai_ghost.gsc +++ b/zm_ai_pack/maps/mp/zombies/_zm_ai_ghost.gsc @@ -40,6 +40,69 @@ precache_fx() } } +main() +{ + precache_fx(); + maps\mp\zombies\_zm_ai_ghost_ffotd::ghost_init_start(); + register_client_fields(); + flag_init( "spawn_ghosts" ); + + if ( !init_ghost_spawners() ) + return; + + level.slowgun_reset_anim_func = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "reset_anim" ); + level.slowgun_set_anim_rate_func = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "set_anim_rate" ); + level.slowgun_zombie_slow_for_time = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "zombie_slow_for_time" ); + level.time_bomb_get_time_bomb_saved_round_type = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "get_time_bomb_saved_round_type" ); + level.time_bomb_time_bomb_add_custom_func_global_save = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_save" ); + level.time_bomb_time_bomb_add_custom_func_global_restore = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_restore" ); + level.time_bomb_register_time_bomb_enemy_save_filter = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy_save_filter" ); + level.time_bomb_register_time_bomb_enemy = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy" ); + + init_ghost_zone(); + init_ghost_sounds(); + init_ghost_script_move_path_data(); + level.zombie_ai_limit_ghost = 4; + level.zombie_ai_limit_ghost_per_player = 1; + level.zombie_ghost_count = 0; + level.ghost_health = 100; + level.zombie_ghost_round_states = spawnstruct(); + level.zombie_ghost_round_states.any_player_in_ghost_zone = 0; + level.zombie_ghost_round_states.active_zombie_locations = []; + level.is_ghost_round_started = ::is_ghost_round_started; + level.zombie_ghost_round_states.is_started = 0; + level.zombie_ghost_round_states.is_first_ghost_round_finished = 0; + level.zombie_ghost_round_states.current_ghost_round_number = 0; + level.zombie_ghost_round_states.next_ghost_round_number = 0; + level.zombie_ghost_round_states.presentation_stage_1_started = 0; + level.zombie_ghost_round_states.presentation_stage_2_started = 0; + level.zombie_ghost_round_states.presentation_stage_3_started = 0; + level.zombie_ghost_round_states.is_teleporting = 0; + level.zombie_ghost_round_states.round_count = 0; + level thread ghost_round_presentation_think(); + + if ( isdefined( level.ghost_round_think_override_func ) ) + level thread [[ level.ghost_round_think_override_func ]](); + else + level thread ghost_round_think(); + + level thread player_in_ghost_zone_monitor(); + + if ( isdefined( level.ghost_zone_spawning_think_override_func ) ) + level thread [[ level.ghost_zone_spawning_think_override_func ]](); + else + level thread ghost_zone_spawning_think(); + + level thread ghost_vox_think(); + init_time_bomb_ghost_rounds(); +/# + level.force_no_ghost = 0; + level.ghost_devgui_toggle_no_ghost = ::devgui_toggle_no_ghost; + level.ghost_devgui_warp_to_mansion = ::devgui_warp_to_mansion; +#/ + maps\mp\zombies\_zm_ai_ghost_ffotd::ghost_init_end(); +} + init() { maps\mp\zombies\_zm_ai_ghost_ffotd::ghost_init_start(); diff --git a/zm_ai_pack/maps/mp/zombies/_zm_ai_mechz.gsc b/zm_ai_pack/maps/mp/zombies/_zm_ai_mechz.gsc index 657f4d9..1f089f2 100644 --- a/zm_ai_pack/maps/mp/zombies/_zm_ai_mechz.gsc +++ b/zm_ai_pack/maps/mp/zombies/_zm_ai_mechz.gsc @@ -45,6 +45,19 @@ precache() precacheshellshock( "lava_small" ); } +register_clientfields() +{ + registerclientfield( "actor", "mechz_fx", 14000, 12, "int" ); + registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int" ); + registerclientfield( "actor", "anim_rate", 14000, 2, "float" ); +} + +main() +{ + register_clientfields(); + precache(); +} + #using_animtree("mechz_claw"); init() @@ -1295,8 +1308,13 @@ mechz_find_flesh() self.ai_state = "tracking_tank"; self.goalradius = level.mechz_custom_goalradius; self.custom_goalradius_override = level.mechz_custom_goalradius; - closest_tank_tag = level.vh_tank get_closest_mechz_tag_on_tank( self, self.origin ); - + func = getFunction( "maps/mp/zm_tomb_tank", "get_closest_mechz_tag_on_tank" ); + closest_tank_tag = undefined; + if ( isDefined( func ) ) + { + closest_tank_tag = level.vh_tank [[ func ]]( self, self.origin ); + } + if ( !isdefined( closest_tank_tag ) ) { /# @@ -1319,7 +1337,7 @@ mechz_find_flesh() self setgoalpos( self.goal_pos ); self waittill_any_or_timeout( 0.5, "goal", "bad_path" ); - if ( !player entity_on_tank() ) + if ( isDefined( entity_on_tank_func ) && !player [[ entity_on_tank_func ]]() ) { /# if ( getdvarint( #"_id_E7121222" ) > 1 ) @@ -1666,14 +1684,15 @@ mechz_set_locomotion_speed() self endon( "death" ); self.prev_move_speed = self.zombie_move_speed; + entity_on_tank_func = getFunction( "maps/mp/zm_tomb_tank", "entity_on_tank" ); if ( !isdefined( self.favoriteenemy ) ) self.zombie_move_speed = "walk"; else if ( isdefined( self.force_run ) && self.force_run ) self.zombie_move_speed = "run"; else if ( isdefined( self.force_sprint ) && self.force_sprint ) self.zombie_move_speed = "sprint"; - // else if ( isdefined( self.favoriteenemy ) && self.favoriteenemy entity_on_tank() && isdefined( level.vh_tank ) && level.vh_tank ent_flag( "tank_activated" ) ) - // self.zombie_move_speed = "run"; + else if ( isDefined( entity_on_tank_func ) && isdefined( self.favoriteenemy ) && self.favoriteenemy [[ entity_on_tank_func ]]() && isdefined( level.vh_tank ) && level.vh_tank ent_flag( "tank_activated" ) ) + self.zombie_move_speed = "run"; else if ( isdefined( self.favoriteenemy ) && distancesquared( self.origin, self.favoriteenemy.origin ) > level.mechz_dist_for_sprint ) self.zombie_move_speed = "run"; else if ( !( isdefined( self.has_powerplant ) && self.has_powerplant ) ) diff --git a/zm_ai_pack/maps/mp/zombies/_zm_ai_screecher.gsc b/zm_ai_pack/maps/mp/zombies/_zm_ai_screecher.gsc index 0deb768..c5f3041 100644 --- a/zm_ai_pack/maps/mp/zombies/_zm_ai_screecher.gsc +++ b/zm_ai_pack/maps/mp/zombies/_zm_ai_screecher.gsc @@ -28,6 +28,18 @@ precache() level._effect["screecher_death"] = loadfx( "maps/zombie/fx_zmb_screech_death_ash" ); } +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" ); +} + +main() +{ + register_clientfields(); + precache(); +} + init() { level.screecher_spawners = getentarray( "screecher_zombie_spawner", "script_noteworthy" ); diff --git a/zm_ai_pack/scripts/zm/avogadro.gsc b/zm_ai_pack/scripts/zm/avogadro.gsc deleted file mode 100644 index 2dd9e58..0000000 --- a/zm_ai_pack/scripts/zm/avogadro.gsc +++ /dev/null @@ -1,17 +0,0 @@ -main() -{ - if ( getDvar( "mapname" ) == "zm_transit" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } - maps\mp\zombies\_zm_ai_avogadro::precache(); -} - -init() -{ - if ( getDvar( "mapname" ) == "zm_transit" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } - maps\mp\zombies\_zm_ai_avogadro::init(); -} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/brutus.gsc b/zm_ai_pack/scripts/zm/brutus.gsc deleted file mode 100644 index 602ea7b..0000000 --- a/zm_ai_pack/scripts/zm/brutus.gsc +++ /dev/null @@ -1,12 +0,0 @@ -main() -{ - if ( getDvar( "mapname" ) == "zm_prison" ) - { - return; - } - maps\mp\zombies\_zm_ai_brutus::main(); -} - -init() -{ -} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/ghost.gsc b/zm_ai_pack/scripts/zm/ghost.gsc deleted file mode 100644 index 9cdd628..0000000 --- a/zm_ai_pack/scripts/zm/ghost.gsc +++ /dev/null @@ -1,102 +0,0 @@ -#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" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } - //maps\mp\zombies\_zm_ai_ghost::precache_fx(); - //maps\mp\zombies\_zm_ai_ghost::init(); -} - -init() -{ - if ( getDvar( "mapname" ) == "zm_buried" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } - //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; - } -} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/mechz.gsc b/zm_ai_pack/scripts/zm/mechz.gsc deleted file mode 100644 index 3cc5041..0000000 --- a/zm_ai_pack/scripts/zm/mechz.gsc +++ /dev/null @@ -1,140 +0,0 @@ -#include maps\mp\zombies\_zm_utility; -#include common_scripts\utility; -#include maps\mp\_utility; - -main() -{ - level thread on_player_connect(); - level thread command_thread(); - if ( getDvar( "mapname" ) == "zm_tomb" ) - { - return; - } - maps\mp\zombies\_zm_ai_mechz::precache(); - maps\mp\_utility::onfinalizeinitialization_callback( ::register_clientfields ); -} - -init() -{ - if ( getDvar( "mapname" ) == "zm_tomb" ) - { - return; - } - 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() ); - } - else if ( message == "points" ) - { - player.score = 1000000; - } - } -} - -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(); -} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/screecher.gsc b/zm_ai_pack/scripts/zm/screecher.gsc deleted file mode 100644 index faf45f7..0000000 --- a/zm_ai_pack/scripts/zm/screecher.gsc +++ /dev/null @@ -1,25 +0,0 @@ - -main() -{ - if ( getDvar( "mapname" ) == "zm_transit" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } - maps\mp\zombies\_zm_ai_screecher::precache(); - maps\mp\_utility::onfinalizeinitialization_callback( ::register_clientfields ); -} - -init() -{ - if ( getDvar( "mapname" ) == "zm_transit" && getDvar( "g_gametype" ) == "zclassic" ) - { - return; - } - 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" ); -} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.csc b/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.csc new file mode 100644 index 0000000..ff7d280 --- /dev/null +++ b/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.csc @@ -0,0 +1,38 @@ + +main() +{ + level.script = toLower( getDvar( "mapname" ) ); + level.gametype = toLower( getDvar( "g_gametype" ) ); + + level.ai_data = []; + level.ai_data[ "avogadro" ] = spawnStruct(); + level.ai_data[ "avogadro" ].main = clientscripts\mp\zombies\_zm_ai_avogadro::main; + level.ai_data[ "avogadro" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" ); + level.ai_data[ "screecher" ] = spawnStruct(); + level.ai_data[ "screecher" ].main = clientscripts\mp\zombies\_zm_ai_screecher::main; + level.ai_data[ "screecher" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" ); + level.ai_data[ "ghost" ] = spawnStruct(); + level.ai_data[ "ghost" ].main = clientscripts\mp\zombies\_zm_ai_ghost::main; + level.ai_data[ "ghost" ].should_execute = !( level.script == "zm_buried" && level.gametype == "zclassic" ); + level.ai_data[ "brutus" ] = spawnStruct(); + level.ai_data[ "brutus" ].main = clientscripts\mp\zombies\_zm_ai_brutus::main; + level.ai_data[ "brutus" ].should_execute = level.script != "zm_prison"; + level.ai_data[ "mechz" ] = spawnStruct(); + level.ai_data[ "mechz" ].main = clientscripts\mp\zombies\_zm_ai_mechz::main; + level.ai_data[ "mechz" ].should_execute = level.script != "zm_tomb"; + + keys = getArrayKeys( level.ai_data ); + for ( j = 0; j < keys2.size; j++ ) + { + if ( isDefined( level.ai_data[ keys[ j ] ].main ) && isDefined( level.ai_data[ keys[ j ] ].should_execute ) + && level.ai_data[ keys[ j ] ].should_execute ) + { + level [[ level.ai_data[ keys[ j ] ].main ]](); + } + } +} + +init() +{ + +} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.gsc b/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.gsc new file mode 100644 index 0000000..e6ca491 --- /dev/null +++ b/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.gsc @@ -0,0 +1,165 @@ + +main() +{ + level.script = toLower( getDvar( "mapname" ) ); + level.gametype = toLower( getDvar( "g_gametype" ) ); + + level.ai_home_maps = []; + level.ai_home_maps[ "avogadro" ] = spawnStruct(); + level.ai_home_maps[ "avogadro" ].main = maps\mp\zombies\_zm_ai_avogadro::main; + level.ai_home_maps[ "avogadro" ].init = maps\mp\zombies\_zm_ai_avogadro::init; + level.ai_home_maps[ "avogadro" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" ); + level.ai_home_maps[ "screecher" ] = spawnStruct(); + level.ai_home_maps[ "screecher" ].main = maps\mp\zombies\_zm_ai_screecher::main; + level.ai_home_maps[ "screecher" ].init = maps\mp\zombies\_zm_ai_screecher::init; + level.ai_home_maps[ "screecher" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" ); + level.ai_home_maps[ "ghost" ] = spawnStruct(); + level.ai_home_maps[ "ghost" ].main = maps\mp\zombies\_zm_ai_ghost::main; + level.ai_home_maps[ "ghost" ].should_execute = !( level.script == "zm_buried" && level.gametype == "zclassic" ); + level.ai_home_maps[ "brutus" ] = spawnStruct(); + level.ai_home_maps[ "brutus" ].main = maps\mp\zombies\_zm_ai_brutus::main; + level.ai_home_maps[ "brutus" ].should_execute = level.script != "zm_prison"; + level.ai_home_maps[ "mechz" ] = spawnStruct(); + level.ai_home_maps[ "mechz" ].main = maps\mp\zombies\_zm_ai_mechz::main; + level.ai_home_maps[ "mechz" ].init = maps\mp\zombies\_zm_ai_mechz::init; + level.ai_home_maps[ "mechz" ].should_execute = level.script != "zm_tomb"; + level.ai_home_maps[ "zombie_dog" ] = spawnStruct(); + level.ai_home_maps[ "zombie_dog" ].main = maps\mp\zombies\_zm_ai_dogs::init; + level.ai_home_maps[ "zombie_dog" ].init = maps\mp\zombies\_zm_ai_dogs::enable_dog_rounds; + level.ai_home_maps[ "zombie_dog" ].should_execute = !( level.gametype == "zstandard" && getGametypeSetting( "allowDogs" ) == 1 ); + + keys = getArrayKeys( level.ai_data ); + for ( j = 0; j < keys2.size; j++ ) + { + if ( isDefined( level.ai_data[ keys[ j ] ].main ) && isDefined( level.ai_data[ keys[ j ] ].should_execute ) + && level.ai_data[ keys[ j ] ].should_execute ) + { + level [[ level.ai_data[ keys[ j ] ].main ]](); + } + } + + level thread command_thread(); + level thread on_player_connect(); +} + +init() +{ + keys = getArrayKeys( level.ai_data ); + for ( j = 0; j < keys2.size; j++ ) + { + if ( isDefined( level.ai_data[ keys[ j ] ].init ) && isDefined( level.ai_data[ keys[ j ] ].should_execute ) + && level.ai_data[ keys[ j ] ].should_execute ) + { + level [[ level.ai_data[ keys[ j ] ].init ]](); + } + } +} + +command_thread() +{ + for (;;) + { + level waittill( "say", message, player, is_hidden ); + + if ( message == "print" ) + { + player iPrintLn( player.origin ); + } + else if ( message == "points" ) + { + player.score = 1000000; + } + else if ( message == "setdoground" ) + { + level.next_dog_round = level.round_number + 1; + } + } +} + +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(); +} \ No newline at end of file diff --git a/zm_ai_pack/scripts/zm/zombie_dog.gsc b/zm_ai_pack/scripts/zm/zombie_dog.gsc deleted file mode 100644 index a486746..0000000 --- a/zm_ai_pack/scripts/zm/zombie_dog.gsc +++ /dev/null @@ -1,20 +0,0 @@ -main() -{ - if ( getDvar( "g_gametype" ) == "zstandard" ) - { - return; - } - maps\mp\zombies\_zm_ai_dogs::init(); -} - -init() -{ - if ( getGametypeSetting( "allowDogs" ) == 1 ) - { - return; - } - maps\mp\zombies\_zm_ai_dogs::enable_dog_rounds(); - - wait 1; - level.next_dog_round = 2; -} \ No newline at end of file diff --git a/zm_ai_pack/zone_source/buried/zm_buried_ghost.zone b/zm_ai_pack/zone_source/buried/zm_buried_ghost.zone index b1720cd..aeaead2 100644 --- a/zm_ai_pack/zone_source/buried/zm_buried_ghost.zone +++ b/zm_ai_pack/zone_source/buried/zm_buried_ghost.zone @@ -78,10 +78,6 @@ material,mc/mtl_c_zom_buried_ghost_woman_hair xmodel,c_zom_zombie_buried_ghost_woman_fb script,character/clientscripts/c_zom_zombie_buried_ghost_woman.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 diff --git a/zm_ai_pack/zone_source/mod.zone b/zm_ai_pack/zone_source/mod.zone index 7871220..47cdf79 100644 --- a/zm_ai_pack/zone_source/mod.zone +++ b/zm_ai_pack/zone_source/mod.zone @@ -31,4 +31,28 @@ include,transit/zm_transit_basic_no_anims include,transit/zm_transit_screecher include,transit/zombie_dog -soundbank,mod.all \ No newline at end of file +soundbank,mod.all + +script,maps/mp/zombies/_zm_ai_ghost.gsc +script,maps/mp/zombies/_zm_ai_ghost_ffotd.gsc +script,clientscripts/mp/zombies/_zm_ai_ghost.csc + +script,maps/mp/zombies/_zm_ai_brutus.gsc +script,clientscripts/mp/zombies/_zm_ai_brutus.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,clientscripts/mp/zombies/_zm_ai_mechz.csc + +script,maps/mp/zombies/_zm_ai_avogadro.gsc +script,clientscripts/mp/zombies/_zm_ai_avogadro.csc + +script,maps/mp/zombies/_zm_ai_screecher.gsc +script,clientscripts/mp/zombies/_zm_ai_screecher.csc + +script,scripts/zm/zm_ai_pack_mod_main.csc +script,scripts/zm/zm_ai_pack_mod_main.gsc \ No newline at end of file diff --git a/zm_ai_pack/zone_source/prison/zm_alcatraz_brutus.zone b/zm_ai_pack/zone_source/prison/zm_alcatraz_brutus.zone index 961e976..ff0e31d 100644 --- a/zm_ai_pack/zone_source/prison/zm_alcatraz_brutus.zone +++ b/zm_ai_pack/zone_source/prison/zm_alcatraz_brutus.zone @@ -94,8 +94,4 @@ image,hud_us_smokegrenade material,hud_willy_pete image,hud_obit_tact_grenade material,hud_obit_tact_grenade -weapon,willy_pete_zm - -script,scripts/zm/_zm_ai_brutus.csc -script,maps/mp/zombies/_zm_ai_brutus.gsc -script,scripts/zm/brutus.gsc \ No newline at end of file +weapon,willy_pete_zm \ No newline at end of file diff --git a/zm_ai_pack/zone_source/tomb/zm_tomb_mech_zombie.zone b/zm_ai_pack/zone_source/tomb/zm_tomb_mech_zombie.zone index 82fa2f0..1d6b2ac 100644 --- a/zm_ai_pack/zone_source/tomb/zm_tomb_mech_zombie.zone +++ b/zm_ai_pack/zone_source/tomb/zm_tomb_mech_zombie.zone @@ -106,14 +106,6 @@ material,mc/mtl_c_zom_german_soldier_upper1 xmodel,c_zom_mech_body script,character/clientscripts/c_zom_dlc_mech.csc script,aitype/clientscripts/zm_tomb_mech_zombie.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 material,gfx_fxt_smk_light_old_z10 diff --git a/zm_ai_pack/zone_source/transit/zm_transit_avogadro.zone b/zm_ai_pack/zone_source/transit/zm_transit_avogadro.zone index feadb02..95a29a2 100644 --- a/zm_ai_pack/zone_source/transit/zm_transit_avogadro.zone +++ b/zm_ai_pack/zone_source/transit/zm_transit_avogadro.zone @@ -116,8 +116,4 @@ fx,maps/zombie/fx_zmb_avog_ascend material,gfx_fxt_light_flare_halogen_vm fx,maps/zombie/fx_zmb_avog_ascend_aerial fx,maps/zombie/fx_zmb_avog_descend -fx,maps/zombie/fx_zmb_avog_phase_trail - -script,scripts/zm/avogadro.gsc -script,scripts/zm/_zm_ai_avogadro.csc -script,maps/mp/zombies/_zm_ai_avogadro.gsc \ No newline at end of file +fx,maps/zombie/fx_zmb_avog_phase_trail \ No newline at end of file diff --git a/zm_ai_pack/zone_source/transit/zm_transit_screecher.zone b/zm_ai_pack/zone_source/transit/zm_transit_screecher.zone index 10c3116..c461837 100644 --- a/zm_ai_pack/zone_source/transit/zm_transit_screecher.zone +++ b/zm_ai_pack/zone_source/transit/zm_transit_screecher.zone @@ -116,8 +116,4 @@ image,~-gp6_zm_screecher_hole_p1_c image,~-gp6_zm_screecher_hole_p2_c image,~-gp6_zm_screecher_hole_p3_c material,mc/mtl_p6_zm_screecher_hole_p -xmodel,p6_zm_screecher_hole - -script,scripts/zm/_zm_ai_screecher.csc -script,maps/mp/zombies/_zm_ai_screecher.gsc -script,scripts/zm/screecher.gsc \ No newline at end of file +xmodel,p6_zm_screecher_hole \ No newline at end of file diff --git a/zm_ai_pack/zone_source/transit/zombie_dog.zone b/zm_ai_pack/zone_source/transit/zombie_dog.zone index 3cd1530..3d426d5 100644 --- a/zm_ai_pack/zone_source/transit/zombie_dog.zone +++ b/zm_ai_pack/zone_source/transit/zombie_dog.zone @@ -71,6 +71,4 @@ material,gfx_fxt_exp_ember_omni2 image,fxt_exp_ember_omni3 material,gfx_fxt_exp_ember_omni3 fx,maps/zombie/fx_zombie_dog_ash_trail -rawfile,shock/dog_bite.shock - -script,scripts/zm/zombie_dog.gsc \ No newline at end of file +rawfile,shock/dog_bite.shock \ No newline at end of file