238 lines
5.7 KiB
Plaintext
238 lines
5.7 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main( var_0 )
|
|
{
|
|
self endon( "killanimscript" );
|
|
animscripts\utility::initialize( "saw" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
self.a.special = "saw";
|
|
|
|
if ( isdefined( var_0.script_delay_min ) )
|
|
var_1 = var_0.script_delay_min;
|
|
else
|
|
var_1 = maps\_mgturret::burst_fire_settings( "delay" );
|
|
|
|
if ( isdefined( var_0.script_delay_max ) )
|
|
var_2 = var_0.script_delay_max - var_1;
|
|
else
|
|
var_2 = maps\_mgturret::burst_fire_settings( "delay_range" );
|
|
|
|
if ( isdefined( var_0.script_burst_min ) )
|
|
var_3 = var_0.script_burst_min;
|
|
else
|
|
var_3 = maps\_mgturret::burst_fire_settings( "burst" );
|
|
|
|
if ( isdefined( var_0.script_burst_max ) )
|
|
var_4 = var_0.script_burst_max - var_3;
|
|
else
|
|
var_4 = maps\_mgturret::burst_fire_settings( "burst_range" );
|
|
|
|
var_5 = gettime();
|
|
var_6 = "start";
|
|
animscripts\shared::placeweaponon( self.weapon, "none" );
|
|
var_0 show();
|
|
|
|
if ( isdefined( var_0.aiowner ) )
|
|
{
|
|
self.a.postscriptfunc = ::postscriptfunc;
|
|
self.a.usingturret = var_0;
|
|
var_0 notify( "being_used" );
|
|
thread stopusingturretwhennodelost();
|
|
}
|
|
else
|
|
self.a.postscriptfunc = ::preplacedpostscriptfunc;
|
|
|
|
var_0.dofiring = 0;
|
|
thread firecontroller( var_0 );
|
|
self setturretanim( self.primaryturretanim );
|
|
self setanimknobrestart( self.primaryturretanim, 1, 0.2, 1 );
|
|
self setanimknoblimitedrestart( self.additiveturretidle );
|
|
self setanimknoblimitedrestart( self.additiveturretfire );
|
|
var_0 setanimknoblimitedrestart( var_0.additiveturretidle );
|
|
var_0 setanimknoblimitedrestart( var_0.additiveturretfire );
|
|
var_0 endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( var_0.dofiring )
|
|
{
|
|
thread doshoot( var_0 );
|
|
waittimeoruntilturretstatechange( randomfloatrange( var_3, var_3 + var_4 ), var_0 );
|
|
var_0 notify( "turretstatechange" );
|
|
|
|
if ( var_0.dofiring )
|
|
{
|
|
thread doaim( var_0 );
|
|
wait( randomfloatrange( var_1, var_1 + var_2 ) );
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
thread doaim( var_0 );
|
|
var_0 waittill( "turretstatechange" );
|
|
}
|
|
}
|
|
|
|
waittimeoruntilturretstatechange( var_0, var_1 )
|
|
{
|
|
var_1 endon( "turretstatechange" );
|
|
wait( var_0 );
|
|
}
|
|
|
|
firecontroller( var_0 )
|
|
{
|
|
self endon( "killanimscript" );
|
|
var_1 = cos( 15 );
|
|
|
|
for (;;)
|
|
{
|
|
while ( isdefined( self.enemy ) )
|
|
{
|
|
var_2 = self.enemy.origin;
|
|
var_3 = var_0 gettagangles( "tag_aim" );
|
|
|
|
if ( common_scripts\utility::within_fov( var_0.origin, var_3, var_2, var_1 ) || distancesquared( var_0.origin, var_2 ) < 40000 )
|
|
{
|
|
if ( !var_0.dofiring )
|
|
{
|
|
var_0.dofiring = 1;
|
|
var_0 notify( "turretstatechange" );
|
|
}
|
|
}
|
|
else if ( var_0.dofiring )
|
|
{
|
|
var_0.dofiring = 0;
|
|
var_0 notify( "turretstatechange" );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
if ( var_0.dofiring )
|
|
{
|
|
var_0.dofiring = 0;
|
|
var_0 notify( "turretstatechange" );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
turrettimer( var_0, var_1 )
|
|
{
|
|
if ( var_0 <= 0 )
|
|
return;
|
|
|
|
self endon( "killanimscript" );
|
|
var_1 endon( "turretstatechange" );
|
|
wait( var_0 );
|
|
var_1 notify( "turretstatechange" );
|
|
}
|
|
|
|
stopusingturretwhennodelost()
|
|
{
|
|
self endon( "killanimscript" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( !isdefined( self.node ) || distancesquared( self.origin, self.node.origin ) > 4096 )
|
|
self stopuseturret();
|
|
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
postscriptfunc( var_0 )
|
|
{
|
|
if ( var_0 == "pain" )
|
|
{
|
|
if ( isdefined( self.node ) && distancesquared( self.origin, self.node.origin ) < 4096 )
|
|
{
|
|
self.a.usingturret hide();
|
|
animscripts\shared::placeweaponon( self.weapon, "right" );
|
|
self.a.postscriptfunc = ::postpainfunc;
|
|
return;
|
|
}
|
|
else
|
|
self stopuseturret();
|
|
}
|
|
|
|
if ( var_0 == "saw" )
|
|
{
|
|
var_1 = self getturret();
|
|
return;
|
|
}
|
|
|
|
self.a.usingturret delete();
|
|
self.a.usingturret = undefined;
|
|
animscripts\shared::placeweaponon( self.weapon, "right" );
|
|
}
|
|
|
|
postpainfunc( var_0 )
|
|
{
|
|
if ( !isdefined( self.node ) || distancesquared( self.origin, self.node.origin ) > 4096 )
|
|
{
|
|
self stopuseturret();
|
|
self.a.usingturret delete();
|
|
self.a.usingturret = undefined;
|
|
|
|
if ( isdefined( self.weapon ) && self.weapon != "none" )
|
|
animscripts\shared::placeweaponon( self.weapon, "right" );
|
|
}
|
|
else if ( var_0 != "saw" )
|
|
self.a.usingturret delete();
|
|
}
|
|
|
|
preplacedpostscriptfunc( var_0 )
|
|
{
|
|
animscripts\shared::placeweaponon( self.weapon, "right" );
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
doshoot( var_0 )
|
|
{
|
|
self setanim( %additive_saw_idle, 0, 0.1 );
|
|
self setanim( %additive_saw_fire, 1, 0.1 );
|
|
var_0 turretdoshootanims();
|
|
turretdoshoot( var_0 );
|
|
}
|
|
|
|
doaim( var_0 )
|
|
{
|
|
self setanim( %additive_saw_idle, 1, 0.1 );
|
|
self setanim( %additive_saw_fire, 0, 0.1 );
|
|
var_0 turretdoaimanims();
|
|
}
|
|
|
|
turretdoshoot( var_0 )
|
|
{
|
|
self endon( "killanimscript" );
|
|
var_0 endon( "turretstatechange" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 shootturret();
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
#using_animtree("mg42");
|
|
|
|
turretdoshootanims()
|
|
{
|
|
self setanim( %additive_saw_idle, 0, 0.1 );
|
|
self setanim( %additive_saw_fire, 1, 0.1 );
|
|
}
|
|
|
|
turretdoaimanims()
|
|
{
|
|
self setanim( %additive_saw_idle, 1, 0.1 );
|
|
self setanim( %additive_saw_fire, 0, 0.1 );
|
|
}
|