boiii-scripts/shared/serverfaceanim_shared.gsc
2023-04-13 17:30:38 +02:00

58 lines
7.2 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\callbacks_shared;
#using scripts\shared\system_shared;
#namespace serverfaceanim;
function autoexec __init__sytem__() { system::register("serverfaceanim",&__init__,undefined,undefined); }
function __init__()
{
if ( !( isdefined( level._use_faceanim ) && level._use_faceanim ) )
{
return;
}
callback::on_spawned( &init_serverfaceanim );
}
function init_serverfaceanim()
{
self.do_face_anims = true;
if( !isdefined( level.face_event_handler ) )
{
level.face_event_handler = SpawnStruct();
level.face_event_handler.events = [];
level.face_event_handler.events["death"] = "face_death";
level.face_event_handler.events["grenade danger"] = "face_alert";
level.face_event_handler.events["bulletwhizby"] = "face_alert";
level.face_event_handler.events["projectile_impact"] = "face_alert";
level.face_event_handler.events["explode"] = "face_alert";
level.face_event_handler.events["alert"] = "face_alert";
level.face_event_handler.events["shoot"] = "face_shoot_single";
level.face_event_handler.events["melee"] = "face_melee";
level.face_event_handler.events["damage"] = "face_pain";
level thread wait_for_face_event();
}
}
function wait_for_face_event()
{
while( true )
{
level waittill( "face", face_notify, ent );
if( isdefined( ent ) && isdefined( ent.do_face_anims ) && ent.do_face_anims )
{
if( isdefined( level.face_event_handler.events[face_notify] ) )
{
ent SendFaceEvent( level.face_event_handler.events[face_notify] );
}
}
}
}