Allow the Spreadgun, Wallbuster and Silver Bullet to auto-reload.

This will be made toggleable for ALL weapons in 1.4.
This commit is contained in:
Mari the Deer 2022-10-12 23:28:02 +02:00
commit 008ccd7bd4
5 changed files with 28 additions and 8 deletions

View file

@ -381,11 +381,12 @@ Class Spreadgun : SWWMWeapon
action State A_SpreadgunReady()
{
int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_NOSECONDARY;
if ( ((invoker.Ammo1.Amount > 0) || sv_infiniteammo && FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered || invoker.goldload) )
if ( ((invoker.Ammo1.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered || invoker.goldload) )
flg |= WRF_ALLOWRELOAD;
if ( ((invoker.Ammo2.Amount > 0) || sv_infiniteammo && FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered || !invoker.goldload) )
if ( ((invoker.Ammo2.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered || !invoker.goldload) )
flg &= ~WRF_NOSECONDARY;
if ( invoker.fired || !invoker.chambered ) flg |= WRF_NOPRIMARY; // until 1.4, dry-fire animation not implemented
if ( ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered) )
flg |= WRF_NOPRIMARY;
A_WeaponReady(flg);
if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) )
invoker.CheckAmmo(EitherFire,true);
@ -530,6 +531,7 @@ Class Spreadgun : SWWMWeapon
Fire:
XZW2 A 1
{
if ( invoker.fired || !invoker.chambered ) return ResolveState("Reload");
A_FireShell();
return ResolveState(null);
}