1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFProj_DynamiteGrenade.uc
2022-11-28 00:49:25 +03:00

179 lines
5.0 KiB
Ucode

//=============================================================================
// KFProj_DynamiteGrenade
//=============================================================================
// Dynamite projectile class
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// - John "Ramm-Jaeger" Gibson and Jeff Robinson
//=============================================================================
class KFProj_DynamiteGrenade extends KFProj_Grenade
hidedropdown;
/** On Contact demo skill can turn our grenade into an insta boom device */
var bool bExplodeOnContact;
/** Ambient sound to play */
var AkEvent FuseEvent;
/** Dynamic light */
var PointLightComponent FuseLight;
/**
* Set the initial velocity and cook time
*/
simulated function PostBeginPlay()
{
PlaySoundBase( FuseEvent, true,, true );
Super.PostBeginPlay();
}
/** Overridden to turn off dynamic light */
simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor)
{
super.TriggerExplosion( HitLocation, HitNormal, HitActor );
FuseLight.SetEnabled( false );
}
//==============
// Touching
simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal)
{
local Pawn ActorPawn;
if( Other != Instigator && !Other.bWorldGeometry )
{
ActorPawn = Pawn(other);
if ( ActorPawn != None )
{
// For opposing team, make the grenade explode instantly
if( ActorPawn.GetTeamNum() != GetTeamNum() )
{
if (!bHasExploded && !bHasDisintegrated)
{
GetExplodeEffectLocation( HitLocation, HitNormal, Other );
TriggerExplosion( HitLocation, HitNormal, Other );
}
}
}
}
super.ProcessTouch( Other, HitLocation, HitNormal );
}
// for nukes && concussive force
simulated protected function PrepareExplosionTemplate()
{
class'KFPerk_Demolitionist'.static.PrepareExplosive( Instigator, self );
GetRadialDamageValues(ExplosionTemplate.Damage, ExplosionTemplate.DamageRadius, ExplosionTemplate.DamageFalloffExponent);
// super.PrepareExplosionTemplate();
}
simulated protected function SetExplosionActorClass()
{
local KFPlayerReplicationInfo InstigatorPRI;
if( WorldInfo.TimeDilation < 1.f && Instigator != none )
{
InstigatorPRI = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo);
if( InstigatorPRI != none )
{
if( InstigatorPRI.bNukeActive && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) )
{
ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass();
}
}
}
super.SetExplosionActorClass();
}
defaultproperties
{
bWarnAIWhenFired=true
Speed=1500
TossZ=400
LandedTranslationOffset=(X=-8)
FuseTime=3.0
DampenFactor=0.200000
DampenFactorParallel=0.300000
ProjFlightTemplate=ParticleSystem'WEP_Dynamite_EMIT.FX_Dynamite_Grenade_Mesh'
ExplosionActorClass=class'KFExplosionActor'
WeaponSelectTexture=Texture2D'wep_ui_dynamite_tex.UI_WeaponSelect_Dynamite'
AltExploEffects=KFImpactEffectInfo'WEP_Dynamite_ARCH.Dynamite_Explosion_Concussive_Force'
// fuse light
Begin Object Class=PointLightComponent Name=FusePointLight
LightColor=(R=255,G=200,B=63,A=255)
Brightness=1.f
Radius=300.f
FalloffExponent=10.f
CastShadows=False
CastStaticShadows=FALSE
CastDynamicShadows=False
bCastPerObjectShadows=false
bEnabled=TRUE
LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE)
Translation=(Z=6)
// light anim
AnimationType=1 // LightAnim_Flicker
AnimationFrequency=2.f
MinBrightness=0.5f
MaxBrightness=1.5f
End Object
FuseLight=FusePointLight
Components.Add(FusePointLight);
// explosion
Begin Object Class=KFGameExplosion Name=ExploTemplate0
Damage=300 //400
DamageRadius=400 //900
DamageFalloffExponent=2 //3
DamageDelay=0.f
// Damage Effects
MyDamageType=class'KFDT_Explosive_DynamiteGrenade'
KnockDownStrength=0
FractureMeshRadius=200.0
FracturePartVel=500.0
ExplosionEffects=KFImpactEffectInfo'WEP_Dynamite_ARCH.Dynamite_Explosion'
ExplosionSound=AkEvent'WW_WEP_EXP_Dynamite.Play_WEP_EXP_Dynamite_Explosion'
// Dynamic Light
ExploLight=ExplosionPointLight
ExploLightStartFadeOutTime=0.0
ExploLightFadeOutTime=0.2
// Camera Shake
CamShake=CameraShake'FX_CameraShake_Arch.Grenades.Default_Grenade'
CamShakeInnerRadius=200
CamShakeOuterRadius=900
CamShakeFalloff=1.5f
bOrientCameraShakeTowardsEpicenter=true
End Object
ExplosionTemplate=ExploTemplate0
// Temporary effect (5.14.14)
ProjDisintegrateTemplate=ParticleSystem'ZED_Siren_EMIT.FX_Siren_grenade_disable_01'
GlassShatterType=FMGS_ShatterNone
FuseEvent=AkEvent'WW_WEP_EXP_Dynamite.Play_WEP_EXP_Dynamite_Fuse_LP'
AssociatedPerkClass=class'KFPerk_Demolitionist'
}