diff --git a/sounds/AmmoSnd.ogg b/sounds/AmmoSnd.ogg deleted file mode 100644 index b152af7..0000000 Binary files a/sounds/AmmoSnd.ogg and /dev/null differ diff --git a/sounds/PulseFly.ogg b/sounds/PulseFly.ogg deleted file mode 100644 index 7b2d36e..0000000 Binary files a/sounds/PulseFly.ogg and /dev/null differ diff --git a/zscript/translocator.zsc b/zscript/translocator.zsc index 74713f4..01cd5b9 100644 --- a/zscript/translocator.zsc +++ b/zscript/translocator.zsc @@ -13,34 +13,34 @@ Class ModuleHitbox : Actor } override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) { - if ( target ) + if ( master ) { - if ( inflictor ) target.vel += level.Vec3Diff(inflictor.pos,pos).unit()*damage*0.2; - else if ( source ) target.vel += level.Vec3Diff(source.pos,pos).unit()*damage*0.2; - target.vel.z = 5; + if ( inflictor ) master.vel += level.Vec3Diff(inflictor.pos,pos).unit()*damage*0.2; + else if ( source ) master.vel += level.Vec3Diff(source.pos,pos).unit()*damage*0.2; + master.vel.z = 5; } - if ( !target || (target.target && ((target.target == source) || target.target.isTeammate(source))) ) return 0; - target.bAMBUSH = true; + if ( !master || (master.target && ((master.target == source) || master.target.isTeammate(source))) ) return 0; + master.bAMBUSH = true; return 0; } override void Tick() { Super.Tick(); - if ( !target ) + if ( !master ) { Destroy(); return; } - SetOrigin(target.pos,true); - if ( target.bMISSILE ) return; + SetOrigin(master.pos,true); + if ( master.bMISSILE ) return; let bi = BlockThingsIterator.Create(self,32); while ( bi.Next() ) { - if ( !bi.Thing || (bi.Thing != target.target) ) continue; + if ( !bi.Thing || (bi.Thing != master.target) ) continue; if ( (Distance2D(bi.Thing)-bi.Thing.radius <= radius) && ((bi.Thing.pos.z <= pos.z+height) && (bi.Thing.pos.z+bi.Thing.height >= pos.z-height)) ) { A_PlaySound("misc/i_pkup"); - target.Destroy(); + master.Destroy(); return; } } @@ -149,7 +149,7 @@ Class TranslocatorModule : Actor return; } b = Spawn("ModuleHitbox",pos); - b.target = self; + b.master = self; A_PlaySound("transloc/hum",CHAN_VOICE,0.5,true,2.0); } diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index 45e4de4..345afc8 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -1974,7 +1974,7 @@ Class ShredCorpseHitbox : Actor override void Tick() { Super.Tick(); - if ( (!(target is 'UTPlayer') && !flak_corpsedamage) || !target || (target.Health > 0) || target.InStateSequence(target.CurState,target.FindState("XDeath")) ) + if ( (!(target is 'UTPlayer') && !flak_corpsedamage) || !target || (target.Health > 0) || target.InStateSequence(target.CurState,target.FindState("XDeath",true)) ) { Destroy(); return; @@ -1995,6 +1995,8 @@ Class ShredCorpseHitbox : Actor } override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) { + // somehow target can spontaneously stop existing while this is happening + if ( !target ) return 0; if ( (target is 'UTPlayer') && (mod == 'Zapped') && (target.sprite == target.GetSpriteIndex('PLD9')) ) { // keep the zapping action on