88 lines
2.5 KiB
Ucode
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
|
|
}
|