1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFDT_Ballistic_DragonsBreath.uc
2020-12-13 18:09:05 +03:00

84 lines
2.6 KiB
Ucode

//=============================================================================
// KFDT_Ballistic_DragonsBreath
//=============================================================================
// Dragons breath damage type (mostly a copy of KFDT_Ballistic_Shotgun
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// - Greg Felber 05/06/2015
//=============================================================================
class KFDT_Ballistic_DragonsBreath extends KFDT_Ballistic_Shotgun
abstract;
// Damage type to use for the burning damage over time
var class<KFDamageType> BurnDamageType;
/** Allows the damage type to customize exactly which hit zones it can dismember */
static simulated function bool CanDismemberHitZone( name InHitZoneName )
{
if( super.CanDismemberHitZone( InHitZoneName ) )
{
return true;
}
switch ( InHitZoneName )
{
case 'lupperarm':
case 'rupperarm':
case 'chest':
case 'heart':
return true;
}
return false;
}
/** Play damage type specific impact effects when taking damage */
static function PlayImpactHitEffects( KFPawn P, vector HitLocation, vector HitDirection, byte HitZoneIndex, optional Pawn HitInstigator )
{
// Play burn effect when dead
if( P.bPlayedDeath && P.WorldInfo.TimeSeconds > P.TimeOfDeath )
{
default.BurnDamageType.static.PlayImpactHitEffects(P, HitLocation, HitDirection, HitZoneIndex, HitInstigator);
return;
}
super.PlayImpactHitEffects(P, HitLocation, HitDirection, HitZoneIndex, HitInstigator);
}
/** Called when damage is dealt to apply additional damage type (e.g. Damage Over Time) */
static function ApplySecondaryDamage( KFPawn Victim, int DamageTaken, optional Controller InstigatedBy )
{
// Overriden to specific a different damage type to do the burn damage over
// time. We do this so we don't get shotgun pellet impact sounds/fx during
// the DOT burning.
if ( default.BurnDamageType.default.DoT_Type != DOT_None )
{
Victim.ApplyDamageOverTime(DamageTaken, InstigatedBy, default.BurnDamageType);
}
}
defaultproperties
{
GoreDamageGroup=DGT_Shotgun
BloodSpread=0.4
BloodScale=0.6
KDamageImpulse=900
KDeathUpKick=500
KDeathVel=350
BurnPower=20
StumblePower=21
GunHitPower=12
WeaponDef=class'KFWeapDef_DragonsBreath'
BurnDamageType=class'KFDT_Fire_DragonsBreathDoT'
CameraLensEffectTemplate=class'KFCameraLensEmit_Fire'
EffectGroup=FXG_IncendiaryRound
ModifierPerkList(0)=class'KFPerk_Firebug'
}