diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index 1af746a0215..c931930d881 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -24,3 +24,8 @@ GLOBAL_LIST_INIT(limb_choice_transhuman, list( "Left Leg" = /obj/item/bodypart/leg/left/robot, "Right Leg" = /obj/item/bodypart/leg/right/robot, )) + +GLOBAL_LIST_INIT(side_choice_hemiplegic, list( + "Left Side" = /datum/brain_trauma/severe/paralysis/hemiplegic/left, + "Right Side" = /datum/brain_trauma/severe/paralysis/hemiplegic/right, +)) diff --git a/code/datums/quirks/negative_quirks/hemiplegic.dm b/code/datums/quirks/negative_quirks/hemiplegic.dm index 459b880fad2..b82ad434dfb 100644 --- a/code/datums/quirks/negative_quirks/hemiplegic.dm +++ b/code/datums/quirks/negative_quirks/hemiplegic.dm @@ -12,10 +12,19 @@ /obj/item/reagent_containers/cup/glass/drinkingglass/filled/half_full, ) -/datum/quirk/hemiplegic/add(client/client_source) +/datum/quirk_constant_data/hemiplegic + associated_typepath = /datum/quirk/hemiplegic + customization_options = list(/datum/preference/choiced/hemiplegic) + +/datum/quirk/hemiplegic/add_unique(client/client_source) + var/datum/brain_trauma/severe/paralysis/hemiplegic/side_choice = GLOB.side_choice_hemiplegic[client_source?.prefs?.read_preference(/datum/preference/choiced/hemiplegic)] + if(isnull(side_choice)) // Client gone or they chose a random side + side_choice = GLOB.side_choice_hemiplegic[pick(GLOB.side_choice_hemiplegic)] + var/mob/living/carbon/human/human_holder = quirk_holder - var/trauma_type = pick(/datum/brain_trauma/severe/paralysis/hemiplegic/left, /datum/brain_trauma/severe/paralysis/hemiplegic/right) - human_holder.gain_trauma(trauma_type, TRAUMA_RESILIENCE_ABSOLUTE) + + medical_record_text = "Patient has an untreatable impairment in motor function on the [side_choice::paralysis_type] half of their body." + human_holder.gain_trauma(side_choice, TRAUMA_RESILIENCE_ABSOLUTE) /datum/quirk/hemiplegic/remove() var/mob/living/carbon/human/human_holder = quirk_holder diff --git a/code/modules/client/preferences/hemiplegic.dm b/code/modules/client/preferences/hemiplegic.dm new file mode 100644 index 00000000000..923a6f4acdf --- /dev/null +++ b/code/modules/client/preferences/hemiplegic.dm @@ -0,0 +1,17 @@ +/datum/preference/choiced/hemiplegic + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "hemiplegic" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/hemiplegic/init_possible_values() + return list("Random") + GLOB.side_choice_hemiplegic + +/datum/preference/choiced/hemiplegic/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return "Hemiplegic" in preferences.all_quirks + +/datum/preference/choiced/hemiplegic/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/tgstation.dme b/tgstation.dme index bceac90b94e..4a7cc02de9a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3612,6 +3612,7 @@ #include "code\modules\client\preferences\ghost.dm" #include "code\modules\client\preferences\ghost_lighting.dm" #include "code\modules\client\preferences\glasses.dm" +#include "code\modules\client\preferences\hemiplegic.dm" #include "code\modules\client\preferences\heterochromatic.dm" #include "code\modules\client\preferences\hotkeys.dm" #include "code\modules\client\preferences\item_outlines.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/hemiplegic.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/hemiplegic.tsx new file mode 100644 index 00000000000..0494558ba77 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/hemiplegic.tsx @@ -0,0 +1,6 @@ +import { FeatureChoiced, FeatureDropdownInput } from '../base'; + +export const hemiplegic: FeatureChoiced = { + name: 'Hemiplegic', + component: FeatureDropdownInput, +};