diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 6065d6a514..a79faa60d2 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -699,54 +699,6 @@
desc = "A \"Space Life\" brand Emergency Response Team Commander action figure."
icon_state = "ert"
-/obj/item/toy/therapy_red
- name = "red therapy doll"
- desc = "A toy for therapeutic and recreational purposes. This one is red."
- icon = 'icons/obj/toy.dmi'
- icon_state = "therapyred"
- item_state = "egg4" // It's the red egg in items_left/righthand
- w_class = ITEMSIZE_TINY
-
-/obj/item/toy/therapy_purple
- name = "purple therapy doll"
- desc = "A toy for therapeutic and recreational purposes. This one is purple."
- icon = 'icons/obj/toy.dmi'
- icon_state = "therapypurple"
- item_state = "egg1" // It's the magenta egg in items_left/righthand
- w_class = ITEMSIZE_TINY
-
-/obj/item/toy/therapy_blue
- name = "blue therapy doll"
- desc = "A toy for therapeutic and recreational purposes. This one is blue."
- icon = 'icons/obj/toy.dmi'
- icon_state = "therapyblue"
- item_state = "egg2" // It's the blue egg in items_left/righthand
- w_class = ITEMSIZE_TINY
-
-/obj/item/toy/therapy_yellow
- name = "yellow therapy doll"
- desc = "A toy for therapeutic and recreational purposes. This one is yellow."
- icon = 'icons/obj/toy.dmi'
- icon_state = "therapyyellow"
- item_state = "egg5" // It's the yellow egg in items_left/righthand
- w_class = ITEMSIZE_TINY
-
-/obj/item/toy/therapy_orange
- name = "orange therapy doll"
- desc = "A toy for therapeutic and recreational purposes. This one is orange."
- icon = 'icons/obj/toy.dmi'
- icon_state = "therapyorange"
- item_state = "egg4" // It's the red one again, lacking an orange item_state and making a new one is pointless
- w_class = ITEMSIZE_TINY
-
-/obj/item/toy/therapy_green
- name = "green therapy doll"
- desc = "A toy for therapeutic and recreational purposes. This one is green."
- icon = 'icons/obj/toy.dmi'
- icon_state = "therapygreen"
- item_state = "egg3" // It's the green egg in items_left/righthand
- w_class = ITEMSIZE_TINY
-
/*
* Plushies
*/
@@ -800,9 +752,10 @@
//Small plushies.
/obj/item/toy/plushie
name = "generic small plush"
- desc = "A very generic small plushie. It seems to not want to exist."
+ desc = "A small toy plushie. It's very cute."
icon = 'icons/obj/toy.dmi'
icon_state = "nymphplushie"
+ w_class = ITEMSIZE_TINY
var/last_message = 0
/obj/item/toy/plushie/attack_self(mob/user as mob)
@@ -815,9 +768,24 @@
else if (user.a_intent == I_GRAB)
user.visible_message("\The [user] attempts to strangle [src]!","You attempt to strangle [src]!")
else
- user.visible_message("\The [user] pokes the [src].","You poke the [src].")
+ user.visible_message("\The [user] pokes [src].","You poke [src].")
last_message = world.time
+obj/item/toy/plushie/verb/rename_plushie()
+ set name = "Name Plushie"
+ set category = "Object"
+ set desc = "Give your plushie a cute name!"
+ w_class = ITEMSIZE_TINY
+ var/mob/M = usr
+ if(!M.mind) return 0
+
+ var/input = sanitizeSafe(input("What do you want to name the plushie?", ,""), MAX_NAME_LEN)
+
+ if(src && input && !M.stat && in_range(M,src))
+ name = input
+ to_chat(M, "You name the plushie [input], giving it a hug for good luck.")
+ return 1
+
/obj/item/toy/plushie/nymph
name = "diona nymph plush"
desc = "A plushie of an adorable diona nymph! While its level of self-awareness is still being debated, its level of cuteness is not."
@@ -830,7 +798,7 @@
/obj/item/toy/plushie/kitten
name = "kitten plush"
- desc = "A plushie of a cute kitten! Watch as it purrs it's way right into your heart."
+ desc = "A plushie of a cute kitten! Watch as it purrs its way right into your heart."
icon_state = "kittenplushie"
/obj/item/toy/plushie/lizard
@@ -848,6 +816,49 @@
desc = "A farwa plush doll. It's soft and comforting!"
icon_state = "farwaplushie"
+/obj/item/toy/plushie/therapy/red
+ name = "red therapy doll"
+ desc = "A toy for therapeutic and recreational purposes. This one is red."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "therapyred"
+ item_state = "egg4" // It's the red egg in items_left/righthand
+
+/obj/item/toy/plushie/therapy/purple
+ name = "purple therapy doll"
+ desc = "A toy for therapeutic and recreational purposes. This one is purple."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "therapypurple"
+ item_state = "egg1" // It's the magenta egg in items_left/righthand
+
+/obj/item/toy/plushie/therapy/blue
+ name = "blue therapy doll"
+ desc = "A toy for therapeutic and recreational purposes. This one is blue."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "therapyblue"
+ item_state = "egg2" // It's the blue egg in items_left/righthand
+
+/obj/item/toy/plushie/therapy/yellow
+ name = "yellow therapy doll"
+ desc = "A toy for therapeutic and recreational purposes. This one is yellow."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "therapyyellow"
+ item_state = "egg5" // It's the yellow egg in items_left/righthand
+
+/obj/item/toy/plushie/therapy/orange
+ name = "orange therapy doll"
+ desc = "A toy for therapeutic and recreational purposes. This one is orange."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "therapyorange"
+ item_state = "egg4" // It's the red one again, lacking an orange item_state and making a new one is pointless
+
+/obj/item/toy/plushie/therapy/green
+ name = "green therapy doll"
+ desc = "A toy for therapeutic and recreational purposes. This one is green."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "therapygreen"
+ item_state = "egg3" // It's the green egg in items_left/righthand
+
+
//Toy cult sword
/obj/item/toy/cultsword
name = "foam sword"
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index c15b454878..59b064572d 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -504,12 +504,12 @@
/obj/random/toy/item_to_spawn()
return pick(/obj/item/toy/bosunwhistle,
- /obj/item/toy/therapy_red,
- /obj/item/toy/therapy_purple,
- /obj/item/toy/therapy_blue,
- /obj/item/toy/therapy_yellow,
- /obj/item/toy/therapy_orange,
- /obj/item/toy/therapy_green,
+ /obj/item/toy/plushie/therapy/red,
+ /obj/item/toy/plushie/therapy/purple,
+ /obj/item/toy/plushie/therapy/blue,
+ /obj/item/toy/plushie/therapy/yellow,
+ /obj/item/toy/plushie/therapy/orange,
+ /obj/item/toy/plushie/therapy/green,
/obj/item/toy/cultsword,
/obj/item/toy/katana,
/obj/item/toy/snappop,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 92bc2ab469..dbbdee3711 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -257,7 +257,7 @@
new /obj/item/device/tape/random(src)
new /obj/item/device/tape/random(src)
new /obj/item/device/camera(src)
- new /obj/item/toy/therapy_blue(src)
+ new /obj/item/toy/plushie/therapy/blue(src)
return
/obj/structure/closet/secure_closet/psych
diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm
index 6f3115fd2f..860869883f 100644
--- a/code/modules/client/preference_setup/loadout/loadout_general.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_general.dm
@@ -34,6 +34,18 @@
display_name = "Spaceball booster pack"
path = /obj/item/weapon/pack/spaceball
+/datum/gear/plushie
+ display_name = "plushie selection"
+ path = /obj/item/toy/plushie/
+
+/datum/gear/plushie/New()
+ ..()
+ var/list/plushies = list()
+ for(var/plushie in subtypesof(/obj/item/toy/plushie/) - /obj/item/toy/plushie/therapy)
+ var/obj/item/toy/plushie/plushie_type = plushie
+ plushies[initial(plushie_type.name)] = plushie_type
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(plushies))
+
/datum/gear/flask
display_name = "flask"
path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm
index 9204eb5c68..ec0145e1d9 100644
--- a/maps/northern_star/polaris-1.dmm
+++ b/maps/northern_star/polaris-1.dmm
@@ -5020,7 +5020,7 @@
"bSB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bSC" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bSD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/machinery/door/window/westleft{name = "EVA Suit Storage"; req_access = list(5)},/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/medical,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/medical,/obj/item/weapon/tank/oxygen,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay)
-"bSE" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/item/toy/therapy_blue,/turf/simulated/floor/carpet/blue,/area/medical/psych)
+"bSE" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/item/toy/plushie/therapy/blue,/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bSF" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bSG" = (/obj/machinery/camera/network/medbay{c_tag = "MED - Mental Health"; dir = 1},/obj/machinery/light,/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bSH" = (/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/medical/psych)