91 lines
2.5 KiB
Ucode
91 lines
2.5 KiB
Ucode
|
//=============================================================================
|
||
|
// KFSM_PlayerHusk_FlameThrowerAttack
|
||
|
//=============================================================================
|
||
|
// Play a flamethrower attack
|
||
|
//=============================================================================
|
||
|
// Killing Floor 2
|
||
|
// Copyright (C) 2015 Tripwire Interactive LLC
|
||
|
//=============================================================================
|
||
|
class KFSM_PlayerHusk_FlameThrowerAttack extends KFSM_Husk_FlameThrowerAttack;
|
||
|
|
||
|
var bool bAnimCanBeInterrupted;
|
||
|
|
||
|
function SpecialMoveStarted( bool bForced, name PrevMove )
|
||
|
{
|
||
|
bAnimCanBeInterrupted = false;
|
||
|
bPendingStopFire = false;
|
||
|
|
||
|
if( KFPOwner.IsLocallyControlled() )
|
||
|
{
|
||
|
KFPOwner.SetTimer( KFSkeletalMeshComponent(KFPOwner.Mesh).GetAnimInterruptTime(AnimName), false, nameOf(Timer_AnimInterrupt), self );
|
||
|
}
|
||
|
|
||
|
super.SpecialMoveStarted( bForced, PrevMove );
|
||
|
}
|
||
|
|
||
|
/** Called on animations that can be interrupted */
|
||
|
function Timer_AnimInterrupt()
|
||
|
{
|
||
|
bAnimCanBeInterrupted = true;
|
||
|
|
||
|
if( bPendingStopFire )
|
||
|
{
|
||
|
SpecialMoveButtonReleased();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** When the grapple animation ends, continue it with a different grapple anim */
|
||
|
function SpecialMoveFlagsUpdated()
|
||
|
{
|
||
|
if( KFPOwner.SpecialMoveFlags == FLAG_SpecialMoveButtonReleased )
|
||
|
{
|
||
|
KFPOwner.EndSpecialMove();
|
||
|
}
|
||
|
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
|
||
|
{
|
||
|
// SpecialMove
|
||
|
Handle=KFSM_PlayerHusk_FlameThrowerAttack
|
||
|
bDisableSteering=false
|
||
|
bDisableMovement=true
|
||
|
bDisableTurnInPlace=true
|
||
|
bCanBeInterrupted=true
|
||
|
|
||
|
// Animation
|
||
|
AnimName=Player_Flame
|
||
|
AnimStance=EAS_FullBody
|
||
|
|
||
|
// Flamethrower
|
||
|
FlameSprayArchetype=SprayActor_Flame'zed_husk_arch.Husk_Flamethrower_Flame_Player'
|
||
|
FlameAttackPlayEvent=AkEvent'WW_ZED_Husk.ZED_Husk_SFX_Flamethrower_LP'
|
||
|
FlameAttackStopEvent=AkEvent'WW_ZED_Husk.ZED_Husk_SFX_Flamethrower_Stop'
|
||
|
}
|