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

152 lines
4.9 KiB
Ucode

class StingerAltFire extends KFHighROFFire;
//overrided to disable FlashEmitter attaching to Stinger
simulated function InitEffects()
{
super(InstantFire).InitEffects();
// don't even spawn on server
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
return;
if ( (ShellEjectClass != None) && ((ShellEjectEmitter == None) || ShellEjectEmitter.bDeleteMe) )
{
ShellEjectEmitter = Weapon.Spawn(ShellEjectClass);
Weapon.AttachToBone(ShellEjectEmitter, ShellEjectBoneName);
}
// if ( FlashEmitter != None )
// Weapon.AttachToBone(FlashEmitter, KFWeapon(Weapon).FlashBoneName);
}
//those functions are used only in FireBurst
state FireLoop
{
function PlayFiring()
{
local float RandPitch;
// don't play fire anim, cuz we already are looping it -- PooSH
// if ( Weapon.Mesh != None )
// {
// if ( FireCount > 0 )
// {
// if( KFWeap.bAimingRifle )
// {
// if ( Weapon.HasAnim(FireLoopAimedAnim) )
// {
// Weapon.PlayAnim(FireLoopAimedAnim, FireLoopAnimRate, 0.0);
// }
// else if( Weapon.HasAnim(FireAimedAnim) )
// {
// Weapon.PlayAnim(FireAimedAnim, FireAnimRate, TweenTime);
// }
// else
// {
// Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
// }
// }
// else
// {
// if ( Weapon.HasAnim(FireLoopAnim) )
// {
// Weapon.PlayAnim(FireLoopAnim, FireLoopAnimRate, 0.0);
// }
// else
// {
// Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
// }
// }
// }
// else
// {
// if( KFWeap.bAimingRifle )
// {
// if( Weapon.HasAnim(FireAimedAnim) )
// {
// Weapon.PlayAnim(FireAimedAnim, FireAnimRate, TweenTime);
// }
// else
// {
// Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
// }
// }
// else
// {
// Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
// }
// }
// }
if( Weapon.Instigator != none && Weapon.Instigator.IsLocallyControlled() &&
Weapon.Instigator.IsFirstPerson() && StereoFireSound != none )
{
if( bRandomPitchFireSound )
{
RandPitch = FRand() * RandomPitchAdjustAmt;
if( FRand() < 0.5 )
{
RandPitch *= -1.0;
}
}
Weapon.PlayOwnedSound(StereoFireSound,SLOT_Interact,TransientSoundVolume * 0.85,,TransientSoundRadius,(1.0 + RandPitch),false);
}
else
{
if( bRandomPitchFireSound )
{
RandPitch = FRand() * RandomPitchAdjustAmt;
if( FRand() < 0.5 )
{
RandPitch *= -1.0;
}
}
Weapon.PlayOwnedSound(FireSound,SLOT_Interact,TransientSoundVolume,,TransientSoundRadius,(1.0 + RandPitch),false);
}
ClientPlayForceFeedback(FireForce); // jdf
FireCount++;
}
}
defaultproperties
{
RecoilRate=0.075000
maxVerticalRecoilAngle=500
maxHorizontalRecoilAngle=250
ShellEjectClass=Class'ROEffects.KFShellEjectSCAR'
ShellEjectBoneName="Stinger-CordFlap"
FireSoundRef="HMG_S.Stinger.StingerAltStop"
NoAmmoSoundRef="KF_SCARSnd.SCAR_DryFire"
DamageType=Class'ScrnHMG.DamTypeStingerAlt'
DamageMin=125
DamageMax=125
Momentum=25500.000000
FireAnim="WeaponFire-Secondary"
FireLoopAnim="WeaponFire-Secondary"
FireEndAnim="WeaponFireEnd"
FireLoopAnimRate=2.000000
FireRate=0.366667
AmmoClass=Class'ScrnHMG.StingerAmmo'
AmmoPerFire=3
ShakeRotMag=(X=50.000000,Y=50.000000,Z=300.000000)
ShakeRotRate=(X=7500.000000,Y=7500.000000,Z=7500.000000)
ShakeRotTime=0.650000
ShakeOffsetMag=(X=6.000000,Y=3.000000,Z=7.500000)
ShakeOffsetRate=(X=1000.000000,Y=1000.000000,Z=1000.000000)
ShakeOffsetTime=1.150000
BotRefireRate=0.990000
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stSPSniper'
aimerror=42.000000
Spread=0.050000
SpreadStyle=SS_Random
}