mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
[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:
@@ -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,
|
||||
))
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
62
code/modules/client/preferences/junkie.dm
Normal file
62
code/modules/client/preferences/junkie.dm
Normal 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
|
||||
17
code/modules/client/preferences/prosthetic_organ.dm
Normal file
17
code/modules/client/preferences/prosthetic_organ.dm
Normal 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
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
import { FeatureChoiced, FeatureDropdownInput } from '../base';
|
||||
|
||||
export const prosthetic: FeatureChoiced = {
|
||||
export const prosthetic_limb: FeatureChoiced = {
|
||||
name: 'Prosthetic',
|
||||
component: FeatureDropdownInput,
|
||||
};
|
||||
@@ -0,0 +1,6 @@
|
||||
import { FeatureChoiced, FeatureDropdownInput } from '../base';
|
||||
|
||||
export const prosthetic_organ: FeatureChoiced = {
|
||||
name: 'Prosthetic Organ',
|
||||
component: FeatureDropdownInput,
|
||||
};
|
||||
Reference in New Issue
Block a user