From 498aaeadb3f7172e3895e596816cfb8d949c6774 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Fri, 28 Aug 2020 19:24:35 +0200 Subject: [PATCH] Fix more stupidity crashes related to enemies ceasing to exist the instant they die (I really wish some modders weren't fucking stupid doing that, yes, you can guess what kind of mod triggered this). --- language.version | 2 +- zscript/swwm_inventory.zsc | 2 +- zscript/swwm_thiccboolet.zsc | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/language.version b/language.version index d1bf86bce..e885031f1 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \cwGZ\c- r510 (Fri 28 Aug 12:59:13 CEST 2020)"; +SWWM_MODVER="\chSWWM \cwGZ\c- r511 (Fri 28 Aug 19:25:05 CEST 2020)"; diff --git a/zscript/swwm_inventory.zsc b/zscript/swwm_inventory.zsc index cef67cc73..1eaff98ec 100644 --- a/zscript/swwm_inventory.zsc +++ b/zscript/swwm_inventory.zsc @@ -752,7 +752,7 @@ Class ParryField : Actor Actor a; while ( a = Actor(ti.Next()) ) { - if ( !((a.bMISSILE && !a.IsZeroDamage()) || a.bSKULLFLY) || a.bTHRUACTORS || (level.Vec3Diff(a.pos,Vec3Offset(0,0,20)).length() > 80) ) continue; + if ( !((a.bMISSILE && !a.IsZeroDamage() && (a.target != master)) || a.bSKULLFLY) || a.bTHRUACTORS || (level.Vec3Diff(a.pos,Vec3Offset(0,0,20)).length() > 80) ) continue; Vector3 vdir = a.vel; Vector3 dir = level.Vec3Diff(master.Vec2OffsetZ(0,0,pos.z),a.pos).unit(); if ( a.bMISSILE ) diff --git a/zscript/swwm_thiccboolet.zsc b/zscript/swwm_thiccboolet.zsc index ff59d9345..99cb9949f 100644 --- a/zscript/swwm_thiccboolet.zsc +++ b/zscript/swwm_thiccboolet.zsc @@ -707,14 +707,7 @@ Class SilverBullet : SWWMWeapon int realdmg = t.HitList[i].HitDamage; SWWMDamageAccumulator.Accumulate(t.HitList[i].HitActor,realdmg,invoker,self,'shot',false,DMG_FOILINVUL); SWWMUtility.DoKnockback(t.HitList[i].HitActor,t.HitList[i].x+(0,0,0.025),realdmg*20.*FRandom[SilverBullet](.8,1.2)); - if ( t.HitList[i].HitActor.bNOBLOOD ) - { - let p = Spawn("SilverImpact",t.HitList[i].HitLocation); - p.angle = atan2(t.HitList[i].x.y,t.HitList[i].x.x)+180; - p.pitch = asin(t.HitList[i].x.z); - p.target = self; - } - else + if ( t.HitList[i].HitActor && !t.HitList[i].HitActor.bNOBLOOD ) { t.HitList[i].HitActor.TraceBleed(realdmg,self); t.HitList[i].HitActor.SpawnBlood(t.HitList[i].HitLocation,atan2(t.HitList[i].x.y,t.HitList[i].x.x)+180,realdmg); @@ -723,6 +716,13 @@ Class SilverBullet : SWWMWeapon p.special1 = 1; p.target = self; } + else + { + let p = Spawn("SilverImpact",t.HitList[i].HitLocation); + p.angle = atan2(t.HitList[i].x.y,t.HitList[i].x.x)+180; + p.pitch = asin(t.HitList[i].x.z); + p.target = self; + } } for ( int i=0; i