mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-04-23 09:35:45 +00:00
113 lines
3.5 KiB
Plaintext
113 lines
3.5 KiB
Plaintext
//****************************************************************************
|
|
// **
|
|
// Confidential - (C) Activision Publishing, Inc. 2010 **
|
|
// **
|
|
//****************************************************************************
|
|
// **
|
|
// Module: NX Retreat **
|
|
// **
|
|
// Created: 7/8/2011 - Travis Chen (trchen x4143) **
|
|
// **
|
|
//****************************************************************************
|
|
|
|
#include maps\_utility;
|
|
#include common_scripts\utility;
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// this - enemy ai
|
|
check_retreat_triggers()
|
|
{
|
|
if( !IsDefined( self.script_retreat ) )
|
|
{
|
|
return;
|
|
}
|
|
retreat_trigger_name = self.script_retreat;
|
|
|
|
self endon( "death" );
|
|
|
|
// Get the associated retreat triggers
|
|
retreat_triggers = GetEntArray( "retreat_trigger", "targetname" );
|
|
|
|
foreach( retreat_trigger in retreat_triggers )
|
|
{
|
|
if( retreat_trigger.script_retreat == retreat_trigger_name )
|
|
{
|
|
self thread retreat_trigger( retreat_trigger, retreat_trigger_name );
|
|
}
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// this - enemy ai
|
|
retreat_trigger( trigger, retreat_trigger_name )
|
|
{
|
|
self endon( "death" );
|
|
|
|
// Wait for retreat trigger
|
|
trigger waittill( "trigger" );
|
|
|
|
// Notify that enemy has new retreat
|
|
self notify( "new_retreat" );
|
|
self endon( "new_retreat" );
|
|
|
|
// Wait for look at if defined
|
|
if( IsDefined( trigger.script_dot ) )
|
|
{
|
|
self wait_for_look_at_enemy( retreat_trigger_name, trigger.script_dot );
|
|
}
|
|
|
|
// Retreat enemy
|
|
if( IsAlive( self ) )
|
|
{
|
|
self notify( "retreating" );
|
|
|
|
self.goalradius = 0;
|
|
|
|
retreat_node = GetNode( trigger.target, "targetname" );
|
|
if( IsDefined( retreat_node ) )
|
|
{
|
|
self SetGoalNode( retreat_node );
|
|
}
|
|
else
|
|
{
|
|
IPrintln( "WARNING: Retreat " + retreat_trigger_name + " missing Goal Node" );
|
|
}
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|
|
|
|
// this - enemy ai
|
|
wait_for_look_at_enemy( retreat_trigger_name, dot )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "new_retreat" );
|
|
|
|
// Wait for player to see enemy
|
|
while( 1 )
|
|
{
|
|
look_at_enemy = within_fov( level._player.origin, level._player getplayerangles(), self.origin, Cos( dot ) );
|
|
if( look_at_enemy )
|
|
{
|
|
break;
|
|
}
|
|
wait( 0.05 );
|
|
}
|
|
}
|
|
|
|
//*******************************************************************
|
|
// *
|
|
// *
|
|
//*******************************************************************
|