From 687b44df37558a2b6b72c3c6f5f6112340806c11 Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Tue, 25 Feb 2025 14:26:21 -0800 Subject: [PATCH] Seamless Heels Quirk (#2994) ## About The Pull Request Adds a "Seamless Heels" quirk that's neutral. You spawn with heels you can't take off. (More items TBD) ## Why It's Good For The Game Something for those who like to be a robot or something with heels. But also I wanted this for a long time, and I bent reality to my whims. ## Proof Of Testing - Heels being removed from you removes the quirk - Color picker works - quirk works - we test things on prod - merp merp meow meow squeak squeak ## Changelog :cl: add: Seamless heels quirk /:cl: --- .../subsystem/processing/quirks.dm | 1 + .../datums/quirks/neutral_quirks/entombed.dm | 12 +++-- .../quirks/neutral_quirks/seamless_clothes.dm | 53 +++++++++++++++++++ tgstation.dme | 1 + .../bubbers/seamless_clothes.tsx | 6 +++ 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 modular_zubbers/code/datums/quirks/neutral_quirks/seamless_clothes.dm create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/seamless_clothes.tsx diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index ee1cc3737c4..7bdf0f24cd6 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -44,6 +44,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/featherweight, /datum/quirk/oversized), list(/datum/quirk/overweight, /datum/quirk/obese), list(/datum/quirk/dominant_aura, /datum/quirk/well_trained), + list(/datum/quirk/equipping/entombed, /datum/quirk/equipping/seamless_clothes), list(/datum/quirk/equipping/entombed, /datum/quirk/badback), //BUBBER EDIT ADDITION END )) diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm index caa19427537..d506bf1fef4 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm @@ -175,7 +175,8 @@ return "Civilian" /datum/preference/choiced/entombed_skin/is_accessible(datum/preferences/preferences) - if (!..()) + . = ..() + if(!.) return FALSE return "Entombed" in preferences.all_quirks @@ -191,7 +192,8 @@ maximum_value_length = 48 /datum/preference/text/entombed_mod_name/is_accessible(datum/preferences/preferences) - if (!..()) + . = ..() + if(!.) return FALSE return "Entombed" in preferences.all_quirks @@ -216,7 +218,8 @@ can_randomize = FALSE /datum/preference/text/entombed_mod_desc/is_accessible(datum/preferences/preferences) - if (!..()) + . = ..() + if(!.) return FALSE return "Entombed" in preferences.all_quirks @@ -242,7 +245,8 @@ maximum_value_length = 16 /datum/preference/text/entombed_mod_prefix/is_accessible(datum/preferences/preferences) - if (!..()) + . = ..() + if(!.) return FALSE return "Entombed" in preferences.all_quirks diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/seamless_clothes.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/seamless_clothes.dm new file mode 100644 index 00000000000..2ad7ecb7f19 --- /dev/null +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/seamless_clothes.dm @@ -0,0 +1,53 @@ +/datum/quirk/equipping/seamless_clothes + name = "Seamless Heels" + desc = "You come with heels stuck on you. Whether it be a freak accident or part of your design, you can't take them off." + medical_record_text = "Subject appears to have clothing attire fused to their body." + value = 0 + icon = FA_ICON_TSHIRT + gain_text = span_notice("You feel things stick to your body.") + lose_text = span_notice("You feel things loose their grip on your body.") + quirk_flags = QUIRK_HIDE_FROM_SCAN + forced_items = list(/obj/item/clothing/shoes/fancy_heels = list(ITEM_SLOT_FEET)) + var/prefix = "seamless" + var/obj/item/clothing/shoes/shoes + +/datum/quirk/equipping/seamless_clothes/on_equip_item(obj/item/equipped, success) + shoes = equipped + +/datum/quirk/equipping/seamless_clothes/post_add() // Quirks init on round start ready up before client does. + if(!istype(shoes, /obj/item/clothing/shoes/fancy_heels)) + CRASH("Type mismatch on [src] during on_equip_item. Tried to equip [shoes]") + shoes.name = "[prefix] [initial(shoes.name)]" + shoes.desc = "A pair of heels which refuse to come off your feet." + shoes.greyscale_colors = quirk_holder.client.prefs.read_preference(/datum/preference/color/seamless_shoe_color) + shoes.resistance_flags = ACID_PROOF | FIRE_PROOF + shoes.update_greyscale() + ADD_TRAIT(shoes, TRAIT_NODROP, CLOTHING_TRAIT) + RegisterSignal(shoes, COMSIG_ITEM_DROPPED, PROC_REF(remove_quirk)) + +/datum/quirk/equipping/seamless_clothes/remove() + if(isnull(shoes)) + return + UnregisterSignal(shoes, COMSIG_ITEM_DROPPED) + QDEL_NULL(shoes) + +/datum/quirk/equipping/seamless_clothes/proc/remove_quirk() + SIGNAL_HANDLER + qdel(src) + +/datum/quirk_constant_data/seamless_clothes + associated_typepath = /datum/quirk/equipping/seamless_clothes + customization_options = list( + /datum/preference/color/seamless_shoe_color + ) + +/datum/preference/color/seamless_shoe_color + savefile_key = "seamless_shoe_color" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + +/datum/preference/color/seamless_shoe_color/create_default_value() + return "#e7e7e7" + +/datum/preference/color/seamless_shoe_color/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/tgstation.dme b/tgstation.dme index fbc75d71648..ef168cb13d0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8739,6 +8739,7 @@ #include "modular_zubbers\code\datums\quirks\neutral_quirks\lungs.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\oversized_quirk.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\pet_owner.dm" +#include "modular_zubbers\code\datums\quirks\neutral_quirks\seamless_clothes.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\waddle.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\dominant_aura.dm" #include "modular_zubbers\code\datums\quirks\positive_quirks\empath_override.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/seamless_clothes.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/seamless_clothes.tsx new file mode 100644 index 00000000000..ac33c2a28a3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/seamless_clothes.tsx @@ -0,0 +1,6 @@ +import { Feature, FeatureColorInput } from '../../base'; + +export const seamless_shoe_color: Feature = { + name: 'Shoe Color', + component: FeatureColorInput, +};