diff --git a/zm_ai_pack/maps/mp/zm_nuked.d3dbsp b/zm_ai_pack/maps/mp/zm_nuked.d3dbsp index 49579b5..c2c173f 100644 --- a/zm_ai_pack/maps/mp/zm_nuked.d3dbsp +++ b/zm_ai_pack/maps/mp/zm_nuked.d3dbsp @@ -11430,10 +11430,102 @@ "origin" "100 100 -500" } { -"classname" "script_struct" +"targetname" "culdesac_yellow_zone_spawners" "script_noteworthy" "brutus_location" -"targetname" "culdesac_yellow_zone_spawner" -"origin" "367 454 -60" +"origin" "319.748 474.665 -60.8272" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "culdesac_yellow_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "483.841 -78.011 -63.875" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "culdesac_green_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "-594.722 142.852 -51.2586" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "culdesac_green_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "-142.783 291.472 -38.1161" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse1_f1_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "-644.561 420.392 -55.875" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse1_f2_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "-567.212 392.314 80.125" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse1_backyard_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "-1669.56 330.02 -63.0112" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse1_backyard_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "-1059.3 838.316 -61.87" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse2_f1_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "744.313 257.5 -56.72" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse2_f1_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "843.241 612.388 -56.875" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse2_backyard_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "1531.81 802.012 -61.7766" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse2_backyard_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "1946.32 389.903 -62.781" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse2_backyard_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "1371.91 175.223 -58.7049" +"classname" "script_struct" +"angles" "0 0 0" +} +{ +"targetname" "openhouse2_f2_zone_spawners" +"script_noteworthy" "brutus_location" +"origin" "678.909 201.955 79.125" +"classname" "script_struct" +"angles" "0 0 0" } { "script_forcespawn" "1" 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 3f31c73..a1e000e 100644 --- a/zm_ai_pack/maps/mp/zombies/_zm_ai_brutus.gsc +++ b/zm_ai_pack/maps/mp/zombies/_zm_ai_brutus.gsc @@ -21,15 +21,17 @@ #include scripts\zm\clientfield_alt_sys; +#include sys; + 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" ); + level._effect["brutus_flashlight"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_light" ); + level._effect["brutus_spawn"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_spawn" ); + level._effect["brutus_death"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_spawn" ); + level._effect["brutus_teargas"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_gas" ); + level._effect["brutus_lockdown"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_lock" ); + level._effect["brutus_lockdown_sm"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" ); + level._effect["brutus_lockdown_lg"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" ); precachemodel( "c_zom_cellbreaker_helmet" ); precacheshellshock( "mp_radiation_high" ); precacheshellshock( "mp_radiation_med" ); @@ -52,13 +54,13 @@ precache() main() { precacherumble( "brutus_footsteps" ); - 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" ); + level._effect["brutus_flashlight"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_light" ); + level._effect["brutus_spawn"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_spawn" ); + level._effect["brutus_death"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_spawn" ); + level._effect["brutus_teargas"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_gas" ); + level._effect["brutus_lockdown"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_lock" ); + level._effect["brutus_lockdown_sm"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" ); + level._effect["brutus_lockdown_lg"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" ); precachemodel( "c_zom_cellbreaker_helmet" ); precacheshellshock( "mp_radiation_high" ); precacheshellshock( "mp_radiation_med" ); @@ -1203,15 +1205,34 @@ brutus_stuck_watcher() continue; } - if ( !findpath( self.origin, self.goal_pos, self, 0, 0 ) ) + if ( level.script == "zm_prison" ) { + if ( !findpath( self.origin, self.goal_pos, self, true, false ) ) + { /# - println( "Brutus could not path to goal_pos " + self.goal_pos ); + println( "Brutus could not path to goal_pos " + self.goal_pos ); #/ - self.fail_count++; + self.fail_count++; + } + else + { + self.fail_count = 0; + } } else - self.fail_count = 0; + { + if ( !findpath( self.origin, self.goal_pos, self, true, false ) ) + { +/# + println( "Brutus could not path to goal_pos " + self.goal_pos ); +#/ + self.fail_count++; + } + else + { + self.fail_count = 0; + } + } if ( self.fail_count >= level.brutus_failed_paths_to_teleport ) { @@ -2086,7 +2107,7 @@ teargas_trigger_think() precache_default_brutus_barrier_fx() { - level._effect["brutus_smash_default"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_brk_wood" ); + level._effect["brutus_smash_default"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_brk_wood" ); } scale_helmet_damage( attacker, damage, headshot_mod, damage_mod, vdir ) 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 index d59f75e..01be8bf 100644 --- a/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.gsc +++ b/zm_ai_pack/scripts/zm/zm_ai_pack_mod_main.gsc @@ -263,7 +263,7 @@ dotraverse_override( traversestate, traversealias, no_powerups ) perk_machine_knockdown_zombie_override( origin ) { damage = int( self.health * 0.25 ); - if ( isDefined( self.animname ) && self.animname == "zombie" ) + if ( !is_true( self.no_gib ) ) { self.a.gib_ref = random( array( "guts", "right_arm", "left_arm" ) ); self thread maps\mp\animscripts\zm_death::do_gib(); diff --git a/zm_ai_pack/sys.gsc b/zm_ai_pack/sys.gsc new file mode 100644 index 0000000..03412a9 --- /dev/null +++ b/zm_ai_pack/sys.gsc @@ -0,0 +1,14 @@ +// T6 Script Builtins +/@ + Adds as a configstring to the fx configstring pool. + Returns an index that can be used in many different functions and methods to play an fx. + The fx configstring pool is limited to 195 entries before fx configstring overflow occurs. + On Plutonium addonfx pool was added to bypass this limit so functions add to this configstring pool + have another 256 entries. + USAGE: level._effect[ effect_alias ] = loadfx( ); + PARAMS: +@/ +loadfx( fx_name ) +{ + loadfx( fx_name ); +} \ No newline at end of file diff --git a/zm_ai_pack/zone_source/mod.zone b/zm_ai_pack/zone_source/mod.zone index e40680d..eb60a15 100644 --- a/zm_ai_pack/zone_source/mod.zone +++ b/zm_ai_pack/zone_source/mod.zone @@ -66,5 +66,7 @@ script,scripts/zm/zm_ai_pack_mod_main.gsc script,scripts/zm/clientfield_alt_sys.csc script,scripts/zm/clientfield_alt_sys.gsc +script,sys.gsc + // Map specific scripts script,scripts/zm/zm_prison/zm_ai_pack_mod_zm_prison_main.gsc \ No newline at end of file