From 0156af84318cc73307ed4fcf1dce6d4f27aec109 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Thu, 31 Dec 2020 13:47:29 +0100 Subject: [PATCH] Rebalances across the board once again. Fix the incorrect SPAC_PCross behaviour in other spots. Redo swap weapon implementation. Should now theoretically allow for not just two, but many more swap weapons per slot. Minor fixups. --- language.version | 2 +- zscript/dlc1/swwm_blackfire.zsc | 1 - zscript/dlc1/swwm_hammertime.zsc | 1 - zscript/dlc1/swwm_heavymahsheengun.zsc | 1 - zscript/dlc1/swwm_hugeassrailgun.zsc | 1 - zscript/dlc1/swwm_notashotgun.zsc | 1 - zscript/dlc1/swwm_rebolber.zsc | 1 - zscript/dlc1/swwm_supermarioworld.zsc | 1 - zscript/dlc1/swwm_thiccbolts.zsc | 1 - zscript/dlc1/swwm_veryveryfrightening.zsc | 1 - zscript/swwm_ammo.zsc | 5 +++ zscript/swwm_blazeit.zsc | 33 ++++++++------ zscript/swwm_cbt.zsc | 8 ++-- zscript/swwm_danmaku.zsc | 5 +-- zscript/swwm_deathlydeathcannon.zsc | 16 +++---- zscript/swwm_deepdarkimpact.zsc | 1 + zscript/swwm_handler.zsc | 25 +++++------ zscript/swwm_inventory.zsc | 53 ++++++++++++++--------- zscript/swwm_jackhammer.zsc | 35 +++++++-------- zscript/swwm_shot.zsc | 23 +++++----- zscript/swwm_sparkyboi.zsc | 7 +-- zscript/swwm_splode.zsc | 10 +++-- zscript/swwm_tastytreat.zsc | 4 +- zscript/swwm_thiccboolet.zsc | 7 +-- zscript/swwm_thinkers.zsc | 13 ++++-- 25 files changed, 125 insertions(+), 131 deletions(-) diff --git a/language.version b/language.version index 5c4d70dcc..112859e53 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r720 \cu(Thu 31 Dec 08:27:55 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r722 \cu(Thu 31 Dec 13:58:11 CET 2020)"; diff --git a/zscript/dlc1/swwm_blackfire.zsc b/zscript/dlc1/swwm_blackfire.zsc index a10f01590..a5259e68c 100644 --- a/zscript/dlc1/swwm_blackfire.zsc +++ b/zscript/dlc1/swwm_blackfire.zsc @@ -20,7 +20,6 @@ Class BlackfireIgniter : SWWMWeapon Weapon.SelectionOrder 550; Weapon.AmmoType1 "DarkCanister"; Weapon.AmmoGive1 1; - SWWMWeapon.SwapWeapon "Sparkster"; SWWMWeapon.DropAmmoType "DarkCanister"; BlackfireIgniter.ClipCount 100; Stamina 220000; diff --git a/zscript/dlc1/swwm_hammertime.zsc b/zscript/dlc1/swwm_hammertime.zsc index 158293f5b..2fb7769f5 100644 --- a/zscript/dlc1/swwm_hammertime.zsc +++ b/zscript/dlc1/swwm_hammertime.zsc @@ -13,7 +13,6 @@ Class ItamexHammer : SWWMWeapon Weapon.SlotPriority 3.; Weapon.SelectionOrder 1200; Stamina 9000; - SWWMWeapon.SwapWeapon "PusherWeapon"; +WEAPON.MELEEWEAPON; } States diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc index cc600eeca..ddcddfca1 100644 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun.zsc @@ -14,7 +14,6 @@ Class HeavyMahSheenGun : SWWMWeapon Weapon.SelectionOrder 100; Weapon.AmmoType1 "SheenAmmo"; Weapon.AmmoGive1 200; - SWWMWeapon.SwapWeapon "Eviscerator"; SWWMWeapon.DropAmmoType "SheenAmmo"; Stamina 100000; +SWWMWEAPON.NOFIRSTGIVE; diff --git a/zscript/dlc1/swwm_hugeassrailgun.zsc b/zscript/dlc1/swwm_hugeassrailgun.zsc index 06e900623..69cbaad43 100644 --- a/zscript/dlc1/swwm_hugeassrailgun.zsc +++ b/zscript/dlc1/swwm_hugeassrailgun.zsc @@ -22,7 +22,6 @@ Class GrandLance : SWWMWeapon Weapon.AmmoGive1 1; Weapon.AmmoType2 "RayBattery"; Weapon.AmmoGive2 0; - SWWMWeapon.SwapWeapon "Ynykron"; SWWMWeapon.DropAmmoType "GrandAmmo"; GrandLance.ClipCount 5; GrandLance.ClipCount2 500; diff --git a/zscript/dlc1/swwm_notashotgun.zsc b/zscript/dlc1/swwm_notashotgun.zsc index f64c7c203..1d8992a02 100644 --- a/zscript/dlc1/swwm_notashotgun.zsc +++ b/zscript/dlc1/swwm_notashotgun.zsc @@ -19,7 +19,6 @@ Class Quadravol : SWWMWeapon Weapon.SelectionOrder 650; Weapon.AmmoType1 "QuadAmmo"; Weapon.AmmoGive1 1; - SWWMWeapon.SwapWeapon "Hellblazer"; SWWMWeapon.DropAmmoType "QuadAmmo"; Quadravol.ClipCount 4; Stamina 80000; diff --git a/zscript/dlc1/swwm_rebolber.zsc b/zscript/dlc1/swwm_rebolber.zsc index 1a8e367f3..cd2f7c4cd 100644 --- a/zscript/dlc1/swwm_rebolber.zsc +++ b/zscript/dlc1/swwm_rebolber.zsc @@ -18,7 +18,6 @@ Class PuntzerBeta : SWWMWeapon Weapon.SelectionOrder 450; Weapon.AmmoType1 "SMW05Ammo"; Weapon.AmmoGive1 6; - SWWMWeapon.SwapWeapon "Spreadgun"; SWWMWeapon.DropAmmoType "SMW05Ammo"; Stamina 10000; +SWWMWEAPON.NOFIRSTGIVE; diff --git a/zscript/dlc1/swwm_supermarioworld.zsc b/zscript/dlc1/swwm_supermarioworld.zsc index 6655c65d4..7bc68c2ff 100644 --- a/zscript/dlc1/swwm_supermarioworld.zsc +++ b/zscript/dlc1/swwm_supermarioworld.zsc @@ -20,7 +20,6 @@ Class PuntzerGamma : SWWMWeapon PuntzerGamma.ClipCount 30; Weapon.AmmoType1 "SMW05Ammo"; Weapon.AmmoGive1 30; - SWWMWeapon.SwapWeapon "Wallbuster"; SWWMWeapon.DropAmmoType "SMW05Ammo"; Stamina 30000; +SWWMWEAPON.NOFIRSTGIVE; diff --git a/zscript/dlc1/swwm_thiccbolts.zsc b/zscript/dlc1/swwm_thiccbolts.zsc index e3522865d..0475090c1 100644 --- a/zscript/dlc1/swwm_thiccbolts.zsc +++ b/zscript/dlc1/swwm_thiccbolts.zsc @@ -22,7 +22,6 @@ Class RayKhom : SWWMWeapon Weapon.AmmoGive1 1; Weapon.AmmoType2 "RayBattery"; Weapon.AmmoGive2 0; - SWWMWeapon.SwapWeapon "CandyGun"; SWWMWeapon.DropAmmoType "RayAmmo"; RayKhom.ClipCount 20; RayKhom.ClipCount2 500; diff --git a/zscript/dlc1/swwm_veryveryfrightening.zsc b/zscript/dlc1/swwm_veryveryfrightening.zsc index 2491b2247..29e4a1976 100644 --- a/zscript/dlc1/swwm_veryveryfrightening.zsc +++ b/zscript/dlc1/swwm_veryveryfrightening.zsc @@ -20,7 +20,6 @@ Class EMPCarbine : SWWMWeapon Weapon.SelectionOrder 850; Weapon.AmmoType1 "EMPCore"; Weapon.AmmoGive1 1; - SWWMWeapon.SwapWeapon "SilverBullet"; SWWMWeapon.DropAmmoType "EMPCore"; EMPCarbine.ClipCount 4; Stamina 500000; diff --git a/zscript/swwm_ammo.zsc b/zscript/swwm_ammo.zsc index 68d7d032d..eaa6795af 100644 --- a/zscript/swwm_ammo.zsc +++ b/zscript/swwm_ammo.zsc @@ -814,6 +814,7 @@ Class EvisceratorSixPack : EvisceratorShell { Default { + Tag "$I_EVISHELLPAK"; Inventory.PickupMessage "$I_EVISHELLPAK"; Inventory.Amount 6; Radius 20; @@ -885,6 +886,7 @@ Class HellblazerMissileMag : HellblazerMissiles { Default { + Tag "$T_HELLMISSILEMAG"; Inventory.PickupMessage "$T_HELLMISSILEMAG"; Inventory.Amount 6; Radius 12; @@ -951,6 +953,7 @@ Class HellblazerCrackshotMag : HellblazerCrackshots { Default { + Tag "$T_HELLCLUSTERMAG"; Inventory.PickupMessage "$T_HELLCLUSTERMAG"; Inventory.Amount 3; Radius 12; @@ -996,6 +999,7 @@ Class HellblazerRavagerMag : HellblazerRavagers { Default { + Tag "$T_HELLBURNINATORMAG"; Inventory.PickupMessage "$T_HELLBURNINATORMAG"; Inventory.Amount 3; Radius 12; @@ -1041,6 +1045,7 @@ Class HellblazerWarheadMag : HellblazerWarheads { Default { + Tag "$T_HELLNUKEMAG"; Inventory.PickupMessage "$T_HELLNUKEMAG"; Inventory.Amount 2; Radius 12; diff --git a/zscript/swwm_blazeit.zsc b/zscript/swwm_blazeit.zsc index cba97d8fa..14079fe74 100644 --- a/zscript/swwm_blazeit.zsc +++ b/zscript/swwm_blazeit.zsc @@ -240,6 +240,7 @@ Class HellblazerMissile : Actor +EXPLODEONWATER; +FORCERADIUSDMG; +NODAMAGETHRUST; + +HITTRACER; } override void PostBeginPlay() @@ -285,6 +286,7 @@ Class HellblazerMissile : Actor let t = bt.Thing; if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),bNOGRAVITY?50:90) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; deto++; + tracer = t; break; } } @@ -393,7 +395,7 @@ Class HellblazerCrackshot : HellblazerMissile A_SetRenderStyle(1.0,STYLE_Add); A_SprayDecal("BigRocketBlast",50); A_SetScale(6.); - SWWMUtility.DoExplosion(self,150,320000,250,100); + SWWMUtility.DoExplosion(self,200,320000,250,100); A_NoGravity(); A_QuakeEx(6,6,6,20,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:800,rollIntensity:1.); A_StopSound(CHAN_BODY); @@ -438,6 +440,7 @@ Class HellblazerCrackshot : HellblazerMissile c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),sin(-pt))*c.speed*FRandom[Hellblazer](.8,1.2); c.target = target; c.ReactionTime += Random[Hellblazer](-10,10); + HellblazerClusterMini(c).A_Steer(tracer); } if ( swwm_omnibust ) BusterWall.ProjectileBust(self,300,(cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch))); } @@ -463,7 +466,7 @@ Class HellblazerRavager : HellblazerMissile A_SetRenderStyle(1.0,STYLE_Add); A_SprayDecal("HugeRocketBlast",50); A_SetScale(8.); - SWWMUtility.DoExplosion(self,250,320000,300,120); + SWWMUtility.DoExplosion(self,350,320000,300,120); A_NoGravity(); A_QuakeEx(6,6,6,30,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:800,rollIntensity:1.); A_StopSound(CHAN_BODY); @@ -907,9 +910,8 @@ Class HellblazerClusterMini : HellblazerMissile2 p.alpha *= 1-special1*.1; } } - override void A_HandleBounce() + void A_Steer( Actor ignoreme = null ) { - Super.A_HandleBounce(); if ( !bMISSILE ) return; // try to steer towards a target let bt = BlockThingsIterator.Create(self,800); @@ -918,7 +920,7 @@ Class HellblazerClusterMini : HellblazerMissile2 while ( bt.Next() ) { let t = bt.Thing; - if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),800) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + if ( !t || (ignoreme && (t == ignoreme)) || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),800) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; double dist = Distance3D(t); if ( dist > closest ) continue; closest = dist; @@ -932,7 +934,11 @@ Class HellblazerClusterMini : HellblazerMissile2 vel /= spd; vel = (vel*.3+dirto*.7)*spd; } - + override void A_HandleBounce() + { + Super.A_HandleBounce(); + A_Steer(); + } States { Spawn: @@ -1101,13 +1107,13 @@ Class HellblazerRavagerArm : Actor { if ( waterlevel > 0 ) ReactionTime -= 2; let p = Spawn("RavagerPuff",pos); - p.alpha *= .6+.4*(ReactionTime/20.); - p.scale *= 2.5-1.5*(ReactionTime/20.); + p.alpha *= .4+.6*(ReactionTime/25.); + p.scale *= 2.5-1.5*(ReactionTime/25.); if ( !(ReactionTime%3) ) { let l = Spawn("RavagerLight",pos); - l.Args[3] = int(90+50*(ReactionTime/20.)); - l.ReactionTime = int(2+8*(ReactionTime/20.)); + l.Args[3] = int(90+50*(ReactionTime/25.)); + l.ReactionTime = int(2+8*(ReactionTime/25.)); l.target = p; } SWWMUtility.DoExplosion(self,15+reactiontime/2,2000+400*reactiontime,300-4*reactiontime,100); @@ -1119,7 +1125,7 @@ Class HellblazerRavagerArm : Actor s.SetShade(Color(4,2,1)*Random[ExploS](48,63)); s.special1 = Random[ExploS](4,8); s.scale *= 4.; - s.alpha *= .2+.3*(ReactionTime/20.); + s.alpha *= .2+.3*(ReactionTime/25.); if ( !(ReactionTime%2) ) { int numpt = Random[Hellblazer](-2,4); @@ -1205,14 +1211,14 @@ Class HellblazerWarheadArm : Actor TNT1 A 1 { Spawn("HellblazerWarheadTrail",pos); - SWWMUtility.DoExplosion(self,20+reactiontime*4,3000+500*reactiontime,120+3*reactiontime); + SWWMUtility.DoExplosion(self,20+reactiontime*4,3000+500*reactiontime,120+4*reactiontime); Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); let s = Spawn("SWWMHalfSmoke",pos); s.vel = pvel+vel*.2; s.SetShade(Color(4,2,1)*Random[ExploS](48,63)); s.special1 = Random[ExploS](1,3); s.scale *= 6.; - s.alpha *= 0.1+.4*(ReactionTime/15.); + s.alpha *= 0.1+.4*(ReactionTime/25.); A_CountDown(); } Wait; @@ -1693,7 +1699,6 @@ Class Hellblazer : SWWMWeapon Stamina 90000; Weapon.AmmoType1 "HellblazerMissiles"; Weapon.AmmoGive1 3; - //SWWMWeapon.SwapWeapon "Quadravol"; SWWMWeapon.DropAmmoType "RocketAmmo"; Hellblazer.ClipCount 6; +SWWMWEAPON.NOFIRSTGIVE; diff --git a/zscript/swwm_cbt.zsc b/zscript/swwm_cbt.zsc index b1b4cbcf1..f499552ac 100644 --- a/zscript/swwm_cbt.zsc +++ b/zscript/swwm_cbt.zsc @@ -1122,8 +1122,7 @@ Class Wallbuster : SWWMWeapon for ( int i=0; i dropammotype; - Class SwapWeapon; // player can only own either this weapon or the SwapWeapon, if defined Property DropAmmoType : dropammotype; - Property SwapWeapon : SwapWeapon; FlagDef NoFirstGive : SWeaponFlags, 0; // don't give ammo on first pickup (for weapons with a clip count) FlagDef HideInMenu : SWeaponFlags, 1; // don't show in inventory menu (usually for sister weapons) + FlagDef NoSwapWeapon : SWeaponFlags, 2; // weapon is not affected by slot swapping transient CVar phair; // use custom precise crosshair transient ui CVar ch_img, ch_siz, ch_grow, ch_col, ch_hp, ch_on, ch_force; @@ -1000,16 +999,34 @@ Class SWWMWeapon : Weapon abstract ui Color ccol; ui Vector2 lagvpos; + bool IsSwapWeapon( Inventory i ) const + { + if ( bNoSwapWeapon || (i.GetClass() == GetClass()) ) return false; + let w = SWWMWeapon(i); + if ( w && !w.bNoSwapWeapon && (SlotNumber != -1) && (w.SlotNumber == SlotNumber) ) + return true; + return false; + } + + SWWMWeapon HasSwapWeapon( Actor other ) const + { + if ( bNoSwapWeapon ) return null; + for ( Inventory i=other.inv; i; i=i.inv ) + { + if ( IsSwapWeapon(i) ) + return SWWMWeapon(i); + } + return null; + } + override void Touch( Actor toucher ) { // cannot pick up swapweapon unless explicitly pressing use - if ( swwm_swapweapons && SwapWeapon && toucher.FindInventory(SwapWeapon) ) + SWWMWeapon sw; + if ( swwm_swapweapons && (sw = HasSwapWeapon(toucher)) ) { if ( toucher.CheckLocalView() ) - { - String t2 = GetDefaultByType(SwapWeapon).GetTag(); - Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),t2,GetTag())); - } + Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.GetTag(),GetTag())); return; } Super.Touch(toucher); @@ -1025,20 +1042,16 @@ Class SWWMWeapon : Weapon abstract if ( abs(diff.z) > rang ) return false; // if the toucher owns our SwapWeapon, drop it before picking us up bool swapto = false; - if ( swwm_swapweapons && SwapWeapon ) + SWWMWeapon sw; + if ( swwm_swapweapons && (sw = HasSwapWeapon(user)) ) { - let sw = user.FindInventory(SwapWeapon); - if ( sw ) + if ( sw == user.player.ReadyWeapon ) swapto = true; + user.DropInventory(sw); + // don't autoswitch just yet (hacky) + if ( swapto ) { - if ( Weapon(sw) == user.player.ReadyWeapon ) - swapto = true; - user.DropInventory(sw); - // don't autoswitch just yet (hacky) - if ( swapto ) - { - user.player.ReadyWeapon = null; - user.player.PendingWeapon = WP_NOCHANGE; - } + user.player.ReadyWeapon = null; + user.player.PendingWeapon = WP_NOCHANGE; } } Touch(user); @@ -1071,7 +1084,7 @@ Class SWWMWeapon : Weapon abstract override bool HandlePickup( Inventory item ) { // can't hold both weapons at once - if ( swwm_swapweapons && SwapWeapon && (item.GetClass() == SwapWeapon) ) + if ( swwm_swapweapons && IsSwapWeapon(item) ) return true; if ( (GetClass() == item.GetClass()) && !item.ShouldStay() ) { diff --git a/zscript/swwm_jackhammer.zsc b/zscript/swwm_jackhammer.zsc index e3140357c..09f357e97 100644 --- a/zscript/swwm_jackhammer.zsc +++ b/zscript/swwm_jackhammer.zsc @@ -303,14 +303,12 @@ Class PusherProjectile : Actor override void Touch( Actor toucher ) { // cannot pick up swapweapon unless explicitly pressing use - let swc = GetDefaultByType("PusherWeapon").SwapWeapon; - if ( swwm_swapweapons && swc && toucher.FindInventory(swc) ) + let pw = GetDefaultByType("PusherWeapon"); + SWWMWeapon sw; + if ( swwm_swapweapons && (sw = pw.HasSwapWeapon(toucher)) ) { if ( toucher.CheckLocalView() ) - { - String t2 = GetDefaultByType(swc).GetTag(); - Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),t2,StringTable.Localize("$T_PUSHER"))); - } + Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.GetTag(),StringTable.Localize("$T_PUSHER"))); return; } let w = toucher.FindInventory("PusherWeapon"); @@ -339,21 +337,18 @@ Class PusherProjectile : Actor double rang = user.player?PlayerPawn(user.player.mo).UseRange:(user.Height/2); if ( abs(diff.z) > rang ) return false; // if the toucher owns our SwapWeapon, drop it before picking us up - let swc = GetDefaultByType("PusherWeapon").SwapWeapon; - if ( swwm_swapweapons && swc ) + let pw = GetDefaultByType("PusherWeapon"); + SWWMWeapon sw; + if ( swwm_swapweapons && (sw = pw.HasSwapWeapon(user)) ) { - let sw = user.FindInventory(swc); bool swapto = false; - if ( sw ) + if ( sw == user.player.ReadyWeapon ) swapto = true; + user.DropInventory(sw); + // don't autoswitch just yet (hacky) + if ( swapto ) { - if ( sw == user.player.ReadyWeapon ) swapto = true; - user.DropInventory(sw); - // don't autoswitch just yet (hacky) - if ( swapto ) - { - user.player.ReadyWeapon = null; - user.player.PendingWeapon = WP_NOCHANGE; - } + user.player.ReadyWeapon = null; + user.player.PendingWeapon = WP_NOCHANGE; } } Touch(user); @@ -429,7 +424,8 @@ Class PusherWeapon : SWWMWeapon { A_QuakeEx(2,2,2,7,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8); A_AlertMonsters(swwm_uncapalert?0:1200); - int dmg = int(3+invoker.chargelevel*3); + int dmg = int(3+invoker.chargelevel*7); + if ( invoker.chargelevel > .4 ) invoker.chargelevel -= FRandom[Pusher](.01,.04); if ( d.HitType == TRACE_HitActor ) { double diff = deltaangle(self.angle,AngleTo(d.HitActor)); @@ -602,7 +598,6 @@ Class PusherWeapon : SWWMWeapon Weapon.SlotPriority 2.; Weapon.SelectionOrder 1500; Stamina 10000; - //SWWMWeapon.SwapWeapon "ItamexHammer"; +WEAPON.MELEEWEAPON; Radius 20; Height 32; diff --git a/zscript/swwm_shot.zsc b/zscript/swwm_shot.zsc index 934749b3b..432175c96 100644 --- a/zscript/swwm_shot.zsc +++ b/zscript/swwm_shot.zsc @@ -378,7 +378,7 @@ Class DragonBreathArm : Actor let p = Spawn("DragonBreathPuff",pos); p.alpha *= .6+.4*(ReactionTime/20.); p.scale *= 3.5-2.5*(ReactionTime/20.); - SWWMUtility.DoExplosion(self,1+(reactiontime/2),1000+200*reactiontime,150-6*reactiontime,flags:DE_HOWL,ignoreme:bHITOWNER?null:target); + SWWMUtility.DoExplosion(self,2+(reactiontime/2),1000+200*reactiontime,150-6*reactiontime,flags:DE_HOWL,ignoreme:bHITOWNER?null:target); double spd = vel.length(); vel = (vel*.4+(FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2))).unit()*spd; Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); @@ -495,7 +495,7 @@ Class SaltImpact : Actor { Super.PostBeginPlay(); A_AlertMonsters(swwm_uncapalert?0:6000); - SWWMUtility.DoExplosion(self,12+special2*4,15000,100,40); + SWWMUtility.DoExplosion(self,25+special2*4,15000,100,40); A_QuakeEx(3,3,3,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2); A_StartSound("spreadgun/salt",CHAN_VOICE,attenuation:.35); A_SprayDecal("ShockMarkSmall",-172); @@ -593,8 +593,7 @@ Class SaltBeam : Actor for ( int i=0; i= d.HitActor.Health ) dmg += 25; SWWMUtility.DoKnockback(d.HitActor,d.HitDir,48000); @@ -558,6 +558,7 @@ Class ExplodiumGun : SWWMWeapon Stamina 8000; ExplodiumGun.ClipCount 7; +WEAPON.EXPLOSIVE; + +SWWMWEAPON.NOSWAPWEAPON; Radius 12; Height 24; } @@ -818,7 +819,7 @@ Class DualExplodiumGun : SWWMWeapon SWWMBulletTrail.DoTrail(self,origin,dir,10000,2); if ( d.HitType == TRACE_HitActor ) { - int dmg = 15; + int dmg = 20; // might as well apply explosion on top if ( dmg >= d.HitActor.Health ) dmg += 25; SWWMUtility.DoKnockback(d.HitActor,d.HitDir,48000); @@ -934,6 +935,7 @@ Class DualExplodiumGun : SWWMWeapon DualExplodiumGun.ClipCount 7; +WEAPON.EXPLOSIVE; +SWWMWEAPON.HIDEINMENU; + +SWWMWEAPON.NOSWAPWEAPON; } States { diff --git a/zscript/swwm_tastytreat.zsc b/zscript/swwm_tastytreat.zsc index b518ed6b7..a66346fd7 100644 --- a/zscript/swwm_tastytreat.zsc +++ b/zscript/swwm_tastytreat.zsc @@ -106,8 +106,7 @@ Class CandyBeam : Actor for ( int i=0; i