From 136e339d531ab700830c5af510ab0e5b7b243a66 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Sun, 11 Sep 2022 12:35:46 +0200 Subject: [PATCH] Some small swapweapon fixes. --- language.version | 4 ++-- zscript/weapons/swwm_baseweapon.zsc | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/language.version b/language.version index da215a724..a71237e11 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r432 \cu(Sun 11 Sep 12:16:47 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r432 \cu(2022-09-11 12:16:47)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r433 \cu(Sun 11 Sep 12:35:46 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r433 \cu(2022-09-11 12:35:46)\c-"; diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index 300988602..984a1a34a 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -103,12 +103,19 @@ Class SWWMWeapon : Weapon abstract // if the toucher owns our SwapWeapon, drop it before picking us up bool swapto = false; SWWMWeapon sw; - if ( swwm_swapweapons && (sw = HasSwapWeapon(user)) && (user.player.WeaponState&WF_WEAPONSWITCHOK) && !(user.player.WeaponState&WF_DISABLESWITCH) ) + State ReadyState = FindState('Ready'); + if ( swwm_swapweapons && (sw = HasSwapWeapon(user)) && (user.player.WeaponState&WF_WEAPONSWITCHOK) && !(user.player.WeaponState&WF_DISABLESWITCH) && ReadyState && ReadyState.ValidateSpriteFrame() ) { // special case, otherwise candy gun won't drop itself if ( sw is 'CandyGun' ) CandyGun(sw).swapdrop = true; if ( (sw == user.player.ReadyWeapon) || (sw.SisterWeapon && (sw.SisterWeapon == user.player.ReadyWeapon)) ) swapto = true; + // don't autoswitch just yet (hacky) + if ( swapto ) + { + user.player.ReadyWeapon = null; + user.player.PendingWeapon = WP_NOCHANGE; + } int ngun = sw.Amount; if ( ngun == 2 ) { @@ -124,6 +131,8 @@ Class SWWMWeapon : Weapon abstract dg.giveme[1] = SWWMWeapon(sw.CreateTossable(1)); dg.giveme[1].AttachToOwner(dg); dg.SetPickupState(); + dg.bSPECIAL = false; + dg.DropTime = 30; } else { @@ -134,12 +143,8 @@ Class SWWMWeapon : Weapon abstract d.angle = angle; d.vel = vel; d.FloatBobPhase = FloatBobPhase; - } - // don't autoswitch just yet (hacky) - if ( swapto ) - { - user.player.ReadyWeapon = null; - user.player.PendingWeapon = WP_NOCHANGE; + d.bSPECIAL = false; + d.DropTime = 30; } } bUsePickup = true;