From aa852a1c0656d7c962bf32fe3bec8360b91c4126 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Tue, 26 Aug 2025 02:38:53 +0200 Subject: [PATCH 01/16] aggrometabolism --- code/__DEFINES/traits/traits.dm | 1 + .../subsystem/processing/quirks.dm | 2 +- code/datums/traits/neutral/aggrometabolism.dm | 4 ++ .../mob/living/carbon/human/species.dm | 52 +++++++++++-------- shiptest.dme | 1 + 5 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 code/datums/traits/neutral/aggrometabolism.dm diff --git a/code/__DEFINES/traits/traits.dm b/code/__DEFINES/traits/traits.dm index c4f3729bb5dd..f27b6e9b40c0 100644 --- a/code/__DEFINES/traits/traits.dm +++ b/code/__DEFINES/traits/traits.dm @@ -358,6 +358,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_PINPOINT_EYES "pinpoint_eyes" #define TRAIT_CHEMICAL_NIGHTVISION "chemical_nightvision" #define TRAIT_GOOD_CHEMICAL_NIGHTVISION "good_chemical_nightvision" +#define TRAIT_AGGROMETABOLISM "aggrometabolism" ///Trait for dryable items #define TRAIT_DRYABLE "trait_dryable" diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 707e850af005..a67f4488d2e7 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -32,7 +32,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("(Language) Moth Pidgin", "(Language) Solarian International", "(Language) Teceti Unified Standard", "(Language) Kalixcian Common"), \ ) - species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) + species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), "Aggressive metabolism" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) for(var/client/client in GLOB.clients) client?.prefs.check_quirk_compatibility() diff --git a/code/datums/traits/neutral/aggrometabolism.dm b/code/datums/traits/neutral/aggrometabolism.dm new file mode 100644 index 000000000000..144704d0559c --- /dev/null +++ b/code/datums/traits/neutral/aggrometabolism.dm @@ -0,0 +1,4 @@ +/datum/quirk/aggrometabolism + name = "Aggressive metabolism" + desc = "Your body has an extremely fast metabolism, for better or worse, leading to natural healing if you are well fed, but if you are starving, your body will start eating itself up" + mob_traits = list(TRAIT_AGGROMETABOLISM) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index c91d6b185474..271e7c736c30 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1358,28 +1358,38 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(HAS_TRAIT(src, TRAIT_NOHUNGER)) return //hunger is for BABIES - // nutrition decrease and satiety - if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER)) - // THEY HUNGER - var/hunger_rate = HUNGER_FACTOR - var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) - if(mood && mood.sanity > SANITY_DISTURBED) - hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75 - // Whether we cap off our satiety or move it towards 0 - if(H.satiety > MAX_SATIETY) - H.satiety = MAX_SATIETY - else if(H.satiety > 0) - H.satiety-- - else if(H.satiety < -MAX_SATIETY) - H.satiety = -MAX_SATIETY - else if(H.satiety < 0) - H.satiety++ - if(prob(round(-H.satiety/40))) - H.adjust_timed_status_effect(5 SECONDS, /datum/status_effect/jitter) - hunger_rate = 3 * HUNGER_FACTOR - hunger_rate *= H.physiology.hunger_mod - H.adjust_nutrition(-hunger_rate) + // nutrition decrease and satiety + if (H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER)) + if(H.nutrition > 0) + // THEY HUNGER + var/hunger_rate = HUNGER_FACTOR + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) + if(mood && mood.sanity > SANITY_DISTURBED) + hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75 + // Whether we cap off our satiety or move it towards 0 + if(H.satiety > MAX_SATIETY) + H.satiety = MAX_SATIETY + else if(H.satiety > 0) + H.satiety-- + else if(H.satiety < -MAX_SATIETY) + H.satiety = -MAX_SATIETY + else if(H.satiety < 0) + H.satiety++ + if(prob(round(-H.satiety/40))) + H.adjust_timed_status_effect(5 SECONDS, /datum/status_effect/jitter) + hunger_rate = 3 * HUNGER_FACTOR + hunger_rate *= H.physiology.hunger_mod + H.adjust_nutrition(-hunger_rate) + if(HAS_TRAIT(H,TRAIT_AGGROMETABOLISM)) + var/healing = H.nutrition / 1000 + H.adjust_nutrition(-(healing * 10)) + H.adjustToxLoss(-healing, 0) + H.adjustBruteLoss(-healing, 0) + H.adjustFireLoss(-healing, 0) + if(H.nutrition < NUTRITION_LEVEL_STARVING) + H.adjustBruteLoss(1, 0) + H.adjustFireLoss(1, 0) if (H.nutrition > NUTRITION_LEVEL_FULL) if(H.overeatduration < 600) //capped so people don't take forever to unfat diff --git a/shiptest.dme b/shiptest.dme index 3d62c938ab02..8be1f0a4a71c 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -3729,4 +3729,5 @@ #include "interface\menu.dm" #include "interface\stylesheet.dm" #include "interface\skin.dmf" +#include "code\datums\traits\neutral\aggrometabolism.dm" // END_INCLUDE From 6c0c2fdd26ed3dd0c0312481ef1aa4b6c1c5c0d4 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Tue, 26 Aug 2025 03:01:33 +0200 Subject: [PATCH 02/16] DME cringe --- shiptest.dme | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/shiptest.dme b/shiptest.dme index 8be1f0a4a71c..b26e8c77d979 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -182,8 +182,8 @@ #include "code\__DEFINES\dcs\signals\signals_reagent.dm" #include "code\__DEFINES\dcs\signals\signals_storage.dm" #include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_attack.dm" -#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_basic.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_ai.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_basic.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_carbon.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_living.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_main.dm" @@ -358,7 +358,6 @@ #include "code\controllers\subsystem\assets.dm" #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\augury.dm" -//#include "code\controllers\subsystem\autotransfer.dm" #include "code\controllers\subsystem\blackbox.dm" #include "code\controllers\subsystem\blackmarket.dm" #include "code\controllers\subsystem\callback.dm" @@ -922,6 +921,7 @@ #include "code\datums\traits\negative\prosopagnosia.dm" #include "code\datums\traits\negative\pushover.dm" #include "code\datums\traits\neutral\ageusia.dm" +#include "code\datums\traits\neutral\aggrometabolism.dm" #include "code\datums\traits\neutral\bald.dm" #include "code\datums\traits\neutral\deviant_tastes.dm" #include "code\datums\traits\neutral\gunslinger.dm" @@ -2127,8 +2127,8 @@ #include "code\modules\cargo\exports\materials.dm" #include "code\modules\cargo\exports\mining.dm" #include "code\modules\cargo\exports\misc.dm" -#include "code\modules\cargo\exports\scraping.dm" #include "code\modules\cargo\exports\organs.dm" +#include "code\modules\cargo\exports\scraping.dm" #include "code\modules\cargo\market\market.dm" #include "code\modules\cargo\packs\ammo.dm" #include "code\modules\cargo\packs\animal.dm" @@ -3729,5 +3729,4 @@ #include "interface\menu.dm" #include "interface\stylesheet.dm" #include "interface\skin.dmf" -#include "code\datums\traits\neutral\aggrometabolism.dm" // END_INCLUDE From 8892cd08b1bf14b821c772784e056f0d449060cf Mon Sep 17 00:00:00 2001 From: LDip999 Date: Tue, 26 Aug 2025 09:59:35 +0200 Subject: [PATCH 03/16] bugfix and adjustments --- code/modules/mob/living/carbon/human/species.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 271e7c736c30..aed4876365bc 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1387,9 +1387,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.adjustToxLoss(-healing, 0) H.adjustBruteLoss(-healing, 0) H.adjustFireLoss(-healing, 0) - if(H.nutrition < NUTRITION_LEVEL_STARVING) - H.adjustBruteLoss(1, 0) - H.adjustFireLoss(1, 0) + if(H.nutrition < NUTRITION_LEVEL_STARVING && HAS_TRAIT(H,TRAIT_AGGROMETABOLISM)) + H.adjustBruteLoss(0.5, 0) + H.adjustFireLoss(0.5, 0) if (H.nutrition > NUTRITION_LEVEL_FULL) if(H.overeatduration < 600) //capped so people don't take forever to unfat From 62646a5abc986a3a147634ebfa71243f79a64853 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Tue, 26 Aug 2025 20:54:21 +0200 Subject: [PATCH 04/16] flimsy iron fist and tough --- .../subsystem/processing/quirks.dm | 1 + code/datums/traits/negative/flimsy.dm | 35 +++++++++++++++++++ code/datums/traits/positive/iron_fist.dm | 35 +++++++++++++++++++ code/datums/traits/positive/tough.dm | 35 +++++++++++++++++++ shiptest.dme | 3 ++ 5 files changed, 109 insertions(+) create mode 100644 code/datums/traits/negative/flimsy.dm create mode 100644 code/datums/traits/positive/iron_fist.dm create mode 100644 code/datums/traits/positive/tough.dm diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index a67f4488d2e7..518ed032237a 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -30,6 +30,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Bad Touch", "Friendly"), \ list("Self-Aware", "Congenital Analgesia"), \ list("(Language) Moth Pidgin", "(Language) Solarian International", "(Language) Teceti Unified Standard", "(Language) Kalixcian Common"), \ + list("Health - Tough", "Health - Very Tough", "Health - Flimsy", "Health - Very Flimsy") ) species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), "Aggressive metabolism" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) diff --git a/code/datums/traits/negative/flimsy.dm b/code/datums/traits/negative/flimsy.dm new file mode 100644 index 000000000000..592c36ea016f --- /dev/null +++ b/code/datums/traits/negative/flimsy.dm @@ -0,0 +1,35 @@ +/datum/quirk/flimsy + name = "Health - Flimsy" + desc = "You have -10 health. What this actually means is that you need to take ten less points of damage before you go into crit. " + value = -2 + gain_text = span_notice("You feel less durable.") + lose_text = span_danger("You feel less flimsy once more.") + medical_record_text = "Patient has lower capacity for injury." + +/datum/quirk/lifegiver/add() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth -= 10 + H.health -= 10 + +/datum/quirk/lifegiver/remove() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth += 10 + H.health += 10 + +/datum/quirk/flimsyplus + name = "Health - Very Flimsy" + desc = "You have -20 health. What this actually means is that you need to take twenty less points of damage before you go into crit. " + value = -5 + gain_text = span_notice("You feel very flimsy!.") + lose_text = span_danger("You don't feel as fragile as before.") + medical_record_text = "Patient has very low capacity for injury." + +/datum/quirk/lifegiverplus/add() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth -= 20 + H.health -= 20 + +/datum/quirk/lifegiverplus/remove() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth += 20 + H.health += 20 \ No newline at end of file diff --git a/code/datums/traits/positive/iron_fist.dm b/code/datums/traits/positive/iron_fist.dm new file mode 100644 index 000000000000..423ca09cd894 --- /dev/null +++ b/code/datums/traits/positive/iron_fist.dm @@ -0,0 +1,35 @@ +/datum/quirk/iron_fist + name = "Fists of Iron" + desc = "You have fists of kung-fury! Increases unarmed damage." + value = 2 + gain_text = span_notice("Your fists feel furious!") + lose_text = span_danger("Your fists feel calm again.") + medical_record_text = "Patient has claimed to have accidentally break pencils when holding them." + +/datum/quirk/iron_fist/add() + var/mob/living/carbon/human/H = quirk_holder + H.dna.species.punchdamagelow += 5 + H.dna.species.punchdamagehigh += 2 + +/datum/quirk/iron_fist/remove() + var/mob/living/carbon/human/H = quirk_holder + H.dna.species.punchdamagelow -= 5 + H.dna.species.punchdamagehigh -= 2 + +/datum/quirk/steel_fist + name = "Fists of Steel" + desc = "You have MASSIVE fists of kung-fury! Even MORE increases unarmed damage." + value = 2 + gain_text = span_notice("I trained in a barn") + lose_text = span_danger("I no longer remember my roots in Duranda") + medical_record_text = "Patient has accidentally destroyed the door handle to my office. A replacement is needed." + +/datum/quirk/steel_fist/add() + var/mob/living/carbon/human/H = quirk_holder + H.dna.species.punchdamagelow += 10 + H.dna.species.punchdamagehigh += 6 + +/datum/quirk/steel_fist/remove() + var/mob/living/carbon/human/H = quirk_holder + H.dna.species.punchdamagelow -= 10 + H.dna.species.punchdamagehigh -= 6 \ No newline at end of file diff --git a/code/datums/traits/positive/tough.dm b/code/datums/traits/positive/tough.dm new file mode 100644 index 000000000000..b0d6f731e9be --- /dev/null +++ b/code/datums/traits/positive/tough.dm @@ -0,0 +1,35 @@ +/datum/quirk/lifegiver + name = "Health - Tough" + desc = "You have +10 health. What this actually means is that you need to take ten more points of damage before you go into crit. " + value = 3 + gain_text = span_notice("You feel more durable.") + lose_text = span_danger("You feel flimsy once more.") + medical_record_text = "Patient has higher capacity for injury." + +/datum/quirk/lifegiver/add() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth += 10 + H.health += 10 + +/datum/quirk/lifegiver/remove() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth -= 10 + H.health -= 10 + +/datum/quirk/lifegiverplus + name = "Health - Very Though" + desc = "You have +20 health. What this actually means is that you need to take twenty more points of damage before you go into crit. " + value = 6 + gain_text = span_notice("You feel very durable.") + lose_text = span_danger("You feel flimsy once more.") + medical_record_text = "Patient has very high capacity for injury." + +/datum/quirk/lifegiverplus/add() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth += 20 + H.health += 20 + +/datum/quirk/lifegiverplus/remove() + var/mob/living/carbon/human/H = quirk_holder + H.maxHealth -= 20 + H.health -= 20 \ No newline at end of file diff --git a/shiptest.dme b/shiptest.dme index b26e8c77d979..59d50efa56bd 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -911,6 +911,7 @@ #include "code\datums\traits\negative\blindness.dm" #include "code\datums\traits\negative\congenital_analgesia.dm" #include "code\datums\traits\negative\deafness.dm" +#include "code\datums\traits\negative\flimsy.dm" #include "code\datums\traits\negative\frail.dm" #include "code\datums\traits\negative\heavy_sleeper.dm" #include "code\datums\traits\negative\light_drinker.dm" @@ -936,8 +937,10 @@ #include "code\datums\traits\positive\empath.dm" #include "code\datums\traits\positive\freerunning.dm" #include "code\datums\traits\positive\friendly.dm" +#include "code\datums\traits\positive\iron_fist.dm" #include "code\datums\traits\positive\light_step.dm" #include "code\datums\traits\positive\self_aware.dm" +#include "code\datums\traits\positive\tough.dm" #include "code\datums\votes\_vote_datum.dm" #include "code\datums\votes\custom_vote.dm" #include "code\datums\votes\restart_vote.dm" From 2c4bd404ed3c8234a6bee4c27b224a796df7de25 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Wed, 27 Aug 2025 07:23:34 +0200 Subject: [PATCH 05/16] Adds vetdoc and fieldmedic, fixes very tough spelling mistake, fixes both fists perk being able to be taken together --- code/__DEFINES/traits/traits.dm | 3 +++ code/controllers/subsystem/processing/quirks.dm | 3 ++- code/datums/traits/positive/tough.dm | 2 +- code/datums/traits/positive/veteran_doctor.dm | 15 +++++++++++++++ code/game/objects/items/stacks/medical.dm | 16 ++++++++++++++++ code/modules/mob/fieldtend.dm | 17 +++++++++++++++++ code/modules/mob/living/life.dm | 9 +++++++++ code/modules/mob/living/living.dm | 7 +++++++ code/modules/mob/living/living_defines.dm | 3 +++ code/modules/surgery/surgery.dm | 2 +- code/modules/surgery/surgery_step.dm | 2 ++ shiptest.dme | 2 ++ 12 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 code/datums/traits/positive/veteran_doctor.dm create mode 100644 code/modules/mob/fieldtend.dm diff --git a/code/__DEFINES/traits/traits.dm b/code/__DEFINES/traits/traits.dm index f27b6e9b40c0..ec968101eb36 100644 --- a/code/__DEFINES/traits/traits.dm +++ b/code/__DEFINES/traits/traits.dm @@ -521,5 +521,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Climbable trait, given and taken by the climbable element when added or removed. Exists to be easily checked via HAS_TRAIT(). #define TRAIT_CLIMBABLE "trait_climbable" +#define TRAIT_VETDOC "trait_vetdoc" +#define TRAIT_FIELDMEDIC "trait_fieldmedic" + /// Trait applied by element #define ELEMENT_TRAIT(source) "element_trait_[source]" diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 518ed032237a..8f06c251a7a2 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -30,7 +30,8 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Bad Touch", "Friendly"), \ list("Self-Aware", "Congenital Analgesia"), \ list("(Language) Moth Pidgin", "(Language) Solarian International", "(Language) Teceti Unified Standard", "(Language) Kalixcian Common"), \ - list("Health - Tough", "Health - Very Tough", "Health - Flimsy", "Health - Very Flimsy") + list("Health - Tough", "Health - Very Tough", "Health - Flimsy", "Health - Very Flimsy"),\ + list("Fists of Iron" , "Fists of Steel")\ ) species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), "Aggressive metabolism" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) diff --git a/code/datums/traits/positive/tough.dm b/code/datums/traits/positive/tough.dm index b0d6f731e9be..8ac2bfdb2f43 100644 --- a/code/datums/traits/positive/tough.dm +++ b/code/datums/traits/positive/tough.dm @@ -17,7 +17,7 @@ H.health -= 10 /datum/quirk/lifegiverplus - name = "Health - Very Though" + name = "Health - Very Tough" desc = "You have +20 health. What this actually means is that you need to take twenty more points of damage before you go into crit. " value = 6 gain_text = span_notice("You feel very durable.") diff --git a/code/datums/traits/positive/veteran_doctor.dm b/code/datums/traits/positive/veteran_doctor.dm new file mode 100644 index 000000000000..200108ba5b37 --- /dev/null +++ b/code/datums/traits/positive/veteran_doctor.dm @@ -0,0 +1,15 @@ +/datum/quirk/vetdoc + name = "Veteran Doctor" + desc = "After years upon years of practice, you mastered the art of healing, and are able to do certain advanced surgeries without the guidance of an OR computer and it's upgrades, and are able to scavange for medical supplies from scraps." + value = 5 + mob_traits = list(TRAIT_VETDOC) + gain_text = span_notice("Years upon years of medical practice is at your fingertips") + lose_text = span_danger("You forget your medical experience") + +/datum/quirk/fieldmedic + name = "Field Medic" + desc = "Due to having to work in less than optimal circumstances in your past, you have quickly mastered the ways in which you can use ordinary things into tools for surgery and tending wounds. Gain a bonus to ghetto surgeries, and are able to scavange for medical supplies from scraps." + value = 3 + mob_traits = list(TRAIT_FIELDMEDIC) + gain_text = span_notice("You really know how to poke wounds with a screwdriver.") + lose_text = span_danger("You lost your hankering to saw ribs with a hatchet") diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 9f6a7c1dfb4d..d1269aac964d 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -488,3 +488,19 @@ amount = 1 splint_type = /datum/bodypart_aid/splint/improvised_metal merge_type = /obj/item/stack/medical/splint/improvised_metal + +/obj/item/stack/medical/bruise_pack/fieldtend + name = "a bunch of scavanged medical supplies" + singular_name = "scavanged medical supplies" + desc = "A measure of haphazardly thrown together supplies to be used for medical purposes. Good for both burns and bruises." + icon_state = "brutepack" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + heal_brute = 5 + heal_burn = 5 + amount = 1 + max_amount = 5 + self_delay = 2 SECONDS + other_delay = 2 SECONDS + experience_given = 4 + merge_type = /obj/item/stack/medical/bruise_pack/fieldtend diff --git a/code/modules/mob/fieldtend.dm b/code/modules/mob/fieldtend.dm new file mode 100644 index 000000000000..4d28314fac33 --- /dev/null +++ b/code/modules/mob/fieldtend.dm @@ -0,0 +1,17 @@ +/mob/verb/fieldtend() + set name = "Field Tending Supplies" + set category = "IC" + set desc = "Retrive your scavanged field tending supplies" + if(HAS_TRAIT(src,TRAIT_VETDOC)) + if(isliving(src) && stat == CONSCIOUS) + var/mob/living/curruser = src + var/charges = floor(curruser.heal_reservoir) + if(charges > 0) + var/obj/item/stack/medical/bruise_pack/fieldtend/tendies = new(curruser) // Yum 🤤🤤🤤 + curruser.put_in_hands(tendies) + curruser.heal_reservoir -= 1 + to_chat(src, span_notice("You haphazardly fashion some odds and ends into a handful of makeshift field tend supplies.")) + else + to_chat(src, span_warning("You have no scavanged medical supplies at the moment, wait a bit!")) + else + to_chat(src, "You aren't capable of field tending!") diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 0f60df245ddd..033df76bab59 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -64,6 +64,8 @@ if(machine) machine.check_eye(src) + handle_healreservoir() + if(stat != DEAD) return 1 @@ -152,4 +154,11 @@ var/grav_stregth = gravity - GRAVITY_DAMAGE_TRESHOLD adjustBruteLoss(min(grav_stregth,3)) +/mob/living/proc/handle_healreservoir() + if(HAS_TRAIT(src,TRAIT_VETDOC)) + if(heal_reservoir < 5) + heal_reservoir += 0.01 + if(HAS_TRAIT(src,TRAIT_FIELDMEDIC)) + if(heal_reservoir < 20) + heal_reservoir += 0.05 #undef BODYTEMP_DIVISOR diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index bf99a357104e..6e9e47d5332d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -2007,3 +2007,10 @@ GLOBAL_VAR_INIT(ssd_indicator_overlay, mutable_appearance('icons/mob/ssd_indicat */ /mob/living/proc/get_reagent_amount(reagent) return reagents.get_reagent_amount(reagent) + + +/mob/living/get_status_tab_items() + . = ..() + if(HAS_TRAIT(src, TRAIT_VETDOC) || HAS_TRAIT(src, TRAIT_FIELDMEDIC)) + . += "" + . += "Healing Charges: [FLOOR(heal_reservoir, 1)]" diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c67a58f00481..3dd362270d10 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -193,5 +193,8 @@ /// Lazy list of FOV traits that will apply a FOV view when handled. var/list/fov_traits + //reservoir for healing quirks + var/heal_reservoir = 0 + /// World time of the last time this mob heard a radio crackle, to reduce spamminess. COOLDOWN_DECLARE(radio_crackle_cooldown) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 86e97b98c4f3..5ea6d6bbfb6e 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -50,7 +50,7 @@ return FALSE // True surgeons (like abductor scientists) need no instructions - if(HAS_TRAIT(user, TRAIT_SURGEON) || HAS_TRAIT(user.mind, TRAIT_SURGEON)) + if(HAS_TRAIT(user, TRAIT_SURGEON) || HAS_TRAIT(user.mind, TRAIT_SURGEON) || HAS_TRAIT(user, TRAIT_VETDOC) || HAS_TRAIT(user.mind, TRAIT_VETDOC)) if(replaced_by) // only show top-level surgeries return FALSE else diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index b632fef0a7e5..f4313dc55e21 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -255,6 +255,8 @@ ouchie_mod *= clamp(1-target.get_drunk_amount()/SURGERY_DRUNK_MOD, 0, 1) // Drunkenness up to 40% (points? idk) will improve chances of avoiding horrible pain and suffering if(target.stat == UNCONSCIOUS) // Being "normally" asleep will SLIGHTLY improve your chances since it's intuitive behavior barring access to anything else ouchie_mod *= target.getOxyLoss() >= 50 ? 0.6 : 0.8 // Being choked out will slightly improve chances on top of that. Emergent gameplay! (people already do this) + if(HAS_TRAIT(user, TRAIT_FIELDMEDIC)) + ouchie_mod -= 0.5 var/final_ouchie_chance = SURGERY_FUCKUP_CHANCE * ouchie_mod if(!prob(final_ouchie_chance)) return diff --git a/shiptest.dme b/shiptest.dme index 59d50efa56bd..faf724bedd44 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -941,6 +941,7 @@ #include "code\datums\traits\positive\light_step.dm" #include "code\datums\traits\positive\self_aware.dm" #include "code\datums\traits\positive\tough.dm" +#include "code\datums\traits\positive\veteran_doctor.dm" #include "code\datums\votes\_vote_datum.dm" #include "code\datums\votes\custom_vote.dm" #include "code\datums\votes\restart_vote.dm" @@ -2643,6 +2644,7 @@ #include "code\modules\missions\outpost\research_mission.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" +#include "code\modules\mob\fieldtend.dm" #include "code\modules\mob\inventory.dm" #include "code\modules\mob\login.dm" #include "code\modules\mob\logout.dm" From b926e0ffb728c32064a7cda8b6254fe5d311ecfd Mon Sep 17 00:00:00 2001 From: LDip999 Date: Wed, 27 Aug 2025 07:34:48 +0200 Subject: [PATCH 06/16] slight nerf --- code/modules/mob/living/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 033df76bab59..75bb40a3e41b 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -160,5 +160,5 @@ heal_reservoir += 0.01 if(HAS_TRAIT(src,TRAIT_FIELDMEDIC)) if(heal_reservoir < 20) - heal_reservoir += 0.05 + heal_reservoir += 0.04 #undef BODYTEMP_DIVISOR From 9223c2d0d3f4d3d795ebf8c33cff323ab1122f16 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Wed, 27 Aug 2025 08:46:20 +0200 Subject: [PATCH 07/16] Armor aversion --- code/__DEFINES/traits/traits.dm | 1 + code/datums/traits/negative/unarmored.dm | 13 +++++++++++++ code/datums/traits/positive/veteran_doctor.dm | 6 +++--- code/modules/clothing/suits/armor_aversion.dm | 11 +++++++++++ shiptest.dme | 2 ++ 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 code/datums/traits/negative/unarmored.dm create mode 100644 code/modules/clothing/suits/armor_aversion.dm diff --git a/code/__DEFINES/traits/traits.dm b/code/__DEFINES/traits/traits.dm index ec968101eb36..0d9c9c8fff09 100644 --- a/code/__DEFINES/traits/traits.dm +++ b/code/__DEFINES/traits/traits.dm @@ -524,5 +524,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_VETDOC "trait_vetdoc" #define TRAIT_FIELDMEDIC "trait_fieldmedic" +#define TRAIT_ARMOR_AVERSION "trait_armor_aversion" /// Trait applied by element #define ELEMENT_TRAIT(source) "element_trait_[source]" diff --git a/code/datums/traits/negative/unarmored.dm b/code/datums/traits/negative/unarmored.dm new file mode 100644 index 000000000000..480c36b49501 --- /dev/null +++ b/code/datums/traits/negative/unarmored.dm @@ -0,0 +1,13 @@ +/datum/quirk/armor_aversion + name = "Armor Aversion" + desc = "Whenever due to bravery, personal preference, or simple a hatred towards being encumbered in a big metal coffin, you are refuse to wear armor that is better than tier 2 melee, bullet, laser, or energy." + value = -3 + mob_traits = list(TRAIT_ARMOR_AVERSION) + gain_text = span_notice("You can't bring yourself to put on armor.") + lose_text = span_danger("Maybe not being so exposed isn't so bad...") + +/datum/quirk/armor_aversion/add() + var/mob/living/carbon/human/H = quirk_holder + var/obj/item/clothing/currsuit = H.wear_suit + if(!H.can_equip(currsuit,ITEM_SLOT_OCLOTHING,TRUE)) + H.dropItemToGround(currsuit,TRUE,TRUE,FALSE) diff --git a/code/datums/traits/positive/veteran_doctor.dm b/code/datums/traits/positive/veteran_doctor.dm index 200108ba5b37..1483d9c4a8ab 100644 --- a/code/datums/traits/positive/veteran_doctor.dm +++ b/code/datums/traits/positive/veteran_doctor.dm @@ -3,8 +3,8 @@ desc = "After years upon years of practice, you mastered the art of healing, and are able to do certain advanced surgeries without the guidance of an OR computer and it's upgrades, and are able to scavange for medical supplies from scraps." value = 5 mob_traits = list(TRAIT_VETDOC) - gain_text = span_notice("Years upon years of medical practice is at your fingertips") - lose_text = span_danger("You forget your medical experience") + gain_text = span_notice("Years upon years of medical practice is at your fingertips.") + lose_text = span_danger("You forget your medical experience.") /datum/quirk/fieldmedic name = "Field Medic" @@ -12,4 +12,4 @@ value = 3 mob_traits = list(TRAIT_FIELDMEDIC) gain_text = span_notice("You really know how to poke wounds with a screwdriver.") - lose_text = span_danger("You lost your hankering to saw ribs with a hatchet") + lose_text = span_danger("You lost your hankering to saw ribs with a hatchet.") diff --git a/code/modules/clothing/suits/armor_aversion.dm b/code/modules/clothing/suits/armor_aversion.dm new file mode 100644 index 000000000000..61e9ad02a792 --- /dev/null +++ b/code/modules/clothing/suits/armor_aversion.dm @@ -0,0 +1,11 @@ +/obj/item/clothing/suit/mob_can_equip(mob/living/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning) + . = ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(HAS_TRAIT(H, TRAIT_ARMOR_AVERSION)) + if( armor.melee > 20 || \ + armor.bullet > 20 || \ + armor.laser > 20 || \ + armor.energy > 20) + to_chat(M, span_danger("You can't wear this armour!")) + return FALSE diff --git a/shiptest.dme b/shiptest.dme index faf724bedd44..1ed660de9419 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -921,6 +921,7 @@ #include "code\datums\traits\negative\phobia.dm" #include "code\datums\traits\negative\prosopagnosia.dm" #include "code\datums\traits\negative\pushover.dm" +#include "code\datums\traits\negative\unarmored.dm" #include "code\datums\traits\neutral\ageusia.dm" #include "code\datums\traits\neutral\aggrometabolism.dm" #include "code\datums\traits\neutral\bald.dm" @@ -2260,6 +2261,7 @@ #include "code\modules\clothing\spacesuits\syndi.dm" #include "code\modules\clothing\suits\_suits.dm" #include "code\modules\clothing\suits\armor.dm" +#include "code\modules\clothing\suits\armor_aversion.dm" #include "code\modules\clothing\suits\bio.dm" #include "code\modules\clothing\suits\chaplainsuits.dm" #include "code\modules\clothing\suits\cloaks.dm" From 55c7d4bf18bcb22751ea124202b9237486ea9176 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Wed, 27 Aug 2025 15:18:24 +0200 Subject: [PATCH 08/16] chunky fingers --- code/datums/traits/negative/chunkyfingers.dm | 7 +++++++ shiptest.dme | 1 + 2 files changed, 8 insertions(+) create mode 100644 code/datums/traits/negative/chunkyfingers.dm diff --git a/code/datums/traits/negative/chunkyfingers.dm b/code/datums/traits/negative/chunkyfingers.dm new file mode 100644 index 000000000000..c50c5eb3409e --- /dev/null +++ b/code/datums/traits/negative/chunkyfingers.dm @@ -0,0 +1,7 @@ +/datum/quirk/no_guns + name = "Fat-Fingered" + desc = "Due to the shape of your hands, width of your fingers or just not having fingers at all, you're unable to fire guns." + value = -2 + mob_traits = list(TRAIT_CHUNKYFINGERS) + gain_text = span_notice("Your fingers feel... thick.") + lose_text = span_notice("Your fingers feel normal again.") diff --git a/shiptest.dme b/shiptest.dme index 1ed660de9419..7b3b6a3b9f59 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -909,6 +909,7 @@ #include "code\datums\traits\negative\addictions.dm" #include "code\datums\traits\negative\bad_touch.dm" #include "code\datums\traits\negative\blindness.dm" +#include "code\datums\traits\negative\chunkyfingers.dm" #include "code\datums\traits\negative\congenital_analgesia.dm" #include "code\datums\traits\negative\deafness.dm" #include "code\datums\traits\negative\flimsy.dm" From c2d092b95d1cba71ae5a80e70d389108e0e59139 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Wed, 27 Aug 2025 16:52:22 +0200 Subject: [PATCH 09/16] Walance --- code/datums/traits/negative/chunkyfingers.dm | 2 +- code/datums/traits/positive/iron_fist.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/traits/negative/chunkyfingers.dm b/code/datums/traits/negative/chunkyfingers.dm index c50c5eb3409e..94eae174e462 100644 --- a/code/datums/traits/negative/chunkyfingers.dm +++ b/code/datums/traits/negative/chunkyfingers.dm @@ -1,7 +1,7 @@ /datum/quirk/no_guns name = "Fat-Fingered" desc = "Due to the shape of your hands, width of your fingers or just not having fingers at all, you're unable to fire guns." - value = -2 + value = -3 mob_traits = list(TRAIT_CHUNKYFINGERS) gain_text = span_notice("Your fingers feel... thick.") lose_text = span_notice("Your fingers feel normal again.") diff --git a/code/datums/traits/positive/iron_fist.dm b/code/datums/traits/positive/iron_fist.dm index 423ca09cd894..87188decb059 100644 --- a/code/datums/traits/positive/iron_fist.dm +++ b/code/datums/traits/positive/iron_fist.dm @@ -19,7 +19,7 @@ /datum/quirk/steel_fist name = "Fists of Steel" desc = "You have MASSIVE fists of kung-fury! Even MORE increases unarmed damage." - value = 2 + value = 3 gain_text = span_notice("I trained in a barn") lose_text = span_danger("I no longer remember my roots in Duranda") medical_record_text = "Patient has accidentally destroyed the door handle to my office. A replacement is needed." From 41be9e6440b9ff5c2538da333ccb6034a50e4570 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Thu, 28 Aug 2025 14:52:39 +0200 Subject: [PATCH 10/16] Aggrometabolism walance --- code/datums/traits/{neutral => negative}/aggrometabolism.dm | 1 + shiptest.dme | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename code/datums/traits/{neutral => negative}/aggrometabolism.dm (96%) diff --git a/code/datums/traits/neutral/aggrometabolism.dm b/code/datums/traits/negative/aggrometabolism.dm similarity index 96% rename from code/datums/traits/neutral/aggrometabolism.dm rename to code/datums/traits/negative/aggrometabolism.dm index 144704d0559c..6f0afd340bef 100644 --- a/code/datums/traits/neutral/aggrometabolism.dm +++ b/code/datums/traits/negative/aggrometabolism.dm @@ -1,4 +1,5 @@ /datum/quirk/aggrometabolism name = "Aggressive metabolism" desc = "Your body has an extremely fast metabolism, for better or worse, leading to natural healing if you are well fed, but if you are starving, your body will start eating itself up" + value = -1 mob_traits = list(TRAIT_AGGROMETABOLISM) diff --git a/shiptest.dme b/shiptest.dme index 7b3b6a3b9f59..6fb2a01325e2 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -907,6 +907,7 @@ #include "code\datums\status_effects\debuffs\speech_debuffs.dm" #include "code\datums\traits\_quirk.dm" #include "code\datums\traits\negative\addictions.dm" +#include "code\datums\traits\negative\aggrometabolism.dm" #include "code\datums\traits\negative\bad_touch.dm" #include "code\datums\traits\negative\blindness.dm" #include "code\datums\traits\negative\chunkyfingers.dm" @@ -924,7 +925,6 @@ #include "code\datums\traits\negative\pushover.dm" #include "code\datums\traits\negative\unarmored.dm" #include "code\datums\traits\neutral\ageusia.dm" -#include "code\datums\traits\neutral\aggrometabolism.dm" #include "code\datums\traits\neutral\bald.dm" #include "code\datums\traits\neutral\deviant_tastes.dm" #include "code\datums\traits\neutral\gunslinger.dm" From c36ba25743a52230541463e4e98df962705ab1e2 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Thu, 28 Aug 2025 15:13:54 +0200 Subject: [PATCH 11/16] pain intolerance + damage vulnerabilities --- code/__DEFINES/traits/traits.dm | 5 ++ .../subsystem/processing/quirks.dm | 4 +- code/datums/traits/negative/damagevul.dm | 64 +++++++++++++++++++ .../datums/traits/negative/painintolerance.dm | 10 +++ shiptest.dme | 2 + 5 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 code/datums/traits/negative/damagevul.dm create mode 100644 code/datums/traits/negative/painintolerance.dm diff --git a/code/__DEFINES/traits/traits.dm b/code/__DEFINES/traits/traits.dm index 0d9c9c8fff09..184348473f90 100644 --- a/code/__DEFINES/traits/traits.dm +++ b/code/__DEFINES/traits/traits.dm @@ -359,6 +359,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CHEMICAL_NIGHTVISION "chemical_nightvision" #define TRAIT_GOOD_CHEMICAL_NIGHTVISION "good_chemical_nightvision" #define TRAIT_AGGROMETABOLISM "aggrometabolism" +#define TRAIT_BRUTEWEAK "brute_weakness" +#define TRAIT_BRUTEWEAKMAJOR "brute_weakness_major" +#define TRAIT_BURNWEAK "burn_weakness" +#define TRAIT_BURNWEAKMAJOR "burn_weakness_major" + ///Trait for dryable items #define TRAIT_DRYABLE "trait_dryable" diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 8f06c251a7a2..11a359252ddb 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -31,7 +31,9 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Self-Aware", "Congenital Analgesia"), \ list("(Language) Moth Pidgin", "(Language) Solarian International", "(Language) Teceti Unified Standard", "(Language) Kalixcian Common"), \ list("Health - Tough", "Health - Very Tough", "Health - Flimsy", "Health - Very Flimsy"),\ - list("Fists of Iron" , "Fists of Steel")\ + list("Fists of Iron" , "Fists of Steel"),\ + list("Brute Weakness, Minor", "Brute Weakness, Major"),\ + list("Burn Weakness, Minor", "Burn Weakness, Major")\ ) species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), "Aggressive metabolism" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) diff --git a/code/datums/traits/negative/damagevul.dm b/code/datums/traits/negative/damagevul.dm new file mode 100644 index 000000000000..9ab126852f14 --- /dev/null +++ b/code/datums/traits/negative/damagevul.dm @@ -0,0 +1,64 @@ +/datum/quirk/bruteweak + name = "Brute Weakness, Minor" + desc = "You're weaker to physical trauma than others, taking 10% extra brute damage" + mob_traits = list(TRAIT_BRUTEWEAK) + value = -2 + +/datum/quirk/bruteweak/add() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.brutemod += 0.1 + +/datum/quirk/bruteweak/remove() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.brutemod -= 0.1 + +/datum/quirk/bruteweakmajor + name = "Brute Weakness, Major" + desc = "You're much weaker to physical trauma than others, taking 20% extra brute damage" + mob_traits = list(TRAIT_BRUTEWEAKMAJOR) + value = -3 + +/datum/quirk/bruteweakmajor/add() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.brutemod += 0.2 + +/datum/quirk/bruteweakmajor/remove() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.brutemod -= 0.2 + + +/datum/quirk/burnweak + name = "Burn Weakness, Minor" + desc = "You're weaker to burns than others, taking 10% extra burn damage" + mob_traits = list(TRAIT_BURNWEAK) + value = -2 + +/datum/quirk/burnweak/add() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.burnmod += 0.1 + +/datum/quirk/burnweak/remove() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.burnmod -= 0.1 + +/datum/quirk/burnweakmajor + name = "Burn Weakness, Major" + desc = "You're much weaker to burns than others, taking 20% extra burn damage" + mob_traits = list(TRAIT_BURNWEAKMAJOR) + value = -4 + +/datum/quirk/burnweakmajor/add() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.burnmod += 0.2 + +/datum/quirk/burnweakmajor/remove() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.burnmod -= 0.2 \ No newline at end of file diff --git a/code/datums/traits/negative/painintolerance.dm b/code/datums/traits/negative/painintolerance.dm new file mode 100644 index 000000000000..b4a9d3cc41fe --- /dev/null +++ b/code/datums/traits/negative/painintolerance.dm @@ -0,0 +1,10 @@ +/datum/quirk/weakpaintolerance + name = "Pain Tolerance - Weak" + desc = "Your pain tolerance is really low. You go into crit 50 damage points earlier than you should" + gain_text = span_danger("You feel wimpy...") + lose_text = span_notice("You feel stronger.") + value = -5 + +/datum/quirk/weakpaintolerance/on_spawn() + var/mob/living/carbon/human/H = quirk_holder + H.crit_threshold += 50 \ No newline at end of file diff --git a/shiptest.dme b/shiptest.dme index 6fb2a01325e2..c4839c2acdb7 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -912,6 +912,7 @@ #include "code\datums\traits\negative\blindness.dm" #include "code\datums\traits\negative\chunkyfingers.dm" #include "code\datums\traits\negative\congenital_analgesia.dm" +#include "code\datums\traits\negative\damagevul.dm" #include "code\datums\traits\negative\deafness.dm" #include "code\datums\traits\negative\flimsy.dm" #include "code\datums\traits\negative\frail.dm" @@ -919,6 +920,7 @@ #include "code\datums\traits\negative\light_drinker.dm" #include "code\datums\traits\negative\mute.dm" #include "code\datums\traits\negative\nearsighted.dm" +#include "code\datums\traits\negative\painintolerance.dm" #include "code\datums\traits\negative\paraplegic.dm" #include "code\datums\traits\negative\phobia.dm" #include "code\datums\traits\negative\prosopagnosia.dm" From 5e23315aa281b8e36938d8882b14d88982dc6fac Mon Sep 17 00:00:00 2001 From: LDip999 Date: Thu, 28 Aug 2025 15:19:35 +0200 Subject: [PATCH 12/16] eof cringe --- code/datums/traits/negative/damagevul.dm | 2 +- code/datums/traits/negative/painintolerance.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/traits/negative/damagevul.dm b/code/datums/traits/negative/damagevul.dm index 9ab126852f14..b9c2ea00634d 100644 --- a/code/datums/traits/negative/damagevul.dm +++ b/code/datums/traits/negative/damagevul.dm @@ -61,4 +61,4 @@ /datum/quirk/burnweakmajor/remove() var/mob/living/carbon/human/H = quirk_holder var/datum/species/species = H.dna.species - species.burnmod -= 0.2 \ No newline at end of file + species.burnmod -= 0.2 diff --git a/code/datums/traits/negative/painintolerance.dm b/code/datums/traits/negative/painintolerance.dm index b4a9d3cc41fe..620346b7a9eb 100644 --- a/code/datums/traits/negative/painintolerance.dm +++ b/code/datums/traits/negative/painintolerance.dm @@ -7,4 +7,4 @@ /datum/quirk/weakpaintolerance/on_spawn() var/mob/living/carbon/human/H = quirk_holder - H.crit_threshold += 50 \ No newline at end of file + H.crit_threshold += 50 From e48a9de79f4748dda6c397a24fe2d9b2bdb8aba1 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Thu, 28 Aug 2025 15:21:37 +0200 Subject: [PATCH 13/16] walance --- code/datums/traits/negative/painintolerance.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/traits/negative/painintolerance.dm b/code/datums/traits/negative/painintolerance.dm index 620346b7a9eb..1ae170f490fe 100644 --- a/code/datums/traits/negative/painintolerance.dm +++ b/code/datums/traits/negative/painintolerance.dm @@ -7,4 +7,4 @@ /datum/quirk/weakpaintolerance/on_spawn() var/mob/living/carbon/human/H = quirk_holder - H.crit_threshold += 50 + H.crit_threshold += 25 From cfe75b6768e89b7a6c214b42163212b5ea2ae8cd Mon Sep 17 00:00:00 2001 From: LDip999 Date: Thu, 28 Aug 2025 15:29:43 +0200 Subject: [PATCH 14/16] I forgor --- code/controllers/subsystem/processing/quirks.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 11a359252ddb..84d6aa9a34b1 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -33,7 +33,8 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Health - Tough", "Health - Very Tough", "Health - Flimsy", "Health - Very Flimsy"),\ list("Fists of Iron" , "Fists of Steel"),\ list("Brute Weakness, Minor", "Brute Weakness, Major"),\ - list("Burn Weakness, Minor", "Burn Weakness, Major")\ + list("Burn Weakness, Minor", "Burn Weakness, Major"),\ + list("Pain Tolerance - Weak", "Congenital Analgesia") ) species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), "Aggressive metabolism" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) From f3d8ed91382c19513756347c625d98ea910533d6 Mon Sep 17 00:00:00 2001 From: LDip999 Date: Thu, 28 Aug 2025 15:39:29 +0200 Subject: [PATCH 15/16] Fixes oversights --- code/controllers/subsystem/processing/quirks.dm | 3 ++- code/datums/traits/negative/damagevul.dm | 2 +- code/datums/traits/negative/painintolerance.dm | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 84d6aa9a34b1..cf0239a2ca4e 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -34,7 +34,8 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Fists of Iron" , "Fists of Steel"),\ list("Brute Weakness, Minor", "Brute Weakness, Major"),\ list("Burn Weakness, Minor", "Burn Weakness, Major"),\ - list("Pain Tolerance - Weak", "Congenital Analgesia") + list("Pain Tolerance - Weak", "Congenital Analgesia"), \ + list("Fat-Fingered", "Gunslinger")\ ) species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), "Aggressive metabolism" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) diff --git a/code/datums/traits/negative/damagevul.dm b/code/datums/traits/negative/damagevul.dm index b9c2ea00634d..bbd20306ed74 100644 --- a/code/datums/traits/negative/damagevul.dm +++ b/code/datums/traits/negative/damagevul.dm @@ -18,7 +18,7 @@ name = "Brute Weakness, Major" desc = "You're much weaker to physical trauma than others, taking 20% extra brute damage" mob_traits = list(TRAIT_BRUTEWEAKMAJOR) - value = -3 + value = -4 /datum/quirk/bruteweakmajor/add() var/mob/living/carbon/human/H = quirk_holder diff --git a/code/datums/traits/negative/painintolerance.dm b/code/datums/traits/negative/painintolerance.dm index 1ae170f490fe..8081b6e2c074 100644 --- a/code/datums/traits/negative/painintolerance.dm +++ b/code/datums/traits/negative/painintolerance.dm @@ -1,6 +1,6 @@ /datum/quirk/weakpaintolerance name = "Pain Tolerance - Weak" - desc = "Your pain tolerance is really low. You go into crit 50 damage points earlier than you should" + desc = "Your pain tolerance is really low. You go into crit 25 damage points earlier than you should" gain_text = span_danger("You feel wimpy...") lose_text = span_notice("You feel stronger.") value = -5 From f4f1ca817057c9586f47ed4f52c6a7c72854176b Mon Sep 17 00:00:00 2001 From: LDip999 Date: Tue, 2 Sep 2025 20:31:02 +0200 Subject: [PATCH 16/16] Fix --- code/modules/mob/fieldtend.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/fieldtend.dm b/code/modules/mob/fieldtend.dm index 4d28314fac33..1dfdf615a7bf 100644 --- a/code/modules/mob/fieldtend.dm +++ b/code/modules/mob/fieldtend.dm @@ -2,7 +2,7 @@ set name = "Field Tending Supplies" set category = "IC" set desc = "Retrive your scavanged field tending supplies" - if(HAS_TRAIT(src,TRAIT_VETDOC)) + if(HAS_TRAIT(src,TRAIT_VETDOC) || HAS_TRAIT(src, TRAIT_FIELDMEDIC)) if(isliving(src) && stat == CONSCIOUS) var/mob/living/curruser = src var/charges = floor(curruser.heal_reservoir)