class repl_LAWProj extends LAWProj; simulated function Explode(vector HitLocation, vector HitNormal) { local Controller C; local PlayerController LocalPlayer; bHasExploded = true; // Don't explode if this is a dud if (bDud) { Velocity = vect(0,0,0); LifeSpan=1.0; SetPhysics(PHYS_Falling); } PlaySound(ExplosionSound,,2.0); if (!class'Settings'.default.bRemoveSmoke && EffectIsRelevant(Location,false) ) { Spawn(class'KFMod.LawExplosion',,,HitLocation + HitNormal*20,rotator(HitNormal)); Spawn(ExplosionDecal,self,,HitLocation, rotator(-HitNormal)); } BlowUp(HitLocation); Destroy(); // Shake nearby players screens LocalPlayer = Level.GetLocalPlayerController(); if ((LocalPlayer != none) && (VSize(Location - LocalPlayer.ViewTarget.Location) < DamageRadius)) LocalPlayer.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); for (C=Level.ControllerList; C!=none; C=C.NextController) if ((PlayerController(C) != none) && (C != LocalPlayer) && (VSize(Location - PlayerController(C).ViewTarget.Location) < DamageRadius)) C.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); } simulated function PostBeginPlay() { local rotator SmokeRotation; BCInverse = 1 / BallisticCoefficient; if (!class'Settings'.default.bRemoveSmoke && Level.NetMode != NM_DedicatedServer) { SmokeTrail = Spawn(class'PanzerfaustTrail',self); SmokeTrail.SetBase(self); SmokeRotation.Pitch = 32768; SmokeTrail.SetRelativeRotation(SmokeRotation); //Corona = Spawn(class'KFMod.KFLAWCorona',self); } OrigLoc = Location; if (!bDud) { Dir = vector(Rotation); Velocity = speed * Dir; } if (PhysicsVolume.bWaterVolume) { bHitWater = true; Velocity=0.6*Velocity; } super(Projectile).PostBeginPlay(); } defaultproperties { }