Fix edge case where actors could stop existing mid-trace.

This commit is contained in:
Mari the Deer 2022-06-19 18:02:41 +02:00
commit f8ec71cf7f
7 changed files with 10 additions and 2 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r129 \cu(Fri 17 Jun 23:33:56 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r129 \cu(2022-06-17 23:33:56)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r131 \cu(Sun 19 Jun 18:02:57 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r131 \cu(2022-06-19 18:02:57)\c-";

View file

@ -423,6 +423,7 @@ extend Class SWWMWeapon
double diff = 0.;
for ( int i=0; i<mt.hits.Size(); i++ )
{
if ( !mt.hits[i].a ) continue;
diff += deltaangle(self.angle,AngleTo(mt.hits[i].a));
SWWMUtility.DoKnockback(mt.hits[i].a,mt.hits[i].dir,dmg*2000*kickmul);
// lol oops

View file

@ -1620,6 +1620,7 @@ Class YnykronLightningArc : Actor
}
for ( int i=0; i<t.hitlist.Size(); i++ )
{
if ( !t.hitlist[i].hitactor ) continue;
SWWMUtility.DoKnockback(t.hitlist[i].hitactor,-t.hitlist[i].x,GetMissileDamage(0,0)*1000);
let p = SWWMPuff.Setup(t.hitlist[i].hitlocation,t.hitlist[i].x,self,target,t.hitlist[i].hitactor);
t.hitlist[i].hitactor.DamageMobj(p,target,GetMissileDamage(0,0),'Electric',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF);

View file

@ -202,6 +202,7 @@ Class DeepImpact : SWWMWeapon
}
for ( int i=0; i<list.Size(); i++ )
{
if ( !list[i].a ) continue;
Vector3 avgdir = list[i].avgdir/list[i].nhits;
double avgdist = list[i].avgdist/list[i].nhits;
Vector3 avgpos = list[i].avgpos/list[i].nhits;

View file

@ -1117,6 +1117,7 @@ Class BiosparkBeam : Actor
}
for ( int i=0; i<t.hitlist.Size(); i++ )
{
if ( !t.hitlist[i].hitactor ) continue;
if ( (t.hitlist[i].hitactor is 'BiosparkHitbox') && t.hitlist[i].hitactor.target )
{
let s = Spawn("BiosparkComboImpact",t.hitlist[i].hitactor.pos);
@ -1278,6 +1279,7 @@ Class BiosparkBeam : Actor
t.Trace(pos,CurSector,x,speed,0);
for ( int i=0; i<t.hitlist.Size(); i++ )
{
if ( !t.hitlist[i].hitactor ) continue;
if ( (t.hitlist[i].hitactor is 'BiosparkHitbox') && t.hitlist[i].hitactor.target )
{
let s = Spawn("BiosparkComboImpact",t.hitlist[i].hitactor.pos);
@ -1479,6 +1481,7 @@ Class BiosparkArc : Actor
}
for ( int i=0; i<t.hitlist.Size(); i++ )
{
if ( !t.hitlist[i].hitactor ) continue;
SWWMUtility.DoKnockback(t.hitlist[i].hitactor,-t.hitlist[i].x,GetMissileDamage(0,0)*1000);
let p = SWWMPuff.Setup(t.hitlist[i].hitlocation,t.hitlist[i].x,self,target,t.hitlist[i].hitactor);
t.hitlist[i].hitactor.DamageMobj(p,target,GetMissileDamage(0,0),'Plasma',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF);

View file

@ -108,6 +108,7 @@ Class CandyBeam : Actor
}
for ( int i=0; i<t.hitlist.Size(); i++ )
{
if ( !t.hitlist[i].hitactor ) continue;
SWWMUtility.DoKnockback(t.hitlist[i].hitactor,t.hitlist[i].x,12000);
let p = SWWMPuff.Setup(t.hitlist[i].hitlocation,t.hitlist[i].x,self,target,t.hitlist[i].hitactor);
t.hitlist[i].hitactor.DamageMobj(p,target,GetMissileDamage(0,0),'Explodium',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF);

View file

@ -362,6 +362,7 @@ Class SilverBullet : SWWMWeapon
}
for ( int i=0; i<t.HitList.Size(); i++ )
{
if ( !t.HitList[i].HitActor ) continue;
SWWMUtility.DoKnockback(t.HitList[i].HitActor,t.HitList[i].x+(0,0,0.025),t.Hitlist[i].HitDamage*20.*FRandom[SilverBullet](.8,1.2));
let p = SWWMPuff.Setup(t.HitList[i].HitLocation,t.HitList[i].x,invoker,self,t.HitList[i].HitActor);
int dmg = t.HitList[i].HitActor.DamageMobj(p,self,t.Hitlist[i].HitDamage,'shot',DMG_FOILINVUL|DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF);