boiii-scripts/shared/ai/skeleton.csc
2023-04-13 17:30:38 +02:00

71 lines
10 KiB
Plaintext

#using scripts\shared\ai_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\ai\systems\gib;
#using scripts\shared\system_shared;
function autoexec __init__sytem__() { system::register("skeleton",&__init__,undefined,undefined); }
function autoexec precache()
{
}
function __init__()
{
if( ai::shouldRegisterClientFieldForArchetype( "skeleton" ) )
{
clientfield::register(
"actor",
"skeleton",
1,
1,
"int",
&ZombieClientUtils::zombieHandler,
!true,
!true);
}
}
#namespace ZombieClientUtils;
function zombieHandler( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
{
entity = self;
if ( IsDefined( entity.archetype ) && entity.archetype != "zombie" )
{
return;
}
if ( !IsDefined( entity.initializedGibCallbacks ) || !entity.initializedGibCallbacks )
{
entity.initializedGibCallbacks = true;
GibClientUtils::AddGibCallback( localClientNum, entity, 8, &_gibCallback );
GibClientUtils::AddGibCallback( localClientNum, entity, 16, &_gibCallback );
GibClientUtils::AddGibCallback( localClientNum, entity, 32, &_gibCallback );
GibClientUtils::AddGibCallback( localClientNum, entity, 128, &_gibCallback );
GibClientUtils::AddGibCallback( localClientNum, entity, 256, &_gibCallback );
}
}
function private _gibCallback( localClientNum, entity, gibFlag )
{
switch (gibFlag)
{
case 8:
playsound(0, "zmb_zombie_head_gib", self.origin);
break;
case 16:
case 32:
case 128:
case 256:
playsound(0, "zmb_death_gibs", self.origin);
break;
}
}