//============================================================================= // KFSM_GrappleAttack //============================================================================= // Base Move to play a single animation, and end itself once it's done playing. //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC //============================================================================= class KFSM_PlaySingleAnim extends KFSpecialMove abstract native(SpecialMoves); /** Animation to play */ var() name AnimName; var() EAnimSlotStance AnimStance; var bool bLoopAnim; var float BlendInTime; var float BlendOutTime; var bool bUseRootMotion; /** Is set, the owner can cancel/abort this move after it's been started */ var bool bCanBeInterrupted; /** BlendOut time when animation is interrupted */ var float AbortBlendOutTime; function SpecialMoveStarted(bool bForced, Name PrevMove) { Super.SpecialMoveStarted(bForced, PrevMove); // Play animation PlayAnimation(); if( bUseRootMotion && AnimStance == EAS_FullBody ) { EnableRootMotion(); } } function SpecialMoveEnded(Name PrevMove, Name NextMove) { if( bUseRootMotion ) { DisableRootMotion(); } // If still playing an upperbody or fullbody animation allow it to be interrupted if ( bCanBeInterrupted && KFPOwner.BodyStanceNodes[AnimStance].bIsPlayingCustomAnim ) { KFPOwner.StopBodyAnim(AnimStance, AbortBlendOutTime); } Super.SpecialMoveEnded(PrevMove, NextMove); } /** Play an animation and enable the OnAnimEnd notification */ function PlayAnimation() { PlaySpecialMoveAnim(AnimName, AnimStance, BlendInTime, BlendOutTime, 1.f, bLoopAnim); } /** When the animation finishes playing end this move */ function AnimEndNotify(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) { if( !bLoopAnim ) { KFPOwner.EndSpecialMove(); } } /** Notification from the pawn that a medium (aka gun) or heavy (aka melee) affliction has been activated */ function NotifyHitReactionInterrupt() { if ( bCanBeInterrupted ) { KFPOwner.EndSpecialMove(); } } defaultproperties { // --------------------------------------------- // Animations BlendInTime=0.33f BlendOutTime=0.33f AbortBlendOutTime=0.33f bLoopAnim=false bAllowMomentumPush=true }