diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index d2c59bef246..133ab0e6378 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -67,12 +67,24 @@
/datum/chemical_reaction/slimemetal/on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
- var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal
- M.amount = 15
- M.forceMove(get_turf(holder.my_atom))
- var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel
- P.amount = 5
- P.forceMove(get_turf(holder.my_atom))
+ var/turf/location = get_turf(holder.my_atom)
+ new /obj/item/stack/sheet/plasteel (location, 5)
+ new /obj/item/stack/sheet/metal (location, 15)
+
+/datum/chemical_reaction/slimeglass
+ name = "Slime Glass"
+ id = "m_glass"
+ result = null
+ required_reagents = list("water" = 1)
+ result_amount = 1
+ required_container = /obj/item/slime_extract/metal
+ required_other = 1
+
+/datum/chemical_reaction/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)
//Gold
/datum/chemical_reaction/slimecrit
@@ -209,8 +221,7 @@
required_other = 1
/datum/chemical_reaction/slimefrost/on_reaction(datum/reagents/holder)
- feedback_add_details("slime_cores_used","[type]")
-
+ feedback_add_details("slime_cores_used","[type]")
/datum/chemical_reaction/slimestabilizer
name = "Slime Stabilizer"
@@ -226,8 +237,6 @@
var/obj/item/slimepotion/stabilizer/P = new /obj/item/slimepotion/stabilizer
P.forceMove(get_turf(holder.my_atom))
-
-
//Dark Blue
/datum/chemical_reaction/slimefreeze
name = "Slime Freeze"
@@ -383,12 +392,10 @@
/datum/chemical_reaction/slimeplasma/on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
- var/obj/item/stack/sheet/mineral/plasma/P = new /obj/item/stack/sheet/mineral/plasma
- P.amount = 3
- P.forceMove(get_turf(holder.my_atom))
+ var/turf/location = get_turf(holder.my_atom)
+ new /obj/item/stack/sheet/mineral/plasma (location, 3)
//Red
-
/datum/chemical_reaction/slimemutator
name = "Slime Mutator"
id = "m_slimemutator"
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 439c037d0ba..c3072758331 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -25,8 +25,8 @@
..()
/obj/item/slime_extract/New()
- ..()
- create_reagents(100)
+ ..()
+ create_reagents(100)
/obj/item/slime_extract/grey
name = "grey slime extract"
@@ -124,7 +124,9 @@
w_class = 1
origin_tech = "biotech=4"
-/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user , proximity)
+/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user, proximity_flag)
+ if(!proximity_flag)
+ return
if(istype(target))
to_chat(user, "You cannot transfer [src] to [target]! It appears the potion must be given directly to a slime to absorb.") // le fluff faec
return
@@ -174,7 +176,7 @@
/obj/item/slimepotion/sentience
name = "sentience potion"
- desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels. Unlike normal slime potions, it can be absorbed by any nonsentient being."
+ desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
origin_tech = "biotech=5"
@@ -182,7 +184,9 @@
var/being_used = 0
var/sentience_type = SENTIENCE_ORGANIC
-/obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user)
+/obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user, proximity_flag)
+ if(!proximity_flag)
+ return
if(being_used || !ismob(M))
return
if(!isanimal(M) || M.ckey) //only works on animals that aren't player controlled
@@ -230,7 +234,9 @@
var/prompted = FALSE
var/animal_type = SENTIENCE_ORGANIC
-/obj/item/slimepotion/transference/afterattack(mob/living/M, mob/user)
+/obj/item/slimepotion/transference/afterattack(mob/living/M, mob/user, proximity_flag)
+ if(!proximity_flag)
+ return
if(prompted || !ismob(M))
return
if(!isanimal(M) || M.ckey) //much like sentience, these will not work on something that is already player controlled
@@ -345,15 +351,17 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
-/obj/item/slimepotion/speed/afterattack(obj/item/C, mob/user)
+/obj/item/slimepotion/speed/afterattack(obj/item/C, mob/user, proximity_flag)
+ if(!proximity_flag)
+ return
..()
if(!istype(C))
to_chat(user, "The potion can only be used on items!")
return
if(C.slowdown <= 0)
- to_chat(user, "The [C] can't be made any faster!")
+ to_chat(user, "[C] can't be made any faster!")
return..()
- to_chat(user, "You slather the red gunk over the [C], making it faster.")
+ to_chat(user, "You slather the red gunk over [C], making it faster.")
C.color = "#FF0000"
C.slowdown = 0
qdel(src)
@@ -365,8 +373,10 @@
icon_state = "bottle17"
var/uses = 3
-/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user)
+/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user, proximity_flag)
..()
+ if(!proximity_flag)
+ return
if(!uses)
qdel(src)
return
@@ -374,9 +384,9 @@
to_chat(user, "The potion can only be used on clothing!")
return
if(C.max_heat_protection_temperature == FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT)
- to_chat(user, "The [C] is already fireproof!")
+ to_chat(user, "[C] is already fireproof!")
return ..()
- to_chat(user, "You slather the blue gunk over the [C], fireproofing it.")
+ to_chat(user, "You slather the blue gunk over [C], fireproofing it.")
C.name = "fireproofed [C.name]"
C.color = "#000080"
C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
@@ -408,9 +418,9 @@
else
icon_state = "golem"
-/obj/effect/golemrune/attack_hand(mob/living/user as mob)
+/obj/effect/golemrune/attack_hand(mob/living/user)
var/mob/dead/observer/ghost
- for(var/mob/dead/observer/O in src.loc)
+ for(var/mob/dead/observer/O in loc)
if(!check_observer(O))
to_chat(O, "\red You are not eligible to become a golem.")
continue
@@ -433,21 +443,22 @@
volunteer(O)
/obj/effect/golemrune/attack_ghost(var/mob/dead/observer/O)
- if(!O) return
+ if(!O)
+ return
volunteer(O)
/obj/effect/golemrune/proc/check_observer(var/mob/dead/observer/O)
if(!O)
- return 0
+ return FALSE
if(!O.client)
- return 0
+ return FALSE
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
- return 0
+ return FALSE
if(!O.can_reenter_corpse)
- return 0
+ return FALSE
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
- return 0
- return 1
+ return FALSE
+ return TRUE
/obj/effect/golemrune/proc/volunteer(var/mob/dead/observer/O)
if(O in ghosts)
@@ -490,8 +501,8 @@
/obj/effect/timestop/proc/timestop()
playsound(get_turf(src), 'sound/magic/TIMEPARADOX2.ogg', 100, 1, -1)
for(var/i in 1 to duration-1)
- for(var/A in orange (freezerange, src.loc))
- if(istype(A, /mob/living))
+ for(var/A in orange (freezerange, loc))
+ if(isliving(A))
var/mob/living/M = A
if(M in immune)
continue