[Bugfix] Internal organs rot outside body (#14213)

* added processing of internal organs

* stop processing after insert organ

* refactor
This commit is contained in:
RedWolfie
2020-09-25 18:40:31 -04:00
committed by GitHub
parent 78571cc151
commit ca838d90f8
3 changed files with 37 additions and 7 deletions
-6
View File
@@ -172,12 +172,6 @@
if(parent.germ_level < germ_level && ( parent.germ_level < INFECTION_LEVEL_ONE * 2 || prob(30)))
parent.germ_level++
/obj/item/organ/internal/handle_germs()
..()
if(germ_level >= INFECTION_LEVEL_TWO)
if(prob(3)) //about once every 30 seconds
receive_damage(1, silent = prob(30))
/obj/item/organ/proc/rejuvenate()
damage = 0
germ_level = 0
@@ -808,3 +808,23 @@ Note that amputating the affected organ does in fact remove the infection from t
var/obj/item/organ/external/L = X
for(var/obj/item/I in L.embedded_objects)
return 1
/obj/item/organ/external/emp_act(severity)
if(!is_robotic() || emp_proof)
return
if(tough)
switch(severity)
if(1)
receive_damage(0, 5.5)
if(owner)
owner.Stun(10)
if(2)
receive_damage(0, 2.8)
if(owner)
owner.Stun(5)
else
switch(severity)
if(1)
receive_damage(0, 20)
if(2)
receive_damage(0, 7)
+17 -1
View File
@@ -36,13 +36,13 @@
log_runtime(EXCEPTION("[src] attempted to insert into a [parent_organ], but [parent_organ] wasn't an organ! [atom_loc_line(M)]"), src)
else
parent.internal_organs |= src
//M.internal_bodyparts_by_name[src] |= src(H,1)
loc = null
for(var/X in actions)
var/datum/action/A = X
A.Grant(M)
if(vital)
M.update_stat("Vital organ inserted")
STOP_PROCESSING(SSobj, src)
// Removes the given organ from its owner.
// Returns the removed object, which is usually just itself
@@ -71,6 +71,7 @@
for(var/X in actions)
var/datum/action/A = X
A.Remove(M)
START_PROCESSING(SSobj, src)
return src
/obj/item/organ/internal/emp_act(severity)
@@ -344,3 +345,18 @@
head_organ.f_style = "Very Long Beard"
head_organ.facial_colour = "#D8C078"
H.update_fhair()
/obj/item/organ/internal/emp_act(severity)
if(!is_robotic() || emp_proof)
return
switch(severity)
if(1)
receive_damage(20, 1)
if(2)
receive_damage(7, 1)
/obj/item/organ/internal/handle_germs()
..()
if(germ_level >= INFECTION_LEVEL_TWO)
if(prob(3)) //about once every 30 seconds
receive_damage(1, silent = prob(30))