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

88 lines
2.5 KiB
Ucode

//=============================================================================
// Shotgun Fire
//=============================================================================
class SpasFire extends ShotgunFire;
var() class<Emitter> ShellEjectClass; // class of the shell eject emitter
var() Emitter ShellEjectEmitter; // The shell eject emitter
var() name ShellEjectBoneName; // name of the shell eject bone
simulated function InitEffects()
{
super.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);
}
}
function DrawMuzzleFlash(Canvas Canvas)
{
super.DrawMuzzleFlash(Canvas);
// Draw shell ejects
if (ShellEjectEmitter != None )
{
Canvas.DrawActor( ShellEjectEmitter, false, false, Weapon.DisplayFOV );
}
}
//disabling automatic shell eject
function FlashMuzzleFlash()
{
super(InstantFire).FlashMuzzleFlash();
/*
if (ShellEjectEmitter != None)
{
ShellEjectEmitter.Trigger(Weapon, Instigator);
}
*/
}
simulated function DestroyEffects()
{
super.DestroyEffects();
if (ShellEjectEmitter != None)
ShellEjectEmitter.Destroy();
}
simulated function bool AllowFire()
{
//changed to 1 -- PooSH
if( KFWeapon(Weapon).bIsReloading && KFWeapon(Weapon).MagAmmoRemaining < 1)
return false;
if(KFPawn(Instigator).SecondaryItem!=none)
return false;
if( KFPawn(Instigator).bThrowingNade )
return false;
if( Level.TimeSeconds - LastClickTime>FireRate )
{
LastClickTime = Level.TimeSeconds;
}
if( KFWeaponShotgun(Weapon).MagAmmoRemaining<1 )
{
return false;
}
return super(WeaponFire).AllowFire();
}
defaultproperties
{
ShellEjectClass=Class'ROEffects.KFShellEjectShotty'
ShellEjectBoneName="Shell_eject"
FireSoundRef="KF_PumpSGSnd.SG_Fire"
NoAmmoSoundRef="KF_PumpSGSnd.SG_DryFire"
AmmoClass=Class'ScrnWeaponPack.SpasAmmo'
ProjectileClass=Class'ScrnWeaponPack.SpasBullet'
Spread=900.000000
}