diff --git a/language.version b/language.version index 4b1b331af..c2179c9a8 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r454 \cu(Wed 14 Sep 20:51:05 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r454 \cu(2022-09-14 20:51:05)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r457 \cu(Thu 15 Sep 01:02:47 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r457 \cu(2022-09-15 01:02:47)\c-"; diff --git a/zscript/dlc1/swwm_mister_fx.zsc b/zscript/dlc1/swwm_mister_fx.zsc index e2106d2f8..beddd2a24 100644 --- a/zscript/dlc1/swwm_mister_fx.zsc +++ b/zscript/dlc1/swwm_mister_fx.zsc @@ -438,7 +438,7 @@ Class MisterBulletImpact : Actor { if ( special1 && (special1 <= 10) ) { - SWWMUtility.DoExplosion(self,44,20000+special1*1000,50+special1*15,50+special1*15,DE_EXTRAZTHRUST); + SWWMUtility.DoExplosion(self,44,5000+special1*300,50+special1*15,50+special1*15,DE_EXTRAZTHRUST); int numpt = Random[ExploS](0,special1); for ( int i=0; i candidates; - let bt = BlockThingsIterator.Create(self,10000); + let bt = BlockThingsIterator.Create(self,2000); let tt = new("TargetTracer"); tt.target = target; while ( bt.Next() ) @@ -752,7 +752,7 @@ Class MisterGrenade : Actor let t = bt.Thing; if ( !t || (t == tracer) || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; // don't seek if enemy is too close to shooter - if ( target && SWWMUtility.SphereIntersect(t,target.pos,200) ) continue; + if ( target && SWWMUtility.SphereIntersect(t,target.pos,250) ) continue; // don't seek if shooter is between us and the enemy if ( target ) { @@ -764,6 +764,16 @@ Class MisterGrenade : Actor if ( tt.Trace(pos,CurSector,dirto,distto,0) ) continue; } } + // don't seek if enemy is too close to another candidate + // this would cause some of the splash damage potential to go to waste + bool tooclose = false; + for ( int i=0; i