mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
## 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. /🆑
831 lines
34 KiB
Plaintext
831 lines
34 KiB
Plaintext
/obj/item/toy/plush/chaotic_toaster
|
|
name = "Chaotic toaster"
|
|
desc = "You arent sure if this plushie want a hug, or harvest your organs, or both."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "chaotic_toaster"
|
|
attack_verb_simple = list("beeped", "booped", "pinged")
|
|
squeak_override = list('sound/machines/beep/beep.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/Synth
|
|
name = "Synth plushie"
|
|
desc = "An adorable stuffed toy that resembles a very happy synth."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "plushie_synth"
|
|
|
|
/obj/item/toy/plush/mal0
|
|
name = "Mal0 plushie"
|
|
desc = "An adorable stuffed toy that resembles something you download on your pda."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "plushie_mal0"
|
|
|
|
/obj/item/toy/plush/nobl
|
|
name = "fluffy skog plushie"
|
|
desc = "It seems to be a small canine, not necessarily latex like you would suspect for some reason, but extremely squishy."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "nobl"
|
|
squeak_override = list('modular_zubbers/sound/misc/dog_toy.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/chirp_plush
|
|
name = "chirping synth Plushie"
|
|
desc = "It's warm to the touch."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "chirp"//Sprited by Kan3/kaylexi
|
|
attack_verb_continuous = list("chirps", "chimes")
|
|
attack_verb_simple = list("chirps")
|
|
squeak_override = list('sound/machines/beep/beep.ogg' = 1)
|
|
gender = FEMALE
|
|
|
|
/obj/item/toy/plush/bigdeer
|
|
name = "big deer plushie"
|
|
desc = "An incredibly round deer plush. It appears to have had too many berries for snack time."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "bigdeer" //sprited by Gavla
|
|
attack_verb_simple = list("puff", "smother")
|
|
squeak_override = list('modular_zubbers/sound/misc/squeakle.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 = "bigdeer"
|
|
|
|
/obj/item/toy/plush/bubbledragon
|
|
name = "bubbledragon plushie"
|
|
desc = "This plush of a regal dragon seems to clean every surface it touches. When hugged, it squeaks and blows bubbles! An excellent companion for when TamaGoSlep"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "bubbledragon"
|
|
squeak_override = list('modular_zubbers/sound/misc/squeakle.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/bubbledragon/Initialize(mapload)
|
|
. = ..()
|
|
AddComponent(/datum/component/cleaner, 3 SECONDS, pre_clean_callback=CALLBACK(src, PROC_REF(should_clean)))
|
|
|
|
/obj/item/toy/plush/bubbledragon/proc/should_clean(datum/cleaning_source, atom/atom_to_clean, mob/living/cleaner)
|
|
return (src in cleaner)
|
|
|
|
/obj/item/toy/plush/headcrab
|
|
name = "headcrab plushie"
|
|
desc = "A small, parasitic alien from the borderworld of Xen, this one is fake."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "headcrab"
|
|
|
|
/obj/item/toy/plush/bellybird
|
|
name = "bellybird plushie"
|
|
desc = "It has a tag on the back. 'You seen the opera, now get ready for the theatrical release with the new Bellybird plushie. House Feather's patented design allows this plushie to feel almost lifelike with its synthetic feathers and smoothed scales, glow in the dark eyes and a round tummy to rest your head on, not to mention it comes complete with Autumn the snake tail! Witness Autumn in action as this flexible tail is able to snap her jaws and hiss at any opponent with such realism. Order now for only two low payments of 19.95!'"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "bellybird"
|
|
squeak_override = list('modular_skyrat/modules/emotes/sound/emotes/hiss.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/tiredtesh
|
|
name = "tired tesh plushie"
|
|
desc = "He looks very eepy. A tag on the back of the plushie reads, 'Happy birthday, big guy.'"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "tiredtesh"
|
|
squeak_override = list('modular_zubbers/sound/emotes/nose_boop.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/xenoplush
|
|
name = "xenomorph plushie"
|
|
desc = "A cute rendition of the notorious xenomorph. Its stuffing is an acidic green colour."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "xenoplush"
|
|
squeak_override = list('sound/mobs/non-humanoids/hiss/hiss6.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 = "xenoplush"
|
|
attack_verb_continuous = list("hisses at", "bites", "chews", "chomps", "tail stabs")
|
|
attack_verb_simple = list("hiss at", "bite", "chew", "chomp", "tail stab")
|
|
|
|
/obj/item/toy/plush/xenoplush/xenomaidplush
|
|
name = "xenomorph maid plushie"
|
|
desc = "A cute rendition of the notorious xenomorph, but in a maid costume. It's eager to help you clean the station."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "xenomaidplush"
|
|
attack_verb_continuous = list("polishes", "cleans", "tidies", "washes")
|
|
attack_verb_simple = list("polish", "clean", "tidy", "wash")
|
|
|
|
/obj/item/toy/plush/skyrat/jecca
|
|
lefthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_lefthand.dmi'
|
|
righthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_righthand.dmi'
|
|
|
|
/obj/item/toy/plush/purplecat
|
|
name = "Purple cat plushie"
|
|
desc = "A small, fluffy purple cat with an even purpler collar and bell. It also has a translucent green tail that rubbery to the touch."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "purplecat" //sprited by Bit_Synergy
|
|
attack_verb_simple = list("mew", "mow")
|
|
attack_verb_continuous = list("mews", "mows")
|
|
squeak_override = list('modular_zubbers/sound/misc/moew.ogg' = 1)
|
|
gender = FEMALE
|
|
|
|
/obj/item/toy/plush/largeredslime
|
|
name = "large red slime plushie" //Donator item exclusive for Blovy. Sprited by Casey/Keila.
|
|
desc = "The plushie is squishy to touch and smells strongly of strawberry."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "blovyplushie"
|
|
attack_verb_continuous = list("blorbles", "slimes", "absorbs")
|
|
attack_verb_simple = list("blorble", "slime", "absorb")
|
|
squeak_override = list('sound/effects/blob/blobattack.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/tunafish
|
|
name = "Piscene Paddle" //Donator plush for Astroturf, sprited by Crumpaloo
|
|
desc = "Useful for more than just sashimi."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "tunafish"
|
|
attack_verb_continuous = list("slaps", "whacks")
|
|
attack_verb_simple = list("slap", "whack")
|
|
squeak_override = list('sound/items/weapons/slap.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 = "tunafish"
|
|
|
|
/obj/item/toy/plush/secoff
|
|
name = "GalFed Secoff"
|
|
desc = "A soft toy representing a popular, young officer, representing the alliance between GalFed and NT. The bottom of his work boot says 'Andy'"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "secoff"
|
|
attack_verb_continuous = list("shoots (and misses)", "batongs", "annoys", "harmbatons", "magdumps")
|
|
attack_verb_simple = list("shot (and missed)", "batong", "annoy", "harmbaton", "magdump")
|
|
squeak_override = list('sound/items/weapons/gun/general/bolt_rack.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/cescrewsplush
|
|
name = "Chief Screws Plush" //Plush for Steals The Screwdriver/SteamStucKobold, sprited by stickygoat. and Amorbis
|
|
desc = "An adorable blue Lizard plushie wearing a Chief Engineer's Uniform, Rocket Boots, and Meson Goggles. It has a strange, silicone pocket on its underside..."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "cescrewsplush"
|
|
attack_verb_continuous = list("slaps", "plaps", "smears")
|
|
attack_verb_simple = list("slap", "plap", "smear")
|
|
gender = FEMALE
|
|
squeak_override = list('sound/misc/soggy.ogg'=1)
|
|
|
|
/obj/item/toy/plush/cescrewsplush/examine(mob/user)
|
|
. = ..()
|
|
. += span_notice("Alt-click to take a look under her skirt.")
|
|
|
|
/obj/item/toy/plush/cescrewsplush/click_alt(mob/user)
|
|
user.visible_message(span_notice("[user] turns [src], revealing the hole underneath."), span_notice("You turn [src], revealing a tight, lubed hole."))
|
|
playsound(user, 'sound/effects/blob/blobattack.ogg', 50, TRUE)
|
|
var/obj/item/toy/plush/fleshlight/screws/toy = new(null)
|
|
qdel(src)
|
|
user.put_in_hands(toy)
|
|
return TRUE
|
|
|
|
/obj/item/toy/plush/internshiba
|
|
name = "Intern Shiba Plush" //Plush for Kazumi Hasegawa/sprited by Amorbis
|
|
desc = "An adorable shiba inu plushie of a well-known intern mutt."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "internshiba"
|
|
attack_verb_continuous = list("baps", "paws", "claws")
|
|
attack_verb_simple = list("bap", "paw", "claw")
|
|
gender = MALE
|
|
squeak_override = list('sound/mobs/non-humanoids/dog/growl2.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/bottomsynf
|
|
name = "CentCom Synth Fox Plush"
|
|
desc = "The plush of a synth fox who enjoys being high in the chain of command. Or so it seems. It's wearing its favourite CentCom formal coat."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "bottomsynf"
|
|
attack_verb_continuous = list("emags", "hacks", "geckers")
|
|
attack_verb_simple = list("beeps", "boops", "pings", "geckers")
|
|
gender = MALE
|
|
squeak_override = list('sound/machines/terminal_alert_short.ogg' = 1)
|
|
|
|
// Silly plush for kurzaen, sprited and coded by Waterpig
|
|
// Spontaneously combusts when touched by other plushies
|
|
/obj/item/toy/plush/cat_annoying
|
|
name = "\improper Annoying Cat Plush"
|
|
desc = "This plush reeks of Green apples, and HATES physical affection. You can feel it looking at you with a judgmental gaze.."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "annoyingcat"
|
|
gender = MALE
|
|
squeak_override = list(
|
|
'modular_skyrat/modules/emotes/sound/voice/scream_m1.ogg' = 1,
|
|
'modular_skyrat/modules/emotes/sound/voice/scream_m2.ogg' = 1,
|
|
)
|
|
|
|
/obj/item/toy/plush/cat_annoying/attackby(obj/item/I, mob/living/user, params)
|
|
if(istype(I, /obj/item/toy/plush))
|
|
combust()
|
|
return ..()
|
|
|
|
/obj/item/toy/plush/cat_annoying/pre_attack(atom/A, mob/living/user, params)
|
|
if(istype(A, /obj/item/toy/plush))
|
|
combust()
|
|
return ..()
|
|
|
|
/obj/item/toy/plush/cat_annoying/proc/combust()
|
|
src.fire_act(5000)
|
|
src.visible_message(span_notice("The [src.name] spontaneously combusts from physical affection!"))
|
|
addtimer(CALLBACK(src, PROC_REF(ash)), 2 SECONDS)
|
|
|
|
/obj/item/toy/plush/cat_annoying/proc/ash()
|
|
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
|
src.visible_message(span_warning("The [src.name] turns to ash!"))
|
|
qdel(src)
|
|
|
|
// Plush for Vanilla
|
|
/obj/item/toy/plush/suspicious_protogen
|
|
name = "\improper Suspicious protogen plush"
|
|
desc = "A suspicious pink looking protogen plushie commonly seen roaming the station almost everywhere, \
|
|
perfect for cuddling when you feel upset at something."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "pinkproot"
|
|
gender = FEMALE
|
|
squeak_override = list('modular_skyrat/modules/emotes/sound/emotes/dwoop.ogg' = 1)
|
|
|
|
// Plush for ZeferwasnttakenFR
|
|
/obj/item/toy/plush/foxy_plush
|
|
name = "tiny prankster fox plush"
|
|
desc = "A fox plush made to look like a certain prankster fox. Unsuprisingly it also smells like ocean breeze and a nice warm forge. \ Batteries not included for the plastic arm!"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "FoxyPlush"
|
|
gender = MALE
|
|
squeak_override = list('modular_zubbers/sound/emotes/claponce1.ogg' = 1)
|
|
|
|
// Rin/Yayyay007's plush
|
|
/obj/item/toy/plush/squeaky_toy
|
|
name = "squeaky rat plushie"
|
|
desc = "A plush made to order of a particular rodent. Smells like an awful lover. \ A small sticker says, TUG MY EARS!"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "squeaky_toy"
|
|
gender = MALE
|
|
squeak_override = list('sound/mobs/non-humanoids/mouse/mousesqueek.ogg' = 1)
|
|
|
|
// Sophie/Cydia's plush
|
|
/obj/item/toy/plush/androiddog
|
|
name = "android dog plushie"
|
|
desc = "A faded plushie toy of an android dog. Will not bite. \ A sticker says 'Push me!' on a little heart on the hand."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "androiddog"
|
|
gender = FEMALE
|
|
squeak_override = list('modular_zubbers/sound/emotes/arf.ogg' = 1)
|
|
|
|
// xPokee's plush
|
|
/obj/item/toy/plush/ghoul
|
|
name = "intern ghoul plushie"
|
|
desc = "Even the marketable plushie of this thing is utterly terrifying. At least it's cuddly..."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "johnghoul"
|
|
attack_verb_continuous = list("ghouls")
|
|
attack_verb_simple = list("ghoul")
|
|
|
|
// plushie for BeoTheKobold
|
|
// sprite by Cepha, code by Mitryll
|
|
/obj/item/toy/plush/mold_kobold
|
|
name = "hemophage awareness kobold"
|
|
desc = "A cuddly kobold plushie. Produced by Nanotrasen in the soft likeness of a hemophage employee; \
|
|
focus groups thought this design played less into hemophage stereotypes as opposed to the previous iteration, \
|
|
Lord Grog the Vile Parasite. A tag on the left leg says 10% of proceeds go to blood banks!"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "themold"
|
|
attack_verb_continuous = list("bites", "curses", "drains")
|
|
attack_verb_simple = list("bite", "invoke", "claw")
|
|
gender = FEMALE
|
|
|
|
// Plushie for Decinomics
|
|
/obj/item/toy/plush/sinvox
|
|
name = "sinister vox plushie"
|
|
desc = "An evil looking toy. It's got a vox beak that splits into mandibles like a bug;\
|
|
its tail looks like a copy of the xenomorph plushie stitched together poorly.\
|
|
Property and copyright of VOXXXED Studios..."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "sinvox"
|
|
attack_verb_continuous = list("hisses at", "bites", "mauls", "quills", "tail stabs")
|
|
attack_verb_simple = list("hiss at", "bite", "maul", "quill", "tail stab")
|
|
gender = MALE
|
|
squeak_override = list(
|
|
'sound/mobs/non-humanoids/hiss/hiss2.ogg' = 1,
|
|
'modular_skyrat/modules/emotes/sound/emotes/voxrustle.ogg' = 1,
|
|
)
|
|
|
|
/obj/item/toy/plush/mothroach_plush
|
|
name = "mothroach plush"
|
|
desc = "A plushie featuring the likeness everyone's favorite genetic freak-turned station pet. Do not soak it in milk and throw it against a wall."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "mothroach"
|
|
attack_verb_continuous = list("mothroaches", "moths", "roaches")
|
|
attack_verb_simple = list("mothroach", "moth", "roach")
|
|
gender = MALE
|
|
squeak_override = list( 'sound/mobs/humanoids/moth/scream_moth.ogg' = 1, )
|
|
|
|
/obj/item/toy/plush/moth/lovers
|
|
name = "lovers moth plushie"
|
|
desc = "An adorable mothperson plushie. It's a lovely bug!"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "moffplush_lovers"
|
|
|
|
/obj/item/toy/plush/lazy_synth
|
|
name = "lazy synth plush"
|
|
desc = "A soft plush of an extremely lazy synth. Might be found loafing in random places."
|
|
attack_verb_continuous = list("squishes", "loafs on", "sleeps on", "eggs")
|
|
attack_verb_simple = list("squish", "loaf on", "sleep on", "egg")
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "lazy_synth"
|
|
squeak_override = list('modular_zubbers/sound/misc/squeakle.ogg' = 1)
|
|
|
|
/obj/item/toy/plush/goatplushie
|
|
name = "strange goat plushie"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "goat"
|
|
desc = "Despite its cuddly appearance and plush nature, it will beat you up all the same. Goats never change."
|
|
squeak_override = list('sound/items/weapons/punch1.ogg'=1)
|
|
/// Whether or not this goat is currently taking in a monsterous doink
|
|
var/going_hard = FALSE
|
|
/// Whether or not this goat has been flattened like a funny pancake
|
|
var/splat = FALSE
|
|
|
|
/obj/item/toy/plush/goatplushie/Initialize(mapload)
|
|
. = ..()
|
|
var/static/list/loc_connections = list(
|
|
COMSIG_TURF_INDUSTRIAL_LIFT_ENTER = PROC_REF(splat),
|
|
)
|
|
AddElement(/datum/element/connect_loc, loc_connections)
|
|
|
|
/obj/item/toy/plush/goatplushie/attackby(obj/item/cigarette/rollie/fat_dart, mob/user, list/modifiers, list/attack_modifiers)
|
|
if(!istype(fat_dart))
|
|
return ..()
|
|
if(splat)
|
|
to_chat(user, span_notice("[src] doesn't seem to be able to go hard right now."))
|
|
return
|
|
if(going_hard)
|
|
to_chat(user, span_notice("[src] is already going too hard!"))
|
|
return
|
|
if(!fat_dart.lit)
|
|
to_chat(user, span_notice("You'll have to light that first!"))
|
|
return
|
|
to_chat(user, span_notice("You put [fat_dart] into [src]'s mouth."))
|
|
qdel(fat_dart)
|
|
going_hard = TRUE
|
|
update_icon(UPDATE_OVERLAYS)
|
|
|
|
/obj/item/toy/plush/goatplushie/proc/splat(datum/source)
|
|
SIGNAL_HANDLER
|
|
if(splat)
|
|
return
|
|
if(going_hard)
|
|
going_hard = FALSE
|
|
update_icon(UPDATE_OVERLAYS)
|
|
icon_state = "goat_splat"
|
|
playsound(src, SFX_DESECRATION, 50, TRUE)
|
|
visible_message(span_danger("[src] gets absolutely flattened!"))
|
|
splat = TRUE
|
|
|
|
/obj/item/toy/plush/goatplushie/examine()
|
|
. = ..()
|
|
if(splat)
|
|
. += span_notice("[src] might need medical attention.")
|
|
if(going_hard)
|
|
. += span_notice("[src] is going so hard, feel free to take a picture.")
|
|
|
|
/obj/item/toy/plush/goatplushie/update_overlays()
|
|
. = ..()
|
|
if(going_hard)
|
|
. += "goat_dart"
|
|
|
|
/obj/item/toy/plush/sunny_plush
|
|
name = "weighty moostoat plushie"
|
|
desc = "A soft, weighted plushie of a moostoat. Very comfortable to hug and have lying on you. It smells of fresh milk."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "sunny_plush"
|
|
squeak_override = list(
|
|
'modular_skyrat/modules/emotes/sound/voice/moo.ogg' = 1,
|
|
'sound/mobs/non-humanoids/stoat/stoat_sounds.ogg' = 1,
|
|
)
|
|
|
|
//Plushie for and by Lazhannya
|
|
//Original Design by Cepha
|
|
/obj/item/toy/plush/amber_shadekin_plush
|
|
name = "Squishy Shadekin Plush"
|
|
desc = "A plushie featuring the likeness of a certain self declared mad genius shadekin. It smells faintly of cinnamon."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "amberalert"
|
|
attack_verb_continuous = list("mars at", "bites", "chomps", "paws at", "fwoomps", "marmars")
|
|
attack_verb_simple = list("mar", "bite", "chomp", "paw", "fwoomp", "marmar")
|
|
gender = FEMALE
|
|
squeak_override = list('modular_zubbers/sound/emotes/sound_voice_mar.ogg' = 1)
|
|
|
|
//Marketable Plushie of Vega VI, made by Ssalty
|
|
/obj/item/toy/plush/ethereal
|
|
name = "businessman ethereal plush"
|
|
desc = "A plushie showing a succesful ethereal, manufactured in attempts to raise visibility of Sproutians and their culture, and 3% are going to charity! Its shoe-straps can be tugged on to activate the voicebox, playing real ethereal noises!"
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "ethereal"
|
|
attack_verb_continuous = list("businesscard-slaps", "financially educates", "threatens to sue", "zaps", "bzzts", "buzzes")
|
|
attack_verb_simple = list("businesscard-slap", "financially educate", "threaten to sue", "zap", "bzzt", "buzz")
|
|
squeak_override = list('sound/effects/sparks/sparks1.ogg' = 98, 'sound/mobs/non-humanoids/hygienebot/cutarteries.ogg' = 1, 'sound/items/dump_it.ogg' = 1)
|
|
|
|
//Plushie for Roxy, of Cellophane
|
|
/obj/item/toy/plush/cello_plush
|
|
var/shirt = TRUE
|
|
name = "concerningly large merseed plush"
|
|
desc = "A large, silky-soft plushie of a merseed dragon. When you hug it, you can't get your arms around it no matter how hard you try."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
lefthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_lefthand.dmi'
|
|
righthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_righthand.dmi'
|
|
icon_state = "celloplush"
|
|
inhand_icon_state = "celloplush-shirt"
|
|
attack_verb_continuous = list("squishes", "smothers", "smacks", "bullies", "pancakes", "flops at", "smears", "dents")
|
|
attack_verb_simple = list("squish", "smother", "smack", "bully", "pancake", "flop", "smear", "dent")
|
|
gender = FEMALE
|
|
squeak_override = list(
|
|
'sound/mobs/non-humanoids/fish/fish_slap1.ogg' = 1, 'sound/mobs/non-humanoids/fish/fish_slap2.ogg' = 1,
|
|
)
|
|
|
|
/obj/item/toy/plush/cello_plush/click_alt(mob/user)
|
|
shirt = !shirt
|
|
if(!shirt)
|
|
balloon_alert(user, "tummy shown...")
|
|
icon_state = "celloplush-alt"
|
|
inhand_icon_state = "celloplush-alt"
|
|
|
|
else
|
|
balloon_alert(user, "tummy tucked away...")
|
|
icon_state = "celloplush"
|
|
inhand_icon_state = "celloplush-shirt"
|
|
|
|
update_inhand_icon()
|
|
return ..()
|
|
|
|
//Plushie for / of MyrThel
|
|
/obj/item/toy/plush/myrthel_plush
|
|
var/myrfire = TRUE
|
|
light_system = COMPLEX_LIGHT
|
|
light_range = 2
|
|
light_power = 1.4
|
|
light_color = COLOR_LIGHT_ORANGE
|
|
light_on = FALSE
|
|
name = "extra hot moth plush"
|
|
desc = "An action plush of a mothic engineer. Comes with family-friendly, self-igniting action! Not a viable source of heat, or fire. "
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
lefthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_lefthand.dmi'
|
|
righthand_file = 'modular_zubbers/icons/mob/inhands/items/plushes_righthand.dmi'
|
|
icon_state = "myrthel-plush"
|
|
inhand_icon_state = "myrthelplush"
|
|
attack_verb_continuous = list("smacks", "beans", "paffs", "buzzes", "dents")
|
|
attack_verb_simple = list("smack", "bean", "paff", "buzz", "dent")
|
|
gender = MALE
|
|
squeak_override = list(
|
|
'sound/mobs/humanoids/moth/moth_death.ogg' = 3,
|
|
'sound/mobs/humanoids/moth/moth_chitter.ogg' = 3,
|
|
'sound/mobs/humanoids/moth/moth_flutter.ogg' = 3,
|
|
'sound/mobs/humanoids/moth/moth_squeak.ogg' = 3,
|
|
'sound/items/weapons/emitter.ogg' = 1,
|
|
'sound/items/weapons/emitter2.ogg' = 1,
|
|
'sound/effects/sparks/sparks4.ogg' = 1,
|
|
)
|
|
|
|
/obj/item/toy/plush/myrthel_plush/click_alt(mob/user)
|
|
myrfire = !myrfire
|
|
if(!myrfire)
|
|
set_light_on(TRUE)
|
|
playsound(src, 'sound/effects/fire_puff.ogg', 20, TRUE)
|
|
playsound(src, 'sound/mobs/humanoids/moth/scream_moth.ogg', 20, TRUE)
|
|
icon_state = "myrthel-plush-fire"
|
|
else
|
|
set_light_on(FALSE)
|
|
playsound(src, 'sound/effects/wounds/sizzle2.ogg', 10, TRUE)
|
|
icon_state = "myrthel-plush"
|
|
update_light()
|
|
return ..()
|
|
|
|
// Plushie coded and sprited by Mathilde.
|
|
// Props to Seijan-Etroix for helping with the design!
|
|
/obj/item/toy/plush/tian_plush
|
|
name = "bureaucratic goat plush"
|
|
desc = "A giant, weighted plushie of a goat-carp bureaucrat, who seems to be very hungry for paper(work). It's nearly impossible to get your arms all the way around her.<br><br><span style=color:#6685F5><i>A tag on the back reads 'Comfort provided under official licence.'</i></span>"
|
|
attack_verb_continuous = list("stomps", "smothers", "buries", "squishes", "nibbles", "gnashes", "flattens", "pummels", "chomps")
|
|
attack_verb_simple = list("stomp", "smother", "bury", "squish", "nibble", "gnash", "flatten", "pummel", "chomp")
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "tianplush"
|
|
gender = FEMALE
|
|
squeak_override = list('modular_zubbers/sound/misc/meatybaa.ogg'=1)
|
|
var/shirt = TRUE
|
|
|
|
var/bg_color = "#9b2e8c"
|
|
var/static/list/folder_insertables = typecacheof(list(
|
|
/obj/item/paper,
|
|
/obj/item/photo,
|
|
/obj/item/documents,
|
|
/obj/item/paperwork,
|
|
))
|
|
|
|
/obj/item/toy/plush/tian_plush/interact(mob/user)
|
|
return
|
|
|
|
/obj/item/toy/plush/tian_plush/attack_self_secondary(mob/user, modifiers)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
add_fingerprint(user)
|
|
ui_interact(user)
|
|
return TRUE
|
|
|
|
/obj/item/toy/plush/tian_plush/attack_hand_secondary(mob/user, list/modifiers)
|
|
. = ..()
|
|
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
|
|
return
|
|
add_fingerprint(user)
|
|
ui_interact(user)
|
|
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
|
|
|
//Plot armour
|
|
/obj/item/toy/plush/tian_plush/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers)
|
|
if(I.get_sharpness())
|
|
to_chat(user, span_notice("[I] just bounces off!"))
|
|
return
|
|
return ..()
|
|
|
|
//The plushie works exactly like a folder
|
|
/obj/item/toy/plush/tian_plush/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
|
if(is_type_in_typecache(tool, folder_insertables))
|
|
if(!user.transferItemToLoc(tool, src, silent = FALSE))
|
|
return ITEM_INTERACT_BLOCKING
|
|
balloon_alert(user, "nom!")
|
|
return ITEM_INTERACT_SUCCESS
|
|
return NONE
|
|
|
|
/obj/item/toy/plush/tian_plush/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
|
|
if(!is_type_in_typecache(interacting_with, folder_insertables))
|
|
return NONE
|
|
var/obj/item/item_to_insert = interacting_with
|
|
if(item_to_insert.loc == user)
|
|
if(!user.transferItemToLoc(item_to_insert, src, silent = TRUE))
|
|
return ITEM_INTERACT_BLOCKING
|
|
else
|
|
item_to_insert.do_pickup_animation(src)
|
|
item_to_insert.forceMove(src)
|
|
playsound(src, item_to_insert.pickup_sound, PICKUP_SOUND_VOLUME, item_to_insert.sound_vary, ignore_walls = FALSE)
|
|
balloon_alert(user, "nom!")
|
|
return ITEM_INTERACT_SUCCESS
|
|
|
|
/obj/item/toy/plush/tian_plush/ui_interact(mob/user, datum/tgui/ui)
|
|
ui = SStgui.try_update_ui(user, src, ui)
|
|
if(!ui)
|
|
ui = new(user, src, "Folder")
|
|
ui.open()
|
|
|
|
/obj/item/toy/plush/tian_plush/ui_data(mob/user)
|
|
var/list/data = list()
|
|
data["bg_color"] = "[bg_color]"
|
|
data["folder_name"] = "[name]"
|
|
|
|
data["contents"] = list()
|
|
data["contents_ref"] = list()
|
|
for(var/Content in src)
|
|
data["contents"] += "[Content]"
|
|
data["contents_ref"] += "[REF(Content)]"
|
|
|
|
return data
|
|
|
|
/obj/item/toy/plush/tian_plush/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
|
|
if(usr.stat != CONSCIOUS || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))
|
|
return
|
|
|
|
switch(action)
|
|
if("remove")
|
|
var/obj/item/Item = locate(params["ref"]) in src
|
|
if(istype(Item))
|
|
Item.forceMove(usr.loc)
|
|
usr.put_in_hands(Item)
|
|
to_chat(usr, span_notice("You remove [Item] from [src]."))
|
|
. = TRUE
|
|
if("examine")
|
|
var/obj/item/Item = locate(params["ref"]) in src
|
|
if(istype(Item))
|
|
usr.examinate(Item)
|
|
. = TRUE
|
|
//Belly
|
|
/obj/item/toy/plush/tian_plush/click_alt(mob/user)
|
|
shirt = !shirt
|
|
if(!shirt)
|
|
balloon_alert(user, "tummy shown...")
|
|
icon_state = "tianplush-alt"
|
|
|
|
else
|
|
balloon_alert(user, "tummy tucked away...")
|
|
icon_state = "tianplush"
|
|
return ..()
|
|
|
|
// Plushling, used when plushnium reactions fail
|
|
/obj/item/toy/plush/plushling
|
|
name = "peculiar plushie"
|
|
desc = "An adorable stuffed toy- wait, did it just move?"
|
|
/// Cooldown ticks between absorbs
|
|
var/absorb_cooldown = 100
|
|
/// When can it absorb another plushie
|
|
var/next_absorb = 0
|
|
var/check_interval = 20
|
|
var/next_check = 0
|
|
|
|
/obj/item/toy/plush/plushling/attack_self(mob/user)
|
|
if(!user)
|
|
return
|
|
to_chat(user, span_warning("You try to pet the plushie, but recoil as it bites your hand instead! OW!"))
|
|
var/mob/living/carbon/human/human_user = user
|
|
if(!human_user)
|
|
return
|
|
human_user.add_mood_event("plush_bite", /datum/mood_event/plush_bite)
|
|
human_user.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
|
addtimer(CALLBACK(human_user, TYPE_PROC_REF(/mob/living/carbon/human, dropItemToGround), src, TRUE), 1)
|
|
|
|
/obj/item/toy/plush/plushling/New()
|
|
var/initial_state = pick("mothroach", "moffplush_lovers", "johnghoul")
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = initial_state
|
|
START_PROCESSING(SSobj, src)
|
|
return ..()
|
|
|
|
/obj/item/toy/plush/plushling/Destroy()
|
|
STOP_PROCESSING(SSobj, src)
|
|
return ..()
|
|
|
|
/obj/item/toy/plush/plushling/process()
|
|
if(world.time < next_absorb || world.time < next_check)
|
|
return
|
|
next_check = world.time + check_interval
|
|
var/obj/item/toy/plush/target
|
|
for(var/obj/item/toy/plush/possible_target in loc) //First, it tries to get anything in its same location, be it a tile or a backpack
|
|
if(possible_target == src || istype(possible_target, /obj/item/toy/plush/plushling))
|
|
continue
|
|
target = possible_target
|
|
break
|
|
if(!target)
|
|
if(!isturf(loc))
|
|
return
|
|
for(var/obj/item/toy/plush/adjacent_plush in oview(1, src)) //If that doesn't work, it hunts for plushies adjacent to its own tile
|
|
if(istype(adjacent_plush, /obj/item/toy/plush/plushling)) //These do not hunt their own kind
|
|
continue
|
|
src.throw_at(adjacent_plush, 1, 2)
|
|
visible_message(span_danger("[src] leaps at [adjacent_plush]!"))
|
|
break
|
|
return
|
|
if(istype(target, /obj/item/toy/plush/plushling)) //These do not consume their own.
|
|
return
|
|
next_absorb = world.time + absorb_cooldown
|
|
plushie_absorb(target)
|
|
|
|
/obj/item/toy/plush/plushling/proc/plushie_absorb(obj/item/toy/plush/victim)
|
|
if(!victim)
|
|
return
|
|
visible_message(span_warning("[src] gruesomely mutilates [victim], leaving nothing more than dust!"))
|
|
name = victim.name
|
|
desc = victim.desc + " Wait, did it just move..?"
|
|
icon_state = victim.icon_state
|
|
squeak_override = victim.squeak_override
|
|
new /obj/effect/decal/cleanable/ash(get_turf(victim))
|
|
qdel(victim)
|
|
|
|
/obj/item/toy/plush/plushling/love(obj/item/toy/plush/kisser, mob/living/user) //You shouldn't have come here, poor plush.
|
|
if(!kisser)
|
|
return
|
|
plushie_absorb(kisser)
|
|
|
|
/obj/item/toy/plush/aeri
|
|
name = "Interdimensional Terrorist Plushie"
|
|
desc = "A highly controversial silicone 'plushie' modeled after its infamous namesake. Pulled from most storefronts after a spectacular public backlash, it now survives mainly through grey-market resellers. Rumor has it a few limited-run units shipped with a functional handheld railgun."
|
|
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
|
|
icon_state = "aeri"
|
|
inhand_icon_state = null
|
|
attack_verb_continuous = list("cuddles", "squeaks", "hugs", "caresses")
|
|
attack_verb_simple = list("cuddle", "squeak", "hug", "caress")
|
|
squeak_override = list(
|
|
'modular_zubbers/sound/lewd/rubber1.ogg' = 1,
|
|
'modular_zubbers/sound/lewd/rubber2.ogg' = 1,
|
|
'modular_zubbers/sound/lewd/rubber3.ogg' = 1
|
|
)
|
|
var/clothed = TRUE
|
|
|
|
/obj/item/toy/plush/aeri/Initialize(mapload)
|
|
. = ..()
|
|
update_plush_state()
|
|
|
|
/obj/item/toy/plush/aeri/proc/update_plush_state()
|
|
if(clothed)
|
|
name = "Interdimensional Terrorist Plushie"
|
|
desc = "A highly controversial silicone 'plushie' modeled after its infamous namesake. Pulled from most storefronts after a spectacular public backlash, it now survives mainly through grey-market resellers. Rumor has it a few limited-run units shipped with a functional handheld railgun."
|
|
icon_state = "aeri"
|
|
//probably not necessary to put the verb and squeak override once again here but it kinda bugs out if I don't
|
|
attack_verb_continuous = list("cuddles", "squeaks", "hugs", "caresses")
|
|
attack_verb_simple = list("cuddle", "squeak", "hug", "caress")
|
|
squeak_override = list(
|
|
'modular_zubbers/sound/lewd/rubber1.ogg' = 1,
|
|
'modular_zubbers/sound/lewd/rubber2.ogg' = 1,
|
|
'modular_zubbers/sound/lewd/rubber3.ogg' = 1
|
|
)
|
|
hitsound = initial(hitsound)
|
|
else
|
|
name = "Interdimensional terrorist Doll"
|
|
desc = "Without the outfit, the 'plushie' label becomes much harder to defend. Beneath the clothing is a glossy, stretchable silicone shell with ribbed orifices and breasts that experts have described as 'Fuckable'."
|
|
icon_state = "aeri-alt"
|
|
attack_verb_continuous = list("cuddles", "squeaks", "hugs", "caresses")
|
|
attack_verb_simple = list("cuddle", "squeak", "hug", "caress")
|
|
squeak_override = list(
|
|
'modular_zubbers/sound/lewd/rubber1.ogg' = 1,
|
|
'modular_zubbers/sound/lewd/rubber2.ogg' = 1,
|
|
'modular_zubbers/sound/lewd/rubber3.ogg' = 1
|
|
)
|
|
hitsound = null
|
|
inhand_icon_state = null
|
|
update_appearance()
|
|
update_inhand_icon()
|
|
|
|
/obj/item/toy/plush/aeri/examine(mob/user)
|
|
. = ..()
|
|
if(clothed)
|
|
. += span_purple("Alt-click to remove the plushie's clothes.")
|
|
else
|
|
. += span_purple("Alt-click to dress the doll back up.")
|
|
|
|
/obj/item/toy/plush/aeri/click_alt(mob/user)
|
|
clothed = !clothed
|
|
if(clothed)
|
|
to_chat(user, span_notice("You dress [src] back up."))
|
|
else
|
|
to_chat(user, span_notice("You remove [src]'s clothes."))
|
|
playsound(user, 'modular_zubbers/sound/lewd/rubber1.ogg', 50, TRUE)
|
|
update_plush_state()
|
|
return TRUE
|
|
|
|
/obj/item/toy/plush/aeri/attack(mob/living/carbon/human/target, mob/living/carbon/human/user)
|
|
if(clothed)
|
|
return ..()
|
|
var/obj/item/toy/plush/fleshlight/proxy = new(loc)
|
|
proxy.name = name
|
|
proxy.desc = desc
|
|
proxy.icon = icon
|
|
proxy.icon_state = icon_state
|
|
. = proxy.attack(target, user)
|
|
qdel(proxy)
|
|
|
|
//If you suicide with this toy it just summons a BSA smite on you
|
|
/obj/item/toy/plush/aeri/suicide_act(mob/living/carbon/human/user)
|
|
user.visible_message(span_suicide("[user] angers the plushie! Oh god, it's locking a Bluespace Artillery strike onto [user.p_them()]! It looks like [user.p_theyre()] trying to kill [user.p_them()]self!"))
|
|
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"
|