2020-12-13 15:01:13 +00:00
|
|
|
//=============================================================================
|
|
|
|
// KFAffliction_EMPDisrupt
|
|
|
|
//=============================================================================
|
|
|
|
// An extended version of EMP that all disrupts mechanical zeds
|
|
|
|
//=============================================================================
|
|
|
|
// Killing Floor 2
|
|
|
|
// Copyright (C) 2015 Tripwire Interactive LLC
|
|
|
|
//=============================================================================
|
|
|
|
class KFAffliction_EMPDisrupt extends KFAffliction_EMP;
|
|
|
|
|
|
|
|
const DISRUPT_THRESHOLD = 25.f;
|
|
|
|
|
|
|
|
var protected float DisruptCooldown;
|
|
|
|
var protected float LastDisruptActivationTime;
|
|
|
|
|
|
|
|
/** */
|
|
|
|
function Init(KFPawn P, EAfflictionType Type, KFPerk InstigatorPerk)
|
|
|
|
{
|
|
|
|
super.Init(P, Type, InstigatorPerk);
|
|
|
|
DisruptCooldown = P.IncapSettings[Type].ChildAfflictionCooldown;
|
|
|
|
}
|
|
|
|
|
2022-05-11 15:13:25 +00:00
|
|
|
function Accrue(float InPower, optional class<KFDamageType> DamageType = none)
|
2020-12-13 15:01:13 +00:00
|
|
|
{
|
|
|
|
Super.Accrue(InPower);
|
|
|
|
|
|
|
|
if (!PawnOwner.IsTimerActive(nameof(Timer_DisruptCooldown), self))
|
|
|
|
{
|
|
|
|
if (CurrentStrength > DISRUPT_THRESHOLD)
|
|
|
|
{
|
|
|
|
ActivateDisrupt();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function ActivateDisrupt()
|
|
|
|
{
|
|
|
|
SetEMPDisrupted(true);
|
|
|
|
PawnOwner.SetTimer(Duration, false, nameof(DeactivateDisrupt), self);
|
|
|
|
PawnOwner.SetTimer(Duration + DisruptCooldown, false, nameof(Timer_DisruptCooldown), self);
|
|
|
|
}
|
|
|
|
|
|
|
|
function DeactivateDisrupt()
|
|
|
|
{
|
|
|
|
SetEMPDisrupted(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
function Timer_DisruptCooldown();
|
|
|
|
|
|
|
|
/** Set the EMP disrupt functionality */
|
|
|
|
function SetEMPDisrupted(bool bEnabled)
|
|
|
|
{
|
|
|
|
if( PawnOwner.Role == ROLE_Authority )
|
|
|
|
{
|
|
|
|
if( PawnOwner.bEmpDisrupted == bEnabled )
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
PawnOwner.bEmpDisrupted = bEnabled;
|
|
|
|
|
|
|
|
// Notify special moves that they've been disrupted
|
|
|
|
if( PawnOwner.IsDoingSpecialMove() )
|
|
|
|
{
|
|
|
|
PawnOwner.SpecialMoves[SpecialMove].OnEMPDisrupted();
|
|
|
|
}
|
|
|
|
|
|
|
|
PawnOwner.OnStackingAfflictionChanged(AF_EMP);
|
|
|
|
}
|
|
|
|
ToggleEffects(PawnOwner.bEmpDisrupted, PawnOwner.bEmpPanicked);
|
|
|
|
}
|
|
|
|
|
|
|
|
defaultproperties
|
|
|
|
{
|
|
|
|
}
|