diff --git a/code/__DEFINES/~darkpack/auras.dm b/code/__DEFINES/~darkpack/auras.dm
index 6c7e04a137c3..0b17aa4ea525 100644
--- a/code/__DEFINES/~darkpack/auras.dm
+++ b/code/__DEFINES/~darkpack/auras.dm
@@ -15,7 +15,7 @@
#define AURA_HAPPY COLOR_VIVID_RED // Vermillion
#define AURA_HATEFUL COLOR_BLACK // Black
#define AURA_IDEALISTIC COLOR_YELLOW // Yellow
-#define AURA_INNOCENT COLOR_WHITE // White
+#define AURA_INNOCENT COLOR_OFF_WHITE // White
#define AURA_LOVESTRUCK COLOR_BLUE // Blue
#define AURA_OBSESSED COLOR_GREEN // Green
#define AURA_SAD COLOR_SILVER // Silver
diff --git a/code/__DEFINES/~darkpack/splats.dm b/code/__DEFINES/~darkpack/splats.dm
index bdc75565c439..92845e185a24 100644
--- a/code/__DEFINES/~darkpack/splats.dm
+++ b/code/__DEFINES/~darkpack/splats.dm
@@ -9,5 +9,6 @@
//#define SPLAT_FERA "splat_fera"
#define SPLAT_GAROU "splat_garou"
#define SPLAT_CORAX "splat_corax" // DARKPACK TODO - CORAX
+#define SPLAT_SHIFTERS list(SPLAT_GAROU, SPLAT_CORAX)
#define SPLAT_ALL list(SPLAT_NONE, SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_GAROU)
diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm
index 1d0d3424b7f0..411e4ada6781 100644
--- a/code/__DEFINES/~darkpack/traits/declarations.dm
+++ b/code/__DEFINES/~darkpack/traits/declarations.dm
@@ -42,7 +42,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_CHARMER "charmer"
// Mutates the apperance of auras
-#define TRAIT_COLD_AURA "cold_aura"
+#define TRAIT_PALE_AURA "pale_aura"
#define TRAIT_WARM_AURA "warm_aura"
#define TRAIT_FRENETIC_AURA "frenetic_aura"
@@ -137,7 +137,14 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
// BELOW ARE ALL MERITS/FLAWS
#define TRAIT_ILLEGAL_IDENTITY "illegal_identity" // GOVERNMENT
+#define TRAIT_ANIMAL_MUSK "animal_musk"
#define TRAIT_PERMAFANGS "permafangs"
+#define TRAIT_PIERCED_VEIL "pierced_veil"
+#define TRAIT_WEAK_WILLED "weak_willed"
+#define TRAIT_TIME_SENSE "time_sense"
+#define TRAIT_METAMORPH "metamorph"
+#define TRAIT_MERIT_UNTAMABLE "merit_untamable"
+#define TRAIT_FAIR_GLABRO "fair_glabro"
// END TRAIT DEFINES
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index fe4db9796e5c..dc37edae5800 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -492,7 +492,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_PERCEPTUAL_TRAUMA_BYPASS" = TRAIT_PERCEPTUAL_TRAUMA_BYPASS,
"TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER,
"TRAIT_PERMANENTLY_MORTAL" = TRAIT_PERMANENTLY_MORTAL,
- "TRAIT_PERMAFANGS" = TRAIT_PERMAFANGS,
"TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER,
"TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE,
"TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE,
@@ -665,6 +664,7 @@ 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_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
"TRAIT_BLOOD_DRINKER" = TRAIT_BLOOD_DRINKER, // DARKPACK EDIT ADD
@@ -673,13 +673,13 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_CAN_ENTER_TORPOR" = TRAIT_CAN_ENTER_TORPOR, // DARKPACK EDIT ADD
"TRAIT_CHARMER" = TRAIT_CHARMER, // DARKPACK EDIT ADD
"TRAIT_COFFIN_THERAPY" = TRAIT_COFFIN_THERAPY, // DARKPACK EDIT ADD
- "TRAIT_COLD_AURA" = TRAIT_COLD_AURA, // DARKPACK EDIT ADD
+ "TRAIT_PALE_AURA" = TRAIT_PALE_AURA, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_CONSENSUAL_FEEDING_ONLY" = TRAIT_CONSENSUAL_FEEDING_ONLY, // DARKPACK EDIT ADD
"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_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD
- "TRAIT_FAKE_SOULLESS" = TRAIT_FAKE_SOULLESS, // DARKPACK EDIT ADD
+ "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
"TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD
@@ -697,6 +697,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_LOUD_HOWLER" = TRAIT_LOUD_HOWLER, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_MASQUERADE_VIOLATING_EYES" = TRAIT_MASQUERADE_VIOLATING_EYES, // DARKPACK EDIT ADD
"TRAIT_MASQUERADE_VIOLATING_FACE" = TRAIT_MASQUERADE_VIOLATING_FACE, // DARKPACK EDIT ADD
+ "TRAIT_MERIT_UNTAMABLE" = TRAIT_MERIT_UNTAMABLE, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_MYSTICISM_KNOWLEDGE" = TRAIT_MYSTICISM_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_NECROMANCY_KNOWLEDGE" = TRAIT_NECROMANCY_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_NEEDS_BLOOD" = TRAIT_NEEDS_BLOOD, //DARKPACK EDIT ADD - Hunger and Frenzy
@@ -706,6 +707,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD
"TRAIT_PASSDOOR" = TRAIT_PASSDOOR, // DARKPACK EDIT ADD
"TRAIT_PASS_THROUGH_WALLS" = TRAIT_PASS_THROUGH_WALLS, // DARKPACK EDIT ADD
+ "TRAIT_PERMAFANGS" = TRAIT_PERMAFANGS, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_REJECTED_BY_TECHNOLOGY" = TRAIT_REJECTED_BY_TECHNOLOGY, // DARKPACK EDIT ADD
"TRAIT_REPELLED_BY_HOLINESS" = TRAIT_REPELLED_BY_HOLINESS, // DARKPACK EDIT ADD
"TRAIT_RUBICON" = TRAIT_RUBICON, // DARKPACK EDIT ADD
@@ -718,6 +720,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_STAKE_RESISTANT" = TRAIT_STAKE_RESISTANT, // DARKPACK EDIT ADD
"TRAIT_THAUMATURGY_KNOWLEDGE" = TRAIT_THAUMATURGY_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_TIMEWARPER" = TRAIT_TIMEWARPER, // DARKPACK EDIT ADD
+ "TRAIT_TIME_SENSE" = TRAIT_TIME_SENSE, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_TORPOR" = TRAIT_TORPOR, // DARKPACK EDIT ADD
"TRAIT_TOUGH_FLESH" = TRAIT_TOUGH_FLESH, // DARKPACK EDIT ADD
"TRAIT_TRANSFORM_UPDATES_ICON" = TRAIT_TRANSFORM_UPDATES_ICON, // DARKPACK EDIT ADD - WEREWOLF
@@ -731,10 +734,13 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_VTM_MORALITY" = TRAIT_VTM_MORALITY, // DARKPACK EDIT ADD
"TRAIT_WARM_AURA" = TRAIT_WARM_AURA, // DARKPACK EDIT ADD
"TRAIT_WEAK_TO_DOMINATE" = TRAIT_WEAK_TO_DOMINATE, // DARKPACK EDIT ADD - POWERS - (Dominate)
+ "TRAIT_WEAK_WILLED" = TRAIT_WEAK_WILLED, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_WTA_GAROU_AUSPICE" = TRAIT_WTA_GAROU_AUSPICE, // DARKPACK EDIT ADD
"TRAIT_WTA_GAROU_BREED" = TRAIT_WTA_GAROU_BREED, // DARKPACK EDIT ADD
"TRAIT_WTA_GAROU_TRIBE" = TRAIT_WTA_GAROU_TRIBE, // DARKPACK EDIT ADD
"TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD
+ "TRAIT_METAMORPH" = TRAIT_METAMORPH, // DARKPACK EDIT ADD - MERITS/FLAWS
+ "TRAIT_PIERCED_VEIL" = TRAIT_PIERCED_VEIL, // DARKPACK EDIT ADD - MERITS/FLAWS
),
/mob/living/carbon = list(
"TRAIT_BRAINLESS_CARBON" = TRAIT_BRAINLESS_CARBON,
diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm
index 65a95b899142..ee3a19aaf6c3 100644
--- a/code/_globalvars/traits/admin_tooling.dm
+++ b/code/_globalvars/traits/admin_tooling.dm
@@ -355,6 +355,7 @@ 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_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
"TRAIT_BLOOD_DRINKER" = TRAIT_BLOOD_DRINKER, // DARKPACK EDIT ADD
@@ -363,13 +364,13 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_CAN_ENTER_TORPOR" = TRAIT_CAN_ENTER_TORPOR, // DARKPACK EDIT ADD
"TRAIT_CHARMER" = TRAIT_CHARMER, // DARKPACK EDIT ADD
"TRAIT_COFFIN_THERAPY" = TRAIT_COFFIN_THERAPY, // DARKPACK EDIT ADD
- "TRAIT_COLD_AURA" = TRAIT_COLD_AURA, // DARKPACK EDIT ADD
+ "TRAIT_PALE_AURA" = TRAIT_PALE_AURA, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_CONSENSUAL_FEEDING_ONLY" = TRAIT_CONSENSUAL_FEEDING_ONLY, // DARKPACK EDIT ADD
"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_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD
- "TRAIT_FAKE_SOULLESS" = TRAIT_FAKE_SOULLESS, // DARKPACK EDIT ADD
+ "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
"TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD
@@ -387,6 +388,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_LOUD_HOWLER" = TRAIT_LOUD_HOWLER, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_MASQUERADE_VIOLATING_EYES" = TRAIT_MASQUERADE_VIOLATING_EYES, // DARKPACK EDIT ADD
"TRAIT_MASQUERADE_VIOLATING_FACE" = TRAIT_MASQUERADE_VIOLATING_FACE, // DARKPACK EDIT ADD
+ "TRAIT_MERIT_UNTAMABLE" = TRAIT_MERIT_UNTAMABLE, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_MYSTICISM_KNOWLEDGE" = TRAIT_MYSTICISM_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_NECROMANCY_KNOWLEDGE" = TRAIT_NECROMANCY_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_NEEDS_BLOOD" = TRAIT_NEEDS_BLOOD, //DARKPACK EDIT ADD - Hunger and Frenzy
@@ -396,6 +398,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD
"TRAIT_PASSDOOR" = TRAIT_PASSDOOR, // DARKPACK EDIT ADD
"TRAIT_PASS_THROUGH_WALLS" = TRAIT_PASS_THROUGH_WALLS, // DARKPACK EDIT ADD
+ "TRAIT_PERMAFANGS" = TRAIT_PERMAFANGS, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_REJECTED_BY_TECHNOLOGY" = TRAIT_REJECTED_BY_TECHNOLOGY, // DARKPACK EDIT ADD
"TRAIT_REPELLED_BY_HOLINESS" = TRAIT_REPELLED_BY_HOLINESS, // DARKPACK EDIT ADD
"TRAIT_RUBICON" = TRAIT_RUBICON, // DARKPACK EDIT ADD
@@ -408,6 +411,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_STAKE_RESISTANT" = TRAIT_STAKE_RESISTANT, // DARKPACK EDIT ADD
"TRAIT_THAUMATURGY_KNOWLEDGE" = TRAIT_THAUMATURGY_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_TIMEWARPER" = TRAIT_TIMEWARPER, // DARKPACK EDIT ADD
+ "TRAIT_TIME_SENSE" = TRAIT_TIME_SENSE, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_TORPOR" = TRAIT_TORPOR, // DARKPACK EDIT ADD
"TRAIT_TOUGH_FLESH" = TRAIT_TOUGH_FLESH, // DARKPACK EDIT ADD
"TRAIT_TRANSFORM_UPDATES_ICON" = TRAIT_TRANSFORM_UPDATES_ICON, // DARKPACK EDIT ADD - WEREWOLF
@@ -421,10 +425,13 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_VTM_MORALITY" = TRAIT_VTM_MORALITY, // DARKPACK EDIT ADD
"TRAIT_WARM_AURA" = TRAIT_WARM_AURA, // DARKPACK EDIT ADD
"TRAIT_WEAK_TO_DOMINATE" = TRAIT_WEAK_TO_DOMINATE, // DARKPACK EDIT ADD - POWERS - (Dominate)
+ "TRAIT_WEAK_WILLED" = TRAIT_WEAK_WILLED, // DARKPACK EDIT ADD - MERITS/FLAWS
"TRAIT_WTA_GAROU_AUSPICE" = TRAIT_WTA_GAROU_AUSPICE, // DARKPACK EDIT ADD
"TRAIT_WTA_GAROU_BREED" = TRAIT_WTA_GAROU_BREED, // DARKPACK EDIT ADD
"TRAIT_WTA_GAROU_TRIBE" = TRAIT_WTA_GAROU_TRIBE, // DARKPACK EDIT ADD
"TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD
+ "TRAIT_METAMORPH" = TRAIT_METAMORPH, // DARKPACK EDIT ADD - MERITS/FLAWS
+ "TRAIT_PIERCED_VEIL" = TRAIT_PIERCED_VEIL, // DARKPACK EDIT ADD - MERITS/FLAWS
),
/obj/item = list(
"TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING,
diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm
index 63effdc09f57..8b9b85cd7fc0 100644
--- a/code/controllers/subsystem/processing/quirks.dm
+++ b/code/controllers/subsystem/processing/quirks.dm
@@ -26,6 +26,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
list(/datum/quirk/settler, /datum/quirk/freerunning),
list(/datum/quirk/numb, /datum/quirk/selfaware),
list(/datum/quirk/empath, /datum/quirk/evil),
+ list(/datum/quirk/darkpack/weak_willed, /datum/quirk/darkpack/untamable), // DARKPACK EDIT ADD - MERITS/FLAWS
))
GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist())
diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm
index 31b0909e58ef..806fb8a90421 100644
--- a/code/controllers/subsystem/statpanel.dm
+++ b/code/controllers/subsystem/statpanel.dm
@@ -39,9 +39,10 @@ SUBSYSTEM_DEF(statpanels)
"Round ID: [GLOB.round_id ? GLOB.round_id : "NULL"]",
"Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss", world.timezone)]",
"Round Time: [ROUND_TIME()]",
- "Local City Time: [SSticker.round_start_timeofday ? "[station_time_timestamp("hh:mm MMM")] [CURRENT_STATION_YEAR]" : "The round hasn't started yet!"]",
+ // "Station Time: [station_time_timestamp()]", // DARKPACK EDIT REMOVAL - MERITS/FLAWS - (Time sense)
"Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)",
- "---", // DARKPACK EDIT ADD
+ "\n", // DARKPACK EDIT ADD
+ "Canon: [GLOB.canon_event ? "Yes" : "No"]", // DARKPACK EDIT ADD
"Masquerade: [SSmasquerade.get_description()]", // DARKPACK EDIT ADD
)
diff --git a/code/datums/quirks/negative_quirks/scarred_eye.dm b/code/datums/quirks/negative_quirks/scarred_eye.dm
index 3bead4bb248b..e7920e767c22 100644
--- a/code/datums/quirks/negative_quirks/scarred_eye.dm
+++ b/code/datums/quirks/negative_quirks/scarred_eye.dm
@@ -1,5 +1,5 @@
/datum/quirk/item_quirk/scarred_eye
- name = "Scarred Eye"
+ name = "One Eye" // DARKPACK EDIT CHANGE - MERITS/FLAWS
desc = "An accident in your past has cost you one of your eyes, but you got a cool eyepatch. Yarr!"
icon = FA_ICON_EYE_SLASH
value = -2
@@ -9,6 +9,7 @@
hardcore_value = 2
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE
mail_goodies = list(/obj/item/reagent_containers/cup/glass/bottle/rum, /obj/item/clothing/mask/bandana/red)
+ darkpack_allowed = TRUE // DARKPACK EDIT ADD - MERITS/FLAWS
/datum/quirk_constant_data/eye_scarring
associated_typepath = /datum/quirk/item_quirk/scarred_eye
diff --git a/code/modules/client/preferences/scarred_eye.dm b/code/modules/client/preferences/scarred_eye.dm
index 6cb0286fe86e..5905a13e2bec 100644
--- a/code/modules/client/preferences/scarred_eye.dm
+++ b/code/modules/client/preferences/scarred_eye.dm
@@ -14,7 +14,7 @@
if (!.)
return FALSE
- return "Scarred Eye" in preferences.all_quirks
+ return /datum/quirk/item_quirk/scarred_eye::name in preferences.all_quirks // DARKPACK EDIT CHANGE
/datum/preference/choiced/scarred_eye/apply_to_human(mob/living/carbon/human/target, value)
return
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index 4d79a1b841e4..9bb053caaeef 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -171,12 +171,16 @@
var/mob/living/carbon/human/husrc = src // gross istypesrc but easier than refactoring even further for now
if(husrc.skin_tone == "albino")
apparent_blood_volume -= (BLOOD_VOLUME_NORMAL * 0.25) // knocks you down a few pegs
- if(HAS_TRAIT(user, TRAIT_COLD_AURA))
+ // DARKPACK EDIT ADD START
+ if(HAS_TRAIT(user, TRAIT_PALE_AURA))
apparent_blood_volume -= (BLOOD_VOLUME_NORMAL * 0.25)
+ /* I need a citation on if this thing is real, i got nothing.
if(HAS_TRAIT(user, TRAIT_WARM_AURA))
apparent_blood_volume += (BLOOD_VOLUME_NORMAL * 0.25)
+ */
if(HAS_TRAIT(user, TRAIT_BLUSH_OF_HEALTH))
apparent_blood_volume += (BLOOD_VOLUME_NORMAL * 0.50)
+ // DAKRPACK EDIT ADD END
switch(apparent_blood_volume)
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
. += span_warning("[t_He] [t_has] pale skin.")
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index b04cba60081e..022265103bab 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -905,7 +905,11 @@
/// Adds this list to the output to the stat browser
/mob/proc/get_status_tab_items()
- . = list("") //we want to offset unique stuff from standard stuff
+ // DARKPACK EDIT CHANGE START - MERITS/FLAWS - (Time sense)
+ . = list()
+ . += get_time_status()
+ . += "" //we want to offset unique stuff from standard stuff
+ // DARKPACK EDIT CHANGE END
SEND_SIGNAL(src, COMSIG_MOB_GET_STATUS_TAB_ITEMS, .)
return .
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 72435558b539..67f27d9c2e90 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
@@ -26,6 +26,9 @@
if(HAS_TRAIT(src, TRAIT_SERPENTIS_SKIN) && !(HIDEJUMPSUIT)) // 'hidden by modest clothing'
. += 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...
")
+
if(!(obscured_slots & HIDEFACE))
switch(st_get_stat(STAT_APPEARANCE))
if(0)
diff --git a/modular_darkpack/modules/merits_flaws/code/_darkpack_quirk.dm b/modular_darkpack/modules/merits_flaws/code/_darkpack_quirk.dm
index bc12ccab4758..e4f286025da2 100644
--- a/modular_darkpack/modules/merits_flaws/code/_darkpack_quirk.dm
+++ b/modular_darkpack/modules/merits_flaws/code/_darkpack_quirk.dm
@@ -24,6 +24,8 @@
if(splat.id in allowed_splats)
has_allowed_splat = TRUE
break
+ if(!new_holder.splats && (SPLAT_NONE in allowed_splats))
+ has_allowed_splat = TRUE
if(!has_allowed_splat)
return FALSE
@@ -48,7 +50,8 @@
return TRUE
var/datum/splat/splat_path = GLOB.splat_prototypes[mob_splat]
- var/splat_id = splat_path?.id
+ // If splat is null, just assume we have no splat.
+ var/splat_id = splat_path?.id ? splat_path.id : SPLAT_NONE
if(forbidden_splats && (splat_id in forbidden_splats))
return FALSE
diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/animal_musk.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/animal_musk.dm
new file mode 100644
index 000000000000..0f683a469923
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/animal_musk.dm
@@ -0,0 +1,12 @@
+// W20 p. 473
+/datum/quirk/darkpack/animal_musk
+ name = "Animal Musk"
+ // A little unsure who to do the logic on the social roll rn.
+ desc = {"(This is roleplay/flavor text at the moment) You have the odor of an animal, even in Homid form.
+ Whenever you are indoors or in a crowd of people, you make all Social rolls at a +2 difficulty.
+ Outdoors or in situations where you can distance yourself from humans, your odor is not noticeable.
+ Wolves (and lupus-born Garou) take little notice of this Flaw.."}
+ value = -1
+ mob_trait = TRAIT_ANIMAL_MUSK
+ icon = FA_ICON_SPRAY_CAN_SPARKLES // icon = FA_ICON_BUGS
+ allowed_splats = SPLAT_SHIFTERS
diff --git a/modular_darkpack/modules/quirks/code/negative_quirks/derangement.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/derangement.dm
similarity index 89%
rename from modular_darkpack/modules/quirks/code/negative_quirks/derangement.dm
rename to modular_darkpack/modules/merits_flaws/code/negative_quirks/derangement.dm
index 494bea3a29eb..62c4ff9a71ee 100644
--- a/modular_darkpack/modules/quirks/code/negative_quirks/derangement.dm
+++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/derangement.dm
@@ -1,7 +1,7 @@
#define FLOOR_DISAPPEAR 3 SECONDS
-/datum/quirk/derangement
+/datum/quirk/darkpack/derangement
name = "Derangement"
desc = "Suffer from a permanent, incurable derangement that alters your perception."
icon = FA_ICON_HOUSE_MEDICAL_CIRCLE_EXCLAMATION
@@ -17,10 +17,10 @@
var/list/derangements
COOLDOWN_DECLARE(next_process)
-/datum/quirk/derangement/add()
+/datum/quirk/darkpack/derangement/add()
derangements = subtypesof(/datum/hallucination/malk)
-/datum/quirk/derangement/process(seconds_per_tick)
+/datum/quirk/darkpack/derangement/process(seconds_per_tick)
if(!COOLDOWN_FINISHED(src, next_process))
return
if(SPT_PROB(2, seconds_per_tick))
@@ -33,7 +33,7 @@
// largely taken from https://github.com/The-Final-Nights/The-Final-Nights/pull/287
// based on the work of maaacha
-/datum/quirk/derangement/proc/handle_malk_floors()
+/datum/quirk/darkpack/derangement/proc/handle_malk_floors()
if(!quirk_holder?.client)
return
//Floors go crazy go stupid
@@ -44,7 +44,7 @@
continue
handle_malk_floor(floor)
-/datum/quirk/derangement/proc/handle_malk_floor(turf/open/floor)
+/datum/quirk/darkpack/derangement/proc/handle_malk_floor(turf/open/floor)
var/mutable_appearance/fake_floor = image(floor.icon, floor, floor.icon_state, floor.layer)
quirk_holder?.client.images += fake_floor
var/offset = pick(-3,-2, -1, 1, 2, 3)
@@ -52,11 +52,11 @@
animate(fake_floor, pixel_y = offset, time = disappearfirst, flags = ANIMATION_RELATIVE)
addtimer(CALLBACK(src, PROC_REF(malk_floor_stage1), quirk_holder, offset, fake_floor), disappearfirst, TIMER_CLIENT_TIME)
-/datum/quirk/derangement/proc/malk_floor_stage1(mob/living/malk, offset, mutable_appearance/fake_floor)
+/datum/quirk/darkpack/derangement/proc/malk_floor_stage1(mob/living/malk, offset, mutable_appearance/fake_floor)
animate(fake_floor, pixel_y = -offset, time = FLOOR_DISAPPEAR, flags = ANIMATION_RELATIVE)
addtimer(CALLBACK(src, PROC_REF(malk_floor_stage2), malk, fake_floor), FLOOR_DISAPPEAR, TIMER_CLIENT_TIME)
-/datum/quirk/derangement/proc/malk_floor_stage2(mob/living/malk, mutable_appearance/fake_floor)
+/datum/quirk/darkpack/derangement/proc/malk_floor_stage2(mob/living/malk, mutable_appearance/fake_floor)
malk.client?.images -= fake_floor
/datum/hallucination/malk
diff --git a/modular_darkpack/modules/merits_flaws/code/permanent_fangs.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_fangs.dm
similarity index 85%
rename from modular_darkpack/modules/merits_flaws/code/permanent_fangs.dm
rename to modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_fangs.dm
index 8ee8a3d81f9a..d4463c3c5acd 100644
--- a/modular_darkpack/modules/merits_flaws/code/permanent_fangs.dm
+++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/permanent_fangs.dm
@@ -1,6 +1,8 @@
+// V20 p. 482
/datum/quirk/darkpack/permafangs
name = "Permanent Fangs"
desc = "Your fangs do not retract, making it impossible for you to hide your true nature. While some mortals may think you've had your teeth filed or are wearing prosthetics, sooner or later you're going to run into someone who knows what you truly are."
+ // TTRPG accurate would be -3? But this is also missing the max Appearance lock..
value = -1
mob_trait = TRAIT_PERMAFANGS
gain_text = span_notice("Your fangs become stuck.")
diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/pierced_veil.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/pierced_veil.dm
new file mode 100644
index 000000000000..c05a8d72e10f
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/pierced_veil.dm
@@ -0,0 +1,10 @@
+// W20 p. 484
+/datum/quirk/darkpack/pierced_veil
+ name = "Pierced Veil"
+ // A little unsure who to do the logic on the social roll rn.
+ desc = {"Unlike most Garou, your Crinos form does not trigger the Delirium in mortals.
+ This makes you particularly vulnerable to werewolf hunters, who may find it less difficult to pursue you back to your caern, putting the members of your sept in considerable danger."}
+ value = -3
+ mob_trait = TRAIT_PIERCED_VEIL
+ icon = FA_ICON_MASKS_THEATER
+ allowed_splats = SPLAT_SHIFTERS
diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/weak_willed.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/weak_willed.dm
new file mode 100644
index 000000000000..bc2c12965d19
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/weak_willed.dm
@@ -0,0 +1,16 @@
+// W20 p. 478, V20 p. 486
+/datum/quirk/darkpack/weak_willed
+ name = "Weak Willed"
+ desc = {"You have little resistance to attempts to dominate or intimidate you.
+ Domination-focused Powers such as Dominate automatically succeed against you.
+ Your difficulties to resist mind-altering spells or magic, are increased by two."}
+ /* Need to implement the other effects still.....
+ desc = {"You have little resistance to attempts to dominate or intimidate you.
+ Domination-focused Powers such as Dominate, Staredown, Roll Over, etc. automatically succeed against you.
+ Your difficulties to resist Social Talents such as Intimidation or Leadership, as well as mind-altering spells or magic, are increased by two.
+ Your Willpower may never rise above 4"}
+ */
+ value = -1
+ mob_trait = TRAIT_WEAK_WILLED
+ icon = FA_ICON_BRAIN
+
diff --git a/modular_darkpack/modules/merits_flaws/code/illegal_identity.dm b/modular_darkpack/modules/merits_flaws/code/neutral_quirks/illegal_identity.dm
similarity index 98%
rename from modular_darkpack/modules/merits_flaws/code/illegal_identity.dm
rename to modular_darkpack/modules/merits_flaws/code/neutral_quirks/illegal_identity.dm
index 07688d52bdc5..7011d373b5b4 100644
--- a/modular_darkpack/modules/merits_flaws/code/illegal_identity.dm
+++ b/modular_darkpack/modules/merits_flaws/code/neutral_quirks/illegal_identity.dm
@@ -1,3 +1,4 @@
+// Homebrew?
/datum/quirk/darkpack/illegal_identity
name = "Illegal Identity"
desc = "Illegal immigrant? Died legally? Born a wolf? The cops aren't happy."
diff --git a/modular_darkpack/modules/quirks/code/quirks.dm b/modular_darkpack/modules/merits_flaws/code/old_quirks.dm
similarity index 100%
rename from modular_darkpack/modules/quirks/code/quirks.dm
rename to modular_darkpack/modules/merits_flaws/code/old_quirks.dm
diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/beserk.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/beserk.dm
new file mode 100644
index 000000000000..debce1198337
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/beserk.dm
@@ -0,0 +1,23 @@
+/* DARKPACK TODO - FRENZY
+// W20 p. 473
+/datum/quirk/darkpack/metamorph
+ name = "Metamorph"
+ desc = {"You have uncanny control over your inner anger, and can use your Rage as most Garou cannot.
+ You can enter a berserk frenzy at will, ignoring your wound penalties.
+ You still suffer the consequences of any actions committed in the throes of frenzy.
+ When circumstances might cause you to frenzy, you must make a standard roll to see if you do so or not."}
+ value = 2
+ icon = FA_ICON_ANGRY
+ allowed_splats = SPLAT_SHIFTERS
+
+/datum/quirk/darkpack/metamorph/add(client/client_source)
+ . = ..()
+ add_verb(quirk_holder, /mob/living/carbon/human/proc/manual_frenzy)
+
+/datum/quirk/darkpack/metamorph/remove()
+ . = ..()
+ remove_verb(quirk_holder, /mob/living/carbon/human/proc/manual_frenzy)
+
+/mob/living/carbon/human/proc/manual_frenzy()
+ return
+*/
diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/fair_glabro.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/fair_glabro.dm
new file mode 100644
index 000000000000..508eef62a44d
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/fair_glabro.dm
@@ -0,0 +1,8 @@
+// W20 p. 472
+/datum/quirk/darkpack/fair_glabro
+ name = "Fair Glabro"
+ desc = "You have a Glabro form that can pass for human, though it's still larger than normal people. You have no penalties to Social Attributes in Glabro form."
+ value = 2
+ mob_trait = TRAIT_FAIR_GLABRO
+ icon = FA_ICON_PERSON_HALF_DRESS
+ allowed_splats = list(SPLAT_GAROU)
diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/metamorph.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/metamorph.dm
new file mode 100644
index 000000000000..b71e7626b970
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/metamorph.dm
@@ -0,0 +1,18 @@
+// W20 p. 473
+/datum/quirk/darkpack/metamorph
+ name = "Metamorph"
+ desc = {"Shapechanging for you is as easy as breathing.
+ You do not need to roll to change forms, nor is it necessary to spend a Rage point for an instantaneous shift.
+ You make your changes as if you scored five successes on your roll to shift forms.
+ If you lose consciousness from wounds or for some other reason, you may roll Wits + Primal Urge (difficulty 8) to choose which form you assume rather than reverting to breed form."}
+ value = 7
+ mob_trait = TRAIT_METAMORPH
+ // I love the greg sam. sa
+ icon = FA_ICON_BUG
+ allowed_splats = SPLAT_SHIFTERS
+
+/datum/storyteller_roll/metamorph
+ bumper_text = "metamorph"
+ applicable_stats = (STAT_WITS) // + PRIMAL_URGE
+ difficulty = 8
+ roll_output_type = ROLL_PRIVATE
diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/pale_aura.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/pale_aura.dm
new file mode 100644
index 000000000000..ab605f190a8a
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/pale_aura.dm
@@ -0,0 +1,12 @@
+// Ghouls & Revenants p. 137, HH p. 43
+/datum/quirk/darkpack/pale_aura
+ name = "Pale Aura"
+ desc = {"Any color your character's aura takes has a pale cast to it, as though he was a vampire."}
+ /*{"Any color your character's aura takes has a pale cast to it, as though he was a vampire.
+ Unless her player gains five chapter two or more successes on an Aura Perception roll,
+ any vampire discerns your character's aura as one belonging to the Kindred"}
+ */
+ value = 2
+ mob_trait = TRAIT_PALE_AURA
+ icon = FA_ICON_TEMPERATURE_EMPTY
+ allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL)
diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/time_sense.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/time_sense.dm
new file mode 100644
index 000000000000..132718fd3b99
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/time_sense.dm
@@ -0,0 +1,21 @@
+// W20 p. 475
+/datum/quirk/darkpack/time_sense
+ name = "Time Sense"
+ desc = {"You have an innate sense of time and are able to estimate the passage of time accurately without using a watch or other mechanical device,
+ even after long periods of unconsciousness. This allows you to know (among other things) what phase the moon is in."}
+ value = 1
+ mob_trait = TRAIT_TIME_SENSE
+ icon = FA_ICON_STOPWATCH
+
+/mob/proc/get_time_status()
+ . = list()
+ . += "Local City Time: [SSticker.round_start_timeofday ? "[station_time_timestamp("hh:mm MMM")] [CURRENT_STATION_YEAR]" : "The round hasn't started yet!"]"
+
+/mob/living/get_time_status()
+ . = list()
+ if(HAS_TRAIT(src, TRAIT_TIME_SENSE))
+ . += "Local City Time: [station_time_timestamp("hh:mm MMM")] [CURRENT_STATION_YEAR]"
+ . += "Phase of moon: [GLOB.moon_state]"
+ else
+ . += "Local City Time: [CURRENT_STATION_YEAR]? Get a watch."
+
diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/untamable.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/untamable.dm
new file mode 100644
index 000000000000..913de0114813
--- /dev/null
+++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/untamable.dm
@@ -0,0 +1,11 @@
+// W20 p. 476
+/datum/quirk/darkpack/untamable
+ name = "Untamable"
+ desc = {"You are a wild soul who has never bent to the leash.
+ You are immune to vampiric Domination (but not emotional manipulations via Presence)"}
+ // Change this line when we add these gifts.
+ // You are immune to vampiric Domination (but not emotional manipulations via Presence) and these Gifts will not work on you: Roll Over, Obedience, and Mastery."}
+ value = 5
+ mob_trait = TRAIT_MERIT_UNTAMABLE
+ icon = FA_ICON_SHIELD_DOG
+ allowed_splats = SPLAT_SHIFTERS
diff --git a/modular_darkpack/modules/powers/code/discipline/auspex/aura_component.dm b/modular_darkpack/modules/powers/code/discipline/auspex/aura_component.dm
index 8b7844cd5d0e..6a51ad8dc809 100644
--- a/modular_darkpack/modules/powers/code/discipline/auspex/aura_component.dm
+++ b/modular_darkpack/modules/powers/code/discipline/auspex/aura_component.dm
@@ -1,3 +1,5 @@
+#define AUSPEX_LAYER BELOW_MOB_LAYER
+
/datum/atom_hud/data/auspex_aura
hud_icons = list(AUSPEX_AURA_HUD)
@@ -41,7 +43,7 @@
var/image/holder = parent_mob.hud_list[AUSPEX_AURA_HUD]
if(!holder)
holder = new
- var/mutable_appearance/aura_appearance = mutable_appearance('modular_darkpack/modules/powers/icons/auras.dmi', "aura", ABOVE_MOB_LAYER, parent_mob, GAME_PLANE)
+ var/mutable_appearance/aura_appearance = mutable_appearance('modular_darkpack/modules/powers/icons/auras.dmi', "aura", AUSPEX_LAYER, parent_mob, GAME_PLANE)
update_aura_colors(aura_appearance, holder)
update_aura_overlays(aura_appearance, holder)
update_aura_filters(aura_appearance, holder)
@@ -62,9 +64,9 @@
holder.appearance = aura_appearance
var/mob/parent_mob = parent
- if(iskindred(parent_mob))
+ if(HAS_TRAIT(parent, TRAIT_PALE_AURA))
var/icon/temporary_icon_holder = holder.appearance
- var/mutable_appearance/aura_image = mutable_appearance(temporary_icon_holder, "aura", ABOVE_MOB_LAYER, parent_mob, GAME_PLANE)
+ var/mutable_appearance/aura_image = mutable_appearance(temporary_icon_holder, "aura", AUSPEX_LAYER, parent_mob, GAME_PLANE)
var/list/hsv_color_value = rgb2hsv(holder.color)
hsv_color_value[2] = hsv_color_value[2] * 0.7 // Reduce saturation for kindred
@@ -75,7 +77,7 @@
// DARKPACK TODO - aura still needs real sprites.
if(HAS_TRAIT(parent_mob, TRAIT_FRENETIC_AURA))
var/icon/temporary_icon_holder = holder.appearance
- var/mutable_appearance/aura_image = mutable_appearance(temporary_icon_holder, "old_aura_bright", ABOVE_MOB_LAYER, parent_mob, GAME_PLANE)
+ var/mutable_appearance/aura_image = mutable_appearance(temporary_icon_holder, "old_aura_bright", AUSPEX_LAYER, parent_mob, GAME_PLANE)
var/list/hsv_color_value = rgb2hsv(holder.color)
hsv_color_value[2] = hsv_color_value[2] * 1.5 // Way brighter for shapeshifters
@@ -95,15 +97,15 @@
if(current_aura == AURA_ANXIOUS)
var/icon/temporary_icon_holder = icon('modular_darkpack/modules/powers/icons/auras.dmi', "aura")
var/icon/static_icon = getStaticIcon(temporary_icon_holder)
- var/mutable_appearance/static_image = mutable_appearance(static_icon, "aura", ABOVE_MOB_LAYER+2, parent_mob, GAME_PLANE)
+ var/mutable_appearance/static_image = mutable_appearance(static_icon, "aura", AUSPEX_LAYER+0.01, parent_mob, GAME_PLANE)
static_image.appearance_flags |= RESET_COLOR
holder.add_overlay(static_image)
- if(isghoul(parent_mob))
+ if(!HAS_TRAIT(parent, TRAIT_PALE_AURA) && isghoul(parent_mob))
var/icon/temporary_icon_holder = icon('modular_darkpack/modules/powers/icons/auras.dmi', "aurablotch")
- var/mutable_appearance/aura_blotches = mutable_appearance(temporary_icon_holder, "aurablotch", ABOVE_MOB_LAYER+3, parent_mob, GAME_PLANE)
+ var/mutable_appearance/aura_blotches = mutable_appearance(temporary_icon_holder, "aurablotch", AUSPEX_LAYER+0.02, parent_mob, GAME_PLANE)
- var/list/hsv_color_value = rgb2hsv(aura_appearance.color)
+ var/list/hsv_color_value = rgb2hsv(holder.color)
hsv_color_value[2] = hsv_color_value[2] * 0.7 // Reduce saturation for ghouls
var/icon/icon_mask = getIconMask(aura_blotches)
@@ -122,3 +124,4 @@
if(HAS_TRAIT(parent_mob, TRAIT_IN_FRENZY))
apply_wibbly_filters(holder)
+#undef AUSPEX_LAYER
diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm
index 56d76f718711..0fa76fb66f82 100644
--- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm
+++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm
@@ -103,12 +103,15 @@
var/mypower = SSroll.storyteller_roll(owner_stat, difficulty = theirpower, roller = owner, numerical = TRUE)
//tremere have built-in safeguards to easily dominate their stone servitors
- var/mob/living/carbon/human/human_target = target
if(HAS_TRAIT(target, TRAIT_WEAK_TO_DOMINATE))
theirpower -= 2
+ if(HAS_TRAIT(target, TRAIT_WEAK_WILLED))
+ 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
for(var/obj/item/clothing/worn_item in human_target.get_equipped_items(INCLUDE_ABSTRACT))
total_tint += worn_item.tint
@@ -132,9 +135,13 @@
var/datum/splat/vampire/kindred/target_splat = iskindred(target)
if(target_splat)
if(owner_splat.generation > target_splat.generation)
- to_chat(owner, span_warning("Your fail to dominate [target], as their blood is more potent than yours!"))
+ to_chat(owner, span_warning("You fail to dominate [target], as their blood is more potent than yours!"))
return FALSE
+ if(HAS_TRAIT(target, TRAIT_MERIT_UNTAMABLE))
+ to_chat(owner, span_warning("You fail to dominate [target], they are an untamable beast!"))
+ return FALSE
+
if(numerical == TRUE)
return mypower
diff --git a/modular_darkpack/modules/powers/code/discipline/temporis/temporis.dm b/modular_darkpack/modules/powers/code/discipline/temporis/temporis.dm
index 839b6e4bb325..32264cf723b0 100644
--- a/modular_darkpack/modules/powers/code/discipline/temporis/temporis.dm
+++ b/modular_darkpack/modules/powers/code/discipline/temporis/temporis.dm
@@ -36,6 +36,9 @@
check_flags = DISC_CHECK_CONSCIOUS
vitae_cost = 0
+/datum/discipline_power/temporis/hourglass_of_the_mind/post_gain()
+ ADD_TRAIT(owner, TRAIT_TIME_SENSE, DISCIPLINE_TRAIT)
+
/datum/discipline_power/temporis/hourglass_of_the_mind/activate()
. = ..()
to_chat(owner, "[station_time_timestamp("hh:mm:ss")]")
diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm
index 175de38ea834..f0e060325e10 100644
--- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm
+++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm
@@ -15,7 +15,8 @@
TRAIT_VTM_MORALITY,
TRAIT_VTM_CLANS,
TRAIT_UNAGING,
- TRAIT_DRINKS_BLOOD
+ TRAIT_DRINKS_BLOOD,
+ TRAIT_PALE_AURA,
)
splat_actions = list(
/datum/action/cooldown/mob_cooldown/give_vitae,
diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/malkavian/malkavian.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/malkavian/malkavian.dm
index 650df4dd9f15..c1cd120ee8ff 100644
--- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/malkavian/malkavian.dm
+++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/malkavian/malkavian.dm
@@ -21,7 +21,7 @@
var/datum/action/cooldown/malk_speech/malk_font = new(vampire)
hivemind.Grant(vampire)
malk_font.Grant(vampire)
- vampire.add_quirk(/datum/quirk/derangement)
+ vampire.add_quirk(/datum/quirk/darkpack/derangement)
// Madness Network handling
LAZYADD(madness_network, vampire)
diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_species.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_species.dm
index 384cfec4311f..f411863ada61 100644
--- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_species.dm
+++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_species.dm
@@ -48,8 +48,7 @@
human_who_gained_species.add_offsets(type, w_add = mob_pixel_w, z_add = mob_pixel_z)
- for(var/key, value in form_bonus_stats)
- human_who_gained_species.st_add_stat_mod(key, value, type)
+ add_buffs(human_who_gained_species)
/datum/species/human/shifter/on_species_loss(mob/living/carbon/human/human, datum/species/new_species, pref_load)
. = ..()
@@ -58,9 +57,23 @@
human.remove_offsets(type)
+ clear_buffs(human)
+
+/datum/species/human/shifter/proc/add_buffs(mob/living/carbon/human/human)
+ for(var/key, value in form_bonus_stats)
+ if(!should_add_buff(human, key, value))
+ continue
+ human.st_add_stat_mod(key, value, type)
+
+/datum/species/human/shifter/proc/should_add_buff(mob/living/carbon/human/human, datum/st_stat/buff_type, amount)
+ return TRUE
+
+/datum/species/human/shifter/proc/clear_buffs(mob/living/carbon/human/human)
for(var/key, value in form_bonus_stats)
human.st_remove_stat_mod(key, type)
+/datum/species/human/shifter/proc/is_veil_breaching_form(mob/living/carbon/human/human)
+ return veil_breaching_form
/// Fetch the mobs fur color from their features.
/datum/species/human/shifter/proc/get_fur_color(mob/living/carbon/human/human)
@@ -137,20 +150,28 @@
fallback_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/garou_forms/glabro.dmi'
veil_breaching_form = TRUE
+/datum/species/human/shifter/bestial/should_add_buff(mob/living/carbon/human/human, datum/st_stat/buff_type, amount)
+ . = ..()
+ // Raw string check instead of a define or type path is pretty bleak
+ if(HAS_TRAIT(human, TRAIT_FAIR_GLABRO) && (buff_type::subcategory == "Social") && (amount < 0))
+ return FALSE
+
+/datum/species/human/shifter/bestial/is_veil_breaching_form(mob/living/carbon/human/human)
+ if(HAS_TRAIT(human, TRAIT_FAIR_GLABRO))
+ return FALSE
+ return ..()
+
/datum/species/human/shifter/bestial/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons)
. = ..()
human_who_gained_species.update_mob_height()
human_who_gained_species.update_transform(1.25)
-
- human_who_gained_species.remove_overlay(BODY_ADJ_LAYER)
-
- var/fur_color = get_fur_color(human_who_gained_species)
- var/mob_icon = get_mob_icon(human_who_gained_species)
-
- human_who_gained_species.overlays_standing[BODY_ADJ_LAYER] = list(image(mob_icon, fur_color))
-
- human_who_gained_species.apply_overlay(BODY_ADJ_LAYER)
+ if(!HAS_TRAIT(human_who_gained_species, TRAIT_FAIR_GLABRO))
+ human_who_gained_species.remove_overlay(BODY_ADJ_LAYER)
+ var/fur_color = get_fur_color(human_who_gained_species)
+ var/mob_icon = get_mob_icon(human_who_gained_species)
+ human_who_gained_species.overlays_standing[BODY_ADJ_LAYER] = list(image(mob_icon, fur_color))
+ human_who_gained_species.apply_overlay(BODY_ADJ_LAYER)
/datum/species/human/shifter/bestial/on_species_loss(mob/living/carbon/human/human, datum/species/new_species, pref_load)
. = ..()
diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm
index 1b5e676b5e10..3e9a6273d63c 100644
--- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm
+++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm
@@ -130,7 +130,7 @@
COOLDOWN_START(src, passive_healing_cd, 1 TURNS)
var/datum/species/human/shifter/shifter_species = owner.dna.species
if(istype(shifter_species))
- if(shifter_species.veil_breaching_form && !shifter_species.causes_delerium)
+ if(shifter_species.is_veil_breaching_form(owner) && (!shifter_species.causes_delerium || HAS_TRAIT(owner, TRAIT_PIERCED_VEIL)))
SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION)
// Being used to represent meditating in your caern
diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm
index 5988945b512a..966652e34c66 100644
--- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm
+++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm
@@ -19,7 +19,9 @@
to_chat(owner, span_warning("Your shifting is on cooldown for one turn."))
return
- if(ispath(get_breed_form_species(), form_to_transform))
+ if(HAS_TRAIT(owner, TRAIT_METAMORPH))
+ requires_roll = FALSE
+ else if(ispath(get_breed_form_species(), form_to_transform))
requires_roll = FALSE
else if(costs_rage)
if(adjust_rage(-1, TRUE))
@@ -38,7 +40,7 @@
transform_roll.difficulty = form_to_transform::shift_difficulty
switch(transform_roll.st_roll(owner, owner, PRIMAL_URGE_PLACEHOLDER))
if(ROLL_SUCCESS)
- EMPTY_BLOCK_GUARD
+ pass()
if(ROLL_FAILURE, ROLL_BOTCH)
return
@@ -60,6 +62,15 @@
addtimer(CALLBACK(src, PROC_REF(transform_finish), form_to_transform, time_to_transform), time_to_transform * 0.9)
/datum/splat/werewolf/shifter/proc/revert_to_breed_form()
+ if(HAS_TRAIT(owner, TRAIT_METAMORPH))
+ var/datum/storyteller_roll/metamorph/roll_datum = new()
+ if(roll_datum.st_roll(owner, bonus = PRIMAL_URGE_PLACEHOLDER) == ROLL_SUCCESS)
+ // First valid use of timeout discovered (we dont want to be able to hold it out)
+ var/choice = tgui_input_list(owner, "Revert to your choosen form", "Metamorph", transformation_list, get_breed_form_species(), 1 TURNS)
+ if(choice in transformation_list)
+ transform_fera(choice, force = TRUE)
+ return
+
transform_fera(get_breed_form_species(), force = TRUE)
/datum/splat/werewolf/shifter/proc/transform_finish(form_to_transform, time_taken = DOGGY_ANIMATION_TIME)
diff --git a/tgstation.dme b/tgstation.dme
index d8f50f6ef0ac..9a952b234821 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -7289,8 +7289,18 @@
#include "modular_darkpack\modules\matrix\code\job.dm"
#include "modular_darkpack\modules\matrix\code\matrix.dm"
#include "modular_darkpack\modules\merits_flaws\code\_darkpack_quirk.dm"
-#include "modular_darkpack\modules\merits_flaws\code\illegal_identity.dm"
-#include "modular_darkpack\modules\merits_flaws\code\permanent_fangs.dm"
+#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\animal_musk.dm"
+#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\derangement.dm"
+#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\weak_willed.dm"
+#include "modular_darkpack\modules\merits_flaws\code\neutral_quirks\illegal_identity.dm"
+#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\beserk.dm"
+#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\fair_glabro.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\time_sense.dm"
+#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\untamable.dm"
#include "modular_darkpack\modules\mob_spawners\code\citizen.dm"
#include "modular_darkpack\modules\movie_theatre\code\areas.dm"
#include "modular_darkpack\modules\movie_theatre\code\fluff.dm"
@@ -7445,7 +7455,6 @@
#include "modular_darkpack\modules\powers\code\discipline\vicissitude\fleshwalls.dm"
#include "modular_darkpack\modules\powers\code\discipline\vicissitude\human_flesh.dm"
#include "modular_darkpack\modules\preferences\height_preference.dm"
-#include "modular_darkpack\modules\quirks\code\negative_quirks\derangement.dm"
#include "modular_darkpack\modules\radios\code\admin_verb.dm"
#include "modular_darkpack\modules\radios\code\radio.dm"
#include "modular_darkpack\modules\radios\code\transceiver.dm"