diff options
Diffstat (limited to 'Northstar.CustomServers/mod/scripts/vscripts/ai/_ai_turret_sentry.gnut')
-rw-r--r-- | Northstar.CustomServers/mod/scripts/vscripts/ai/_ai_turret_sentry.gnut | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/ai/_ai_turret_sentry.gnut b/Northstar.CustomServers/mod/scripts/vscripts/ai/_ai_turret_sentry.gnut new file mode 100644 index 000000000..e34b30826 --- /dev/null +++ b/Northstar.CustomServers/mod/scripts/vscripts/ai/_ai_turret_sentry.gnut @@ -0,0 +1,72 @@ +global function AiTurretSentry_Init + +const DEAD_SENTRY_TURRET_FX = $"P_impact_exp_med_air" +const DEAD_SENTRY_TURRET_SFX = "SentryTurret_DeathExplo" +const SENTRY_TURRET_AIM_FX_RED = $"P_wpn_lasercannon_aim_short" +const SENTRY_TURRET_AIM_FX_BLUE = $"P_wpn_lasercannon_aim_short_blue" + +void function AiTurretSentry_Init() +{ + PrecacheParticleSystem( DEAD_SENTRY_TURRET_FX ) + //PrecacheParticleSystem( SENTRY_TURRET_AIM_FX_RED ) + //PrecacheParticleSystem( SENTRY_TURRET_AIM_FX_BLUE ) + //PrecacheParticleSystem( SENTRY_TURRET_AIM_FX2 ) + + AddSpawnCallback( "npc_turret_sentry", LightTurretSpawnFunction ) + AddDeathCallback( "npc_turret_sentry", LightTurretDeathFX ) + + //RegisterSignal( "TurretDisabled" ) + //RegisterSignal( "HandleTargetDeath" ) + //RegisterSignal( "OnPlayerDisconnectResetTurret" ) + //RegisterSignal( "Deactivate_Turret" ) + //RegisterSignal( "TurretShieldWallRelease") + //RegisterSignal( "DestroyShieldFX") +} + +void function LightTurretDeathFX( entity turret, var damageInfo ) +{ + turret.SetBodygroup( 0, 1 ) + + int turretEHandle = turret.GetEncodedEHandle() + array<entity> players = GetPlayerArray() + foreach( player in players ) + { + Remote_CallFunction_Replay( player, "ServerCallback_TurretRefresh", turretEHandle ) + } + + EmitSoundAtPosition( turret.GetTeam(), turret.GetOrigin(), DEAD_SENTRY_TURRET_SFX ) + PlayFX( DEAD_SENTRY_TURRET_FX, turret.GetOrigin() + Vector( 0,0,38 ) ) // played with a slight offset as requested by BigRig +} + +////////////////////////////////////////////////////////// +void function LightTurretSpawnFunction( entity turret ) +{ + turret.UnsetUsable() + +// float windupTime = TurretGetWindupTime( turret ) +// if ( windupTime > 0 ) +// thread HACK_TurretManagePreAttack( turret, OnWindupBegin_SentryTurret, OnWindupEnd_Turret ) +// + if ( turret.Dev_GetAISettingByKeyField( "aim_laser_disabled" ) ) + return + + thread SentryTurretAimLaser( turret ) +} + +void function SentryTurretAimLaser( entity turret ) +{ + entity fx1 = PlayLoopFXOnEntity( SENTRY_TURRET_AIM_FX_RED, turret, "camera_glow", null, null, ENTITY_VISIBLE_TO_ENEMY ) + entity fx2 = PlayLoopFXOnEntity( SENTRY_TURRET_AIM_FX_BLUE, turret, "camera_glow", null, null, ENTITY_VISIBLE_TO_FRIENDLY ) + + OnThreadEnd( + function() : ( fx1, fx2 ) + { + if ( IsValid( fx1 ) ) + EffectStop( fx1 ) + if ( IsValid( fx2 ) ) + EffectStop( fx2 ) + } + ) + + WaitSignal( turret, "OnDeath" ) +} |