From 25a6da87e9e2fe16537ac8f5e5eb31497c0df6ab Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sun, 18 Sep 2022 07:26:57 +0200 Subject: [PATCH] [MIRROR] Makes medibeams more resilient to lag [MDB IGNORE] (#16293) * Makes medibeams more resilient to lag (#69919) * Makes medibeams more resilient to lag Co-authored-by: ShizCalev --- code/datums/beam.dm | 7 +++++-- code/modules/projectiles/guns/special/medbeam.dm | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index a92b0480caa..26dfda54898 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -118,8 +118,7 @@ for(N in 0 to length-1 step 32)//-1 as we want < not <=, but we want the speed of X in Y to Z and step X if(QDELETED(src)) break - var/obj/effect/ebeam/segment = new beam_type(origin_turf) - segment.owner = src + var/obj/effect/ebeam/segment = new beam_type(origin_turf, src) elements += segment //Assign our single visual ebeam to each ebeam's vis_contents @@ -165,6 +164,10 @@ anchored = TRUE var/datum/beam/owner +/obj/effect/ebeam/Initialize(mapload, beam_owner) + owner = beam_owner + return ..() + /obj/effect/ebeam/update_overlays() . = ..() var/mutable_appearance/emmisive = emissive_appearance(icon, icon_state) diff --git a/code/modules/projectiles/guns/special/medbeam.dm b/code/modules/projectiles/guns/special/medbeam.dm index 26a41fddee0..677089e1e93 100644 --- a/code/modules/projectiles/guns/special/medbeam.dm +++ b/code/modules/projectiles/guns/special/medbeam.dm @@ -123,6 +123,13 @@ qdel(dummy) return FALSE for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams! + if(QDELETED(current_beam)) + break //We shouldn't be processing anymore. + if(QDELETED(B)) + continue + if(!B.owner) + stack_trace("beam without an owner! [B]") + continue if(B.owner.origin != current_beam.origin) explosion(B.loc, heavy_impact_range = 3, light_impact_range = 5, flash_range = 8, explosion_cause = src) qdel(dummy)