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

115 lines
3.5 KiB
Ucode

//=============================================================================
// KFProj_MedicGrenade_Mini
//=============================================================================
// Alt-ammo class for KFWeap_AssaultRifle_MedicGrenadeLauncher
//=============================================================================
// Killing Floor 2
// Copyright (C) 2018 Tripwire Interactive LLC
//=============================================================================
class KFProj_MedicGrenade_Mini extends KFProj_MedicGrenade;
simulated event HitWall(vector HitNormal, actor Wall, PrimitiveComponent WallComp)
{
local TraceHitInfo HitInfo;
super.HitWall(HitNormal, Wall, WallComp);
// Damage some destructibles...
if (Pawn(Wall) == none && !Wall.bStatic && Wall.bCanBeDamaged)
{
HitInfo.HitComponent = WallComp;
HitInfo.Item = INDEX_None;
Wall.TakeDamage(Damage, InstigatorController, Location, MomentumTransfer * Normal(Velocity), MyDamageType, HitInfo, self);
}
}
/** Adjusts movement/physics of projectile.
* Returns true if projectile actually bounced / was allowed to bounce */
simulated function bool Bounce( vector HitNormal, Actor BouncedOff )
{
SetLocation(Location + HitNormal);
super.Bounce(HitNormal, BouncedOff);
// stop and drop
Disable( 'Touch' );
Velocity = vect(0,0,0);
return true;
}
simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal)
{
// ... Damage other destructibles?
if (Other != Instigator && !Other.bStatic)
{
if (!CheckRepeatingTouch(Other) && Other.GetTeamNum() != GetTeamNum())
{
ProcessBulletTouch(Other, HitLocation, HitNormal);
}
}
Disable( 'Touch' );
Velocity = Vect(0,0,0);
}
defaultproperties
{
Speed=4000
MaxSpeed=4000
TerminalVelocity=4000
GravityScale=0.5
TossZ=150
// set collision size to 0 so it doesn't cause non-zero extent checks against zeds
Begin Object Name=CollisionCylinder
CollisionRadius=0.f
CollisionHeight=0.f
End Object
FuseTime=0.01
PostExplosionLifetime=15
bWarnAIWhenFired=true
bSyncToOriginalLocation=true
bSyncToThirdPersonMuzzleLocation=true
bUpdateSimulatedPosition=true
bDamageDestructiblesOnTouch=true
Damage=50
MyDamageType=class'KFDT_Ballistic_MedicRifleGrenadeLauncherImpact'
ProjFlightTemplate=ParticleSystem'WEP_Medic_GrenadeLauncher_EMIT.FX_Medic_GrenadeLauncher_Projectile'
ProjFlightTemplateZedTime=ParticleSystem'WEP_Medic_GrenadeLauncher_EMIT.FX_Medic_GrenadeLauncher_Projectile_ZEDTIME'
ExplosionActorClass=class'KFExplosion_MedicGrenadeMini'
// explosion
Begin Object Class=KFGameExplosion Name=ExploTemplate0
Damage=60 //50 //150
DamageRadius=500 //350
DamageFalloffExponent=0.f
DamageDelay=0.f
MyDamageType=class'KFDT_Toxic_MedicGrenadeLauncher'
// Damage Effects
KnockDownStrength=0
KnockDownRadius=0
FractureMeshRadius=0
FracturePartVel=0
ExplosionEffects=KFImpactEffectInfo'FX_Impacts_ARCH.Explosions.MedicGrenade_Explosion'
ExplosionSound=AkEvent'WW_WEP_Medic_GrenadeLauncher.Play_WEP_Medic_GrenadeLauncher_Grenade_Explosion'
MomentumTransferScale=0
// Camera Shake
CamShake=none
CamShakeInnerRadius=0
CamShakeOuterRadius=0
CamShakeFalloff=1.5f
bOrientCameraShakeTowardsEpicenter=true
End Object
ExplosionTemplate=ExploTemplate0
// Temporary effect (5.14.14)
ProjDisintegrateTemplate=ParticleSystem'ZED_Siren_EMIT.FX_Siren_grenade_disable_01'
AssociatedPerkClass=class'KFPerk_FieldMedic'
}