[THE QUIRKENING] Adds customization options to Organ Prosthetic, Junkie, Smoker, and Alcoholic! (#82051)

## About The Pull Request

Lets people pick:
- The shitty organ they spawn with (still has the restrictions of not
being possible to get heart when you are a plasmamen, for example)
- Their favorite alcohol to blackout with
- Their favorite brand of cigs
- Their favorite brand of drugs!
A lot of the code was taken from a downstream, made by @Floofies, i
already had my own implementation but it was buggy and not nearly as
clean, then i was made aware of theirs.
## Why It's Good For The Game

Character Customization is good and fun and lets people have more choice
in their roleplay.
## Changelog
🆑
add: Prosthetic organ users are now allowed to pick what they want to
start with.
add: Junkie of all kinds, including smokers and alcoholics, are also
able to pick their favorite type.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
This commit is contained in:
DATAxPUNGED
2024-03-30 20:46:54 -03:00
committed by GitHub
parent 3d7fb7630f
commit a155c23d2e
12 changed files with 260 additions and 61 deletions

View File

@@ -10,22 +10,81 @@ GLOBAL_LIST_INIT(nearsighted_glasses, list(
"Binoclard" = /obj/item/clothing/glasses/regular/kim,
))
///Options for the prothetic limb quirk to choose from
///Options for the prosthetic limb quirk to choose from
GLOBAL_LIST_INIT(limb_choice, list(
"Left Arm" = /obj/item/bodypart/arm/left/robot/surplus,
"Right Arm" = /obj/item/bodypart/arm/right/robot/surplus,
"Left Leg" = /obj/item/bodypart/leg/left/robot/surplus,
"Right Leg" = /obj/item/bodypart/leg/right/robot/surplus,
"Left arm" = /obj/item/bodypart/arm/left/robot/surplus,
"Right arm" = /obj/item/bodypart/arm/right/robot/surplus,
"Left leg" = /obj/item/bodypart/leg/left/robot/surplus,
"Right leg" = /obj/item/bodypart/leg/right/robot/surplus,
))
///Transhumanist quirk
GLOBAL_LIST_INIT(limb_choice_transhuman, list(
"Left Arm" = /obj/item/bodypart/arm/left/robot,
"Right Arm" = /obj/item/bodypart/arm/right/robot,
"Left Leg" = /obj/item/bodypart/leg/left/robot,
"Right Leg" = /obj/item/bodypart/leg/right/robot,
))
///Hemiplegic Quirk
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,
))
///Options for the Junkie quirk to choose from
GLOBAL_LIST_INIT(possible_junkie_addictions, setup_junkie_addictions(list(
/datum/reagent/drug/blastoff,
/datum/reagent/drug/krokodil,
/datum/reagent/medicine/morphine,
/datum/reagent/drug/happiness,
/datum/reagent/drug/methamphetamine,
)))
///Options for the Smoker quirk to choose from
GLOBAL_LIST_INIT(possible_smoker_addictions, setup_junkie_addictions(list(
/obj/item/storage/fancy/cigarettes,
/obj/item/storage/fancy/cigarettes/cigpack_midori,
/obj/item/storage/fancy/cigarettes/cigpack_uplift,
/obj/item/storage/fancy/cigarettes/cigpack_robust,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold,
/obj/item/storage/fancy/cigarettes/cigpack_carp,
/obj/item/storage/fancy/cigarettes/cigars,
/obj/item/storage/fancy/cigarettes/cigars/cohiba,
/obj/item/storage/fancy/cigarettes/cigars/havana,
)))
///Options for the Alcoholic quirk to choose from
GLOBAL_LIST_INIT(possible_alcoholic_addictions, setup_junkie_addictions(list(
"Beekhof Blauw Curaçao" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/curacao, "reagent" = /datum/reagent/consumable/ethanol/curacao),
"Buckin' Bronco's Applejack" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/applejack, "reagent" = /datum/reagent/consumable/ethanol/applejack),
"Voltaic Yellow Wine" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/wine_voltaic, "reagent" = /datum/reagent/consumable/ethanol/wine_voltaic),
"Caccavo Guaranteed Quality Tequila" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/tequila, "reagent" = /datum/reagent/consumable/ethanol/tequila),
"Captain Pete's Cuban Spiced Rum" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/rum, "reagent" = /datum/reagent/consumable/ethanol/rum),
"Chateau De Baton Premium Cognac" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/cognac, "reagent" = /datum/reagent/consumable/ethanol/cognac),
"Doublebeard's Bearded Special Wine" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/wine, "reagent" = /datum/reagent/consumable/ethanol/wine),
"Extra-strong Absinthe" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/absinthe, "reagent" = /datum/reagent/consumable/ethanol/absinthe),
"Goldeneye Vermouth" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/vermouth, "reagent" = /datum/reagent/consumable/ethanol/vermouth),
"Griffeater Gin" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/gin, "reagent" = /datum/reagent/consumable/ethanol/gin),
"Jian Hard Cider" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/hcider, "reagent" = /datum/reagent/consumable/ethanol/hcider),
"Luini Amaretto" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/amaretto, "reagent" = /datum/reagent/consumable/ethanol/amaretto),
"Magm-Ale" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/ale, "reagent" = /datum/reagent/consumable/ethanol/ale),
"Phillipes Well-aged Grappa" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/grappa, "reagent" = /datum/reagent/consumable/ethanol/grappa),
"Pride Of The Union Navy-Strength Rum" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/navy_rum, "reagent" = /datum/reagent/consumable/ethanol/navy_rum),
"Rabid Bear Malt Liquor" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/maltliquor, "reagent" = /datum/reagent/consumable/ethanol/beer/maltliquor),
"Robert Robust's Coffee Liqueur" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/kahlua, "reagent" = /datum/reagent/consumable/ethanol/kahlua),
"Ryo's Traditional Sake " = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/sake, "reagent" = /datum/reagent/consumable/ethanol/sake),
"Space Beer" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/beer, "reagent" = /datum/reagent/consumable/ethanol/beer),
"Tunguska Triple Distilled" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/vodka, "reagent" = /datum/reagent/consumable/ethanol/vodka),
"Uncle Git's Special Reserve" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/whiskey, "reagent" = /datum/reagent/consumable/ethanol/whiskey),
"Breezy Shoals Coconut Rum" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/coconut_rum, "reagent" = /datum/reagent/consumable/ethanol/coconut_rum),
"Moonlabor Yūyake" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/yuyake, "reagent" = /datum/reagent/consumable/ethanol/yuyake),
"Shu-Kouba Straight Shochu" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/shochu, "reagent" = /datum/reagent/consumable/ethanol/shochu)
)))
///Options for Prosthetic Organ
GLOBAL_LIST_INIT(organ_choice, list(
"Heart" = ORGAN_SLOT_HEART,
"Lungs" = ORGAN_SLOT_LUNGS,
"Liver" = ORGAN_SLOT_LIVER,
"Stomach" = ORGAN_SLOT_STOMACH,
))

