diff --git a/language.version b/language.version index b396484b8..33599029d 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r248 \cu(Thu 4 Aug 17:29:07 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r248 \cu(2022-08-04 17:29:07)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r249 \cu(Thu 4 Aug 17:58:16 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r249 \cu(2022-08-04 17:58:16)\c-"; diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc index 5d4416aa9..234d2a37a 100644 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun.zsc @@ -284,8 +284,12 @@ Class HeavyMahSheenGun : SWWMWeapon override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; - if ( (fireMode == PrimaryFire) || (fireMode == AltFire) ) - return (Ammo1.Amount > 0); + if ( (fireMode == PrimaryFire) || (fireMode == EitherFire) ) + { + if ( Ammo1.Amount > 0 ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; + } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } diff --git a/zscript/weapons/swwm_danmaku.zsc b/zscript/weapons/swwm_danmaku.zsc index 617c1b38a..aecbf4bd1 100644 --- a/zscript/weapons/swwm_danmaku.zsc +++ b/zscript/weapons/swwm_danmaku.zsc @@ -24,10 +24,7 @@ Class Eviscerator : SWWMWeapon override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { if ( (firemode == PrimaryFire) || (firemode == AltFire) ) - { - if ( (Ammo1.Amount > 0) || chambered ) return true; - return false; - } + return ((Ammo1.Amount > 0) || chambered); return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } diff --git a/zscript/weapons/swwm_deathlydeathcannon.zsc b/zscript/weapons/swwm_deathlydeathcannon.zsc index 6a93c7b22..a71f007b2 100644 --- a/zscript/weapons/swwm_deathlydeathcannon.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon.zsc @@ -53,7 +53,11 @@ Class Ynykron : SWWMWeapon { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; if ( (fireMode == PrimaryFire) || (fireMode == AltFire) ) - return ((clipcount > 0) || (Ammo1.Amount > 0)); + { + if ( (clipcount > 0) || (Ammo1.Amount > 0) ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; + } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index b62ed950d..08beaaf72 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -164,10 +164,11 @@ Class Spreadgun : SWWMWeapon override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; - if ( (firemode == PrimaryFire) || (firemode == AltFire) ) + if ( (firemode == PrimaryFire) || (firemode == EitherFire) ) { if ( !fired && chambered ) return true; for ( int i=0; i<6; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); return false; } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); diff --git a/zscript/weapons/swwm_thiccboolet.zsc b/zscript/weapons/swwm_thiccboolet.zsc index bfd9ca398..34096da4c 100644 --- a/zscript/weapons/swwm_thiccboolet.zsc +++ b/zscript/weapons/swwm_thiccboolet.zsc @@ -276,12 +276,12 @@ Class SilverBullet : SWWMWeapon override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; - if ( (fireMode == PrimaryFire) || (fireMode == AltFire) ) + if ( (fireMode == PrimaryFire) || (fireMode == EitherFire) ) { - // allow player to still use the zoom even if there's no ammo left - // (should work fine, assuming I've correctly interpreted the execution chain of all this stuff) - if ( autoswitch && (fireMode == AltFire) ) return true; - return ((chambered && !fired) || (clipcount > 0) || (Ammo1.Amount > 0) || (Ammo2.Amount > 0) || (Owner.CountInv("SilverBullets") > 0) || (Owner.CountInv("SilverBullets2") > 0)); + if ( (chambered && !fired) || (clipcount > 0) || (Ammo1.Amount > 0) || (Ammo2.Amount > 0) || (Owner.CountInv("SilverBullets") > 0) || (Owner.CountInv("SilverBullets2") > 0) ) + return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); }