diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index a564d7f9f9..bfbfdf9762 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -436,13 +436,13 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
/obj/item/toy/plush/random/Initialize()
var/newtype
var/list/snowflake_list = CONFIG_GET(keyed_list/snowflake_plushies)
-
+
/// If there are no snowflake plushies we'll default to base plush, so we grab from the valid list
if (snowflake_list.len)
newtype = prob(CONFIG_GET(number/snowflake_plushie_prob)) ? /obj/item/toy/plush/random_snowflake : pick(GLOB.valid_plushie_paths)
- else
+ else
newtype = pick(GLOB.valid_plushie_paths)
-
+
new newtype(loc)
return INITIALIZE_HINT_QDEL
diff --git a/code/modules/mob/living/simple_animal/friendly/plushie.dm b/code/modules/mob/living/simple_animal/friendly/plushie.dm
new file mode 100644
index 0000000000..d992c704f5
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/friendly/plushie.dm
@@ -0,0 +1,79 @@
+//simplemob plushie that can be controlled by players
+/mob/living/simple_animal/pet/plushie
+ name = "Plushie"
+ desc = "A living plushie!"
+ icon = 'icons/obj/plushes.dmi'
+ icon_state = "debug"
+ icon_living = "debug"
+ icon_dead = "debug"
+ speak_emote = list("squeaks")
+ maxHealth = 50
+ health = 50
+ density = FALSE
+ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
+ mob_size = MOB_SIZE_TINY
+ mob_biotypes = MOB_ORGANIC
+ verb_say = "squeaks"
+ verb_ask = "squeaks inquisitively"
+ verb_exclaim = "squeaks intensely"
+ verb_yell = "squeaks intensely"
+ attack_sound = 'sound/items/toysqueak1.ogg'
+ attacked_sound = 'sound/items/toysqueak1.ogg'
+ melee_damage_type = STAMINA
+ melee_damage_lower = 0
+ melee_damage_upper = 1
+ attack_verb_continuous = "squeaks"
+ attack_verb_simple = "squeak"
+ deathmessage = "lets out a faint squeak as the glint in its eyes disappears"
+ footstep_type = FOOTSTEP_MOB_BAREFOOT
+ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
+ minbodytemp = 0
+ pressure_resistance = 200
+
+/mob/living/simple_animal/pet/plushie/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/mob_holder, "plushie")
+
+//shell that lets people turn into the plush or poll for ghosts
+/obj/item/toy/plushie_shell
+ name = "Plushie Shell"
+ desc = "A plushie. Its eyes seem to be staring right back at you. Something isn't quite right."
+ icon = 'icons/obj/plushes.dmi'
+ icon_state = "debug"
+ var/obj/item/toy/plush/stored_plush = null
+
+//attacking yourself transfers your mind into the plush!
+/obj/item/toy/plushie_shell/attack_self(mob/user)
+ if(user.mind)
+ var/safety = alert(user, "The plushie is staring back at you intensely, it seems cursed! (Permanently become a plushie)", "Hugging this is a bad idea.", "Hug it!", "Cancel")
+ if(safety == "Cancel" || !in_range(src, user))
+ return
+ to_chat(user, "You hug the strange plushie. You fool.")
+
+ //setup the mob
+ var/mob/living/simple_animal/pet/plushie/new_plushie = new /mob/living/simple_animal/pet/plushie/(user.loc)
+ new_plushie.icon = src.icon
+ new_plushie.icon_living = src.icon_state
+ new_plushie.icon_dead = src.icon_state
+ new_plushie.icon_state = src.icon_state
+ new_plushie.name = src.name
+
+ //make the mob sentient
+ user.mind.transfer_to(new_plushie)
+
+ //add sounds to mob
+ new_plushie.AddComponent(/datum/component/squeak, stored_plush.squeak_override)
+ if(length(stored_plush.squeak_override) > 0)
+ new_plushie.attack_sound = stored_plush.squeak_override[1]
+ new_plushie.attacked_sound = stored_plush.squeak_override[1]
+
+ //take care of the user's old body and the old shell
+ user.dust(drop_items = TRUE)
+ qdel(src)
+
+//low regen over time
+/mob/living/simple_animal/pet/plushie/Life()
+ if(stat)
+ return
+ if(health < maxHealth)
+ heal_overall_damage(5) //Decent life regen, they're not able to hurt anyone so this shouldn't be an issue (butterbear for reference has 10 regen)
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 82efabc4e2..56ad24c599 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -159,6 +159,35 @@
log_reagent("FERMICHEM: [M] ckey: [M.key]'s tongue has been made permanent")
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// PLUSHMIUM
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//A chemical you can spray on plushies to turn them into a 'shell'
+//Hugging the plushie turns yourself into the plushie!
+/datum/reagent/fermi/plushmium
+ name = "Plushmium"
+ description = "A strange chemical, seeming almost fluffy, if it were not for it being a liquid. Known to have a strange effect on plushies."
+ color = "#fbcbd7"
+ taste_description = "the soft feeling of a plushie"
+ pH = 5
+ value = 50
+ can_synth = TRUE
+
+/datum/reagent/fermi/plushmium/reaction_obj(obj/O, reac_volume)
+ if(istype(O, /obj/item/toy/plush) && reac_volume >= 5)
+ O.loc.visible_message("The plushie seems to be staring back at you.")
+ var/obj/item/toy/plushie_shell/new_shell = new /obj/item/toy/plushie_shell(O.loc)
+ new_shell.name = O.name
+ new_shell.icon = O.icon
+ new_shell.icon_state = O.icon_state
+ new_shell.stored_plush = O
+ O.forceMove(new_shell)
+
+//Extra interaction for which spraying it on an existing sentient plushie aheals them, so they can be revived!
+/datum/reagent/fermi/plushmium/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
+ if(istype(M, /mob/living/simple_animal/pet/plushie) && reac_volume >= 1)
+ M.revive(full_heal = 1, admin_revive = 1)
+
///////////////////////////////////////////////////////////////////////////////////////////////
//Nanite removal
//Writen by Trilby!! Embellsished a little by me.
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index a8998a51ac..144ac82afd 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -480,6 +480,33 @@
RateUpLim = 15
FermiChem = TRUE
+/datum/chemical_reaction/fermi/plushmium // done
+ name = "Plushification serum"
+ id = /datum/reagent/fermi/plushmium
+ results = list(/datum/reagent/fermi/plushmium = 5)
+ required_reagents = list(/datum/reagent/medicine/strange_reagent = 5, /datum/reagent/drug/happiness = 3, /datum/reagent/blood = 10, /datum/reagent/consumable/laughter = 5, /datum/reagent/toxin/bad_food = 6)
+ //mix_message = ""
+ //FermiChem vars:
+ OptimalTempMin = 400
+ OptimalTempMax = 666
+ ExplodeTemp = 800
+ OptimalpHMin = 2
+ OptimalpHMax = 5
+ ReactpHLim = 6
+ //CatalystFact = 0 //To do 1
+ CurveSharpT = 8
+ CurveSharppH = 0.5
+ ThermicConstant = -2
+ HIonRelease = -0.1
+ RateUpLim = 2
+ FermiChem = TRUE
+ FermiExplode = TRUE
+ PurityMin = 0.6
+
+/datum/chemical_reaction/fermi/plushmium/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
+ new /obj/item/toy/plush/random(get_turf(my_atom))
+ my_atom.visible_message("The reaction suddenly zaps, creating a plushie!")
+ my_atom.reagents.clear_reagents()
/datum/chemical_reaction/fermi/basic_buffer/FermiFinish(datum/reagents/holder, atom/my_atom) //might need this
var/datum/reagent/fermi/basic_buffer/Fb = locate(/datum/reagent/fermi/basic_buffer) in my_atom.reagents.reagent_list
diff --git a/tgstation.dme b/tgstation.dme
index 4686839b91..eba550d70b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2519,6 +2519,7 @@
#include "code\modules\mob\living\simple_animal\friendly\panda.dm"
#include "code\modules\mob\living\simple_animal\friendly\penguin.dm"
#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
+#include "code\modules\mob\living\simple_animal\friendly\plushie.dm"
#include "code\modules\mob\living\simple_animal\friendly\sloth.dm"
#include "code\modules\mob\living\simple_animal\friendly\snake.dm"
#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm"