1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFProj_Explosive_HRG_Kaboomstick.uc

168 lines
5.0 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// KFProj_Explosive_HRG_Kaboomstick
//=============================================================================
// Shotgun explosive pellet class
//=============================================================================
// Killing Floor 2
// Copyright (C) 2019 Tripwire Interactive LLC
// Tulio Beloqui (Saber Interactive)
//=============================================================================
class KFProj_Explosive_HRG_Kaboomstick extends KFProj_BallisticExplosive
hidedropdown;
/** Cached reference to owner weapon */
var protected KFWeapon OwnerWeapon;
/** Initialize the projectile */
function Init( vector Direction )
{
super.Init( Direction );
OwnerWeapon = KFWeapon( Owner );
if( OwnerWeapon != none )
{
OwnerWeapon.LastPelletFireTime = WorldInfo.TimeSeconds;
}
}
/** Don't allow more than one pellet projectile to perform this check in a single frame */
function bool ShouldWarnAIWhenFired()
{
return super.ShouldWarnAIWhenFired() && OwnerWeapon != none && OwnerWeapon.LastPelletFireTime < WorldInfo.TimeSeconds;
}
/**
* Force the fire not to burn the instigator, since setting it in the default props is not working for some reason - Ramm
*/
simulated protected function PrepareExplosionTemplate()
{
local KFPawn KFP;
local KFPerk CurrentPerk;
ExplosionTemplate.bIgnoreInstigator = true;
super.PrepareExplosionTemplate();
if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() )
{
KFP = KFPawn( Instigator );
if( KFP != none )
{
CurrentPerk = KFP.GetPerk();
if( CurrentPerk != none )
{
CurrentPerk.SetLastHX25NukeTime( WorldInfo.TimeSeconds );
}
}
}
}
simulated event HitWall(vector HitNormal, actor Wall, PrimitiveComponent WallComp)
{
// For some reason on clients up close shots with this projectile
// get HitWall calls instead of Touch calls. This little hack fixes
// the problem. TODO: Investigate why this happens - Ramm
// If we hit a pawn with a HitWall call on a client, do touch instead
if( WorldInfo.NetMode == NM_Client && Pawn(Wall) != none )
{
Touch( Wall, WallComp, Location, HitNormal );
return;
}
Super.HitWall(HitNormal, Wall, WallComp);
}
/** Only allow this projectile to cause a nuke if there hasn't been another nuke very recently */
simulated function bool AllowNuke()
{
local KFPawn KFP;
local KFPerk CurrentPerk;
KFP = KFPawn( Instigator );
if( KFP != none )
{
CurrentPerk = KFP.GetPerk();
if( CurrentPerk != none && `TimeSince(CurrentPerk.GetLastHX25NukeTime()) < 0.25f )
{
return false;
}
}
return super.AllowNuke();
}
defaultproperties
{
Physics=PHYS_Falling
bBounce=false
MaxSpeed=7000.0
Speed=7000.0
TerminalVelocity=7000.0
TossZ=150
GravityScale=1
MomentumTransfer=50000.0
ArmDistSquared=0 //87500 //2.5 meters - //122500 // 3.5 meters
bWarnAIWhenFired=true
ProjFlightTemplate=ParticleSystem'WEP_HRG_Kaboomstick_EMIT.FX_HRG_Kaboomstick_Projectile'
ProjFlightTemplateZedTime=ParticleSystem'WEP_HRG_Kaboomstick_EMIT.FX_HRG_Kaboomstick_Projectile_ZEDTIME'
ProjDisintegrateTemplate=ParticleSystem'ZED_Siren_EMIT.FX_Siren_grenade_disable_01'
AltExploEffects=KFImpactEffectInfo'WEP_HRG_Kaboomstick_ARCH.WEP_HRG_Kaboomstick_Explosion_Concussive_Force'
AssociatedPerkClass(0)=class'KFPerk_Demolitionist'
// Grenade explosion light
Begin Object Class=PointLightComponent Name=ExplosionPointLight
LightColor=(R=252,G=218,B=171,A=255)
Brightness=0.5f
Radius=400.f
FalloffExponent=10.f
CastShadows=False
CastStaticShadows=FALSE
CastDynamicShadows=False
bCastPerObjectShadows=false
bEnabled=FALSE
LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE)
End Object
// explosion
Begin Object Class=KFGameExplosion Name=ExploTemplate0
Damage=38 //30
DamageRadius=200 //150
DamageFalloffExponent=1.0f
DamageDelay=0.f
MomentumTransferScale=22500
// Damage Effects
MyDamageType=class'KFDT_Explosive_HRG_Kaboomstick'
KnockDownStrength=0
FractureMeshRadius=200.0
FracturePartVel=500.0
//ExplosionEffects=KFImpactEffectInfo'WEP_HX25_Pistol_ARCH.HX25_Pistol_Submunition_Explosion'
ExplosionSound=AkEvent'WW_WEP_SA_HX25.Play_WEP_SA_HX25_Explosion'
ExplosionEffects=KFImpactEffectInfo'WEP_HRG_Kaboomstick_ARCH.WEP_HRG_Kaboomstick_Explosion'
//ExplosionSound=AkEvent'WW_WEP_Seeker_6.Play_WEP_Seeker_6_Explosion'
// Dynamic Light
ExploLight=ExplosionPointLight
ExploLightStartFadeOutTime=0.0
ExploLightFadeOutTime=0.3
bIgnoreInstigator=true
// Camera Shake
CamShake=CameraShake'FX_CameraShake_Arch.Misc_Explosions.Light_Explosion_Rumble'
CamShakeInnerRadius=0
CamShakeOuterRadius=300
CamShakeFalloff=1.5f
bOrientCameraShakeTowardsEpicenter=true
End Object
ExplosionTemplate=ExploTemplate0
AmbientSoundPlayEvent=none
AmbientSoundStopEvent=none
}