From 8c978a9f254fa55d227abd97eb7e9f3eeb2ad71b Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sat, 13 Mar 2021 02:04:42 +0100 Subject: [PATCH] Fancy FOV features (no more A_ZoomLevel hackery). --- language.version | 4 +- zscript/items/swwm_health.zsc | 18 +++---- zscript/items/swwm_powerups.zsc | 52 +++++++++++++++++++-- zscript/swwm_player.zsc | 42 +++++++++++++++++ zscript/weapons/swwm_baseweapon.zsc | 6 +++ zscript/weapons/swwm_blazeit.zsc | 3 +- zscript/weapons/swwm_cbt.zsc | 3 +- zscript/weapons/swwm_danmaku.zsc | 6 +-- zscript/weapons/swwm_deathlydeathcannon.zsc | 3 +- zscript/weapons/swwm_jackhammer.zsc | 6 +-- zscript/weapons/swwm_shot.zsc | 3 +- zscript/weapons/swwm_sparkyboi.zsc | 9 ++-- zscript/weapons/swwm_splode.zsc | 6 +-- zscript/weapons/swwm_tastytreat.zsc | 3 +- zscript/weapons/swwm_thiccboolet.zsc | 3 +- 15 files changed, 123 insertions(+), 44 deletions(-) diff --git a/language.version b/language.version index 1e58c4e37..e98d1760f 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r354 \cu(Fri 12 Mar 23:00:49 CET 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r354 \cu(2021-03-12 23:00:49)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r355 \cu(Sat 13 Mar 02:04:42 CET 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r355 \cu(2021-03-13 02:04:42)\c-"; diff --git a/zscript/items/swwm_health.zsc b/zscript/items/swwm_health.zsc index 7888921d6..8725913ed 100644 --- a/zscript/items/swwm_health.zsc +++ b/zscript/items/swwm_health.zsc @@ -53,15 +53,13 @@ Class RefresherRegen : Powerup override void DoEffect() { Super.DoEffect(); - if ( Owner && (Owner.health > 0) && !((EffectTics-5)%175) ) - { - if ( Owner.GiveBody(int(Strength),500) ) - { - SWWMScoreObj.Spawn(int(Strength),Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); - SWWMHandler.DoFlash(Owner,Color(32,224,128,255),10); - Owner.A_StartSound("powerup/refresher",CHAN_ITEM,CHANF_LOCAL,.4); - } - } + if ( !Owner || (Owner.health <= 0) || ((EffectTics-5)%175) ) return; + if ( !Owner.GiveBody(int(Strength),500) ) return; + SWWMScoreObj.Spawn(int(Strength),Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); + SWWMHandler.DoFlash(Owner,Color(32,224,128,255),10); + Owner.A_StartSound("powerup/refresher",CHAN_ITEM,CHANF_LOCAL,.4); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 0.99; } } @@ -191,6 +189,8 @@ Class RefresherItem : SWWMHealth if ( p ) p.EffectTics += p.default.EffectTics; else Owner.GiveInventory("RefresherRegen",1); SWWMHandler.DoFlash(Owner,Color(80,224,128,255),20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 0.95; } override bool Use( bool pickup ) { diff --git a/zscript/items/swwm_powerups.zsc b/zscript/items/swwm_powerups.zsc index 93c1bc9b7..f1a10805f 100644 --- a/zscript/items/swwm_powerups.zsc +++ b/zscript/items/swwm_powerups.zsc @@ -65,6 +65,8 @@ Class GrilledCheeseSandwich : Inventory let s = Owner.FindInventory("GrilledCheeseSafeguard"); if ( !s ) Owner.GiveInventory("GrilledCheeseSafeguard",1); else Powerup(s).EffectTics = Powerup(s).default.EffectTics; + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= .87; } override bool Use( bool pickup ) { @@ -272,6 +274,8 @@ Class GhostPower : PowerInvisibility Super.InitEffect(); if ( !Owner ) return; SWWMHandler.DoFlash(Owner,Color(96,224,192,255),20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.04; DoEffect(); } override void EndEffect() @@ -281,6 +285,8 @@ Class GhostPower : PowerInvisibility Owner.bNOTARGET = false; Owner.A_StartSound("powerup/ghostend",CHAN_ITEMEXTRA); SWWMHandler.DoFlash(Owner,Color(96,224,192,255),20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.02; if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_GHOSTARTI")); } @@ -375,7 +381,12 @@ Class GhostArtifact : Inventory if ( pickup && !deathmatch ) return false; if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); let g = GhostPower(Owner.FindInventory("GhostPower")); - if ( g ) g.EffectTics += g.default.EffectTics; + if ( g ) + { + g.EffectTics += g.default.EffectTics; + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.04; + } else Owner.GiveInventory("GhostPower",1); return true; } @@ -468,6 +479,8 @@ Class GravityPower : Powerup DoEffect(); if ( Owner.pos.z <= Owner.floorz ) Owner.vel.z = 1; + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.04; } override void EndEffect() { @@ -480,6 +493,8 @@ Class GravityPower : Powerup if ( Owner.pos.z > Owner.floorz ) Owner.player.centering = true; } Owner.A_StartSound("powerup/gravityend",CHAN_ITEMEXTRA); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.02; if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_GRAVITYS")); } @@ -515,7 +530,12 @@ Class GravitySuppressor : Inventory if ( pickup && !deathmatch ) return false; if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); let g = GravityPower(Owner.FindInventory("GravityPower")); - if ( g ) g.EffectTics += g.default.EffectTics; + if ( g ) + { + g.EffectTics += g.default.EffectTics; + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.04; + } else Owner.GiveInventory("GravityPower",1); return true; } @@ -654,6 +674,8 @@ Class InvinciballPower : Powerup l.master = self; lastpulse = max(lastpulse,gametic+35); SWWMHandler.DoFlash(Owner,Color(96,255,64,0),20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.1; } override void DoEffect() @@ -671,6 +693,8 @@ Class InvinciballPower : Powerup if ( !Owner ) return; Owner.A_StartSound("powerup/invinciballend",CHAN_ITEMEXTRA); SWWMHandler.DoFlash(Owner,Color(96,255,64,0),20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.05; if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_INVINCIBALL")); } @@ -712,6 +736,8 @@ Class InvinciballPower : Powerup Owner.A_StartSound("powerup/invinciballhit",CHAN_POWERUP); lasteffect = level.maptime; lastpulse = max(lastpulse,gametic+20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.05; } } } @@ -748,6 +774,8 @@ Class FuckingInvinciball : Inventory i.EffectTics += i.default.EffectTics; i.lastpulse = max(i.lastpulse,gametic+35); SWWMHandler.DoFlash(Owner,Color(96,255,64,0),20); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.1; } else Owner.GiveInventory("InvinciballPower",1); return true; @@ -900,6 +928,7 @@ Class RagekitPower : Powerup Owner.A_QuakeEx(8,8,8,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); lasteffect = int.min; lastpulse = max(lastpulse,gametic+35); + Demolitionist(Owner).lastbump *= .95; l = Spawn("RagekitLight",Owner.pos); l.target = Owner; l.master = self; @@ -922,6 +951,7 @@ Class RagekitPower : Powerup lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40; Owner.A_QuakeEx(2,2,2,Random[Rage](1,2),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); lastpulse = max(lastpulse,gametic+10); + Demolitionist(Owner).lastbump *= .98; } } @@ -933,6 +963,7 @@ Class RagekitPower : Powerup SWWMHandler.DoFlash(Owner,Color(128,255,0,0),30); Owner.A_QuakeEx(4,4,4,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); Owner.A_AlertMonsters(2000); + Demolitionist(Owner).lastbump *= .9; if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_RAGEKIT")); } @@ -972,6 +1003,7 @@ Class RagekitPower : Powerup Owner.A_StartSound("powerup/ragekithit",CHAN_POWERUP); lasteffect = level.maptime; lastpulse = max(lastpulse,gametic+35); + Demolitionist(Owner).lastbump *= .9; } override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) @@ -1025,6 +1057,7 @@ Class Ragekit : Inventory SWWMHandler.DoFlash(Owner,Color(64,255,0,0),30); Owner.A_QuakeEx(8,8,8,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); r.lastpulse = max(r.lastpulse,gametic+35); + Demolitionist(Owner).lastbump *= .95; } else Owner.GiveInventory("RagekitPower",1); return true; @@ -1093,6 +1126,8 @@ Class Omnisight : Inventory // automatically zoom out so the player can know how far this goes CVar.FindCVar('swwm_mm_zoom').SetFloat(2.); } + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 1.1; level.allmap = true; } // spread to all players @@ -1109,6 +1144,8 @@ Class Omnisight : Inventory // automatically zoom out so the player can know how far this goes CVar.FindCVar('swwm_mm_zoom').SetFloat(2.); } + if ( players[i].mo is 'Demolitionist' ) + Demolitionist(players[i].mo).lastbump *= 1.1; } // not used up, must be kept for the targetting features to work return false; @@ -1932,12 +1969,16 @@ Class BarrierPower : PowerIronFeet l = Spawn("BarrierLight",Owner.pos); l.target = Owner; l.master = self; + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 0.95; } override void EndEffect() { Super.EndEffect(); if ( !Owner ) return; Owner.A_StartSound("powerup/barrierend",CHAN_ITEMEXTRA); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 0.95; if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_BARRIER")); } @@ -1963,7 +2004,12 @@ Class EBarrier : Inventory if ( pickup && !deathmatch ) return false; if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); let b = BarrierPower(Owner.FindInventory("BarrierPower")); - if ( b ) b.EffectTics += b.default.EffectTics; + if ( b ) + { + b.EffectTics += b.default.EffectTics; + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= 0.95; + } else Owner.GiveInventory("BarrierPower",1); return true; } diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index edfe1c2b6..54d1c2897 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -50,6 +50,7 @@ Class Demolitionist : PlayerPawn transient int revivefail; transient int bumptic; + transient double lastbump; Actor selflight; Actor oldencroached; @@ -591,6 +592,44 @@ Class Demolitionist : PlayerPawn A_SoundVolume(CHAN_AMBEXTRA,(players[consoleplayer].Camera==self)?1.:0.); lastunder = curunder; } + override void CheckFOV() + { + if ( !player ) return; + float desired = player.desiredfov; + // adjust fov from weapon (abs due to special use of negative + // to prevent it from scaling look sensitivity) + if ( (player.playerstate != PST_DEAD) && player.readyweapon + && player.readyweapon.fovscale ) + desired *= abs(player.readyweapon.fovscale); + // additional fov bump from various effects + // akin to the old A_ZoomFactor trick, but not limited to weapons and can stack + if ( lastbump <= 0. ) lastbump = 1.; + if ( lastbump != 1. ) + { + player.fov *= lastbump; + lastbump = 1.; + } + // adjust fov from dashing + double spd = vel.length(); + if ( spd > 10. ) + { + Vector3 facedir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch)); + if ( spd > 0. ) + { + double rel = max(0,vel.unit() dot facedir); + desired *= 1.+clamp(rel*(spd-10.),-80.,80.)*.002; + } + } + if ( player.fov == desired ) return; + // interpolate towards desired fov + if ( abs(player.fov-desired) < .1 ) player.fov = desired; + else + { + float zoom = max(.1,abs(player.fov-desired)*.35); + if ( player.fov > desired ) player.fov -= zoom; + else player.fov += zoom; + } + } override Vector2 BobWeapon( double ticfrac ) { // non-mod weapons bob normally @@ -962,6 +1001,7 @@ Class Demolitionist : PlayerPawn A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); a.A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); bumptic = gametic+int(20+spd/4.); + lastbump *= .8; if ( (diff.z < a.height) && (lastvelz >= -25) && (a.bDONTTHRUST || a.bACTLIKEBRIDGE || (a.Mass >= maxmass) || (!a.bSHOOTABLE && !a.bPUSHABLE && (a.Health > 0))) && a.bSOLID && (dir dot dirto > .65) ) { if ( bumped ) continue; @@ -1077,6 +1117,7 @@ Class Demolitionist : PlayerPawn bumped = true; A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); bumptic = gametic+int(20+spd/4.); + lastbump *= .8; A_QuakeEx(8,8,8,16,0,128,"",QF_RELATIVE|QF_SCALEDOWN); A_AlertMonsters(swwm_uncapalert?0:800); vel *= .2; @@ -1170,6 +1211,7 @@ Class Demolitionist : PlayerPawn bumped = true; A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); bumptic = gametic+int(25+spd/4.); + lastbump *= .8; A_QuakeEx(8,8,8,16,0,128,"",QF_RELATIVE|QF_SCALEDOWN); A_AlertMonsters(swwm_uncapalert?0:800); vel *= .2; diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index 3cdf07697..ae6314958 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -120,6 +120,12 @@ Class SWWMWeapon : Weapon abstract return -1, 0; } + action void A_BumpFOV( double factor ) + { + if ( !(self is 'Demolitionist') ) return; + Demolitionist(self).lastbump *= factor; + } + // subtracts given ammo from price, drops excess virtual bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) { diff --git a/zscript/weapons/swwm_blazeit.zsc b/zscript/weapons/swwm_blazeit.zsc index e8d30b7cd..cff037590 100644 --- a/zscript/weapons/swwm_blazeit.zsc +++ b/zscript/weapons/swwm_blazeit.zsc @@ -210,8 +210,7 @@ Class Hellblazer : SWWMWeapon A_AlertMonsters(swwm_uncapalert?0:bAlt?400:1200); int qstr = bAlt?4:5; A_QuakeEx(qstr,qstr,qstr,bAlt?4:12,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.12*qstr); - A_ZoomFactor(bAlt?.96:.93,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(bAlt?.96:.93); A_PlayerFire(); invoker.clipcount = max(0,invoker.clipcount-1); invoker.magstate[invoker.magpos] = true; diff --git a/zscript/weapons/swwm_cbt.zsc b/zscript/weapons/swwm_cbt.zsc index b095e82ac..554f9d9c9 100644 --- a/zscript/weapons/swwm_cbt.zsc +++ b/zscript/weapons/swwm_cbt.zsc @@ -458,8 +458,7 @@ Class Wallbuster : SWWMWeapon int qk = min(9,1+howmany/5); int ql = min(25,6+howmany/2); A_QuakeEx(qk,qk,qk,ql,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:qk*.15); - A_ZoomFactor(1.-qk*.04,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(1.-qk*.04); A_AlertMonsters(swwm_uncapalert?0:alertness); A_PlayerFire(); if ( redflashstr > 0 ) diff --git a/zscript/weapons/swwm_danmaku.zsc b/zscript/weapons/swwm_danmaku.zsc index 1d5a8d123..437701335 100644 --- a/zscript/weapons/swwm_danmaku.zsc +++ b/zscript/weapons/swwm_danmaku.zsc @@ -107,8 +107,7 @@ Class Eviscerator : SWWMWeapon invoker.isfiring = true; A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(6,6,6,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5); - A_ZoomFactor(.94,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.94); A_SWWMFlash(); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(64,255,224,96),3); @@ -178,8 +177,7 @@ Class Eviscerator : SWWMWeapon A_StartSound("eviscerator/altfire",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(4,4,4,5,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.9); - A_ZoomFactor(.91,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.91); A_SWWMFlash(); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(16,255,224,96),3); diff --git a/zscript/weapons/swwm_deathlydeathcannon.zsc b/zscript/weapons/swwm_deathlydeathcannon.zsc index b804e128f..93c170daa 100644 --- a/zscript/weapons/swwm_deathlydeathcannon.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon.zsc @@ -108,8 +108,7 @@ Class Ynykron : SWWMWeapon } else A_AlertMonsters(); // full range alert A_QuakeEx(9,9,9,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:2.5); - A_ZoomFactor(.7,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.7); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(120,255,255,255),30); A_Overlay(PSP_WEAPON+1,"FireSmoke"); diff --git a/zscript/weapons/swwm_jackhammer.zsc b/zscript/weapons/swwm_jackhammer.zsc index c326ef31f..5922305a4 100644 --- a/zscript/weapons/swwm_jackhammer.zsc +++ b/zscript/weapons/swwm_jackhammer.zsc @@ -41,8 +41,7 @@ Class PusherWeapon : SWWMWeapon invoker.chargelevel = clamp(invoker.chargelevel+FRandom[Pusher](-.04,.08),.3,1.); A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); A_WeaponOffset(FRandom[Pusher](-1,1)*2,32+FRandom[Pusher](-1,1)*2); - A_ZoomFactor(1.01,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(1.01); A_Recoil(-cos(pitch)); Vector3 x, y, z; [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); @@ -118,8 +117,7 @@ Class PusherWeapon : SWWMWeapon A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("pusher/altfire",CHAN_WEAPON,CHANF_OVERLAP); - A_ZoomFactor(1.+invoker.chargelevel*.2,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(1.+invoker.chargelevel*.2); A_Recoil(-(2.+4.*invoker.chargelevel)*cos(pitch)); A_QuakeEx(2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),3+int(invoker.chargelevel*6),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3+invoker.chargelevel*.7); A_WeaponOffset(0,32); diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index 813b66d9d..5642c9b6e 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -407,8 +407,7 @@ Class Spreadgun : SWWMWeapon A_StartSound(sounds[i],CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); A_AlertMonsters(swwm_uncapalert?0:louds[i]); A_QuakeEx(quakes[i],quakes[i],quakes[i],9,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2*quakes[i]); - A_ZoomFactor(1.-quakes[i]*.04,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(1.-quakes[i]*.04); A_PlayerFire(); SWWMHandler.DoFlash(self,cols[i],5); Vector3 x, y, z; diff --git a/zscript/weapons/swwm_sparkyboi.zsc b/zscript/weapons/swwm_sparkyboi.zsc index fd7f2b900..29a7e8073 100644 --- a/zscript/weapons/swwm_sparkyboi.zsc +++ b/zscript/weapons/swwm_sparkyboi.zsc @@ -91,8 +91,7 @@ Class Sparkster : SWWMWeapon // spark A_StartSound("biospark/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.7); A_QuakeEx(2,2,2,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2); - A_ZoomFactor(.96,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.96); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,192,255,96),3); A_AlertMonsters(swwm_uncapalert?0:5000); @@ -112,8 +111,7 @@ Class Sparkster : SWWMWeapon // beam A_StartSound("biospark/altfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.8); A_QuakeEx(3,3,3,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3); - A_ZoomFactor(.95,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.95); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,192,255,96),3); A_AlertMonsters(swwm_uncapalert?0:4000); @@ -133,8 +131,7 @@ Class Sparkster : SWWMWeapon // big spark A_StartSound("biospark/thirdfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:1.5); A_QuakeEx(5,5,5,10,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.6); - A_ZoomFactor(.94,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.94); A_AlertMonsters(swwm_uncapalert?0:1200); A_PlayerFire(); SWWMUtility.DoKnockback(self,-x,2500.); diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index a726ab385..41056ef1f 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -93,8 +93,7 @@ Class ExplodiumGun : SWWMWeapon invoker.clipcount = max(invoker.clipcount-1,0); A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(5,5,5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5); - A_ZoomFactor(.96,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.96); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,255,224,64),3); A_AlertMonsters(swwm_uncapalert?0:5000); @@ -533,8 +532,7 @@ Class DualExplodiumGun : SWWMWeapon } A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(5,5,5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5); - A_ZoomFactor(.96,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.96); if ( side == 1 ) A_SWWMFlash("Flash"); else if ( side == -1 ) diff --git a/zscript/weapons/swwm_tastytreat.zsc b/zscript/weapons/swwm_tastytreat.zsc index 9720843c1..fdef788d4 100644 --- a/zscript/weapons/swwm_tastytreat.zsc +++ b/zscript/weapons/swwm_tastytreat.zsc @@ -115,8 +115,7 @@ Class CandyGun : SWWMWeapon invoker.clipcount = max(invoker.clipcount-1,0); A_StartSound("candygun/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(5,5,5,5,0,15,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:2.); - A_ZoomFactor(.94,ZOOM_INSTANT); - A_ZoomFactor(1.); + A_BumpFOV(.94); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,224,64,255),5); A_AlertMonsters(swwm_uncapalert?0:9000); diff --git a/zscript/weapons/swwm_thiccboolet.zsc b/zscript/weapons/swwm_thiccboolet.zsc index fe7845dd3..e1b1e068d 100644 --- a/zscript/weapons/swwm_thiccboolet.zsc +++ b/zscript/weapons/swwm_thiccboolet.zsc @@ -593,8 +593,7 @@ Class SilverBullet : SWWMWeapon int str = invoker.fcbchambered?7:8; A_QuakeEx(str,str,str,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:str/4.); double basezoom = invoker.zoomed?clamp(invoker.zoomlevel,1.,16.):1.; - A_ZoomFactor(basezoom*(invoker.fcbchambered?.8:.76),ZOOM_INSTANT); - A_ZoomFactor(basezoom); + A_BumpFOV(invoker.fcbchambered?.8:.76); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(110,255,192,80),8); Vector3 x, y, z;