View File

@@ -1,14 +1,9 @@
/datum/quirk/item_quirk/junkie
name = "Junkie"
desc = "You can't get enough of hard drugs."
icon = FA_ICON_PILLS
value = -6
gain_text = span_danger("You suddenly feel the craving for drugs.")
medical_record_text = "Patient has a history of hard drugs."
hardcore_value = 4
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES
mail_goodies = list(/obj/effect/spawner/random/contraband/narcotics)
var/drug_list = list(/datum/reagent/drug/blastoff, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs
/datum/quirk/item_quirk/addict
name = "Addict"
desc = "You are addicted to something that doesn't exist. Suffer."
gain_text = span_danger("You suddenly feel the craving for... something? You're not sure what it is.")
medical_record_text = "Patient has a history with SOMETHING but he refuses to tell us what it is."
abstract_parent_type = /datum/quirk/item_quirk/addict
var/datum/reagent/reagent_type //!If this is defined, reagent_id will be unused and the defined reagent type will be instead.
var/datum/reagent/reagent_instance //! actual instanced version of the reagent
var/where_drug //! Where the drug spawned
@@ -17,13 +12,13 @@
var/obj/item/accessory_type //! If this is null, an accessory won't be spawned.
var/process_interval = 30 SECONDS //! how frequently the quirk processes
var/next_process = 0 //! ticker for processing
var/drug_flavour_text = "Better hope you don't run out..."
var/drug_flavour_text = "Better hope you don't run out... of what, exactly? You don't know."
/datum/quirk/item_quirk/junkie/add_unique(client/client_source)
/datum/quirk/item_quirk/addict/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
if(!reagent_type)
reagent_type = pick(drug_list)
reagent_type = GLOB.possible_junkie_addictions[pick(GLOB.possible_junkie_addictions)]
reagent_instance = new reagent_type()
@@ -65,12 +60,7 @@
)
)
/datum/quirk/item_quirk/junkie/remove()
if(quirk_holder && reagent_instance)
for(var/addiction_type in subtypesof(/datum/addiction))
quirk_holder.mind.remove_addiction_points(addiction_type, MAX_ADDICTION_POINTS)
/datum/quirk/item_quirk/junkie/process(seconds_per_tick)
/datum/quirk/item_quirk/addict/process(seconds_per_tick)
if(HAS_TRAIT(quirk_holder, TRAIT_LIVERLESS_METABOLISM))
return
var/mob/living/carbon/human/human_holder = quirk_holder
@@ -88,7 +78,35 @@
for(var/addiction in reagent_instance.addiction_types)
human_holder.last_mind?.add_addiction_points(addiction, 1000) ///Max that shit out
/datum/quirk/item_quirk/junkie/smoker
/datum/quirk/item_quirk/addict/junkie
name = "Junkie"
desc = "You can't get enough of hard drugs."
icon = FA_ICON_PILLS
value = -6
gain_text = span_danger("You suddenly feel the craving for drugs.")
medical_record_text = "Patient has a history of hard drugs."
hardcore_value = 4
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES
mail_goodies = list(/obj/effect/spawner/random/contraband/narcotics)
drug_flavour_text = "Better hope you don't run out..."
/datum/quirk_constant_data/junkie
associated_typepath = /datum/quirk/item_quirk/addict/junkie
customization_options = list(/datum/preference/choiced/junkie)
/datum/quirk/item_quirk/addict/junkie/add_unique(client/client_source)
var/addiction = client_source?.prefs.read_preference(/datum/preference/choiced/junkie)
if(addiction && (addiction != "Random"))
reagent_type = GLOB.possible_junkie_addictions[addiction]
return ..()
/datum/quirk/item_quirk/addict/remove()
if(quirk_holder && reagent_instance)
for(var/addiction_type in subtypesof(/datum/addiction))
quirk_holder.mind.remove_addiction_points(addiction_type, MAX_ADDICTION_POINTS)
/datum/quirk/item_quirk/addict/smoker
name = "Smoker"
desc = "Sometimes you just really want a smoke. Probably not great for your lungs."
icon = FA_ICON_SMOKING
@@ -108,17 +126,21 @@
/obj/item/clothing/mask/cigarette/pipe,
)
/datum/quirk/item_quirk/junkie/smoker/New()
drug_container_type = pick(/obj/item/storage/fancy/cigarettes,
/obj/item/storage/fancy/cigarettes/cigpack_midori,
/obj/item/storage/fancy/cigarettes/cigpack_uplift,
/obj/item/storage/fancy/cigarettes/cigpack_robust,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold,
/obj/item/storage/fancy/cigarettes/cigpack_carp)
/datum/quirk_constant_data/smoker
associated_typepath = /datum/quirk/item_quirk/addict/smoker
customization_options = list(/datum/preference/choiced/smoker)
/datum/quirk/item_quirk/addict/smoker/New()
drug_container_type = GLOB.possible_smoker_addictions[pick(GLOB.possible_smoker_addictions)]
return ..()
/datum/quirk/item_quirk/junkie/smoker/post_add()
/datum/quirk/item_quirk/addict/smoker/add_unique(client/client_source)
var/addiction = client_source?.prefs.read_preference(/datum/preference/choiced/smoker)
if(addiction && (addiction != "Random"))
drug_container_type = GLOB.possible_smoker_addictions[addiction]
return ..()
/datum/quirk/item_quirk/addict/smoker/post_add()
. = ..()
quirk_holder.add_mob_memory(/datum/memory/key/quirk_smoker, protagonist = quirk_holder, preferred_brand = initial(drug_container_type.name))
// smoker lungs have 25% less health and healing
@@ -136,7 +158,7 @@
smoker_lungs = new smoker_lungs
smoker_lungs.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
/datum/quirk/item_quirk/junkie/smoker/process(seconds_per_tick)
/datum/quirk/item_quirk/addict/smoker/process(seconds_per_tick)
. = ..()
var/mob/living/carbon/human/human_holder = quirk_holder
var/obj/item/mask_item = human_holder.get_item_by_slot(ITEM_SLOT_MASK)
@@ -147,7 +169,7 @@
else
quirk_holder.add_mood_event("wrong_cigs", /datum/mood_event/wrong_brand)
/datum/quirk/item_quirk/junkie/alcoholic
/datum/quirk/item_quirk/addict/alcoholic
name = "Alcoholic"
desc = "You just can't live without alcohol. Your liver is a machine that turns ethanol into acetaldehyde."
icon = FA_ICON_WINE_GLASS
@@ -167,31 +189,31 @@
/// Cached typepath of the owner's favorite alcohol reagent
var/datum/reagent/consumable/ethanol/favorite_alcohol
/datum/quirk/item_quirk/junkie/alcoholic/New()
drug_container_type = pick(
/obj/item/reagent_containers/cup/glass/bottle/whiskey,
/obj/item/reagent_containers/cup/glass/bottle/vodka,
/obj/item/reagent_containers/cup/glass/bottle/ale,
/obj/item/reagent_containers/cup/glass/bottle/beer,
/obj/item/reagent_containers/cup/glass/bottle/hcider,
/obj/item/reagent_containers/cup/glass/bottle/wine,
/obj/item/reagent_containers/cup/glass/bottle/sake,
)
/datum/quirk_constant_data/alcoholic
associated_typepath = /datum/quirk/item_quirk/addict/alcoholic
customization_options = list(/datum/preference/choiced/alcoholic)
/datum/quirk/item_quirk/addict/alcoholic/New()
drug_container_type = GLOB.possible_alcoholic_addictions[pick(GLOB.possible_alcoholic_addictions["bottlepath"])]
return ..()
/datum/quirk/item_quirk/junkie/alcoholic/post_add()
/datum/quirk/item_quirk/addict/alcoholic/add_unique(client/client_source)
var/addiction = client_source?.prefs.read_preference(/datum/preference/choiced/alcoholic)
if(addiction && (addiction != "Random"))
drug_container_type = GLOB.possible_alcoholic_addictions[addiction]["bottlepath"]
return ..()
/datum/quirk/item_quirk/addict/alcoholic/post_add()
. = ..()
RegisterSignal(quirk_holder, COMSIG_MOB_REAGENT_CHECK, PROC_REF(check_brandy))
var/obj/item/reagent_containers/brandy_container = GLOB.alcohol_containers[drug_container_type]
var/obj/item/reagent_containers/brandy_container = drug_container_type
if(isnull(brandy_container))
stack_trace("Alcoholic quirk added while the GLOB.alcohol_containers is (somehow) not initialized!")
brandy_container = new drug_container_type
favorite_alcohol = brandy_container.list_reagents[1]
favorite_alcohol = brandy_container["reagent"]
qdel(brandy_container)
else
favorite_alcohol = brandy_container.list_reagents[1]
favorite_alcohol = brandy_container["reagent"]
quirk_holder.add_mob_memory(/datum/memory/key/quirk_alcoholic, protagonist = quirk_holder, preferred_brandy = initial(favorite_alcohol.name))
// alcoholic livers have 25% less health and healing
@@ -200,10 +222,10 @@
alcohol_liver.maxHealth = alcohol_liver.maxHealth * 0.75
alcohol_liver.healing_factor = alcohol_liver.healing_factor * 0.75
/datum/quirk/item_quirk/junkie/alcoholic/remove()
/datum/quirk/item_quirk/addict/alcoholic/remove()
UnregisterSignal(quirk_holder, COMSIG_MOB_REAGENT_CHECK)
/datum/quirk/item_quirk/junkie/alcoholic/proc/check_brandy(mob/source, datum/reagent/booze)
/datum/quirk/item_quirk/addict/alcoholic/proc/check_brandy(mob/source, datum/reagent/booze)
SIGNAL_HANDLER
//we don't care if it is not alcohol

