Add experimental alternative to clientfields.

This commit is contained in:
JezuzLizard
2024-02-18 19:40:14 -08:00
parent 1bb49ef5cf
commit 3ceec870a7
11 changed files with 381 additions and 56 deletions

View File

@ -19,6 +19,8 @@
#include maps\mp\animscripts\zm_death;
#include maps\mp\zombies\_zm_perks;
#include scripts\zm\clientfield_alt_sys;
precache()
{
level._effect["brutus_flashlight"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_brut_light" );
@ -62,8 +64,8 @@ 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" );
//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;
@ -2448,15 +2450,15 @@ brutus_lockdown_client_effects( delay )
if ( isdefined( delay ) )
wait( delay );
if ( self.brutus_lockdown_state )
self.brutus_lockdown_state = !self.brutus_lockdown_state;
if ( level.script == "zm_tomb" )
{
self.brutus_lockdown_state = 0;
self setclientfield( "brutus_lock_down", 0 );
self setclientfield( "brutus_lock_down", self.brutus_lockdown_state );
}
else
{
self.brutus_lockdown_state = 1;
self setclientfield( "brutus_lock_down", 1 );
set_clientfield_alt_allplayers( "actor", "brutus_lock_down", self, self.brutus_lockdown_state );
}
}

View File

@ -22,6 +22,8 @@
//#include maps\mp\zm_tomb_chamber;
#include maps\mp\zombies\_zm_ai_basic;
#include scripts\zm\clientfield_alt_sys;
precache()
{
level thread mechz_setup_armor_pieces();
@ -47,9 +49,12 @@ precache()
register_clientfields()
{
registerclientfield( "actor", "mechz_fx", 14000, 12, "int" );
registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int" );
registerclientfield( "actor", "anim_rate", 14000, 2, "float" );
//registerclientfield( "actor", "mechz_fx", 14000, 12, "int" );
//registerclientfield( "toplayer", "mechz_grab", 14000, 1, "int" );
if ( getDvar( "mapname" ) != "zm_buried" )
{
registerclientfield( "actor", "anim_rate", 14000, 2, "float" );
}
}
register_burn_overlay()
@ -210,7 +215,14 @@ clear_one_off_fx( fx_id )
self endon( "death" );
wait 10;
self.fx_field = self.fx_field & ~fx_id;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
}
traversal_booster_fx_watcher()
@ -233,8 +245,14 @@ traversal_booster_fx_watcher()
self.sndloopent playsound( "zmb_ai_mechz_rocket_stop" );
self.sndloopent stoploopsound( 1 );
}
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
}
}
@ -271,8 +289,14 @@ booster_fx_watcher()
self thread clear_one_off_fx( 512 );
}
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
}
}
@ -289,14 +313,28 @@ flamethrower_fx_watcher()
else if ( notetrack == "stop_ft" )
self.fx_field = self.fx_field & ~64;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
}
}
fx_cleanup()
{
self.fx_field = 0;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
wait_network_frame();
}
@ -576,6 +614,7 @@ mechz_spawn()
self.melee_anim_func = ::melee_anim_func;
self.meleedamage = 75;
self.custom_item_dmg = 2000;
self.ignore_distance_tracking = true;
recalc_zombie_array();
width = 15;
if ( level.script == "zm_tomb" )
@ -757,7 +796,14 @@ mechz_death()
self mechz_claw_detach();
self release_flamethrower_trigger();
self.fx_field = 0;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow_stop();
self mechz_interrupt();
@ -1507,7 +1553,14 @@ mechz_launch_armor_piece()
self detach( self.armor_state[self.next_armor_piece].model, self.armor_state[self.next_armor_piece].tag );
self.fx_field = self.fx_field | 1 << self.armor_state[self.next_armor_piece].index;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
if ( sndmechzisnetworksafe( "destruction" ) )
self playsound( "zmb_ai_mechz_destruction" );
@ -1637,7 +1690,14 @@ mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon,
self.fx_field = self.fx_field | 1024;
self.fx_field = self.fx_field & ~2048;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
{

View File

@ -12,6 +12,8 @@
#include maps\mp\animscripts\zm_shared;
#include maps\mp\zombies\_zm_spawner;
#include scripts\zm\clientfield_alt_sys;
mechz_in_range_for_jump()
{
if ( !isdefined( self.jump_pos ) )
@ -272,7 +274,14 @@ mechz_do_jump( wait_for_stationary_tank )
self show();
self.fx_field = self.fx_field_old;
self.fx_field_old = undefined;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow();
if ( isdefined( self.m_claw ) )
@ -298,7 +307,14 @@ mechz_kill_jump_watcher()
mechz_jump_cleanup()
{
self.fx_field = self.fx_field & ~128;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
self stopanimscripted();
self notify( "jump_complete" );
}

View File

@ -15,6 +15,8 @@
#include maps\mp\zombies\_zm_laststand;
//#include maps\mp\zombies\_zm_weap_riotshield_tomb;
#include scripts\zm\clientfield_alt_sys;
#using_animtree("mechz_claw");
mechz_claw_detach()
@ -48,6 +50,14 @@ mechz_claw_release( bopenclaw )
{
if ( isplayer( self.e_grabbed ) )
{
if ( level.script == "zm_tomb" )
{
self.e_grabbed setclientfieldtoplayer( "mechz_grab", 0 );
}
else
{
self.e_grabbed set_clientfield_alt_toplayer( "toplayer", "mechz_grab", self.e_grabbed, 0 );
}
self.e_grabbed setclientfieldtoplayer( "mechz_grab", 0 );
self.e_grabbed allowcrouch( 1 );
self.e_grabbed allowprone( 1 );
@ -163,7 +173,14 @@ claw_grapple()
v_claw_origin = self gettagorigin( "tag_claw" );
v_claw_angles = vectortoangles( self.origin - self.favoriteenemy.origin );
self.fx_field = self.fx_field | 256;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0, 1 );
self.m_claw unlink();
self.m_claw.fx_ent = spawn( "script_model", self.m_claw gettagorigin( "tag_claw" ) );
@ -211,7 +228,14 @@ claw_grapple()
else
{
self.e_grabbed = player;
self.e_grabbed setclientfieldtoplayer( "mechz_grab", 1 );
if ( level.script == "zm_tomb" )
{
self.e_grabbed setclientfieldtoplayer( "mechz_grab", 1 );
}
else
{
self.e_grabbed set_clientfield_alt_toplayer( "toplayer", "mechz_grab", self.e_grabbed, 1 );
}
self.e_grabbed playerlinktodelta( self.m_claw, "tag_attach_player" );
self.e_grabbed setplayerangles( vectortoangles( self.origin - self.e_grabbed.origin ) );
self.e_grabbed playsound( "zmb_ai_mechz_claw_grab" );
@ -285,7 +309,14 @@ claw_grapple()
self.m_claw.fx_ent delete();
self.m_claw.fx_ent = undefined;
self.fx_field = self.fx_field & ~256;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
flag_clear( "mechz_launching_claw" );
if ( isdefined( self.e_grabbed ) )
@ -558,7 +589,14 @@ mechz_claw_cleanup()
{
self.fx_field = self.fx_field & ~256;
self.fx_field = self.fx_field & ~64;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
self mechz_claw_release();
if ( isdefined( self.m_claw ) )

View File

@ -12,6 +12,8 @@
#include maps\mp\animscripts\zm_shared;
#include maps\mp\_visionset_mgr;
#include scripts\zm\clientfield_alt_sys;
init_flamethrower_triggers()
{
if ( level.script != "zm_tomb" )
@ -611,7 +613,14 @@ mechz_kill_flamethrower_watcher()
mechz_flamethrower_cleanup()
{
self.fx_field = self.fx_field & ~64;
self setclientfield( "mechz_fx", self.fx_field );
if ( level.script == "zm_tomb" )
{
self setclientfield( "mechz_fx", self.fx_field );
}
else
{
set_clientfield_alt_allplayers( "actor", "mechz_fx", self, self.fx_field );
}
self.firing = 0;
self.doing_tank_sweep = 0;
self.cant_melee = 0;