diff --git a/wadsrc/static/zscript/doom/archvile.txt b/wadsrc/static/zscript/doom/archvile.txt index a19e5c705c..2ea153be1c 100644 --- a/wadsrc/static/zscript/doom/archvile.txt +++ b/wadsrc/static/zscript/doom/archvile.txt @@ -116,10 +116,13 @@ extend class Actor A_FaceTarget (); Actor fog = Spawn (fire, target.Pos, ALLOW_REPLACE); - tracer = fog; - fog.target = self; - fog.tracer = self.target; - fog.A_Fire(0); + if (fog != null) + { + tracer = fog; + fog.target = self; + fog.tracer = self.target; + fog.A_Fire(0); + } } } diff --git a/wadsrc/static/zscript/doom/fatso.txt b/wadsrc/static/zscript/doom/fatso.txt index 3831110c0e..e70c979243 100644 --- a/wadsrc/static/zscript/doom/fatso.txt +++ b/wadsrc/static/zscript/doom/fatso.txt @@ -188,6 +188,7 @@ extend class Actor // Now launch mushroom cloud Actor aimtarget = Spawn("Mapspot", pos, NO_REPLACE); // We need something to aim at. + if (aimtarget == null) return; Actor owner = (flags & MSF_DontHurt) ? target : self; aimtarget.Height = Height; diff --git a/wadsrc/static/zscript/doom/revenant.txt b/wadsrc/static/zscript/doom/revenant.txt index 2fa335a2df..82d5639340 100644 --- a/wadsrc/static/zscript/doom/revenant.txt +++ b/wadsrc/static/zscript/doom/revenant.txt @@ -233,10 +233,13 @@ extend class Actor SpawnPuff ("BulletPuff", pos, angle, angle, 3); Actor smoke = Spawn ("RevenantTracerSmoke", Vec3Offset(-Vel.X, -Vel.Y, 0.), ALLOW_REPLACE); - smoke.Vel.Z = 1.; - smoke.tics -= random[Tracer](0, 3); - if (smoke.tics < 1) - smoke.tics = 1; + if (smoke != null) + { + smoke.Vel.Z = 1.; + smoke.tics -= random[Tracer](0, 3); + if (smoke.tics < 1) + smoke.tics = 1; + } // The rest of this function was identical with Strife's version, except for the angle being used. A_Tracer2(16.875); diff --git a/wadsrc/static/zscript/heretic/chicken.txt b/wadsrc/static/zscript/heretic/chicken.txt index 9f4429d50f..b60a891363 100644 --- a/wadsrc/static/zscript/heretic/chicken.txt +++ b/wadsrc/static/zscript/heretic/chicken.txt @@ -335,11 +335,14 @@ extend class Actor for (int i = 0; i < count; i++) { Actor mo = Spawn("Feather", pos + (0, 0, 20), NO_REPLACE); - mo.target = self; - mo.Vel.X = Random2[Feathers]() / 256.; - mo.Vel.Y = Random2[Feathers]() / 256.; - mo.Vel.Z = 1. + random[Feathers]() / 128.; - mo.SetState (mo.SpawnState + (random[Feathers]()&7)); + if (mo != null) + { + mo.target = self; + mo.Vel.X = Random2[Feathers]() / 256.; + mo.Vel.Y = Random2[Feathers]() / 256.; + mo.Vel.Z = 1. + random[Feathers]() / 128.; + mo.SetState (mo.SpawnState + (random[Feathers]()&7)); + } } } diff --git a/wadsrc/static/zscript/heretic/dsparil.txt b/wadsrc/static/zscript/heretic/dsparil.txt index 54931b65e8..579f474928 100644 --- a/wadsrc/static/zscript/heretic/dsparil.txt +++ b/wadsrc/static/zscript/heretic/dsparil.txt @@ -166,13 +166,14 @@ class Sorcerer1 : Actor { bSolid = false; Actor mo = Spawn("Sorcerer2", Pos, ALLOW_REPLACE); - mo.Translation = Translation; - mo.SetStateLabel("Rise"); - mo.angle = angle; - mo.CopyFriendliness (self, true); + if (mo != null) + { + mo.Translation = Translation; + mo.SetStateLabel("Rise"); + mo.angle = angle; + mo.CopyFriendliness (self, true); + } } - - } @@ -434,9 +435,12 @@ class Sorcerer2FX1 : Actor for (int i = 0; i < 2; i++) { Actor mo = Spawn("Sorcerer2FXSpark", pos, ALLOW_REPLACE); - mo.Vel.X = Random2[BlueSpark]() / 128.; - mo.Vel.Y = Random2[BlueSpark]() / 128.; - mo.Vel.Z = 1. + Random[BlueSpark]() / 256.; + if (mo != null) + { + mo.Vel.X = Random2[BlueSpark]() / 128.; + mo.Vel.Y = Random2[BlueSpark]() / 128.; + mo.Vel.Z = 1. + Random[BlueSpark]() / 256.; + } } } } diff --git a/wadsrc/static/zscript/heretic/hereticartifacts.txt b/wadsrc/static/zscript/heretic/hereticartifacts.txt index 3ef265735a..20f52a2c93 100644 --- a/wadsrc/static/zscript/heretic/hereticartifacts.txt +++ b/wadsrc/static/zscript/heretic/hereticartifacts.txt @@ -149,7 +149,7 @@ Class ArtiTimeBomb : Inventory override bool Use (bool pickup) { Actor mo = Spawn("ActivatedTimeBomb", Owner.Vec3Angle(24., Owner.angle, - Owner.Floorclip), ALLOW_REPLACE); - mo.target = Owner; + if (mo != null) mo.target = Owner; return true; } diff --git a/wadsrc/static/zscript/heretic/hereticimp.txt b/wadsrc/static/zscript/heretic/hereticimp.txt index c1443de032..e6915c7f6b 100644 --- a/wadsrc/static/zscript/heretic/hereticimp.txt +++ b/wadsrc/static/zscript/heretic/hereticimp.txt @@ -102,14 +102,20 @@ class HereticImp : Actor bNoGravity = false; chunk = Spawn("HereticImpChunk1", pos, ALLOW_REPLACE); - chunk.vel.x = random2[ImpExplode]() / 64.; - chunk.vel.y = random2[ImpExplode]() / 64.; - chunk.vel.z = 9; + if (chunk != null) + { + chunk.vel.x = random2[ImpExplode]() / 64.; + chunk.vel.y = random2[ImpExplode]() / 64.; + chunk.vel.z = 9; + } chunk = Spawn("HereticImpChunk2", pos, ALLOW_REPLACE); - chunk.vel.x = random2[ImpExplode]() / 64.; - chunk.vel.y = random2[ImpExplode]() / 64.; - chunk.vel.z = 9; + if (chunk != null) + { + chunk.vel.x = random2[ImpExplode]() / 64.; + chunk.vel.y = random2[ImpExplode]() / 64.; + chunk.vel.z = 9; + } if (extremecrash) { diff --git a/wadsrc/static/zscript/heretic/hereticmisc.txt b/wadsrc/static/zscript/heretic/hereticmisc.txt index ea79f5f803..b662173527 100644 --- a/wadsrc/static/zscript/heretic/hereticmisc.txt +++ b/wadsrc/static/zscript/heretic/hereticmisc.txt @@ -60,10 +60,13 @@ class Pod : Actor for (int count = chance > 240 ? 2 : 1; count; count--) { Actor goo = Spawn(gootype, pos + (0, 0, 48), ALLOW_REPLACE); - goo.target = self; - goo.Vel.X = Random2[PodPain]() / 128.; - goo.Vel.Y = Random2[PodPain]() / 128.; - goo.Vel.Z = 0.5 + random[PodPain]() / 128.; + if (goo != null) + { + goo.target = self; + goo.Vel.X = Random2[PodPain]() / 128.; + goo.Vel.Y = Random2[PodPain]() / 128.; + goo.Vel.Z = 0.5 + random[PodPain]() / 128.; + } } } @@ -295,12 +298,15 @@ class Volcano : Actor for (int i = 0; i < count; i++) { Actor blast = Spawn("VolcanoBlast", pos + (0, 0, 44), ALLOW_REPLACE); - blast.target = self; - blast.Angle = random[VolcanoBlast]() * (360 / 256.); - blast.VelFromAngle(1.); - blast.Vel.Z = 2.5 + random[VolcanoBlast]() / 64.; - blast.A_PlaySound ("world/volcano/shoot", CHAN_BODY); - blast.CheckMissileSpawn (radius); + if (blast != null) + { + blast.target = self; + blast.Angle = random[VolcanoBlast]() * (360 / 256.); + blast.VelFromAngle(1.); + blast.Vel.Z = 2.5 + random[VolcanoBlast]() / 64.; + blast.A_PlaySound ("world/volcano/shoot", CHAN_BODY); + blast.CheckMissileSpawn (radius); + } } } } diff --git a/wadsrc/static/zscript/heretic/ironlich.txt b/wadsrc/static/zscript/heretic/ironlich.txt index 8a4dd4c05c..65e510932e 100644 --- a/wadsrc/static/zscript/heretic/ironlich.txt +++ b/wadsrc/static/zscript/heretic/ironlich.txt @@ -102,12 +102,15 @@ class Ironlich : Actor { A_PlaySound ("ironlich/attack1", CHAN_BODY); } - fire.target = baseFire.target; - fire.angle = baseFire.angle; - fire.Vel = baseFire.Vel; - fire.SetDamage(0); - fire.health = (i+1) * 2; - fire.CheckMissileSpawn (radius); + if (fire != null) + { + fire.target = baseFire.target; + fire.angle = baseFire.angle; + fire.Vel = baseFire.Vel; + fire.SetDamage(0); + fire.health = (i+1) * 2; + fire.CheckMissileSpawn (radius); + } } } } @@ -167,11 +170,14 @@ class HeadFX1 : Actor for (int i = 0; i < 8; i++) { Actor shard = Spawn("HeadFX2", Pos, ALLOW_REPLACE); - shard.target = target; - shard.angle = i*45.; - shard.VelFromAngle(); - shard.Vel.Z = -.6; - shard.CheckMissileSpawn (radius); + if (shard != null) + { + shard.target = target; + shard.angle = i*45.; + shard.VelFromAngle(); + shard.Vel.Z = -.6; + shard.CheckMissileSpawn (radius); + } } } } diff --git a/wadsrc/static/zscript/heretic/knight.txt b/wadsrc/static/zscript/heretic/knight.txt index 01b7252c60..e66e191f04 100644 --- a/wadsrc/static/zscript/heretic/knight.txt +++ b/wadsrc/static/zscript/heretic/knight.txt @@ -163,8 +163,11 @@ class RedAxe : KnightAxe double xo = random2[DripBlood]() / 32.0; double yo = random2[DripBlood]() / 32.0; Actor mo = Spawn ("Blood", Vec3Offset(xo, yo, 0.), ALLOW_REPLACE); - mo.Vel.X = random2[DripBlood]() / 64.0; - mo.Vel.Y = random2[DripBlood]() / 64.0; - mo.Gravity = 1./8; + if (mo != null) + { + mo.Vel.X = random2[DripBlood]() / 64.0; + mo.Vel.Y = random2[DripBlood]() / 64.0; + mo.Gravity = 1./8; + } } } diff --git a/wadsrc/static/zscript/heretic/weaponblaster.txt b/wadsrc/static/zscript/heretic/weaponblaster.txt index 612e630c0b..913abffdb6 100644 --- a/wadsrc/static/zscript/heretic/weaponblaster.txt +++ b/wadsrc/static/zscript/heretic/weaponblaster.txt @@ -160,10 +160,13 @@ class BlasterFX1 : FastProjectile for(int i = 0; i < 8; i++) { Actor ripper = Spawn("Ripper", pos, ALLOW_REPLACE); - ripper.target = target; - ripper.angle = i*45; - ripper.VelFromAngle(); - ripper.CheckMissileSpawn (radius); + if (ripper != null) + { + ripper.target = target; + ripper.angle = i*45; + ripper.VelFromAngle(); + ripper.CheckMissileSpawn (radius); + } } } } diff --git a/wadsrc/static/zscript/heretic/weaponmace.txt b/wadsrc/static/zscript/heretic/weaponmace.txt index fd11e685fd..3ef747e0f9 100644 --- a/wadsrc/static/zscript/heretic/weaponmace.txt +++ b/wadsrc/static/zscript/heretic/weaponmace.txt @@ -60,14 +60,17 @@ class Mace : HereticWeapon if (random[MaceAtk]() < 28) { Actor ball = Spawn("MaceFX2", Pos + (0, 0, 28 - Floorclip), ALLOW_REPLACE); - ball.Vel.Z = 2 - clamp(tan(pitch), -5, 5); - ball.target = self; - ball.angle = self.angle; - ball.AddZ(ball.Vel.Z); - ball.VelFromAngle(); - ball.Vel += Vel.xy / 2; - ball.A_PlaySound ("weapons/maceshoot", CHAN_BODY); - ball.CheckMissileSpawn (radius); + if (ball != null) + { + ball.Vel.Z = 2 - clamp(tan(pitch), -5, 5); + ball.target = self; + ball.angle = self.angle; + ball.AddZ(ball.Vel.Z); + ball.VelFromAngle(); + ball.Vel += Vel.xy / 2; + ball.A_PlaySound ("weapons/maceshoot", CHAN_BODY); + ball.CheckMissileSpawn (radius); + } } else { @@ -260,18 +263,24 @@ class MaceFX2 : MaceFX1 SetState (SpawnState); Actor tiny = Spawn("MaceFX3", Pos, ALLOW_REPLACE); - tiny.target = target; - tiny.angle = angle + 90.; - tiny.VelFromAngle(Vel.Z - 1.); - tiny.Vel += (Vel.XY * .5, Vel.Z); - tiny.CheckMissileSpawn (radius); + if (tiny != null) + { + tiny.target = target; + tiny.angle = angle + 90.; + tiny.VelFromAngle(Vel.Z - 1.); + tiny.Vel += (Vel.XY * .5, Vel.Z); + tiny.CheckMissileSpawn (radius); + } tiny = Spawn("MaceFX3", Pos, ALLOW_REPLACE); - tiny.target = target; - tiny.angle = angle - 90.; - tiny.VelFromAngle(Vel.Z - 1.); - tiny.Vel += (Vel.XY * .5, Vel.Z); - tiny.CheckMissileSpawn (radius); + if (tiny != null) + { + tiny.target = target; + tiny.angle = angle - 90.; + tiny.VelFromAngle(Vel.Z - 1.); + tiny.Vel += (Vel.XY * .5, Vel.Z); + tiny.CheckMissileSpawn (radius); + } return; } } diff --git a/wadsrc/static/zscript/heretic/weaponphoenix.txt b/wadsrc/static/zscript/heretic/weaponphoenix.txt index 6b949b8f61..eb75acb1dd 100644 --- a/wadsrc/static/zscript/heretic/weaponphoenix.txt +++ b/wadsrc/static/zscript/heretic/weaponphoenix.txt @@ -151,16 +151,19 @@ class PhoenixRodPowered : PhoenixRod slope += 0.1; Actor mo = Spawn("PhoenixFX2", spawnpos, ALLOW_REPLACE); - mo.target = self; - mo.Angle = Angle; - mo.VelFromAngle(); - mo.Vel.XY += Vel.XY; - mo.Vel.Z = mo.Speed * slope; + if (mo != null) + { + mo.target = self; + mo.Angle = Angle; + mo.VelFromAngle(); + mo.Vel.XY += Vel.XY; + mo.Vel.Z = mo.Speed * slope; + mo.CheckMissileSpawn (radius); + } if (!player.refire) { A_PlaySound("weapons/phoenixpowshoot", CHAN_WEAPON, 1, true); } - mo.CheckMissileSpawn (radius); } //---------------------------------------------------------------------------- @@ -239,10 +242,16 @@ class PhoenixFX1 : Actor //[RH] Heretic never sets the target for seeking //P_SeekerMissile (self, 5, 10); Actor puff = Spawn("PhoenixPuff", Pos, ALLOW_REPLACE); - puff.Vel.XY = AngleToVector(Angle + 90, 1.3); + if (puff != null) + { + puff.Vel.XY = AngleToVector(Angle + 90, 1.3); + } puff = Spawn("PhoenixPuff", Pos, ALLOW_REPLACE); - puff.Vel.XY = AngleToVector(Angle - 90, 1.3); + if (puff != null) + { + puff.Vel.XY = AngleToVector(Angle - 90, 1.3); + } } diff --git a/wadsrc/static/zscript/hexen/blastradius.txt b/wadsrc/static/zscript/hexen/blastradius.txt index 7374a4523d..3dd355b7cf 100644 --- a/wadsrc/static/zscript/hexen/blastradius.txt +++ b/wadsrc/static/zscript/hexen/blastradius.txt @@ -70,7 +70,8 @@ extend class Actor // [RH] Floor and ceiling huggers should not be blasted vertically. if (!victim.bFloorHugger && !victim.bCeilingHugger) { - mo.Vel.Z = victim.Vel.Z = 8; + victim.Vel.Z = 8; + if (mo != null) mo.Vel.Z = 8; } } else diff --git a/wadsrc/static/zscript/hexen/clericholy.txt b/wadsrc/static/zscript/hexen/clericholy.txt index 33b69bf25a..3846c75d5e 100644 --- a/wadsrc/static/zscript/hexen/clericholy.txt +++ b/wadsrc/static/zscript/hexen/clericholy.txt @@ -567,14 +567,17 @@ class HolyTail : Actor static void SpawnSpiritTail (Actor spirit) { Actor tail = Spawn ("HolyTail", spirit.Pos, ALLOW_REPLACE); - tail.target = spirit; // parent - for (int i = 1; i < 3; i++) + if (tail != null) { - Actor next = Spawn ("HolyTailTrail", spirit.Pos, ALLOW_REPLACE); - tail.tracer = next; - tail = next; + tail.target = spirit; // parent + for (int i = 1; i < 3; i++) + { + Actor next = Spawn ("HolyTailTrail", spirit.Pos, ALLOW_REPLACE); + tail.tracer = next; + tail = next; + } + tail.tracer = null; // last tail bit } - tail.tracer = null; // last tail bit } //============================================================================ diff --git a/wadsrc/static/zscript/hexen/flechette.txt b/wadsrc/static/zscript/hexen/flechette.txt index fc9268c5b0..3440312c9e 100644 --- a/wadsrc/static/zscript/hexen/flechette.txt +++ b/wadsrc/static/zscript/hexen/flechette.txt @@ -255,10 +255,13 @@ class ArtiPoisonBag : Inventory } class spawntype = GetFlechetteType(other); - Inventory copy = Inventory(Spawn (spawntype)); - copy.Amount = Amount; - copy.MaxAmount = MaxAmount; - GoAwayAndDie (); + let copy = Inventory(Spawn (spawntype)); + if (copy != null) + { + copy.Amount = Amount; + copy.MaxAmount = MaxAmount; + GoAwayAndDie (); + } return copy; } } diff --git a/wadsrc/static/zscript/hexen/korax.txt b/wadsrc/static/zscript/hexen/korax.txt index 1c1f31712f..8f313bc19e 100644 --- a/wadsrc/static/zscript/hexen/korax.txt +++ b/wadsrc/static/zscript/hexen/korax.txt @@ -315,17 +315,20 @@ class Korax : Actor private void SpawnKoraxMissile (Vector3 pos, Actor dest, Class type) { Actor th = Spawn (type, pos, ALLOW_REPLACE); - th.target = self; // Originator - double an = th.AngleTo(dest); - if (dest.bShadow) - { // Invisible target - an += Random2[KoraxMissile]() * (45/256.); + if (th != null) + { + th.target = self; // Originator + double an = th.AngleTo(dest); + if (dest.bShadow) + { // Invisible target + an += Random2[KoraxMissile]() * (45/256.); + } + th.angle = an; + th.VelFromAngle(); + double dist = dest.DistanceBySpeed(th, th.Speed); + th.Vel.Z = (dest.pos.z - pos.Z + 30) / dist; + th.CheckMissileSpawn(radius); } - th.angle = an; - th.VelFromAngle(); - double dist = dest.DistanceBySpeed(th, th.Speed); - th.Vel.Z = (dest.pos.z - pos.Z + 30) / dist; - th.CheckMissileSpawn(radius); } //============================================================================ diff --git a/wadsrc/static/zscript/raven/minotaur.txt b/wadsrc/static/zscript/raven/minotaur.txt index 01cd635410..06bb6daae3 100644 --- a/wadsrc/static/zscript/raven/minotaur.txt +++ b/wadsrc/static/zscript/raven/minotaur.txt @@ -262,7 +262,7 @@ class Minotaur : Actor type = "PunchPuff"; } Actor puff = Spawn (type, Pos, ALLOW_REPLACE); - puff.Vel.Z = 2; + if (puff != null) puff.Vel.Z = 2; special1--; } else @@ -710,9 +710,12 @@ class MinotaurFX2 : MinotaurFX1 double y = Random2[MntrFloorFire]() / 64.; Actor mo = Spawn("MinotaurFX3", Vec2OffsetZ(x, y, floorz), ALLOW_REPLACE); - mo.target = target; - mo.Vel.X = MinVel; // Force block checking - mo.CheckMissileSpawn (radius); + if (mo != null) + { + mo.target = target; + mo.Vel.X = MinVel; // Force block checking + mo.CheckMissileSpawn (radius); + } } } diff --git a/wadsrc/static/zscript/strife/entityboss.txt b/wadsrc/static/zscript/strife/entityboss.txt index a9ec94bb23..ff26280c3f 100644 --- a/wadsrc/static/zscript/strife/entityboss.txt +++ b/wadsrc/static/zscript/strife/entityboss.txt @@ -202,9 +202,12 @@ class EntityBoss : SpectralMonster Vector3 pos = spot.Vec3Angle(secondRadius, an, tracer ? 70. : 0.); second = Spawn("EntitySecond", pos, ALLOW_REPLACE); - second.CopyFriendliness(self, true); - second.A_FaceTarget(); - second.VelFromAngle(i == 0? 4.8828125 : secondRadius * 4., an); + if (second != null) + { + second.CopyFriendliness(self, true); + second.A_FaceTarget(); + second.VelFromAngle(i == 0? 4.8828125 : secondRadius * 4., an); + } } } diff --git a/wadsrc/static/zscript/strife/inquisitor.txt b/wadsrc/static/zscript/strife/inquisitor.txt index 6d3c5bc7f7..5c15f4af7e 100644 --- a/wadsrc/static/zscript/strife/inquisitor.txt +++ b/wadsrc/static/zscript/strife/inquisitor.txt @@ -171,9 +171,12 @@ class Inquisitor : Actor void A_TossArm () { Actor foo = Spawn("InquisitorArm", Pos + (0,0,24), ALLOW_REPLACE); - foo.angle = angle - 90. + Random2[Inquisitor]() * (360./1024.); - foo.VelFromAngle(foo.Speed / 8); - foo.Vel.Z = random[Inquisitor]() / 64.; + if (foo != null) + { + foo.angle = angle - 90. + Random2[Inquisitor]() * (360./1024.); + foo.VelFromAngle(foo.Speed / 8); + foo.Vel.Z = random[Inquisitor]() / 64.; + } } diff --git a/wadsrc/static/zscript/strife/rebels.txt b/wadsrc/static/zscript/strife/rebels.txt index 24deea25b1..7302f1c020 100644 --- a/wadsrc/static/zscript/strife/rebels.txt +++ b/wadsrc/static/zscript/strife/rebels.txt @@ -163,6 +163,10 @@ class TeleporterBeacon : Inventory { Actor owner = target; Actor rebel = Spawn("Rebel1", (pos.xy, floorz), ALLOW_REPLACE); + if (rebel == null) + { + return; + } if (!rebel.TryMove (rebel.Pos.xy, true)) { rebel.Destroy (); diff --git a/wadsrc/static/zscript/strife/sigil.txt b/wadsrc/static/zscript/strife/sigil.txt index 096915ccf2..bfdcae77a5 100644 --- a/wadsrc/static/zscript/strife/sigil.txt +++ b/wadsrc/static/zscript/strife/sigil.txt @@ -268,7 +268,7 @@ class Sigil : Weapon action void A_FireSigil1 () { - Actor spot; + Actor spot = null; FTranslatedLineTarget t; if (player == null || player.ReadyWeapon == null) diff --git a/wadsrc/static/zscript/strife/spectral.txt b/wadsrc/static/zscript/strife/spectral.txt index 0878cff948..a56d9e7178 100644 --- a/wadsrc/static/zscript/strife/spectral.txt +++ b/wadsrc/static/zscript/strife/spectral.txt @@ -62,11 +62,13 @@ class SpectralMonster : Actor return; Actor foo = Spawn("SpectralLightningV2", Pos + (0, 0, 32), ALLOW_REPLACE); - - foo.Vel.Z = -12; - foo.target = self; - foo.FriendPlayer = 0; - foo.tracer = target; + if (foo != null) + { + foo.Vel.Z = -12; + foo.target = self; + foo.FriendPlayer = 0; + foo.tracer = target; + } Angle -= 90.; for (int i = 0; i < 20; ++i) @@ -217,9 +219,11 @@ class SpectralLightningH1 : SpectralLightningBase void A_SpectralLightningTail () { Actor foo = Spawn("SpectralLightningHTail", Vec3Offset(-Vel.X, -Vel.Y, 0.), ALLOW_REPLACE); - - foo.Angle = Angle; - foo.FriendPlayer = FriendPlayer; + if (foo != null) + { + foo.Angle = Angle; + foo.FriendPlayer = FriendPlayer; + } } } @@ -386,15 +390,21 @@ class SpectralLightningSpot : SpectralLightningDeath1 Actor flash = Spawn (cls, Vec2OffsetZ(xo, yo, ONCEILINGZ), ALLOW_REPLACE); - flash.target = target; - flash.Vel.Z = -18; - flash.FriendPlayer = FriendPlayer; + if (flash != null) + { + flash.target = target; + flash.Vel.Z = -18; + flash.FriendPlayer = FriendPlayer; + } flash = Spawn("SpectralLightningV2", (pos.xy, ONCEILINGZ), ALLOW_REPLACE); - flash.target = target; - flash.Vel.Z = -18; - flash.FriendPlayer = FriendPlayer; + if (flash != null) + { + flash.target = target; + flash.Vel.Z = -18; + flash.FriendPlayer = FriendPlayer; + } } } diff --git a/wadsrc/static/zscript/strife/strifefunctions.txt b/wadsrc/static/zscript/strife/strifefunctions.txt index ed6c3854ef..5e0312a954 100644 --- a/wadsrc/static/zscript/strife/strifefunctions.txt +++ b/wadsrc/static/zscript/strife/strifefunctions.txt @@ -133,7 +133,10 @@ extend class Actor void A_DropFire() { Actor drop = Spawn("FireDroplet", pos + (0,0,24), ALLOW_REPLACE); - drop.Vel.Z = -1.; + if (drop != null) + { + drop.Vel.Z = -1.; + } A_Explode(64, 64, XF_NOSPLASH, damagetype: 'Fire'); }