Adds an Experiment and Milky plush (#5660)

## About The Pull Request

<img width="2048" height="1536" alt="image"
src="https://github.com/user-attachments/assets/b4cc8beb-3448-4a75-a193-cb9fad316820"
/>

🎨: [@Koklv_09](https://x.com/Koklv_09/status/2057418483688755627)  on X

This PR adds two plushies inspired from the hit game: Casualties Unknown
(Formerly "Scav: Prototype"). The sprites are originally from Wizden
SS14 and shares an appearance in its [own
game](https://scavprototype.wiki.gg/wiki/Plushie). Possibly confirming
shared universes??

Each Plush can be worn as a hat, have emissive eyes when worn, have
inhand sprites and are all very adorable.
Shout out to Orsoniks (rivey0 on discord) for the original spritework.
And nevimer for the code help.

## Why It's Good For The Game

This one goes out to all of the great times I've had on station
interacting with the Experiments. They deserve a tiny, cuddable version
of themselves!

## Proof Of Testing

<details>
<summary>Screenshots/Videos (Plushie interaction spoiler in
here!!)</summary>

Emissive preview:


https://github.com/user-attachments/assets/fd1b669b-36c3-4853-8b1b-4741de0b2b09

Unique Interaction preview:


https://github.com/user-attachments/assets/cddb1676-ec93-4c01-ae51-2ba20b853e21

</details>

## Changelog

🆑 shayoki, nevimer, orsoniks
add: Adds an experiment and milky plush. Both are available in the
loadout.
/🆑
This commit is contained in:
gavla
2026-05-25 08:38:39 -07:00
committed by GitHub
parent 9fc626eb39
commit 2d1899d874
10 changed files with 75 additions and 0 deletions
@@ -763,3 +763,68 @@
var/datum/smite/bsa/bluespace_smite = new()
bluespace_smite.effect(user.client, user)
return BRUTELOSS
//Sprite from SS14 Main. Sprited by Orsoniks (rivey0 on discord)
/obj/item/toy/plush/expie
name = "Experiment Plushie"
icon_state = "expie"
slot_flags = ITEM_SLOT_HEAD
worn_icon = 'modular_zubbers/icons/mob/clothing/head/hats.dmi'
worn_icon_state = "expie"
desc = "A plushie of a canid of sorts. It yearns to be detonated on a landmine."
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
attack_verb_simple = list("bark", "growl", "whine")
squeak_override = list('modular_zubbers/sound/misc/plushie.ogg' = 1)
lefthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_lefthand.dmi'
righthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_righthand.dmi'
inhand_icon_state = "expie"
/obj/item/toy/plush/expie/worn_overlays(mutable_appearance/standing, isinhands, icon_file) //emissive glow when worn on head.
. = ..()
if(!isinhands)
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_BLOOM)
/obj/item/toy/plush/expie/item_interaction(mob/living/feeder, obj/item/reagent_containers/applicator/pill/enom, list/modifiers)
if(!istype(enom))
return ..()
enom.forceMove(src) // pill go into the expie stummy
to_chat(feeder, span_notice("You feed the [enom] to [src] and watch as it eats..."))
playsound(src, 'modular_zubbers/sound/misc/eatcrunch.ogg', 75, TRUE)
addtimer(CALLBACK(src, PROC_REF(eat), feeder, enom), 3 SECONDS)
return ITEM_INTERACT_SUCCESS
/obj/item/toy/plush/expie/proc/eat(mob/living/feeder, obj/item/reagent_containers/applicator/pill/enom)
if(istype(enom, /obj/item/reagent_containers/applicator/pill))
SpinAnimation(speed = 0.3 SECONDS, loops = 3)
qdel(enom)
return
//expie reacts to being splashed
/obj/item/toy/plush/expie/proc/splash_reagents()
SIGNAL_HANDLER
playsound(src, 'modular_zubbers/sound/misc/dogshake.ogg', 75)
spasm_animation(2 SECONDS)
visible_message(span_warning("[src] gets soaked and shakes itself off!"))
/obj/item/toy/plush/expie/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_ATOM_SPLASHED, PROC_REF(splash_reagents))
/datum/reagent/consumable/milk/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) //spill milk on the expie to make it milky
. = ..()
if(!istype(exposed_obj, /obj/item/toy/plush/expie))
return
var/obj/item/toy/plush/expie/milked = exposed_obj
milked.name = /obj/item/toy/plush/expie/milky::name
milked.desc = /obj/item/toy/plush/expie/milky::desc
milked.worn_icon_state = /obj/item/toy/plush/expie/milky::worn_icon_state
milked.icon_state = /obj/item/toy/plush/expie/milky::icon_state
milked.inhand_icon_state = /obj/item/toy/plush/expie/milky::inhand_icon_state
/obj/item/toy/plush/expie/milky
name = "Milky Plushie"
desc = "A plushie of snowy-white, furred canid. Maybe it'll trade something with you?"
worn_icon_state = "milky"
icon_state = "milky"
inhand_icon_state = "milky"
@@ -142,6 +142,14 @@
/datum/loadout_item/toys/plush/myrthel_plush
name = "Extra Hot Moth Plush"
item_path = /obj/item/toy/plush/myrthel_plush
/datum/loadout_item/toys/plush/expie
name = "Experiment Plushie"
item_path = /obj/item/toy/plush/expie
/datum/loadout_item/toys/plush/milky
name = "Milky Plushie"
item_path = /obj/item/toy/plush/expie/milky
/*
* SEX TOYS AND OTHER STUFF THAT NEEDS PREFS TO USE (otherwise fails to render on the character preview)
*/
@@ -17,6 +17,8 @@
/obj/item/toy/plush/carpplushie = 3,
/obj/item/toy/plush/cello_plush = 3,
/obj/item/toy/plush/chirp_plush = 3,
/obj/item/toy/plush/expie = 3,
/obj/item/toy/plush/expie/milky = 3,
/obj/item/toy/plush/goatplushie = 3,
/obj/item/toy/plush/headcrab = 3,
/obj/item/toy/plush/lizard_plushie = 3,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.