112 lines
3.2 KiB
Ucode
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
|
||
|
|
||
|
}
|