Fix: Silver Bullet was not triggering shootable lines.
This commit is contained in:
parent
e7b8ef8716
commit
a4167084ef
2 changed files with 12 additions and 3 deletions
|
|
@ -1,2 +1,2 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \cwGZ\c- r439 (Thu 30 Jul 14:13:36 CEST 2020)";
|
||||
SWWM_MODVER="\chSWWM \cwGZ\c- r440 (Thu 30 Jul 16:31:15 CEST 2020)";
|
||||
|
|
|
|||
|
|
@ -128,6 +128,8 @@ Class SilverImpact : Actor
|
|||
Class WallPenetrate
|
||||
{
|
||||
Vector3 hitpos, hitdir, hitnormal;
|
||||
Line hitline;
|
||||
int hitside;
|
||||
}
|
||||
|
||||
Class AuxiliarySilverBulletTracer : LineTracer
|
||||
|
|
@ -203,19 +205,21 @@ Class SilverBulletTracer : SpreadSlugTracer
|
|||
{
|
||||
penetration = max(0,penetration-i*4);
|
||||
let wp = new("WallPenetrate");
|
||||
wp.hitline = Results.HitLine;
|
||||
wp.hitside = Results.Side;
|
||||
wp.hitpos = Results.HitPos;
|
||||
wp.hitdir = Results.HitVector;
|
||||
wp.hitnormal = (-Results.HitLine.delta.y,Results.HitLine.delta.x,0).unit();
|
||||
if ( !Results.Side ) wp.hitnormal *= -1;
|
||||
WallPenetrateList.Push(wp);
|
||||
if ( Results.HitLine.sidedef[1] )
|
||||
ShootThroughList.Push(Results.HitLine);
|
||||
// trace backwards to find exit surface
|
||||
let at = new("AuxiliarySilverBulletTracer");
|
||||
at.Trace(ofs,level.PointInSector(ofs.xy),-Results.HitVector,2.,TRACE_NoSky);
|
||||
if ( at.Results.HitType != TRACE_HitNone )
|
||||
{
|
||||
let wp2 = new("WallPenetrate");
|
||||
wp2.hitline = at.Results.HitLine;
|
||||
wp2.hitside = at.Results.Side;
|
||||
wp2.hitpos = at.Results.HitPos;
|
||||
wp2.hitdir = at.Results.HitVector;
|
||||
if ( at.Results.HitType == TRACE_HitWall )
|
||||
|
|
@ -248,6 +252,8 @@ Class SilverBulletTracer : SpreadSlugTracer
|
|||
{
|
||||
penetration = max(0,penetration-i*4);
|
||||
let wp = new("WallPenetrate");
|
||||
wp.hitline = Results.HitLine;
|
||||
wp.hitside = Results.Side;
|
||||
wp.hitpos = Results.HitPos;
|
||||
wp.hitdir = Results.HitVector;
|
||||
if ( Results.HitType == TRACE_HitWall )
|
||||
|
|
@ -267,6 +273,8 @@ Class SilverBulletTracer : SpreadSlugTracer
|
|||
if ( at.Results.HitType != TRACE_HitNone )
|
||||
{
|
||||
let wp2 = new("WallPenetrate");
|
||||
wp2.hitline = at.Results.HitLine;
|
||||
wp2.hitside = at.Results.Side;
|
||||
wp2.hitpos = at.Results.HitPos;
|
||||
wp2.hitdir = at.Results.HitVector;
|
||||
if ( at.Results.HitType == TRACE_HitWall )
|
||||
|
|
@ -444,6 +452,7 @@ Class SilverBullet : SWWMWeapon
|
|||
p.angle = atan2(hitnormal.y,hitnormal.x);
|
||||
p.pitch = asin(-hitnormal.z);
|
||||
p.target = self;
|
||||
t.WallPenetrateList[i].hitline.Activate(self,t.WallPenetrateList[i].hitside,SPAC_Impact);
|
||||
}
|
||||
if ( (t.Results.HitType != TRACE_HitNone) && (t.Results.HitType != TRACE_HasHitSky) && (t.Results.HitType != TRACE_HitActor) )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue