Organ Runtime Fix (#2005)

changes:

Added a QDELETED check to organ processing so they won't continue to process if they were erroneously left in the processing objects list after being deleted.
Fixed a bad robotic organ check on spiders.
This commit is contained in:
Lohikar
2017-03-28 14:07:52 -05:00
committed by skull132
parent 5188955339
commit 591fe86468
3 changed files with 12 additions and 1 deletions
@@ -84,7 +84,7 @@
var/mob/living/carbon/human/H = .
if(prob(poison_per_bite))
var/obj/item/organ/external/O = pick(H.organs)
if(!(O.robotic >= ORGAN_ROBOT))
if(!(O.status & ORGAN_ROBOT))
var/eggs = new /obj/effect/spider/eggcluster(O, src)
O.implants += eggs
H << "<span class='warning'>The [src] injects something into your [O.name]!</span>"
+9
View File
@@ -103,6 +103,11 @@ var/list/organ_cache = list()
if(loc != owner)
owner = null
if (QDELETED(src))
log_debug("QDELETED organ [DEBUG_REF(src)] had process() called!")
processing_objects -= src
return
//dead already, no need for more processing
if(status & ORGAN_DEAD)
return
@@ -117,6 +122,10 @@ var/list/organ_cache = list()
return
if(!owner)
if (QDELETED(reagents))
log_debug("Organ [DEBUG_REF(src)] had QDELETED reagents! Regenerating.")
create_reagents(5)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
if(B && prob(40))
reagents.remove_reagent("blood",0.1)