Add mechz to MoTD.

Fix traps on MoTD affecting boss type zombies, and gibbing zombies that don't support gibbing.
This commit is contained in:
JezuzLizard
2024-02-20 19:10:05 -08:00
parent 97c880e8b7
commit 963e62d02d
11 changed files with 428 additions and 18 deletions

View File

@ -134,6 +134,7 @@ avogadro_prespawn()
self.has_legs = 1;
self.no_gib = 1;
self.is_avogadro = 1;
self.is_boss = true;
self.ignore_enemy_count = 1;
recalc_zombie_array();
self.ignore_nuke = 1;

View File

@ -40,8 +40,13 @@ precache()
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" );
if ( !isdefined( level.vsmgr_prio_zm_brutus_teargas ) )
level.vsmgr_prio_overlay_zm_ai_screecher_blur = 50;
if ( !isdefined( level.custom_brutus_barrier_fx ) )
level.custom_brutus_barrier_fx = ::precache_default_brutus_barrier_fx;
[[ level.custom_brutus_barrier_fx ]]();
}
main()
@ -64,8 +69,6 @@ main()
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" );
if ( !isdefined( level.vsmgr_prio_zm_brutus_teargas ) )
level.vsmgr_prio_overlay_zm_ai_screecher_blur = 50;
@ -379,6 +382,8 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
self.has_legs = 1;
self.ignore_all_poi = 1;
self.is_brutus = 1;
self.is_boss = true;
self.no_gib = true;
self.ignore_enemy_count = 1;
self.instakill_func = ::brutus_instakill_override;
self.nuke_damage_func = ::brutus_nuke_override;
@ -413,11 +418,10 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
spawn_pos = get_random_brutus_spawn_pos( zone_name );
}
else
{
spawn_pos = get_best_brutus_spawn_pos( zone_name );
}
spawn_pos = spawnStruct();
spawn_pos.origin = level.players[ 0 ].origin;
spawn_pos.angles = level.players[ 0 ].angles;
if ( !isdefined( spawn_pos ) )
{
/#
@ -425,7 +429,6 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
iprintln( "ERROR: Tried to spawn brutus with no brutus spawn_positions!" );
#/
self delete();
print( "****BRUTUS DELETED BECAUSE NO SPAWN POS****" );
return;
}

View File

@ -397,6 +397,7 @@ dog_init()
self.targetname = "zombie_dog";
self.script_noteworthy = undefined;
self.animname = "zombie_dog";
self.no_gib = true;
self.ignoreall = 1;
self.ignoreme = 1;
self.allowdeath = 1;

View File

@ -51,7 +51,7 @@ register_clientfields()
{
//registerclientfield( "actor", "mechz_fx", 14000, 12, "int" );
//registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int" );
if ( getDvar( "mapname" ) != "zm_buried" )
if ( getDvar( "mapname" ) != "zm_buried" || getDvar( "g_gametype" ) != "zclassic" )
{
registerclientfield( "actor", "anim_rate", 14000, 2, "float" );
}
@ -623,6 +623,7 @@ mechz_spawn()
self.no_gib = 1;
self.ignore_all_poi = 1;
self.is_mechz = 1;
self.is_boss = true;
self.ignore_enemy_count = 1;
self.no_damage_points = 1;
self.melee_anim_func = ::melee_anim_func;
@ -631,11 +632,12 @@ mechz_spawn()
self.ignore_distance_tracking = true;
recalc_zombie_array();
width = 15;
height = 60;
if ( level.script == "zm_tomb" )
{
width = 20;
}
self setphysparams( width, 0, 80 );
self setphysparams( width, 0, height );
self setcandamage( 0 );
self.zombie_init_done = 1;
self notify( "zombie_init_done" );