diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index 95c0d420b3e5..2a3ff577a245 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -14,9 +14,12 @@ var/flags_embryo = FALSE // Used in /ciphering/predator property /// The ckey of any player hugger that made this embryo var/hugger_ckey + /// The total time the person is hugged divided by stages until burst + var/per_stage_hugged_time = 90 //Set in Initialize due to config /obj/item/alien_embryo/Initialize(mapload, ...) . = ..() + per_stage_hugged_time = CONFIG_GET(number/embryo_burst_timer) / 5 if(istype(loc, /mob/living)) affected_mob = loc affected_mob.status_flags |= XENO_HOST @@ -76,8 +79,6 @@ /obj/item/alien_embryo/proc/process_growth(delta_time) var/datum/hive_status/hive = GLOB.hive_datum[hivenumber] - /// The total time the person is hugged divided by stages until burst - var/per_stage_hugged_time = CONFIG_GET(number/embryo_burst_timer) / 5 //Low temperature seriously hampers larva growth (as in, way below livable), so does stasis if(!hive.hardcore) // Cannot progress if the hive has entered hardcore mode. if(affected_mob.in_stasis || affected_mob.bodytemperature < 170) diff --git a/code/modules/reagents/chemistry_properties/prop_positive.dm b/code/modules/reagents/chemistry_properties/prop_positive.dm index 65099aa3e462..7f476cecf2c5 100644 --- a/code/modules/reagents/chemistry_properties/prop_positive.dm +++ b/code/modules/reagents/chemistry_properties/prop_positive.dm @@ -481,24 +481,24 @@ description = "Antimicrobial property specifically targeting parasitic pathogens in the body disrupting their growth and potentially killing them." rarity = PROPERTY_UNCOMMON -/datum/chem_property/positive/antiparasitic/process(mob/living/M, potency = 1, delta_time) - if(!ishuman(M)) - return - var/mob/living/carbon/human/H = M - for(var/content in H.contents) - var/obj/item/alien_embryo/A = content - if(A && istype(A)) - if(A.counter > 0) - A.counter = A.counter - potency - H.take_limb_damage(0,POTENCY_MULTIPLIER_MEDIUM*potency) +/datum/chem_property/positive/antiparasitic/process(mob/living/current_mob, potency = 1, delta_time) + if(!ishuman(current_mob)) + return + var/mob/living/carbon/human/current_human = current_mob + for(var/content in current_human.contents) + var/obj/item/alien_embryo/embryo = content + if(embryo && istype(embryo)) + if(embryo.counter > 0) + embryo.counter = embryo.counter - potency + current_human.take_limb_damage(0,POTENCY_MULTIPLIER_MEDIUM*potency) else - A.stage-- - if(A.stage <= 0)//if we reach this point, the embryo dies and the occupant takes a nasty amount of acid damage - qdel(A) - H.take_limb_damage(0,rand(20,40)) - H.vomit() + embryo.stage-- + if(embryo.stage <= 0)//if we reach this point, the embryo dies and the occupant takes a nasty amount of acid damage + qdel(embryo) + current_human.take_limb_damage(0,rand(20,40)) + current_human.vomit() else - A.counter = 90 + embryo.counter = embryo.per_stage_hugged_time /datum/chem_property/positive/antiparasitic/process_overdose(mob/living/M, potency = 1) M.apply_damage(potency, TOX)