IW4-Dump-Files/animscripts/scripted/truckride_backoftruck.gsc

194 lines
4.6 KiB
Plaintext

#include animscripts\SetPoseMovement;
#include animscripts\combat_utility;
#using_animtree( "generic_human" );
hackangle()
{
self endon( "killanimscript" );
for ( ;; )
{
enemyAngle = animscripts\utility::GetYawToEnemy();
self OrientMode( "face angle", enemyAngle );
wait .05;
}
}
main()
{
println( "anim1" );
self endon( "killanimscript" );
self endon( "outoftruck" );
animscripts\utility::initialize( "l33t truckride combat" );
thread hackangle();
self OrientMode( "face enemy" );
if ( randomint( 100 ) > 50 )
nextaction = ( "stand" );
else
nextaction = ( "crouch" );
for ( ;; )
{
// Nothing below will work if our gun is completely empty.
Reload( 0 );
// if ( canShootstand && canStand &&
// ( !canShootCrouch || !canCrouch || ( dist < anim.standRangeSq )) )
if ( nextaction == ( "stand" ) )
{
timer = gettime() + randomint( 2000 ) + 2000;
while ( timer > gettime() )
{
// self animscripts\aim::aim();
success = LocalShootVolley( 0 );
// if (!success)
// self interruptPoint(); // We couldn't shoot for some reason, so now would be a good time to run for cover.
nextaction = ( "crouch" );
}
}
else if ( nextaction == ( "crouch" ) )
{
timer = gettime() + randomint( 2000 ) + 2000;
while ( timer > gettime() )
{
/#thread [[ anim.println ]]( "ExposedCombat - Crouched combat" );#/
// self animscripts\aim::aim();
success = ShootVolley();
if ( !success )
continue;
nextaction = ( "stand" );
}
}
}
}
LocalShootVolley( completeLastShot, forceShoot, posOverrideEntity )
{
if ( !isDefined( forceShoot ) )
{
forceShoot = "dontForceShoot";
}
self animscripts\shared::placeWeaponOn( self.primaryweapon, "none" );
if ( self.a.pose == "stand" )
{
anim_autofire = %stand_shoot_auto;
anim_semiautofire = %stand_shoot;
anim_boltfire = %stand_shoot;
}
else// assume crouch
{
anim_autofire = %crouch_shoot_auto;
anim_semiautofire = %crouch_shoot;
anim_boltfire = %crouch_shoot;
}
if ( animscripts\weaponList::usingAutomaticWeapon() )
{
self animscripts\face::SetIdleFace( anim.autofireface );
self setflaggedanimknob( "animdone", anim_autofire, 1, .15, 0 );
wait 0.20;
animRate = animscripts\weaponList::autoShootAnimRate();
self setFlaggedAnimKnobRestart( "shootdone", anim_autofire, 1, .05, animRate );
numShots = randomint( 8 ) + 6;
enemyAngle = animscripts\utility::AbsYawToEnemy();
/#thread [[ anim.locspam ]]( "c16a" );#/
for ( i = 0;( i < numShots && self.bulletsInClip > 0 && enemyAngle < 20 ); i++ )
{
self waittillmatch( "shootdone", "fire" );
if ( isDefined( posOverrideEntity ) )
{
if ( isSentient( posOverrideEntity ) )
{
pos = posOverrideEntity GetEye();
}
else
{
pos = posOverrideEntity.origin;
}
self shoot( 1, pos );
}
else
self shoot();
self decrementBulletsInClip();
enemyAngle = animscripts\utility::AbsYawToEnemy();
}
if ( completeLastShot )
wait animscripts\weaponList::waitAfterShot();
self notify( "stopautofireFace" );
}
else if ( animscripts\weaponList::usingSemiAutoWeapon() )
{
self animscripts\face::SetIdleFace( anim.aimface );
self setanimknob( anim_semiautofire, 1, .15, 0 );
wait 0.2;
rand = randomint( 2 ) + 2;
for ( i = 0;( i < rand && self.bulletsInClip > 0 ); i++ )
{
self setFlaggedAnimKnobRestart( "shootdone", anim_semiautofire, 1, 0, 1 );
if ( isDefined( posOverrideEntity ) )
self shoot( 1, posOverrideEntity . origin );
else
self shoot();
self decrementBulletsInClip();
/#thread [[ anim.locspam ]]( "c17.1b" );#/
shootTime = animscripts\weaponList::shootAnimTime();
quickTime = animscripts\weaponList::waitAfterShot();
wait quickTime;
if ( ( ( completeLastShot ) || ( i < rand - 1 ) ) && shootTime > quickTime )
wait shootTime - quickTime;
}
}
else// Bolt action
{
Rechamber(); // In theory you will almost never need to rechamber here, because you will have done
// it somewhere smarter, like in cover.
self animscripts\face::SetIdleFace( anim.aimface );
// Slowly blend in the first frame of the shoot instead of playing the transition.
self setanimknob( anim_boltfire, 1, .15, 0 );
wait 0.2;
self setFlaggedAnimKnobRestart( "shootdone", anim_boltfire, 1, 0, 1 );
if ( isDefined( posOverrideEntity ) )
self shoot( 1, posOverrideEntity . origin );
else
self shoot();
self.a.needsToRechamber = 1;
self decrementBulletsInClip();
shootTime = animscripts\weaponList::shootAnimTime();
quickTime = animscripts\weaponList::waitAfterShot();
wait quickTime;
}
return 1;
}