Today I learned that SPAC_Impact lines can still be activated by hitscan that crosses through them and this is intended vanilla behavior.
This commit is contained in:
parent
061829bb8f
commit
41fe50886c
6 changed files with 15 additions and 14 deletions
|
|
@ -5,7 +5,7 @@ world/lavasizzle acid5
|
|||
world/sludgegloop muck5
|
||||
//you can override the limit values so multiple splashes can play simultaneously
|
||||
//note that this sounds bad if multiple splashes play all at once (such as when firing a shotgun into liquid), so override these values at your own discretion
|
||||
/*$Limit world/drip 4
|
||||
$Limit world/drip 4
|
||||
$Limit world/watersplash 4
|
||||
$Limit world/lavasizzle 4
|
||||
$Limit world/sludgegloop 4*/
|
||||
$Limit world/sludgegloop 4
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r696 \cu(Tue 22 Dec 00:19:52 CET 2020)";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r697 \cu(Tue 22 Dec 01:34:43 CET 2020)";
|
||||
|
|
|
|||
|
|
@ -1370,7 +1370,7 @@ Class SWWMBulletTrail : LineTracer
|
|||
Array<Line> ShootThroughList;
|
||||
Actor ignoreme;
|
||||
|
||||
static play void DoTrail( Actor target, Vector3 pos, Vector3 dir, int dist, int bubblechance, bool smoky = false )
|
||||
static play void DoTrail( Actor target, Vector3 pos, Vector3 dir, double dist, int bubblechance, bool smoky = false )
|
||||
{
|
||||
let t = new("SWWMBulletTrail");
|
||||
t.ignoreme = target;
|
||||
|
|
@ -1379,9 +1379,9 @@ Class SWWMBulletTrail : LineTracer
|
|||
t.Trace(pos,level.PointInSector(pos.xy),dir,dist,0);
|
||||
for ( int i=0; i<t.ShootThroughList.Size(); i++ )
|
||||
{
|
||||
// have to do both because WOW, HOW THE FUCK IS THIS INTENTIONAL???
|
||||
t.ShootThroughList[i].Activate(target,0,SPAC_PCross);
|
||||
if ( t.ShootThroughList[i].special == GlassBreak ) // fuck glass
|
||||
t.ShootThroughList[i].Activate(target,0,SPAC_Impact);
|
||||
t.ShootThroughList[i].Activate(target,0,SPAC_Impact);
|
||||
}
|
||||
for ( int i=0; i<t.WaterHitList.Size(); i++ )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -320,6 +320,7 @@ Class DeepImpact : SWWMWeapon
|
|||
t.hitlist.Clear();
|
||||
t.hitdist.Clear();
|
||||
t.Trace(origin,level.PointInSector(origin.xy),dir,150-i*120,0);
|
||||
SWWMBulletTrail.DoTrail(self,origin,dir,150-i*120,0);
|
||||
for ( int i=0; i<t.hitlist.Size(); i++ )
|
||||
{
|
||||
int inl = -1;
|
||||
|
|
@ -353,6 +354,7 @@ Class DeepImpact : SWWMWeapon
|
|||
if ( t.Results.FFloor ) hitnormal = -t.Results.FFloor.top.Normal;
|
||||
else hitnormal = t.Results.HitSector.floorplane.Normal;
|
||||
wnorm += (hitnormal*.2-dir)/max(50.,t.Results.Distance);
|
||||
Spawn("InvisibleSplasher",t.Results.HitPos);
|
||||
}
|
||||
else if ( t.Results.HitType == TRACE_HitCeiling )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -878,7 +878,6 @@ Class UseList
|
|||
Class UseLineTracer : LineTracer
|
||||
{
|
||||
Array<UseList> uses;
|
||||
Array<Line> glass;
|
||||
|
||||
static play bool TangibleLine( UseList u )
|
||||
{
|
||||
|
|
@ -946,8 +945,6 @@ Class UseLineTracer : LineTracer
|
|||
{
|
||||
if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything|Line.ML_BlockUse)) )
|
||||
return TRACE_Stop;
|
||||
if ( Results.HitLine.special == GlassBreak ) // fuck glass
|
||||
glass.Push(Results.HitLine);
|
||||
return TRACE_Skip;
|
||||
}
|
||||
}
|
||||
|
|
@ -1390,11 +1387,12 @@ Class SWWMWeapon : Weapon abstract
|
|||
}
|
||||
action void A_Melee( int dmg = 40, String hitsound = "", double rangemul = 1. )
|
||||
{
|
||||
Vector3 origin = Vec3Offset(0,0,player.viewheight);
|
||||
Vector3 dir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch));
|
||||
// check for usables
|
||||
let ut = new("UseLineTracer");
|
||||
ut.uses.Clear();
|
||||
ut.glass.Clear();
|
||||
ut.Trace(Vec3Offset(0,0,player.viewheight),CurSector,(cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch)),DEFMELEERANGE*rangemul,0);
|
||||
ut.Trace(origin,CurSector,dir,DEFMELEERANGE*rangemul,0);
|
||||
invoker.wallponch = true;
|
||||
for ( int i=0; i<ut.uses.Size(); i++ )
|
||||
{
|
||||
|
|
@ -1414,9 +1412,8 @@ Class SWWMWeapon : Weapon abstract
|
|||
}
|
||||
}
|
||||
invoker.wallponch = false;
|
||||
// fuck glass
|
||||
for ( int i=0; i<ut.glass.Size(); i++ )
|
||||
ut.glass[i].Activate(self,0,SPAC_Impact);
|
||||
// check for shootables
|
||||
SWWMBulletTrail.DoTrail(self,origin,dir,DEFMELEERANGE*rangemul,0);
|
||||
let raging = RagekitPower(FindInventory("RagekitPower"));
|
||||
int maxang = raging?18:12;
|
||||
for ( int i=0; i<maxang; i++ )
|
||||
|
|
|
|||
|
|
@ -424,6 +424,7 @@ Class PusherWeapon : SWWMWeapon
|
|||
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3.5*z);
|
||||
FLineTraceData d;
|
||||
LineTrace(angle,60,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
|
||||
SWWMBulletTrail.DoTrail(self,origin,x,60,0);
|
||||
if ( d.HitType != TRACE_HitNone )
|
||||
{
|
||||
A_QuakeEx(2,2,2,7,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8);
|
||||
|
|
@ -503,6 +504,7 @@ Class PusherWeapon : SWWMWeapon
|
|||
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3.5*z);
|
||||
FLineTraceData d;
|
||||
LineTrace(angle,80,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
|
||||
SWWMBulletTrail.DoTrail(self,origin,x,80,0);
|
||||
bool gone = false;
|
||||
if ( d.HitType != TRACE_HitNone )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue