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

105 lines
3.0 KiB
Ucode

//=============================================================================
// KFPowerUp_HellishRage
//=============================================================================
// Base class for the hellish rage power up
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class KFPowerUp_HellishRage extends KFPowerUp;
/** Health removed from the player when the power up is activated */
var int HealthCost;
/** Damage cost applied when the power up is activated */
var class<KFDamageType> PowerUpCostDamageType;
/** Damage modifier for all damage done by the owner of this power up */
var float DamageModifier;
/** Speed modifier for run speed by the owner of this power up */
var float SpeedModifier;
/** Speed modifier for sprint speed by the owner of this power up */
var float SprintSpeedModifier;
function ActivatePowerUp()
{
super.ActivatePowerUp();
if(Role == Role_Authority && bPowerUpActive)
{
ApplyPowerUpCost();
}
}
function ReactivatePowerUp()
{
super.ReactivatePowerUp();
if(Role == Role_Authority && bPowerUpActive)
{
ApplyPowerUpCost();
}
}
function ApplyPowerUpCost()
{
OwnerPawn.TakeDamage(HealthCost, OwnerPC, vect(0,0,0), vect(0,0,0), PowerUpCostDamageType);
}
function ModifyDamageGiven( out int InDamage, optional Actor DamageCauser, optional KFPawn_Monster MyKFPM, optional KFPlayerController DamageInstigator, optional class<KFDamageType> DamageType, optional int HitZoneIdx )
{
local float TempDamage;
TempDamage = InDamage;
if( DamageCauser != none )
{
TempDamage += InDamage * DamageModifier;
}
InDamage = Round( TempDamage );
}
simulated function ModifySpeed( out float Speed )
{
Speed += Speed * SpeedModifier;
}
simulated function ModifySprintSpeed( out float Speed )
{
Speed += Speed * SprintSpeedModifier;
}
function ApplySecondaryDamage( KFPawn Victim, int DamageTaken, optional Controller InstigatedBy )
{
if( Victim != none && Victim != OwnerPawn )
{
Victim.ApplyDamageOverTime(SecondaryDamage, InstigatedBy, default.SecondaryDamageType);
}
}
DefaultProperties
{
PowerUpCostDamageType=class'KFDT_HellishRageCost'
HealthCost=20 //25
PowerUpDuration=20.f //15.f
CanBeHealedWhilePowerUpIsActive=false
DamageModifier=0.5f
SpeedModifier=0.25f
SprintSpeedModifier=0.25f
AudioLoopFirstPerson=AkEvent'WW_ENV_HellmarkStation.Play_HellishRage_1P'
AudioLoopThirdPerson=AkEvent'WW_ENV_HellmarkStation.Play_HellishRage_3P'
AudioLoopFirstPersonStop=AkEvent'WW_ENV_HellmarkStation.Stop_HellishRage_1P'
AudioLoopThirdPersonStop=AkEvent'WW_ENV_HellmarkStation.Stop_HellishRage_3P'
SecondaryDamageType=class'KFDT_Fire_HellishRage'
SecondaryDamage=50
ScreenMaterialName=Effect_PowerUp_HellishRage
CameraLensEffectTemplate=class'KFCameraLensEmit_PowerUp_HellishRage'
PowerUpEffect=ParticleSystem'FX_Gameplay_EMIT.FX_Char_PowerUp_HellishRage'
}