diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 7a14f4c6b430..0ba9bfb4b75b 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -147,7 +147,6 @@
#define TRAIT_UNINTELLIGIBLE_SPEECH "unintelligible-speech"
#define TRAIT_UNSTABLE "unstable"
#define TRAIT_OIL_FRIED "oil_fried"
-#define TRAIT_SHELTERED "sheltered"
#define TRAIT_RANDOM_ACCENT "random_accent"
#define TRAIT_MEDICALIGNORE "medical_ignore"
#define TRAIT_PASSTABLE "passtable"
@@ -188,7 +187,6 @@
#define TRAIT_EMPATH "empath"
#define TRAIT_FRIENDLY "friendly"
#define TRAIT_ALLERGIC "allergic"
-#define TRAIT_KLEPTOMANIAC "kleptomaniac"
// common trait sources
#define TRAIT_GENERIC "generic"
diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm
index 7344e3013950..4915ce293326 100644
--- a/code/datums/traits/negative.dm
+++ b/code/datums/traits/negative.dm
@@ -1,21 +1,4 @@
//predominantly negative traits
-
-/datum/quirk/badback
- name = "Bad Back"
- desc = "Thanks to your poor posture, backpacks and other bags never sit right on your back. More evenly weighted objects are fine, though."
- value = -2
- mood_quirk = TRUE
- gain_text = "Your back REALLY hurts!"
- lose_text = "Your back feels better."
- medical_record_text = "Patient scans indicate severe and chronic back pain."
-
-/datum/quirk/badback/on_process()
- var/mob/living/carbon/human/H = quirk_holder
- if(H.back && istype(H.back, /obj/item/storage/backpack))
- SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "back_pain", /datum/mood_event/back_pain)
- else
- SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "back_pain")
-
/datum/quirk/blooddeficiency
name = "Blood Deficiency"
desc = "Your body can't produce enough blood to sustain itself."
@@ -32,58 +15,6 @@
if (H.blood_volume > (BLOOD_VOLUME_SAFE(H) - 25)) // just barely survivable without treatment
H.blood_volume -= 0.275
-/datum/quirk/blindness
- name = "Blind"
- desc = "You are completely blind, nothing can counteract this."
- value = -4
- gain_text = "You can't see anything."
- lose_text = "You miraculously gain back your vision."
- medical_record_text = "Patient has permanent blindness."
-
-/datum/quirk/blindness/add()
- quirk_holder.become_blind(ROUNDSTART_TRAIT)
-
-/datum/quirk/blindness/on_spawn()
- var/mob/living/carbon/human/H = quirk_holder
- var/obj/item/clothing/glasses/blindfold/white/B = new(get_turf(H))
- if(!H.equip_to_slot_if_possible(B, SLOT_GLASSES, bypass_equip_delay_self = TRUE)) //if you can't put it on the user's eyes, put it in their hands, otherwise put it on their eyes
- H.put_in_hands(B)
- H.regenerate_icons()
-
-/datum/quirk/brainproblems
- name = "Brain Tumor"
- desc = "You have a little friend in your brain that is slowly destroying it. Better bring some mannitol!"
- value = -3
- gain_text = "You feel smooth."
- lose_text = "You feel wrinkled again."
- medical_record_text = "Patient has a tumor in their brain that is slowly driving them to brain death."
- var/where = "at your feet"
-
-/datum/quirk/brainproblems/on_process()
- quirk_holder.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2)
-
-/datum/quirk/brainproblems/on_spawn()
- var/mob/living/carbon/human/H = quirk_holder
- var/mannitolpills = new /obj/item/storage/pill_bottle/mannitol/braintumor(get_turf(quirk_holder))
- var/list/slots = list(
- "in your left pocket" = SLOT_L_STORE,
- "in your right pocket" = SLOT_R_STORE,
- "in your backpack" = SLOT_IN_BACKPACK
- )
- where = H.equip_in_one_of_slots(mannitolpills, slots, FALSE) || "at your feet"
-
-/datum/quirk/brainproblems/post_add()
- to_chat(quirk_holder, "There is a pill bottle of mannitol [where]. You're going to need it.")
-
-/datum/quirk/deafness
- name = "Deaf"
- desc = "You are incurably deaf."
- value = -2
- mob_trait = TRAIT_DEAF
- gain_text = "You can't hear anything."
- lose_text = "You're able to hear again!"
- medical_record_text = "Patient's cochlear nerve is incurably damaged."
-
/datum/quirk/depression
name = "Depression"
desc = "You sometimes just hate life."
@@ -294,51 +225,6 @@
else
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "nyctophobia")
-/datum/quirk/nonviolent
- name = "Pacifist"
- desc = "The thought of violence makes you sick. So much so, in fact, that you can't hurt anyone."
- value = -2
- mob_trait = TRAIT_PACIFISM
- gain_text = "You feel repulsed by the thought of violence!"
- lose_text = "You think you can defend yourself again."
- medical_record_text = "Patient is unusually pacifistic and cannot bring themselves to cause physical harm."
-
-
-/datum/quirk/paraplegic
- name = "Paraplegic"
- desc = "Your legs do not function. Nothing will ever fix this. But hey, free wheelchair!"
- value = -3
- human_only = TRUE
- gain_text = null // Handled by trauma.
- lose_text = null
- medical_record_text = "Patient has an untreatable impairment in motor function in the lower extremities."
-
-/datum/quirk/paraplegic/add()
- var/datum/brain_trauma/severe/paralysis/paraplegic/T = new()
- var/mob/living/carbon/human/H = quirk_holder
- H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)
-
-/datum/quirk/paraplegic/on_spawn()
- if(quirk_holder.buckled) // Handle late joins being buckled to arrival shuttle chairs.
- quirk_holder.buckled.unbuckle_mob(quirk_holder)
-
- var/turf/T = get_turf(quirk_holder)
- var/obj/structure/chair/spawn_chair = locate() in T
-
- var/obj/vehicle/ridden/wheelchair/wheels = new(T)
- if(spawn_chair) // Makes spawning on the arrivals shuttle more consistent looking
- wheels.setDir(spawn_chair.dir)
-
- wheels.buckle_mob(quirk_holder)
-
- // During the spawning process, they may have dropped what they were holding, due to the paralysis
- // So put the things back in their hands.
-
- for(var/obj/item/I in T)
- if(I.fingerprintslast == quirk_holder.ckey)
- quirk_holder.put_in_hands(I)
-
-
/datum/quirk/poor_aim
name = "Poor Aim"
desc = "You're terrible with guns and can't line up a straight shot to save your life. Dual-wielding is right out."
@@ -435,73 +321,40 @@
to_chat(quirk_holder, "Please note that your dissociation syndrome does NOT give you the right to attack people or otherwise cause any interference to \
the round. You are not an antagonist, and the rules will treat you the same as other crewmembers.")
-/datum/quirk/social_anxiety
- name = "Social Anxiety"
- desc = "Talking to people is very difficult for you, and you often stutter or even lock up."
+/datum/quirk/smoker
+ name = "Smoker"
+ desc = "Sometimes you just really want a smoke. Probably not great for your lungs."
value = -1
- gain_text = "You start worrying about what you're saying."
- lose_text = "You feel easier about talking again." //if only it were that easy!
- medical_record_text = "Patient is usually anxious in social encounters and prefers to avoid them."
- var/dumb_thing = TRUE
-
-/datum/quirk/social_anxiety/on_process()
- var/nearby_people = 0
- for(var/mob/living/carbon/human/H in oview(3, quirk_holder))
- if(H.client)
- nearby_people++
- var/mob/living/carbon/human/H = quirk_holder
- if(prob(2 + nearby_people))
- H.stuttering = max(3, H.stuttering)
- else if(prob(min(3, nearby_people)) && !H.silent)
- to_chat(H, "You retreat into yourself. You really don't feel up to talking.")
- H.silent = max(10, H.silent)
- else if(prob(0.5) && dumb_thing)
- to_chat(H, "You think of a dumb thing you said a long time ago and scream internally.")
- dumb_thing = FALSE //only once per life
- if(prob(1))
- new/obj/item/reagent_containers/food/snacks/spaghetti/pastatomato(get_turf(H)) //now that's what I call spaghetti code
-
-//If you want to make some kind of junkie variant, just extend this quirk.
-/datum/quirk/junkie
- name = "Junkie"
- desc = "You can't get enough of hard drugs."
- value = -2
- gain_text = "You suddenly feel the craving for drugs."
- lose_text = "You feel like you should kick your drug habit."
- medical_record_text = "Patient has a history of hard drugs."
- var/drug_list = list(/datum/reagent/drug/crank, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine, /datum/reagent/drug/ketamine) //List of possible IDs
- var/reagent_id //ID picked from list
- var/datum/reagent/reagent_type //If this is defined, reagent_id will be unused and the defined reagent type will be instead.
+ mood_quirk = TRUE
+ gain_text = "You could really go for a smoke right about now."
+ lose_text = "You feel like you should quit smoking."
+ medical_record_text = "Patient is a current smoker."
+ var/datum/reagent/reagent_type = /datum/reagent/drug/nicotine //If this is defined, reagent_id will be unused and the defined reagent type will be instead.
var/datum/reagent/reagent_instance
var/where_drug
- var/obj/item/drug_container_type //If this is defined before pill generation, pill generation will be skipped. This is the type of the pill bottle.
+ var/drug_container_type = /obj/item/storage/box/fancy/cigarettes //If this is defined before pill generation, pill generation will be skipped. This is the type of the pill bottle.
var/obj/item/drug_instance
var/where_accessory
- var/obj/item/accessory_type //If this is null, it won't be spawned.
+ var/accessory_type = /obj/item/lighter/greyscale
var/obj/item/accessory_instance
var/tick_counter = 0
-/datum/quirk/junkie/on_spawn()
+/datum/quirk/smoker/on_spawn()
+ drug_container_type = pick(/obj/item/storage/box/fancy/cigarettes,
+ /obj/item/storage/box/fancy/cigarettes/cigpack_midori,
+ /obj/item/storage/box/fancy/cigarettes/cigpack_uplift,
+ /obj/item/storage/box/fancy/cigarettes/cigpack_robust,
+ /obj/item/storage/box/fancy/cigarettes/cigpack_robustgold,
+ /obj/item/storage/box/fancy/cigarettes/cigpack_carp,
+ /obj/item/storage/box/fancy/cigarettes/cigars,
+ /obj/item/storage/box/fancy/cigarettes/cigars/havana)
var/mob/living/carbon/human/H = quirk_holder
- reagent_id = pick(drug_list)
- if (!reagent_type)
- var/datum/reagent/prot_holder = GLOB.chemical_reagents_list[reagent_id]
- reagent_type = prot_holder.type
reagent_instance = new reagent_type()
H.reagents.addiction_list.Add(reagent_instance)
var/current_turf = get_turf(quirk_holder)
- if (!drug_container_type)
- drug_container_type = /obj/item/storage/pill_bottle
drug_instance = new drug_container_type(current_turf)
- if (istype(drug_instance, /obj/item/storage/pill_bottle))
- var/pill_state = "pill[rand(1,20)]"
- for(var/i in 1 to 7)
- var/obj/item/reagent_containers/pill/P = new(drug_instance)
- P.icon_state = pill_state
- P.reagents.add_reagent(reagent_id, 1)
-
- if (accessory_type)
- accessory_instance = new accessory_type(current_turf)
+
+ accessory_instance = new accessory_type(current_turf)
var/list/slots = list(
"in your left pocket" = SLOT_L_STORE,
"in your right pocket" = SLOT_R_STORE,
@@ -512,15 +365,12 @@
where_accessory = H.equip_in_one_of_slots(accessory_instance, slots, FALSE) || "at your feet"
announce_drugs()
-/datum/quirk/junkie/post_add()
+/datum/quirk/smoker/post_add()
if(where_drug == "in your backpack" || where_accessory == "in your backpack")
var/mob/living/carbon/human/H = quirk_holder
SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H)
-/datum/quirk/junkie/proc/announce_drugs()
- to_chat(quirk_holder, "There is a [drug_instance.name] of [reagent_instance.name] [where_drug]. Better hope you don't run out...")
-
-/datum/quirk/junkie/on_process()
+/datum/quirk/smoker/on_process()
var/mob/living/carbon/human/H = quirk_holder
if (tick_counter == 60) //Halfassed optimization, increase this if there's slowdown due to this quirk
var/in_list = FALSE
@@ -535,47 +385,6 @@
tick_counter = 0
else
++tick_counter
-
-/datum/quirk/junkie/clone_data()
- return reagent_id
-
-/datum/quirk/junkie/on_clone(data)
- var/mob/living/carbon/human/H = quirk_holder
- reagent_id = data
- var/datum/reagent/prot_holder = GLOB.chemical_reagents_list[reagent_id]
- reagent_type = prot_holder.type
- reagent_instance = new reagent_type()
- H.reagents.addiction_list.Add(reagent_instance)
-
-/datum/quirk/junkie/smoker
- name = "Smoker"
- desc = "Sometimes you just really want a smoke. Probably not great for your lungs."
- value = -1
- mood_quirk = TRUE
- gain_text = "You could really go for a smoke right about now."
- lose_text = "You feel like you should quit smoking."
- medical_record_text = "Patient is a current smoker."
- reagent_type = /datum/reagent/drug/nicotine
- accessory_type = /obj/item/lighter/greyscale
-
-/datum/quirk/junkie/smoker/on_spawn()
- drug_container_type = pick(/obj/item/storage/box/fancy/cigarettes,
- /obj/item/storage/box/fancy/cigarettes/cigpack_midori,
- /obj/item/storage/box/fancy/cigarettes/cigpack_uplift,
- /obj/item/storage/box/fancy/cigarettes/cigpack_robust,
- /obj/item/storage/box/fancy/cigarettes/cigpack_robustgold,
- /obj/item/storage/box/fancy/cigarettes/cigpack_carp,
- /obj/item/storage/box/fancy/cigarettes/cigars,
- /obj/item/storage/box/fancy/cigarettes/cigars/havana)
- . = ..()
-
-/datum/quirk/junkie/smoker/announce_drugs()
- to_chat(quirk_holder, "There is a [drug_instance.name] [where_drug], and a lighter [where_accessory]. Make sure you get your favorite brand when you run out.")
-
-
-/datum/quirk/junkie/smoker/on_process()
- . = ..()
- var/mob/living/carbon/human/H = quirk_holder
var/obj/item/I = H.get_item_by_slot(SLOT_WEAR_MASK)
if (istype(I, /obj/item/clothing/mask/cigarette))
var/obj/item/storage/box/fancy/cigarettes/C = drug_instance
@@ -584,32 +393,13 @@
return
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "wrong_cigs", /datum/mood_event/wrong_brand)
-/datum/quirk/unstable
- name = "Unstable"
- desc = "Due to past troubles, you are unable to recover your sanity if you lose it. Be very careful managing your mood!"
- value = -2
- mood_quirk = TRUE
- mob_trait = TRAIT_UNSTABLE
- gain_text = "There's a lot on your mind right now."
- lose_text = "Your mind finally feels calm."
- medical_record_text = "Patient's mind is in a vulnerable state, and cannot recover from traumatic events."
-
-/datum/quirk/sheltered
- name = "Sheltered"
- desc = "You never learned galactic common."
- value = -3
- mob_trait = TRAIT_SHELTERED
- gain_text = "You do not understand galactic common."
- lose_text = "You start to put together what people are saying in galactic common."
- medical_record_text = "Patient looks perplexed when questioned in galactic common."
-
-
-/datum/quirk/sheltered/on_spawn()
+/datum/quirk/smoker/on_clone(data)
var/mob/living/carbon/human/H = quirk_holder
- H.remove_language(/datum/language/common, FALSE, TRUE)
- if(!H.get_selected_language())
- H.grant_language(/datum/language/japanese)
+ reagent_instance = new reagent_type()
+ H.reagents.addiction_list.Add(reagent_instance)
+/datum/quirk/smoker/proc/announce_drugs()
+ to_chat(quirk_holder, "There is a [drug_instance.name] [where_drug], and a lighter [where_accessory]. Make sure you get your favorite brand when you run out.")
/datum/quirk/allergic
name = "Allergic Reaction"
desc = "You have had an allergic reaction to medicine in the past. Better stay away from it!"
@@ -646,40 +436,3 @@
H.reagents.add_reagent(/datum/reagent/toxin/histamine, rand(5,10))
cooldown = TRUE
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), cooldown_time)
-
-/datum/quirk/kleptomaniac
- name = "Kleptomaniac"
- desc = "You have an uncontrollable urge to pick up things you see. Even things that don't belong to you."
- value = -1
- mob_trait = TRAIT_KLEPTOMANIAC
- gain_text = "You have an unmistakeable urge to grab nearby objects."
- lose_text = "You no feel the urge to steal."
- medical_record_text = "Patient has an uncontrollable urge to steal."
-
-/datum/quirk/kleptomaniac/on_process()
- if(prob(3))
- var/mob/living/carbon/H = quirk_holder
- var/obj/item/I = locate(/obj/item/) in oview(1, H)
- if(!I || I.anchored || H.incapacitated() || !I.Adjacent(H))
- return
- if(isliving(quirk_holder))
- var/mob/living/L = quirk_holder
- if(!(L.mobility_flags & MOBILITY_PICKUP))
- return
- if(!H.get_active_held_item())
- to_chat(quirk_holder, "You can't keep your eyes off [I.name].")
- H.UnarmedAttack(I)
-
-/datum/quirk/ineloquent
- name = "Ineloquent"
- desc = "Thinking big words makes brain go hurt."
- value = -1
- human_only = TRUE
- gain_text = "You feel your vocabularly slipping away."
- lose_text = "You regrasp the full extent of your linguistic prowess."
- medical_record_text = "Patient is affected by partial loss of speech leading to a reduced vocabulary."
-
-/datum/quirk/ineloquent/add()
- var/datum/brain_trauma/mild/expressive_aphasia/T = new()
- var/mob/living/carbon/human/H = quirk_holder
- H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)
diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm
index a7d0b595d985..1735f64f3c68 100644
--- a/code/modules/antagonists/highlander/highlander.dm
+++ b/code/modules/antagonists/highlander/highlander.dm
@@ -54,12 +54,6 @@
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(H), SLOT_HEAD)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), SLOT_SHOES)
H.equip_to_slot_or_del(new /obj/item/pinpointer/nuke(H), SLOT_L_STORE)
- //Yogs Start: Pacifists want to play too
- for(var/V in H.roundstart_quirks)
- var/datum/quirk/T = V
- if(istype(T, /datum/quirk/nonviolent))
- qdel(T)
- //Yogs End
for(var/obj/item/pinpointer/nuke/P in H)
P.attack_self(H)
var/obj/item/card/id/W = new(H)
diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm
index d7ae76c79ccf..02df66763e50 100644
--- a/code/modules/vehicles/wheelchair.dm
+++ b/code/modules/vehicles/wheelchair.dm
@@ -46,11 +46,7 @@
//1.5 (movespeed as of this change) multiplied by 4 gets 6, which gives you a delay of 3 assuming the user has two arms,
//getting the speed of the wheelchair roughly equal to the speed of a scooter based on testing.
//if that made no sense this simply makes the wheelchair speed change along with movement speed delay
- //paraplegic quirk users get a halved movedelay to model their life of wheelchair useage - yogs
- if(user.has_quirk(/datum/quirk/paraplegic))
- movedelay = 2
- else
- movedelay = 4
+ movedelay = 4
D.vehicle_move_delay = round(CONFIG_GET(number/movedelay/run_delay) * movedelay) / min(user.get_num_arms(), 2)
return ..()