From 34aa2bc50ea9dd8e1c8789339a62f0fa2c8aadd1 Mon Sep 17 00:00:00 2001 From: DATAxPUNGED <44149906+DATA-xPUNGED@users.noreply.github.com> Date: Thu, 15 Aug 2024 08:02:29 -0300 Subject: [PATCH] Paraplegics can choose to not have legs. (#85716) ## About The Pull Request This is a bounty that was made by ophaq, and claimed by me. Gives paraplegic the option to be an amputee, and appear on station without their legs. They are still paralyzed, so no amount of mechanical legs is gonna let them walk again. ## Why It's Good For The Game Character customization is a good thing and lets people make their little characters suffer in new ways, this one in specific *actively lowers your max HP*, which is gonna certainly be fun. ## Changelog :cl: qol: Paraplegics can now opt into appearing on the shift without their legs. /:cl: --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> --- code/_globalvars/lists/quirks.dm | 6 ++++++ .../quirks/negative_quirks/paraplegic.dm | 14 +++++++++++++ code/modules/client/preferences/paraplegic.dm | 20 +++++++++++++++++++ tgstation.dme | 1 + .../character_preferences/paraplegic.tsx | 7 +++++++ 5 files changed, 48 insertions(+) create mode 100644 code/modules/client/preferences/paraplegic.dm create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/paraplegic.tsx diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index 22ef830ea77..896504beb7b 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -92,3 +92,9 @@ GLOBAL_LIST_INIT(organ_choice, list( "Liver" = ORGAN_SLOT_LIVER, "Stomach" = ORGAN_SLOT_STOMACH, )) + +///Paraplegic Quirk +GLOBAL_LIST_INIT(paraplegic_choice, list( + "Default" = FALSE, + "Amputee" = TRUE, +)) diff --git a/code/datums/quirks/negative_quirks/paraplegic.dm b/code/datums/quirks/negative_quirks/paraplegic.dm index 58e1c4ba31e..1cbb2dbac10 100644 --- a/code/datums/quirks/negative_quirks/paraplegic.dm +++ b/code/datums/quirks/negative_quirks/paraplegic.dm @@ -9,6 +9,10 @@ hardcore_value = 15 mail_goodies = list(/obj/vehicle/ridden/wheelchair/motorized) //yes a fullsized unfolded motorized wheelchair does fit +/datum/quirk_constant_data/paraplegic + associated_typepath = /datum/quirk/paraplegic + customization_options = list(/datum/preference/choiced/paraplegic) + /datum/quirk/paraplegic/add_unique(client/client_source) if(quirk_holder.buckled) // Handle late joins being buckled to arrival shuttle chairs. quirk_holder.buckled.unbuckle_mob(quirk_holder) @@ -32,6 +36,16 @@ if(dropped_item.fingerprintslast == quirk_holder.ckey) quirk_holder.put_in_hands(dropped_item) + // Finally, removes their legs if they have opted as such, deleting the shoes + var/amputee = GLOB.paraplegic_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/paraplegic)] + if(amputee) + delete_legs(quirk_holder) + +/datum/quirk/paraplegic/proc/delete_legs(mob/living/carbon/human/human_holder) + qdel(human_holder.get_item_by_slot(ITEM_SLOT_FEET)) + qdel(human_holder.get_bodypart(BODY_ZONE_L_LEG)) + qdel(human_holder.get_bodypart(BODY_ZONE_R_LEG)) + /datum/quirk/paraplegic/add(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder human_holder.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic, TRAUMA_RESILIENCE_ABSOLUTE) diff --git a/code/modules/client/preferences/paraplegic.dm b/code/modules/client/preferences/paraplegic.dm new file mode 100644 index 00000000000..1ffa704c77d --- /dev/null +++ b/code/modules/client/preferences/paraplegic.dm @@ -0,0 +1,20 @@ +/datum/preference/choiced/paraplegic + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "paraplegic" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/paraplegic/init_possible_values() + return GLOB.paraplegic_choice + +/datum/preference/choiced/paraplegic/create_default_value() + return "Default" + +/datum/preference/choiced/paraplegic/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return "Paraplegic" in preferences.all_quirks + +/datum/preference/choiced/paraplegic/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/tgstation.dme b/tgstation.dme index 833a784378d..4e9530b296e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3778,6 +3778,7 @@ #include "code\modules\client\preferences\operative_species.dm" #include "code\modules\client\preferences\paint_color.dm" #include "code\modules\client\preferences\parallax.dm" +#include "code\modules\client\preferences\paraplegic.dm" #include "code\modules\client\preferences\pda.dm" #include "code\modules\client\preferences\persistent_scars.dm" #include "code\modules\client\preferences\phobia.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/paraplegic.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/paraplegic.tsx new file mode 100644 index 00000000000..73c8f325bab --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/paraplegic.tsx @@ -0,0 +1,7 @@ +import { FeatureChoiced } from '../base'; +import { FeatureDropdownInput } from '../dropdowns'; + +export const paraplegic: FeatureChoiced = { + name: 'Paraplegic', + component: FeatureDropdownInput, +};