View File

@@ -12,6 +12,10 @@
/// The original organ from before the prosthetic was applied
var/obj/item/organ/old_organ
/datum/quirk_constant_data/prosthetic_organ
associated_typepath = /datum/quirk/prosthetic_organ
customization_options = list(/datum/preference/choiced/prosthetic_organ)
/datum/quirk/prosthetic_organ/add_unique(client/client_source)
var/mob/living/carbon/human/human_holder = quirk_holder
var/static/list/organ_slots = list(
@@ -20,6 +24,10 @@
ORGAN_SLOT_LIVER,
ORGAN_SLOT_STOMACH,
)
var/preferred_organ = GLOB.organ_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/prosthetic_organ)]
if(isnull(preferred_organ)) //Client is gone or they chose a random prosthetic
preferred_organ = GLOB.organ_choice[pick(GLOB.organ_choice)]
var/list/possible_organ_slots = organ_slots.Copy()
if(HAS_TRAIT(human_holder, TRAIT_NOBLOOD))
possible_organ_slots -= ORGAN_SLOT_HEART
@@ -31,7 +39,10 @@
possible_organ_slots -= ORGAN_SLOT_STOMACH
if(!length(organ_slots)) //what the hell
return
var/organ_slot = pick(possible_organ_slots)
if(preferred_organ in possible_organ_slots)
organ_slot = preferred_organ
var/obj/item/organ/prosthetic
switch(organ_slot)
if(ORGAN_SLOT_HEART)
@@ -47,14 +58,14 @@
prosthetic = new /obj/item/organ/internal/stomach/cybernetic/surplus
slot_string = "stomach"
medical_record_text = "During physical examination, patient was found to have a low-budget prosthetic [slot_string]. \
<b>Removal of these organs is known to be dangerous to the patient as well as the practitioner.</b>"
Removal of these organs is known to be dangerous to the patient as well as the practitioner."
old_organ = human_holder.get_organ_slot(organ_slot)
if(prosthetic.Insert(human_holder, special = TRUE))
old_organ.moveToNullspace()
STOP_PROCESSING(SSobj, old_organ)
/datum/quirk/prosthetic_organ/post_add()
to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus organ. It is fragile and will easily come apart under duress. \
to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus organ. It is weak and highly unstable. \
Additionally, any EMP will make it stop working entirely."))
/datum/quirk/prosthetic_organ/remove()

