124 lines
3.1 KiB
Ucode
124 lines
3.1 KiB
Ucode
|
//=============================================================================
|
||
|
// 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
|
||
|
}
|