class stub_FragFire extends FragFire; var transient float PrevAmmo; function DoFireEffect() { local float MaxAmmo, CurAmmo; local Vector StartProj, StartTrace, X,Y,Z; local Rotator Aim; local Vector HitLocation, HitNormal; local Actor Other; local int Hand; // added working ammo check Weapon.GetAmmoCount(MaxAmmo,CurAmmo); if (CurAmmo == 0 && class'stub_FragFire'.default.PrevAmmo == 0) return; class'stub_FragFire'.default.PrevAmmo = CurAmmo; Instigator.MakeNoise(1.0); Weapon.GetViewAxes(X,Y,Z); StartTrace = Instigator.Location + Instigator.EyePosition();// + X*Instigator.CollisionRadius; StartProj = StartTrace + X*ProjSpawnOffset.X; if( PlayerController(Instigator.Controller)!=None ) { // We must do this as server dosen't get a chance to set weapon handedness. Hand = int(PlayerController(Instigator.Controller).Handedness); if( Hand==-1 || Hand==1 ) StartProj = StartProj + Hand * Y*ProjSpawnOffset.Y + Z*ProjSpawnOffset.Z; } // check if projectile would spawn through a wall and adjust start location accordingly Other = Weapon.Trace(HitLocation, HitNormal, StartProj, StartTrace, false); if (Other != None) StartProj = HitLocation; Aim = AdjustAim(StartProj, AimError); SpawnProjectile(StartProj, Aim); }