rott/kf_sources/ScrnBalanceSrv/Classes/ScrnHuskGunProjectile_Alt.uc
2026-07-14 20:27:09 +07:00

66 lines
2.0 KiB
Ucode

class ScrnHuskGunProjectile_Alt extends ScrnHuskGunProjectile_Strong;
//can't be destroyed by Siren's scream
//Explode only by heavy explosive damage
function TakeDamage( int Damage, Pawn InstigatedBy, Vector Hitlocation, Vector Momentum, class<DamageType> damageType, optional int HitIndex)
{
if ( !bDud && !bHasExploded && Damage >= 100 && class<KFWeaponDamageType>(damageType) != none
&& class<KFWeaponDamageType>(damageType).default.bIsExplosive ) {
Explode(HitLocation, vect(0,0,0));
}
}
/*
simulated function float MosterDamageMult( KFMonster Victim )
{
float mult;
mult = super.MosterDamageMult();
// prevent big monsters from 1-shot be killed by hitting all projectiles
if ( KFMonsterVictim.bBurnified && KFMonsterVictim.default.Health >= 1000 )
mult *= 0.5;
return mult;
}
*/
// copy-pasted with deletion of impact damage
simulated function ProcessTouch(Actor Other, Vector HitLocation)
{
// Don't let it hit this player, or blow up on another player
if ( Other == none || Other == Instigator || Other.Base == Instigator )
return;
// Don't collide with bullet whip attachments
if( ROBulletWhipAttachment(Other) != none )
{
return;
}
/*
// Don't allow hits on people on the same team
if( KFHumanPawn(Other) != none && Instigator != none
&& KFHumanPawn(Other).PlayerReplicationInfo.Team.TeamIndex == Instigator.PlayerReplicationInfo.Team.TeamIndex )
{
return;
}
*/
if( !bDud && !bHasExploded )
{
Explode(HitLocation,Normal(HitLocation-Other.Location));
}
}
defaultproperties
{
ExplosionSoundVolume=1.000000
ImpactDamageType=Class'ScrnBalanceSrv.ScrnDamTypeHuskGun_Alt'
ImpactDamage=0
AmbientVolumeScale=1.000000
Speed=750.000000
MaxSpeed=1000.000000
Damage=50.000000
DamageRadius=500.000000
MyDamageType=Class'ScrnBalanceSrv.ScrnDamTypeHuskGun_Alt'
LifeSpan=5.000000
}