diff --git a/cvarinfo.base b/cvarinfo.base index 8516e3910..903b42ed4 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -57,7 +57,7 @@ nosave int swwm_filterachievements = 1; // filter for achievements at 0%: 0 - n nosave noarchive bool swwm_debugview = false; // debug visual aid for various things, such as actor collision, trajectories, relationships, etc. server bool swwm_usetopickup = false; // allow item pickup only by pressing use nosave bool swwm_buttsfx = true; // buttslam homerun SFX -user float swwm_bumpstrength = 1.0; // intensity of fov bumping +user float swwm_bumpstrength = 1.0; // intensity of fov/viewangles bumping server bool swwm_nomagdrop = true; // does not drop spent magazines (the "environmentally conscious" option) nosave bool swwm_nomapmsg = false; // disables special map dialogue messages nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation when first selected diff --git a/language.def_menu b/language.def_menu index 9f02ebb08..90a213801 100644 --- a/language.def_menu +++ b/language.def_menu @@ -140,7 +140,7 @@ SWWM_TIME_SECONDS = "seconds"; SWWM_ATITLE = "Achievements"; SWWM_USETOPICKUP = "Exclusive Use To Pickup"; SWWM_BUTTSFX = "Clapping Buttcheeks"; -SWWM_BUMP = "FOV Bump Strength"; +SWWM_BUMP = "View Bump Strength"; SWWM_ENGINE = "Engine"; SWWM_NOMAGDROP = "Drop Spent Mags"; SWWM_NOMAPMSG = "Map Special Messages"; @@ -251,7 +251,7 @@ TOOLTIP_SWWM_FILTERACHIEVEMENTS = "Filters out achievements at 0% in the Demolit TOOLTIP_SWWM_PLAYTIME = "Your total play time with this mod loaded."; TOOLTIP_SWWM_USETOPICKUP = "Prevents picking up mod items through touch, exclusively requiring a use action instead. Note that this disables the \"dropped item magnet\" feature when holding Use."; TOOLTIP_SWWM_BUTTSFX = "The Demolitionist's buttcheeks will VERY AUDIBLY clap upon executing a successful buttslam."; -TOOLTIP_SWWM_BUMPSTRENGTH = "Controls how strong the bumping of the FOV is from weapon recoil and other actions."; +TOOLTIP_SWWM_BUMPSTRENGTH = "Controls how strong the bumping of FOV and view angles is from weapon recoil and other actions."; TOOLTIP_SWWM_ENGINE = "Don't touch this."; TOOLTIP_SWWM_NOMAGDROP = "By default, the Demolitionist will be somewhat environmentally conscious and not leave spent magazines lying around. Enable if you prefer the added clutter."; TOOLTIP_SWWM_NOMAPMSG = "Toggles special animated character messages on certain maps (usually vanilla)."; diff --git a/language.es_menu b/language.es_menu index 12b4f55c0..d8cc9dca9 100644 --- a/language.es_menu +++ b/language.es_menu @@ -138,7 +138,7 @@ SWWM_TIME_SECONDS = "segundos"; SWWM_ATITLE = "Logros"; SWWM_USETOPICKUP = "Uso Exclusivo para Recoger"; SWWM_BUTTSFX = "Azote de Nalgas"; -SWWM_BUMP = "Intensidad de Sacudida de FOV"; +SWWM_BUMP = "Intensidad de Sacudida de Vista"; SWWM_ENGINE = "Motor"; SWWM_NOMAGDROP = "Tirar Cargadores Usados"; SWWM_NOMAPMSG = "Mensajes Especiales de Mapa"; @@ -249,7 +249,7 @@ TOOLTIP_SWWM_FILTERACHIEVEMENTS = "Filtra logros al 0% en el Menú de Demolicion TOOLTIP_SWWM_PLAYTIME = "Tu tiempo de juego total con este mod cargado."; TOOLTIP_SWWM_USETOPICKUP = "Evita recoger ítems del mod al tocarlos, en su lugar requiriendo exclusivamente una acción de uso. Ten en cuenta que esto deshabilita el \"imán de ítems dropeados\" al mantener la tecla de Usar."; TOOLTIP_SWWM_BUTTSFX = "Las nalgas de la Demolicionista emitiran un azote MUY SONORO al ejecutar exitosamente un golpe de culo."; -TOOLTIP_SWWM_BUMPSTRENGTH = "Controla lo intensa que es la sacudida del FOV por el retroceso de armas y otras acciones."; +TOOLTIP_SWWM_BUMPSTRENGTH = "Controla lo intensa que es la sacudida del FOV y la dirección visual por el retroceso de armas y otras acciones."; TOOLTIP_SWWM_ENGINE = "No toques esto."; TOOLTIP_SWWM_NOMAGDROP = "Por defecto, la Demolicionista será un poco consciente con el medio ambiente y no dejará cargadores usados por ahí. Activa si prefieres la basura adicional."; TOOLTIP_SWWM_NOMAPMSG = "Activa mensajes especiales animados de personajes en ciertos mapas (usualmente vanilla)."; diff --git a/language.version b/language.version index 940ad19ae..fea4d1d26 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r786 \cu(Fri 10 Mar 16:04:07 CET 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r786 \cu(2023-03-10 16:04:07)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r787 \cu(Fri 10 Mar 19:37:09 CET 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r787 \cu(2023-03-10 19:37:09)\c-"; diff --git a/zscript/dlc1/swwm_hammertime.zsc b/zscript/dlc1/swwm_hammertime.zsc index d5b903925..de459b606 100644 --- a/zscript/dlc1/swwm_hammertime.zsc +++ b/zscript/dlc1/swwm_hammertime.zsc @@ -226,8 +226,8 @@ Class ItamexHammer : SWWMWeapon Stop; Select: XZW2 I 3 A_FullRaise(); - XZW2 JK 3; - XZW2 LMNO 2; + XZW2 JK 3 A_BumpView(-.1,tics:3); + XZW2 LMNO 2 A_BumpView(.2,tics:2); XZW2 PQRST 3; Goto Ready; Ready: @@ -239,13 +239,13 @@ Class ItamexHammer : SWWMWeapon Wait; Fire: XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 UVWXYZ 1; + XZW2 UVWXYZ 1 A_BumpAngle(-1); XZW3 A 1 { A_StartSound("itamex/swing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW3 BCDE 1; + XZW3 BCDE 1 A_BumpAngle(4); XZW3 F 1 A_HammerHit(); XZW3 GHIJK 2; XZW3 L 2 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -261,8 +261,17 @@ Class ItamexHammer : SWWMWeapon Goto Ready; AltFire: XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 DEFG 2 A_AltCharge(); - XZW4 HIJKLMNOPQRSTU 1 A_AltCharge(); + XZW4 DEFG 2 + { + A_BumpView(.4,tics:2); + A_AltCharge(); + } + XZW4 HIJKLMN 1 + { + A_BumpView(-.2); + A_AltCharge(); + } + XZW4 OPQRSTU 1 A_AltCharge(); XZW4 V 1 A_AltHold(); Wait; AltRelease: @@ -283,7 +292,7 @@ Class ItamexHammer : SWWMWeapon Goto Ready; Zoom: XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 XYZ 2 A_BumpAngle(-5); + XZW5 XYZ 2 A_BumpAngle(-2,tics:2); XZW6 ABCDEF 1 A_ChargeUp(); XZW6 G 0 A_SpinReact(); XZW6 G 1 A_SpinMove(); @@ -306,36 +315,47 @@ Class ItamexHammer : SWWMWeapon Goto Ready; Reload: XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 XYZ 2; + XZW6 XYZ 2 A_BumpView(-.1,tics:2); XZW7 ABCDEF 2; XZW7 G 1 { A_PlayerCheckGun(); + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.7,starttime:.2); } - XZW7 HIJ 1; - XZW7 K 1 A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.8,starttime:.2); - XZW7 LMNO 1; - XZW7 P 1 A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.9,starttime:.2); - XZW7 QRST 1; + XZW7 HIJ 1 A_BumpView(-.05); + XZW7 K 1 + { + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.8,starttime:.2); + } + XZW7 LMNO 1 A_BumpView(-.05); + XZW7 P 1 + { + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.9,starttime:.2); + } + XZW7 QRST 1 A_BumpView(-.05); XZW7 U 1 A_StopSound(CHAN_WEAPONEXTRA); - XZW7 VWXYZ 1; + XZW7 VWXYZ 1 A_BumpView(.05); XZW8 A 0 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.42); - XZW8 BCDE 3; - XZW8 FGHI 2; + XZW8 BCDE 3 A_BumpView(-.1,tics:3); + XZW8 FGHI 2 A_BumpView(.05,tics:2); Goto Ready; User1: XZW2 A 1; XZW8 J 1 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); XZW8 KLM 1; XZW8 N 2 A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 OPQ 2; + XZW8 OPQ 2 A_BumpView(.5,tics:2); XZW8 R 1 { + A_BumpFOV(.97); + A_QuakeEx(1.,1.,1.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); A_Parry(9); A_PlayerMelee(true); } - XZW8 S 1; + XZW8 S 1 A_BumpView(-6); XZW8 T 3 A_Melee(50,"demolitionist/whitm",1.2,1.4); XZW8 UVWXYZ 2; XZW9 ABC 2; @@ -345,8 +365,8 @@ Class ItamexHammer : SWWMWeapon Goto Ready; Deselect: XZW2 A 3 A_StartSound("itamex/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCD 3; - XZW2 EFGHI 2; + XZW2 BCD 3 A_BumpView(.1,tics:3); + XZW2 EFGHI 2 A_BumpView(.2,tics:2); XZW2 J -1 A_FullLower(); Stop; } diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc index 52a446fe3..0a7c62229 100644 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun.zsc @@ -107,8 +107,10 @@ Class HeavyMahSheenGun : SWWMWeapon if ( invoker.firespeed == 1 ) { A_AlertMonsters(swwm_uncapalert?0:3000); - A_BumpFOV(.98); - A_QuakeEx(1.6,1.6,1.6,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_BumpFOV(.95); + A_BumpView(FRandom[Sheen](-.4,.4)); + A_BumpAngle(FRandom[Sheen](-.4,.4)); + A_QuakeEx(2.,2.,2.,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.25); A_StartSound("sheen/700rpm",CHAN_WEAPONEXTRA,CHANF_LOOPING,attenuation:.5); invoker.vibrate = .25; A_Overlay(-9999,"EjectRound3"); @@ -118,7 +120,9 @@ Class HeavyMahSheenGun : SWWMWeapon else if ( invoker.firespeed == 2 ) { A_AlertMonsters(swwm_uncapalert?0:5000); - A_BumpFOV(.99+FRandom[Sheen](-.005,.005)); + A_BumpFOV(.97+FRandom[Sheen](-.01,.01)); + A_BumpView(FRandom[Sheen](-.3,.3)); + A_BumpAngle(FRandom[Sheen](-.3,.3)); A_QuakeEx(1.8,1.8,1.8,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.15); A_StartSound("sheen/2100rpm",CHAN_WEAPONEXTRA,CHANF_LOOPING,attenuation:.4); invoker.vibrate = min(1.,invoker.vibrate*1.05+.05); @@ -128,7 +132,9 @@ Class HeavyMahSheenGun : SWWMWeapon else if ( invoker.firespeed == 0 ) { A_AlertMonsters(swwm_uncapalert?0:2000); - A_BumpFOV(.97); + A_BumpFOV(.92); + A_BumpView(FRandom[Sheen](-.5,.5)); + A_BumpAngle(FRandom[Sheen](-.5,.5)); A_QuakeEx(1.4,1.4,1.4,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.25); A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); SWWMUtility.DoKnockback(self,-x,6000.); @@ -360,8 +366,8 @@ Class HeavyMahSheenGun : SWWMWeapon A_FullRaise(); if ( invoker.incooldown ) A_StartSound("sheen/overheat",CHAN_WEAPONEXTRA2,CHANF_LOOPING,attenuation:3.); } - XZW2 LMNOP 3; - XZW2 QRSTUV 2; + XZW2 LMNOP 3 A_BumpView(-.05,tics:3); + XZW2 QRSTUV 2 A_BumpView(.2,tics:2); XZW2 WX 3; Goto Ready; Ready: @@ -590,9 +596,10 @@ Class HeavyMahSheenGun : SWWMWeapon Stop; AltFire: XZW2 A 3 A_StartSound("sheen/crankin",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 IJ 2; + XZW5 IJ 2 A_BumpView(.2,tics:2); XZW5 K 3 { + A_QuakeEx(.5,.5,.5,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); invoker.firespeed = min(2,invoker.firespeed+1); EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_SHEENSPEED"..(invoker.firespeed+1)); } @@ -601,9 +608,10 @@ Class HeavyMahSheenGun : SWWMWeapon Goto Ready; Zoom: XZW2 A 3 A_StartSound("sheen/crankin",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 NO 2; + XZW5 NO 2 A_BumpView(-.2,tics:2); XZW5 P 3 { + A_QuakeEx(.5,.5,.5,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); invoker.firespeed = max(0,invoker.firespeed-1); EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_SHEENSPEED"..(invoker.firespeed+1)); } @@ -616,25 +624,30 @@ Class HeavyMahSheenGun : SWWMWeapon A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); } - XZW5 TUVW 3; - XZW5 XYZ 4; + XZW5 TUVW 3 A_BumpView(-.3,tics:3); + XZW5 XYZ 4 A_BumpView(-.1,tics:4); XZW6 A 4; XZW6 B 3 A_StartSound("sheen/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW6 CDE 3; - XZW6 FGHIJKL 2; + XZW6 F 2; + XZW6 GH 2 A_BumpView(1.,tics:2); + XZW6 IJKL 2; Goto Ready; User1: XZW2 A 3 A_StartSound("sheen/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 MNOPQR 3; + XZW6 MNO 3; + XZW6 PQR 3 A_BumpAngle(1,3); XZW6 S 3 A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); XZW6 T 3; XZW6 U 2 { + A_BumpFOV(.94); + A_QuakeEx(1.6,1.6,1.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); A_Parry(9); A_PlayerMelee(); } - XZW6 V 2; - XZW6 W 2 A_Melee(80+int(invoker.barrelheat/4.),"demolitionist/whitl",1.25,1.3,1.4); + XZW6 V 2 A_BumpAngle(-15); + XZW6 W 2 A_Melee(80+int(invoker.barrelheat/4.),"demolitionist/whitl",1.35,1.3,1.4); XZW6 XYZ 3; XZW7 AB 4; XZW7 C 4 A_StartSound("sheen/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -642,7 +655,7 @@ Class HeavyMahSheenGun : SWWMWeapon Goto Ready; Deselect: XZW2 A 2 A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCDEFGHIJK 2; + XZW2 BCDEFGHIJ 2 A_BumpView(.1,tics:2); XZW2 K -1 { A_StopSound(CHAN_WEAPONEXTRA2); diff --git a/zscript/dlc1/swwm_mister.zsc b/zscript/dlc1/swwm_mister.zsc index fcb4c0a75..58f060b99 100644 --- a/zscript/dlc1/swwm_mister.zsc +++ b/zscript/dlc1/swwm_mister.zsc @@ -1535,12 +1535,12 @@ Class MisterRifle : SWWMWeapon return A_JumpIf(invoker.boltlock,"DeselectLock"); } XZW2 BCDE 2; - XZW2 FGHIJKLMNOP 1; + XZW2 FGHIJKLMNO 1; XZW2 P -1 A_FullLower(); Stop; DeselectLock: XZWB EFGHI 2; - XZWB JKLMNOPQRST 1; + XZWB JKLMNOPQRS 1; XZWB T -1 A_FullLower(); Stop; Flash: diff --git a/zscript/dlc1/swwm_notashotgun.zsc b/zscript/dlc1/swwm_notashotgun.zsc index f35a1d255..381c3288f 100644 --- a/zscript/dlc1/swwm_notashotgun.zsc +++ b/zscript/dlc1/swwm_notashotgun.zsc @@ -623,7 +623,7 @@ Class Quadravol : SWWMWeapon A_StartSound(invoker.onehand?"quadshot/deselectfast":"quadshot/deselect",CHAN_WEAPON,CHANF_OVERLAP); return A_JumpIf(invoker.onehand,"Deselect1H"); } - XZW2 BCDEFGHIJKLMNOPQR 1; + XZW2 BCDEFGHIJKLMNOPQ 1; XZW2 R -1 A_FullLower(); Stop; Flash: diff --git a/zscript/player/swwm_player_tick.zsc b/zscript/player/swwm_player_tick.zsc index 03e1b7c87..2bf04bc32 100644 --- a/zscript/player/swwm_player_tick.zsc +++ b/zscript/player/swwm_player_tick.zsc @@ -426,33 +426,33 @@ extend Class Demolitionist } } } + double bstr = CVar.GetCVar('swwm_bumpstrength',player).GetFloat(); if ( abs(bumpvelz) > double.epsilon ) { - lagvel.z += bumpvelz*.5; + lagvel.z += bumpvelz*bstr*.5; bumpvelz *= .8; } Vector3 temp = (ViewAngle,ViewPitch,ViewRoll); if ( abs(bumpangle) > double.epsilon ) { - temp.x += bumpangle*.5; + temp.x += bumpangle*bstr*.5; bumpangle *= .8; } if ( abs(bumppitch) > double.epsilon ) { - temp.y += bumppitch*.5; + temp.y += bumppitch*bstr*.5; bumppitch *= .8; } if ( abs(bumproll) > double.epsilon ) { - temp.z += bumproll*.5; + temp.z += bumproll*bstr*.5; bumproll *= .8; } // stabilize view angles if ( temp dot temp < double.epsilon ) temp = (0,0,0); else temp *= .8; if ( ViewAngle != temp.x ) A_SetViewAngle(temp.x,SPF_INTERPOLATE); - // IMPORTANT: don't call A_SetViewPitch if the player's min/max pitch are not yet initialized - if ( (ViewPitch != temp.y) && !(player.MinPitch == player.MaxPitch == pitch) ) A_SetViewPitch(temp.y,SPF_INTERPOLATE); + if ( ViewPitch != temp.y ) A_SetViewPitch(temp.y,SPF_INTERPOLATE); if ( ViewRoll != temp.z ) A_SetViewRoll(temp.z,SPF_INTERPOLATE); if ( player.onground && !lastground ) landvelz = lastvelz; else if ( !player.onground && lastground ) landvelz = 0; diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index 553b2f355..78ff10f95 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -26,6 +26,10 @@ Class SWWMWeapon : Weapon abstract int oldtagcolor; + double bvstr, bastr; + Vector3 bvdir; + int bvtics, batics; + bool IsSwapWeapon( Inventory i ) const { if ( bNoSwapWeapon || (i.GetClass() == GetClass()) ) return false; @@ -204,15 +208,26 @@ Class SWWMWeapon : Weapon abstract Demolitionist(self).lastbump *= factor; } - action void A_BumpView( double factor, Vector3 dir = (0,0,0) ) + action void A_BumpView( double factor, Vector3 dir = (0,0,0), int tics = 0 ) { if ( !(self is 'Demolitionist') ) return; Demolitionist(self).BumpView(factor,dir); + if ( tics > 1 ) + { + invoker.bvstr = factor; + invoker.bvdir = dir; + invoker.bvtics = tics-1; + } } - action void A_BumpAngle( double factor ) + action void A_BumpAngle( double factor, int tics = 0 ) { if ( !(self is 'Demolitionist') ) return; Demolitionist(self).bumpangle += factor; + if ( tics > 1 ) + { + invoker.bastr = factor; + invoker.batics = tics-1; + } } // subtracts given ammo from price, drops excess @@ -601,6 +616,18 @@ Class SWWMWeapon : Weapon abstract override void Tick() { Super.Tick(); + if ( bvtics > 0 ) + { + if ( Demolitionist(Owner) && Owner.player && (Owner.player.ReadyWeapon == self) ) + Demolitionist(Owner).BumpView(bvstr,bvdir); + bvtics--; + } + if ( batics > 0 ) + { + if ( Demolitionist(Owner) && Owner.player && (Owner.player.ReadyWeapon == self) ) + Demolitionist(Owner).BumpAngle += bastr; + batics--; + } if ( !Owner ) { angle -= (180./64.); diff --git a/zscript/weapons/swwm_blazeit.zsc b/zscript/weapons/swwm_blazeit.zsc index d59dfb340..f0449317e 100644 --- a/zscript/weapons/swwm_blazeit.zsc +++ b/zscript/weapons/swwm_blazeit.zsc @@ -61,8 +61,9 @@ Class Hellblazer : SWWMWeapon A_StartSound(bAlt?"hellblazer/altfire":"hellblazer/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:(bAlt?1.7:.8)); A_AlertMonsters(swwm_uncapalert?0:bAlt?400:1200); double qstr = bAlt?4.:5.; - A_QuakeEx(qstr,qstr,qstr,bAlt?4:12,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.12*qstr); + A_QuakeEx(qstr,qstr,qstr,bAlt?4:12,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.12*qstr); A_BumpFOV(bAlt?.96:.93); + A_BumpView(bAlt?-2:-3); A_PlayerFire(); invoker.clipcount = max(0,invoker.clipcount-1); invoker.magstate[invoker.magpos-invoker.preload] = true; @@ -366,7 +367,7 @@ Class Hellblazer : SWWMWeapon A_StartSound("hellblazer/deselect",CHAN_WEAPON,CHANF_OVERLAP); A_GlassOverlay("Deselect_G"); } - XZW2 BCDEFGHI 2; + XZW2 BCDEFGH 2; XZW2 I -1 A_FullLower(); Stop; Deselect_G: @@ -602,10 +603,17 @@ Class Hellblazer : SWWMWeapon XZW8 JKL 2; XZW8 M 2 A_StartSound("hellblazer/open",CHAN_WEAPON,CHANF_OVERLAP); XZW8 NOPQ 2; - XZW8 RSTUVWXY 2; - XZW8 Z 2 A_StartSound("hellblazer/magout",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 R 2 A_QuakeEx(.8,.8,.8,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + XZW8 STUVWXY 2; + XZW8 Z 2 + { + A_BumpView(-1.); + A_StartSound("hellblazer/magout",CHAN_WEAPON,CHANF_OVERLAP); + } XZW9 ABCDEFGHIJ 2; - XZWB VWXYZ 3; + XZWB VW 3 A_BumpView(.3,tics:3); + XZWB X 3; + XZWB YZ 3 A_BumpView(-.3,tics:3); Goto Load_G; Load: XZW4 JKLMNOPQRSTUVWXYZ 2; @@ -614,11 +622,16 @@ Class Hellblazer : SWWMWeapon Load_G: XZW9 J 2 A_PlayerReload(); XZW9 KLMNOP 2; - XZW9 Q 2 A_StartSound("hellblazer/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZW9 Q 2 + { + A_BumpView(1.); + A_StartSound("hellblazer/magin",CHAN_WEAPON,CHANF_OVERLAP); + } XZW9 RSTUVWX 2; XZW9 Y 2 A_StartSound("hellblazer/close",CHAN_WEAPON,CHANF_OVERLAP); XZW9 Z 2; - XZWA ABC 2; + XZWA A 2 A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + XZWA BC 2; XZWA D 2 A_StartSound("hellblazer/meleestop",CHAN_WEAPON,CHANF_OVERLAP); XZWA EFGHIJ 2; Goto Ready_G; @@ -653,9 +666,14 @@ Class Hellblazer : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZWB BCD 2; - XZWB E 2 A_Parry(9); - XZWB FG 1; + XZWB BCD 2 A_BumpView(.5,tics:2); + XZWB E 2 + { + A_BumpFOV(.96); + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_Parry(9); + } + XZWB FG 1 A_BumpView(-3); XZWB H 1 A_Melee(75,"demolitionist/whitl",1.05,1.2,1.2); XZWB IJKLM 2; XZWB N 2 A_StartSound("hellblazer/meleeend",CHAN_WEAPON,CHANF_OVERLAP); diff --git a/zscript/weapons/swwm_cbt.zsc b/zscript/weapons/swwm_cbt.zsc index 6d1727618..6ca6130fc 100644 --- a/zscript/weapons/swwm_cbt.zsc +++ b/zscript/weapons/swwm_cbt.zsc @@ -220,10 +220,11 @@ Class Wallbuster : SWWMWeapon player.SetPsprite(PSP_WEAPON,ResolveState("FireTwentyFive")); SWWMHandler.DoFlash(self,Color(80,255,192,64),7); } - double qk = min(9.,1.+howmany/5.); + double qk = min(9.,1.+howmany/4.); int ql = min(25,6+howmany/2); A_QuakeEx(qk,qk,qk,ql,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:qk*.15); A_BumpFOV(1.-qk*.04); + A_BumpView(-qk*.6); A_AlertMonsters(swwm_uncapalert?0:alertness); A_PlayerFire(); if ( flashstr > 0 ) @@ -482,7 +483,9 @@ Class Wallbuster : SWWMWeapon Stop; Select: XZW2 G 1 A_FullRaise(); - XZW2 HIJKLMNOP 2; + XZW2 HI 2 A_BumpView(.2,tics:2); + XZW2 JKL 2 A_BumpView(-.3,tics:2); + XZW2 MNOP 2; Goto Ready; Ready: XZW2 A 1 @@ -561,7 +564,11 @@ Class Wallbuster : SWWMWeapon XZW2 A 2 A_StartSound("wallbuster/meleestart",CHAN_WEAPON,CHANF_OVERLAP); XZW4 DEFG 2; XZW4 HIJK 1; - XZW4 L 1 A_StartSound("wallbuster/unlock",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 L 1 + { + A_QuakeEx(.8,.8,.8,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StartSound("wallbuster/unlock",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 MNOPQ 1; XZW4 RSTUV 1; Goto Detach; @@ -703,7 +710,11 @@ Class Wallbuster : SWWMWeapon A_ChangeModel("",1,"","",4+i,"models","",CMDL_USESURFACESKIN,-1); } XZW8 OPQRS 1; - XZW8 T 1 A_StartSound("wallbuster/lock",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 T 1 + { + A_QuakeEx(1.,1.,1.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_StartSound("wallbuster/lock",CHAN_WEAPON,CHANF_OVERLAP); + } XZW8 UVWXY 1; XZW8 Z 1 A_StartSound("wallbuster/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW9 ABC 1; @@ -716,9 +727,14 @@ Class Wallbuster : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW9 GHI 2; - XZW9 J 2 A_Parry(9); - XZW9 KLM 1; + XZW9 GHI 2 A_BumpView(1,tics:2); + XZW9 J 2 + { + A_BumpFOV(.96); + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_Parry(9); + } + XZW9 KLM 1 A_BumpView(-4); XZW9 N 1 A_Melee(70,"demolitionist/whitl",1.2,1.4,1.3); XZW9 OPQRS 2; XZW9 T 2 A_StartSound("wallbuster/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -728,7 +744,9 @@ Class Wallbuster : SWWMWeapon Goto Ready; Deselect: XZW2 A 2 A_StartSound("wallbuster/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCDEFG 2; + XZW2 B 2; + XZW2 CD 2 A_BumpView(.1,tics:2); + XZW2 EF 2 A_BumpView(.2,tics:2); XZW2 G -1 A_FullLower(); Stop; FlashRed: diff --git a/zscript/weapons/swwm_danmaku.zsc b/zscript/weapons/swwm_danmaku.zsc index 1a0f02318..c2b7b710c 100644 --- a/zscript/weapons/swwm_danmaku.zsc +++ b/zscript/weapons/swwm_danmaku.zsc @@ -71,7 +71,7 @@ Class Eviscerator : SWWMWeapon if ( !weap ) return; invoker.isfiring = true; A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP); - A_QuakeEx(6.,6.,6.,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); + A_QuakeEx(6.,6.,6.,8,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); A_BumpFOV(.94); A_SWWMFlash(); A_PlayerFire(); @@ -146,7 +146,7 @@ Class Eviscerator : SWWMWeapon invoker.isfiring = true; 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|QF_3D,rollIntensity:.9); + A_QuakeEx(4.,4.,4.,15,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.9); A_BumpFOV(.91); A_SWWMFlash(); A_PlayerFire(); @@ -275,12 +275,12 @@ Class Eviscerator : SWWMWeapon A_StartSound("eviscerator/deselect",CHAN_WEAPON,CHANF_OVERLAP); return A_JumpIf(invoker.extended,"DeselectExt"); } - XZW2 BCDEFGH 2; + XZW2 BCDEFG 2; XZW2 H -1 A_FullLower(); Stop; DeselectExt: XZW4 Z 2; - XZW5 ABCDEFG 2; + XZW5 ABCDEF 2; XZW5 G -1 A_FullLower(); Stop; Select: @@ -346,7 +346,11 @@ Class Eviscerator : SWWMWeapon Eject: XZW2 A 4; XZW3 STUV 2; - XZW3 W 1 A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 W 1 + { + A_QuakeEx(.3,.3,.3,4,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + } XZW3 X 1 { int layer = PSP_WEAPON+1; @@ -358,6 +362,7 @@ Class Eviscerator : SWWMWeapon XZW4 AB 1; XZW4 C 1 { + A_QuakeEx(.5,.5,.5,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.15); A_StartSound("eviscerator/ejectend",CHAN_WEAPON,CHANF_OVERLAP); A_StartLoad(); } @@ -367,7 +372,11 @@ Class Eviscerator : SWWMWeapon EjectExt: XZW4 Z 4; XZW6 RSTU 2; - XZW6 V 1 A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 V 1 + { + A_QuakeEx(.3,.3,.3,4,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + } XZW6 W 1 { int layer = PSP_WEAPON+1; @@ -379,6 +388,7 @@ Class Eviscerator : SWWMWeapon XZW7 A 1; XZW7 B 1 { + A_QuakeEx(.5,.5,.5,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.15); A_StartSound("eviscerator/ejectend",CHAN_WEAPON,CHANF_OVERLAP); A_StartLoad(); } @@ -431,7 +441,11 @@ Class Eviscerator : SWWMWeapon return A_JumpIf(invoker.extended,"ZoomExt"); } XZW4 JKLMN 2; - XZW4 O 1 A_StartSound("eviscerator/switch"); + XZW4 O 1 + { + A_QuakeEx(.25,.25,.25,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/switch"); + } XZW4 PQR 1; XZW4 S 2 { @@ -444,7 +458,11 @@ Class Eviscerator : SWWMWeapon ZoomExt: XZW4 Z 2; XZW7 IJK 3; - XZW7 L 1 A_StartSound("eviscerator/switch"); + XZW7 L 1 + { + A_QuakeEx(.25,.25,.25,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/switch"); + } XZW7 MNO 1; XZW7 P 2 { @@ -487,23 +505,42 @@ Class Eviscerator : SWWMWeapon A_PlayerMelee(); return A_JumpIf(invoker.extended,"User1Ext"); } - XZW8 WXY 2; - XZW8 Z 1; + XZW8 WXY 2 A_BumpAngle(2,2); + XZW8 Z 1 A_BumpAngle(2); XZW9 AB 1; - XZW9 C 1 A_Parry(9); - XZW9 D 1; - XZW9 E 2 A_Melee(60,"demolitionist/whitm",1.1,1.2,1.2); + XZW9 C 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_Parry(9); + } + XZW9 D 1 A_BumpAngle(-8); + XZW9 E 2 + { + A_BumpAngle(-4); + A_Melee(60,"demolitionist/whitm",1.1,1.2,1.2); + } XZW9 FGH 2; XZW9 I 2 A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW9 JKL 2; Goto Ready; User1Ext: XZW4 Z 2; - XZWA NOP 2; - XZWA QRS 1; - XZWA T 1 A_Parry(9); - XZWA U 1; - XZWA V 2 A_Melee(60,"demolitionist/whitm",1.1,1.2); + XZWA NOP 2 A_BumpAngle(2,2); + XZWA Q 1 A_BumpAngle(2); + XZWA RS 1; + XZWA T 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_Parry(9); + } + XZWA U 1 A_BumpAngle(-8); + XZWA V 2 + { + A_BumpAngle(-4); + A_Melee(60,"demolitionist/whitm",1.1,1.2); + } XZWA WXY 2; XZWA Z 2 A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZWB ABC 2; diff --git a/zscript/weapons/swwm_deathlydeathcannon.zsc b/zscript/weapons/swwm_deathlydeathcannon.zsc index 1256412cc..85bbb8999 100644 --- a/zscript/weapons/swwm_deathlydeathcannon.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon.zsc @@ -76,6 +76,7 @@ Class Ynykron : SWWMWeapon a.LastHeard = self; } A_QuakeEx(9.,9.,9.,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:2.5); + A_BumpView(-5); A_BumpFOV(.7); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(120,255,255,255),30); @@ -130,6 +131,11 @@ Class Ynykron : SWWMWeapon Owner.A_SoundVolume(CHAN_WEAPONEXTRA2,(.025*chargelevel)**3.); } if ( Owner.player.ReadyWeapon != self ) return; + if ( (chargelevel > 10.) && !(level.maptime&3) ) + { + double str = (chargelevel-10.)/50.; + Owner.A_QuakeEx(str,str,str,4,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:str/5.); + } let pspm = Owner.player.FindPSprite(PSP_WEAPON); if ( pspm ) { @@ -227,7 +233,9 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/ready",CHAN_WEAPONEXTRA2,CHANF_LOOP,(.025*invoker.chargelevel)**3.,2.); A_FullRaise(); } - XZW2 MNOPQRSTUVWXYZ 2; + XZW2 MNOP 2 A_BumpView(-.2,tics:2); + XZW2 QRSTUV 2 A_BumpView(-.6,tics:2); + XZW2 WXYZ 2 A_BumpView(.5,tics:2); XZW3 A 2; Goto Ready; Ready: @@ -262,16 +270,24 @@ Class Ynykron : SWWMWeapon A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); A_OverlayAlpha(PSP_WEAPON+1,0.); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); A_StartSound("ynykron/ventopen",CHAN_WEAPON,CHANF_OVERLAP); + A_BumpFOV(.995); + A_QuakeEx(1.2,1.2,1.2,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); } XZWA ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); XZWA G 2 { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); A_StartSound("ynykron/ventclose",CHAN_WEAPON,CHANF_OVERLAP); + A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + } + XZWA H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZWA I 2 + { + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); } - XZWA HI 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); Goto Ready; ReadyVentSmoke: XZWB D 1 @@ -331,10 +347,19 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerReload(); } - XZW3 WXYZ 2; + XZW3 WXYZ 2 A_BumpView(.5,tics:2); XZW4 A 2; - XZW4 B 2 A_StopSound(CHAN_WEAPONEXTRA); - XZW4 CDEFGHIJKLMNO 2; + XZW4 B 2 + { + A_BumpView(-2.); + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StopSound(CHAN_WEAPONEXTRA); + } + XZW4 CDEF 2; + XZW4 GHIJ 2 A_BumpView(.5,tics:2); + XZW4 K 2 A_BumpView(2.); + XZW4 LMNO 2; XZW4 P 0 { invoker.inverted = true; @@ -349,9 +374,19 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerReload(); } - XZW5 UVWXY 2; - XZW5 Z 2 A_StopSound(CHAN_WEAPONEXTRA); - XZW6 ABCDEFGHIJKLM 2; + XZW5 UVWX 2 A_BumpView(.5,tics:2); + XZW5 Y 2; + XZW5 Z 2 + { + A_BumpView(-2.); + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StopSound(CHAN_WEAPONEXTRA); + } + XZW6 ABCD 2; + XZW6 EFGH 2 A_BumpView(.5,tics:2); + XZW6 I 2 A_BumpView(2.); + XZW6 JKLM 2; XZW6 N 0 { invoker.inverted = false; @@ -361,19 +396,36 @@ Class Ynykron : SWWMWeapon PutNormal: XZW4 PQRS 2; XZW4 T 2 A_StartSound("ynykron/magin",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 UVWXYZ 2; + XZW4 UVWX 2 A_BumpView(.5,tics:2); + XZW4 YZ 2 A_BumpView(.5,tics:2); XZW5 A 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 B 2 A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); - XZW5 CDEFGHIJK 2; + XZW5 B 2 + { + A_BumpView(4.); + A_BumpFOV(.98); + A_QuakeEx(2.,2.,2.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); + } + XZW5 C 2; + XZW5 DEFG 2 A_BumpView(-1,tics:2); + XZW5 HIJK 2; XZW5 L 4; Goto Ready; PutInverted: XZW6 NOPQ 2; XZW6 R 2 A_StartSound("ynykron/magin",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 STUVWX 2; + XZW6 STUVWX 2 A_BumpView(.5,tics:2); XZW6 Y 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 Z 2 A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); - XZW7 ABCDEFGHI 2; + XZW6 Z 2 + { + A_BumpView(4.); + A_BumpFOV(.98); + A_QuakeEx(2.,2.,2.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); + } + XZW7 A 2; + XZW7 BCDE 2 A_BumpView(-1,tics:2); + XZW7 FGHI 2; XZW7 J 4; XZW5 P 0; Goto Ready; @@ -391,7 +443,14 @@ Class Ynykron : SWWMWeapon A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); A_StartSound("ynykron/ventopen",CHAN_WEAPON,CHANF_OVERLAP); } - XZW7 RSTUV 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 R 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 S 2 + { + A_BumpFOV(.995); + A_QuakeEx(1.2,1.2,1.2,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + } + XZW7 TUV 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); Discharging: XZW7 W 2 { @@ -405,7 +464,13 @@ Class Ynykron : SWWMWeapon A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); A_StartSound("ynykron/ventclose",CHAN_WEAPON,CHANF_OVERLAP); } - XZW7 YZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 Y 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 Z 2 + { + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + } Goto Ready; DischargeSmoke: XZWA T 2 @@ -432,7 +497,9 @@ Class Ynykron : SWWMWeapon XZW2 A 2; XZW3 BC 2; XZW3 D 2 A_StartSound("ynykron/latch",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 EFGHI 2; + XZW3 EF 2; + XZW3 G 2 A_QuakeEx(1.,1.,1.,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + XZW3 HI 2; XZW2 A 0 { invoker.chargestate = CS_CHARGING; @@ -451,7 +518,13 @@ Class Ynykron : SWWMWeapon UnloadNormal: XZW2 A 2; XZW3 STU 2; - XZW3 V 2 A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 V 2 + { + A_BumpView(-2.); + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); + } XZW3 WXYZ 2; XZW4 A 2; XZW4 B 2 A_StopSound(CHAN_WEAPONEXTRA); @@ -502,7 +575,11 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/checkout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); } - XZW8 ABCDEFGHIJKLMNOPQRSTUVW 2; + XZW8 ABCDE 2 A_BumpView(.3,tics:2); + XZW8 FGHIJKL 2 A_BumpView(-.8,tics:2); + XZW8 MNOPQR 2 A_BumpView(-.4,tics:2); + XZW8 STU 2 A_BumpView(.5,tics:2); + XZW8 VW 2; XZW8 X 4; // smoothen more Goto Ready; User1: @@ -513,19 +590,26 @@ Class Ynykron : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW8 YZ 2; - XZW9 AB 2; - XZW9 C 1 A_Parry(9); - XZW9 DE 1; + XZW8 YZ 2 A_BumpAngle(-1.,2); + XZW9 AB 2 A_BumpAngle(-.5,2); + XZW9 C 1 + { + A_BumpFOV(.93); + A_QuakeEx(2.,2.,2.,10,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.8); + A_Parry(9); + } + XZW9 DE 1 A_BumpAngle(10.); XZW9 F 1 A_Melee(100,"demolitionist/whitl",1.5,1.6,1.7,MELEE_Wider); - XZW9 GHIJK 1; - XZW9 LMNO 2; + XZW9 GHIJK 1 A_BumpAngle(2.); + XZW9 LMNO 2 A_BumpAngle(.5,2); XZW9 P 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW9 QRSTUVWXYZ 2; Goto Ready; Deselect: XZW2 A 2 A_StartSound("ynykron/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCDEFGHIJK 2; + XZW2 BCDE 2 A_BumpView(.1,tics:2); + XZW2 FGH 2 A_BumpView(.2,tics:2); + XZW2 IJK 2 A_BumpView(.3,tics:2); XZW2 L -1 { A_StopSound(CHAN_WEAPONEXTRA); diff --git a/zscript/weapons/swwm_deepdarkimpact.zsc b/zscript/weapons/swwm_deepdarkimpact.zsc index 003f18d68..6177e339e 100644 --- a/zscript/weapons/swwm_deepdarkimpact.zsc +++ b/zscript/weapons/swwm_deepdarkimpact.zsc @@ -115,6 +115,8 @@ Class DeepImpact : SWWMWeapon { let weap = Weapon(invoker); if ( !weap ) return; + A_BumpFOV(.995); + A_BumpView(-.2); A_QuakeEx(.8,.8,.8,2,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.05); A_StartSound("deepimpact/fire",CHAN_WEAPON,CHANF_OVERLAP); A_AlertMonsters(swwm_uncapalert?0:300); @@ -259,6 +261,8 @@ Class DeepImpact : SWWMWeapon let weap = Weapon(invoker); if ( !weap ) return; A_StopSound(CHAN_WEAPONEXTRA); + A_BumpFOV(.85); + A_BumpView(-5); A_QuakeEx(6.,6.,6.,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.7); A_StartSound("deepimpact/altfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.5); A_AlertMonsters(swwm_uncapalert?0:8000); @@ -437,17 +441,26 @@ Class DeepImpact : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW4 H 2 A_StartSound("demolitionist/reloadbeg",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 H 2 + { + A_BumpView(.5,tics:4); + A_StartSound("demolitionist/reloadbeg",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 I 2; - XZW4 J 1 A_Parry(9); - XZW4 KLM 1; + XZW4 J 1 + { + A_BumpFOV(.98); + A_QuakeEx(.5,.5,.5,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_Parry(9); + } + XZW4 KLM 1 A_BumpView(-1); XZW4 N 4 A_Melee(60,"demolitionist/whits"); XZW4 O 3 { invoker.PlayUpSound(self); } XZW4 PQRSTUV 2; Goto Ready; Deselect: XZW2 A 2 A_StartSound("deepimpact/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCDEFGHI 2; + XZW2 BCDEFGH 2; XZW2 I -1 A_FullLower(); Stop; } diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index e96fe338b..2fa885002 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -217,8 +217,9 @@ Class Spreadgun : SWWMWeapon A_SWWMFlash("FlashGold"); A_StartSound("spreadgun/goldfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); A_AlertMonsters(swwm_uncapalert?0:2500); - A_QuakeEx(6.,6.,6.,9,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.2); + A_QuakeEx(6.,6.,6.,12,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.2); A_BumpFOV(.76); + A_BumpView(-4); SWWMHandler.DoFlash(self,Color(96,255,224,16),5); } else @@ -226,8 +227,9 @@ Class Spreadgun : SWWMWeapon A_SWWMFlash("FlashRed"); A_StartSound("spreadgun/redfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); A_AlertMonsters(swwm_uncapalert?0:800); - A_QuakeEx(3.,3.,3.,9,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.6); - A_BumpFOV(.88); + A_QuakeEx(2.5,2.5,2.5,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.6); + A_BumpFOV(.93); + A_BumpView(-1); SWWMHandler.DoFlash(self,Color(40,255,192,64),5); } A_PlayerFire(); @@ -470,12 +472,12 @@ Class Spreadgun : SWWMWeapon A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); return A_JumpIf(invoker.fired,"DeselectFired"); } - XZW2 BCDEFGHI 1; + XZW2 BCDEFGH 1; XZW2 I -1 A_FullLower(); Stop; DeselectFired: XZW2 Z 1; - XZW3 ABCDEFGH 1; + XZW3 ABCDEFG 1; XZW3 H -1 A_FullLower(); Stop; Select: diff --git a/zscript/weapons/swwm_sparkyboi.zsc b/zscript/weapons/swwm_sparkyboi.zsc index 4ce9eaadc..03efe52c2 100644 --- a/zscript/weapons/swwm_sparkyboi.zsc +++ b/zscript/weapons/swwm_sparkyboi.zsc @@ -51,6 +51,7 @@ Class Sparkster : SWWMWeapon A_StartSound("biospark/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.7); A_QuakeEx(2.,2.,2.,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); A_BumpFOV(.96); + A_BumpView(-.5); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,192,255,96),3); A_AlertMonsters(swwm_uncapalert?0:5000); @@ -70,6 +71,7 @@ Class Sparkster : SWWMWeapon A_StartSound("biospark/altfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.8); A_QuakeEx(3.,3.,3.,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); A_BumpFOV(.95); + A_BumpView(-.6); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,192,255,96),3); A_AlertMonsters(swwm_uncapalert?0:4000); @@ -89,6 +91,7 @@ Class Sparkster : SWWMWeapon A_StartSound("biospark/thirdfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:1.5); A_QuakeEx(5.,5.,5.,10,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.6); A_BumpFOV(.94); + A_BumpView(-.8); A_AlertMonsters(swwm_uncapalert?0:1200); A_PlayerFire(); SWWMUtility.DoKnockback(self,-x,2500.); @@ -249,7 +252,7 @@ Class Sparkster : SWWMWeapon A_StartSound("biospark/deselect",CHAN_WEAPON,CHANF_OVERLAP); return A_JumpIf(invoker.doublestacc,"DoubleDeselect"); } - XZW2 BCDEFG 2; + XZW2 BCDEF 2; XZW2 G -1 { A_StopSound(CHAN_WEAPONEXTRA); @@ -258,7 +261,7 @@ Class Sparkster : SWWMWeapon Stop; DoubleDeselect: XZW5 Z 2; - XZW6 STUVWX 2; + XZW6 STUVW 2; XZW6 X -1 { A_StopSound(CHAN_WEAPONEXTRA); @@ -432,6 +435,8 @@ Class Sparkster : SWWMWeapon { invoker.clipcount = 0; invoker.nomag = true; + A_BumpView(1); + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); A_StartSound("biospark/magout",CHAN_WEAPON,CHANF_OVERLAP); A_StopSound(CHAN_WEAPONEXTRA); } @@ -450,6 +455,8 @@ Class Sparkster : SWWMWeapon invoker.clipcount = 0; invoker.nomag = true; invoker.doublestacc = false; + A_BumpView(1); + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); A_StartSound("biospark/magout",CHAN_WEAPON,CHANF_OVERLAP); A_StopSound(CHAN_WEAPONEXTRA); A_StopSound(CHAN_WEAPONEXTRA2); @@ -466,6 +473,8 @@ Class Sparkster : SWWMWeapon invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount = invoker.default.clipcount; invoker.nomag = false; + A_BumpView(-1.5); + A_QuakeEx(.6,.6,.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); A_StartSound("biospark/magin",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("biospark/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.4,4.); } @@ -486,6 +495,8 @@ Class Sparkster : SWWMWeapon invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount += invoker.default.clipcount; invoker.doublestacc = true; + A_BumpView(-2); + A_QuakeEx(.75,.75,.75,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.25); A_StartSound("biospark/magin",CHAN_WEAPON,CHANF_OVERLAP); A_SoundVolume(CHAN_WEAPONEXTRA,.6); A_StartSound("biospark/idle2",CHAN_WEAPONEXTRA2,CHANF_LOOP,.2,4.); @@ -507,6 +518,8 @@ Class Sparkster : SWWMWeapon invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount += invoker.default.clipcount; invoker.doublestacc = true; + A_BumpView(-.8); + A_QuakeEx(.6,.6,.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); A_StartSound("biospark/magin",CHAN_WEAPON,CHANF_OVERLAP); A_SoundVolume(CHAN_WEAPONEXTRA,.6); A_StartSound("biospark/idle2",CHAN_WEAPONEXTRA2,CHANF_LOOP,.2,4.); @@ -546,9 +559,14 @@ Class Sparkster : SWWMWeapon A_PlayerMelee(); return A_JumpIf(invoker.doublestacc,"DoubleUser1"); } - XZW4 EFG 2; - XZW4 H 1 A_Parry(9); - XZW4 IJ 1; + XZW4 EFG 2 A_BumpView(1,tics:2); + XZW4 H 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_Parry(9); + } + XZW4 IJ 1 A_BumpView(-4); XZW4 K 2 A_Melee(60,"demolitionist/whitm",1.,1.1,1.1); XZW4 LMNOPQ 2; XZW4 R 2 A_StartSound("biospark/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -556,9 +574,14 @@ Class Sparkster : SWWMWeapon Goto Ready; DoubleUser1: XZW5 Z 2; - XZW7 RST 2; - XZW7 U 1 A_Parry(9); - XZW7 VW 1; + XZW7 RST 2 A_BumpView(1,tics:2); + XZW7 U 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_Parry(9); + } + XZW7 VW 1 A_BumpView(-4); XZW7 X 2 A_Melee(60,"demolitionist/whitm",1.,1.1); XZW7 YZ 2; XZW8 ABCD 2; diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index c246dd55a..b0e6d1a9f 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -80,6 +80,7 @@ Class ExplodiumGun : SWWMWeapon A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(4.5,4.5,4.5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); A_BumpFOV(.96); + A_BumpView(-.2); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,255,224,64),3); A_AlertMonsters(swwm_uncapalert?0:5000); @@ -346,7 +347,8 @@ Class ExplodiumGun : SWWMWeapon A_FullRaise(); return A_JumpIf(invoker.firstselect,"FirstSelect"); } - XZW2 CDEFGH 2; + XZW2 CDE 2 A_BumpView(-.1,tics:2); + XZW2 FGH 2 A_BumpView(.05,tics:2); Goto Ready; FirstSelect: XZW2 B 1 A_JumpIf(level.maptime>8,1); @@ -356,7 +358,8 @@ Class ExplodiumGun : SWWMWeapon invoker.firstselect = false; invoker.PlayUpSound(self); } - XZW2 CDEFGH 2; + XZW2 CDE 2 A_BumpView(-.1,tics:2); + XZW2 FGH 2 A_BumpView(.05,tics:2); XZW2 A 2; Goto Slide; Ready: @@ -405,13 +408,23 @@ Class ExplodiumGun : SWWMWeapon XZWB E 1 { invoker.clipcount = 0; } XZWB F 1; XZWB G 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWB HIJK 1; + XZWB H 1 A_BumpView(.3); + XZWB IJK 1; XZWB L 1 A_DropMag(); XZWB MNOPQR 1; - XZWB S 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZWB S 1 + { + A_BumpView(-.1); + A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + } XZWB TUVWXYZ 1; XZWC ABCD 1; - XZWC E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZWC E 1 + { + A_BumpView(-.4); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZWC FGHI 1; XZWC J 1 { @@ -454,7 +467,9 @@ Class ExplodiumGun : SWWMWeapon A_StartSound("explodium/throwmag",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW6 EFGHIJKLMNOPRS 1; + XZW6 EFGHI 1 A_BumpView(.25); + XZW6 JKLMNO 1; + XZW6 PRS 1 A_BumpView(-1.5); XZW6 T 1 A_ThrowMag(); XZW6 UV 2; XZW6 W 2 @@ -478,32 +493,43 @@ Class ExplodiumGun : SWWMWeapon XZW3 B 1 { invoker.clipcount = 0; } XZW3 C 1; XZW3 D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 EFGH 1; + XZW3 E 1 A_BumpView(.3); + XZW3 FGH 1; XZW3 I 1 A_DropMag(); Goto ReloadEnd; ReloadEmpty: XZW2 A 1; XZW3 JKLMNOPQRS 1; XZW3 T 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 UVWX 1; + XZW3 U 1 A_BumpView(.3); + XZW3 VWX 1; XZW3 Y 1 A_DropMag(); Goto ReloadEnd; ReloadEnd: XZW3 Z 1; XZW4 ABCDE 1; - XZW4 F 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 F 1 + { + A_BumpView(-.1); + A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 GHIJKLMNOPQ 1; - XZW4 R 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZW4 R 1 + { + A_BumpView(-.4); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZW4 STUV 1; XZW2 A 1 A_JumpIf(!invoker.chambered,"Slide"); Goto Ready; Slide: XZW2 A 1; - XZW4 WXY 1; + XZW4 WXY 1 A_BumpView(-.1); XZW5 A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW5 BC 1; XZW5 D 1 { invoker.chambered = true; invoker.clipcount--; } - XZW5 EFG 1; + XZW5 EFG 1 A_BumpView(.1); XZW5 H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZW5 IJKLM 1; Goto Ready; @@ -517,10 +543,14 @@ Class ExplodiumGun : SWWMWeapon CheckBullet: XZW2 A 1; XZW7 A 1 A_Overlay(PSP_WEAPON+1,"CheckBulletCasing"); - XZW7 BCDE 1; + XZW7 BCDE 1 A_BumpView(-.2); XZW7 F 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW7 GHIJKLMNOP 1; - XZW7 Q 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); + XZW7 Q 1 + { + A_BumpView(.6); + A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); + } XZW7 RS 1; Goto Ready; CheckBulletCasing: @@ -529,15 +559,16 @@ Class ExplodiumGun : SWWMWeapon Stop; User1: XZW2 A 1; - XZW7 TU 1; + XZW7 TU 1 A_BumpView(.1); User1Hold: XZW7 V 1 { + A_BumpAngle(1.); A_PlayerMelee(true); A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); A_Parry(9); } - XZW7 WX 1; + XZW7 WX 1 A_BumpAngle(-.5); XZW7 Y 1 A_Melee(); XZW7 Z 2; XZW8 ABCDE 2; @@ -546,16 +577,23 @@ Class ExplodiumGun : SWWMWeapon Goto Select; Zoom1: XZW2 A 2 A_StartSound("explodium/checkout",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 GHIJKLMNOPQRSTUVWXYZ 2; + XZW8 GHIJ 2 A_BumpView(-.2); + XZW8 KLMNO 2 A_BumpView(-.3); + XZW8 PQR 2 A_BumpView(.5); + XZW8 STUV 2 A_BumpView(.2); + XZW8 WXYZ 2; Goto Ready; Zoom2: XZW2 A 1 A_StartSound("explodium/speen",CHAN_WEAPON,CHANF_OVERLAP); - XZW9 ABCDEFGHIJKLMNOPQRSTUVW 1; + XZW9 ABCD 1 A_BumpView(.2); + XZW9 EFGHIJ 1 A_BumpView(-.2); + XZW9 KLMNOP 1 A_BumpView(-.1); + XZW9 QRST 1 A_BumpView(.3); + XZW9 UVW 1; Goto Ready; Deselect: XZW2 A 2 A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZWA TUVW 2; - XZW2 B 2; + XZWA TUVW 2 A_BumpView(.1,tics:2); XZW2 B -1 A_FullLower(); Stop; Flash: @@ -621,6 +659,7 @@ Class DualExplodiumGun : SWWMWeapon A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP); A_QuakeEx(4.5,4.5,4.5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); A_BumpFOV(.96); + A_BumpView(-.2); if ( side == 1 ) A_SWWMFlash("Flash"); else if ( side == -1 ) @@ -776,12 +815,20 @@ Class DualExplodiumGun : SWWMWeapon A_FullRaise(); ExplodiumGun(invoker.SisterWeapon).firstselect = false; } - XZW2 C 2; - XZW2 D 2 { player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftSelect")); } - XZW2 EFGHAA 2; + XZW2 C 2 A_BumpView(-.1,tics:2); + XZW2 D 2 + { + A_BumpView(-.1,tics:2); + player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftSelect")); + } + XZW2 E 2 A_BumpView(-.1,tics:2); + XZW2 FGH 2 A_BumpView(.05,tics:2); + XZW2 AA 2; Goto Ready; LeftSelect: - XZWB BCDEFGH 2; + XZWB B 2; + XZWB CDE 2 A_BumpView(-.1,tics:2); + XZWB FGH 2 A_BumpView(.05,tics:2); Goto LeftReady; Ready: XZW2 A 1 @@ -872,18 +919,25 @@ Class DualExplodiumGun : SWWMWeapon A_PlayerReload(); A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); } - XZWI WXYZ 2; - XZWJ AB 2; + XZWI WXY 2 A_BumpView(.2,tics:2); + XZWI Z 2 A_BumpView(.1,tics:2); + XZWJ AB 2 A_BumpView(.1,tics:2); XZWJ CD 1; XZWJ E 1 { ExplodiumGun(invoker.SisterWeapon).clipcount = 0; } XZWJ F 1; XZWJ G 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWJ HIJ 1; + XZWJ H 1 A_BumpView(.2); + XZWJ IJ 1; XZWJ K 0 A_DropMag(); XZWJ LMN 3; XZWJ O 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZWJ PQR 2; - XZWJ S 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; } + XZWJ S 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; + } XZWJ TUVW 1; XZWJ X 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); XZWJ Y 2 @@ -938,17 +992,24 @@ Class DualExplodiumGun : SWWMWeapon A_PlayerReload(); A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); } - XZWL ABCDEF 2; + XZWL ABC 2 A_BumpView(.2,tics:2); + XZWL DEF 2 A_BumpView(.1,tics:2); XZWL GH 1; XZWL I 1 { invoker.clipcount = 0; } XZWL J 1; XZWL K 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWL LMN 1; + XZWL L 1 A_BumpView(.2); + XZWL MN 1; XZWL O 0 A_DropMag(); XZWL PQR 3; XZWL S 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZWL TUV 2; - XZWL W 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZWL W 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZWL XYZ 1; XZWM A 1; XZWM B 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); @@ -982,22 +1043,22 @@ Class DualExplodiumGun : SWWMWeapon Stop; Lower: XZW2 A 2; - XZW7 TUV 2; + XZW7 TUV 2 A_BumpView(.1,tics:2); XZW2 B -1; Stop; LeftLower: XZWB A 2; - XZWG TUV 2; + XZWG TUV 2 A_BumpView(.1,tics:2); XZWB B -1; Stop; Raise: XZW2 B 2; - XZW7 VUT 2; + XZW7 VUT 2 A_BumpView(-.1,tics:2); XZW2 A 1; Goto Ready; LeftRaise: XZWB B 2; - XZWG VUT 2; + XZWG VUT 2 A_BumpView(-.1,tics:2); XZWB A 1; Goto LeftReady; Reload: @@ -1008,36 +1069,46 @@ Class DualExplodiumGun : SWWMWeapon if ( ExplodiumGun(invoker.SisterWeapon).clipcount <= 0 ) return ResolveState("ReloadEmpty"); return ResolveState(null); } - XZW2 TUVWXY 2; + XZW2 TUV 2 A_BumpView(.2,tics:2); + XZW2 WXY 2 A_BumpView(.1,tics:2); XZW2 Z 1; XZW3 A 1; XZW3 B 1 { ExplodiumGun(invoker.SisterWeapon).clipcount = 0; } XZW3 C 1; XZW3 D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 EFG 1; + XZW3 E 1 A_BumpView(.2); + XZW3 FG 1; XZW3 H 0 A_DropMag(); Goto ReloadEnd; ReloadEmpty: XZW2 A 1; - XZW3 IJKLMN 2; + XZW3 IJK 2 A_BumpView(.2,tics:2); + XZW3 LMN 2 A_BumpView(.1,tics:2); XZW3 OPQR 1; XZW3 S 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 TUV 1; + XZW3 T 1 A_BumpView(.2); + XZW3 UV 1; XZW3 W 0 A_DropMag(); Goto ReloadEnd; ReloadEnd: XZW3 XYZ 3; XZW4 A 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZW4 BCD 2; - XZW4 E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; } + XZW4 E 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; + } XZW4 FGHI 1; XZW4 J 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 KLMNOP 2; + XZW4 KLM 2 A_BumpView(-.2,tics:2); + XZW4 NOP 2 A_BumpView(.1,tics:2); Goto Ready; Slide: XZW2 A 9 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower")); } XZW2 A 1; - XZW4 WXY 1; + XZW4 WXY 1 A_BumpView(-.1); XZW5 A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW5 BC 1; XZW5 D 1 @@ -1045,7 +1116,7 @@ Class DualExplodiumGun : SWWMWeapon ExplodiumGun(invoker.SisterWeapon).chambered = true; ExplodiumGun(invoker.SisterWeapon).clipcount--; } - XZW5 EFG 1; + XZW5 EFG 1 A_BumpView(.1); XZW5 H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZW5 IJKLM 1; XZW2 A 0 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise")); } @@ -1065,36 +1136,46 @@ Class DualExplodiumGun : SWWMWeapon if ( invoker.clipcount <= 0 ) return ResolveState("LeftReloadEmpty"); return ResolveState(null); } - XZWB TUVWXY 2; + XZWB TUV 2 A_BumpView(.2,tics:2); + XZWB WXY 2 A_BumpView(.1,tics:2); XZWB Z 1; XZWC A 1; XZWC B 1 { invoker.clipcount = 0; } XZWC C 1; XZWC D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWC EFG 1; + XZWC E 1 A_BumpView(.2); + XZWC FG 1; XZWC H 0 A_DropMag(); Goto LeftReloadEnd; LeftReloadEmpty: XZWB A 1; - XZWC IJKLMN 2; + XZWC IJK 2 A_BumpView(.2,tics:2); + XZWC LMN 2 A_BumpView(.1,tics:2); XZWC OPQR 1; XZWC S 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWC TUV 1; + XZWC T 1 A_BumpView(.2); + XZWC UV 1; XZWC W 0 A_DropMag(); Goto LeftReloadEnd; LeftReloadEnd: XZWC XYZ 3; XZWD A 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZWD BCD 2; - XZWD E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZWD E 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZWD FGHI 1; XZWD J 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); - XZWD KLMNOP 2; + XZWD KLM 2 A_BumpView(-.2,tics:2); + XZWD NOP 2 A_BumpView(.1,tics:2); Goto LeftReady; LeftSlide: XZWB A 9 { player.SetPSPrite(PSP_WEAPON,ResolveState("Lower")); } XZWB A 1; - XZWD WXY 1; + XZWD WXY 1 A_BumpView(-.1); XZWE A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZWE BC 1; XZWE D 1 @@ -1102,7 +1183,7 @@ Class DualExplodiumGun : SWWMWeapon invoker.chambered = true; invoker.clipcount--; } - XZWE EFG 1; + XZWE EFG 1 A_BumpView(.1); XZWE H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZWE IJKLM 1; XZWB A 0 { player.SetPSPrite(PSP_WEAPON,ResolveState("Raise")); } @@ -1113,13 +1194,25 @@ Class DualExplodiumGun : SWWMWeapon A_PlayerCheckGun(); A_StartSound("explodium/speen",CHAN_WEAPON,CHANF_OVERLAP); } - XZW9 ABCDEFG 1; - XZW9 H 1 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftZoom")); } - XZW9 IJKLMNOPQRSTUVW 1; + XZW9 ABCD 1 A_BumpView(.2); + XZW9 EFG 1 A_BumpView(-.2); + XZW9 H 1 + { + A_BumpView(-.2); + player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftZoom")); + } + XZW9 IJ 1 A_BumpView(-.2); + XZW9 KLMNOP 1 A_BumpView(-.1); + XZW9 QRST 1 A_BumpView(.3); + XZW9 UVW 1; Goto Ready; LeftZoom: XZWB A 1; - XZWH ABCDEFGHIJKLMNOPQRSTUVW 1; + XZWH ABCD 1 A_BumpView(.2); + XZWH EFGHIJ 1 A_BumpView(-.2); + XZWH KLMNOP 1 A_BumpView(-.1); + XZWH QRST 1 A_BumpView(.3); + XZWH UVW 1; Goto LeftReady; User1: XZW2 A 1 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftUser1")); } @@ -1145,16 +1238,19 @@ Class DualExplodiumGun : SWWMWeapon Stop; Deselect: XZW2 A 2 A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZWA T 2; - XZWA U 2 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftDeselect")); } - XZWA VW 2; - XZW2 B 6; + XZWA T 2 A_BumpView(.1,tics:2); + XZWA U 2 + { + A_BumpView(.1,tics:2); + player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftDeselect")); + } + XZWA VW 2 A_BumpView(.1,tics:2); XZW2 B -1 A_FullLower(); Stop; LeftDeselect: XZWB A 2; - XZWA PQRS 2; - XZWB B 2; + XZWA PQRS 2 A_BumpView(.1,tics:2); + XZWB B 0; Stop; Flash: XZWZ A 2 Bright diff --git a/zscript/weapons/swwm_tastytreat.zsc b/zscript/weapons/swwm_tastytreat.zsc index 94a05930b..5dc17c532 100644 --- a/zscript/weapons/swwm_tastytreat.zsc +++ b/zscript/weapons/swwm_tastytreat.zsc @@ -124,8 +124,9 @@ Class CandyGun : SWWMWeapon invoker.chambered = invoker.clipcount; 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|QF_3D,rollIntensity:2.); - A_BumpFOV(.94); + A_QuakeEx(6.3,6.3,6.3,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:2.); + A_BumpFOV(.88); + A_BumpView(-.35); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,224,64,255),5); A_AlertMonsters(swwm_uncapalert?0:9000); @@ -666,13 +667,11 @@ Class CandyGun : SWWMWeapon return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,"DeselectLast"); } XZWA TUVW 2; - XZW2 B 2; XZW2 B -1 A_FullLower(); Stop; DeselectLast: XZW9 X 2; XZWE QRST 2; - XZWE U 2; XZWE U -1 A_FullLower(); Stop; Flash: diff --git a/zscript/weapons/swwm_thiccboolet.zsc b/zscript/weapons/swwm_thiccboolet.zsc index 6dc3090d6..520e9d99f 100644 --- a/zscript/weapons/swwm_thiccboolet.zsc +++ b/zscript/weapons/swwm_thiccboolet.zsc @@ -473,9 +473,10 @@ Class SilverBullet : SWWMWeapon A_SWWMFlash(); A_StartSound("silverbullet/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.3); A_AlertMonsters(swwm_uncapalert?0:16000); - A_QuakeEx(8.,8.,8.,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:2.); + A_QuakeEx(8.5,8.5,8.5,15,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:2.2); double basezoom = invoker.zoomed?clamp(invoker.zoomlevel,1.,16.):1.; - A_BumpFOV(.76); + A_BumpView(invoker.proneme?-2:-8); + A_BumpFOV(.64); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(110,255,192,80),8); let [x, y, z] = SWWMUtility.GetPlayerAxes(self); @@ -826,6 +827,8 @@ Class SilverBullet : SWWMWeapon TNT1 A 12 A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); TNT1 A 10 { + A_QuakeEx(.5,.5,.5,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_BumpFOV(.99); A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP); if ( invoker.chambered ) { @@ -839,7 +842,12 @@ Class SilverBullet : SWWMWeapon invoker.chambered = (invoker.clipcount>0); invoker.clipcount = max(0,invoker.clipcount-1); } - TNT1 A 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + TNT1 A 2 + { + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_BumpFOV(.98); + A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + } TNT1 A 20 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); Goto ZoomReady; DoCock: @@ -848,6 +856,8 @@ Class SilverBullet : SWWMWeapon XZW3 AB 2; XZW3 C 2 { + A_QuakeEx(.5,.5,.5,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_BumpFOV(.99); A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP); if ( invoker.chambered ) { @@ -862,7 +872,12 @@ Class SilverBullet : SWWMWeapon invoker.clipcount = max(0,invoker.clipcount-1); } XZW3 DEFG 2; - XZW3 H 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 H 2 + { + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_BumpFOV(.98); + A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + } XZW3 I 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW3 JKLMNOPQR 2; Goto Ready; @@ -961,7 +976,13 @@ Class SilverBullet : SWWMWeapon A_ChangeModel("",1,"","",4,"models",String.Format("SilverbulletAmmo%s.png",(invoker.clipcount<=0)?"_Empty":""),CMDL_USESURFACESKIN,-1); } XZW4 DEFGHI 2; - XZW4 J 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 J 2 + { + A_BumpView(-2); + A_BumpFOV(.92); + A_QuakeEx(1.8,1.8,1.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.8); + A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 KLMN 2; Goto Load; Load: @@ -974,6 +995,9 @@ Class SilverBullet : SWWMWeapon XZW4 S 2 { A_LoadMag(); + A_BumpView(-12); + A_BumpFOV(.89); + A_QuakeEx(2.6,2.6,2.6,12,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.2); A_StartSound("silverbullet/magin",CHAN_WEAPON,CHANF_OVERLAP); } XZW4 T 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -1021,12 +1045,17 @@ Class SilverBullet : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW5 XYZ 3; - XZW6 A 1 A_Parry(9); - XZW6 BC 1; + XZW5 XYZ 3 A_BumpAngle(-1,3); + XZW6 A 1 + { + A_BumpFOV(.94); + A_QuakeEx(1.6,1.6,1.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_Parry(9); + } + XZW6 BC 1 A_BumpAngle(6); XZW6 D 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.,MELEE_Wider); - XZW6 EF 1; - XZW6 GHI 2; + XZW6 EF 1 A_BumpAngle(4); + XZW6 GHI 2 A_BumpAngle(1,2); XZW6 J 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW6 KLMNO 3; XZW6 PQR 2;