diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm
index e06aa3ab576..85314155c58 100644
--- a/code/__DEFINES/research.dm
+++ b/code/__DEFINES/research.dm
@@ -75,3 +75,13 @@
)
#define TECHWEB_BOMB_POINTCAP 50000 //Adjust as needed; Stops toxins from nullifying RND progression mechanics. Current Value Cap Radius: 100
+
+//research point values for slime extracts
+
+#define SLIME_RESEARCH_TIER_0 100
+#define SLIME_RESEARCH_TIER_1 500
+#define SLIME_RESEARCH_TIER_2 1000
+#define SLIME_RESEARCH_TIER_3 1500
+#define SLIME_RESEARCH_TIER_4 2000
+#define SLIME_RESEARCH_TIER_5 2500
+#define SLIME_RESEARCH_TIER_RAINBOW 5000
diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm
index b71daaa0d28..c7688e01686 100644
--- a/code/controllers/subsystem/research.dm
+++ b/code/controllers/subsystem/research.dm
@@ -30,6 +30,7 @@ SUBSYSTEM_DEF(research)
)
var/list/errored_datums = list()
var/list/point_types = list() //typecache style type = TRUE list
+ var/list/slime_already_researched = list() //Slime cores that have already been researched
//----------------------------------------------
var/list/single_server_income = list(TECHWEB_POINT_TYPE_GENERIC = 52.3)
var/multiserver_calculation = FALSE
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index 036578f718c..e893c7cc8b5 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -169,6 +169,28 @@
current_potion = O
to_chat(user, "You load [O] in the console's potion slot[replaced ? ", replacing the one that was there before" : ""].")
return
+ else if(istype(O, /obj/item/slime_extract))
+ var/obj/item/slime_extract/E = O
+ if(!SSresearch.slime_already_researched[E.type])
+ if(!E.research)
+ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 3, -1)
+ visible_message("[src] buzzes and displays a message: Invalid extract! (You shouldn't be seeing this. If you are, tell someone.)")
+ return
+ if(E.Uses <= 0)
+ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 3, -1)
+ visible_message("[src] buzzes and displays a message: Extract consumed - no research available.")
+ return
+ else
+ playsound(src, 'sound/machines/ping.ogg', 50, 3, -1)
+ visible_message("You insert [E] into a slot on the [src]. It pings and prints out some research notes worth [E.research] points!")
+ new /obj/item/research_notes(drop_location(), E.research, "xenobiology")
+ SSresearch.slime_already_researched[E.type] = TRUE
+ qdel(O)
+ return
+ else
+ visible_message("[src] buzzes and displays a message: Slime extract already researched!")
+ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 3, -1)
+ return
..()
/obj/machinery/computer/camera_advanced/xenobio/multitool_act(mob/living/user, obj/item/multitool/I)
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index f7440816b32..2c265031e13 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -16,6 +16,7 @@
var/effectmod
var/list/activate_reagents = list() //Reagents required for activation
var/recurring = FALSE
+ var/research //Research point value
/obj/item/slime_extract/examine(mob/user)
. = ..()
@@ -79,6 +80,7 @@
icon_state = "grey slime extract"
effectmod = "reproductive"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_0
/obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -104,6 +106,7 @@
icon_state = "gold slime extract"
effectmod = "symbiont"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_4
/obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -133,6 +136,7 @@
icon_state = "silver slime extract"
effectmod = "consuming"
activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_2
/obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -158,6 +162,7 @@
icon_state = "metal slime extract"
effectmod = "industrial"
activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_1
/obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -182,6 +187,7 @@
icon_state = "purple slime extract"
effectmod = "regenerative"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_1
/obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -201,6 +207,7 @@
icon_state = "dark purple slime extract"
effectmod = "self-sustaining"
activate_reagents = list(/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_2
/obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -224,6 +231,7 @@
icon_state = "orange slime extract"
effectmod = "burning"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_1
/obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -244,6 +252,7 @@
icon_state = "yellow slime extract"
effectmod = "charged"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_2
/obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -267,6 +276,7 @@
icon_state = "red slime extract"
effectmod = "sanguine"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_4
/obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -287,6 +297,7 @@
icon_state = "blue slime extract"
effectmod = "stabilized"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_1
/obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -307,6 +318,7 @@
icon_state = "dark blue slime extract"
effectmod = "chilling"
activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_2
/obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -330,6 +342,7 @@
icon_state = "pink slime extract"
effectmod = "gentle"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_4
/obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -358,6 +371,7 @@
icon_state = "green slime extract"
effectmod = "mutative"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/uranium/radium)
+ research = SLIME_RESEARCH_TIER_4
/obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -382,6 +396,7 @@
icon_state = "light pink slime extract"
effectmod = "loyal"
activate_reagents = list(/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_5
/obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -406,6 +421,7 @@
icon_state = "black slime extract"
effectmod = "transformative"
activate_reagents = list(/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_5
/obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -427,6 +443,7 @@
icon_state = "oil slime extract"
effectmod = "detonating"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_5
/obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -450,6 +467,7 @@
icon_state = "adamantine slime extract"
effectmod = "crystalline"
activate_reagents = list(/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_5
/obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -483,6 +501,7 @@
var/teleport_x = 0
var/teleport_y = 0
var/teleport_z = 0
+ research = SLIME_RESEARCH_TIER_3
/obj/item/slime_extract/bluespace/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -515,6 +534,7 @@
icon_state = "pyrite slime extract"
effectmod = "prismatic"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_3
/obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -542,6 +562,7 @@
icon_state = "cerulean slime extract"
effectmod = "recurring"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma)
+ research = SLIME_RESEARCH_TIER_3
/obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -562,6 +583,7 @@
icon_state = "sepia slime extract"
effectmod = "lengthened"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
+ research = SLIME_RESEARCH_TIER_3
/obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -584,6 +606,7 @@
icon_state = "rainbow slime extract"
effectmod = "hyperchromatic"
activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,"lesser plasma",/datum/reagent/toxin/slimejelly,"holy water and uranium") //Curse this snowflake reagent list.
+ research = SLIME_RESEARCH_TIER_RAINBOW
/obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)