diff --git a/language.version b/language.version index 023fa22d6..a65e14a8b 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r526 \cu(Wed 28 Sep 21:42:26 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r526 \cu(2022-09-28 21:42:26)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r526 \cu(Wed 28 Sep 22:26:56 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r526 \cu(2022-09-28 22:26:56)\c-"; diff --git a/zscript/dlc1/swwm_mister.zsc b/zscript/dlc1/swwm_mister.zsc index 9ee93ddd0..e5ab7d472 100644 --- a/zscript/dlc1/swwm_mister.zsc +++ b/zscript/dlc1/swwm_mister.zsc @@ -23,7 +23,7 @@ Class MisterRailTracer : LineTracer Array waterhitlist; Array portalseg; - double maxdist; + int maxpen; bool pastwall, fullstop; Array WallPenetrateList; @@ -66,10 +66,8 @@ Class MisterRailTracer : LineTracer ent.pastwall = pastwall; ent.bExit = false; hitlist.Push(ent); - // also include exit point if we can reach it + // also include exit point Vector3 exit = SWWMUtility.TraceExit(Results.HitActor,Results.HitPos,Results.HitVector); - if ( level.Vec3Diff(Results.HitPos,exit).length() > (maxdist-Results.Distance) ) - return TRACE_Skip; // exit point is beyond our max distance ent = new("MRHitListEntry"); ent.hitactor = Results.HitActor; ent.hitlocation = exit; @@ -94,8 +92,7 @@ Class MisterRailTracer : LineTracer if ( (Results.Tier == TIER_Middle) && Results.HitLine.sidedef[1] && !(Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) return TRACE_Skip; } - int maxstep = int(maxdist-Results.Distance); - for ( int i=1; i<=maxstep; i++ ) + for ( int i=1; i<=maxpen; i++ ) // originally meant to trace up to maxdist, but this destroyed performance { Vector3 ofs = Results.HitPos+Results.HitVector*i; if ( level.IsPointInLevel(ofs) ) @@ -794,6 +791,7 @@ Class MisterRifle : SWWMWeapon mrt.wallpenetratelist.Clear(); mrt.ffloors.Clear(); mrt.portalseg.Clear(); + mrt.maxpen = 400; for ( int i=0; i