1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFSM_PlayerPatriarch_MinigunBarrage.uc

124 lines
3.1 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// KFSM_PlayerPatriarch_MinigunBarrage
//=============================================================================
// Player-controlled Patriarch's minigun barrage attack
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class KFSM_PlayerPatriarch_MinigunBarrage extends KFSM_Patriarch_MinigunBarrage;
var bool bAnimCanBeInterrupted;
function SpecialMoveStarted( bool bForced, name PrevMove )
{
bAnimCanBeInterrupted = false;
bPendingStopFire = false;
super.SpecialMoveStarted( bForced, PrevMove );
}
/** Plays our fire animation, starts weapon fire */
function PlayFireAnim()
{
if( bInterrupted || bObstructed )
{
return;
}
super.PlayFireAnim();
if( KFPOwner.IsLocallyControlled() )
{
KFPOwner.SetTimer( KFSkeletalMeshComponent(KFPOwner.Mesh).GetAnimInterruptTime(AnimName), false, nameOf(Timer_AnimInterrupt), self );
}
}
/** Overridden to restore camera settings */
function PlayWindDownAnim()
{
super.PlayWindDownAnim();
RestoreCameraDefaults();
}
/** Called on animations that can be interrupted */
function Timer_AnimInterrupt()
{
bAnimCanBeInterrupted = true;
if( bPendingStopFire )
{
SpecialMoveButtonReleased();
}
}
function SpecialMoveEnded( Name PrevMove, Name NextMove )
{
// Reset special move flags
if( KFPOwner != none )
{
KFPOwner.SpecialMoveFlags = 255;
}
super.SpecialMoveEnded( PrevMove, NextMove );
}
/** When the grapple animation ends, continue it with a different grapple anim */
function SpecialMoveFlagsUpdated()
{
if( KFPOwner.SpecialMoveFlags == FLAG_SpecialMoveButtonReleased )
{
bInterrupted = true;
if( !bIsFanFire )
{
MyPatPawn.StopBodyAnim( EAS_UpperBody, 0.1f );
}
PlayWindDownAnim();
}
else
{
super.SpecialMoveFlagsUpdated();
}
}
/* Called on some player-controlled moves when a firemode input has been pressed */
function SpecialMoveButtonRetriggered()
{
bPendingStopFire = false;
}
/** Called on some player-controlled moves when a firemode input has been released */
function SpecialMoveButtonReleased()
{
bPendingStopFire = true;
if( !bAnimCanBeInterrupted )
{
return;
}
KFPOwner.DoSpecialMove( KFPOwner.SpecialMove, true,, FLAG_SpecialMoveButtonReleased );
if( KFPOwner.Role < ROLE_Authority && KFPOwner.IsLocallyControlled() )
{
KFPOwner.ServerDoSpecialMove( KFPOwner.SpecialMove, true,, FLAG_SpecialMoveButtonReleased );
}
}
defaultproperties
{
Handle=KFSM_PlayerPatriarch_MinigunBarrage
//WindUpAnimName=Gun_TO_Load
//WindDownAnimName=Gun_TO_Idle
//AnimName=Gun_Idle
bUseCustomThirdPersonViewOffset=true
CustomThirdPersonViewOffset={(
OffsetHigh=(X=-140,Y=90,Z=45),
OffsetLow=(X=-160,Y=130,Z=55),
OffsetMid=(X=-125,Y=110,Z=45),
)}
ViewOffsetInterpTime=0.4f
CustomCameraFOV=60.f
CameraFOVTransitionTime=0.5f
}