View File

@@ -574,7 +574,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
// CIGARS //
////////////
/obj/item/clothing/mask/cigarette/cigar
name = "premium cigar"
name = "cigar"
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
icon_state = "cigaroff"
icon_on = "cigaron"
@@ -589,6 +589,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
list_reagents = list(/datum/reagent/drug/nicotine = 25)
choke_time_max = 40 SECONDS
/obj/item/clothing/mask/cigarette/cigar/premium
name = "premium cigar"
//this is the version that actually spawns in premium cigar cases, the distinction is made so that the smoker quirk can differentiate between the default cigar box and its subtypes
/obj/item/clothing/mask/cigarette/cigar/cohiba
name = "\improper Cohiba Robusto cigar"
desc = "There's little more you could want from a cigar."

View File

@@ -424,7 +424,7 @@
base_icon_state = "cigarcase"
w_class = WEIGHT_CLASS_NORMAL
contents_tag = "premium cigar"
spawn_type = /obj/item/clothing/mask/cigarette/cigar
spawn_type = /obj/item/clothing/mask/cigarette/cigar/premium
spawn_count = 5
spawn_coupon = FALSE
display_cigs = FALSE

View File

@@ -0,0 +1,62 @@
/proc/setup_junkie_addictions(list/possible_addictions)
. = possible_addictions
for(var/datum/reagent/addiction as anything in .)
. -= addiction
.[addiction::name] = addiction
/datum/preference/choiced/junkie
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "junkie"
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/choiced/junkie/init_possible_values()
return list("Random") + assoc_to_keys(GLOB.possible_junkie_addictions)
/datum/preference/choiced/junkie/create_default_value()
return "Random"
/datum/preference/choiced/junkie/is_accessible(datum/preferences/preferences)
if (!..())
return FALSE
return "Junkie" in preferences.all_quirks
/datum/preference/choiced/junkie/apply_to_human(mob/living/carbon/human/target, value)
return
/datum/preference/choiced/smoker
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "smoker"
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/choiced/smoker/init_possible_values()
return list("Random") + assoc_to_keys(GLOB.possible_smoker_addictions)
/datum/preference/choiced/smoker/create_default_value()
return "Random"
/datum/preference/choiced/smoker/is_accessible(datum/preferences/preferences)
if (!..())
return FALSE
return "Smoker" in preferences.all_quirks
/datum/preference/choiced/smoker/apply_to_human(mob/living/carbon/human/target, value)
return
/datum/preference/choiced/alcoholic
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "alcoholic"
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/choiced/alcoholic/init_possible_values()
return list("Random") + assoc_to_keys(GLOB.possible_alcoholic_addictions)
/datum/preference/choiced/alcoholic/create_default_value()
return "Random"
/datum/preference/choiced/alcoholic/is_accessible(datum/preferences/preferences)
if (!..())
return FALSE
return "Alcoholic" in preferences.all_quirks
/datum/preference/choiced/alcoholic/apply_to_human(mob/living/carbon/human/target, value)
return

