diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 652e39d6295..995085b1dce 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -480,7 +480,7 @@ SSblackbox.record_feedback("tally", "slime_cores_used", 1, type) //Oil -/datum/chemical_reaction/slimeexplosion +/datum/chemical_reaction/slime_explosion name = "Slime Explosion" id = "m_explosion" result = null @@ -489,13 +489,20 @@ required_container = /obj/item/slime_extract/oil required_other = 1 -/datum/chemical_reaction/slimeexplosion/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime_explosion/on_reaction(datum/reagents/holder) SSblackbox.record_feedback("tally", "slime_cores_used", 1, type) - var/turf/T = get_turf(holder.my_atom) - T.visible_message("The slime extract begins to vibrate violently !") - spawn(50) - if(holder && holder.my_atom) - explosion(get_turf(holder.my_atom), 1 ,3, 6) + var/obj/item/slime_extract/oil/extract = holder.my_atom + extract.visible_message("The slime extract begins to vibrate violently!") + addtimer(CALLBACK(src, .proc/explode, extract), 5 SECONDS) + +/datum/chemical_reaction/slime_explosion/proc/explode(obj/item/slime_extract/oil/extract) + if(QDELETED(extract)) + return + var/who = extract.injector_mob ? "[key_name_admin(extract.injector_mob)]" : "Unknown" + var/turf/extract_turf = get_turf(extract) + message_admins("[who] triggered an oil slime explosion at [COORD(extract_turf)].") + log_game("[who] triggered an oil slime explosion at [COORD(extract_turf)].") + explosion(extract_turf, 1, 3, 6) //Light Pink /datum/chemical_reaction/slimepotion2 diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index ac7249a8b63..5a83bce5536 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -13,7 +13,10 @@ throw_speed = 3 throw_range = 6 origin_tech = "biotech=3" - var/Uses = 1 // uses before it goes inert + /// Uses before it goes inert + var/Uses = 1 + /// The mob who last injected the extract with plasma, water or blood. Used for logging. + var/mob/living/injector_mob /obj/item/slime_extract/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/slimepotion/enhancer)) @@ -23,6 +26,8 @@ to_chat(user, "You apply the enhancer to the slime extract. It may now be reused one more time.") Uses++ qdel(O) + if(istype(O, /obj/item/reagent_containers/syringe)) + injector_mob = user ..() /obj/item/slime_extract/New()