Bureaucratic Goat 2: the Reckoning (#5226)

## About The Pull Request
Credit to Seijan-Etroix for helping **_a lot_** with the design.

I have resprited and recoded the Bureaucratic goat's plush, my very
first PR.
Now, the plushie has two secret functions: one which allows the plushie
to pull back its shirt and reveal its belly (exactly like #5188) and
another which simply allows the plushie to eat paper/documents and act
as a folder. It also comes with its own custom sound.

<img width="320" height="320" alt="tianplush-export"
src="https://github.com/user-attachments/assets/5b6a5556-a1a7-4b8d-ba0f-1fe197dfe746"
/>

## Why It's Good For The Game

I'm better at coding and spriting now!

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
<img width="170" height="120" alt="image"
src="https://github.com/user-attachments/assets/3f280207-8767-496d-8885-29dbf73652b7"
/>
<img width="352" height="164" alt="image"
src="https://github.com/user-attachments/assets/7ddccc27-0aa4-4e30-8b73-2f538388352c"
/>

</details>

## Changelog
🆑
add: Added new folder functionality to the Bureaucratic Goat plush, as
well as a revealable tummy.
image: Updated the sprite of the Bureaucratic Goat plush.
/🆑
This commit is contained in:
Mathilde
2026-02-12 11:07:32 -05:00
committed by GitHub
parent 93a13678fb
commit 6f2f46990f
4 changed files with 123 additions and 11 deletions
+1 -1
View File
@@ -382,7 +382,7 @@
return UI_CLOSE
if(!user.can_read(src))
return UI_CLOSE
if(in_contents_of(/obj/machinery/door/airlock) || in_contents_of(/obj/item/clipboard) || in_contents_of(/obj/item/folder))
if(in_contents_of(/obj/machinery/door/airlock) || in_contents_of(/obj/item/clipboard) || in_contents_of(/obj/item/folder) || in_contents_of(/obj/item/toy/plush/tian_plush)) //BUBBER EDIT - /obj/item/toy/plush/tian_plush
return UI_INTERACTIVE
return ..()
@@ -320,16 +320,6 @@
icon_state = "lazy_synth"
squeak_override = list('modular_zubbers/sound/misc/squeakle.ogg' = 1)
/obj/item/toy/plush/tian_plush
name = "bureaucratic goat plush"
desc = "A big, soft plush of a goat-carp creature, that clearly hasn't slept in a lot. It has a faint smell of ink and weed."
attack_verb_continuous = list("chomps", "nibbles", "gnashes", "bites")
attack_verb_simple = list("gnashes")
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
icon_state = "tian_plush"
squeak_override = list('modular_skyrat/modules/emotes/sound/voice/baa.ogg' = 1)
/obj/item/toy/plush/goatplushie
name = "strange goat plushie"
icon = 'modular_zubbers/icons/obj/toys/plushes.dmi'
@@ -494,3 +484,125 @@
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 ..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.