diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index ba84d0ff113..d418c0a48a5 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -44,7 +44,6 @@
/turf/closed/mineral/attackby(obj/item/weapon/pickaxe/P, mob/user, params)
-
if (!user.IsAdvancedToolUser())
to_chat(usr, "You don't have the dexterity to do this!")
return
@@ -67,18 +66,16 @@
feedback_add_details("pick_used_mining","[P.type]")
else
return attack_hand(user)
- return
/turf/closed/mineral/proc/gets_drilled()
if (mineralType && (src.mineralAmt > 0) && (src.mineralAmt < 11))
var/i
- for (i=0;i= 2)
diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm
index 2b10ab05531..02a752c2d76 100644
--- a/code/modules/mining/equipment.dm
+++ b/code/modules/mining/equipment.dm
@@ -68,7 +68,7 @@
/obj/item/device/wormhole_jaunter/attack_self(mob/user)
user.visible_message("[user.name] activates the [src.name]!")
- feedback_add_details("jaunter", "U") // user activated
+ feedback_add_details("jaunter", "User") // user activated
activate(user)
/obj/item/device/wormhole_jaunter/proc/turf_check(mob/user)
@@ -124,13 +124,13 @@
if(triggered)
usr.visible_message("The [src] overloads and activates!")
- feedback_add_details("jaunter","E") // EMP accidental activation
+ feedback_add_details("jaunter","EMP") // EMP accidental activation
activate(usr)
/obj/item/device/wormhole_jaunter/proc/chasm_react(mob/user)
if(user.get_item_by_slot(slot_belt) == src)
to_chat(user, "Your [src] activates, saving you from the chasm!")
- feedback_add_details("jaunter","C") // chasm automatic activation
+ feedback_add_details("jaunter","Chasm") // chasm automatic activation
activate(user)
else
to_chat(user, "The [src] is not attached to your belt, preventing it from saving you from the chasm. RIP.")
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 630359d402b..92a764d10cc 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -87,7 +87,7 @@
user.sight |= SEE_MOBS
icon_state = "lantern"
wisp.orbit(user, 20)
- feedback_add_details("wisp_lantern","F") // freed
+ feedback_add_details("wisp_lantern","Freed") // freed
else
to_chat(user, "You return the wisp to the lantern.")
@@ -102,7 +102,7 @@
wisp.stop_orbit()
wisp.loc = src
icon_state = "lantern-blue"
- feedback_add_details("wisp_lantern","R") // returned
+ feedback_add_details("wisp_lantern","Returned") // returned
/obj/item/device/wisp_lantern/Initialize()
..()
@@ -229,7 +229,7 @@
/obj/item/device/immortality_talisman/attack_self(mob/user)
if(cooldown < world.time)
- feedback_add_details("immortality_talisman","U") // usage
+ feedback_add_details("immortality_talisman","Activated") // usage
cooldown = world.time + 600
user.visible_message("[user] vanishes from reality, leaving a a hole in [user.p_their()] place!")
var/obj/effect/immortality_talisman/Z = new(get_turf(src.loc))
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 7246a26ce5c..f270fa567fa 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -1,8 +1,11 @@
/datum/chemical_reaction/slime
+ var/deletes_extract = TRUE
/datum/chemical_reaction/slime/on_reaction(datum/reagents/holder)
- delete_extract(holder)
+ feedback_add_details("slime_cores_used","[type]")
+ if(deletes_extract)
+ delete_extract(holder)
/datum/chemical_reaction/slime/proc/delete_extract(datum/reagents/holder)
var/obj/item/slime_extract/M = holder.my_atom
@@ -19,12 +22,9 @@
required_other = 1
/datum/chemical_reaction/slime/slimespawn/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
var/mob/living/simple_animal/slime/S
S = new(get_turf(holder.my_atom), "grey")
- S.visible_message("Infused with plasma, the \
- core begins to quiver and grow, and soon a new baby slime \
- emerges from it!")
+ S.visible_message("Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!")
..()
/datum/chemical_reaction/slime/slimeinaprov
@@ -35,10 +35,6 @@
required_other = 1
required_container = /obj/item/slime_extract/grey
-/datum/chemical_reaction/slime/slimeinaprov/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
/datum/chemical_reaction/slime/slimemonkey
name = "Slime Monkey"
id = "m_monkey"
@@ -47,10 +43,8 @@
required_other = 1
/datum/chemical_reaction/slime/slimemonkey/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- for(var/i = 1, i <= 3, i++)
- var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube
- M.loc = get_turf(holder.my_atom)
+ for(var/i in 1 to 3)
+ new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(holder.my_atom))
..()
//Green
@@ -62,10 +56,6 @@
required_other = 1
required_container = /obj/item/slime_extract/green
-/datum/chemical_reaction/slime/slimemutate/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
//Mutated Green
/datum/chemical_reaction/slime/slimemutate_unstable
name = "Unstable Mutation Toxin"
@@ -76,10 +66,6 @@
required_container = /obj/item/slime_extract/green
mix_message = "The mixture rapidly expands and contracts, its appearance shifting into a sickening green."
-/datum/chemical_reaction/slime/slimemutate_unstable/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
//Metal
/datum/chemical_reaction/slime/slimemetal
name = "Slime Metal"
@@ -89,10 +75,9 @@
required_other = 1
/datum/chemical_reaction/slime/slimemetal/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
var/turf/location = get_turf(holder.my_atom)
- new /obj/item/stack/sheet/plasteel (location, 5)
- new /obj/item/stack/sheet/metal (location, 15)
+ new /obj/item/stack/sheet/plasteel(location, 5)
+ new /obj/item/stack/sheet/metal(location, 15)
..()
/datum/chemical_reaction/slime/slimeglass
@@ -103,60 +88,49 @@
required_other = 1
/datum/chemical_reaction/slime/slimeglass/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
var/turf/location = get_turf(holder.my_atom)
- new /obj/item/stack/sheet/rglass (location, 5)
- new /obj/item/stack/sheet/glass (location, 15)
+ new /obj/item/stack/sheet/rglass(location, 5)
+ new /obj/item/stack/sheet/glass(location, 15)
..()
//Gold
-/datum/chemical_reaction/slime/slimecrit
+/datum/chemical_reaction/slime/slimemobspawn
name = "Slime Crit"
id = "m_tele"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/gold
required_other = 1
+ deletes_extract = FALSE //we do delete, but we don't do so instantly
-/datum/chemical_reaction/slime/slimecrit/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
+/datum/chemical_reaction/slime/slimemobspawn/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
- T.visible_message("The slime extract begins to vibrate violently !")
- addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime"), 50)
+ summon_mobs(T)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
+ ..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
-/datum/chemical_reaction/slime/slimecritlesser
+/datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T)
+ T.visible_message("The slime extract begins to vibrate violently!")
+ addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime"), 50)
+
+/datum/chemical_reaction/slime/slimemobspawn/lesser
name = "Slime Crit Lesser"
id = "m_tele3"
required_reagents = list("blood" = 1)
- required_container = /obj/item/slime_extract/gold
- required_other = 1
-/datum/chemical_reaction/slime/slimecritlesser/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/turf/T = get_turf(holder.my_atom)
- T.visible_message("The slime extract begins to vibrate violently !")
+/datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
+ T.visible_message("The slime extract begins to vibrate violently!")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", "neutral"), 50)
- var/obj/item/slime_extract/M = holder.my_atom
- deltimer(M.qdel_timer)
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
-/datum/chemical_reaction/slime/slimecritfriendly
+/datum/chemical_reaction/slime/slimemobspawn/friendly
name = "Slime Crit Friendly"
id = "m_tele5"
required_reagents = list("water" = 1)
- required_container = /obj/item/slime_extract/gold
- required_other = 1
-/datum/chemical_reaction/slime/slimecritfriendly/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/turf/T = get_turf(holder.my_atom)
- T.visible_message("The slime extract begins to vibrate adorably !")
+/datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
+ T.visible_message("The slime extract begins to vibrate adorably!")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", "neutral"), 50)
- var/obj/item/slime_extract/M = holder.my_atom
- deltimer(M.qdel_timer)
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
//Silver
/datum/chemical_reaction/slime/slimebork
@@ -167,8 +141,24 @@
required_other = 1
/datum/chemical_reaction/slime/slimebork/on_reaction(datum/reagents/holder)
+ //BORK BORK BORK
+ var/list/borks = getborks()
+ var/turf/T = get_turf(holder.my_atom)
- feedback_add_details("slime_cores_used","[type]")
+ playsound(T, 'sound/effects/phasein.ogg', 100, 1)
+
+ for(var/mob/living/carbon/C in viewers(T, null))
+ C.flash_act()
+
+ for(var/i in 1 to 4 + rand(1,2))
+ var/chosen = pick(borks)
+ var/obj/B = new chosen(T)
+ if(prob(50))
+ for(var/j in 1 to rand(1, 3))
+ step(B, pick(NORTH,SOUTH,EAST,WEST))
+ ..()
+
+/datum/chemical_reaction/slime/slimebork/proc/getborks()
var/list/blocked = list(/obj/item/weapon/reagent_containers/food/snacks,
/obj/item/weapon/reagent_containers/food/snacks/store/bread,
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
@@ -188,53 +178,15 @@
)
blocked |= typesof(/obj/item/weapon/reagent_containers/food/snacks/customizable)
- var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - blocked
- // BORK BORK BORK
+ return typesof(/obj/item/weapon/reagent_containers/food/snacks) - blocked
- playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
-
- for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null))
- C.flash_act()
-
- for(var/i = 1, i <= 4 + rand(1,2), i++)
- var/chosen = pick(borks)
- var/obj/B = new chosen
- if(B)
- B.loc = get_turf(holder.my_atom)
- if(prob(50))
- for(var/j = 1, j <= rand(1, 3), j++)
- step(B, pick(NORTH,SOUTH,EAST,WEST))
- ..()
-
-
-/datum/chemical_reaction/slime/slimebork2
+/datum/chemical_reaction/slime/slimebork/drinks
name = "Slime Bork 2"
id = "m_tele4"
required_reagents = list("water" = 1)
- required_container = /obj/item/slime_extract/silver
- required_other = 1
-
-/datum/chemical_reaction/slime/slimebork2/on_reaction(datum/reagents/holder)
-
- feedback_add_details("slime_cores_used","[type]")
- var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/drinks)
- // BORK BORK BORK
-
- playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
-
- for(var/mob/living/carbon/M in viewers(get_turf(holder.my_atom), null))
- M.flash_act()
-
- for(var/i = 1, i <= 4 + rand(1,2), i++)
- var/chosen = pick(borks)
- var/obj/B = new chosen
- if(B)
- B.loc = get_turf(holder.my_atom)
- if(prob(50))
- for(var/j = 1, j <= rand(1, 3), j++)
- step(B, pick(NORTH,SOUTH,EAST,WEST))
- ..()
+/datum/chemical_reaction/slime/slimebork/drinks/getborks()
+ return subtypesof(/obj/item/weapon/reagent_containers/food/drinks)
//Blue
/datum/chemical_reaction/slime/slimefrost
@@ -245,11 +197,6 @@
required_container = /obj/item/slime_extract/blue
required_other = 1
-/datum/chemical_reaction/slime/slimefrost/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
-
/datum/chemical_reaction/slime/slimestabilizer
name = "Slime Stabilizer"
id = "m_slimestabilizer"
@@ -258,12 +205,9 @@
required_other = 1
/datum/chemical_reaction/slime/slimestabilizer/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/stabilizer/P = new /obj/item/slimepotion/stabilizer
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/stabilizer(get_turf(holder.my_atom))
..()
-
/datum/chemical_reaction/slime/slimefoam
name = "Slime Foam"
id = "m_foam"
@@ -272,11 +216,6 @@
required_container = /obj/item/slime_extract/blue
required_other = 1
-/datum/chemical_reaction/slime/slimefoam/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
-
//Dark Blue
/datum/chemical_reaction/slime/slimefreeze
name = "Slime Freeze"
@@ -286,12 +225,12 @@
required_other = 1
/datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The slime extract begins to vibrate adorably!")
addtimer(CALLBACK(src, .proc/freeze, holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
+ ..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefreeze/proc/freeze(datum/reagents/holder)
@@ -300,8 +239,6 @@
if(istype(T))
T.atmos_spawn_air("freon=50;TEMP=120")
-
-
/datum/chemical_reaction/slime/slimefireproof
name = "Slime Fireproof"
id = "m_fireproof"
@@ -310,9 +247,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimefireproof/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/fireproof/P = new /obj/item/slimepotion/fireproof
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/fireproof(get_turf(holder.my_atom))
..()
//Orange
@@ -324,24 +259,21 @@
required_container = /obj/item/slime_extract/orange
required_other = 1
-/datum/chemical_reaction/slime/slimecasp/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
/datum/chemical_reaction/slime/slimefire
name = "Slime fire"
id = "m_fire"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/orange
required_other = 1
+ deletes_extract = FALSE
/datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/turf/TU = get_turf(holder.my_atom)
- TU.visible_message("The slime extract begins to vibrate adorably!")
+ var/turf/T = get_turf(holder.my_atom)
+ T.visible_message("The slime extract begins to vibrate adorably!")
addtimer(CALLBACK(src, .proc/slime_burn, holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
+ ..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefire/proc/slime_burn(datum/reagents/holder)
@@ -359,12 +291,7 @@
required_container = /obj/item/slime_extract/orange
required_other = 1
-/datum/chemical_reaction/slime/slimesmoke/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
//Yellow
-
/datum/chemical_reaction/slime/slimeoverload
name = "Slime EMP"
id = "m_emp"
@@ -373,11 +300,9 @@
required_other = 1
/datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, created_volume)
- feedback_add_details("slime_cores_used","[type]")
empulse(get_turf(holder.my_atom), 3, 7)
..()
-
/datum/chemical_reaction/slime/slimecell
name = "Slime Powercell"
id = "m_cell"
@@ -386,9 +311,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, created_volume)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/weapon/stock_parts/cell/high/slime/P = new /obj/item/weapon/stock_parts/cell/high/slime
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/weapon/stock_parts/cell/high/slime(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimeglow
@@ -399,15 +322,12 @@
required_other = 1
/datum/chemical_reaction/slime/slimeglow/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The slime begins to emit a soft light. Squeezing it will cause it to grow brightly.")
- var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime
- F.loc = get_turf(holder.my_atom)
+ new /obj/item/device/flashlight/slime(T)
..()
//Purple
-
/datum/chemical_reaction/slime/slimepsteroid
name = "Slime Steroid"
id = "m_steroid"
@@ -416,9 +336,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimepsteroid/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/steroid/P = new /obj/item/slimepotion/steroid
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/steroid(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimejam
@@ -429,11 +347,6 @@
required_container = /obj/item/slime_extract/purple
required_other = 1
-/datum/chemical_reaction/slime/slimejam/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
-
//Dark Purple
/datum/chemical_reaction/slime/slimeplasma
name = "Slime Plasma"
@@ -443,9 +356,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimeplasma/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/turf/location = get_turf(holder.my_atom)
- new /obj/item/stack/sheet/mineral/plasma (location, 3)
+ new /obj/item/stack/sheet/mineral/plasma(get_turf(holder.my_atom), 3)
..()
//Red
@@ -458,9 +369,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimemutator/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/mutator/P = new /obj/item/slimepotion/mutator
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/mutator(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimebloodlust
@@ -471,13 +380,11 @@
required_other = 1
/datum/chemical_reaction/slime/slimebloodlust/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
for(var/mob/living/simple_animal/slime/slime in viewers(get_turf(holder.my_atom), null))
slime.rabid = 1
slime.visible_message("The [slime] is driven into a frenzy!")
..()
-
/datum/chemical_reaction/slime/slimespeed
name = "Slime Speed"
id = "m_speed"
@@ -486,12 +393,9 @@
required_other = 1
/datum/chemical_reaction/slime/slimespeed/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/speed/P = new /obj/item/slimepotion/speed
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/speed(get_turf(holder.my_atom))
..()
-
//Pink
/datum/chemical_reaction/slime/docility
name = "Docility Potion"
@@ -501,9 +405,7 @@
required_other = 1
/datum/chemical_reaction/slime/docility/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/docility/P = new /obj/item/slimepotion/docility
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/docility(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/gender
@@ -514,9 +416,7 @@
required_other = 1
/datum/chemical_reaction/slime/gender/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/genderchange/G = new /obj/item/slimepotion/genderchange
- G.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/genderchange(get_turf(holder.my_atom))
..()
//Black
@@ -528,10 +428,6 @@
required_other = 1
required_container = /obj/item/slime_extract/black
-/datum/chemical_reaction/slime/slimemutate2/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
//Oil
/datum/chemical_reaction/slime/slimeexplosion
name = "Slime Explosion"
@@ -539,9 +435,9 @@
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/oil
required_other = 1
+ deletes_extract = FALSE
/datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
var/turf/T = get_turf(holder.my_atom)
var/lastkey = holder.my_atom.fingerprintslast
var/touch_msg = "N/A"
@@ -554,6 +450,7 @@
addtimer(CALLBACK(src, .proc/boom, holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
+ ..()
M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder)
@@ -569,10 +466,6 @@
required_container = /obj/item/slime_extract/oil
required_other = 1
-/datum/chemical_reaction/slime/slimecornoil/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- ..()
-
//Light Pink
/datum/chemical_reaction/slime/slimepotion2
name = "Slime Potion 2"
@@ -582,9 +475,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/sentience/P = new /obj/item/slimepotion/sentience
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/sentience
..()
//Adamantine
@@ -596,10 +487,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimegolem/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/effect/golemrune/Z = new /obj/effect/golemrune
- Z.loc = get_turf(holder.my_atom)
- notify_ghosts("Golem rune created in [get_area(Z)].", 'sound/effects/ghost2.ogg', source = Z)
+ new /obj/effect/golemrune(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimegolem2
@@ -610,9 +498,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimegolem2/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/golem_shell/artificial/Z = new /obj/item/golem_shell/artificial
- Z.loc = get_turf(holder.my_atom)
+ new /obj/item/golem_shell/artificial(get_turf(holder.my_atom))
..()
//Bluespace
@@ -624,10 +510,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimefloor2/on_reaction(datum/reagents/holder, created_volume)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/stack/tile/bluespace/P = new /obj/item/stack/tile/bluespace
- P.amount = 25
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/stack/tile/bluespace(get_turf(holder.my_atom), 25)
..()
@@ -639,10 +522,8 @@
required_other = 1
/datum/chemical_reaction/slime/slimecrystal/on_reaction(datum/reagents/holder, created_volume)
- feedback_add_details("slime_cores_used","[type]")
- if(holder.my_atom)
- var/obj/item/weapon/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom))
- BC.visible_message("The [BC.name] appears out of thin air!")
+ var/obj/item/weapon/ore/bluespace_crystal/BC = new (get_turf(holder.my_atom))
+ BC.visible_message("The [BC.name] appears out of thin air!")
..()
//Cerulean
@@ -654,12 +535,9 @@
required_other = 1
/datum/chemical_reaction/slime/slimepsteroid2/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/enhancer/P = new /obj/item/slimepotion/enhancer
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/enhancer(get_turf(holder.my_atom))
..()
-
/datum/chemical_reaction/slime/slime_territory
name = "Slime Territory"
id = "s_territory"
@@ -668,9 +546,7 @@
required_other = 1
/datum/chemical_reaction/slime/slime_territory/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/areaeditor/blueprints/slime/P = new /obj/item/areaeditor/blueprints/slime
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/areaeditor/blueprints/slime(get_turf(holder.my_atom))
..()
//Sepia
@@ -682,15 +558,12 @@
required_other = 1
/datum/chemical_reaction/slime/slimestop/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/mob/mob = get_mob_by_key(holder.my_atom.fingerprintslast)
var/obj/effect/timestop/T = new /obj/effect/timestop
- T.loc = get_turf(holder.my_atom)
- T.immune += mob
+ T.forceMove(get_turf(holder.my_atom))
+ T.immune += get_mob_by_key(holder.my_atom.fingerprintslast)
T.timestop()
..()
-
/datum/chemical_reaction/slime/slimecamera
name = "Slime Camera"
id = "m_camera"
@@ -699,11 +572,8 @@
required_other = 1
/datum/chemical_reaction/slime/slimecamera/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/device/camera/P = new /obj/item/device/camera
- P.loc = get_turf(holder.my_atom)
- var/obj/item/device/camera_film/Z = new /obj/item/device/camera_film
- Z.loc = get_turf(holder.my_atom)
+ new /obj/item/device/camera(get_turf(holder.my_atom))
+ new /obj/item/device/camera_film(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimefloor
@@ -714,16 +584,10 @@
required_other = 1
/datum/chemical_reaction/slime/slimefloor/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/stack/tile/sepia/P = new /obj/item/stack/tile/sepia
- P.amount = 25
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/stack/tile/sepia(get_turf(holder.my_atom), 25)
..()
-
//Pyrite
-
-
/datum/chemical_reaction/slime/slimepaint
name = "Slime Paint"
id = "s_paint"
@@ -732,15 +596,10 @@
required_other = 1
/datum/chemical_reaction/slime/slimepaint/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/list/paints = subtypesof(/obj/item/weapon/paint)
- var/chosen = pick(paints)
- var/obj/P = new chosen
- if(P)
- P.loc = get_turf(holder.my_atom)
+ var/chosen = pick(subtypesof(/obj/item/weapon/paint))
+ new chosen(get_turf(holder.my_atom))
..()
-
/datum/chemical_reaction/slime/slimecrayon
name = "Slime Crayon"
id = "s_crayon"
@@ -749,12 +608,8 @@
required_other = 1
/datum/chemical_reaction/slime/slimecrayon/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/list/crayons = difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan))
- var/chosen = pick(crayons)
- var/obj/P = new chosen
- if(P)
- P.loc = get_turf(holder.my_atom)
+ var/chosen = pick(difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan)))
+ new chosen(get_turf(holder.my_atom))
..()
//Rainbow :o)
@@ -766,12 +621,8 @@
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/mob/living/simple_animal/slime/random/S
- S = new(get_turf(holder.my_atom))
- S.visible_message("Infused with plasma, the \
- core begins to quiver and grow, and soon a new baby slime emerges \
- from it!")
+ var/mob/living/simple_animal/slime/random/S = new (get_turf(holder.my_atom))
+ S.visible_message("Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!")
..()
/datum/chemical_reaction/slime/slime_transfer
@@ -782,9 +633,7 @@
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/slime_transfer/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- var/obj/item/slimepotion/transference/P = new /obj/item/slimepotion/transference
- P.loc = get_turf(holder.my_atom)
+ new /obj/item/slimepotion/transference(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/flight_potion
@@ -795,7 +644,6 @@
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/flight_potion/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
- new/obj/item/weapon/reagent_containers/glass/bottle/potion/flight(get_turf(holder.my_atom))
+ new /obj/item/weapon/reagent_containers/glass/bottle/potion/flight(get_turf(holder.my_atom))
..()
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index f31cd011312..38d742c5be0 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -482,9 +482,14 @@
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
layer = TURF_LAYER
-/obj/effect/golemrune/New()
- ..()
+/obj/effect/golemrune/Initialize()
+ . = ..()
START_PROCESSING(SSobj, src)
+ notify_ghosts("Golem rune created in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src)
+
+/obj/effect/golemrune/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
/obj/effect/golemrune/process()
var/mob/dead/observer/ghost