Make hitscan treat skies as walls (the full unreal-like experience).

Also, fix incorrect bounce behavior of candy beams and biospark arcs.
This commit is contained in:
Mari the Deer 2023-03-11 01:27:09 +01:00
commit b8313f1def
15 changed files with 45 additions and 85 deletions

View file

@ -590,7 +590,7 @@ Class SaltBeam : SWWMNonInteractiveActor
special1 = 1;
let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll);
let t = new("SaltTracer");
t.Trace(pos,cursector,x,speed,TRACE_HitSky,ignore:target);
t.Trace(pos,cursector,x,speed,0,ignore:target);
foreach ( l:t.ShootThroughList )
{
l.Activate(target,0,SPAC_PCross);
@ -625,16 +625,13 @@ Class SaltBeam : SWWMNonInteractiveActor
}
Vector3 norm = SWWMUtility.GetLineTracerHitNormal(t.Results);
if ( t.Results.HitType == TRACE_HitWall ) t.Results.HitLine.RemoteActivate(tracer,t.Results.Side,SPAC_Impact,t.Results.HitPos);
if ( t.Results.HitType != TRACE_HasHitSky )
{
let i = Spawn("SaltImpact",level.Vec3Offset(t.Results.HitPos,norm*4));
i.angle = atan2(norm.y,norm.x);
i.pitch = asin(-norm.z);
i.target = target;
i.special1 = (Stamina-9)/4;
i.special2 = Accuracy;
i.args[0] = args[1];
}
let i = Spawn("SaltImpact",level.Vec3Offset(t.Results.HitPos,norm*4));
i.angle = atan2(norm.y,norm.x);
i.pitch = asin(-norm.z);
i.target = target;
i.special1 = (Stamina-9)/4;
i.special2 = Accuracy;
i.args[0] = args[1];
speed = t.Results.Distance; // shortens in minimap
return;
}