View File

@@ -0,0 +1,17 @@
/datum/preference/choiced/prosthetic_organ
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "prosthetic_organ"
savefile_identifier = PREFERENCE_CHARACTER
/datum/preference/choiced/prosthetic_organ/init_possible_values()
return list("Random") + GLOB.organ_choice
/datum/preference/choiced/prosthetic_organ/is_accessible(datum/preferences/preferences)
. = ..()
if (!.)
return FALSE
return "Prosthetic Organ" in preferences.all_quirks
/datum/preference/choiced/prosthetic_organ/apply_to_human(mob/living/carbon/human/target, value)
return

View File

@@ -1643,6 +1643,7 @@
#include "code\datums\proximity_monitor\fields\timestop.dm"
#include "code\datums\quirks\_quirk.dm"
#include "code\datums\quirks\_quirk_constant_data.dm"
#include "code\datums\quirks\negative_quirks\addict.dm"
#include "code\datums\quirks\negative_quirks\all_nighter.dm"
#include "code\datums\quirks\negative_quirks\allergic.dm"
#include "code\datums\quirks\negative_quirks\bad_back.dm"
@@ -1667,7 +1668,6 @@
#include "code\datums\quirks\negative_quirks\illiterate.dm"
#include "code\datums\quirks\negative_quirks\indebted.dm"
#include "code\datums\quirks\negative_quirks\insanity.dm"
#include "code\datums\quirks\negative_quirks\junkie.dm"
#include "code\datums\quirks\negative_quirks\light_drinker.dm"
#include "code\datums\quirks\negative_quirks\mute.dm"
#include "code\datums\quirks\negative_quirks\nearsighted.dm"
@@ -3632,6 +3632,7 @@
#include "code\modules\client\preferences\hotkeys.dm"
#include "code\modules\client\preferences\item_outlines.dm"
#include "code\modules\client\preferences\jobless_role.dm"
#include "code\modules\client\preferences\junkie.dm"
#include "code\modules\client\preferences\language.dm"
#include "code\modules\client\preferences\mod_select.dm"
#include "code\modules\client\preferences\multiz_parallax.dm"
@@ -3649,7 +3650,8 @@
#include "code\modules\client\preferences\preferred_map.dm"
#include "code\modules\client\preferences\pride_pin.dm"
#include "code\modules\client\preferences\prisoner_crime.dm"
#include "code\modules\client\preferences\prosthetic.dm"
#include "code\modules\client\preferences\prosthetic_limb.dm"
#include "code\modules\client\preferences\prosthetic_organ.dm"
#include "code\modules\client\preferences\random.dm"
#include "code\modules\client\preferences\runechat.dm"
#include "code\modules\client\preferences\scaling_method.dm"

View File

@@ -0,0 +1,16 @@
import { FeatureChoiced, FeatureDropdownInput } from '../base';
export const junkie: FeatureChoiced = {
name: 'Addiction',
component: FeatureDropdownInput,
};
export const smoker: FeatureChoiced = {
name: 'Favorite Brand',
component: FeatureDropdownInput,
};
export const alcoholic: FeatureChoiced = {
name: 'Favorite Drink',
component: FeatureDropdownInput,
};

View File

@@ -1,6 +1,6 @@
import { FeatureChoiced, FeatureDropdownInput } from '../base';
export const prosthetic: FeatureChoiced = {
export const prosthetic_limb: FeatureChoiced = {
name: 'Prosthetic',
component: FeatureDropdownInput,
};

View File

@@ -0,0 +1,6 @@
import { FeatureChoiced, FeatureDropdownInput } from '../base';
export const prosthetic_organ: FeatureChoiced = {
name: 'Prosthetic Organ',
component: FeatureDropdownInput,
};