1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFSM_Matriarch_LightningStorm.uc
2020-12-13 18:01:13 +03:00

143 lines
3.9 KiB
Ucode

//=============================================================================
// KFSM_Matriarch_LightningStorm
//=============================================================================
//
//=============================================================================
// Killing Floor 2
// Copyright (C) 2019 Tripwire Interactive LLC
//=============================================================================
class KFSM_Matriarch_LightningStorm extends KFSM_PlaySingleAnim;
/** Max distance between the Matriarch and the current victim target */
var float MaxVictimDistance;
/** Wind Up animation name */
var Name WindUpAnimName;
/** Wind Down animation name */
var Name WindDownAnimName;
var KFGameExplosion ExplosionTemplate;
/** Notification called when Special Move starts */
function SpecialMoveStarted(bool bForced, Name PrevMove)
{
super.SpecialMoveStarted(bForced, PrevMove);
PlayWindUpAnimation();
KFPawn_ZedMatriarch(KFPOwner).PlayLightningStormDialog();
}
/** Overridden to do nothing */
function PlayAnimation();
/** Plays our wind up anim, starts the barrel spin skel controller */
function PlayWindUpAnimation()
{
// bUseRootMotion = true; ?
// EnableRootMotion(); ??
// SetGunTracking ???
// Zero movement
KFPOwner.ZeroMovementVariables();
PlaySpecialMoveAnim(WindUpAnimName, EAS_FullBody, BlendInTime, BlendOutTime, 1.f);
}
/** Plays our fire animation, starts weapon fire */
function PlayFireAnim()
{
local KFExplosionActor ExplosionActor;
PlaySpecialMoveAnim(AnimName, EAS_FullBody, 0.1f, 0.2f);
// Zero movement
KFPOwner.ZeroMovementVariables();
// Do damage
ExplosionActor = KFPOwner.Spawn(
class'KFExplosionActor', KFPOwner,, KFPOwner.Mesh.GetBoneLocation('Root'), rotator(vect(0,0,1)));
if (ExplosionActor != none)
{
ExplosionActor.Explode(ExplosionTemplate);
}
}
/** Plays our wind down animation, stops firing, disables barrel spin skel controller */
function PlayWindDownAnim()
{
// Zero movement
KFPOwner.ZeroMovementVariables();
PlaySpecialMoveAnim(WindDownAnimName, EAS_FullBody, BlendInTime, BlendOutTime, 1.f);
}
/** Plays subsequent animations in the barrage */
function AnimEndNotify(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime)
{
switch (DeferredSeqName)
{
case WindUpAnimName:
PlayFireAnim();
break;
case AnimName:
PlayWindDownAnim();
break;
case WindDownAnimName:
KFPOwner.EndSpecialMove();
break;
}
}
function SpecialMoveEnded(Name PrevMove, Name NextMove)
{
super.SpecialMoveEnded(PrevMove, NextMove);
}
defaultproperties
{
Handle=KFSM_Matriarch_LightningStorm
bDisableSteering=false
bDisableMovement=true
bCanBeInterrupted=false
bAllowFireAnims=true
bShouldDeferToPostTick=true // enables AnimEndNotify
// Animation
// NOTE: Yes, the animation names are "Lighting," not "LightNing"
WindUpAnimName=Lighting_Storm_In
AnimName=Lighting_Storm_Loop
WindDownAnimName=Lighting_Storm_Out
MaxVictimDistance=400.f
Begin Object Class=KFGameExplosion Name=ExploTemplate1
Damage=65
DamageRadius=800
DamageFalloffExponent=0.f
DamageDelay=0.f
MyDamageType=class'KFDT_EMP_MatriarchLightningStorm'
// Damage Effects
KnockDownStrength=0
KnockDownRadius=0
FractureMeshRadius=0
FracturePartVel=0
ExplosionEffects=KFImpactEffectInfo'ZED_Matriarch_ARCH.Lightning_Storm_Explosion_Arch'
ExplosionSound=AkEvent'WW_ZED_Matriarch.Play_Matriarch_Storm_Attack_01'
MomentumTransferScale=0
// Camera Shake
CamShake=CameraShake'FX_CameraShake_Arch.Grenades.Default_Grenade'
CamShakeInnerRadius=450
CamShakeOuterRadius=900
CamShakeFalloff=1.f
bOrientCameraShakeTowardsEpicenter=true
End Object
ExplosionTemplate=ExploTemplate1
}