From cc81ff309bdc2d0563a7682a5ab577a2e79e3a2d Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Thu, 23 Apr 2026 01:04:53 -0400 Subject: [PATCH 01/20] Disfigured --- .../~darkpack/traits/declarations.dm | 2 +- code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../subsystem/processing/quirks.dm | 1 + .../code/modules/mob/living/carbon/examine.dm | 2 ++ .../code/negative_quirks/disfigured.dm | 26 +++++++++++++++++++ .../code/discipline/dominate/dominate.dm | 3 +++ .../code/discipline/presence/presence.dm | 3 +++ tgstation.dme | 1 + 9 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index e01c01d99df7..e0181938690c 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -172,6 +172,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_METAMORPH "metamorph" #define TRAIT_MERIT_UNTAMABLE "merit_untamable" #define TRAIT_FAIR_GLABRO "fair_glabro" - +#define TRAIT_DISFIGURED_APPEARANCE "disfigured_appearance" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 368d13a925f4..952120cc0675 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -685,6 +685,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DEFICIENT_VITAE" = TRAIT_DEFICIENT_VITAE, // DARKPACK EDIT ADD "TRAIT_DIABLERIE" = TRAIT_DIABLERIE, // DARKPACK EDIT ADD "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, // DARKPACK EDIT ADD + "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 170f7d9bb9b7..96cc991806ba 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -375,6 +375,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_DEFICIENT_VITAE" = TRAIT_DEFICIENT_VITAE, // DARKPACK EDIT ADD "TRAIT_DIABLERIE" = TRAIT_DIABLERIE, // DARKPACK EDIT ADD "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, // DARKPACK EDIT ADD + "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index fe002ae28e6a..1b32c19e1f7d 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -28,6 +28,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/empath, /datum/quirk/evil), list(/datum/quirk/keen_nose, /datum/quirk/item_quirk/anosmia), list(/datum/quirk/darkpack/weak_willed, /datum/quirk/darkpack/untamable), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/darkpack/disfigured, /datum/quirk/darkpack/monstrous), // DARKPACK EDIT ADD - MERITS/FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index e1adfc3d32f7..5819359a1603 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -73,6 +73,8 @@ . += span_rose(span_bold("[pick(five)]
")) if(HAS_TRAIT(src, TRAIT_PERMAFANGS)) . += span_warning("[p_They()] [p_have()] visible fangs in [p_their()] mouth.
") + if(HAS_TRAIT(src, TRAIT_DISFIGURED_APPEARANCE)) + . += span_warning("[p_They()] [p_are()] visibly disfigured.
") if(HAS_TRAIT(src, TRAIT_BETRAYERS_MARK)) if(isliving(user)) var/mob/living/living_user = user diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm new file mode 100644 index 000000000000..c68f8c5754b2 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -0,0 +1,26 @@ +// VTM pg. 481 +/datum/quirk/darkpack/disfigured + name = "Disfigured" + desc = {"A hideous disfigurement makes your appearance disturbing and memorable. + The difficulties of all die rolls relating to social interaction are increased by two. + You may not have an Appearance rating greater than 2."} + icon = FA_ICON_FACE_GRIMACE + value = -2 + gain_text = span_notice("Your face is disfigured!") + lose_text = span_notice("You feel like you look a lot better.") + failure_message = span_notice("You don't look too bad.") + mob_trait = TRAIT_DISFIGURED_APPEARANCE + var/appearance_to_subtract + +/datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + var/mob/living/carbon/human/human_holder = new_holder + appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 //5-2=3 dots removed, ect + if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) + human_holder.st_set_stat(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract)// I'd use add_stat_mod if it worked here. + +/datum/quirk/darkpack/disfigured/post_add() + . = ..() + to_chat(quirk_holder, span_warning ("Your disfigurement takes a toll. Your appearance can't be raised above 2 dots!"))// Tell them why the dots are removed. + if(appearance_to_subtract > 0) + to_chat(quirk_holder, span_warning("Removed [appearance_to_subtract] appearance."))// Tell them how many dots we removed. diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index d697d3379d11..df588c452301 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -114,6 +114,9 @@ if(HAS_TRAIT(target, TRAIT_WEAK_WILLED)) theirpower -= 2 + if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) + theirpower += 2 + //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 var/mob/living/carbon/human/human_target = target diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 9b6d49df039f..1effc0605936 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -32,6 +32,9 @@ var/successes = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) + if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) + theirpower += 2 + //botch if(successes < 0) ADD_TRAIT(target, TRAIT_PRESENCE_IMMUNE, TRAIT_GENERIC) diff --git a/tgstation.dme b/tgstation.dme index 7bf03a49607b..99d41f910db4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7379,6 +7379,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\blind.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\deaf.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\derangement.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\disfigured.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\illiterate.dm" From bd6bbb714b3702f9d530eb8610db013dbbbb9e99 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Thu, 23 Apr 2026 01:17:32 -0400 Subject: [PATCH 02/20] Smell Of The Grave --- code/__DEFINES/~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 3 ++- .../code/modules/mob/living/carbon/examine.dm | 5 ++++- .../code/negative_quirks/smell_of_the_grave.dm | 12 ++++++++++++ .../powers/code/discipline/dominate/dominate.dm | 3 +++ .../powers/code/discipline/presence/presence.dm | 3 +++ tgstation.dme | 1 + 7 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index e0181938690c..ffedc71300a3 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -173,5 +173,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_MERIT_UNTAMABLE "merit_untamable" #define TRAIT_FAIR_GLABRO "fair_glabro" #define TRAIT_DISFIGURED_APPEARANCE "disfigured_appearance" +#define TRAIT_GRAVE_SMELL "grave_smell" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 952120cc0675..89c552b5088a 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -685,7 +685,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DEFICIENT_VITAE" = TRAIT_DEFICIENT_VITAE, // DARKPACK EDIT ADD "TRAIT_DIABLERIE" = TRAIT_DIABLERIE, // DARKPACK EDIT ADD "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, // DARKPACK EDIT ADD - "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS + "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS @@ -696,6 +696,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD + "TRAIT_GRAVE_SMELL" = TRAIT_GRAVE_SMELL, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD "TRAIT_HOMOSEXUAL" = TRAIT_HOMOSEXUAL, // DARKPACK EDIT ADD "TRAIT_HORRIFIC_APPEARANCE" = TRAIT_HORRIFIC_APPEARANCE, // DARKPACK EDIT ADD - Cappadocian Quirk diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index 5819359a1603..b4efcdd1570b 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -55,7 +55,10 @@ . += span_danger("[p_They()] [p_are()] covered in... scales!?
") if(HAS_TRAIT(src, TRAIT_ANIMAL_MUSK)) - . += span_warning("[p_they(TRUE)] smell[p_s()] weirdly animal like...
") + . += span_warning("[p_They(TRUE)] smell[p_s()] weirdly animal like...
") + + if(HAS_TRAIT(src, TRAIT_GRAVE_SMELL)) + . += span_warning("[p_They] smell[p_s()] like moist soil.
") if(!(obscured_slots & HIDEFACE)) switch(st_get_stat(STAT_APPEARANCE)) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm new file mode 100644 index 000000000000..046963089a6d --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm @@ -0,0 +1,12 @@ +// V20 p. 482 +/datum/quirk/darkpack/smell_of_the_grave + name = "Smell Of The Grave" + desc = {"You exude an odor of dampness and newly turned earth, which no amount of scents or perfumes will cover. +Mortals in your immediate presence become uncomfortable, so the difficulties of all Social rolls to affect mortals increase by one."} + value = -1 + mob_trait = TRAIT_GRAVE_SMELL + gain_text = span_notice("You smell awful.") + lose_text = span_notice("You feel like you smell a lot better.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_SPRAY_CAN + failure_message = span_notice("You feel like you smell a lot better.") diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index df588c452301..4125aa14b811 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -117,6 +117,9 @@ if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) theirpower += 2 + if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. + theirpower += 1 + //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 var/mob/living/carbon/human/human_target = target diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 1effc0605936..d3f5d6ab782c 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -35,6 +35,9 @@ if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) theirpower += 2 + if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. + theirpower += 1 + //botch if(successes < 0) ADD_TRAIT(target, TRAIT_PRESENCE_IMMUNE, TRAIT_GENERIC) diff --git a/tgstation.dme b/tgstation.dme index 99d41f910db4..d363f3bb7922 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7391,6 +7391,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_fangs.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\smell_of_the_grave.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\territorial.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\thaumaturgically_inept.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\the_largest_maw.dm" From e016b9ef6028cc84794514932128ec5ec6b609a1 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Thu, 23 Apr 2026 15:19:56 -0400 Subject: [PATCH 03/20] Lame --- .../~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../code/modules/mob/living/carbon/examine.dm | 2 +- .../merits_flaws/code/negative_quirks/lame.dm | 56 +++++++++++++++++++ tgstation.dme | 1 + .../darkpack_merits_flaws_preferences.tsx | 9 ++- 7 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index ffedc71300a3..cca92bef03c9 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -174,5 +174,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FAIR_GLABRO "fair_glabro" #define TRAIT_DISFIGURED_APPEARANCE "disfigured_appearance" #define TRAIT_GRAVE_SMELL "grave_smell" +#define TRAIT_LAME "lame" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 89c552b5088a..4048e278c21e 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -706,6 +706,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD "TRAIT_IN_FRENZY" = TRAIT_IN_FRENZY, // DARKPACK EDIT ADD "TRAIT_IRRESISTIBLE_VITAE" = TRAIT_IRRESISTIBLE_VITAE, // DARKPACK EDIT ADD + "TRAIT_LAME" = TRAIT_LAME, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_LAZY" = TRAIT_LAZY, // DARKPACK EDIT ADD "TRAIT_LIGHT_WEAKNESS" = TRAIT_LIGHT_WEAKNESS, // DARKPACK EDIT ADD - Setite Flaw "TRAIT_LOCAL_SIXTHSENSE" = TRAIT_LOCAL_SIXTHSENSE, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 96cc991806ba..1b7fa1a6458f 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -393,6 +393,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD "TRAIT_IN_FRENZY" = TRAIT_IN_FRENZY, // DARKPACK EDIT ADD "TRAIT_IRRESISTIBLE_VITAE" = TRAIT_IRRESISTIBLE_VITAE, // DARKPACK EDIT ADD + "TRAIT_LAME" = TRAIT_LAME, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_LAZY" = TRAIT_LAZY, // DARKPACK EDIT ADD "TRAIT_LIGHT_WEAKNESS" = TRAIT_LIGHT_WEAKNESS, // DARKPACK EDIT ADD - Setite Flaw "TRAIT_LOCAL_SIXTHSENSE" = TRAIT_LOCAL_SIXTHSENSE, // DARKPACK EDIT ADD diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index b4efcdd1570b..ee0b6c0a7295 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -58,7 +58,7 @@ . += span_warning("[p_They(TRUE)] smell[p_s()] weirdly animal like...
") if(HAS_TRAIT(src, TRAIT_GRAVE_SMELL)) - . += span_warning("[p_They] smell[p_s()] like moist soil.
") + . += span_warning("[p_They()] smell[p_s()] like moist soil.
") if(!(obscured_slots & HIDEFACE)) switch(st_get_stat(STAT_APPEARANCE)) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm new file mode 100644 index 000000000000..31728535447f --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm @@ -0,0 +1,56 @@ +// VTM pg. 482 +/datum/quirk/darkpack/lame + name = "Lame" + desc = {"One or both of your legs are damaged, which prevents you from running or walking easily. +You are forced to walk with a crutch or possibly leg braces, and you have a pronounced limp to your stride. +You have severe difficulties walking."} // A cane won't actually help, but crutches will. + icon = FA_ICON_SHOE_PRINTS + value = -3 + gain_text = span_notice("Your legs ache!") + lose_text = span_notice("Your legs no longer hurt.") + failure_message = span_notice("Your legs no longer hurt.") + mob_trait = TRAIT_LAME + var/lame_leg // Which leg are we not using? + +/*Your legs are damaged, which prevents you from running or walking easily. +You are forced to walk with a cane or possibly leg braces, and you have a pronounced limp to your stride. +Your walking speed is one-quarter that of a normal human, and running is impossible.*/ + +/datum/quirk/darkpack/lame/add(client/client_source) + . = ..() + if(!lame_leg) + lame_leg = client_source?.prefs.read_preference(/datum/preference/choiced/lame_leg) + if(lame_leg == "right") + ADD_TRAIT(quirk_holder, TRAIT_PARALYSIS_R_LEG, QUIRK_TRAIT) + else + ADD_TRAIT(quirk_holder, TRAIT_PARALYSIS_L_LEG, QUIRK_TRAIT) + +/datum/quirk/darkpack/lame/remove() + . = ..() + REMOVE_TRAIT(quirk_holder, TRAIT_PARALYSIS_R_LEG, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_PARALYSIS_L_LEG, QUIRK_TRAIT) + +/datum/quirk_constant_data/lame_leg + associated_typepath = /datum/quirk/darkpack/lame + customization_options = list(/datum/preference/choiced/lame_leg) + +/datum/preference/choiced/lame_leg + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "lame_leg" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/lame_leg/init_possible_values() + return list("left", "right") + +/datum/preference/choiced/lame_leg/create_default_value() + return "right" + +/datum/preference/choiced/lame_leg/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return /datum/quirk/darkpack/lame::name in preferences.all_quirks + +/datum/preference/choiced/lame_leg/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/tgstation.dme b/tgstation.dme index d363f3bb7922..9535c81084d0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7383,6 +7383,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\illiterate.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\lame.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\mage_blood.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\monstrous_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\mute.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx index 3cdaa85c123e..03d1bca66070 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx @@ -11,10 +11,15 @@ export const territorial: FeatureChoiced = { export const prey_exclusion: FeatureChoiced = { name: 'Prey Exclusion', description: 'The Prey Exclusion of this character.', - component: FeatureDropdownInput -} + component: FeatureDropdownInput, +}; export const missing_arm: FeatureChoiced = { name: 'Missing Arm', component: FeatureDropdownInput, }; + +export const lame_leg: FeatureChoiced = { + name: 'Lame Leg', + component: FeatureDropdownInput, +}; From cfd4c35f21ca9136c0c86f985279542cc527ec75 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Thu, 23 Apr 2026 17:44:37 -0400 Subject: [PATCH 04/20] Slow Healing --- code/__DEFINES/~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 3 ++- .../code/negative_quirks/slow_healing.dm | 17 +++++++++++++++++ .../code/negative_quirks/smell_of_the_grave.dm | 2 +- .../code/discipline/bloodheal/bloodheal.dm | 5 ++++- tgstation.dme | 1 + 7 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/slow_healing.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index cca92bef03c9..1e3aad94e0ee 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -175,5 +175,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_DISFIGURED_APPEARANCE "disfigured_appearance" #define TRAIT_GRAVE_SMELL "grave_smell" #define TRAIT_LAME "lame" +#define TRAIT_SLOW_HEALING "slow_healing" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 4048e278c21e..34b64a8626aa 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -738,6 +738,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SENSITIVE_HUMANITY" = TRAIT_SENSITIVE_HUMANITY, // DARKPACK EDIT ADD "TRAIT_SERPENTIS_SKIN" = TRAIT_SERPENTIS_SKIN, // DARKPACK EDIT ADD - POWERS - (Serpentis) "TRAIT_SILENCED" = TRAIT_SILENCED, // DARKPACK EDIT ADD - POWERS - (Quietus) + "TRAIT_SLOW_HEALING" = TRAIT_SLOW_HEALING, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_SMALL_HANDS" = TRAIT_SMALL_HANDS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_STAKED" = TRAIT_STAKED, // DARKPACK EDIT ADD "TRAIT_STAKE_IMMUNE" = TRAIT_STAKE_IMMUNE, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 1b7fa1a6458f..920dbfb8a800 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -375,7 +375,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_DEFICIENT_VITAE" = TRAIT_DEFICIENT_VITAE, // DARKPACK EDIT ADD "TRAIT_DIABLERIE" = TRAIT_DIABLERIE, // DARKPACK EDIT ADD "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, // DARKPACK EDIT ADD - "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS + "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS @@ -421,6 +421,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_SENSITIVE_HUMANITY" = TRAIT_SENSITIVE_HUMANITY, // DARKPACK EDIT ADD "TRAIT_SERPENTIS_SKIN" = TRAIT_SERPENTIS_SKIN, // DARKPACK EDIT ADD - POWERS - (Serpentis) "TRAIT_SILENCED" = TRAIT_SILENCED, // DARKPACK EDIT ADD - POWERS - (Quietus) + "TRAIT_SLOW_HEALING" = TRAIT_SLOW_HEALING, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_SMALL_HANDS" = TRAIT_SMALL_HANDS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_STAKED" = TRAIT_STAKED, // DARKPACK EDIT ADD "TRAIT_STAKE_IMMUNE" = TRAIT_STAKE_IMMUNE, // DARKPACK EDIT ADD diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/slow_healing.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/slow_healing.dm new file mode 100644 index 000000000000..8856453aadcd --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/slow_healing.dm @@ -0,0 +1,17 @@ +// V20 pg. 483 +/datum/quirk/darkpack/slow_healing + name = "Slow Healing" + desc = "You have difficulty healing wounds. It requires twice the blood points to heal yourself." + value = -3 + mob_trait = TRAIT_SLOW_HEALING + gain_text = span_notice("Your wounds sting.") + lose_text = span_notice("You no longer feel worried about your wounds.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_BANDAGE + failure_message = "You no longer feel worried about your wounds." + +/*You have difficulty healing wounds. It requires two +blood points to heal one health level of bashing or le +thal damage, and you heal one health level of aggra +vated damage every five days (plus the usual five blood +points and Willpower expenditure).*/ diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm index 046963089a6d..a360c371e3ab 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm @@ -1,4 +1,4 @@ -// V20 p. 482 +// V20 p. 481 /datum/quirk/darkpack/smell_of_the_grave name = "Smell Of The Grave" desc = {"You exude an odor of dampness and newly turned earth, which no amount of scents or perfumes will cover. diff --git a/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm b/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm index dfdc68c63d17..59b51da8e16f 100644 --- a/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm +++ b/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm @@ -68,7 +68,10 @@ . = ..() //normal bashing/lethal damage - owner.heal_ordered_damage(HEAL_BASHING_LETHAL_DAMAGE * vitae_cost, list(BRUTE, TOX, OXY, STAMINA)) + if(HAS_TRAIT(owner, TRAIT_SLOW_HEALING)) + owner.heal_ordered_damage((HEAL_BASHING_LETHAL_DAMAGE/2) * vitae_cost, list(BRUTE, TOX, OXY, STAMINA)) + else + owner.heal_ordered_damage(HEAL_BASHING_LETHAL_DAMAGE * vitae_cost, list(BRUTE, TOX, OXY, STAMINA)) if(length(owner.all_wounds)) for (var/i in 1 to min(vitae_cost, length(owner.all_wounds))) diff --git a/tgstation.dme b/tgstation.dme index 9535c81084d0..6b669b3a17da 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7392,6 +7392,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_fangs.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\slow_healing.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\smell_of_the_grave.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\territorial.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\thaumaturgically_inept.dm" From 8ef1c46e6244eaa7b06f281c41a1d7137cf94479 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Thu, 23 Apr 2026 22:32:52 -0400 Subject: [PATCH 05/20] Infectious bite ...and a small fix for disfigured. --- .../__DEFINES/~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../modules/blood_drinking/code/vamp_bite.dm | 5 +++++ .../code/negative_quirks/disfigured.dm | 10 +++++++--- .../code/negative_quirks/infectious_bite.dm | 18 ++++++++++++++++++ tgstation.dme | 1 + 7 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/infectious_bite.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 1e3aad94e0ee..2207a03786d0 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -176,5 +176,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_GRAVE_SMELL "grave_smell" #define TRAIT_LAME "lame" #define TRAIT_SLOW_HEALING "slow_healing" +#define TRAIT_INFECTIOUS_BITE "infectious_bite" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 34b64a8626aa..46570f079beb 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -704,6 +704,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HUNTED" = TRAIT_HUNTED, // DARKPACK EDIT ADD "TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD + "TRAIT_INFECTIOUS_BITE" = TRAIT_INFECTIOUS_BITE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_IN_FRENZY" = TRAIT_IN_FRENZY, // DARKPACK EDIT ADD "TRAIT_IRRESISTIBLE_VITAE" = TRAIT_IRRESISTIBLE_VITAE, // DARKPACK EDIT ADD "TRAIT_LAME" = TRAIT_LAME, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 920dbfb8a800..738c645f1fcf 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -391,6 +391,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_HUNTED" = TRAIT_HUNTED, // DARKPACK EDIT ADD "TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD + "TRAIT_INFECTIOUS_BITE" = TRAIT_INFECTIOUS_BITE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_IN_FRENZY" = TRAIT_IN_FRENZY, // DARKPACK EDIT ADD "TRAIT_IRRESISTIBLE_VITAE" = TRAIT_IRRESISTIBLE_VITAE, // DARKPACK EDIT ADD "TRAIT_LAME" = TRAIT_LAME, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw diff --git a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm index 4a1f5ed0dfdc..82f6d1445b11 100644 --- a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm +++ b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm @@ -87,3 +87,8 @@ playsound(src, 'modular_darkpack/modules/blood_drinking/sounds/kiss.ogg', 50, TRUE) bit_living.visible_message(span_italics(span_bold("[src] kisses [bit_living]!")), span_userlove(span_bold("[src] kisses you!"))) drinksomeblood(bit_living, TRUE) + if(HAS_TRAIT(src, TRAIT_INFECTIOUS_BITE) && (!get_kindred_splat(bit_living)))// Don't look at vampires for this. + if(prob(20))// The one in five chance to make a mortal seriously ill. + bit_living.reagents.add_reagent(/datum/reagent/toxin, 10) // Consider other chemicals if they seem more fitting. + bit_living.reagents.add_reagent(/datum/reagent/toxin/histamine, 10) + bit_living.adjust_brute_loss(5, TRUE)// Neglible, but it should fit for the 'can't automatically close bite wounds' bit of this quirk. diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm index c68f8c5754b2..51d92d398b12 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -17,10 +17,14 @@ var/mob/living/carbon/human/human_holder = new_holder appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 //5-2=3 dots removed, ect if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) - human_holder.st_set_stat(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract)// I'd use add_stat_mod if it worked here. + human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// I'd use add_stat_mod if it worked here. /datum/quirk/darkpack/disfigured/post_add() . = ..() - to_chat(quirk_holder, span_warning ("Your disfigurement takes a toll. Your appearance can't be raised above 2 dots!"))// Tell them why the dots are removed. if(appearance_to_subtract > 0) - to_chat(quirk_holder, span_warning("Removed [appearance_to_subtract] appearance."))// Tell them how many dots we removed. + to_chat(quirk_holder, span_warning ("Your disfigurement takes a toll. Your appearance can't be raised above 2 dots!"))// Tell them why the dots are removed. + to_chat(quirk_holder, span_warning("Removed [appearance_to_subtract] appearance. Consider reallocating your stats!"))// Tell them how many dots we removed. + +/datum/quirk/darkpack/disfigured/remove_from_current_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + new_holder.st_remove_stat_mod(STAT_APPEARANCE, "Disfigured") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/infectious_bite.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/infectious_bite.dm new file mode 100644 index 000000000000..47d97fe55a12 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/infectious_bite.dm @@ -0,0 +1,18 @@ +// V20 pg. 481 +/datum/quirk/darkpack/infectious_bite + name = "Infectious Bite" + desc = {"Your bites have a one in five chance of leaving a mortal seriously ill. + You can't automatically lick wounds of your victim closed."} + value = -2 + mob_trait = TRAIT_INFECTIOUS_BITE + gain_text = span_notice("Your mouth doesn't feel very sanitary.") + lose_text = span_notice("You don't feel worried about feeding anymore.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_VIRUS + failure_message = "You don't feel worried about feeding anymore." + +/*You may not automatically lick the wounds of your +feeding closed. In fact, your bites have a one in five +chance of becoming infected and causing mortal vic +tims to become seriously ill. The precise nature of the +infection is determined by the Storyteller.*/ diff --git a/tgstation.dme b/tgstation.dme index 6b669b3a17da..80a56a2f3cdb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7383,6 +7383,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\illiterate.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\infectious_bite.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\lame.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\mage_blood.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\monstrous_quirk.dm" From 5ed88f161f4702eae7511c6b46bff5e17550a0f9 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Fri, 24 Apr 2026 03:48:28 -0400 Subject: [PATCH 06/20] Glowing Eyes --- .../~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../code/modules/mob/living/carbon/examine.dm | 4 +++ .../modules/billiards/code/billiard.dm | 4 +++ .../government/code/drivers_license.dm | 2 ++ .../modules/government/code/passport.dm | 2 ++ .../code/negative_quirks/glowing_eyes.dm | 32 +++++++++++++++++++ .../code/discipline/dominate/dominate.dm | 4 +++ .../code/discipline/presence/presence.dm | 4 +++ .../code/vip_barriers/__vip_barrier.dm | 7 ++++ tgstation.dme | 1 + 12 files changed, 63 insertions(+) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 2207a03786d0..165e3cbb38ee 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -177,5 +177,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_LAME "lame" #define TRAIT_SLOW_HEALING "slow_healing" #define TRAIT_INFECTIOUS_BITE "infectious_bite" +#define TRAIT_GLOWING_EYES "glowing_eyes" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 46570f079beb..09c54429bab9 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -695,6 +695,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FORCED_EMOTION" = TRAIT_FORCED_EMOTION, // DARKPACK EDIT ADD - Melpominee "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) + "TRAIT_GLOWING_EYES" = TRAIT_GLOWING_EYES, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD "TRAIT_GRAVE_SMELL" = TRAIT_GRAVE_SMELL, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 738c645f1fcf..2036dfec9d53 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -384,6 +384,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_FERA_RENOWN" = TRAIT_FERA_RENOWN, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) + "TRAIT_GLOWING_EYES" = TRAIT_GLOWING_EYES, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD "TRAIT_HOMOSEXUAL" = TRAIT_HOMOSEXUAL, // DARKPACK EDIT ADD diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index ee0b6c0a7295..87c96673b26f 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -60,6 +60,10 @@ if(HAS_TRAIT(src, TRAIT_GRAVE_SMELL)) . += span_warning("[p_They()] smell[p_s()] like moist soil.
") + if(HAS_TRAIT(src, TRAIT_GLOWING_EYES)) + if (!is_eyes_covered()) + . += span_warning("[p_Their()] eyes glow unnaturally bright!
") + if(!(obscured_slots & HIDEFACE)) switch(st_get_stat(STAT_APPEARANCE)) if(0) diff --git a/modular_darkpack/modules/billiards/code/billiard.dm b/modular_darkpack/modules/billiards/code/billiard.dm index 9dc8c26d8cb0..fff42119c2cb 100644 --- a/modular_darkpack/modules/billiards/code/billiard.dm +++ b/modular_darkpack/modules/billiards/code/billiard.dm @@ -146,6 +146,10 @@ var/datum/storyteller_roll/pool_aiming/accuracy_roll = new() var/accuracy_result = accuracy_roll.st_roll(user, src) var/datum/storyteller_roll/pool_hits/amount_to_hit_roll = new() + + if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) + amount_to_hit_roll.difficulty += 1 + var/amount_to_hit_result = amount_to_hit_roll.st_roll(user, src) var/list/balls_sunk = list() for(var/i in 1 to amount_to_hit_result) diff --git a/modular_darkpack/modules/government/code/drivers_license.dm b/modular_darkpack/modules/government/code/drivers_license.dm index 39bf001c543e..aa5dcf8da105 100644 --- a/modular_darkpack/modules/government/code/drivers_license.dm +++ b/modular_darkpack/modules/government/code/drivers_license.dm @@ -45,6 +45,8 @@ /obj/item/card/drivers_license/examine(mob/user) . = ..() if(!examine_roll) + if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) + examine_roll.difficulty += 1 examine_roll = new() examine_roll.reroll_cooldown = 1 SCENES var/roll_result = examine_roll.st_roll(user, src) diff --git a/modular_darkpack/modules/government/code/passport.dm b/modular_darkpack/modules/government/code/passport.dm index 37bcf6bf42b7..b6bc57ac776c 100644 --- a/modular_darkpack/modules/government/code/passport.dm +++ b/modular_darkpack/modules/government/code/passport.dm @@ -66,6 +66,8 @@ /obj/item/passport/examine(mob/user) . = ..() if(!examine_roll) + if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) + examine_roll.difficulty += 1 examine_roll = new() examine_roll.reroll_cooldown = 1 SCENES var/roll_result = examine_roll.st_roll(user, src) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm new file mode 100644 index 000000000000..7358176369e9 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm @@ -0,0 +1,32 @@ +// VTM pg. 482 +/datum/quirk/darkpack/glowing_eyes + name = "Glowing Eyes" + desc = {"You have the stereotypical glowing eyes of vampire legend, giving you a -1 difficulty when intimidating mortals. +However, you MUST constantly disguise your condition; the glow impairs your vision and puts you at +1 difficulty on sight based rolls as well."} + icon = FA_ICON_EYE + value = -3 + gain_text = span_notice("Your eyes glow with an unnatural light!") + lose_text = span_notice("The light in your eyes fades.") + failure_message = span_notice("The light in your eyes fades.") + mob_trait = TRAIT_GLOWING_EYES + +/*You have the stereotypical glowing eyes of vampire +legend, which gives you a -1 difficulty on Intimidation +rolls when you’re dealing with mortals. However, the +tradeoffs are many; you must constantly disguise your +condition (no, contacts don’t cut it); the glow impairs +your vision and puts you at +1 difficulty on all sight +based rolls (including the use of ranged weapons); and +the radiance emanating from your eye sockets makes +it difficult to hide (+2 difficulty to Stealth rolls) in the +dark.*/ + +/datum/quirk/darkpack/glowing_eyes/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + ADD_TRAIT(new_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) + ADD_TRAIT(new_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) + +/datum/quirk/darkpack/glowing_eyes/remove_from_current_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + REMOVE_TRAIT(new_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) + REMOVE_TRAIT(new_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 4125aa14b811..67951eab4a60 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -120,6 +120,10 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 + if(STAT_INTIMIDATION in owner_stat) + if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze + theirpower += 1 + //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 var/mob/living/carbon/human/human_target = target diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index d3f5d6ab782c..de27765d1b0b 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -38,6 +38,10 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 + if(STAT_INTIMIDATION in owner_stat) + if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze + theirpower -= 1 + //botch if(successes < 0) ADD_TRAIT(target, TRAIT_PRESENCE_IMMUNE, TRAIT_GENERIC) diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index dedecb303cea..28b6399d535a 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -130,6 +130,13 @@ bypass_roll = new() bypass_roll.bumper_text = "persuade guard" + if(HAS_TRAIT(user, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(bouncer)))// Kindred check just in case + involved_social_roll += 1 // All social rolls are harder for us. + + if(STAT_INTIMIDATION in bypass_roll.applicable_stats) + if(HAS_TRAIT(user, TRAIT_GLOWING_EYES) && (!get_kindred_splat(bouncer)))// Kindred check just in case + involved_social_roll -= 1 // Easier intimidation against mortals. + var/verbage bypass_roll.difficulty = involved_social_roll bypass_roll.applicable_stats = list(STAT_CHARISMA) diff --git a/tgstation.dme b/tgstation.dme index 80a56a2f3cdb..dcfb2b38cf0c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7380,6 +7380,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\deaf.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\derangement.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\disfigured.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\glowing_eyes.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\illiterate.dm" From da8f01eafab8e37654227cd59b3f6531a3e595c2 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Fri, 24 Apr 2026 04:41:26 -0400 Subject: [PATCH 07/20] Fixes and Permanent Wound --- .../code/negative_quirks/disfigured.dm | 3 ++- .../code/negative_quirks/glowing_eyes.dm | 2 ++ .../merits_flaws/code/negative_quirks/lame.dm | 2 +- .../code/negative_quirks/permanent_wound.dm | 20 +++++++++++++++++++ tgstation.dme | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm index 51d92d398b12..5b8bfad95996 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -10,6 +10,7 @@ lose_text = span_notice("You feel like you look a lot better.") failure_message = span_notice("You don't look too bad.") mob_trait = TRAIT_DISFIGURED_APPEARANCE + excluded_clans = list(VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_HARBINGER) var/appearance_to_subtract /datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) @@ -17,7 +18,7 @@ var/mob/living/carbon/human/human_holder = new_holder appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 //5-2=3 dots removed, ect if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) - human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// I'd use add_stat_mod if it worked here. + human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// Test after the stat mod pr is in /datum/quirk/darkpack/disfigured/post_add() . = ..() diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm index 7358176369e9..d7173fc1bddf 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm @@ -9,6 +9,8 @@ However, you MUST constantly disguise your condition; the glow impairs your visi lose_text = span_notice("The light in your eyes fades.") failure_message = span_notice("The light in your eyes fades.") mob_trait = TRAIT_GLOWING_EYES + allowed_splats = list(SPLAT_KINDRED) + excluded_clans = list(VAMPIRE_CLAN_KIASYD)// They already have masq violating eyes! /*You have the stereotypical glowing eyes of vampire legend, which gives you a -1 difficulty on Intimidation diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm index 31728535447f..f6050f99b3e2 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm @@ -4,7 +4,7 @@ desc = {"One or both of your legs are damaged, which prevents you from running or walking easily. You are forced to walk with a crutch or possibly leg braces, and you have a pronounced limp to your stride. You have severe difficulties walking."} // A cane won't actually help, but crutches will. - icon = FA_ICON_SHOE_PRINTS + icon = FA_ICON_CRUTCH value = -3 gain_text = span_notice("Your legs ache!") lose_text = span_notice("Your legs no longer hurt.") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm new file mode 100644 index 000000000000..5a72bf1c0f86 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm @@ -0,0 +1,20 @@ +// VTM pg. 482-483 +/datum/quirk/darkpack/permanent_wound + name = "Permanent Wound" + desc = {"You suffered injuries during your Embrace which your transformation somehow failed to repair. +At the beginning of each night, you rise from sleep heavily wounded.."} + value = -3 + gain_text = span_notice("An unhealed wound aches.") + lose_text = span_notice("You can't feel the pain of your wound anymore.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_USER_INJURED + failure_message = "You can't feel the pain of your wound anymore." + +/*You suffered injuries during your Embrace which your transformation somehow failed to repair. +At the beginning of each night, +you rise from sleep at the Wounded health level, though this may be healed by spending blood points.*/ + +/datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + var/mob/living/carbon/human/human_holder = new_holder + human_holder.adjust_brute_loss(90, TRUE) diff --git a/tgstation.dme b/tgstation.dme index dcfb2b38cf0c..8869d1ccc166 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7392,6 +7392,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\one_armed.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\organovore.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_fangs.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_wound.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\slow_healing.dm" From 724d3761ac1c36e8e4e0c87bd8fbfcdffa17919e Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Fri, 24 Apr 2026 04:41:26 -0400 Subject: [PATCH 08/20] Fixes and Permanent Wound --- code/_globalvars/traits/_traits.dm | 2 +- code/_globalvars/traits/admin_tooling.dm | 2 +- .../code/negative_quirks/disfigured.dm | 3 ++- .../code/negative_quirks/glowing_eyes.dm | 2 ++ .../merits_flaws/code/negative_quirks/lame.dm | 2 +- .../code/negative_quirks/permanent_wound.dm | 20 +++++++++++++++++++ tgstation.dme | 1 + 7 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 09c54429bab9..0b88674ca928 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -704,8 +704,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HUNGRY" = TRAIT_HUNGRY, // DARKPACK EDIT ADD "TRAIT_HUNTED" = TRAIT_HUNTED, // DARKPACK EDIT ADD "TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT - "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD "TRAIT_INFECTIOUS_BITE" = TRAIT_INFECTIOUS_BITE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw + "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD "TRAIT_IN_FRENZY" = TRAIT_IN_FRENZY, // DARKPACK EDIT ADD "TRAIT_IRRESISTIBLE_VITAE" = TRAIT_IRRESISTIBLE_VITAE, // DARKPACK EDIT ADD "TRAIT_LAME" = TRAIT_LAME, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 2036dfec9d53..a5ab0d751aca 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -391,8 +391,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_HUNGRY" = TRAIT_HUNGRY, // DARKPACK EDIT ADD "TRAIT_HUNTED" = TRAIT_HUNTED, // DARKPACK EDIT ADD "TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT - "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD "TRAIT_INFECTIOUS_BITE" = TRAIT_INFECTIOUS_BITE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw + "TRAIT_INVISIBLE_TO_CAMERA" = TRAIT_INVISIBLE_TO_CAMERA, // DARKPACK EDIT ADD "TRAIT_IN_FRENZY" = TRAIT_IN_FRENZY, // DARKPACK EDIT ADD "TRAIT_IRRESISTIBLE_VITAE" = TRAIT_IRRESISTIBLE_VITAE, // DARKPACK EDIT ADD "TRAIT_LAME" = TRAIT_LAME, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm index 51d92d398b12..5b8bfad95996 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -10,6 +10,7 @@ lose_text = span_notice("You feel like you look a lot better.") failure_message = span_notice("You don't look too bad.") mob_trait = TRAIT_DISFIGURED_APPEARANCE + excluded_clans = list(VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_HARBINGER) var/appearance_to_subtract /datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) @@ -17,7 +18,7 @@ var/mob/living/carbon/human/human_holder = new_holder appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 //5-2=3 dots removed, ect if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) - human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// I'd use add_stat_mod if it worked here. + human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// Test after the stat mod pr is in /datum/quirk/darkpack/disfigured/post_add() . = ..() diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm index 7358176369e9..d7173fc1bddf 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm @@ -9,6 +9,8 @@ However, you MUST constantly disguise your condition; the glow impairs your visi lose_text = span_notice("The light in your eyes fades.") failure_message = span_notice("The light in your eyes fades.") mob_trait = TRAIT_GLOWING_EYES + allowed_splats = list(SPLAT_KINDRED) + excluded_clans = list(VAMPIRE_CLAN_KIASYD)// They already have masq violating eyes! /*You have the stereotypical glowing eyes of vampire legend, which gives you a -1 difficulty on Intimidation diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm index 31728535447f..f6050f99b3e2 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/lame.dm @@ -4,7 +4,7 @@ desc = {"One or both of your legs are damaged, which prevents you from running or walking easily. You are forced to walk with a crutch or possibly leg braces, and you have a pronounced limp to your stride. You have severe difficulties walking."} // A cane won't actually help, but crutches will. - icon = FA_ICON_SHOE_PRINTS + icon = FA_ICON_CRUTCH value = -3 gain_text = span_notice("Your legs ache!") lose_text = span_notice("Your legs no longer hurt.") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm new file mode 100644 index 000000000000..5a72bf1c0f86 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm @@ -0,0 +1,20 @@ +// VTM pg. 482-483 +/datum/quirk/darkpack/permanent_wound + name = "Permanent Wound" + desc = {"You suffered injuries during your Embrace which your transformation somehow failed to repair. +At the beginning of each night, you rise from sleep heavily wounded.."} + value = -3 + gain_text = span_notice("An unhealed wound aches.") + lose_text = span_notice("You can't feel the pain of your wound anymore.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_USER_INJURED + failure_message = "You can't feel the pain of your wound anymore." + +/*You suffered injuries during your Embrace which your transformation somehow failed to repair. +At the beginning of each night, +you rise from sleep at the Wounded health level, though this may be healed by spending blood points.*/ + +/datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + var/mob/living/carbon/human/human_holder = new_holder + human_holder.adjust_brute_loss(90, TRUE) diff --git a/tgstation.dme b/tgstation.dme index dcfb2b38cf0c..8869d1ccc166 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7392,6 +7392,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\one_armed.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\organovore.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_fangs.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_wound.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\slow_healing.dm" From a87160f2dd7ab1961993bd304c286106b6943ba0 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Fri, 24 Apr 2026 05:25:00 -0400 Subject: [PATCH 09/20] linters --- tgstation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 3525d920c9b5..b5e02d303407 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7380,8 +7380,8 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\deaf.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\derangement.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\disfigured.dm" -#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\glowing_eyes.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\dulled_bite.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\glowing_eyes.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\illiterate.dm" From 75b0d442a93d5134c5e0d00b31a847191ccf7cd4 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Sun, 26 Apr 2026 19:29:41 -0400 Subject: [PATCH 10/20] Acute Sense Acute Sense merit and a slight tweak to how Auspex works when being removed (to make acute sense work the way I want) --- .../~darkpack/traits/declarations.dm | 2 + code/_globalvars/traits/_traits.dm | 2 + code/_globalvars/traits/admin_tooling.dm | 2 + code/modules/mob/living/living_say.dm | 5 ++ .../modules/billiards/code/billiard.dm | 2 + .../government/code/drivers_license.dm | 2 + .../modules/government/code/passport.dm | 2 + .../code/positive_quirks/acute_sense.dm | 81 +++++++++++++++++++ .../powers/code/discipline/auspex/auspex.dm | 5 +- tgstation.dme | 1 + .../darkpack_merits_flaws_preferences.tsx | 5 ++ 11 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 3661f10a5f53..a42577e67732 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -179,5 +179,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SLOW_HEALING "slow_healing" #define TRAIT_INFECTIOUS_BITE "infectious_bite" #define TRAIT_GLOWING_EYES "glowing_eyes" +#define TRAIT_ACUTE_SIGHT "acute_sight" +#define TRAIT_ACUTE_HEARING "acute_hearing" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 6523fecbf0e1..cda1a0bd812f 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -670,6 +670,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SPACE_ANT_IMMUNITY" = TRAIT_SPACE_ANT_IMMUNITY, "TRAIT_BRAIN_TRAUMA_IMMUNITY" = TRAIT_BRAIN_TRAUMA_IMMUNITY, "TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP, + "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - Physical Merit (Acute Sense) + "TRAIT_ACUTE_SIGHT" = TRAIT_ACUTE_SIGHT, // DARKPACK EDIT ADD - Physical Merit (Acute Sense) "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_BETRAYERS_MARK" = TRAIT_BETRAYERS_MARK, // DARKPACK EDIT ADD - MERITS/FLAWS - (Tremere) "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index bb1853fffde5..d1698213029b 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -362,6 +362,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_LEFT_EYE_SCAR" = TRAIT_LEFT_EYE_SCAR, "TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR, "TRAIT_CARPOTOXIN_IMMUNE" = TRAIT_CARPOTOXIN_IMMUNE, + "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - Physical Merit (Acute Sense) + "TRAIT_ACUTE_SIGHT" = TRAIT_ACUTE_SIGHT, // DARKPACK EDIT ADD - Physical Merit (Acute Sense) "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index 6547b91a7ebf..8c1b8d56b9b1 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -286,6 +286,11 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( else deaf_type = MSG_AUDIBLE +// DARKPACK EDIT ADD START + if (HAS_TRAIT(src, TRAIT_ACUTE_HEARING) && !HAS_TRAIT(speaker, TRAIT_SIGN_LANG))// we can't HEAR sign, so we don't care for it + message_range += 3 // Increase how far we can hear +// DARKPACK EDIT ADD END + var/atom/movable/virtualspeaker/holopad_speaker = speaker var/avoid_highlight = src == (istype(holopad_speaker) ? holopad_speaker.source : speaker) diff --git a/modular_darkpack/modules/billiards/code/billiard.dm b/modular_darkpack/modules/billiards/code/billiard.dm index fff42119c2cb..bbb65df10ce2 100644 --- a/modular_darkpack/modules/billiards/code/billiard.dm +++ b/modular_darkpack/modules/billiards/code/billiard.dm @@ -149,6 +149,8 @@ if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) amount_to_hit_roll.difficulty += 1 + if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) + amount_to_hit_roll.difficulty -= 2 var/amount_to_hit_result = amount_to_hit_roll.st_roll(user, src) var/list/balls_sunk = list() diff --git a/modular_darkpack/modules/government/code/drivers_license.dm b/modular_darkpack/modules/government/code/drivers_license.dm index aa5dcf8da105..140bd5463aab 100644 --- a/modular_darkpack/modules/government/code/drivers_license.dm +++ b/modular_darkpack/modules/government/code/drivers_license.dm @@ -47,6 +47,8 @@ if(!examine_roll) if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) examine_roll.difficulty += 1 + if(HAS_TRAIT(user, TRAIT_ACUTE_SIGHT)) + examine_roll.difficulty -= 2 examine_roll = new() examine_roll.reroll_cooldown = 1 SCENES var/roll_result = examine_roll.st_roll(user, src) diff --git a/modular_darkpack/modules/government/code/passport.dm b/modular_darkpack/modules/government/code/passport.dm index b6bc57ac776c..c8d0bdb39908 100644 --- a/modular_darkpack/modules/government/code/passport.dm +++ b/modular_darkpack/modules/government/code/passport.dm @@ -68,6 +68,8 @@ if(!examine_roll) if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) examine_roll.difficulty += 1 + if(HAS_TRAIT(user, TRAIT_ACUTE_SIGHT)) + examine_roll.difficulty -= 2 examine_roll = new() examine_roll.reroll_cooldown = 1 SCENES var/roll_result = examine_roll.st_roll(user, src) diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm new file mode 100644 index 000000000000..05a3a53ca9de --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm @@ -0,0 +1,81 @@ +// VTM pg. 479-480 +/datum/quirk/darkpack/acute_sense + name = "Acute Sense" + desc = {"One of your senses is exceptionally sharp, be it sight, hearing, smell, touch, or taste. +The difficulties for all tasks involving the use of this particular sense are reduced by two."} // Find what checks need to be changed here. + value = 1 + icon = FA_ICON_EYE + var/sense + +/*One of your senses is exceptionally sharp, be it sight, +hearing, smell, touch, or taste. The difficulties for all +tasks involving the use of this particular sense are re +duced by two. This Merit can be combined with the +Discipline of Auspex to produce superhuman sensory +acuity.*/ + +/datum/quirk_constant_data/acute_sense + associated_typepath = /datum/quirk/darkpack/acute_sense + customization_options = list(/datum/preference/choiced/acute_sense) + +/datum/preference/choiced/acute_sense + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "acute_sense" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/acute_sense/init_possible_values() + return list("hearing", "smell", "sight", "taste", "touch") + +/datum/preference/choiced/acute_sense/create_default_value() + return "hearing" + +/datum/preference/choiced/acute_sense/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return /datum/quirk/darkpack/acute_sense::name in preferences.all_quirks + +/datum/preference/choiced/acute_sense/apply_to_human(mob/living/carbon/human/target, value) + return + +/datum/quirk/darkpack/acute_sense/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + sense = client_source?.prefs.read_preference(/datum/preference/choiced/acute_sense) + switch(sense) + if("hearing")// Debating checking for flaws to invalidate this, but they won't be able to use the merit while deaf anyways + ADD_TRAIT(new_holder, TRAIT_ACUTE_HEARING, QUIRK_TRAIT) // Used to hear more. + var/obj/item/organ/ears/sensitive_ears = quirk_holder.get_organ_slot(ORGAN_SLOT_EARS) + sensitive_ears.damage_multiplier = sensitive_ears.damage_multiplier + 1 // We hear better, and there are consequences. + if("smell") // Debate adding a check for TRAIT_ANOSMIA, but we don't currently have it selectable + ADD_TRAIT(new_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) + if("sight") // Debate adding a check, but like hearing, you can't use the benefits while blind really + ADD_TRAIT(new_holder, TRAIT_ACUTE_SIGHT, QUIRK_TRAIT) + quirk_holder.client?.view_size?.setTo(1) + var/obj/item/organ/eyes/sensitive_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) + if(sensitive_eyes) + sensitive_eyes.flash_protect = max(sensitive_eyes.flash_protect += -1, FLASH_PROTECTION_SENSITIVE) + if("taste") + ADD_TRAIT(new_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) + if("touch") + ADD_TRAIT(new_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) // Does this seem fitting? It shouldn't be as strong as auspex is. + +/datum/quirk/darkpack/acute_sense/remove(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + switch(sense) + if("hearing") + REMOVE_TRAIT(quirk_holder, TRAIT_ACUTE_HEARING, QUIRK_TRAIT) + var/obj/item/organ/ears/sensitive_ears = quirk_holder.get_organ_slot(ORGAN_SLOT_EARS) + sensitive_ears.damage_multiplier = sensitive_ears.damage_multiplier - 1 + if("smell") + REMOVE_TRAIT(new_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) + if("sight") + REMOVE_TRAIT(new_holder, TRAIT_ACUTE_SIGHT, QUIRK_TRAIT) + quirk_holder.client?.view_size?.resetToDefault() // Check this doesn't fuck auspex up, but it should be fine. + var/obj/item/organ/eyes/sensitive_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) + if(sensitive_eyes) + sensitive_eyes.flash_protect = max(sensitive_eyes.flash_protect += 1, FLASH_PROTECTION_NONE) + if("taste") + REMOVE_TRAIT(new_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) + if("touch") + REMOVE_TRAIT(new_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) diff --git a/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm b/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm index bfa5eebab85a..9f9d85783aab 100644 --- a/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm +++ b/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm @@ -79,7 +79,10 @@ var/obj/item/organ/ears/kindred_ears = owner.get_organ_slot(ORGAN_SLOT_EARS) kindred_ears.damage_multiplier = initial(kindred_ears.damage_multiplier) // Vision - owner.client?.view_size?.resetToDefault() + if(HAS_TRAIT(owner, TRAIT_ACUTE_SIGHT)) + owner.client?.view_size?.setTo(1) // Using auspex shouldn't nuke our benefit from acute sense this way. + else + owner.client?.view_size?.resetToDefault() // Just reset if we lack the trait REMOVE_TRAIT(owner, TRAIT_REFLECTIVE_EYES, DISCIPLINE_TRAIT(type)) var/obj/item/organ/eyes/kindred_eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) if(kindred_eyes) diff --git a/tgstation.dme b/tgstation.dme index b5e02d303407..97836ae9826f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7405,6 +7405,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\victim_of_the_masquerade.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\weak_willed.dm" #include "modular_darkpack\modules\merits_flaws\code\neutral_quirks\illegal_identity.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\acute_sense.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\beserk.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\deceptive_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx index 03d1bca66070..d9edd1466156 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx @@ -23,3 +23,8 @@ export const lame_leg: FeatureChoiced = { name: 'Lame Leg', component: FeatureDropdownInput, }; + +export const acute_sense: FeatureChoiced = { + name: 'Acute Sense', + component: FeatureDropdownInput, +}; From dabda2d0eba74bdb6efb5b2041cc68ed26df3910 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Sun, 26 Apr 2026 21:18:43 -0400 Subject: [PATCH 11/20] Bruiser --- .../~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 5 +++-- code/_globalvars/traits/admin_tooling.dm | 1 + .../code/positive_quirks/bruiser.dm | 20 +++++++++++++++++++ .../code/discipline/dominate/dominate.dm | 4 +++- .../code/discipline/presence/presence.dm | 2 ++ .../code/vip_barriers/__vip_barrier.dm | 2 ++ tgstation.dme | 1 + 8 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index a42577e67732..54f0ccd9ad71 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -181,5 +181,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_GLOWING_EYES "glowing_eyes" #define TRAIT_ACUTE_SIGHT "acute_sight" #define TRAIT_ACUTE_HEARING "acute_hearing" +#define TRAIT_BRUISER // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index cda1a0bd812f..fb962bbcd3d7 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -670,14 +670,15 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SPACE_ANT_IMMUNITY" = TRAIT_SPACE_ANT_IMMUNITY, "TRAIT_BRAIN_TRAUMA_IMMUNITY" = TRAIT_BRAIN_TRAUMA_IMMUNITY, "TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP, - "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - Physical Merit (Acute Sense) - "TRAIT_ACUTE_SIGHT" = TRAIT_ACUTE_SIGHT, // DARKPACK EDIT ADD - Physical Merit (Acute Sense) + "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit (Acute Sense) + "TRAIT_ACUTE_SIGHT" = TRAIT_ACUTE_SIGHT, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit (Acute Sense) "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_BETRAYERS_MARK" = TRAIT_BETRAYERS_MARK, // DARKPACK EDIT ADD - MERITS/FLAWS - (Tremere) "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLUSH_OF_HEALTH" = TRAIT_BLUSH_OF_HEALTH, // DARKPACK EDIT ADD "TRAIT_BOND_WITHIN_THE_MOUNTAIN" = TRAIT_BOND_WITHIN_THE_MOUNTAIN, // DARKPACK EDIT ADD - POWERS - (Visceratika) + "TRAIT_BRUISER" = TRAIT_BRUISER, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_CANNOT_RESIST_MIND_CONTROL" = TRAIT_CANNOT_RESIST_MIND_CONTROL, // DARKPACK EDIT ADD "TRAIT_CAN_ENTER_TORPOR" = TRAIT_CAN_ENTER_TORPOR, // DARKPACK EDIT ADD "TRAIT_CHARMER" = TRAIT_CHARMER, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index d1698213029b..ecccaff8def7 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -368,6 +368,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLUSH_OF_HEALTH" = TRAIT_BLUSH_OF_HEALTH, // DARKPACK EDIT ADD + "TRAIT_BRUISER" = TRAIT_BRUISER, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_CANNOT_RESIST_MIND_CONTROL" = TRAIT_CANNOT_RESIST_MIND_CONTROL, // DARKPACK EDIT ADD "TRAIT_CAN_ENTER_TORPOR" = TRAIT_CAN_ENTER_TORPOR, // DARKPACK EDIT ADD "TRAIT_CHARMER" = TRAIT_CHARMER, // DARKPACK EDIT ADD diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm new file mode 100644 index 000000000000..9f1935c45bec --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm @@ -0,0 +1,20 @@ +// VTM pg. 480 +/datum/quirk/darkpack/bruiser + name = "Bruiser" + desc = {"Your appearance is sufficiently thug-like to inspire fear (or at least disquiet) in those who see you. +While you're not necessarily ugly, you do radiate a quiet menace, to the point where people cross the street to avoid passing near you. +All Intimidation rolls against those who have not demonstrated their physical superiority to you are at -1 difficulty."} + icon = FA_ICON_BASEBALL_BAT_BALL + value = 1 + gain_text = span_notice("You feel menacing.") + lose_text = span_notice("You feel average.") + failure_message = span_notice("You just can't pull off the menacing look.") + mob_trait = TRAIT_BRUISER + +/*Your appearance is sufficiently thug-like to inspire +fear (or at least disquiet) in those who see you. While +you’re not necessarily ugly, you do radiate a quiet men +ace, to the point where people cross the street to avoid +passing near you. All Intimidation rolls against those +who have not demonstrated their physical superiority +to you are at -1 difficulty.*/ diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 67951eab4a60..00428ef7aae1 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -122,7 +122,9 @@ if(STAT_INTIMIDATION in owner_stat) if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze - theirpower += 1 + theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_BRUISER)) + theirpower -= 1 //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index de27765d1b0b..e0399e2f638b 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -41,6 +41,8 @@ if(STAT_INTIMIDATION in owner_stat) if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_BRUISER)) + theirpower -= 1 //botch if(successes < 0) diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index 28b6399d535a..ab585befc22f 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -136,6 +136,8 @@ if(STAT_INTIMIDATION in bypass_roll.applicable_stats) if(HAS_TRAIT(user, TRAIT_GLOWING_EYES) && (!get_kindred_splat(bouncer)))// Kindred check just in case involved_social_roll -= 1 // Easier intimidation against mortals. + if(HAS_TRAIT(user, TRAIT_BRUISER)) + involved_social_roll -= 1 var/verbage bypass_roll.difficulty = involved_social_roll diff --git a/tgstation.dme b/tgstation.dme index 97836ae9826f..b240a852ff51 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7407,6 +7407,7 @@ #include "modular_darkpack\modules\merits_flaws\code\neutral_quirks\illegal_identity.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\acute_sense.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\beserk.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\bruiser.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\deceptive_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\fair_glabro.dm" From 8e8c45b8298efb03a6b2eebbfd0783091dc48ec7 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Sun, 26 Apr 2026 21:29:42 -0400 Subject: [PATCH 12/20] Enchanting Voice --- code/__DEFINES/~darkpack/traits/declarations.dm | 3 ++- code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../merits_flaws/code/positive_quirks/bruiser.dm | 2 +- .../code/positive_quirks/enchanting_voice.dm | 13 +++++++++++++ .../powers/code/discipline/dominate/dominate.dm | 3 +++ .../powers/code/discipline/presence/presence.dm | 3 +++ .../vip_areas/code/vip_barriers/__vip_barrier.dm | 3 +++ tgstation.dme | 1 + 9 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 54f0ccd9ad71..b89916ef17ef 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -181,6 +181,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_GLOWING_EYES "glowing_eyes" #define TRAIT_ACUTE_SIGHT "acute_sight" #define TRAIT_ACUTE_HEARING "acute_hearing" -#define TRAIT_BRUISER +#define TRAIT_BRUISER "bruiser" +#define TRAIT_ENCHANTING_VOICE "enchanting_voice" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index fb962bbcd3d7..9d29d074493a 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -691,6 +691,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_DULLFANGS" = TRAIT_DULLFANGS, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD + "TRAIT_ENCHANTING_VOICE" = TRAIT_ENCHANTING_VOICE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_FEEDING_RESTRICTION" = TRAIT_FEEDING_RESTRICTION, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index ecccaff8def7..4bbe5e4229eb 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -381,6 +381,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_DULLFANGS" = TRAIT_DULLFANGS, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD + "TRAIT_ENCHANTING_VOICE" = TRAIT_ENCHANTING_VOICE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_FEEDING_RESTRICTION" = TRAIT_FEEDING_RESTRICTION, // DARKPACK EDIT ADD diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm index 9f1935c45bec..f8d48a217543 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/bruiser.dm @@ -3,7 +3,7 @@ name = "Bruiser" desc = {"Your appearance is sufficiently thug-like to inspire fear (or at least disquiet) in those who see you. While you're not necessarily ugly, you do radiate a quiet menace, to the point where people cross the street to avoid passing near you. -All Intimidation rolls against those who have not demonstrated their physical superiority to you are at -1 difficulty."} +You're at a -1 difficulty for intimidation rolls."} // Just give them a -1 diff overall, since finding who 'demonstrated' physical might would be really funky. icon = FA_ICON_BASEBALL_BAT_BALL value = 1 gain_text = span_notice("You feel menacing.") diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm new file mode 100644 index 000000000000..930f21e3abc0 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm @@ -0,0 +1,13 @@ +// VTM pg. 480 +/datum/quirk/darkpack/enchanting_voice + name = "Enchanting Voice" + desc = {"There is something about your voice that others cannot ignore. +When you command, they are cowed. When you seduce, they swoon. +Whether thundering, soothing, persuading, or simply talking, your voice commands attention. +The difficulties of all rolls involving the use of the voice to persuade, charm, or command are reduced by two."} + icon = FA_ICON_FACE_GRIN_HEARTS + value = 2 + gain_text = span_notice("Your voice sounds especially charming.") + lose_text = span_notice("You feel your voice hitch.") + failure_message = span_notice("You don't sound as good as you thought.") + mob_trait = TRAIT_ENCHANTING_VOICE diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 00428ef7aae1..c56159b175f4 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -120,6 +120,9 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 + if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) + theirpower -= 2 + if(STAT_INTIMIDATION in owner_stat) if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze theirpower -= 1 diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index e0399e2f638b..609acabecb4b 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -38,6 +38,9 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 + if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) + theirpower -= 2 + if(STAT_INTIMIDATION in owner_stat) if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze theirpower -= 1 diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index ab585befc22f..69cdc407a12d 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -133,6 +133,9 @@ if(HAS_TRAIT(user, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(bouncer)))// Kindred check just in case involved_social_roll += 1 // All social rolls are harder for us. + if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) + involved_social_roll -= 2 + if(STAT_INTIMIDATION in bypass_roll.applicable_stats) if(HAS_TRAIT(user, TRAIT_GLOWING_EYES) && (!get_kindred_splat(bouncer)))// Kindred check just in case involved_social_roll -= 1 // Easier intimidation against mortals. diff --git a/tgstation.dme b/tgstation.dme index b240a852ff51..49b8da5446fb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7410,6 +7410,7 @@ #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\bruiser.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\deceptive_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\enchanting_voice.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\fair_glabro.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\giovanni_sanguine_incongruity.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\metamorph.dm" From ba4324d5b8956cd6985d48e11821e358eb1c5c78 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Sun, 26 Apr 2026 21:45:53 -0400 Subject: [PATCH 13/20] Friendly Face --- .../~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../subsystem/processing/quirks.dm | 1 + .../code/positive_quirks/enchanting_voice.dm | 2 +- .../code/positive_quirks/friendly_face.dm | 22 +++++++++++++++++++ .../code/discipline/dominate/dominate.dm | 3 +++ .../code/discipline/presence/presence.dm | 3 +++ .../code/vip_barriers/__vip_barrier.dm | 2 +- tgstation.dme | 1 + 10 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index b89916ef17ef..73b92f94ce82 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -182,6 +182,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_ACUTE_SIGHT "acute_sight" #define TRAIT_ACUTE_HEARING "acute_hearing" #define TRAIT_BRUISER "bruiser" +#define TRAIT_FRIENDLY_FACE "friendly_face" #define TRAIT_ENCHANTING_VOICE "enchanting_voice" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 9d29d074493a..0544ccc148f3 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -699,6 +699,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FERA_RENOWN" = TRAIT_FERA_RENOWN, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FORCED_EMOTION" = TRAIT_FORCED_EMOTION, // DARKPACK EDIT ADD - Melpominee "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD + "TRAIT_FRIENDLY_FACE" = TRAIT_FRIENDLY_FACE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) "TRAIT_GLOWING_EYES" = TRAIT_GLOWING_EYES, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 4bbe5e4229eb..ffa8a868687e 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -388,6 +388,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_FERA_FUR" = TRAIT_FERA_FUR, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FERA_RENOWN" = TRAIT_FERA_RENOWN, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD + "TRAIT_FRIENDLY_FACE" = TRAIT_FRIENDLY_FACE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) "TRAIT_GLOWING_EYES" = TRAIT_GLOWING_EYES, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index bf617848e283..05315dd29f2f 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -30,6 +30,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/darkpack/weak_willed, /datum/quirk/darkpack/untamable), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/disfigured, /datum/quirk/darkpack/monstrous), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/permafangs, /datum/quirk/darkpack/dulled_bite), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/mute, /datum/quirk/darkpack/enchanting_voice), // DARKPACK EDIT ADD - MERITS/FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm index 930f21e3abc0..16e6d67ecd3c 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/enchanting_voice.dm @@ -5,7 +5,7 @@ When you command, they are cowed. When you seduce, they swoon. Whether thundering, soothing, persuading, or simply talking, your voice commands attention. The difficulties of all rolls involving the use of the voice to persuade, charm, or command are reduced by two."} - icon = FA_ICON_FACE_GRIN_HEARTS + icon = FA_ICON_MICROPHONE value = 2 gain_text = span_notice("Your voice sounds especially charming.") lose_text = span_notice("You feel your voice hitch.") diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm new file mode 100644 index 000000000000..4161704d4ef7 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm @@ -0,0 +1,22 @@ +// VTM pg. 480 +/datum/quirk/darkpack/friendly_face // Debate making this incompatible with disfigured? + name = "Friendly Face" + desc = {"You have a face that reminds everyone of someone, +to the point where strangers are inclined to be well inclined toward you because of it. +The effect doesn't fade even if you explain the “mistake,” +leaving you at -1 difficulty on all appropriate Social-based rolls +(yes for Seduction, no for Intimidation, for example)."} + icon = FA_ICON_FACE_GRIN_HEARTS + value = 1 + gain_text = span_notice("Your face seems familiar to others.") + lose_text = span_notice("You feel like others don't look at you the same way anymore.") + failure_message = span_notice("You feel like others don't look at you the same way anymore.") + mob_trait = TRAIT_FRIENDLY_FACE + + +/*You have a face that reminds everyone of someone, +to the point where strangers are inclined to be well +inclined toward you because of it. The effect doesn’t +fade even if you explain the “mistake,” leaving you at -1 difficulty on all appropriate Social-based rolls (yes +for Seduction, no for Intimidation, for example) when +a stranger is involved. This Merit only functions on a first meeting.*/ diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index c56159b175f4..2bdf13dd5bab 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -120,6 +120,9 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 + if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE)) + theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 609acabecb4b..c80ee7c8bceb 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -38,6 +38,9 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 + if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE)) + theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index 69cdc407a12d..84b2488823ab 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -133,7 +133,7 @@ if(HAS_TRAIT(user, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(bouncer)))// Kindred check just in case involved_social_roll += 1 // All social rolls are harder for us. - if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) + if(HAS_TRAIT(user, TRAIT_ENCHANTING_VOICE)) involved_social_roll -= 2 if(STAT_INTIMIDATION in bypass_roll.applicable_stats) diff --git a/tgstation.dme b/tgstation.dme index 49b8da5446fb..eb50f43bb622 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7412,6 +7412,7 @@ #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\enchanting_voice.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\fair_glabro.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\friendly_face.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\giovanni_sanguine_incongruity.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\metamorph.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\pale_aura.dm" From 3d99a4b4dcb1f85383aea2b441a31750e9ec646b Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Mon, 27 Apr 2026 18:55:42 -0400 Subject: [PATCH 14/20] god damn it (I try and fail to make this work and fix my oversight with quirk compatibility) I'm suffering (but I'll figure it out eventually), swapping gears for now. --- code/controllers/subsystem/processing/quirks.dm | 3 ++- .../code/negative_quirks/permanent_wound.dm | 2 +- .../powers/code/discipline/dominate/dominate.dm | 8 ++++---- .../powers/code/discipline/presence/presence.dm | 12 +++++++----- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 05315dd29f2f..938e97fad684 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -28,9 +28,10 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/empath, /datum/quirk/evil), list(/datum/quirk/keen_nose, /datum/quirk/item_quirk/anosmia), list(/datum/quirk/darkpack/weak_willed, /datum/quirk/darkpack/untamable), // DARKPACK EDIT ADD - MERITS/FLAWS - list(/datum/quirk/darkpack/disfigured, /datum/quirk/darkpack/monstrous), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/darkpack/disfigured, /datum/quirk/darkpack/monstrous, /datum/quirk/darkpack/friendly_face), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/permafangs, /datum/quirk/darkpack/dulled_bite), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/mute, /datum/quirk/darkpack/enchanting_voice), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/darkpack/dulled_bite, /datum/quirk/darkpack/infectious_bite), // DARKPACK EDIT ADD - MERITS/FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm index 5a72bf1c0f86..423e9e5db93d 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm @@ -2,7 +2,7 @@ /datum/quirk/darkpack/permanent_wound name = "Permanent Wound" desc = {"You suffered injuries during your Embrace which your transformation somehow failed to repair. -At the beginning of each night, you rise from sleep heavily wounded.."} +At the beginning of each night, you rise from sleep heavily wounded."} value = -3 gain_text = span_notice("An unhealed wound aches.") lose_text = span_notice("You can't feel the pain of your wound anymore.") diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 2bdf13dd5bab..392b1f16e269 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -120,17 +120,17 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 - if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE)) - theirpower -= 1 - if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 - if(STAT_INTIMIDATION in owner_stat) + if(STAT_INTIMIDATION in owner_stat) // TODO ACTUALLY MAKE THIs wORK if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze theirpower -= 1 if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 + else + if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE)) + theirpower -= 1 //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index c80ee7c8bceb..5a737a264849 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -29,7 +29,6 @@ //is the difficulty pre-defined? if not, its probably their willpower. var/theirpower = difficulty || target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - var/successes = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) @@ -38,17 +37,20 @@ if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 - if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE)) - theirpower -= 1 - if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 - if(STAT_INTIMIDATION in owner_stat) + if(STAT_INTIMIDATION in owner_stat) // TODO ACTUALLY MAKE THIs wORK + to_chat(owner, span_warning("Intimidation found")) if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze theirpower -= 1 if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 + else + if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE))// We can't intimidate them with this. + theirpower -= 1 + to_chat(owner, span_warning("Friendly face returns")) + //botch if(successes < 0) From 6f9a84d18b7f0507844997b4fa592302a326826e Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Tue, 28 Apr 2026 18:27:46 -0400 Subject: [PATCH 15/20] short and huge size --- .../~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../subsystem/processing/quirks.dm | 1 + .../modules/doors/code/vampdoor.dm | 2 ++ .../code/negative_quirks/short.dm | 30 ++++++++++++++++ .../code/positive_quirks/huge_size.dm | 36 +++++++++++++++++++ .../modules/weapons/code/projectiles.dm | 2 ++ tgstation.dme | 2 ++ 9 files changed, 76 insertions(+) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 73b92f94ce82..f31546d502df 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -184,5 +184,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_BRUISER "bruiser" #define TRAIT_FRIENDLY_FACE "friendly_face" #define TRAIT_ENCHANTING_VOICE "enchanting_voice" +#define TRAIT_HUGE_SIZE "huge_size" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 0544ccc148f3..f8c399a7963c 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -707,6 +707,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD "TRAIT_HOMOSEXUAL" = TRAIT_HOMOSEXUAL, // DARKPACK EDIT ADD "TRAIT_HORRIFIC_APPEARANCE" = TRAIT_HORRIFIC_APPEARANCE, // DARKPACK EDIT ADD - Cappadocian Quirk + "TRAIT_HUGE_SIZE" = TRAIT_HUGE_SIZE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_HUNGRY" = TRAIT_HUNGRY, // DARKPACK EDIT ADD "TRAIT_HUNTED" = TRAIT_HUNTED, // DARKPACK EDIT ADD "TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index ffa8a868687e..888dab1e5806 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -394,6 +394,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD "TRAIT_HOMOSEXUAL" = TRAIT_HOMOSEXUAL, // DARKPACK EDIT ADD + "TRAIT_HUGE_SIZE" = TRAIT_HUGE_SIZE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_HUNGRY" = TRAIT_HUNGRY, // DARKPACK EDIT ADD "TRAIT_HUNTED" = TRAIT_HUNTED, // DARKPACK EDIT ADD "TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 938e97fad684..f8e023b088ce 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -32,6 +32,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/darkpack/permafangs, /datum/quirk/darkpack/dulled_bite), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/mute, /datum/quirk/darkpack/enchanting_voice), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/dulled_bite, /datum/quirk/darkpack/infectious_bite), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/darkpack/short, /datum/quirk/darkpack/huge_size), // DARKPACK EDIT ADD - MERITS/FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_darkpack/modules/doors/code/vampdoor.dm b/modular_darkpack/modules/doors/code/vampdoor.dm index 6ea11036e7a5..e7aea126dca2 100644 --- a/modular_darkpack/modules/doors/code/vampdoor.dm +++ b/modular_darkpack/modules/doors/code/vampdoor.dm @@ -221,6 +221,8 @@ if(!bash_roll) bash_roll = new() bash_roll.difficulty = bash_difficulty + if(HAS_TRAIT(user, TRAIT_HUGE_SIZE)) // There's no numbers for this listed in the book, so we're making shit up. + bash_roll.difficulty -= 2 // A 6 diff bash becomes a 4 diff one here. bash_roll.successes_needed = bash_successes_needed var/roll = bash_roll.st_roll(user, src) switch(roll) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm new file mode 100644 index 000000000000..9c9c4cd53590 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm @@ -0,0 +1,30 @@ +// VTM pg. 481 +/datum/quirk/darkpack/short + name = "Short" + desc = {"You are well below average height. +You have difficulty reaching or manipulating objects designed for normal adult size, +and your running speed is one-half that of an average human."} + icon = FA_ICON_ARROW_DOWN + value = -1 + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE + gain_text = span_notice("You feel shorter than average.") + lose_text = span_notice("You don't feel so small now.") + failure_message = span_notice("You don't feel so small now.") + mob_trait = TRAIT_DWARF + +/*You are well below average height — four and a half feet (1.5 meters) tall or less. +You have difficulty reaching or manipulating objects designed for normal adult size, +and your running speed is one-half that of an average human.*/ + +/datum/movespeed_modifier/quirk_short + multiplicative_slowdown = 2 // TEsT + +/datum/quirk/darkpack/short/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + var/mob/living/carbon/human/human_holder = quirk_holder + human_holder.add_movespeed_modifier(/datum/movespeed_modifier/quirk_short) + +/datum/quirk/darkpack/short/remove() + . = ..() + var/mob/living/carbon/human/human_holder = quirk_holder + human_holder.remove_movespeed_modifier(/datum/movespeed_modifier/quirk_short) diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm new file mode 100644 index 000000000000..e69988904661 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm @@ -0,0 +1,36 @@ +// VTM pg. 480 +/datum/quirk/darkpack/huge_size + name = "Huge Size" + desc = {"You are abnormally large in size. +Aside from making you extremely noticeable in public, +you have a small amount of extra health, +and you may have an easier time breaking down doors or other physical feats."} + icon = FA_ICON_ARROW_UP + value = 4 // Debate on this, because it's likely not as useful as on tabletop rn + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE + gain_text = span_notice("People look up to you.") + lose_text = span_notice("You feel shorter.") + failure_message = span_notice("You feel shorter.") + mob_trait = TRAIT_HUGE_SIZE + +/datum/quirk/darkpack/huge_size/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + var/mob/living/carbon/human/human_holder = quirk_holder // TODO ADD HEALTH + human_holder.maxHealth += 30 + human_holder.health += 30 + ADD_TRAIT(human_holder, TRAIT_TOO_TALL, QUIRK_TRAIT) + +/datum/quirk/darkpack/huge_size/remove() + . = ..() + var/mob/living/carbon/human/human_holder = quirk_holder + human_holder.maxHealth -= 30 + human_holder.health = max(human_holder.health - 30, human_holder.maxHealth) + REMOVE_TRAIT(human_holder, TRAIT_TOO_TALL, QUIRK_TRAIT) + +/*You are abnormally large in size, at least 6’10” and +300 pounds in weight (well over two meters tall and +over 130 kgs). Aside from making you extremely no +ticeable in public, this extra mass bestows an addition +al Bruised health level. Characters with this Merit may +also gain bonuses to push objects, open barred doors, +avoid being knocked down, etc.*/ diff --git a/modular_darkpack/modules/weapons/code/projectiles.dm b/modular_darkpack/modules/weapons/code/projectiles.dm index 98860519c87d..c1bbf22c9db7 100644 --- a/modular_darkpack/modules/weapons/code/projectiles.dm +++ b/modular_darkpack/modules/weapons/code/projectiles.dm @@ -147,6 +147,8 @@ var/datum/storyteller_roll/knockdown_roll = new() knockdown_roll.applicable_stats = list(STAT_STRENGTH, STAT_DEXTERITY, STAT_ATHLETICS) knockdown_roll.difficulty = 3 + (!isnull(firer) ? rand(1,2) : 0) + if(HAS_TRAIT(target, TRAIT_HUGE_SIZE)) + knockdown_roll.difficulty -= 1 // Debate this, but we're harder to knock down. if(knockdown_roll.st_roll(target, firer ? firer : src) == ROLL_FAILURE) hit_person.Knockdown(20) to_chat(hit_person, span_danger("The force of a projectile sends you sprawling!")) diff --git a/tgstation.dme b/tgstation.dme index eb50f43bb622..11a730cb632e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7396,6 +7396,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_wound.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\short.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\slow_healing.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\smell_of_the_grave.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\territorial.dm" @@ -7414,6 +7415,7 @@ #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\fair_glabro.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\friendly_face.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\giovanni_sanguine_incongruity.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\huge_size.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\metamorph.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\pale_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\stillness_of_death.dm" From cb70fa05852f7c12cc29659c7c238c4f122bf04d Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Wed, 29 Apr 2026 06:33:33 -0400 Subject: [PATCH 16/20] Tic and catlike balance --- .../code/negative_quirks/disfigured.dm | 10 ++------- .../code/negative_quirks/glowing_eyes.dm | 11 +++++----- .../code/negative_quirks/nervous_tic.dm | 21 +++++++++++++++++++ .../code/negative_quirks/permanent_wound.dm | 2 +- .../code/positive_quirks/catlike_balance.dm | 17 +++++++++++++++ .../code/discipline/presence/presence.dm | 6 +++--- modular_darkpack/modules/walls/code/walls.dm | 2 ++ .../modules/weapons/code/projectiles.dm | 2 ++ tgstation.dme | 2 ++ 9 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/catlike_balance.dm diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm index 5b8bfad95996..0082b201e252 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -20,12 +20,6 @@ if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// Test after the stat mod pr is in -/datum/quirk/darkpack/disfigured/post_add() +/datum/quirk/darkpack/disfigured/remove() . = ..() - if(appearance_to_subtract > 0) - to_chat(quirk_holder, span_warning ("Your disfigurement takes a toll. Your appearance can't be raised above 2 dots!"))// Tell them why the dots are removed. - to_chat(quirk_holder, span_warning("Removed [appearance_to_subtract] appearance. Consider reallocating your stats!"))// Tell them how many dots we removed. - -/datum/quirk/darkpack/disfigured/remove_from_current_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) - . = ..() - new_holder.st_remove_stat_mod(STAT_APPEARANCE, "Disfigured") + quirk_holder.st_remove_stat_mod(STAT_APPEARANCE, "Disfigured") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm index d7173fc1bddf..0df8c027710c 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm @@ -25,10 +25,11 @@ dark.*/ /datum/quirk/darkpack/glowing_eyes/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) . = ..() - ADD_TRAIT(new_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) - ADD_TRAIT(new_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) -/datum/quirk/darkpack/glowing_eyes/remove_from_current_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/glowing_eyes/remove() . = ..() - REMOVE_TRAIT(new_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) - REMOVE_TRAIT(new_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) + . = ..() + REMOVE_TRAIT(quirk_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm new file mode 100644 index 000000000000..06639ca9f6a0 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm @@ -0,0 +1,21 @@ +// VTM pg. 481 +/datum/quirk/darkpack/nervous_tic + name = "Nervous Tic" + desc = {"You have some sort of repetitive motion that you +make in times of stress, and it's a dead giveaway as to +your identity. Examples include a nervous cough, con +stantly wringing your hands, cracking your knuckles, +and so on."} + icon = FA_ICON_FACE_ROLLING_EYES // Debate on icon? Might not be fitting enough, eh. + value = -1 + gain_text = span_notice("You feel an urge to do something self-soothing.") + lose_text = span_notice("You feel calmer.") + failure_message = span_notice("You feel calmer.") + //roleplay_only = TRUE // Relies on another PR being merged for this line, remove comment when it's merged + +/*You have some sort of repetitive motion that you +make in times of stress, and it’s a dead giveaway as to +your identity. Examples include a nervous cough, con +stantly wringing your hands, cracking your knuckles, +and so on. It costs one Willpower to refrain from en +gaging in your tic.*/ diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm index 423e9e5db93d..3d7446120782 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm @@ -14,7 +14,7 @@ At the beginning of each night, you rise from sleep heavily wounded."} At the beginning of each night, you rise from sleep at the Wounded health level, though this may be healed by spending blood points.*/ -/datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/permanent_wound/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) . = ..() var/mob/living/carbon/human/human_holder = new_holder human_holder.adjust_brute_loss(90, TRUE) diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/catlike_balance.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/catlike_balance.dm new file mode 100644 index 000000000000..b7f24a15ba1e --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/catlike_balance.dm @@ -0,0 +1,17 @@ +// VTM pg. 480 +/datum/quirk/darkpack/catlike_balance + name = "Catlike Balance" + desc = {"You possess an innately perfect sense of balance. +Characters with this Merit reduce difficulties of balance-related rolls by two."} // Climbing, resisting stuns, maybe? + icon = FA_ICON_PAW // Debate on icon? Might not be fitting enough, eh. + value = 1 + gain_text = span_notice("You feel well-balanced.") + lose_text = span_notice("You don't think you're as graceful as you once thought.") + failure_message = span_notice("You don't think you're as graceful as you once thought.") + mob_trait = TRAIT_CATLIKE_GRACE + +/*You possess an innately perfect sense of balance. +Characters with this Merit reduce difficulties of all bal +ance-related rolls (e.g., Dexterity + Athletics to walk +along a narrow ledge) by two.*/ + diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 5a737a264849..17327aa64847 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -29,7 +29,6 @@ //is the difficulty pre-defined? if not, its probably their willpower. var/theirpower = difficulty || target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - var/successes = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) theirpower += 2 @@ -41,7 +40,7 @@ theirpower -= 2 if(STAT_INTIMIDATION in owner_stat) // TODO ACTUALLY MAKE THIs wORK - to_chat(owner, span_warning("Intimidation found")) + to_chat(owner, span_warning("Intimidation found"))// Just for me to test if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze theirpower -= 1 if(HAS_TRAIT(owner, TRAIT_BRUISER)) @@ -49,8 +48,9 @@ else if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE))// We can't intimidate them with this. theirpower -= 1 - to_chat(owner, span_warning("Friendly face returns")) + to_chat(owner, span_warning("Friendly face returns")) // Just for testing, ignore. + var/successes = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) //botch if(successes < 0) diff --git a/modular_darkpack/modules/walls/code/walls.dm b/modular_darkpack/modules/walls/code/walls.dm index 7a2513495fe0..880ba79c0771 100644 --- a/modular_darkpack/modules/walls/code/walls.dm +++ b/modular_darkpack/modules/walls/code/walls.dm @@ -87,6 +87,8 @@ //(Botch, slip and take damage), (Fail, fail to climb), (Success, climb up successfully) var/datum/storyteller_roll/climbing/climb_roll = new() + if(HAS_TRAIT(user, TRAIT_CATLIKE_GRACE)) + climb_roll.difficulty -= 2 // Easier climbing var/roll = climb_roll.st_roll(user, src) switch(roll) if(ROLL_BOTCH) diff --git a/modular_darkpack/modules/weapons/code/projectiles.dm b/modular_darkpack/modules/weapons/code/projectiles.dm index c1bbf22c9db7..2a0b51267159 100644 --- a/modular_darkpack/modules/weapons/code/projectiles.dm +++ b/modular_darkpack/modules/weapons/code/projectiles.dm @@ -149,6 +149,8 @@ knockdown_roll.difficulty = 3 + (!isnull(firer) ? rand(1,2) : 0) if(HAS_TRAIT(target, TRAIT_HUGE_SIZE)) knockdown_roll.difficulty -= 1 // Debate this, but we're harder to knock down. + if(HAS_TRAIT(target, TRAIT_CATLIKE_GRACE)) + knockdown_roll.difficulty -= 1 // Debate this, we're well balanced so it's harder to knock us down. if(knockdown_roll.st_roll(target, firer ? firer : src) == ROLL_FAILURE) hit_person.Knockdown(20) to_chat(hit_person, span_danger("The force of a projectile sends you sprawling!")) diff --git a/tgstation.dme b/tgstation.dme index 11a730cb632e..e504b5eb9979 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7390,6 +7390,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\mage_blood.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\monstrous_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\mute.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\nervous_tic.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\one_armed.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\organovore.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_fangs.dm" @@ -7409,6 +7410,7 @@ #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\acute_sense.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\beserk.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\bruiser.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\catlike_balance.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\deceptive_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\enchanting_voice.dm" From 799b123805afc163af1d80d867cab4c7cd1bb2e1 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:47:21 -0400 Subject: [PATCH 17/20] I'm going to blow up (Open wound) This is not going well. surely there's a better way to handle the check for this, right? Also reworks acute sense - vision bc zooming out kind of of sucks --- .../~darkpack/traits/declarations.dm | 2 + code/_globalvars/traits/_traits.dm | 2 + code/_globalvars/traits/admin_tooling.dm | 2 + .../code/modules/mob/living/carbon/examine.dm | 13 ++-- .../code/negative_quirks/open_wound.dm | 72 +++++++++++++++++++ .../code/positive_quirks/acute_sense.dm | 12 ++-- .../powers/code/discipline/auspex/auspex.dm | 5 +- .../code/discipline/dominate/dominate.dm | 15 ++-- .../code/discipline/presence/presence.dm | 15 ++-- .../code/vip_barriers/__vip_barrier.dm | 10 +++ tgstation.dme | 1 + .../darkpack_merits_flaws_preferences.tsx | 5 ++ 12 files changed, 131 insertions(+), 23 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index f31546d502df..9360d08088cb 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -178,6 +178,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_LAME "lame" #define TRAIT_SLOW_HEALING "slow_healing" #define TRAIT_INFECTIOUS_BITE "infectious_bite" +#define TRAIT_OPEN_WOUND_FACE "open_wound_face" +#define TRAIT_OPEN_WOUND_CHEST "open_wound_chest" #define TRAIT_GLOWING_EYES "glowing_eyes" #define TRAIT_ACUTE_SIGHT "acute_sight" #define TRAIT_ACUTE_HEARING "acute_hearing" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index f8c399a7963c..27216448f3a9 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -732,6 +732,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD + "TRAIT_OPEN_WOUND_CHEST" = TRAIT_OPEN_WOUND_CHEST, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound + "TRAIT_OPEN_WOUND_FACE" = TRAIT_OPEN_WOUND_FACE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound "TRAIT_ORGANOVORE" = TRAIT_ORGANOVORE, // DARKPACK EDIT ADD - Nagaraja "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD "TRAIT_PALE_AURA" = TRAIT_PALE_AURA, // DARKPACK EDIT ADD - MERITS/FLAWS diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 888dab1e5806..67fdbbc3a2ca 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -418,6 +418,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD + "TRAIT_OPEN_WOUND_CHEST" = TRAIT_OPEN_WOUND_CHEST, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound + "TRAIT_OPEN_WOUND_FACE" = TRAIT_OPEN_WOUND_FACE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD "TRAIT_PALE_AURA" = TRAIT_PALE_AURA, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_PASS_THROUGH_WALLS" = TRAIT_PASS_THROUGH_WALLS, // DARKPACK EDIT ADD diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index f862927802a2..1aa7a7fb6acd 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -51,8 +51,11 @@ if(iszomboid(src) && !(obscured_slots & HIDEFACE)) // for necromancy player-controlled zombies . += span_danger("[p_They()] [p_are()] a decayed corpse!
") - if(HAS_TRAIT(src, TRAIT_SERPENTIS_SKIN) && !(HIDEJUMPSUIT)) // 'hidden by modest clothing' - . += span_danger("[p_They()] [p_are()] covered in... scales!?
") + if(!(obscured_slots & HIDEJUMPSUIT)) + if(HAS_TRAIT(src, TRAIT_SERPENTIS_SKIN)) // 'hidden by modest clothing' + . += span_danger("[p_They()] [p_are()] covered in... scales!?
") + if(HAS_TRAIT(src, TRAIT_OPEN_WOUND_CHEST)) + . += span_warning("Blood seeps from an open wound across [p_their()] chest.
") if(HAS_TRAIT(src, TRAIT_ANIMAL_MUSK)) . += span_warning("[p_They(TRUE)] smell[p_s()] weirdly animal like...
") @@ -60,8 +63,8 @@ if(HAS_TRAIT(src, TRAIT_GRAVE_SMELL)) . += span_warning("[p_They()] smell[p_s()] like moist soil.
") - if(HAS_TRAIT(src, TRAIT_GLOWING_EYES)) - if (!is_eyes_covered()) + if(!is_eyes_covered()) + if(HAS_TRAIT(src, TRAIT_GLOWING_EYES)) . += span_warning("[p_Their()] eyes glow unnaturally bright!
") if(!(obscured_slots & HIDEFACE)) @@ -87,3 +90,5 @@ var/mob/living/living_user = user if(living_user.is_clan(/datum/subsplat/vampire_clan/tremere)) . += span_bolddanger("[p_They()] [p_have()] a glowing 'T' on [p_their()] forehead - the Mark of a traitor to Clan Tremere!
") + if(HAS_TRAIT(src, TRAIT_OPEN_WOUND_FACE)) + . += span_warning("Blood seeps from an open wound across [p_their()] face.
") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm new file mode 100644 index 000000000000..247bcedbb5a1 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm @@ -0,0 +1,72 @@ +// VTM pg. 482 +/datum/quirk/darkpack/open_wound + name = "Open Wound" + desc = {"You have one or more wounds that refuse to heal, and which constantly drip blood. +This slow leakage costs you an extra blood point per evening, +in addition to drawing attention to you. +If the wound is visible, you are at + 1 difficulty for all Social-based rolls."} + value = -2 // If we decide to use the 4 point flaw version, make incompatible with permanent wound. + gain_text = span_notice("An unhealed wound bleeds.") + lose_text = span_notice("Old wounds heal.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_BANDAGE + failure_message = "Old wounds heal." + var/wound_location + +/*You have one or more wounds that refuse to heal, +and which constantly drip blood. This slow leakage +costs you an extra blood point per evening (marked off +just before dawn), in addition to drawing attention to +you. If the wound is visible, you are at + 1 difficulty for +all Social-based rolls. For two points, the Flaw is simply +unsightly and has the basic effect mentioned above; for +four points the seeping wound is serious or disfiguring +and includes the effects of the Flaw Permanent Wound +(below).*/ + + +/datum/quirk_constant_data/open_wound + associated_typepath = /datum/quirk/darkpack/open_wound + customization_options = list(/datum/preference/choiced/wound_location) + +/datum/preference/choiced/wound_location + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "wound_location" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/wound_location/init_possible_values() + return list("face", "chest") // I'm tired, so just two options for now. + +/datum/preference/choiced/wound_location/create_default_value() + return "face" + +/datum/preference/choiced/wound_location/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return /datum/quirk/darkpack/open_wound::name in preferences.all_quirks + +/datum/preference/choiced/wound_location/apply_to_human(mob/living/carbon/human/target, value) + return + +/datum/quirk/darkpack/open_wound/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + wound_location = client_source?.prefs.read_preference(/datum/preference/choiced/wound_location) + var/mob/living/carbon/human/human_holder = new_holder + human_holder.bloodpool -= 1 // Take 1 BP away. + switch(wound_location) // Better cover up. + if("face") + ADD_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_FACE, QUIRK_TRAIT) + if("chest") + ADD_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_CHEST, QUIRK_TRAIT) + +/datum/quirk/darkpack/open_wound/remove(client/client_source) + . = ..() + wound_location = client_source?.prefs.read_preference(/datum/preference/choiced/wound_location) + switch(wound_location) + if("face") + REMOVE_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_FACE, QUIRK_TRAIT) + if("chest") + REMOVE_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_CHEST, QUIRK_TRAIT) + diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm index 05a3a53ca9de..ab2372522183 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm @@ -50,8 +50,7 @@ acuity.*/ if("smell") // Debate adding a check for TRAIT_ANOSMIA, but we don't currently have it selectable ADD_TRAIT(new_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) if("sight") // Debate adding a check, but like hearing, you can't use the benefits while blind really - ADD_TRAIT(new_holder, TRAIT_ACUTE_SIGHT, QUIRK_TRAIT) - quirk_holder.client?.view_size?.setTo(1) + ADD_TRAIT(new_holder, TRAIT_NIGHT_VISION, QUIRK_TRAIT) // Fuck it, zooming out is ugly, so weak night vision seems a little better var/obj/item/organ/eyes/sensitive_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) if(sensitive_eyes) sensitive_eyes.flash_protect = max(sensitive_eyes.flash_protect += -1, FLASH_PROTECTION_SENSITIVE) @@ -68,14 +67,13 @@ acuity.*/ var/obj/item/organ/ears/sensitive_ears = quirk_holder.get_organ_slot(ORGAN_SLOT_EARS) sensitive_ears.damage_multiplier = sensitive_ears.damage_multiplier - 1 if("smell") - REMOVE_TRAIT(new_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) if("sight") - REMOVE_TRAIT(new_holder, TRAIT_ACUTE_SIGHT, QUIRK_TRAIT) - quirk_holder.client?.view_size?.resetToDefault() // Check this doesn't fuck auspex up, but it should be fine. + REMOVE_TRAIT(quirk_holder, TRAIT_NIGHT_VISION, QUIRK_TRAIT) var/obj/item/organ/eyes/sensitive_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) if(sensitive_eyes) sensitive_eyes.flash_protect = max(sensitive_eyes.flash_protect += 1, FLASH_PROTECTION_NONE) if("taste") - REMOVE_TRAIT(new_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) if("touch") - REMOVE_TRAIT(new_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) diff --git a/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm b/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm index 9f9d85783aab..6359f6aa3f81 100644 --- a/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm +++ b/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm @@ -79,10 +79,7 @@ var/obj/item/organ/ears/kindred_ears = owner.get_organ_slot(ORGAN_SLOT_EARS) kindred_ears.damage_multiplier = initial(kindred_ears.damage_multiplier) // Vision - if(HAS_TRAIT(owner, TRAIT_ACUTE_SIGHT)) - owner.client?.view_size?.setTo(1) // Using auspex shouldn't nuke our benefit from acute sense this way. - else - owner.client?.view_size?.resetToDefault() // Just reset if we lack the trait + owner.client?.view_size?.resetToDefault() // Just reset if we lack the trait REMOVE_TRAIT(owner, TRAIT_REFLECTIVE_EYES, DISCIPLINE_TRAIT(type)) var/obj/item/organ/eyes/kindred_eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) if(kindred_eyes) diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 392b1f16e269..6a35efc4fc18 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -114,7 +114,7 @@ if(HAS_TRAIT(target, TRAIT_WEAK_WILLED)) theirpower -= 2 - if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) + if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE) && !(owner.obscured_slots & HIDEFACE)) theirpower += 2 if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. @@ -123,15 +123,22 @@ if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 - if(STAT_INTIMIDATION in owner_stat) // TODO ACTUALLY MAKE THIs wORK - if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze + if(discipline.current_power.name == "Possession" || discipline.current_power.name == "Command") // TODO ACTUALLY MAKE THIs wORK + if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)) && !(owner.obscured_slots & HIDEEYES)) theirpower -= 1 if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 else - if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE)) + if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE) && !(owner.obscured_slots & HIDEFACE)) theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE) && !(owner.obscured_slots & HIDEFACE)) + theirpower += 1 + to_chat(owner, span_warning("test worked")) + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_CHEST) && !(owner.obscured_slots & HIDEJUMPSUIT)) + theirpower += 1 + to_chat(owner, span_warning("test 5 worked")) + //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 var/mob/living/carbon/human/human_target = target diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 17327aa64847..8b551a1b2c20 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -30,7 +30,7 @@ //is the difficulty pre-defined? if not, its probably their willpower. var/theirpower = difficulty || target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) + if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE) && !(owner.obscured_slots & HIDEFACE)) theirpower += 2 if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. @@ -39,14 +39,21 @@ if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 - if(STAT_INTIMIDATION in owner_stat) // TODO ACTUALLY MAKE THIs wORK + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE) && !(owner.obscured_slots & HIDEFACE)) + theirpower += 1 + to_chat(owner, span_warning("test worked")) + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_CHEST) && !(owner.obscured_slots & HIDEJUMPSUIT)) + theirpower += 1 + to_chat(owner, span_warning("test 5 worked")) + + if(discipline.current_power.name == "Dread Gaze") // TODO ACTUALLY MAKE THIs wORK to_chat(owner, span_warning("Intimidation found"))// Just for me to test - if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)))// Make sure this only affects dread gaze + if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)) && !(owner.obscured_slots & HIDEEYES))// Make sure this only affects dread gaze theirpower -= 1 if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 else - if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE))// We can't intimidate them with this. + if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE) && !(owner.obscured_slots & HIDEFACE))// We can't intimidate them with this. theirpower -= 1 to_chat(owner, span_warning("Friendly face returns")) // Just for testing, ignore. diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index 84b2488823ab..ccd4b4a999d3 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -136,11 +136,21 @@ if(HAS_TRAIT(user, TRAIT_ENCHANTING_VOICE)) involved_social_roll -= 2 + if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_FACE) && !(user.obscured_slots & HIDEFACE)) + involved_social_roll += 1 + to_chat(user, span_warning("test worked")) + if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_CHEST) && !(user.obscured_slots & HIDEJUMPSUIT)) + involved_social_roll += 1 + to_chat(user, span_warning("test 5 worked")) + if(STAT_INTIMIDATION in bypass_roll.applicable_stats) if(HAS_TRAIT(user, TRAIT_GLOWING_EYES) && (!get_kindred_splat(bouncer)))// Kindred check just in case involved_social_roll -= 1 // Easier intimidation against mortals. if(HAS_TRAIT(user, TRAIT_BRUISER)) involved_social_roll -= 1 + else + if(HAS_TRAIT(user, TRAIT_FRIENDLY_FACE)) + involved_social_roll -= 1 // Can't be used for intimidation, easier diff otherwise var/verbage bypass_roll.difficulty = involved_social_roll diff --git a/tgstation.dme b/tgstation.dme index e504b5eb9979..db15ad4452b9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7392,6 +7392,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\mute.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\nervous_tic.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\one_armed.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\open_wound.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\organovore.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_fangs.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_wound.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx index d9edd1466156..b6f28fbdff91 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx @@ -28,3 +28,8 @@ export const acute_sense: FeatureChoiced = { name: 'Acute Sense', component: FeatureDropdownInput, }; + +export const wound_location: FeatureChoiced = { + name: 'Wound Location', + component: FeatureDropdownInput, +}; From 317b7902064706e843274ffb87220dfd3bb69123 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Wed, 29 Apr 2026 23:23:26 -0400 Subject: [PATCH 18/20] Eyes of shadow --- .../~darkpack/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../code/modules/mob/living/carbon/examine.dm | 2 ++ .../code/positive_quirks/eyes_of_shadow.dm | 19 +++++++++++++++ .../code/discipline/dominate/dominate.dm | 23 +++++++++++-------- .../code/discipline/presence/presence.dm | 13 +++++------ .../code/vip_barriers/__vip_barrier.dm | 19 +++++++++------ tgstation.dme | 1 + 9 files changed, 56 insertions(+), 24 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 9360d08088cb..9d8eeba019de 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -187,5 +187,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FRIENDLY_FACE "friendly_face" #define TRAIT_ENCHANTING_VOICE "enchanting_voice" #define TRAIT_HUGE_SIZE "huge_size" +#define TRAIT_EYES_OF_SHADOW "eyes_of_shadow" // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 27216448f3a9..892a1b607325 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -693,6 +693,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD "TRAIT_ENCHANTING_VOICE" = TRAIT_ENCHANTING_VOICE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD + "TRAIT_EYES_OF_SHADOW" = TRAIT_EYES_OF_SHADOW, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_FEEDING_RESTRICTION" = TRAIT_FEEDING_RESTRICTION, // DARKPACK EDIT ADD "TRAIT_FERA_FUR" = TRAIT_FERA_FUR, // DARKPACK EDIT ADD - WEREWOLF diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 67fdbbc3a2ca..5c3bbb88d944 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -383,6 +383,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD "TRAIT_ENCHANTING_VOICE" = TRAIT_ENCHANTING_VOICE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD + "TRAIT_EYES_OF_SHADOW" = TRAIT_EYES_OF_SHADOW, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Merit "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_FEEDING_RESTRICTION" = TRAIT_FEEDING_RESTRICTION, // DARKPACK EDIT ADD "TRAIT_FERA_FUR" = TRAIT_FERA_FUR, // DARKPACK EDIT ADD - WEREWOLF diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index 1aa7a7fb6acd..4e31c8687f3a 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -66,6 +66,8 @@ if(!is_eyes_covered()) if(HAS_TRAIT(src, TRAIT_GLOWING_EYES)) . += span_warning("[p_Their()] eyes glow unnaturally bright!
") + if(HAS_TRAIT(src, TRAIT_EYES_OF_SHADOW)) + . += span_warning("[p_Their()] eyes are oddly dark. Something about them feels outright uncanny.
") if(!(obscured_slots & HIDEFACE)) switch(st_get_stat(STAT_APPEARANCE)) diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm new file mode 100644 index 000000000000..4451545a42e9 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm @@ -0,0 +1,19 @@ +// Lore of the Clans pg. 121 +/datum/quirk/darkpack/eyes_of_shadow + name = "Eyes of Shadow" + desc = {"There is something about your eyes that makes you +look dark and dangerous. Making eye contact with you +is like staring into the Abyss. It may not be obvious why, +but anyone you talk to gets a chill when they meet your +gaze. The difficulty for any Intimidation roll is reduced by 2."} // since this is a 2 point merit, reduce diffs by 2. + value = 2 // If this is changed, change desc and all roll diff changes accordingly. + icon = FA_ICON_EYE_LOW_VISION + allowed_splats = list(SPLAT_KINDRED) + included_clans = list(VAMPIRE_CLAN_LASOMBRA) + mob_trait = TRAIT_EYES_OF_SHADOW +/*There is something about your eyes that makes you +look dark and dangerous. Making eye contact with you +is like staring into the Abyss. It may not be obvious why, +but anyone you talk to gets a chill when they meet your +gaze. The difficulty for any Intimidation roll is reduced by +the number of points in this Merit (to a minimum of 2).*/ diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 6a35efc4fc18..e1a23a13f48a 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -105,7 +105,6 @@ return TRUE var/theirpower = target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - var/mypower = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) //tremere have built-in safeguards to easily dominate their stone servitors if(HAS_TRAIT(target, TRAIT_WEAK_TO_DOMINATE)) @@ -114,8 +113,11 @@ if(HAS_TRAIT(target, TRAIT_WEAK_WILLED)) theirpower -= 2 - if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE) && !(owner.obscured_slots & HIDEFACE)) - theirpower += 2 + if(!(owner.obscured_slots & HIDEFACE)) + if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) + theirpower += 2 + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE)) + theirpower += 1 if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 @@ -123,21 +125,20 @@ if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 - if(discipline.current_power.name == "Possession" || discipline.current_power.name == "Command") // TODO ACTUALLY MAKE THIs wORK - if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)) && !(owner.obscured_slots & HIDEEYES)) - theirpower -= 1 + if(discipline.current_power.name == "Possession" || discipline.current_power.name == "Command") if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 + if(!owner.is_eyes_covered()) + if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target))) + theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_EYES_OF_SHADOW)) + theirpower -= 1 else if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE) && !(owner.obscured_slots & HIDEFACE)) theirpower -= 1 - if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE) && !(owner.obscured_slots & HIDEFACE)) - theirpower += 1 - to_chat(owner, span_warning("test worked")) if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_CHEST) && !(owner.obscured_slots & HIDEJUMPSUIT)) theirpower += 1 - to_chat(owner, span_warning("test 5 worked")) //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 @@ -155,6 +156,8 @@ if(target.conditioner?.resolve()) theirpower += 3 + var/mypower = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) + //i've botched so now this person is immune to dominate for the rest of the round if(mypower < 0) LAZYADD(parent_disc.botched_targets, WEAKREF(target)) diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 8b551a1b2c20..c1f45a5b8a5a 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -41,21 +41,20 @@ if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE) && !(owner.obscured_slots & HIDEFACE)) theirpower += 1 - to_chat(owner, span_warning("test worked")) if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_CHEST) && !(owner.obscured_slots & HIDEJUMPSUIT)) theirpower += 1 - to_chat(owner, span_warning("test 5 worked")) - if(discipline.current_power.name == "Dread Gaze") // TODO ACTUALLY MAKE THIs wORK - to_chat(owner, span_warning("Intimidation found"))// Just for me to test - if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target)) && !(owner.obscured_slots & HIDEEYES))// Make sure this only affects dread gaze - theirpower -= 1 + if(discipline.current_power.name == "Dread Gaze") if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 + if(!owner.is_eyes_covered()) + if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target))) + theirpower -= 1 + if(HAS_TRAIT(owner, TRAIT_EYES_OF_SHADOW)) + theirpower -= 1 else if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE) && !(owner.obscured_slots & HIDEFACE))// We can't intimidate them with this. theirpower -= 1 - to_chat(owner, span_warning("Friendly face returns")) // Just for testing, ignore. var/successes = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index ccd4b4a999d3..7bbba9d2f601 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -136,20 +136,25 @@ if(HAS_TRAIT(user, TRAIT_ENCHANTING_VOICE)) involved_social_roll -= 2 - if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_FACE) && !(user.obscured_slots & HIDEFACE)) - involved_social_roll += 1 - to_chat(user, span_warning("test worked")) + if(!(user.obscured_slots & HIDEFACE)) + if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_FACE)) + involved_social_roll += 1 + if(HAS_TRAIT(user, TRAIT_DISFIGURED_APPEARANCE)) + involved_social_roll += 2 + if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_CHEST) && !(user.obscured_slots & HIDEJUMPSUIT)) involved_social_roll += 1 - to_chat(user, span_warning("test 5 worked")) if(STAT_INTIMIDATION in bypass_roll.applicable_stats) - if(HAS_TRAIT(user, TRAIT_GLOWING_EYES) && (!get_kindred_splat(bouncer)))// Kindred check just in case - involved_social_roll -= 1 // Easier intimidation against mortals. + if(!user.is_eyes_covered()) + if(HAS_TRAIT(user, TRAIT_GLOWING_EYES) && (!get_kindred_splat(bouncer)))// Kindred check just in case + involved_social_roll -= 1 // Easier intimidation against mortals. + if(HAS_TRAIT(user, TRAIT_EYES_OF_SHADOW)) + involved_social_roll -= 1 if(HAS_TRAIT(user, TRAIT_BRUISER)) involved_social_roll -= 1 else - if(HAS_TRAIT(user, TRAIT_FRIENDLY_FACE)) + if(HAS_TRAIT(user, TRAIT_FRIENDLY_FACE) && !!(user.obscured_slots & HIDEFACE))// Gotta see the friendly face. involved_social_roll -= 1 // Can't be used for intimidation, easier diff otherwise var/verbage diff --git a/tgstation.dme b/tgstation.dme index db15ad4452b9..504f46b2fc17 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7415,6 +7415,7 @@ #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\deceptive_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\enchanting_voice.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\eyes_of_shadow.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\fair_glabro.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\friendly_face.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\giovanni_sanguine_incongruity.dm" From 4f1489cf3fdb3e14b3075065f5769b5ade26bee1 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Thu, 30 Apr 2026 01:02:22 -0400 Subject: [PATCH 19/20] hemophilia and seizures --- .../~darkpack/traits/declarations.dm | 2 - .../subsystem/processing/quirks.dm | 1 + .../code/negative_quirks/hemophilliac.dm | 32 +++++++++++ .../code/negative_quirks/seizures.dm | 55 +++++++++++++++++++ tgstation.dme | 4 +- 5 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm create mode 100644 modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 783cdfec3b40..5ee83088faa5 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -174,7 +174,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_METAMORPH "metamorph" #define TRAIT_MERIT_UNTAMABLE "merit_untamable" #define TRAIT_FAIR_GLABRO "fair_glabro" -#define TRAIT_NO_CUFF "no_cuff" //Used for uncuffable forms such as Tenebrous and Blood form. #define TRAIT_EAT_FOOD "eat_food" #define TRAIT_DISFIGURED_APPEARANCE "disfigured_appearance" #define TRAIT_GRAVE_SMELL "grave_smell" @@ -192,5 +191,4 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_HUGE_SIZE "huge_size" #define TRAIT_EYES_OF_SHADOW "eyes_of_shadow" - // END TRAIT DEFINES diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index f8e023b088ce..d5aa6bc4a342 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -33,6 +33,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/mute, /datum/quirk/darkpack/enchanting_voice), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/dulled_bite, /datum/quirk/darkpack/infectious_bite), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/short, /datum/quirk/darkpack/huge_size), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/darkpack/eyes_of_shadow, /datum/quirk/darkpack/glowing_eyes), // DARKPACK EDIT ADD - MERITS/FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm new file mode 100644 index 000000000000..86606c4c6d5a --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm @@ -0,0 +1,32 @@ +// VTM Ghouls and Revenants pg. 136 +/datum/quirk/darkpack/hemophiliac + name = "Hemophiliac" + desc = {"Your character suffers from hemophilia. +If your skin is cut, you will not stop bleeding without medical assistance."} + icon = FA_ICON_DROPLET + value = -3 + gain_text = span_notice("You feel like bleeding is a lot more dangerous.") + lose_text = span_notice("You feel like bleeding's a lot safer now. Whew!") + failure_message = span_notice("You feel like bleeding's a lot safer now. Whew!") + mob_trait = TRAIT_BLOOD_FOUNTAIN // Worse bleeding when they do bleed. + forbidden_splats = list(SPLAT_KINDRED, SPLAT_SHIFTERS) // Kinfolk, humans, and ghouls can take this. Debate adding Garou/Corax to it? + +/*Your character suffers from hemophilia. If your ghoul’s +skin is cut, you will not stop bleeding without medical +assistance. The Blood does not have any effect on a ghoul +or revenant Hemophiliac. +If your character suffers lethal or aggravated damage, +he suffers an additional level of bashing damage every +five minutes until his wound has been dressed to stop +the bleeding. Any vampire who bites a Hemophiliac may +“dress” such wounds. By licking the injury after biting the +ghoul, the vampire will put a stop to any future bashing +damage.*/ + +/datum/quirk/darkpack/hemophiliac/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + . = ..() + ADD_TRAIT(quirk_holder, TRAIT_EASYBLEED , QUIRK_TRAIT) // Easier to make bleed + +/datum/quirk/darkpack/hemophiliac/remove() + . = ..() + REMOVE_TRAIT(quirk_holder, TRAIT_EASYBLEED , QUIRK_TRAIT) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm new file mode 100644 index 000000000000..f8bc3d5a002c --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm @@ -0,0 +1,55 @@ +// VTM Ghouls and Revenants pg. 136-137 +/datum/quirk/darkpack/seizures + name = "Seizures" + desc = {"Your character suffers from seizures, most commonly triggered by stress. +Though many types of seizures can be controlled, some people refuse or are unable to be treated for oen reason or another."} + icon = FA_ICON_FACE_DIZZY + value = -3 // Debate on this cost. Might be too high bc it's not as bad as tabletop? + gain_text = span_notice("You feel dizzy.") + lose_text = span_notice("The dizziness fades.") + failure_message = span_notice("The dizziness fades.") + +/*Seizures tend to occur during moments of duress, and +few mortals have a more stressful or terrifying existence +than ghouls. The affliction of the Seizures Flaw can also +be more pronounced in revenant families whose members +suffer from a limited genetic pool. Many types of seizures +can be controlled or mitigated with medication following +thorough medical tests or examinations. However, some +ghouls and revenants aren’t willing to risk their lives by +seeking the advice of a doctor, and these Seizures are often +not related to a diagnosed illness. This Flaw is a side effect +of the many horrors ghouls and revenants witness over +the course of their lives. + +Seizures can potentially be disastrous, especially if they +occur in the presence of a vampire or at an inopportune +moment. Under any stressful circumstances related to +combat, physical or verbal threats, or witnessing a terrifying, +bloody sight the character with this Flaw will need to make +a Frenzy roll. A success means a seizure was not triggered, +and you’ve managed to regain control. + +Failure indicates your body was not able to cope with +the stress and something has happened. If you roll a +critical failure, your character suffers a full-blown grand +mal seizure. You will have fallen to the ground and will +thrash uncontrollably for a number of minutes equal to +the number of 1s rolled on the Frenzy check. Your actions +may wind up getting yourself, or others, hurt as your finger +might accidentally pull the trigger, or you may slip and +fall. A less than critical failure may likely result in your +character blacking out until the next round. Depending +on the needs of your story, your ghoul may pass out and +drop to the ground, your vision might turn black for a +few seconds, or your arm might tremble and you cannot +regain control*/ + +/datum/quirk/darkpack/seizures/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) + var/mob/living/carbon/human/human_holder = new_holder + human_holder.dna.add_mutation(/datum/mutation/epilepsy, MUTATION_SOURCE_ACTIVATED) + +/datum/quirk/darkpack/seizures/remove(mob/living/new_holder) + . = ..() + var/mob/living/carbon/human/human_holder = new_holder + human_holder.dna.remove_mutation(/datum/mutation/epilepsy, MUTATION_SOURCE_ACTIVATED) diff --git a/tgstation.dme b/tgstation.dme index 24b6b6f3e826..223d2055f53c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7383,6 +7383,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\dulled_bite.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\glowing_eyes.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\hemophilliac.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\illiterate.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\infectious_bite.dm" @@ -7398,6 +7399,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\permanent_wound.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\seizures.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\short.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\slow_healing.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\smell_of_the_grave.dm" @@ -7410,9 +7412,9 @@ #include "modular_darkpack\modules\merits_flaws\code\neutral_quirks\illegal_identity.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\acute_sense.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\beserk.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\blush_of_health_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\bruiser.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\catlike_balance.dm" -#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\blush_of_health_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\deceptive_aura.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\eat_food_quirk.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\efficient_digestion.dm" From fd17db239832cdad7d79f5f4e5a5976cce6cc6a4 Mon Sep 17 00:00:00 2001 From: Icarus-The-Sun <119832971+Icarus-The-Sun@users.noreply.github.com> Date: Mon, 4 May 2026 14:06:48 -0400 Subject: [PATCH 20/20] I explode (fixes) pt 1 --- .../~darkpack/traits/declarations.dm | 3 +- code/_globalvars/traits/_traits.dm | 3 +- code/_globalvars/traits/admin_tooling.dm | 3 +- .../subsystem/processing/quirks.dm | 1 + .../code/modules/mob/living/carbon/examine.dm | 7 +- .../modules/billiards/code/billiard.dm | 2 +- .../code/negative_quirks/disfigured.dm | 15 ++-- .../code/negative_quirks/glowing_eyes.dm | 3 +- .../code/negative_quirks/hemophilliac.dm | 2 +- .../code/negative_quirks/nervous_tic.dm | 2 +- .../code/negative_quirks/open_wound.dm | 59 +++----------- .../code/negative_quirks/permanent_wound.dm | 6 +- .../code/negative_quirks/seizures.dm | 15 ++-- .../code/negative_quirks/short.dm | 12 ++- .../code/positive_quirks/acute_sense.dm | 80 ++++++++++--------- .../code/positive_quirks/eyes_of_shadow.dm | 1 + .../code/positive_quirks/friendly_face.dm | 1 - .../code/positive_quirks/huge_size.dm | 27 ++++--- .../code/discipline/dominate/dominate.dm | 10 ++- .../code/discipline/presence/presence.dm | 19 +++-- .../code/vip_barriers/__vip_barrier.dm | 10 ++- .../darkpack_merits_flaws_preferences.tsx | 5 -- 22 files changed, 138 insertions(+), 148 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 5ee83088faa5..7ff7f470e9b9 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -180,8 +180,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_LAME "lame" #define TRAIT_SLOW_HEALING "slow_healing" #define TRAIT_INFECTIOUS_BITE "infectious_bite" -#define TRAIT_OPEN_WOUND_FACE "open_wound_face" -#define TRAIT_OPEN_WOUND_CHEST "open_wound_chest" +#define TRAIT_OPEN_WOUND "open_wound" #define TRAIT_GLOWING_EYES "glowing_eyes" #define TRAIT_ACUTE_SIGHT "acute_sight" #define TRAIT_ACUTE_HEARING "acute_hearing" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 03719836881d..2a09cb0bcc50 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -734,8 +734,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD - "TRAIT_OPEN_WOUND_CHEST" = TRAIT_OPEN_WOUND_CHEST, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound - "TRAIT_OPEN_WOUND_FACE" = TRAIT_OPEN_WOUND_FACE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound + "TRAIT_OPEN_WOUND" = TRAIT_OPEN_WOUND, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_ORGANOVORE" = TRAIT_ORGANOVORE, // DARKPACK EDIT ADD - Nagaraja "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD "TRAIT_PALE_AURA" = TRAIT_PALE_AURA, // DARKPACK EDIT ADD - MERITS/FLAWS diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 5c3bbb88d944..95e4009a4518 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -419,8 +419,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD - "TRAIT_OPEN_WOUND_CHEST" = TRAIT_OPEN_WOUND_CHEST, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound - "TRAIT_OPEN_WOUND_FACE" = TRAIT_OPEN_WOUND_FACE, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw - Open Wound + "TRAIT_OPEN_WOUND" = TRAIT_OPEN_WOUND, // DARKPACK EDIT ADD - MERITS/FLAWS - Physical Flaw "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD "TRAIT_PALE_AURA" = TRAIT_PALE_AURA, // DARKPACK EDIT ADD - MERITS/FLAWS "TRAIT_PASS_THROUGH_WALLS" = TRAIT_PASS_THROUGH_WALLS, // DARKPACK EDIT ADD diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index d5aa6bc4a342..f6ebd8c97363 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -34,6 +34,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/darkpack/dulled_bite, /datum/quirk/darkpack/infectious_bite), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/short, /datum/quirk/darkpack/huge_size), // DARKPACK EDIT ADD - MERITS/FLAWS list(/datum/quirk/darkpack/eyes_of_shadow, /datum/quirk/darkpack/glowing_eyes), // DARKPACK EDIT ADD - MERITS/FLAWS + list(/datum/quirk/darkpack/bruiser, /datum/quirk/darkpack/friendly_face), // DARKPACK EDIT ADD - MERITS/FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index 4e31c8687f3a..ebe980c25b03 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -54,8 +54,6 @@ if(!(obscured_slots & HIDEJUMPSUIT)) if(HAS_TRAIT(src, TRAIT_SERPENTIS_SKIN)) // 'hidden by modest clothing' . += span_danger("[p_They()] [p_are()] covered in... scales!?
") - if(HAS_TRAIT(src, TRAIT_OPEN_WOUND_CHEST)) - . += span_warning("Blood seeps from an open wound across [p_their()] chest.
") if(HAS_TRAIT(src, TRAIT_ANIMAL_MUSK)) . += span_warning("[p_They(TRUE)] smell[p_s()] weirdly animal like...
") @@ -63,6 +61,9 @@ if(HAS_TRAIT(src, TRAIT_GRAVE_SMELL)) . += span_warning("[p_They()] smell[p_s()] like moist soil.
") + if(HAS_TRAIT(src, TRAIT_OPEN_WOUND) && (!(src.w_uniform))) // Easier to hide than scales-just wear a jumpsuit. + . += span_warning("They appear to have an open wound, blood slowly seeping from it.
") + if(!is_eyes_covered()) if(HAS_TRAIT(src, TRAIT_GLOWING_EYES)) . += span_warning("[p_Their()] eyes glow unnaturally bright!
") @@ -92,5 +93,3 @@ var/mob/living/living_user = user if(living_user.is_clan(/datum/subsplat/vampire_clan/tremere)) . += span_bolddanger("[p_They()] [p_have()] a glowing 'T' on [p_their()] forehead - the Mark of a traitor to Clan Tremere!
") - if(HAS_TRAIT(src, TRAIT_OPEN_WOUND_FACE)) - . += span_warning("Blood seeps from an open wound across [p_their()] face.
") diff --git a/modular_darkpack/modules/billiards/code/billiard.dm b/modular_darkpack/modules/billiards/code/billiard.dm index bbb65df10ce2..d1ff617d372f 100644 --- a/modular_darkpack/modules/billiards/code/billiard.dm +++ b/modular_darkpack/modules/billiards/code/billiard.dm @@ -149,7 +149,7 @@ if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) amount_to_hit_roll.difficulty += 1 - if(HAS_TRAIT(user, TRAIT_GLOWING_EYES)) + if(HAS_TRAIT(user, TRAIT_ACUTE_SIGHT)) amount_to_hit_roll.difficulty -= 2 var/amount_to_hit_result = amount_to_hit_roll.st_roll(user, src) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm index 0082b201e252..d3bab5e1accd 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -13,13 +13,18 @@ excluded_clans = list(VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_HARBINGER) var/appearance_to_subtract -/datum/quirk/darkpack/disfigured/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/disfigured/add(client/client_source) . = ..() - var/mob/living/carbon/human/human_holder = new_holder - appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 //5-2=3 dots removed, ect + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) - human_holder.st_add_stat_mod(STAT_APPEARANCE, human_holder.st_get_stat(STAT_APPEARANCE) - appearance_to_subtract, "Disfigured")// Test after the stat mod pr is in + human_holder.st_add_stat_mod(STAT_APPEARANCE, -appearance_to_subtract, "Disfigured") /datum/quirk/darkpack/disfigured/remove() . = ..() - quirk_holder.st_remove_stat_mod(STAT_APPEARANCE, "Disfigured") + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + human_holder.st_remove_stat_mod(STAT_APPEARANCE, "Disfigured") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm index 0df8c027710c..87142372d44a 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm @@ -23,13 +23,12 @@ the radiance emanating from your eye sockets makes it difficult to hide (+2 difficulty to Stealth rolls) in the dark.*/ -/datum/quirk/darkpack/glowing_eyes/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/glowing_eyes/add(client/client_source) . = ..() ADD_TRAIT(quirk_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) ADD_TRAIT(quirk_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) /datum/quirk/darkpack/glowing_eyes/remove() - . = ..() . = ..() REMOVE_TRAIT(quirk_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) REMOVE_TRAIT(quirk_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm index 86606c4c6d5a..a102e946c1cd 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/hemophilliac.dm @@ -23,7 +23,7 @@ the bleeding. Any vampire who bites a Hemophiliac may ghoul, the vampire will put a stop to any future bashing damage.*/ -/datum/quirk/darkpack/hemophiliac/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/hemophiliac/add(client/client_source) . = ..() ADD_TRAIT(quirk_holder, TRAIT_EASYBLEED , QUIRK_TRAIT) // Easier to make bleed diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm index 06639ca9f6a0..8d8bb3c9d987 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/nervous_tic.dm @@ -11,7 +11,7 @@ and so on."} gain_text = span_notice("You feel an urge to do something self-soothing.") lose_text = span_notice("You feel calmer.") failure_message = span_notice("You feel calmer.") - //roleplay_only = TRUE // Relies on another PR being merged for this line, remove comment when it's merged + roleplay_only = TRUE /*You have some sort of repetitive motion that you make in times of stress, and it’s a dead giveaway as to diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm index 247bcedbb5a1..016ff36b2e82 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/open_wound.dm @@ -8,10 +8,11 @@ If the wound is visible, you are at + 1 difficulty for all Social-based rolls."} value = -2 // If we decide to use the 4 point flaw version, make incompatible with permanent wound. gain_text = span_notice("An unhealed wound bleeds.") lose_text = span_notice("Old wounds heal.") + failure_message = "Old wounds heal." allowed_splats = list(SPLAT_KINDRED) icon = FA_ICON_BANDAGE - failure_message = "Old wounds heal." - var/wound_location + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES + mob_trait = TRAIT_OPEN_WOUND /*You have one or more wounds that refuse to heal, and which constantly drip blood. This slow leakage @@ -24,49 +25,13 @@ four points the seeping wound is serious or disfiguring and includes the effects of the Flaw Permanent Wound (below).*/ - -/datum/quirk_constant_data/open_wound - associated_typepath = /datum/quirk/darkpack/open_wound - customization_options = list(/datum/preference/choiced/wound_location) - -/datum/preference/choiced/wound_location - category = PREFERENCE_CATEGORY_MANUALLY_RENDERED - savefile_key = "wound_location" - savefile_identifier = PREFERENCE_CHARACTER - -/datum/preference/choiced/wound_location/init_possible_values() - return list("face", "chest") // I'm tired, so just two options for now. - -/datum/preference/choiced/wound_location/create_default_value() - return "face" - -/datum/preference/choiced/wound_location/is_accessible(datum/preferences/preferences) +/datum/quirk/darkpack/open_wound/add(client/client_source) . = ..() - if (!.) - return FALSE - - return /datum/quirk/darkpack/open_wound::name in preferences.all_quirks - -/datum/preference/choiced/wound_location/apply_to_human(mob/living/carbon/human/target, value) - return - -/datum/quirk/darkpack/open_wound/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) - . = ..() - wound_location = client_source?.prefs.read_preference(/datum/preference/choiced/wound_location) - var/mob/living/carbon/human/human_holder = new_holder - human_holder.bloodpool -= 1 // Take 1 BP away. - switch(wound_location) // Better cover up. - if("face") - ADD_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_FACE, QUIRK_TRAIT) - if("chest") - ADD_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_CHEST, QUIRK_TRAIT) - -/datum/quirk/darkpack/open_wound/remove(client/client_source) - . = ..() - wound_location = client_source?.prefs.read_preference(/datum/preference/choiced/wound_location) - switch(wound_location) - if("face") - REMOVE_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_FACE, QUIRK_TRAIT) - if("chest") - REMOVE_TRAIT(quirk_holder, TRAIT_OPEN_WOUND_CHEST, QUIRK_TRAIT) - + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + +/datum/quirk/darkpack/open_wound/process(seconds_per_tick) + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(human_holder.bloodpool > 0) + human_holder.adjust_blood_pool(-0.001)// Play with this number as needed. diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm index 3d7446120782..f60afa24c2e3 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_wound.dm @@ -14,7 +14,9 @@ At the beginning of each night, you rise from sleep heavily wounded."} At the beginning of each night, you rise from sleep at the Wounded health level, though this may be healed by spending blood points.*/ -/datum/quirk/darkpack/permanent_wound/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/permanent_wound/add(client/client_source) . = ..() - var/mob/living/carbon/human/human_holder = new_holder + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.adjust_brute_loss(90, TRUE) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm index f8bc3d5a002c..ddba2dc4e420 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/seizures.dm @@ -2,12 +2,13 @@ /datum/quirk/darkpack/seizures name = "Seizures" desc = {"Your character suffers from seizures, most commonly triggered by stress. -Though many types of seizures can be controlled, some people refuse or are unable to be treated for oen reason or another."} +Though many types of seizures can be controlled, some people refuse or are unable to be treated for one reason or another."} icon = FA_ICON_FACE_DIZZY value = -3 // Debate on this cost. Might be too high bc it's not as bad as tabletop? gain_text = span_notice("You feel dizzy.") lose_text = span_notice("The dizziness fades.") failure_message = span_notice("The dizziness fades.") + forbidden_splats = SPLAT_KINDRED // Add Garou to this if it seems fitting, but for now. /*Seizures tend to occur during moments of duress, and few mortals have a more stressful or terrifying existence @@ -45,11 +46,15 @@ drop to the ground, your vision might turn black for a few seconds, or your arm might tremble and you cannot regain control*/ -/datum/quirk/darkpack/seizures/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) - var/mob/living/carbon/human/human_holder = new_holder +/datum/quirk/darkpack/seizures/add(client/client_source) + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.dna.add_mutation(/datum/mutation/epilepsy, MUTATION_SOURCE_ACTIVATED) -/datum/quirk/darkpack/seizures/remove(mob/living/new_holder) +/datum/quirk/darkpack/seizures/remove() . = ..() - var/mob/living/carbon/human/human_holder = new_holder + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.dna.remove_mutation(/datum/mutation/epilepsy, MUTATION_SOURCE_ACTIVATED) diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm index 9c9c4cd53590..60820af58d49 100644 --- a/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/short.dm @@ -17,14 +17,18 @@ You have difficulty reaching or manipulating objects designed for normal adult s and your running speed is one-half that of an average human.*/ /datum/movespeed_modifier/quirk_short - multiplicative_slowdown = 2 // TEsT + multiplicative_slowdown = 2 -/datum/quirk/darkpack/short/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/short/add(client/client_source) . = ..() - var/mob/living/carbon/human/human_holder = quirk_holder + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.add_movespeed_modifier(/datum/movespeed_modifier/quirk_short) /datum/quirk/darkpack/short/remove() . = ..() - var/mob/living/carbon/human/human_holder = quirk_holder + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.remove_movespeed_modifier(/datum/movespeed_modifier/quirk_short) diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm index ab2372522183..2747ad51da87 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/acute_sense.dm @@ -2,7 +2,7 @@ /datum/quirk/darkpack/acute_sense name = "Acute Sense" desc = {"One of your senses is exceptionally sharp, be it sight, hearing, smell, touch, or taste. -The difficulties for all tasks involving the use of this particular sense are reduced by two."} // Find what checks need to be changed here. +The difficulties for all tasks involving the use of this particular sense are reduced by two."} value = 1 icon = FA_ICON_EYE var/sense @@ -14,66 +14,72 @@ duced by two. This Merit can be combined with the Discipline of Auspex to produce superhuman sensory acuity.*/ -/datum/quirk_constant_data/acute_sense - associated_typepath = /datum/quirk/darkpack/acute_sense - customization_options = list(/datum/preference/choiced/acute_sense) - -/datum/preference/choiced/acute_sense - category = PREFERENCE_CATEGORY_MANUALLY_RENDERED - savefile_key = "acute_sense" - savefile_identifier = PREFERENCE_CHARACTER - -/datum/preference/choiced/acute_sense/init_possible_values() - return list("hearing", "smell", "sight", "taste", "touch") - -/datum/preference/choiced/acute_sense/create_default_value() - return "hearing" - -/datum/preference/choiced/acute_sense/is_accessible(datum/preferences/preferences) - . = ..() - if (!.) - return FALSE - - return /datum/quirk/darkpack/acute_sense::name in preferences.all_quirks - -/datum/preference/choiced/acute_sense/apply_to_human(mob/living/carbon/human/target, value) - return - -/datum/quirk/darkpack/acute_sense/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/acute_sense/add(client/client_source) . = ..() + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return sense = client_source?.prefs.read_preference(/datum/preference/choiced/acute_sense) switch(sense) if("hearing")// Debating checking for flaws to invalidate this, but they won't be able to use the merit while deaf anyways - ADD_TRAIT(new_holder, TRAIT_ACUTE_HEARING, QUIRK_TRAIT) // Used to hear more. - var/obj/item/organ/ears/sensitive_ears = quirk_holder.get_organ_slot(ORGAN_SLOT_EARS) + ADD_TRAIT(quirk_holder, TRAIT_ACUTE_HEARING, QUIRK_TRAIT) // Used to hear more. + var/obj/item/organ/ears/sensitive_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS) sensitive_ears.damage_multiplier = sensitive_ears.damage_multiplier + 1 // We hear better, and there are consequences. if("smell") // Debate adding a check for TRAIT_ANOSMIA, but we don't currently have it selectable - ADD_TRAIT(new_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) if("sight") // Debate adding a check, but like hearing, you can't use the benefits while blind really - ADD_TRAIT(new_holder, TRAIT_NIGHT_VISION, QUIRK_TRAIT) // Fuck it, zooming out is ugly, so weak night vision seems a little better - var/obj/item/organ/eyes/sensitive_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) + ADD_TRAIT(quirk_holder, TRAIT_NIGHT_VISION, QUIRK_TRAIT) // Fuck it, zooming out is ugly, so weak night vision seems a little better + var/obj/item/organ/eyes/sensitive_eyes = human_holder.get_organ_slot(ORGAN_SLOT_EYES) if(sensitive_eyes) sensitive_eyes.flash_protect = max(sensitive_eyes.flash_protect += -1, FLASH_PROTECTION_SENSITIVE) if("taste") - ADD_TRAIT(new_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) if("touch") - ADD_TRAIT(new_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) // Does this seem fitting? It shouldn't be as strong as auspex is. + ADD_TRAIT(quirk_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) // Does this seem fitting? It shouldn't be as strong as auspex is. -/datum/quirk/darkpack/acute_sense/remove(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) +/datum/quirk/darkpack/acute_sense/remove() . = ..() + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return switch(sense) if("hearing") REMOVE_TRAIT(quirk_holder, TRAIT_ACUTE_HEARING, QUIRK_TRAIT) - var/obj/item/organ/ears/sensitive_ears = quirk_holder.get_organ_slot(ORGAN_SLOT_EARS) + var/obj/item/organ/ears/sensitive_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS) sensitive_ears.damage_multiplier = sensitive_ears.damage_multiplier - 1 if("smell") REMOVE_TRAIT(quirk_holder, TRAIT_KEEN_NOSE, QUIRK_TRAIT) if("sight") REMOVE_TRAIT(quirk_holder, TRAIT_NIGHT_VISION, QUIRK_TRAIT) - var/obj/item/organ/eyes/sensitive_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES) + var/obj/item/organ/eyes/sensitive_eyes = human_holder.get_organ_slot(ORGAN_SLOT_EYES) if(sensitive_eyes) sensitive_eyes.flash_protect = max(sensitive_eyes.flash_protect += 1, FLASH_PROTECTION_NONE) if("taste") REMOVE_TRAIT(quirk_holder, TRAIT_DETECTIVES_TASTE, QUIRK_TRAIT) if("touch") REMOVE_TRAIT(quirk_holder, TRAIT_SELF_AWARE, QUIRK_TRAIT) + +/datum/quirk_constant_data/acute_sense + associated_typepath = /datum/quirk/darkpack/acute_sense + customization_options = list(/datum/preference/choiced/acute_sense) + +/datum/preference/choiced/acute_sense + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "acute_sense" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/acute_sense/init_possible_values() + return list("hearing", "smell", "sight", "taste", "touch") + +/datum/preference/choiced/acute_sense/create_default_value() + return "hearing" + +/datum/preference/choiced/acute_sense/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return /datum/quirk/darkpack/acute_sense::name in preferences.all_quirks + +/datum/preference/choiced/acute_sense/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm index 4451545a42e9..70bfdf86e0f4 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/eyes_of_shadow.dm @@ -11,6 +11,7 @@ gaze. The difficulty for any Intimidation roll is reduced by 2."} // since this allowed_splats = list(SPLAT_KINDRED) included_clans = list(VAMPIRE_CLAN_LASOMBRA) mob_trait = TRAIT_EYES_OF_SHADOW + /*There is something about your eyes that makes you look dark and dangerous. Making eye contact with you is like staring into the Abyss. It may not be obvious why, diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm index 4161704d4ef7..d81aafe02799 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/friendly_face.dm @@ -13,7 +13,6 @@ leaving you at -1 difficulty on all appropriate Social-based rolls failure_message = span_notice("You feel like others don't look at you the same way anymore.") mob_trait = TRAIT_FRIENDLY_FACE - /*You have a face that reminds everyone of someone, to the point where strangers are inclined to be well inclined toward you because of it. The effect doesn’t diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm index e69988904661..f8d23693606d 100644 --- a/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/huge_size.dm @@ -13,24 +13,29 @@ and you may have an easier time breaking down doors or other physical feats."} failure_message = span_notice("You feel shorter.") mob_trait = TRAIT_HUGE_SIZE +/*You are abnormally large in size, at least 6’10” and +300 pounds in weight (well over two meters tall and +over 130 kgs). Aside from making you extremely no +ticeable in public, this extra mass bestows an addition +al Bruised health level. Characters with this Merit may +also gain bonuses to push objects, open barred doors, +avoid being knocked down, etc.*/ + /datum/quirk/darkpack/huge_size/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source, unique, announce) . = ..() - var/mob/living/carbon/human/human_holder = quirk_holder // TODO ADD HEALTH + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.maxHealth += 30 human_holder.health += 30 - ADD_TRAIT(human_holder, TRAIT_TOO_TALL, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_TOO_TALL, QUIRK_TRAIT) /datum/quirk/darkpack/huge_size/remove() . = ..() - var/mob/living/carbon/human/human_holder = quirk_holder + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return human_holder.maxHealth -= 30 human_holder.health = max(human_holder.health - 30, human_holder.maxHealth) - REMOVE_TRAIT(human_holder, TRAIT_TOO_TALL, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_TOO_TALL, QUIRK_TRAIT) -/*You are abnormally large in size, at least 6’10” and -300 pounds in weight (well over two meters tall and -over 130 kgs). Aside from making you extremely no -ticeable in public, this extra mass bestows an addition -al Bruised health level. Characters with this Merit may -also gain bonuses to push objects, open barred doors, -avoid being knocked down, etc.*/ diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index e1a23a13f48a..9ccc7690b67f 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -116,7 +116,9 @@ if(!(owner.obscured_slots & HIDEFACE)) if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) theirpower += 2 - if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE)) + + if(!(owner.slot & ITEM_SLOT_ICLOTHING)) + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND)) theirpower += 1 if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. @@ -137,9 +139,6 @@ if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE) && !(owner.obscured_slots & HIDEFACE)) theirpower -= 1 - if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_CHEST) && !(owner.obscured_slots & HIDEJUMPSUIT)) - theirpower += 1 - //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 var/mob/living/carbon/human/human_target = target @@ -156,6 +155,9 @@ if(target.conditioner?.resolve()) theirpower += 3 + if(theirpower <= 0) + theirpower = 1 // let's not have difficulties of less than 0 here? + var/mypower = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) //i've botched so now this person is immune to dominate for the rest of the round diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index c1f45a5b8a5a..ac7759ee43a4 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -30,8 +30,13 @@ //is the difficulty pre-defined? if not, its probably their willpower. var/theirpower = difficulty || target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE) && !(owner.obscured_slots & HIDEFACE)) - theirpower += 2 + if(!(owner.obscured_slots & HIDEFACE)) + if(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE)) + theirpower += 2 + + if(!(owner.slot & ITEM_SLOT_ICLOTHING)) + if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND)) + theirpower += 1 if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL) && (!get_kindred_splat(target)))// Counting anyone not kindred as mortal for this, since it should be a little unnerving to them. theirpower += 1 @@ -39,23 +44,21 @@ if(HAS_TRAIT(owner, TRAIT_ENCHANTING_VOICE)) theirpower -= 2 - if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_FACE) && !(owner.obscured_slots & HIDEFACE)) - theirpower += 1 - if(HAS_TRAIT(owner, TRAIT_OPEN_WOUND_CHEST) && !(owner.obscured_slots & HIDEJUMPSUIT)) - theirpower += 1 - if(discipline.current_power.name == "Dread Gaze") if(HAS_TRAIT(owner, TRAIT_BRUISER)) theirpower -= 1 if(!owner.is_eyes_covered()) if(HAS_TRAIT(owner, TRAIT_GLOWING_EYES) && (!get_kindred_splat(target))) theirpower -= 1 - if(HAS_TRAIT(owner, TRAIT_EYES_OF_SHADOW)) + if(HAS_TRAIT(owner, TRAIT_EYES_OF_SHADOW) && (theirpower >= 3)) // we want this to reduce diff to a MINIMUM of 2 theirpower -= 1 else if(HAS_TRAIT(owner, TRAIT_FRIENDLY_FACE) && !(owner.obscured_slots & HIDEFACE))// We can't intimidate them with this. theirpower -= 1 + if(theirpower <= 0) + theirpower = 1 // let's not have difficulties of less than 0 here? + var/successes = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE) //botch diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index 7bbba9d2f601..8a2f910e523b 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -137,13 +137,12 @@ involved_social_roll -= 2 if(!(user.obscured_slots & HIDEFACE)) - if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_FACE)) - involved_social_roll += 1 if(HAS_TRAIT(user, TRAIT_DISFIGURED_APPEARANCE)) involved_social_roll += 2 - if(HAS_TRAIT(user, TRAIT_OPEN_WOUND_CHEST) && !(user.obscured_slots & HIDEJUMPSUIT)) - involved_social_roll += 1 + if(!(user.slot & ITEM_SLOT_ICLOTHING)) + if(HAS_TRAIT(user, TRAIT_OPEN_WOUND)) + involved_social_roll += 1 if(STAT_INTIMIDATION in bypass_roll.applicable_stats) if(!user.is_eyes_covered()) @@ -157,6 +156,9 @@ if(HAS_TRAIT(user, TRAIT_FRIENDLY_FACE) && !!(user.obscured_slots & HIDEFACE))// Gotta see the friendly face. involved_social_roll -= 1 // Can't be used for intimidation, easier diff otherwise + if(involved_social_roll <= 0) + involved_social_roll = 1 // let's not have difficulties of less than 0 here? + var/verbage bypass_roll.difficulty = involved_social_roll bypass_roll.applicable_stats = list(STAT_CHARISMA) diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx index b6f28fbdff91..d9edd1466156 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_merits_flaws_preferences.tsx @@ -28,8 +28,3 @@ export const acute_sense: FeatureChoiced = { name: 'Acute Sense', component: FeatureDropdownInput, }; - -export const wound_location: FeatureChoiced = { - name: 'Wound Location', - component: FeatureDropdownInput, -};