72 lines
2.5 KiB
Ucode
72 lines
2.5 KiB
Ucode
class stub_LAWProj extends LAWProj;
|
|
|
|
|
|
// removed SirenScream damage type check since 90% of the time they don't disentigrate anyway...
|
|
// also prevents detonation from fire or other explosives
|
|
function TakeDamage(int Damage, Pawn InstigatedBy, Vector Hitlocation, Vector Momentum, class<DamageType> damageType, optional int HitIndex)
|
|
{
|
|
if(!bDud
|
|
&& DamageType != class'DamTypeFlamethrower'
|
|
&& DamageType != class'DamTypeFrag'
|
|
&& DamageType != class'DamTypeLaw'
|
|
&& DamageType != class'DamTypeM203Grenade'
|
|
&& DamageType != class'DamTypeM32Grenade'
|
|
&& DamageType != class'DamTypeM79Grenade'
|
|
&& DamageType != class'DamTypePipeBomb'
|
|
&& DamageType != class'DamTypeSealSquealExplosion'
|
|
&& DamageType != class'DamTypeSeekerSixRocket'
|
|
&& DamageType != class'DamTypeSPGrenade'
|
|
&& DamageType != class'SirenScreamDamage'
|
|
&& !ClassIsChildOf(damageType, class'DamTypeBurned'))
|
|
{
|
|
Explode(HitLocation, vect(0,0,0));
|
|
}
|
|
}
|
|
|
|
|
|
// RepInfo == none fix
|
|
simulated function ProcessTouch(Actor Other, Vector HitLocation)
|
|
{
|
|
// Don't let it hit this player, or blow up on another player
|
|
// added bBlockHitPointTraces check
|
|
if (Other == none || Other == Instigator || Other.Base == Instigator || !Other.bBlockHitPointTraces)
|
|
return;
|
|
|
|
// Don't collide with bullet whip attachments
|
|
if (KFBulletWhipAttachment(Other) != none)
|
|
return;
|
|
|
|
// Don't allow hits on poeple on the same team
|
|
// fixing RepInfo == none error, and using KFPawn instead of KFHumanPawn
|
|
if (KFPawn(Other) != none && Instigator != none && KFPawn(Other).GetTeamNum() == Instigator.GetTeamNum())
|
|
return;
|
|
|
|
// Use the instigator's location if it exists. This fixes issues with
|
|
// the original location of the projectile being really far away from
|
|
// the real Origloc due to it taking a couple of milliseconds to
|
|
// replicate the location to the client and the first replicated location has
|
|
// already moved quite a bit.
|
|
if (Instigator != none)
|
|
OrigLoc = Instigator.Location;
|
|
|
|
if (!bDud && ((VSizeSquared(Location - OrigLoc) < ArmDistSquared) || OrigLoc == vect(0,0,0)))
|
|
{
|
|
if( Role == ROLE_Authority )
|
|
{
|
|
AmbientSound = none;
|
|
PlaySound(sound'ProjectileSounds.PTRD_deflect04',,2.0);
|
|
Other.TakeDamage(ImpactDamage, Instigator, HitLocation, Normal(Velocity), ImpactDamageType);
|
|
}
|
|
|
|
bDud = true;
|
|
Velocity = vect(0,0,0);
|
|
LifeSpan = 1.0;
|
|
SetPhysics(PHYS_Falling);
|
|
}
|
|
|
|
if (!bDud)
|
|
Explode(HitLocation,Normal(HitLocation-Other.Location));
|
|
}
|
|
|
|
|
|
defaultproperties{} |