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

112 lines
3.2 KiB
Ucode

//=============================================================================
// KFSM_AlphaRally
//=============================================================================
// Alpha clot rally special move
//=============================================================================
// Killing Floor 2
// Copyright (C) 2016 Tripwire Interactive LLC
//=============================================================================
class KFSM_AlphaRally extends KFSM_PlaySingleAnim;
/** Animations to use for rally */
var const protected AnimVariants RallyAnims;
/** If TRUE, will also rally owner pawn */
var const protected bool bRallySelf;
/** Radius around the pawn to rally other zeds when using special rally ability */
var const float RallyRadius;
/** Rally particle systems */
var const protected ParticleSystem RallyEffect, AltRallyEffect;
/** Bone to attach the effect */
var const protected name RallyEffectBoneName;
/** Bones to attach the player rally effect */
var const protected name AltRallyEffectBoneNames[2];
/** Relative effect attachment offsets */
var const protected vector RallyEffectOffset, AltRallyEffectOffset;
static function byte PackRallyFlags()
{
return Rand( default.RallyAnims.Anims.Length );
}
protected function bool InternalCanDoSpecialMove()
{
return KFPOwner.Physics == PHYS_Walking
&& KFPOwner.IsCombatCapable();
}
function SpecialMoveStarted(bool bForced, Name PrevMove)
{
Super.SpecialMoveStarted(bForced, PrevMove);
if( KFPOwner != none )
{
KFPOwner.SetTimer( BlendInTime, false, nameOf(RallyZeds), self );
}
}
function PlayAnimation()
{
AnimName = RallyAnims.Anims[KFPOwner.SpecialMoveFlags];
super.PlayAnimation();
}
function RallyZeds()
{
local KFPawn_Monster KFPM;
// Rally nearby zeds
foreach KFPOwner.WorldInfo.GRI.VisibleCollidingActors( class'KFPawn_Monster', KFPM, RallyRadius, KFPOwner.Location )
{
// Skip our own pawn if self-rally is disabled
if( !bRallySelf && KFPM == KFPOwner )
{
continue;
}
if( KFPM.IsHeadless() || !KFPM.IsAliveAndWell() )
{
continue;
}
// Activate buffs and effects
KFPM.Rally( KFPOwner,
RallyEffect,
RallyEffectBoneName,
RallyEffectOffset,
AltRallyEffect,
AltRallyEffectBoneNames,
AltRallyEffectOffset );
}
}
defaultproperties
{
// Special move settings
bUseRootMotion=true
bPawnRotationLocked=true
bDisableSteering=true
bDisableMovement=true
// Animation settings
AnimStance=EAS_FullBody
//RallyAnims=(Anims=(Player_Taunt_V1, Player_Taunt_V2, Player_Taunt_V3, Player_Taunt_V4))
RallyAnims=(Anims=(Player_Taunt_V1))
// Rally settings
bRallySelf=true
RallyRadius=1000.f //1000
RallyEffect=ParticleSystem'ZED_Clot_EMIT.FX_ClotA_Rage_01'
RallyEffectBoneName=Root
RallyEffectOffset=(X=0, Y=0, Z=2)
AltRallyEffect=ParticleSystem'ZED_Clot_EMIT.FX_Player_Zed_Buff_01'
AltRallyEffectBoneNames[0]=FX_EYE_L
AltRallyEffectBoneNames[1]=FX_EYE_R
}