#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; } }