From ecb5d668001b8e23d2d1e138799ddfbc524b0af5 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Thu, 30 Jul 2026 23:26:20 -0400 Subject: [PATCH 01/31] so it begins --- code/__DEFINES/~darkpack/fera/fera.dm | 12 ++++ code/__DEFINES/~darkpack/splats.dm | 3 +- config/darkpack_config.txt | 1 + .../code/changing_breeds/ananasi.dm | 0 .../code/preferences/breed.dm | 4 ++ .../code/preferences/fur.dm | 7 +++ .../code/splats/fera_splat.dm | 56 +++++++++++++++++- .../code/splats/is_werewolf_helpers.dm | 5 ++ .../code/splats/pref_lore.dm | 35 +++++++++++ .../code/subsplats/breeds/ananasi.dm | 29 +++++++++ .../sounds/ananasi_transform.ogg | Bin 0 -> 68795 bytes 11 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg diff --git a/code/__DEFINES/~darkpack/fera/fera.dm b/code/__DEFINES/~darkpack/fera/fera.dm index fd28eb1c24c2..df121dccc279 100644 --- a/code/__DEFINES/~darkpack/fera/fera.dm +++ b/code/__DEFINES/~darkpack/fera/fera.dm @@ -16,6 +16,9 @@ #define BREED_CORAX_HOMID "Corax Homid" #define BREED_CORVID "Corvid" +#define BREED_ANANASI_HOMID "Ananasi Homid" +#define BREED_ARACHNID "Arachnid" + #define FEATURE_FUR_COLOR "fera_fur" // fera will likely have a seperate list of colors but uses the same feature or var as other fera @@ -37,5 +40,14 @@ GLOBAL_LIST_INIT(corax_fur_colors, list( "gray" = "gray", )) +GLOBAL_LIST_INIT(ananasi_fur_colors, list( + "black" = "black", + "brown" = "brown", + "white" = "white", + "green" = "green", + "red" = "red", + "gray" = "gray", +)) + #define STATUS_EFFECT_DELIRIUM /datum/status_effect/delirium #define STATUS_EFFECT_SILVER_BULLET_STACKS /datum/status_effect/stacking/silver_bullets diff --git a/code/__DEFINES/~darkpack/splats.dm b/code/__DEFINES/~darkpack/splats.dm index 81d9e7fa4d1c..5f7fb2519f7b 100644 --- a/code/__DEFINES/~darkpack/splats.dm +++ b/code/__DEFINES/~darkpack/splats.dm @@ -9,7 +9,8 @@ //#define SPLAT_FERA "splat_fera" #define SPLAT_GAROU "splat_garou" #define SPLAT_CORAX "splat_corax" -#define SPLAT_SHIFTERS list(SPLAT_GAROU, SPLAT_CORAX) +#define SPLAT_ANANASI "splat_ananasi" +#define SPLAT_SHIFTERS list(SPLAT_GAROU, SPLAT_CORAX, SPLAT_ANANASI) #define SPLAT_PRIO_HALFSPLAT 100 #define SPLAT_PRIO_SPLAT 200 diff --git a/config/darkpack_config.txt b/config/darkpack_config.txt index 83b5ea25d2df..3f5704bea59c 100644 --- a/config/darkpack_config.txt +++ b/config/darkpack_config.txt @@ -44,6 +44,7 @@ ROUNDSTART_SPLATS splat_ghoul ROUNDSTART_SPLATS splat_kinfolk ROUNDSTART_SPLATS splat_garou ROUNDSTART_SPLATS splat_corax +ROUNDSTART_SPLATS splat_ananasi ## If dead people and ghosts can LOOC to people who are alive. DISABLE_GHOST_LOOC diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm index 91721e020a9d..87fad1c15a80 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm @@ -44,3 +44,7 @@ /datum/preference/choiced/subsplat/fera_breed/coeax savefile_key = "corax_breed" splat_id = SPLAT_CORAX + +/datum/preference/choiced/subsplat/fera_breed/ananasi + savefile_key = "ananasi_breed" + splat_id = SPLAT_ANANASI diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/fur.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/fur.dm index 7c735ce164ba..bc0d52a29a88 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/fur.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/fur.dm @@ -33,3 +33,10 @@ /datum/preference/choiced/fera_fur_color/corax/init_possible_values() return assoc_to_keys(GLOB.corax_fur_colors) + +/datum/preference/choiced/fera_fur_color/ananasi + savefile_key = "ananasi_fur_color" + splat_id = SPLAT_ANANASI + +/datum/preference/choiced/fera_fur_color/ananasi/init_possible_values() + return assoc_to_keys(GLOB.ananasi_fur_colors) 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 25879e16cd88..21cf14f7d022 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 @@ -171,9 +171,9 @@ var/datum/species/human/shifter/shifter_species = owner.dna.species if(istype(shifter_species)) - if(shifter_species.is_veil_breaching_form(owner) && !causes_delirium()) + if(shifter_species.is_veil_breaching_form(owner) && (!shifter_species.form_causes_delirium || HAS_TRAIT(owner, TRAIT_PIERCED_VEIL))) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - if(causes_delirium()) + if(shifter_species.form_causes_delirium) for(var/mob/living/carbon/human/guy in oviewers(owner, DEFAULT_SIGHT_DISTANCE)) if(!guy.affected_by_delirium()) continue @@ -181,7 +181,7 @@ /datum/splat/werewolf/shifter/proc/causes_delirium() var/datum/species/human/shifter/shifter_species = owner.dna.species - if(istype(shifter_species)) + if(!istype(shifter_species)) return FALSE if(shifter_species.form_causes_delirium && !HAS_TRAIT(owner, TRAIT_PIERCED_VEIL)) return TRUE @@ -253,6 +253,7 @@ transformation_list = list( /datum/species/human/shifter/homid, /datum/species/human/shifter/war, + /datum/species/human/shifter/dire, /datum/species/human/shifter/feral ) transformation_stats = list( @@ -289,6 +290,52 @@ . = ..() remove_power(/datum/action/cooldown/power/gift/eye_drink) +// START - ANANASI SPLAT + +/datum/splat/werewolf/shifter/ananasi + name = "Ananasi" + id = SPLAT_ANANASI + splat_traits = list( + TRAIT_FERA_FORMS, + TRAIT_FERA_FUR, + TRAIT_FERA_RENOWN, + ) + transformation_list = list( + /datum/species/human/shifter/homid, + /datum/species/human/shifter/war, + /datum/species/human/shifter/dire, + /datum/species/human/shifter/feral + ) + transformation_stats = list( + SPECIES_FERA_WAR = list( + STAT_STRENGTH = 3, + STAT_STAMINA = 2, + STAT_DEXTERITY = 3, + STAT_MANIPULATION = -1, + STAT_APPEARANCE = -1 + ), + SPECIES_FERA_FERAL = list( + STAT_DEXTERITY = 6, + ), + SPECIES_FERA_DIRE = list( + STAT_STRENGTH = 4, + STAT_DEXTERITY = 2, + STAT_MANIPULATION = -3, + STAT_APPEARANCE = -2 + ) + ) + transform_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg' + mob_icons = list( + SPECIES_FERA_BESTIAL = 'icons/mob/simple/smspider.dmi', + SPECIES_FERA_WAR = 'icons/mob/simple/smspider.dmi', + SPECIES_FERA_DIRE = 'icons/mob/simple/smspider.dmi', + SPECIES_FERA_FERAL = 'icons/mob/simple/smspider.dmi' + ) + transform_hud_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/hud_transforms.dmi' + mimmicing_animal = /mob/living/basic/spider/giant/viper + + warcry_emote = "hiss" + /mob/living/carbon/human/splat/kinfolk auto_splats = list(/datum/splat/werewolf/kinfolk) @@ -298,3 +345,6 @@ /mob/living/carbon/human/splat/corax auto_splats = list(/datum/splat/werewolf/shifter/corax) + +/mob/living/carbon/human/splat/ananasi + auto_splats = list(/datum/splat/werewolf/shifter/ananasi) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm index 1054fee7653b..82b47ad705e7 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm @@ -21,6 +21,11 @@ return character.get_splat(/datum/splat/werewolf/shifter/corax) +/proc/get_ananasi_splat(mob/character) + RETURN_TYPE(/datum/splat/werewolf/shifter/ananasi) + + return character.get_splat(/datum/splat/werewolf/shifter/ananasi) + /proc/get_kinfolk_splat(mob/character) RETURN_TYPE(/datum/splat/werewolf/kinfolk) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm index b872709d2888..2015a35e7a0f 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm @@ -96,3 +96,38 @@ ) return to_add + +// START - ANANASI SPLAT +/datum/splat/werewolf/shifter/ananasi/prepare_human_for_preview(mob/living/carbon/human/human) + human.set_haircolor("#241e1c", update = FALSE) + human.set_hairstyle("Long Over Eye (ALT)", update = TRUE) + human.undershirt = "Shirt (Black)" + human.update_body() + +/datum/splat/werewolf/shifter/ananasi/get_splat_description() + return "Lorem Ipsum" + +/datum/splat/werewolf/shifter/ananasi/get_splat_lore() + return list( + "Lorem Ipsum", + ) + +/datum/splat/werewolf/shifter/corax/create_pref_unique_perks() + var/list/to_add = list() + + to_add += list( + list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = FA_ICON_SPIDER, + SPECIES_PERK_NAME = "Shapeshifting", + SPECIES_PERK_DESC = "Ananasi can shift between 4 different forms that grant them bonuses.", + ), + list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = FA_ICON_BAND_AID, + SPECIES_PERK_NAME = "Passive healing", + SPECIES_PERK_DESC = "Ananasi have a strong passive healing while outside of their breed form.", + ), + ) + + return to_add diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm new file mode 100644 index 000000000000..10304d863c86 --- /dev/null +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -0,0 +1,29 @@ +/datum/subsplat/werewolf/breed_form/ananasi + abstract_type = /datum/subsplat/werewolf/breed_form/ananasi + fera_restriction = SPLAT_ANANASI + +/datum/subsplat/werewolf/breed_form/ananasi/homid + name = BREED_ANANASI_HOMID + start_gnosis = 6 + breed_species = /datum/species/human/shifter/homid + gifts_provided = list( + /datum/action/cooldown/power/gift/enemy_ways, + /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/spirit_speech, + ) + +/datum/subsplat/werewolf/breed_form/ananasi/arachnid + name = BREED_ARACHNID + start_gnosis = 6 + breed_species = /datum/species/human/shifter/feral + gifts_provided = list( + /datum/action/cooldown/power/gift/enemy_ways, + /datum/action/cooldown/power/gift/scent_of_the_true_form, + // /datum/action/cooldown/power/gift/spirit_speech, + /datum/action/cooldown/power/gift/truth_of_gaia, + ) + +/datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) + var/datum/universal_icon/breed_crinos = uni_icon('modular_darkpack/modules/werewolf_the_apocalypse/icons/corax_forms/corvid.dmi', "black") + breed_crinos.scale(32, 32) + main_icon.blend_icon(breed_crinos, ICON_OVERLAY) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg new file mode 100644 index 0000000000000000000000000000000000000000..60bc29226fc65d838bd02b2af29adcb4d921d2cd GIT binary patch literal 68795 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 literal 0 HcmV?d00001 From 3b0266efe659cf0979f71211bb9b1384987cf3ee Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Sun, 2 Aug 2026 07:14:16 -0400 Subject: [PATCH 02/31] hmmmm not yet plus it doesnt work anyways --- .../modules/werewolf_the_apocalypse/code/splats/fera_splat.dm | 1 - 1 file changed, 1 deletion(-) 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 21cf14f7d022..a91475b64bda 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 @@ -326,7 +326,6 @@ ) transform_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg' mob_icons = list( - SPECIES_FERA_BESTIAL = 'icons/mob/simple/smspider.dmi', SPECIES_FERA_WAR = 'icons/mob/simple/smspider.dmi', SPECIES_FERA_DIRE = 'icons/mob/simple/smspider.dmi', SPECIES_FERA_FERAL = 'icons/mob/simple/smspider.dmi' From b654b60612d1a35fe1f702fcd3bab5df5cde9b23 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Tue, 11 Aug 2026 08:38:13 -0400 Subject: [PATCH 03/31] Update vamp_bite.dm --- modular_darkpack/modules/blood_drinking/code/vamp_bite.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm index fa40f0cc91b5..36bfdb708925 100644 --- a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm +++ b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm @@ -10,6 +10,11 @@ SEND_SOUND(src, sound('modular_darkpack/modules/blood_drinking/sounds/need_blood.ogg', volume = 75)) to_chat(src, span_warning("You're not desperate enough to try that.")) return + if(get_ananasi_splat(src)) + if(get_kindred_splat(bit_living)) + SEND_SOUND(src, sound('modular_darkpack/modules/blood_drinking/sounds/need_blood.ogg', volume = 75)) + to_chat(src, span_warning("This BLOOD is toxic to you!")) + return // Allow ghouls to steal viate? if(get_ghoul_splat(src)) if(!get_kindred_splat(bit_living)) From 21d7fac405700ea06760d6b2b258505b839bf700 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Tue, 11 Aug 2026 18:06:33 -0400 Subject: [PATCH 04/31] Update ananasi.dm --- .../code/subsplats/breeds/ananasi.dm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index 10304d863c86..8b807d01760a 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -4,23 +4,22 @@ /datum/subsplat/werewolf/breed_form/ananasi/homid name = BREED_ANANASI_HOMID - start_gnosis = 6 + start_gnosis = 3 breed_species = /datum/species/human/shifter/homid gifts_provided = list( - /datum/action/cooldown/power/gift/enemy_ways, - /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/sense_wyrm, /datum/action/cooldown/power/gift/spirit_speech, + /datum/action/cooldown/power/gift/resist_pain ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid name = BREED_ARACHNID - start_gnosis = 6 + start_gnosis = 3 breed_species = /datum/species/human/shifter/feral gifts_provided = list( - /datum/action/cooldown/power/gift/enemy_ways, - /datum/action/cooldown/power/gift/scent_of_the_true_form, - // /datum/action/cooldown/power/gift/spirit_speech, - /datum/action/cooldown/power/gift/truth_of_gaia, + /datum/action/cooldown/power/gift/sense_wyrm, + /datum/action/cooldown/power/gift/spirit_speech, + /datum/action/cooldown/power/gift/resist_pain ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) From bdb84e1f3890e8beba1de25caa23b750a1ba85a0 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Tue, 11 Aug 2026 21:28:43 -0400 Subject: [PATCH 05/31] oh my god bruh --- modular_darkpack/modules/blood_drinking/code/vamp_bite.dm | 6 ++++-- .../code/subsplats/breeds/ananasi.dm | 4 ++-- tgstation.dme | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm index 36bfdb708925..77cde83a4ddb 100644 --- a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm +++ b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm @@ -6,7 +6,7 @@ if(grab_state > GRAB_PASSIVE) if(isliving(pulling)) var/mob/living/bit_living = pulling - if(!get_vampire_splat(src)) + if(!get_vampire_splat(src) && !get_ananasi_splat(src)) SEND_SOUND(src, sound('modular_darkpack/modules/blood_drinking/sounds/need_blood.ogg', volume = 75)) to_chat(src, span_warning("You're not desperate enough to try that.")) return @@ -69,7 +69,9 @@ if(get_kindred_splat(src)) bit_living.emote("groan") - else if(get_ghoul_splat(src)) + if(get_ghoul_splat(src)) + bit_living.emote("scream") + if(get_ananasi_splat(src)) bit_living.emote("scream") if(ishuman(bit_living)) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index 8b807d01760a..27e5193291a6 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -9,7 +9,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/sense_wyrm, /datum/action/cooldown/power/gift/spirit_speech, - /datum/action/cooldown/power/gift/resist_pain + /datum/action/cooldown/power/gift/resist_pain, ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid @@ -19,7 +19,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/sense_wyrm, /datum/action/cooldown/power/gift/spirit_speech, - /datum/action/cooldown/power/gift/resist_pain + /datum/action/cooldown/power/gift/resist_pain, ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) diff --git a/tgstation.dme b/tgstation.dme index 4c46ae943d84..85fa44583392 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8260,6 +8260,7 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\_breed.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\corax.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\garou.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\_tribe.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\weapons\klaives.dm" From 4cc4fc137acb4fb8d419db38bab20fa6f56aa386 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Tue, 11 Aug 2026 22:41:30 -0400 Subject: [PATCH 06/31] stolen moments --- .../code/changing_breeds/ananasi.dm | 29 +++++++++++++++++++ .../code/subsplats/breeds/ananasi.dm | 6 ++-- tgstation.dme | 1 + 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index e69de29bb2d1..dfd9f9046b9a 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -0,0 +1,29 @@ +/datum/action/cooldown/power/gift/stolen_moments + name = "Stolen Moments" + desc = "This Gift allows the Ananasi to literally steal away the last few minutes of memories from another being." + button_icon_state = "dominate" + click_to_activate = TRUE + rank = 1 + + gnosis_cost = 1 + +/datum/action/cooldown/power/gift/stolen_moments/Activate(atom/target) + var/mob/living/living_target = astype(target) + if(!living_target) + return FALSE + + . = ..() + + var/datum/splat/werewolf/shifter/shifter_splat = get_shifter_splat(owner) + var/datum/subsplat/werewolf/breed_form/breed = shifter_splat?.breed_form + var/datum/storyteller_roll/roll_datum = new() + roll_datum.difficulty = living_target.st_get_stat(STAT_TEMPORARY_WILLPOWER) + roll_datum.roll_output_type = ROLL_PRIVATE_AND_TARGET + var/roll_result = roll_datum.st_roll(owner, target, breed?.start_gnosis || 0) + + if(roll_result != ROLL_SUCCESS) + return + + SEND_SOUND(target, sound('modular_darkpack/modules/powers/sounds/dominate.ogg', volume = 50)) + SEND_SIGNAL(target, COMSIG_ALL_MASQUERADE_REINFORCE) + to_chat(target, span_hypnophrase("At [owner]'s touch, the last fifteen minutes of your memory are stolen away. You feel a sense of confusion and disorientation as you struggle to recall what just happened.")) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index 27e5193291a6..aaad930ea051 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -4,22 +4,24 @@ /datum/subsplat/werewolf/breed_form/ananasi/homid name = BREED_ANANASI_HOMID - start_gnosis = 3 + start_gnosis = 4 breed_species = /datum/species/human/shifter/homid gifts_provided = list( /datum/action/cooldown/power/gift/sense_wyrm, /datum/action/cooldown/power/gift/spirit_speech, /datum/action/cooldown/power/gift/resist_pain, + /datum/action/cooldown/power/gift/stolen_moments ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid name = BREED_ARACHNID - start_gnosis = 3 + start_gnosis = 4 breed_species = /datum/species/human/shifter/feral gifts_provided = list( /datum/action/cooldown/power/gift/sense_wyrm, /datum/action/cooldown/power/gift/spirit_speech, /datum/action/cooldown/power/gift/resist_pain, + /datum/action/cooldown/power/gift/stolen_moments ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) diff --git a/tgstation.dme b/tgstation.dme index 85fa44583392..c75ad4fdcd2c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8213,6 +8213,7 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\basic_mobs\corvid\_bird.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\basic_mobs\corvid\bird_ai.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\changing_breeds\corax.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\changing_breeds\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\_gift.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\auspices\ahroun.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\auspices\galliard.dm" From 0a53ff0c8130026ab0b9b497ecd1afdc06c735e5 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Tue, 11 Aug 2026 23:54:55 -0400 Subject: [PATCH 07/31] placeholder sprites n rage --- .../code/splats/fera_splat.dm | 7 ++++--- .../code/subsplats/breeds/ananasi.dm | 2 +- .../icons/ananasi_forms/crawlerling.dmi | Bin 0 -> 7474 bytes .../icons/ananasi_forms/lilian.dmi | Bin 0 -> 7450 bytes .../icons/ananasi_forms/pithus.dmi | Bin 0 -> 7450 bytes tgstation.dme | 4 ++-- .../character_preferences/darkpack_fur_color.tsx | 5 +++++ 7 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/pithus.dmi 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 6db1e50994ed..136bbcd5e2f8 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 @@ -296,6 +296,7 @@ /datum/splat/werewolf/shifter/ananasi name = "Ananasi" id = SPLAT_ANANASI + uses_rage = FALSE splat_traits = list( TRAIT_FERA_FORMS, TRAIT_FERA_FUR, @@ -327,9 +328,9 @@ ) transform_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg' mob_icons = list( - SPECIES_FERA_WAR = 'icons/mob/simple/smspider.dmi', - SPECIES_FERA_DIRE = 'icons/mob/simple/smspider.dmi', - SPECIES_FERA_FERAL = 'icons/mob/simple/smspider.dmi' + SPECIES_FERA_WAR = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi', + SPECIES_FERA_DIRE = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/pithus.dmi', + SPECIES_FERA_FERAL = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi' ) transform_hud_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/hud_transforms.dmi' mimmicing_animal = /mob/living/basic/spider/giant/viper diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index aaad930ea051..f5e381b9eacc 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -25,6 +25,6 @@ ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) - var/datum/universal_icon/breed_crinos = uni_icon('modular_darkpack/modules/werewolf_the_apocalypse/icons/corax_forms/corvid.dmi', "black") + var/datum/universal_icon/breed_crinos = uni_icon('modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi', "black") breed_crinos.scale(32, 32) main_icon.blend_icon(breed_crinos, ICON_OVERLAY) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5f237db20253d95b2cd8a17f965fcb20a81b9de9 GIT binary patch literal 7474 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 Y2hFF?8{k>AbpQYW07*qoM6N<$f^r(hQUCw| literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/pithus.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/pithus.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c99595a890ffbfca6d55bc4f690974f14399a7ff GIT binary patch literal 7450 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 Y2hFF?8{k>AbpQYW07*qoM6N<$f^r(hQUCw| literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index c75ad4fdcd2c..74ae7d0ed112 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8212,8 +8212,8 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\basic_mobs\banes\suffocating.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\basic_mobs\corvid\_bird.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\basic_mobs\corvid\bird_ai.dm" -#include "modular_darkpack\modules\werewolf_the_apocalypse\code\changing_breeds\corax.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\changing_breeds\ananasi.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\changing_breeds\corax.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\_gift.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\auspices\ahroun.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\auspices\galliard.dm" @@ -8259,9 +8259,9 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\auspices\_auspice.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\auspices\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\_breed.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\corax.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\garou.dm" -#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\_tribe.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\weapons\klaives.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fur_color.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fur_color.tsx index f6bb6b7f0fa4..f133df4830b4 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fur_color.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fur_color.tsx @@ -10,3 +10,8 @@ export const corax_fur_color: FeatureChoiced = { name: 'Corax Feather Color', component: FeatureDropdownInput, }; + +export const ananasi_fur_color: FeatureChoiced = { + name: 'Ananasi Fur Color', + component: FeatureDropdownInput, +}; From 09bd81d684107b48b806e643b0ff11b0fc3e5e35 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 12 Aug 2026 10:39:40 -0400 Subject: [PATCH 08/31] hghghgh --- .../spider/giant_spider/giant_spiders.dm | 6 ++ .../code/changing_breeds/ananasi.dm | 59 +++++++++++++++++++ .../code/splats/fera_splat.dm | 5 +- .../code/subsplats/breeds/ananasi.dm | 6 +- 4 files changed, 71 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm index 10db1405eeac..bccac6c0dbcd 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm @@ -596,3 +596,9 @@ AddElement(/datum/element/pet_bonus, "chitter") AddElement(/datum/element/ai_retaliate) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + +// Ananasi Subtype +/mob/living/basic/spider/giant/arachnid + name = "spider" + desc = "Furry and black, it makes you shudder to look at it." + speak_emote = list("hiss") diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index dfd9f9046b9a..cb5c82c605b4 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -27,3 +27,62 @@ SEND_SOUND(target, sound('modular_darkpack/modules/powers/sounds/dominate.ogg', volume = 50)) SEND_SIGNAL(target, COMSIG_ALL_MASQUERADE_REINFORCE) to_chat(target, span_hypnophrase("At [owner]'s touch, the last fifteen minutes of your memory are stolen away. You feel a sense of confusion and disorientation as you struggle to recall what just happened.")) + +/datum/action/cooldown/power/gift/breath_of_the_wyld/inspire + name = "Inspire" + desc = "The Ananasi instills a target with a rush of lucidity." + +/datum/action/cooldown/power/gift/breath_of_the_wyld/inspire/Activate(atom/target) + if(!isliving(target)) + return + if(!(target in range(1, owner))) + return + + . = ..() + + var/mob/living/victim = target + var/mob/living/caster = owner + var/datum/splat/werewolf/casting_splat = get_werewolf_splat(caster) + var/roll_difficulty = get_werewolf_splat(target) ? 5 : 6 + if(!roll_datum) + roll_datum = new() + roll_datum.difficulty = roll_difficulty + roll_datum.roll_output_type = ROLL_PRIVATE_AND_TARGET + var/roll_result = roll_datum.st_roll(caster, target, casting_splat.gnosis) + + if(roll_result != ROLL_SUCCESS) + return + + victim.apply_status_effect(/datum/status_effect/breath_of_the_wyld) + + StartCooldown() + return TRUE + +/datum/status_effect/breath_of_the_wyld + id = "breath_of_the_wyld" + duration = 1 SCENES + + status_type = STATUS_EFFECT_REPLACE + + alert_type = /atom/movable/screen/alert/status_effect/breath_of_the_wyld + +/datum/status_effect/breath_of_the_wyld/on_apply() + owner.st_add_stat_mod(STAT_PERCEPTION, 1, type) + owner.st_add_stat_mod(STAT_INTELLIGENCE, 1, type) + owner.st_add_stat_mod(STAT_WITS, 1, type) + ADD_TRAIT(owner, TRAIT_DIFFICULT_RAGE, type) + to_chat(owner, span_notice("You feel a sense of heightened lucidity.")) + return TRUE + +/datum/status_effect/breath_of_the_wyld/on_remove() + owner.st_remove_stat_mod(STAT_PERCEPTION, type) + owner.st_remove_stat_mod(STAT_INTELLIGENCE, type) + owner.st_remove_stat_mod(STAT_WITS, type) + REMOVE_TRAIT(owner, TRAIT_DIFFICULT_RAGE, type) + to_chat(owner, span_warning("Your mind settles, returning to it's normal state of lucidity.")) + +/atom/movable/screen/alert/status_effect/breath_of_the_wyld/inspire + name = "Inspire" + desc = "Gain an additional die to all mental checks, but suffer a penalty to rage check difficulty." + icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi' + icon_state = "riddle" // TODO: get an icon for this 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 136bbcd5e2f8..05dd7dc0f912 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 @@ -333,10 +333,13 @@ SPECIES_FERA_FERAL = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi' ) transform_hud_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/hud_transforms.dmi' - mimmicing_animal = /mob/living/basic/spider/giant/viper + mimmicing_animal = /mob/living/basic/spider/giant/arachnid warcry_emote = "hiss" +/datum/splat/werewolf/shifter/ananasi/on_gain() + . = ..() + to_chat(owner, span_boldnotice("You are playing a splat that is capable of infiltrating roles that other splats cannot. Do so carefully and responsibly, and always be courteous to your fellow players.")) /mob/living/carbon/human/splat/kinfolk auto_splats = list(/datum/splat/werewolf/kinfolk) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index f5e381b9eacc..8dea67edf648 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -7,8 +7,7 @@ start_gnosis = 4 breed_species = /datum/species/human/shifter/homid gifts_provided = list( - /datum/action/cooldown/power/gift/sense_wyrm, - /datum/action/cooldown/power/gift/spirit_speech, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, /datum/action/cooldown/power/gift/resist_pain, /datum/action/cooldown/power/gift/stolen_moments ) @@ -18,8 +17,7 @@ start_gnosis = 4 breed_species = /datum/species/human/shifter/feral gifts_provided = list( - /datum/action/cooldown/power/gift/sense_wyrm, - /datum/action/cooldown/power/gift/spirit_speech, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, /datum/action/cooldown/power/gift/resist_pain, /datum/action/cooldown/power/gift/stolen_moments ) From 46f11cb16f05d8548c779145455ee2eccd07ae70 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 12 Aug 2026 16:56:27 -0400 Subject: [PATCH 09/31] gift stuff --- .../code/changing_breeds/ananasi.dm | 41 +++++++++++++++++- .../code/gifts/auspices/philodox.dm | 2 +- .../code/splats/pref_lore.dm | 5 ++- .../code/subsplats/breeds/ananasi.dm | 7 ++- .../icons/werewolf_abilities.dmi | Bin 20008 -> 10869 bytes 5 files changed, 49 insertions(+), 6 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index cb5c82c605b4..6fe2929535e6 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -1,7 +1,46 @@ +/datum/action/cooldown/power/gift/bloodheal + name = "Blood Heal" + desc = "The Ananasi can heal their wounds by drawing on their own blood." + button_icon_state = "bloodheal" + click_to_activate = FALSE + rank = 1 + handles_spend_resources = FALSE + +/datum/action/cooldown/power/gift/bloodheal/can_afford(feedback) + var/mob/living/human_owner = astype(owner) + if(!human_owner) + return ..() + if(human_owner.bloodpool < 1) + if(feedback) + to_chat(owner, span_warning("You don't have enough blood to cast [src]!")) + return FALSE + return ..() + +/datum/action/cooldown/power/gift/bloodheal/spend_resources() + var/mob/living/human_owner = astype(owner) + . = ..() + if(human_owner) + human_owner.adjust_blood_pool(-1) + +/datum/action/cooldown/power/gift/bloodheal/Activate(atom/target) + var/mob/living/human_owner = astype(owner) + if(!human_owner) + return FALSE + if(!do_after(human_owner, 1 TURNS)) + return FALSE + + . = ..() + + human_owner.heal_ordered_damage(30, list(BRUTE, TOX, OXY, STAMINA)) + human_owner.heal_ordered_damage(6, list(BURN, AGGRAVATED)) + human_owner.update_damage_overlays() + human_owner.update_health_hud() + return TRUE + /datum/action/cooldown/power/gift/stolen_moments name = "Stolen Moments" desc = "This Gift allows the Ananasi to literally steal away the last few minutes of memories from another being." - button_icon_state = "dominate" + button_icon_state = "stolen_moments" click_to_activate = TRUE rank = 1 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm index a9344b5e2184..14bf25741e3e 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm @@ -1,7 +1,7 @@ /datum/action/cooldown/power/gift/resist_pain name = "Resist Pain" - desc = "Through force of will, the Philodox is able to ignore the pain of his wounds and continue acting normally." + desc = "Through force of will, the Fera is able to ignore the pain of their wounds and continue acting normally." button_icon_state = "resist_pain" rank = 1 willpower_cost = 1 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm index 7f4088a16308..fd201d991c17 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm @@ -96,9 +96,10 @@ // START - ANANASI SPLAT /datum/splat/werewolf/shifter/ananasi/prepare_human_for_preview(mob/living/carbon/human/human) - human.set_haircolor("#241e1c", update = FALSE) - human.set_hairstyle("Long Over Eye (ALT)", update = TRUE) + human.set_haircolor("#50504f", update = FALSE) + human.set_hairstyle("Wisp", update = TRUE) human.undershirt = "Shirt (Black)" + human.glasses = "Prescription Glasses" human.update_body() /datum/splat/werewolf/shifter/ananasi/get_splat_description() diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index 8dea67edf648..7b964b81c68e 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -1,6 +1,7 @@ /datum/subsplat/werewolf/breed_form/ananasi abstract_type = /datum/subsplat/werewolf/breed_form/ananasi fera_restriction = SPLAT_ANANASI + roleplay_level = "Advanced" /datum/subsplat/werewolf/breed_form/ananasi/homid name = BREED_ANANASI_HOMID @@ -9,7 +10,8 @@ gifts_provided = list( /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, /datum/action/cooldown/power/gift/resist_pain, - /datum/action/cooldown/power/gift/stolen_moments + /datum/action/cooldown/power/gift/stolen_moments, + /datum/action/cooldown/power/gift/bloodheal ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid @@ -19,7 +21,8 @@ gifts_provided = list( /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, /datum/action/cooldown/power/gift/resist_pain, - /datum/action/cooldown/power/gift/stolen_moments + /datum/action/cooldown/power/gift/stolen_moments, + /datum/action/cooldown/power/gift/bloodheal ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi index c7d80d11f83f2b9c6ca768040463a1dd8732e52b..3cb07f0c275658d9b1d63ca028e874ae12ae6e68 100644 GIT binary patch literal 10869 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 As{jB1 literal 20008 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 Date: Wed, 12 Aug 2026 17:08:17 -0400 Subject: [PATCH 10/31] the dehowlening --- .../werewolf_the_apocalypse/code/gifts/innate/howling.dm | 9 +-------- .../werewolf_the_apocalypse/code/splats/fera_splat.dm | 3 --- .../code/subsplats/breeds/garou.dm | 3 +++ 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm index 92136aa6ff92..411f88665099 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm @@ -4,42 +4,35 @@ button_icon_state = "call_of_the_wyld" rage_cost = 1 check_flags = null - innate_ability = TRUE + innate_ability = FALSE var/static/list/howls = list( "attack" = list( "menu" = "Attack", SPLAT_GAROU = "A wolf howls a fierce call to attack", - SPLAT_CORAX = "A raven hisses a fierce call to attack" ), "retreat" = list( "menu" = "Retreat", SPLAT_GAROU = "A wolf howls a warning to retreat", - SPLAT_CORAX = "A raven squawks a warning to retreat" ), "help" = list( "menu" = "Help", SPLAT_GAROU = "A wolf howls a desperate plea for help", - SPLAT_CORAX = "A raven shrieks a a desperate plea for help" ), "gather" = list( "menu" = "Gather", SPLAT_GAROU = "A wolf howls to gather the pack", - SPLAT_CORAX = "A raven beckons the conspiracy" ), "victory" = list( "menu" = "Victory", SPLAT_GAROU = "A wolf howls in celebration of victory", - SPLAT_CORAX = "A raven croaks in celebration of victory" ), "dying" = list( "menu" = "Dying", SPLAT_GAROU = "A wolf howls in pain and despair", - SPLAT_CORAX = "A raven shrieks in pain and despair" ), "mourning" = list( "menu" = "Mourning", SPLAT_GAROU = "A wolf howls in deep mourning for the fallen", - SPLAT_CORAX = "A raven mourns the loss of the fallen" ) ) 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 05dd7dc0f912..77e9810a4f6d 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 @@ -131,7 +131,6 @@ /datum/splat/werewolf/shifter/on_gain() . = ..() owner.set_species(/datum/species/human/shifter/homid) - add_power(/datum/action/cooldown/power/gift/howling) COOLDOWN_START(src, passive_regrowth_cd, 8 MINUTES) RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(revert_to_breed_form)) @@ -140,8 +139,6 @@ . = ..() if(!QDELETED(owner)) owner.set_species(/datum/species/human) - - remove_power(/datum/action/cooldown/power/gift/howling) UnregisterSignal(owner, COMSIG_LIVING_DEATH) /datum/splat/werewolf/shifter/splat_life(seconds_per_tick) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm index 5c97ce104781..3d57e19a8920 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm @@ -1,6 +1,9 @@ /datum/subsplat/werewolf/breed_form/garou abstract_type = /datum/subsplat/werewolf/breed_form/garou fera_restriction = SPLAT_GAROU + gifts_provided = list( + /datum/action/cooldown/power/gift/howling + ) /datum/subsplat/werewolf/breed_form/garou/homid From 8afa9ff012357c444009f33b8d4e8251aba6de88 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 12 Aug 2026 20:18:48 -0400 Subject: [PATCH 11/31] no passive healing --- code/__DEFINES/~darkpack/traits/declarations.dm | 2 ++ code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../code/species/fera_species.dm | 1 - .../code/splats/fera_splat.dm | 13 ++++--------- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 7ceb749fd630..a84808895ae2 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -159,6 +159,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_JAMMING_WEAPONS "jamming_weapons" #define TRAIT_NATURAL "natural" #define TRAIT_AURA_OF_CONFIDENCE "aura_of_confidence" +// Fera with no passive healing +#define TRAIT_NO_PASSIVE_HEALING "no_passive_healing" /// Mob has had atleast one tooth yanked out while having no method of regenerating it. #define TRAIT_TOOTH_PULLED "tooth_pulled" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 0e8a9b7d466c..1574e07edb20 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -755,6 +755,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_CUFF" = TRAIT_NO_CUFF, // DARKPACK EDIT ADD "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF + "TRAIT_NO_PASSIVE_HEALING" = TRAIT_NO_PASSIVE_HEALING, // DARKPACK EDIT ADD - WEREWOLF - (Ananasi) "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD "TRAIT_ORGANOVORE" = TRAIT_ORGANOVORE, // DARKPACK EDIT ADD - Nagaraja "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 2d57124b8531..317a821ae97c 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -422,6 +422,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_NO_CUFF" = TRAIT_NO_CUFF, // DARKPACK EDIT ADD "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF + "TRAIT_NO_PASSIVE_HEALING" = TRAIT_NO_PASSIVE_HEALING, // DARKPACK EDIT ADD - WEREWOLF - (Ananasi) "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD "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/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm index 90ed73d3c5c8..da5db2465c34 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm @@ -277,7 +277,6 @@ /datum/species/human/shifter/dire/visible_gender_override(mob/living/carbon/human/holder) return "beast" - /datum/species/human/shifter/feral name = "feral form" id = SPECIES_FERA_FERAL 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 77e9810a4f6d..905bbb801ad6 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 @@ -147,7 +147,7 @@ // their fast healing is represented in day/days in breed-form so we just dont. var/can_passively_heal = !(is_breed_form() && (get_breed_form_species() != /datum/species/human/shifter/war)) if(COOLDOWN_FINISHED(src, passive_healing_cd)) - if(can_passively_heal) + if(can_passively_heal && !HAS_TRAIT(owner, TRAIT_NO_PASSIVE_HEALING)) // 2 to represent lethal. Fera passive regen closes burn, but not aggravated damage. owner.heal_storyteller_health(2, heal_aggravated = FALSE, heal_scars = TRUE, heal_blood = TRUE, heal_burn = TRUE) // Keep organ healing ticking so internal damage recovers even between major regrowth pulses. @@ -168,9 +168,9 @@ var/datum/species/human/shifter/shifter_species = owner.dna.species if(istype(shifter_species)) - if(shifter_species.is_veil_breaching_form(owner) && (!shifter_species.form_causes_delirium || HAS_TRAIT(owner, TRAIT_PIERCED_VEIL))) + if(shifter_species.is_veil_breaching_form(owner) && !causes_delirium()) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - if(shifter_species.form_causes_delirium) + if(causes_delirium()) for(var/mob/living/carbon/human/guy in oviewers(owner, DEFAULT_SIGHT_DISTANCE)) if(!guy.affected_by_delirium()) continue @@ -288,8 +288,6 @@ . = ..() remove_power(/datum/action/cooldown/power/gift/eye_drink) -// START - ANANASI SPLAT - /datum/splat/werewolf/shifter/ananasi name = "Ananasi" id = SPLAT_ANANASI @@ -298,6 +296,7 @@ TRAIT_FERA_FORMS, TRAIT_FERA_FUR, TRAIT_FERA_RENOWN, + TRAIT_NO_PASSIVE_HEALING, ) transformation_list = list( /datum/species/human/shifter/homid, @@ -334,10 +333,6 @@ warcry_emote = "hiss" -/datum/splat/werewolf/shifter/ananasi/on_gain() - . = ..() - to_chat(owner, span_boldnotice("You are playing a splat that is capable of infiltrating roles that other splats cannot. Do so carefully and responsibly, and always be courteous to your fellow players.")) - /mob/living/carbon/human/splat/kinfolk auto_splats = list(/datum/splat/werewolf/kinfolk) From bb69605751219fc0e0f1a69ccb5d48c33b4fefb3 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 12 Aug 2026 21:28:30 -0400 Subject: [PATCH 12/31] better shifting --- .../werewolf_the_apocalypse/code/hud.dm | 41 ++++++++++++------- .../code/species/fera_species.dm | 3 ++ .../code/species/transformation.dm | 10 +++++ .../code/splats/fera_splat.dm | 2 +- 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm index 0f4f8e558446..d9ca1e92a31c 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm @@ -139,8 +139,9 @@ abstract_type = /atom/movable/screen/fera_transform icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/hud_transforms.dmi' mouse_over_pointer = MOUSE_HAND_POINTER - var/datum/species/left_click_transform - var/datum/species/right_click_transform + /// Generic form slot (SPECIES_FERA_WAR, etc), resolved to the clicker's actual splat-specific species on use + var/left_click_form_id + var/right_click_form_id /atom/movable/screen/fera_transform/Initialize(mapload, datum/hud/hud_owner) . = ..() @@ -157,9 +158,16 @@ return var/datum/splat/werewolf/shifter/shifting = get_shifter_splat(clicker) + if(!istype(shifting)) + return + var/list/modifiers = params2list(params) // Right click for alt forms like glabro and hispo. Ctrl click to use rage to do it instantly (doesnt matter if its breed form tho) - shifting.transform_fera(LAZYACCESS(modifiers, RIGHT_CLICK) ? right_click_transform : left_click_transform, LAZYACCESS(modifiers, CTRL_CLICK)) + var/form_id = LAZYACCESS(modifiers, RIGHT_CLICK) ? right_click_form_id : left_click_form_id + var/datum/species/human/shifter/form_to_transform = shifting.get_form_by_id(form_id) + if(!form_to_transform) + return + shifting.transform_fera(form_to_transform, LAZYACCESS(modifiers, CTRL_CLICK)) /atom/movable/screen/fera_transform/update_icon(updates) . = ..() @@ -178,14 +186,19 @@ . = ..() var/datum/splat/werewolf/shifter/shifting = get_shifter_splat(user) + if(!istype(shifting)) + return + + var/datum/species/human/shifter/left_form = shifting.get_form_by_id(left_click_form_id) + var/datum/species/human/shifter/right_form = shifting.get_form_by_id(right_click_form_id) - if(left_click_transform && (left_click_transform in shifting.transformation_list)) - context[SCREENTIP_CONTEXT_LMB] = "Shift to [left_click_transform::name]" - if(left_click_transform != shifting.get_breed_form_species()) + if(left_form && (left_form in shifting.transformation_list)) + context[SCREENTIP_CONTEXT_LMB] = "Shift to [initial(left_form.name)]" + if(left_form != shifting.get_breed_form_species()) context[SCREENTIP_CONTEXT_CTRL_LMB] = "Shift using rage" - if(right_click_transform && (right_click_transform in shifting.transformation_list)) - context[SCREENTIP_CONTEXT_RMB] = "Shift to [right_click_transform::name]" - if(right_click_transform != shifting.get_breed_form_species()) + if(right_form && (right_form in shifting.transformation_list)) + context[SCREENTIP_CONTEXT_RMB] = "Shift to [initial(right_form.name)]" + if(right_form != shifting.get_breed_form_species()) context[SCREENTIP_CONTEXT_CTRL_RMB] = "Shift using rage" return CONTEXTUAL_SCREENTIP_SET @@ -195,23 +208,23 @@ name = "homid form" icon_state = "homid" screen_loc = UI_LIVING_TRANSFORM_HOMID - left_click_transform = /datum/species/human/shifter/homid - right_click_transform = /datum/species/human/shifter/bestial + left_click_form_id = SPECIES_FERA_HOMID + right_click_form_id = SPECIES_FERA_BESTIAL /atom/movable/screen/fera_transform/war name = "war form" icon_state = "war" screen_loc = UI_LIVING_TRANSFORM_WAR - left_click_transform = /datum/species/human/shifter/war + left_click_form_id = SPECIES_FERA_WAR /atom/movable/screen/fera_transform/feral name = "feral form" icon_state = "feral" screen_loc = UI_LIVING_TRANSFORM_FERAL - left_click_transform = /datum/species/human/shifter/feral - right_click_transform = /datum/species/human/shifter/dire + left_click_form_id = SPECIES_FERA_FERAL + right_click_form_id = SPECIES_FERA_DIRE #undef UI_LIVING_TRANSFORM_HOMID #undef UI_LIVING_TRANSFORM_WAR diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm index da5db2465c34..f00b8a09d3ce 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm @@ -274,6 +274,9 @@ fallback_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/garou_forms/hispo.dmi' speed_mod = /datum/movespeed_modifier/shifter/dire +/datum/species/human/shifter/dire/ananasi + form_causes_delirium = TRUE + /datum/species/human/shifter/dire/visible_gender_override(mob/living/carbon/human/holder) return "beast" diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm index 1f744e6cb2a1..f1ff6245d1a4 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm @@ -109,4 +109,14 @@ /datum/splat/werewolf/shifter/proc/get_breed_form_species() return breed_form?.breed_species +/// Resolves generic form slot (SPECIES_FERA_WAR, SPECIES_FERA_FERAL, etc) to whatever species +/// type this splat uses for that slot, letting individual fera subtypes (garou/corax/ananasi/etc) +/// swap in their own unique subtype species +/datum/splat/werewolf/shifter/proc/get_form_by_id(form_id) + if(!form_id) + return + for(var/datum/species/human/shifter/form_type as anything in transformation_list) + if(initial(form_type.id) == form_id) + return form_type + #undef DOGGY_ANIMATION_TIME 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 905bbb801ad6..f5106e50568f 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 @@ -301,7 +301,7 @@ transformation_list = list( /datum/species/human/shifter/homid, /datum/species/human/shifter/war, - /datum/species/human/shifter/dire, + /datum/species/human/shifter/dire/ananasi, /datum/species/human/shifter/feral ) transformation_stats = list( From 64d68cfc55e9e00396cc55804760386c33caca75 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 12 Aug 2026 21:33:59 -0400 Subject: [PATCH 13/31] perk desc --- .../modules/werewolf_the_apocalypse/code/splats/pref_lore.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm index fd201d991c17..51a328f15771 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm @@ -124,7 +124,7 @@ SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, SPECIES_PERK_ICON = FA_ICON_BAND_AID, SPECIES_PERK_NAME = "Passive healing", - SPECIES_PERK_DESC = "Ananasi have a strong passive healing while outside of their breed form.", + SPECIES_PERK_DESC = "Ananasi can use blood they've consumed to heal their injuries.", ), ) From 674bf54d7fc191b733770a0e13278f4eb685a75b Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 12 Aug 2026 21:44:16 -0400 Subject: [PATCH 14/31] oops --- .../modules/werewolf_the_apocalypse/code/splats/fera_splat.dm | 1 - 1 file changed, 1 deletion(-) 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 f5106e50568f..e60a5bb02912 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 @@ -251,7 +251,6 @@ transformation_list = list( /datum/species/human/shifter/homid, /datum/species/human/shifter/war, - /datum/species/human/shifter/dire, /datum/species/human/shifter/feral ) transformation_stats = list( From 9b90adbdd7cb0393bc0307addd1f9bb08d37f1f6 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Thu, 13 Aug 2026 13:04:30 -0400 Subject: [PATCH 15/31] better kiss --- code/__DEFINES/~darkpack/signals_kindred.dm | 5 +++-- code/__DEFINES/~darkpack/traits/declarations.dm | 2 ++ code/_globalvars/traits/_traits.dm | 1 + .../living/carbon/human/species_types/zombies.dm | 14 ++------------ .../modules/blood_drinking/code/drinksomeblood.dm | 2 +- .../code/splats/kindred_splat/kindred_splat.dm | 9 ++------- 6 files changed, 11 insertions(+), 22 deletions(-) diff --git a/code/__DEFINES/~darkpack/signals_kindred.dm b/code/__DEFINES/~darkpack/signals_kindred.dm index 2b4f66a68af1..220c5f0a35dd 100644 --- a/code/__DEFINES/~darkpack/signals_kindred.dm +++ b/code/__DEFINES/~darkpack/signals_kindred.dm @@ -1,10 +1,11 @@ // This is the new signals file for every signal vampire related in WOD13 // New signals related to vampires and things vampires do should be defined here -///called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood +// WAS called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood, now +// handled by a trait check. this could still be useful for other things though so keeping this #define COMSIG_MOB_VAMPIRE_SUCKED "mob_vampire_sucked" ///vampire suck resisted - #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) + // #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) ///baali demons have touched the target, time to apply the effect from daimonion 4 #define COMSIG_BAALI_DEMON_REACHED_TARGET "baali_demon_reached_target" diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index a84808895ae2..693af5361ac3 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -106,6 +106,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SCARRING_RESISTANT "scarring_resistant"// Temporal scars wont save /// Stepping on glass shards immunity. Currently used for a couple Garou forms but could be used elsewhere. #define TRAIT_HARDENED_SOLES "hardened_soles" +// Splats that resist the affects of The Kiss +#define TRAIT_RESISTS_KISS "resists_kiss" // Allows the user to pass through doors diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 1574e07edb20..d471354e421d 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -768,6 +768,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_RAZOR_CLAWS" = TRAIT_RAZOR_CLAWS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_REJECTED_BY_TECHNOLOGY" = TRAIT_REJECTED_BY_TECHNOLOGY, // DARKPACK EDIT ADD "TRAIT_REPELLED_BY_HOLINESS" = TRAIT_REPELLED_BY_HOLINESS, // DARKPACK EDIT ADD + "TRAIT_RESISTS_KISS" = TRAIT_RESISTS_KISS, // DARKPACK EDIT ADD "TRAIT_RUBICON" = TRAIT_RUBICON, // DARKPACK EDIT ADD "TRAIT_SANGUINE_INCONGRUITY" = TRAIT_SANGUINE_INCONGRUITY, // DARKPACK EDIT ADD - Giovanni Quirk "TRAIT_SCARRING_RESISTANT" = TRAIT_SCARRING_RESISTANT, // DARKPACK EDIT ADD diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm index f01f9866ce1f..e9e7e6d04f82 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -12,7 +12,8 @@ TRAIT_NOBREATH, TRAIT_TOXIMMUNE, TRAIT_NOCRITDAMAGE, - TRAIT_FAKEDEATH + TRAIT_FAKEDEATH, + TRAIT_RESISTS_KISS ) //mutantbrain = /obj/item/organ/brain/vampire //to prevent brain transplant surgery //mutanteyes = /obj/item/organ/eyes/night_vision/zombie @@ -34,17 +35,6 @@ C.health = 300 //zombies resist vampire bites better than mortals - RegisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_zombie_bitten)) ADD_TRAIT(C, TRAIT_MASQUERADE_VIOLATING_FACE, "zombie") -/datum/species/zombie/proc/on_zombie_bitten(datum/source, mob/living/carbon/being_bitten) - SIGNAL_HANDLER - - if(iszombie(being_bitten)) - return COMPONENT_RESIST_VAMPIRE_KISS - -/datum/species/zombie/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) - . = ..() - UnregisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED) - #undef REGENERATION_DELAY diff --git a/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm b/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm index 86e13b1e75f1..9c0ea8c577ac 100644 --- a/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm +++ b/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm @@ -43,7 +43,7 @@ if(!do_after(src, 3 SECONDS, target = drunk_from, timed_action_flags = NONE, show_progress = FALSE)) remove_drinking_overlay(drunk_from) - if(!(SEND_SIGNAL(drunk_from, COMSIG_MOB_VAMPIRE_SUCKED, drunk_from) & COMPONENT_RESIST_VAMPIRE_KISS)) + if(get_kindred_splat(src) && !HAS_TRAIT(src, TRAIT_PAINFUL_VAMPIRE_KISS) && !HAS_TRAIT(drunk_from, TRAIT_RESISTS_KISS)) drunk_from.apply_status_effect(/datum/status_effect/kissed) return 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 ecfe699d3b1a..82554e20c663 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 @@ -18,6 +18,7 @@ TRAIT_DRINKS_BLOOD, TRAIT_PALE_AURA, TRAIT_SCARRING_RESISTANT, + TRAIT_RESISTS_KISS, ) splat_actions = list( /datum/action/cooldown/mob_cooldown/give_vitae, @@ -73,9 +74,6 @@ //vampires don't die while in crit, they just slip into torpor after 2 minutes of being critted RegisterSignal(owner, COMSIG_MOB_STATCHANGE, PROC_REF(handle_enter_critical_condition)) - //vampires resist vampire bites better than mortals - RegisterSignal(owner, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bitten)) - // Apply bashing damage resistance RegisterSignal(owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_resistance)) @@ -110,7 +108,6 @@ UnregisterSignal(owner, list( COMSIG_CARBON_LOSE_ORGAN, COMSIG_MOB_STATCHANGE, - COMSIG_MOB_VAMPIRE_SUCKED, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_HUMAN_ON_HANDLE_BLOOD, COMSIG_PATH_HIT, @@ -207,13 +204,11 @@ /** * On being bit by a vampire * - * This handles vampire bite sleep immunity and any future special interactions. + * This handles any future special interactions. Vampire bite immunity is now handled by TRAIT_RESISTS_KISS. */ /datum/splat/vampire/kindred/proc/on_vampire_bitten(datum/source, mob/living/carbon/being_bitten) SIGNAL_HANDLER - return COMPONENT_RESIST_VAMPIRE_KISS - /datum/splat/vampire/kindred/proc/kindred_blood(mob/living/carbon/human/kindred, seconds_per_tick, times_fired) SIGNAL_HANDLER From 45c49467e98c0797c669d2318a999a8c1b2b97f7 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Fri, 14 Aug 2026 11:35:40 -0400 Subject: [PATCH 16/31] im jobbing --- modular_darkpack/modules/jobs/code/anarchs/bruiser.dm | 3 ++- modular_darkpack/modules/jobs/code/anarchs/tapster.dm | 4 ++-- modular_darkpack/modules/jobs/code/camarilla/hound.dm | 3 ++- .../modules/jobs/code/camarilla/tower_employee.dm | 3 ++- .../modules/jobs/code/miscelllaneous/club_worker.dm | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm index ee3cf10de71a..46a18f2442bd 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm @@ -26,7 +26,8 @@ known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper") allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_ANANASI) + splat_slots = list(SPLAT_ANANASI = 1) maximal_generation = 9 maximum_immortal_age = 200 description = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Traditions - in the anarch way." diff --git a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm index a1dea1c3635d..342ec504a392 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm @@ -26,8 +26,8 @@ */ known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper") - allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL) - splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2) + allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_ANANASI) + splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2, SPLAT_ANANASI = 1) description = "You are an employee of the local smoke shop. Serve the eclectic clients that pass through, and try not to ask too many questions." // APOC EDIT CHANGE - JOBS minimum_masquerade = 0 diff --git a/modular_darkpack/modules/jobs/code/camarilla/hound.dm b/modular_darkpack/modules/jobs/code/camarilla/hound.dm index 0f980d846e77..6535c77527f6 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/hound.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/hound.dm @@ -23,8 +23,9 @@ maximal_generation = 9 maximum_immortal_age = 200 minimum_masquerade = 3 - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_ANANASI) allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) + splat_slots = list(SPLAT_ANANASI = 1) known_contacts = list("Prince", "Sheriff") diff --git a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm index 30112046d41e..75ce6e8e7009 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm @@ -25,8 +25,9 @@ maximal_generation = 9 maximum_immortal_age = 200 known_contacts = list("Prince", "Sheriff", "Seneschal") - allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) + allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED, SPLAT_ANANASI) allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) + splat_slots = list(SPLAT_ANANASI = 1) description = "You work directly for the Millenium Tower and its administrative staff in a variety of ways, you may even be a personal retainer of one of the top three, to the point that any oddities that you may see over night or hear are either things you are already aware or you simply laugh them off and try not to think about it." minimum_masquerade = 4 diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm index a22a7911fce1..5cb3db9e83b1 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm @@ -21,7 +21,7 @@ "Club Attendant" ) - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE) + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE, SPLAT_SHIFTERS) maximal_generation = 9 maximum_immortal_age = 200 From 6667a43f095da4a44d1224634d2c090e30a6883d Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Fri, 14 Aug 2026 13:44:14 -0400 Subject: [PATCH 17/31] this is jobshit --- modular_darkpack/modules/jobs/code/clinic/doctor.dm | 1 - .../modules/jobs/code/miscelllaneous/club_worker.dm | 2 -- modular_darkpack/modules/jobs/code/supply/dealer.dm | 1 - 3 files changed, 4 deletions(-) diff --git a/modular_darkpack/modules/jobs/code/clinic/doctor.dm b/modular_darkpack/modules/jobs/code/clinic/doctor.dm index 7f1c0e083e9c..4ad1c820ae4a 100644 --- a/modular_darkpack/modules/jobs/code/clinic/doctor.dm +++ b/modular_darkpack/modules/jobs/code/clinic/doctor.dm @@ -17,7 +17,6 @@ description = "Help your fellow kindred in all matters medicine related. Sell blood. Keep your human colleagues ignorant." maximal_generation = 9 maximum_immortal_age = 200 - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE) allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_VENTRUE_ANTITRIBU, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_GIOVANNI, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_NAGARAJA) known_contacts = list("Clinic Director") diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm index 5cb3db9e83b1..cc2d9119e2eb 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm @@ -21,8 +21,6 @@ "Club Attendant" ) - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE, SPLAT_SHIFTERS) - maximal_generation = 9 maximum_immortal_age = 200 description = "Offer strip club services. Some of your clientele may be... Unusual, but you are either addicted to vampire bites, or bribed to listen little and say even less." diff --git a/modular_darkpack/modules/jobs/code/supply/dealer.dm b/modular_darkpack/modules/jobs/code/supply/dealer.dm index 66bf314be100..b2ae188f2a52 100644 --- a/modular_darkpack/modules/jobs/code/supply/dealer.dm +++ b/modular_darkpack/modules/jobs/code/supply/dealer.dm @@ -15,7 +15,6 @@ ) known_contacts = list("Prince", "Seneschal", "Sheriff", "Baron") - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_GAROU, SPLAT_NONE) splat_slots = list(SPLAT_NONE = 1) description = "You provide both legal and illegal supplies to those that get busy during the night. You are your own person yet you know people are out for you. Time to buckle in..." minimum_masquerade = 0 From 82051a27044f91169893face49cdeaa981ce7e16 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Fri, 14 Aug 2026 13:55:42 -0400 Subject: [PATCH 18/31] fur colors --- code/__DEFINES/~darkpack/fera/fera.dm | 8 ++++---- .../icons/ananasi_forms/crawlerling.dmi | Bin 7474 -> 7475 bytes .../icons/ananasi_forms/lilian.dmi | Bin 7450 -> 7448 bytes .../icons/ananasi_forms/pithus.dmi | Bin 7450 -> 7448 bytes 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/~darkpack/fera/fera.dm b/code/__DEFINES/~darkpack/fera/fera.dm index df121dccc279..78573ed415de 100644 --- a/code/__DEFINES/~darkpack/fera/fera.dm +++ b/code/__DEFINES/~darkpack/fera/fera.dm @@ -42,11 +42,11 @@ GLOBAL_LIST_INIT(corax_fur_colors, list( GLOBAL_LIST_INIT(ananasi_fur_colors, list( "black" = "black", - "brown" = "brown", - "white" = "white", - "green" = "green", + "blue" = "blue", "red" = "red", - "gray" = "gray", + "white" = "white", + "ginger" = "ginger", + "brown" = "brown", )) #define STATUS_EFFECT_DELIRIUM /datum/status_effect/delirium diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi index 5f237db20253d95b2cd8a17f965fcb20a81b9de9..92f4dc15154e7e5a09aa45bb5181181b16fecb2d 100644 GIT binary patch delta 201 zcmV;)05<=!IEuK~l6uoQoiK@Ng25JlJRDH_-|29Ri6xG@mJLatyyM%swfw4+?# zB8dhQZFm1qUf#@NLbl8IMai;5K_8%vR6X0WbP-W9$OeTi%Y+gEvK2TLgB5~}K|o0( zwXrd#BxNNNvqs_vnVN`Q#yv_=+cA&=J8{@69((Dht1EPOEuf zgW~D+`e-Jn+6K@M4%s}iLfy4qaj52j2(_1U&0j2Jd6^C0>IInKtnYC84coJO0k|8H Ct!O*| diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi index c99595a890ffbfca6d55bc4f690974f14399a7ff..1d5931f512319fc9a0cd6452c953156eb11c4623 100644 GIT binary patch delta 171 zcmV;c095~)I+!}J8vy~nlN+;xx#Mp@Z$~E% zqTcN}o2&{ZE>+2y0jo_|7awGRIA$4V%A${B!Py<<0PFk>lpLgn;@8!i-37r1B3csB z@*lJ!q7@CjKIQF^B$tW?PR0gEf=flc@Rj!Fh{kE_G++{3Gvb9fPA+}o7+ldn1eN4s Zvx()R?VIIgKI3rg_fiBR>$BtmHX8*sP`m&D delta 173 zcmV;e08;;$I+{AL8vy~plN+;xx#Mp@Z$~E% zqTcN}o2&{ZE>+2y0jo_|7awGRIA$4V%A${B!Py<<0PFk>lpLgn;@8!i-37r1B3csB z@*lJ!q7@CjKIQF^B$tW?PR0gEf=flc@Rj!Fh{kE_G++{3Gvb9fPA+}o7+ldn1eN4s Zvx()R?VIIgKI3rg_fiBR>$BtmHX8*sP`m&D delta 173 zcmV;e08;;$I+{AL8vy~plN Date: Thu, 20 Aug 2026 17:06:50 -0400 Subject: [PATCH 19/31] cabals --- .../~darkpack/fera/werewolf_tribe.dm | 10 ++++ .../code/preferences/tribe.dm | 4 ++ .../code/subsplats/tribes/ananasi.dm | 49 +++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 64 insertions(+) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm diff --git a/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm b/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm index 1d2c927cce83..3fc2721d9ecf 100644 --- a/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm +++ b/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm @@ -16,6 +16,16 @@ #define TRIBE_STARGAZERS "Stargazers" #define TRIBE_BLACK_SPIRAL_DANCERS "Black Spiral Dancers" +#define TRIBE_SECEAN "Secean" +#define TRIBE_PLICARE "Plicare" +#define TRIBE_GADERIN "Gaderin" +#define TRIBE_AGERE "Agere" +#define TRIBE_ANOMIA "Anomia" +#define TRIBE_MALUM "Malum" +#define TRIBE_KAR "Kar" +#define TRIBE_AMARI_ALIQUID "Amari Aliquid" +#define TRIBE_CHYMOS "Chymos" + #define TRIBE_LIST_ALL list(TRIBE_RONIN, TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SHADOW_LORDS, TRIBE_BLACK_SPIRAL_DANCERS) #define TRIBE_LIST_GAIA list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SHADOW_LORDS) #define TRIBE_LIST_WYLD list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_SHADOW_LORDS) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm index d27e9b97dd0a..261e8c935b3b 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm @@ -42,3 +42,7 @@ splat_id = SPLAT_CORAX savefile_key = "corax_tribe" */ + +/datum/preference/choiced/subsplat/fera_tribe/ananasi + splat_id = SPLAT_ANANASI + savefile_key = "ananasi_tribe" diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm new file mode 100644 index 000000000000..9bac14fb6526 --- /dev/null +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -0,0 +1,49 @@ +/datum/subsplat/werewolf/tribe/ananasi + abstract_type = /datum/subsplat/werewolf/tribe/ananasi + fera_restriction = SPLAT_ANANASI + +/datum/subsplat/werewolf/tribe/ananasi/secean + name = TRIBE_SECEAN + desc = "Tenere Myrmidon; Warriors of the Weaver, seeking to understand the nature of the universe to better serve the Mother-Queen. The Secean are explorers and seekers of knowledge unbidden." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/plicare + name = TRIBE_PLICARE + desc = "Tenere Viskr; Mystics of the Weaver, masters of precise order and control. The Plicare are staunch perfectionists, maintaining and leveraging order and structure to achieve their goals." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/gaderin + name = TRIBE_GADERIN + desc = "Tenere Wyrsta; Questioners of the Weaver, challengers of strict order. The Gaderin are obsessive collectors, seeking to grow the Mother-Queen's understanding of the world from her prison in Malfeas." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/agere + name = TRIBE_AGERE + desc = "Hatar Myrmidon; Warriors of the Wyrm, fickle forces of entropy and destruction. The Agere are swift and deadly, moving wherever Ananasa wills them to strike and delivering the Wyrm's own destruction to their enemies." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/anomia + name = TRIBE_ANOMIA + desc = "Hatar Viskr; Mystics of the Wyrm, master manipulators of mortal will. The Anomia are cunning controllers of fate, pulling strings and leaving the death and destruction to those most skilled in delivering it: Humanity." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/malum + name = TRIBE_MALUM + desc = "Hatar Wyrsta; Questioners of the Wyrm, seeking to restore the Wyrm's true and original purpose. The Malum are self-serving and unpredictable, rejecting the Wyrm's new role as the Corruptor and serving instead as agents of the Wyrm's true face: the Destroyer." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/kar + name = TRIBE_KAR + desc = "Kumoti Myrmidon; Warriors of the Wyld, forces of change and creation. The Kar protect the Wyld through minor but otherwise direct acts of sabotage against the Weaver and the Wyrm, seeking to expand the Wyld's influence." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/amarialiquid + name = TRIBE_AMARI_ALIQUID + desc = "Kumoti Viskr; Mystics of the Wyld, acting on whim and instinct. The Amari Aliquid are gentle and persistent, making change through constant motion for better or worse." + gifts_provided = list() + +/datum/subsplat/werewolf/tribe/ananasi/chymos + name = TRIBE_CHYMOS + desc = "Kumoti Wyrsta; Questioners of the Wyld, careful observers of the world and the minions of each Triatic spirit. The Chymos are patient and calculating, seeking to manipulate and disrupt imbalance in the world to restore Symmetry." + gifts_provided = list() + diff --git a/tgstation.dme b/tgstation.dme index 74ae7d0ed112..379c64a268da 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8264,6 +8264,7 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\_tribe.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\weapons\klaives.dm" #include "modular_darkpack\modules\westfield_mall\code\mall_areas.dm" #include "modular_darkpack\modules\westfield_mall\code\modular_rooms.dm" From d8fdb686a290382229e23e17746dbdc670e1929e Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Sat, 22 Aug 2026 05:14:57 -0400 Subject: [PATCH 20/31] aspect examine text --- .../code/splats/examine_text.dm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm index e8bbbf0a44a9..63f21cefd599 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm @@ -1,5 +1,6 @@ /datum/splat/werewolf/proc/examine_other_human(mob/living/carbon/examined) - var/datum/splat/werewolf/wolp_splat = get_werewolf_splat(examined) + var/datum/splat/werewolf/shifter/garou/wolp_splat = get_garou_splat(examined) + var/datum/splat/werewolf/spiber_splat = get_ananasi_splat(examined) if(wolp_splat) var/list/honor_flavor = list("claim to good conduct", "claim to honor", "claim to chivalry") var/list/wisdom_flavor = list("claim to insight", "claim to wisdom", "claim to sagacity") @@ -46,3 +47,18 @@ . += "In the local Garou, you have heard of [examined.p_their(TRUE)] [glory_flavor[2]]." if(10) . += "In the local Garou, you have heard of [examined.p_their(TRUE)] [glory_flavor[3]]." + + // For now, only one pattern flavor on examine. When Renown is reworked, this will be expanded to describe more complex patterns based on rank. + if(spiber_splat) + var/list/tenere_flavor = list("structure and order", "immaculately weaved patterns") + var/list/hatar_flavor = list("death and decay", "indiscriminate destruction") + var/list/kumoti_flavor = list("growth and change", "chaos and life unbidden") + + switch(spiber_splat.tribe?.name) + if(TRIBE_SECEAN, TRIBE_PLICARE, TRIBE_GADERIN) + . += "The patterns on [examined.p_their(TRUE)] skin depict [tenere_flavor[1]]." + if(TRIBE_AGERE, TRIBE_ANOMIA, TRIBE_MALUM) + . += "The patterns on [examined.p_their(TRUE)] skin depict [hatar_flavor[1]]." + if(TRIBE_KAR, TRIBE_AMARI_ALIQUID, TRIBE_CHYMOS) + . += "The patterns on [examined.p_their(TRUE)] skin depict [kumoti_flavor[1]]." + From 87ac7a252dd9c55cc7c26111507a0987a6032d1d Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Sat, 22 Aug 2026 07:05:54 -0400 Subject: [PATCH 21/31] alter mood --- .../code/changing_breeds/ananasi.dm | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index 6fe2929535e6..607aa0fba787 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -1,3 +1,6 @@ +#define ALTER_MOOD_ENHANCE "Enhance" +#define ALTER_MOOD_DAMPEN "Dampen" + /datum/action/cooldown/power/gift/bloodheal name = "Blood Heal" desc = "The Ananasi can heal their wounds by drawing on their own blood." @@ -50,7 +53,6 @@ var/mob/living/living_target = astype(target) if(!living_target) return FALSE - . = ..() var/datum/splat/werewolf/shifter/shifter_splat = get_shifter_splat(owner) @@ -67,6 +69,9 @@ SEND_SIGNAL(target, COMSIG_ALL_MASQUERADE_REINFORCE) to_chat(target, span_hypnophrase("At [owner]'s touch, the last fifteen minutes of your memory are stolen away. You feel a sense of confusion and disorientation as you struggle to recall what just happened.")) + StartCooldown() + return TRUE + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire name = "Inspire" desc = "The Ananasi instills a target with a rush of lucidity." @@ -125,3 +130,37 @@ desc = "Gain an additional die to all mental checks, but suffer a penalty to rage check difficulty." icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi' icon_state = "riddle" // TODO: get an icon for this + +/datum/action/cooldown/power/gift/alter_mood + name = "Alter Mood" + desc = "The Wyrsta can enhance or dampen the mood of a single individual." + button_icon_state = "stolen_moments" + click_to_activate = TRUE + rank = 1 + gnosis_cost = 1 + var/alter_types = list(ALTER_MOOD_ENHANCE, ALTER_MOOD_DAMPEN) + +/datum/action/cooldown/power/gift/alter_mood/Activate(atom/target) + var/mob/living/living_target = astype(target) + if(!living_target) + return FALSE + + var/alter_type_selected = tgui_input_list(owner, "How do you want to alter the target's mood?", "Alter Mood Type Selection", alter_types, ALTER_MOOD_ENHANCE) + if(!alter_type_selected) + return FALSE + + . = ..() + + switch(alter_type_selected) + if(ALTER_MOOD_ENHANCE) + to_chat(living_target, span_boldnotice("An odd warmth spreads through your mind, heightening your emotional state. Any emotional highs or lows are suddenly more intense and extreme.")) + if(ALTER_MOOD_DAMPEN) + to_chat(living_target, span_boldwarning("An odd numbness sets over your mind, dulling your emotional state. Any extreme emotional highs or lows are suddenly muted to a more moderate, mundane level.")) + + StartCooldown() + return TRUE + +#undef ALTER_MOOD_ENHANCE +#undef ALTER_MOOD_DAMPEN + + From e8febf967f516ddc0fcf3f5dbc9e48eaf5dddb3b Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Sat, 22 Aug 2026 07:06:14 -0400 Subject: [PATCH 22/31] cabal gifts pt1 --- .../code/subsplats/breeds/ananasi.dm | 2 - .../code/subsplats/tribes/ananasi.dm | 42 +++++++++++++++---- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index 7b964b81c68e..9ea7f6cc3c2a 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -8,7 +8,6 @@ start_gnosis = 4 breed_species = /datum/species/human/shifter/homid gifts_provided = list( - /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, /datum/action/cooldown/power/gift/resist_pain, /datum/action/cooldown/power/gift/stolen_moments, /datum/action/cooldown/power/gift/bloodheal @@ -19,7 +18,6 @@ start_gnosis = 4 breed_species = /datum/species/human/shifter/feral gifts_provided = list( - /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, /datum/action/cooldown/power/gift/resist_pain, /datum/action/cooldown/power/gift/stolen_moments, /datum/action/cooldown/power/gift/bloodheal diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm index 9bac14fb6526..8b6901b3f0c1 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -5,45 +5,69 @@ /datum/subsplat/werewolf/tribe/ananasi/secean name = TRIBE_SECEAN desc = "Tenere Myrmidon; Warriors of the Weaver, seeking to understand the nature of the universe to better serve the Mother-Queen. The Secean are explorers and seekers of knowledge unbidden." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/open_seal, + ) /datum/subsplat/werewolf/tribe/ananasi/plicare name = TRIBE_PLICARE desc = "Tenere Viskr; Mystics of the Weaver, masters of precise order and control. The Plicare are staunch perfectionists, maintaining and leveraging order and structure to achieve their goals." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/mindspeak, + ) /datum/subsplat/werewolf/tribe/ananasi/gaderin name = TRIBE_GADERIN desc = "Tenere Wyrsta; Questioners of the Weaver, challengers of strict order. The Gaderin are obsessive collectors, seeking to grow the Mother-Queen's understanding of the world from her prison in Malfeas." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/alter_mood, + ) /datum/subsplat/werewolf/tribe/ananasi/agere name = TRIBE_AGERE desc = "Hatar Myrmidon; Warriors of the Wyrm, fickle forces of entropy and destruction. The Agere are swift and deadly, moving wherever Ananasa wills them to strike and delivering the Wyrm's own destruction to their enemies." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/open_seal, + ) /datum/subsplat/werewolf/tribe/ananasi/anomia name = TRIBE_ANOMIA desc = "Hatar Viskr; Mystics of the Wyrm, master manipulators of mortal will. The Anomia are cunning controllers of fate, pulling strings and leaving the death and destruction to those most skilled in delivering it: Humanity." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/mindspeak + ) /datum/subsplat/werewolf/tribe/ananasi/malum name = TRIBE_MALUM desc = "Hatar Wyrsta; Questioners of the Wyrm, seeking to restore the Wyrm's true and original purpose. The Malum are self-serving and unpredictable, rejecting the Wyrm's new role as the Corruptor and serving instead as agents of the Wyrm's true face: the Destroyer." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/alter_mood, + ) /datum/subsplat/werewolf/tribe/ananasi/kar name = TRIBE_KAR desc = "Kumoti Myrmidon; Warriors of the Wyld, forces of change and creation. The Kar protect the Wyld through minor but otherwise direct acts of sabotage against the Weaver and the Wyrm, seeking to expand the Wyld's influence." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, + /datum/action/cooldown/power/gift/mothers_touch, + ) /datum/subsplat/werewolf/tribe/ananasi/amarialiquid name = TRIBE_AMARI_ALIQUID desc = "Kumoti Viskr; Mystics of the Wyld, acting on whim and instinct. The Amari Aliquid are gentle and persistent, making change through constant motion for better or worse." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/mindspeak, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, + /datum/action/cooldown/power/gift/mothers_touch, + ) /datum/subsplat/werewolf/tribe/ananasi/chymos name = TRIBE_CHYMOS desc = "Kumoti Wyrsta; Questioners of the Wyld, careful observers of the world and the minions of each Triatic spirit. The Chymos are patient and calculating, seeking to manipulate and disrupt imbalance in the world to restore Symmetry." - gifts_provided = list() + gifts_provided = list( + /datum/action/cooldown/power/gift/alter_mood, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, + /datum/action/cooldown/power/gift/mothers_touch, + ) From f00f12f9e4209629e5ce864e8164b6900405f1a9 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Sun, 23 Aug 2026 03:03:02 -0400 Subject: [PATCH 23/31] oops lmao --- .../werewolf_the_apocalypse/code/splats/pref_lore.dm | 4 ++-- .../code/subsplats/breeds/ananasi.dm | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm index 51a328f15771..145af8a4ecb8 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm @@ -110,7 +110,7 @@ "Lorem Ipsum", ) -/datum/splat/werewolf/shifter/corax/create_pref_unique_perks() +/datum/splat/werewolf/shifter/ananasi/create_pref_unique_perks() var/list/to_add = list() to_add += list( @@ -123,7 +123,7 @@ list( SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, SPECIES_PERK_ICON = FA_ICON_BAND_AID, - SPECIES_PERK_NAME = "Passive healing", + SPECIES_PERK_NAME = "Blood healing", SPECIES_PERK_DESC = "Ananasi can use blood they've consumed to heal their injuries.", ), ) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index 9ea7f6cc3c2a..c8053276eaea 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -8,9 +8,9 @@ start_gnosis = 4 breed_species = /datum/species/human/shifter/homid gifts_provided = list( + /datum/action/cooldown/power/gift/bloodheal, /datum/action/cooldown/power/gift/resist_pain, - /datum/action/cooldown/power/gift/stolen_moments, - /datum/action/cooldown/power/gift/bloodheal + /datum/action/cooldown/power/gift/stolen_moments ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid @@ -18,9 +18,9 @@ start_gnosis = 4 breed_species = /datum/species/human/shifter/feral gifts_provided = list( + /datum/action/cooldown/power/gift/bloodheal, /datum/action/cooldown/power/gift/resist_pain, - /datum/action/cooldown/power/gift/stolen_moments, - /datum/action/cooldown/power/gift/bloodheal + /datum/action/cooldown/power/gift/stolen_moments ) /datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) From bf555dc625553626254af355c016bcdf5c965d12 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Mon, 24 Aug 2026 21:27:51 -0400 Subject: [PATCH 24/31] more gift icon --- .../code/changing_breeds/ananasi.dm | 2 +- .../icons/werewolf_abilities.dmi | Bin 10869 -> 11165 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index 607aa0fba787..de5dfa4accb6 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -134,7 +134,7 @@ /datum/action/cooldown/power/gift/alter_mood name = "Alter Mood" desc = "The Wyrsta can enhance or dampen the mood of a single individual." - button_icon_state = "stolen_moments" + button_icon_state = "alter_mood" click_to_activate = TRUE rank = 1 gnosis_cost = 1 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi index 3cb07f0c275658d9b1d63ca028e874ae12ae6e68..bda3954ce6acaf8d12117ef0a3c39283c9df67fb 100644 GIT binary patch delta 11065 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 aaEd{O{$&f%-<<~knIT5kR3~4{IpTjiJhw{# From 70ca77dd855a9b3af14e83b4835436f58d5b7096 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 26 Aug 2026 04:00:03 -0400 Subject: [PATCH 25/31] tribe defines n gift sound --- code/__DEFINES/~darkpack/fera/werewolf_tribe.dm | 6 +++--- .../code/changing_breeds/ananasi.dm | 3 +++ .../sounds/gifts/altermood.ogg | Bin 0 -> 16018 bytes .../modules/decor/code/agility_shortcut.dm | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg diff --git a/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm b/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm index 3fc2721d9ecf..75b7ddf60ea3 100644 --- a/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm +++ b/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm @@ -28,6 +28,6 @@ #define TRIBE_LIST_ALL list(TRIBE_RONIN, TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SHADOW_LORDS, TRIBE_BLACK_SPIRAL_DANCERS) #define TRIBE_LIST_GAIA list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SHADOW_LORDS) -#define TRIBE_LIST_WYLD list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_SHADOW_LORDS) -#define TRIBE_LIST_WEAVER list(TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS) -#define TRIBE_LIST_WYRM list(TRIBE_BLACK_SPIRAL_DANCERS) +#define TRIBE_LIST_WYLD list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_SHADOW_LORDS, TRIBE_KAR, TRIBE_AMARI_ALIQUID, TRIBE_CHYMOS) +#define TRIBE_LIST_WEAVER list(TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SECEAN, TRIBE_PLICARE, TRIBE_GADERIN) +#define TRIBE_LIST_WYRM list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_AGERE, TRIBE_ANOMIA, TRIBE_MALUM) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index de5dfa4accb6..2cd8aa3e2d87 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -34,6 +34,7 @@ . = ..() + playsound(owner, 'modular_darkpack/modules/vampire_the_masquerade/sounds/bloodhealing.ogg', 50, FALSE) human_owner.heal_ordered_damage(30, list(BRUTE, TOX, OXY, STAMINA)) human_owner.heal_ordered_damage(6, list(BURN, AGGRAVATED)) human_owner.update_damage_overlays() @@ -153,8 +154,10 @@ switch(alter_type_selected) if(ALTER_MOOD_ENHANCE) + SEND_SOUND(target, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg', volume = 50)) to_chat(living_target, span_boldnotice("An odd warmth spreads through your mind, heightening your emotional state. Any emotional highs or lows are suddenly more intense and extreme.")) if(ALTER_MOOD_DAMPEN) + SEND_SOUND(target, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg', volume = 50)) to_chat(living_target, span_boldwarning("An odd numbness sets over your mind, dulling your emotional state. Any extreme emotional highs or lows are suddenly muted to a more moderate, mundane level.")) StartCooldown() diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg new file mode 100644 index 0000000000000000000000000000000000000000..366680f069cabb318c95e81262561c2b8508e201 GIT binary patch literal 16018 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 Q1n}RM?SslVz2JcV1w92sbN~PV literal 0 HcmV?d00001 diff --git a/modular_zapoc/modules/decor/code/agility_shortcut.dm b/modular_zapoc/modules/decor/code/agility_shortcut.dm index 02e82783d4cc..e05de3818501 100644 --- a/modular_zapoc/modules/decor/code/agility_shortcut.dm +++ b/modular_zapoc/modules/decor/code/agility_shortcut.dm @@ -103,7 +103,7 @@ GLOBAL_LIST_EMPTY(unallocated_agility_shortcuts) /obj/agility_shortcut/urban/spiral name = "hole" desc = "There are a bunch of bricks missing. Not enough for you to crawl in. Unless you were insane." - allowed_tribes = TRIBE_LIST_WYRM + allowed_tribes = TRIBE_BLACK_SPIRAL_DANCERS /obj/agility_shortcut/anyone desc = "You could probably fit in there. Want to find out?" From 53351f1fb7ec11a52eb13789b7ae2d41f0671480 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 26 Aug 2026 06:40:15 -0400 Subject: [PATCH 26/31] tribe traits and wyrmling kinship --- code/__DEFINES/~darkpack/traits/declarations.dm | 2 ++ code/__DEFINES/~darkpack/traits/sources.dm | 3 +++ code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../code/splats/examine_text.dm | 6 +++++- .../code/subsplats/tribes/_tribe.dm | 15 ++++++++++++++- .../code/subsplats/tribes/ananasi.dm | 3 +++ 7 files changed, 29 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 6205d262364e..6ce493dd5aed 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -165,6 +165,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_AURA_OF_CONFIDENCE "aura_of_confidence" // Fera with no passive healing #define TRAIT_NO_PASSIVE_HEALING "no_passive_healing" +// Wyrmling Kinship gift, per Changing Breeds - Ananasi Gifts - Hatar +#define TRAIT_WYRMLING_KINSHIP "wyrmling_kinship" /// Mob has had atleast one tooth yanked out while having no method of regenerating it. #define TRAIT_TOOTH_PULLED "tooth_pulled" diff --git a/code/__DEFINES/~darkpack/traits/sources.dm b/code/__DEFINES/~darkpack/traits/sources.dm index 7f873747748c..8eb33bd63571 100644 --- a/code/__DEFINES/~darkpack/traits/sources.dm +++ b/code/__DEFINES/~darkpack/traits/sources.dm @@ -5,6 +5,9 @@ #define GIFT_TRAIT "gift" +/// Trait given by a werewolf's Tribe +#define TRIBE_TRAIT "tribe" + #define STAKE_TRAIT "stake" #define DAMAGE_TRAIT "damage" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index d27a292f46bc..282f971ca4b9 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -810,6 +810,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_WEAK_DELIRIUM" = TRAIT_WEAK_DELIRIUM, // DARKPACK EDIT ADD - WEREWOLF - (corax) "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_WYRMLING_KINSHIP" = TRAIT_WYRMLING_KINSHIP, // DARKPACK EDIT ADD - ANANASI "TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_WYRMTAINTED_SPRITE" = TRAIT_WYRMTAINTED_SPRITE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_BRASSKNUCKLES" = TRAIT_BRASSKNUCKLES, // DARKPACK EDIT ADD - CLOTHES diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 5b4fdd1f7ae6..187111032d73 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -465,6 +465,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_WEAK_DELIRIUM" = TRAIT_WEAK_DELIRIUM, // DARKPACK EDIT ADD - WEREWOLF - (corax) "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_WYRMLING_KINSHIP" = TRAIT_WYRMLING_KINSHIP, // DARKPACK EDIT ADD - ANANASI "TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_WYRMTAINTED_SPRITE" = TRAIT_WYRMTAINTED_SPRITE, // DARKPACK EDIT ADD - WEREWOLF ), diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm index 63f21cefd599..a0d6b3749a33 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm @@ -48,8 +48,12 @@ if(10) . += "In the local Garou, you have heard of [examined.p_their(TRUE)] [glory_flavor[3]]." + // Wyrmling Kinship gift for Hatar Ananasi + if(HAS_TRAIT(examined, TRAIT_WYRMLING_KINSHIP) && tribe?.name == TRIBE_BLACK_SPIRAL_DANCERS) + . += span_boldnicegreen("The Wyrm's presence clings to [examined.p_them()]. You recognize [examined.p_them()] as one of your own.") + // For now, only one pattern flavor on examine. When Renown is reworked, this will be expanded to describe more complex patterns based on rank. - if(spiber_splat) + if(spiber_splat && istype(src, /datum/splat/werewolf/shifter/ananasi)) var/list/tenere_flavor = list("structure and order", "immaculately weaved patterns") var/list/hatar_flavor = list("death and decay", "indiscriminate destruction") var/list/kumoti_flavor = list("growth and change", "chaos and life unbidden") diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm index 51ba4e11911e..504e501b08a4 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm @@ -1,7 +1,20 @@ /datum/subsplat/werewolf/tribe abstract_type = /datum/subsplat/werewolf/tribe - //var/tribe_trait + // Traits granted from a tribe + var/list/tribe_traits = list() + +/datum/subsplat/werewolf/tribe/on_gain(mob/living/carbon/human/gaining_mob, datum/splat/gaining_splat, joining_round) + . = ..() + + for(var/trait in tribe_traits) + ADD_TRAIT(gaining_mob, trait, TRIBE_TRAIT) + +/datum/subsplat/werewolf/tribe/on_lose(mob/living/carbon/human/losing_mob) + . = ..() + + for(var/trait in tribe_traits) + REMOVE_TRAIT(losing_mob, trait, TRIBE_TRAIT) /** * Gets the singleton of an tribe diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm index 8b6901b3f0c1..e32d3751e371 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -29,6 +29,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, ) + tribe_traits = list(TRAIT_WYRMLING_KINSHIP) /datum/subsplat/werewolf/tribe/ananasi/anomia name = TRIBE_ANOMIA @@ -36,6 +37,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/mindspeak ) + tribe_traits = list(TRAIT_WYRMLING_KINSHIP) /datum/subsplat/werewolf/tribe/ananasi/malum name = TRIBE_MALUM @@ -43,6 +45,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, ) + tribe_traits = list(TRAIT_WYRMLING_KINSHIP) /datum/subsplat/werewolf/tribe/ananasi/kar name = TRIBE_KAR From 9c6a1124efa43a106d3a210197207655d6203610 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 26 Aug 2026 08:09:32 -0400 Subject: [PATCH 27/31] groom gift --- code/__DEFINES/~darkpack/traits/declarations.dm | 2 ++ code/__DEFINES/~darkpack/traits/sources.dm | 2 +- code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + code/datums/components/bloodysoles.dm | 2 +- code/modules/forensics/forensics_helpers.dm | 4 ++++ .../werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm | 1 - .../werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm | 3 +++ 8 files changed, 13 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 6ce493dd5aed..f2b13758fa83 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -167,6 +167,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NO_PASSIVE_HEALING "no_passive_healing" // Wyrmling Kinship gift, per Changing Breeds - Ananasi Gifts - Hatar #define TRAIT_WYRMLING_KINSHIP "wyrmling_kinship" +// Prevents bloodying, made for Groom gift, per Changing Breeds - Ananasi Gifts - Tenere +#define TRAIT_ALWAYS_CLEAN "always_clean" /// Mob has had atleast one tooth yanked out while having no method of regenerating it. #define TRAIT_TOOTH_PULLED "tooth_pulled" diff --git a/code/__DEFINES/~darkpack/traits/sources.dm b/code/__DEFINES/~darkpack/traits/sources.dm index 8eb33bd63571..d593d4ee2657 100644 --- a/code/__DEFINES/~darkpack/traits/sources.dm +++ b/code/__DEFINES/~darkpack/traits/sources.dm @@ -5,7 +5,7 @@ #define GIFT_TRAIT "gift" -/// Trait given by a werewolf's Tribe +/// Trait given by a fera's Tribe #define TRIBE_TRAIT "tribe" #define STAKE_TRAIT "stake" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 282f971ca4b9..daba247db002 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_BRAIN_TRAUMA_IMMUNITY" = TRAIT_BRAIN_TRAUMA_IMMUNITY, "TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP, "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - MERITS_FLAWS - ACUTE SENSE + "TRAIT_ALWAYS_CLEAN" = TRAIT_ALWAYS_CLEAN, // DARKPACK EDIT ADD - ANANASI "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_AURA_OF_CONFIDENCE" = TRAIT_AURA_OF_CONFIDENCE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_BANNED_TRANSFORMATION" = TRAIT_BANNED_TRANSFORMATION, // DARKPACK EDIT ADD - MERITS_FLAWS diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 187111032d73..670f987bc7f4 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_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR, "TRAIT_CARPOTOXIN_IMMUNE" = TRAIT_CARPOTOXIN_IMMUNE, "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - MERITS_FLAWS - ACUTE SENSE + "TRAIT_ALWAYS_CLEAN" = TRAIT_ALWAYS_CLEAN, // DARKPACK EDIT ADD - ANANASI "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_AURA_OF_CONFIDENCE" = TRAIT_AURA_OF_CONFIDENCE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_BANNED_TRANSFORMATION" = TRAIT_BANNED_TRANSFORMATION, // DARKPACK EDIT ADD - MERITS_FLAWS diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index daa4bbd164a7..0c1172d85f68 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -239,7 +239,7 @@ return /// The character is agile enough to not mess their clothing and hands just from one blood splatter at floor - if(HAS_TRAIT(wielder, TRAIT_LIGHT_STEP)) + if(HAS_TRAIT(wielder, TRAIT_LIGHT_STEP) || HAS_TRAIT(wielder, TRAIT_ALWAYS_CLEAN)) // APOC EDIT CHANGE - (#139 Ananasi) return // Don't share from other feetprints, not super realistic but I think it ruins the effect a bit diff --git a/code/modules/forensics/forensics_helpers.dm b/code/modules/forensics/forensics_helpers.dm index f72e0e75ab18..77d5d753ef48 100644 --- a/code/modules/forensics/forensics_helpers.dm +++ b/code/modules/forensics/forensics_helpers.dm @@ -190,6 +190,8 @@ ) if(QDELING(src)) return FALSE + if(HAS_TRAIT(src, TRAIT_ALWAYS_CLEAN)) // APOC EDIT CHANGE - (#139 Ananasi) + return FALSE if(!length(blood_DNA_to_add)) return FALSE @@ -237,6 +239,8 @@ /mob/living/add_blood_DNA(list/blood_DNA_to_add, list/datum/disease/diseases) if(QDELING(src)) return FALSE + if(HAS_TRAIT(src, TRAIT_ALWAYS_CLEAN)) // APOC EDIT CHANGE - (#139 Ananasi) + return FALSE if(!length(blood_DNA_to_add)) return FALSE if(isnull(forensics)) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm index c8053276eaea..dd1219b0e0d5 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -1,7 +1,6 @@ /datum/subsplat/werewolf/breed_form/ananasi abstract_type = /datum/subsplat/werewolf/breed_form/ananasi fera_restriction = SPLAT_ANANASI - roleplay_level = "Advanced" /datum/subsplat/werewolf/breed_form/ananasi/homid name = BREED_ANANASI_HOMID diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm index e32d3751e371..8f84f5e88180 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -8,6 +8,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, ) + tribe_traits = list(TRAIT_ALWAYS_CLEAN) /datum/subsplat/werewolf/tribe/ananasi/plicare name = TRIBE_PLICARE @@ -15,6 +16,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/mindspeak, ) + tribe_traits = list(TRAIT_ALWAYS_CLEAN) /datum/subsplat/werewolf/tribe/ananasi/gaderin name = TRIBE_GADERIN @@ -22,6 +24,7 @@ gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, ) + tribe_traits = list(TRAIT_ALWAYS_CLEAN) /datum/subsplat/werewolf/tribe/ananasi/agere name = TRIBE_AGERE From a7ce0b6ae230688ec999bae28b2ca91425555403 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Wed, 26 Aug 2026 14:09:13 -0400 Subject: [PATCH 28/31] blood of pain and beneath notice gifts --- .../~darkpack/traits/declarations.dm | 2 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + .../blood_drinking/code/drinksomeblood.dm | 11 ++ .../code/changing_breeds/ananasi.dm | 106 ++++++++++++++++++ .../code/subsplats/tribes/ananasi.dm | 8 +- .../icons/werewolf_abilities.dmi | Bin 11165 -> 12027 bytes .../sounds/gifts/blood_of_pain.ogg | Bin 0 -> 22943 bytes tgstation.dme | 2 +- 9 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index f2b13758fa83..c01fb7d853e9 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -169,6 +169,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_WYRMLING_KINSHIP "wyrmling_kinship" // Prevents bloodying, made for Groom gift, per Changing Breeds - Ananasi Gifts - Tenere #define TRAIT_ALWAYS_CLEAN "always_clean" +// Blood Of Pain gift, per Changing Breeds - Ananasi Gifts - Hatar +#define TRAIT_BLOOD_OF_PAIN "blood_of_pain" /// Mob has had atleast one tooth yanked out while having no method of regenerating it. #define TRAIT_TOOTH_PULLED "tooth_pulled" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index daba247db002..c7069503361c 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -700,6 +700,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BEACON_OF_THE_UNHOLY" = TRAIT_BEACON_OF_THE_UNHOLY, // 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_BLOOD_OF_PAIN" = TRAIT_BLOOD_OF_PAIN, // DARKPACK EDIT ADD - ANANASI "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) diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 670f987bc7f4..04067b983436 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -374,6 +374,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_BANNED_TRANSFORMATION" = TRAIT_BANNED_TRANSFORMATION, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_BEACON_OF_THE_UNHOLY" = TRAIT_BEACON_OF_THE_UNHOLY, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD + "TRAIT_BLOOD_OF_PAIN" = TRAIT_BLOOD_OF_PAIN, // DARKPACK EDIT ADD - ANANASI "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLUSH_OF_HEALTH" = TRAIT_BLUSH_OF_HEALTH, // DARKPACK EDIT ADD "TRAIT_CALM_HEART" = TRAIT_CALM_HEART, // DARKPACK EDIT ADD - MERITS_FLAWS diff --git a/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm b/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm index 9c0ea8c577ac..0f252e68c53a 100644 --- a/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm +++ b/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm @@ -74,6 +74,17 @@ remove_drinking_overlay(drunk_from) return + if(get_ananasi_splat(drunk_from)) + to_chat(src, span_userdanger("Something is WRONG with [drunk_from]'s blood!")) + visible_message(span_danger("[src] throws up!"), span_userdanger("You throw up!")) + playsound(get_turf(src), 'modular_darkpack/modules/deprecated/sounds/vomit.ogg', 75, TRUE) + if(isturf(loc)) + add_splatter_floor(loc) + remove_drinking_overlay(drunk_from) + if(HAS_TRAIT(drunk_from, TRAIT_BLOOD_OF_PAIN)) + apply_status_effect(/datum/status_effect/blood_of_pain) + return + if(get_kindred_splat(drunk_from)) to_chat(src, span_userdanger("[drunk_from]'s blood tastes HEAVENLY...")) adjust_brute_loss(-25, TRUE) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index 2cd8aa3e2d87..775b4602a996 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -163,6 +163,112 @@ StartCooldown() return TRUE +/datum/action/cooldown/power/gift/blood_of_pain + name = "Blood of Pain" + desc = "The Hatar turns their blood into debilitating poison." + button_icon_state = "blood_of_pain" + rank = 1 + +/datum/action/cooldown/power/gift/blood_of_pain/Grant(mob/granted_to) + . = ..() + ADD_TRAIT(granted_to, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + +/datum/action/cooldown/power/gift/blood_of_pain/Activate(atom/target) + . = ..() + + if(HAS_TRAIT_FROM(owner, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT)) + REMOVE_TRAIT(owner, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + to_chat(owner, span_notice("Your blood is no longer poisonous.")) + else + ADD_TRAIT(owner, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + to_chat(owner, span_notice("Your blood is now poisonous.")) + +/atom/movable/screen/alert/status_effect/blood_of_pain + name = "Blood of Pain" + desc = "The blood you have consumed is causing you horrible agony!" + icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi' + icon_state = "default" + +/datum/status_effect/blood_of_pain + duration = 3 MINUTES + tick_interval = 5 SECONDS + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/blood_of_pain + +/datum/status_effect/blood_of_pain/tick(seconds_between_ticks) + var/datum/storyteller_roll/stamina_roll = new() + stamina_roll.applicable_stats = list(STAT_STAMINA) + stamina_roll.difficulty = 6 + stamina_roll.roll_output_type = ROLL_PRIVATE + stamina_roll.spammy_roll = TRUE + if(stamina_roll.st_roll(owner, owner) != ROLL_SUCCESS) + to_chat(owner, span_danger("THE AGONY IS UNBEARABLE!")) + SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg', volume = 75)) + owner.Stun(5 SECONDS) + +/datum/status_effect/blood_of_pain/on_apply() + to_chat(owner, span_danger("You feel horrible after drinking that blood...")) + return TRUE + +/datum/status_effect/blood_of_pain/on_remove() + to_chat(owner, span_danger("The agonizing pain subsides.")) + +/datum/action/cooldown/power/gift/blood_of_pain/Remove(mob/removed_from) + . = ..() + REMOVE_TRAIT(removed_from, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + +/datum/action/cooldown/power/gift/beneath_notice + name = "Beneath Notice" + desc = "The Tenere can make an object blend into the surrounding area." + button_icon_state = "beneath_notice" + click_to_activate = TRUE + rank = 1 + gnosis_cost = 1 + + var/hide_duration = 30 MINUTES + var/alpha_reduction = 220 + var/list/hidden_targets = list() + +/datum/action/cooldown/power/gift/beneath_notice/Activate(atom/movable/target) + if(!isobj(target) && !isitem(target)) + return FALSE + if(hidden_targets[target]) + remove_beneath_notice(target) + to_chat(owner, span_warning("[target] is revealed!")) + StartCooldown() + return TRUE + + . = ..() + + target.alpha = max(target.alpha - alpha_reduction, 0) + + var/list/existing = list() + hidden_targets[target] = existing + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_deleted)) + + existing["timer"] = addtimer(CALLBACK(src, PROC_REF(remove_beneath_notice), target), hide_duration, TIMER_STOPPABLE) + + to_chat(owner, span_info("[target] is now hidden from sight.")) + StartCooldown() + return TRUE + +/datum/action/cooldown/power/gift/beneath_notice/proc/remove_beneath_notice(atom/movable/target) + var/list/existing = hidden_targets[target] + if(!existing) + return + hidden_targets -= target + UnregisterSignal(target, COMSIG_QDELETING) + + target.alpha = min(target.alpha + alpha_reduction, 255) + +/datum/action/cooldown/power/gift/beneath_notice/proc/on_target_deleted(atom/movable/target) + SIGNAL_HANDLER + var/list/existing = hidden_targets[target] + if(!existing) + return + hidden_targets -= target + deltimer(existing["timer"]) + #undef ALTER_MOOD_ENHANCE #undef ALTER_MOOD_DAMPEN diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm index 8f84f5e88180..35bcf3826575 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -7,6 +7,7 @@ desc = "Tenere Myrmidon; Warriors of the Weaver, seeking to understand the nature of the universe to better serve the Mother-Queen. The Secean are explorers and seekers of knowledge unbidden." gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/beneath_notice, ) tribe_traits = list(TRAIT_ALWAYS_CLEAN) @@ -15,6 +16,7 @@ desc = "Tenere Viskr; Mystics of the Weaver, masters of precise order and control. The Plicare are staunch perfectionists, maintaining and leveraging order and structure to achieve their goals." gifts_provided = list( /datum/action/cooldown/power/gift/mindspeak, + /datum/action/cooldown/power/gift/beneath_notice, ) tribe_traits = list(TRAIT_ALWAYS_CLEAN) @@ -23,6 +25,7 @@ desc = "Tenere Wyrsta; Questioners of the Weaver, challengers of strict order. The Gaderin are obsessive collectors, seeking to grow the Mother-Queen's understanding of the world from her prison in Malfeas." gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, + /datum/action/cooldown/power/gift/beneath_notice, ) tribe_traits = list(TRAIT_ALWAYS_CLEAN) @@ -31,6 +34,7 @@ desc = "Hatar Myrmidon; Warriors of the Wyrm, fickle forces of entropy and destruction. The Agere are swift and deadly, moving wherever Ananasa wills them to strike and delivering the Wyrm's own destruction to their enemies." gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/blood_of_pain, ) tribe_traits = list(TRAIT_WYRMLING_KINSHIP) @@ -38,7 +42,8 @@ name = TRIBE_ANOMIA desc = "Hatar Viskr; Mystics of the Wyrm, master manipulators of mortal will. The Anomia are cunning controllers of fate, pulling strings and leaving the death and destruction to those most skilled in delivering it: Humanity." gifts_provided = list( - /datum/action/cooldown/power/gift/mindspeak + /datum/action/cooldown/power/gift/mindspeak, + /datum/action/cooldown/power/gift/blood_of_pain, ) tribe_traits = list(TRAIT_WYRMLING_KINSHIP) @@ -47,6 +52,7 @@ desc = "Hatar Wyrsta; Questioners of the Wyrm, seeking to restore the Wyrm's true and original purpose. The Malum are self-serving and unpredictable, rejecting the Wyrm's new role as the Corruptor and serving instead as agents of the Wyrm's true face: the Destroyer." gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, + /datum/action/cooldown/power/gift/blood_of_pain, ) tribe_traits = list(TRAIT_WYRMLING_KINSHIP) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi index bda3954ce6acaf8d12117ef0a3c39283c9df67fb..17774b7f7c7401512ef18738234cea9244c84331 100644 GIT binary patch literal 12027 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 z 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 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cb7b1490f8d1f69ce5483dc927d0d9f5ed3acfbf GIT binary patch literal 22943 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 C7ja?$ literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index f8dfde7c4fdc..16ef31b2fd19 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8299,8 +8299,8 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\corax.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\_tribe.dm" -#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\ananasi.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\weapons\klaives.dm" #include "modular_darkpack\modules\westfield_mall\code\mall_areas.dm" #include "modular_darkpack\modules\westfield_mall\code\modular_rooms.dm" From 1fb6542fbb9c7186e814af36b17ee007c2fae600 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Thu, 27 Aug 2026 01:58:48 -0400 Subject: [PATCH 29/31] better beneath notice --- .../code/changing_breeds/ananasi.dm | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index 775b4602a996..12579c56ea30 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -225,7 +225,7 @@ rank = 1 gnosis_cost = 1 - var/hide_duration = 30 MINUTES + var/hide_duration = 180 MINUTES var/alpha_reduction = 220 var/list/hidden_targets = list() @@ -241,6 +241,12 @@ . = ..() target.alpha = max(target.alpha - alpha_reduction, 0) + ADD_TRAIT(target, TRAIT_EXAMINE_SKIP, GIFT_TRAIT) + + if(isitem(target) && ismob(target.loc)) + var/obj/item/worn_item = target + var/mob/wearer = target.loc + wearer.update_clothing(worn_item.slot_flags) var/list/existing = list() hidden_targets[target] = existing @@ -260,14 +266,27 @@ UnregisterSignal(target, COMSIG_QDELETING) target.alpha = min(target.alpha + alpha_reduction, 255) + REMOVE_TRAIT(target, TRAIT_EXAMINE_SKIP, GIFT_TRAIT) + + if(isitem(target) && ismob(target.loc)) + var/obj/item/worn_item = target + var/mob/wearer = target.loc + wearer.update_clothing(worn_item.slot_flags) /datum/action/cooldown/power/gift/beneath_notice/proc/on_target_deleted(atom/movable/target) SIGNAL_HANDLER var/list/existing = hidden_targets[target] if(!existing) return + + if(isitem(target) && ismob(target.loc)) + var/obj/item/worn_item = target + var/mob/wearer = target.loc + wearer.update_clothing(worn_item.slot_flags) + hidden_targets -= target deltimer(existing["timer"]) + REMOVE_TRAIT(target, TRAIT_EXAMINE_SKIP, GIFT_TRAIT) #undef ALTER_MOOD_ENHANCE #undef ALTER_MOOD_DAMPEN From 94ba7b7d22825d287a582820d11d3c2039a14677 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Thu, 27 Aug 2026 03:06:19 -0400 Subject: [PATCH 30/31] cabal icons and descriptions --- .../code/subsplats/tribes/ananasi.dm | 18 +++++++++--------- .../werewolf_the_apocalypse/icons/tribes.dmi | Bin 4248 -> 4043 bytes 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm index 35bcf3826575..814936306d8e 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -4,7 +4,7 @@ /datum/subsplat/werewolf/tribe/ananasi/secean name = TRIBE_SECEAN - desc = "Tenere Myrmidon; Warriors of the Weaver, seeking to understand the nature of the universe to better serve the Mother-Queen. The Secean are explorers and seekers of knowledge unbidden." + desc = "Tenere Myrmidon; Warriors of the Weaver, seeking to understand the nature of the universe to better serve the Mother-Queen. The Secean are explorers and seekers of knowledge unbidden.\nGifts: \n Open Seal - Open nearly any sort of closed or locked physical device. Roll Gnosis against the area's gauntlet rating to unlock a locked object. \n Beneath Notice - Make an object blend into the surrounding area. Spend 1 Gnosis to hide an object almost completely from sight. Cast on the object again to unhide. \n Groom - No matter the circumstances, the Tenere always looks their best. The character is permanently immune to being bloodied." gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, /datum/action/cooldown/power/gift/beneath_notice, @@ -13,7 +13,7 @@ /datum/subsplat/werewolf/tribe/ananasi/plicare name = TRIBE_PLICARE - desc = "Tenere Viskr; Mystics of the Weaver, masters of precise order and control. The Plicare are staunch perfectionists, maintaining and leveraging order and structure to achieve their goals." + desc = "Tenere Viskr; Mystics of the Weaver, masters of precise order and control. The Plicare are staunch perfectionists, maintaining and leveraging order and structure to achieve their goals. \nGifts: \n Mindspeak - By invoking the power of waking dreams, place characters into silent communion. Transmit a message to any Ananasi belonging to the same cabal. \n Beneath Notice - Make an object blend into the surrounding area. Spend 1 Gnosis to hide an object almost completely from sight. Cast on the object again to unhide. \n Groom - No matter the circumstances, the Tenere always looks their best. The character is permanently immune to being bloodied." gifts_provided = list( /datum/action/cooldown/power/gift/mindspeak, /datum/action/cooldown/power/gift/beneath_notice, @@ -22,7 +22,7 @@ /datum/subsplat/werewolf/tribe/ananasi/gaderin name = TRIBE_GADERIN - desc = "Tenere Wyrsta; Questioners of the Weaver, challengers of strict order. The Gaderin are obsessive collectors, seeking to grow the Mother-Queen's understanding of the world from her prison in Malfeas." + desc = "Tenere Wyrsta; Questioners of the Weaver, challengers of strict order. The Gaderin are obsessive collectors, seeking to grow the Mother-Queen's understanding of the world from her prison in Malfeas. \nGifts: \n Alter Mood - The Wyrsta can enhance or dampen the mood of a single individual, making that person elated rather than just happy, or muting utter despair into simple sadness. Spend 1 Gnosis enhance or dampen the mood of a target. \n Beneath Notice - Make an object blend into the surrounding area. Spend 1 Gnosis to hide an object almost completely from sight. Cast on the object again to unhide. \n Groom - No matter the circumstances, the Tenere always looks their best. The character is permanently immune to being bloodied." gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, /datum/action/cooldown/power/gift/beneath_notice, @@ -31,7 +31,7 @@ /datum/subsplat/werewolf/tribe/ananasi/agere name = TRIBE_AGERE - desc = "Hatar Myrmidon; Warriors of the Wyrm, fickle forces of entropy and destruction. The Agere are swift and deadly, moving wherever Ananasa wills them to strike and delivering the Wyrm's own destruction to their enemies." + desc = "Hatar Myrmidon; Warriors of the Wyrm, fickle forces of entropy and destruction. The Agere are swift and deadly, moving wherever Ananasa wills them to strike and delivering the Wyrm's own destruction to their enemies. \nGifts: \n Open Seal - Open nearly any sort of closed or locked physical device. Roll Gnosis against the area's gauntlet rating to unlock a locked object. \n Blood of Pain - The Hatar turns their blood into debilitating poison. Any who drink your blood will fall helplessly ill, necessitating a Stamina roll (difficulty 6) to act each turn for the rest of the scene. Starts activated. \n Wyrmling Kinship - The Hatar can convince Wyrm-creatures that they are an ally or someone of no importance. Black Spiral Dancers and Fomori will recognize you as an ally." gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, /datum/action/cooldown/power/gift/blood_of_pain, @@ -40,7 +40,7 @@ /datum/subsplat/werewolf/tribe/ananasi/anomia name = TRIBE_ANOMIA - desc = "Hatar Viskr; Mystics of the Wyrm, master manipulators of mortal will. The Anomia are cunning controllers of fate, pulling strings and leaving the death and destruction to those most skilled in delivering it: Humanity." + desc = "Hatar Viskr; Mystics of the Wyrm, master manipulators of mortal will. The Anomia are cunning controllers of fate, pulling strings and leaving the death and destruction to those most skilled in delivering it: Humanity. \nGifts: \n Mindspeak - By invoking the power of waking dreams, place characters into silent communion. Transmit a message to any Ananasi belonging to the same cabal. \n Blood of Pain - The Hatar turns their blood into debilitating poison. Any who drink your blood will fall helplessly ill, necessitating a Stamina roll (difficulty 6) to act each turn for the rest of the scene. Starts activated. \n Wyrmling Kinship - The Hatar can convince Wyrm-creatures that they are an ally or someone of no importance. Black Spiral Dancers and Fomori will recognize you as an ally." gifts_provided = list( /datum/action/cooldown/power/gift/mindspeak, /datum/action/cooldown/power/gift/blood_of_pain, @@ -49,7 +49,7 @@ /datum/subsplat/werewolf/tribe/ananasi/malum name = TRIBE_MALUM - desc = "Hatar Wyrsta; Questioners of the Wyrm, seeking to restore the Wyrm's true and original purpose. The Malum are self-serving and unpredictable, rejecting the Wyrm's new role as the Corruptor and serving instead as agents of the Wyrm's true face: the Destroyer." + desc = "Hatar Wyrsta; Questioners of the Wyrm, seeking to restore the Wyrm's true and original purpose. The Malum are self-serving and unpredictable, rejecting the Wyrm's new role as the Corruptor and serving instead as agents of the Wyrm's true face: the Destroyer. \nGifts: \n Alter Mood - The Wyrsta can enhance or dampen the mood of a single individual, making that person elated rather than just happy, or muting utter despair into simple sadness. Spend 1 Gnosis enhance or dampen the mood of a target. \n Blood of Pain - The Hatar turns their blood into debilitating poison. Any who drink your blood will fall helplessly ill, necessitating a Stamina roll (difficulty 6) to act each turn for the rest of the scene. Starts activated. \n Wyrmling Kinship - The Hatar can convince Wyrm-creatures that they are an ally or someone of no importance. Black Spiral Dancers and Fomori will recognize you as an ally." gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, /datum/action/cooldown/power/gift/blood_of_pain, @@ -58,7 +58,7 @@ /datum/subsplat/werewolf/tribe/ananasi/kar name = TRIBE_KAR - desc = "Kumoti Myrmidon; Warriors of the Wyld, forces of change and creation. The Kar protect the Wyld through minor but otherwise direct acts of sabotage against the Weaver and the Wyrm, seeking to expand the Wyld's influence." + desc = "Kumoti Myrmidon; Warriors of the Wyld, forces of change and creation. The Kar protect the Wyld through minor but otherwise direct acts of sabotage against the Weaver and the Wyrm, seeking to expand the Wyld's influence. \nGifts: \n Open Seal - Open nearly any sort of closed or locked physical device. Roll Gnosis against the area's gauntlet rating to unlock a locked object. \n Inspire - As Breath of the Wyld: Instill a feeling of vitality and life in a living being. Spend 1 Gnosis to increase a target's Perception, Intelligence, and Wits by 1; and increase the difficulty of any Rage rolls by 1. \n Mother's Touch - Heal the wounds of any living creature, aggravated or otherwise, simply by laying hands over the affected area. Roll Intelligence and Empathy (Difficulty 5) to determine the effectiveness of the healing." gifts_provided = list( /datum/action/cooldown/power/gift/open_seal, /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, @@ -67,7 +67,7 @@ /datum/subsplat/werewolf/tribe/ananasi/amarialiquid name = TRIBE_AMARI_ALIQUID - desc = "Kumoti Viskr; Mystics of the Wyld, acting on whim and instinct. The Amari Aliquid are gentle and persistent, making change through constant motion for better or worse." + desc = "Kumoti Viskr; Mystics of the Wyld, acting on whim and instinct. The Amari Aliquid are gentle and persistent, making change through constant motion for better or worse. \nGifts: \n Mindspeak - By invoking the power of waking dreams, place characters into silent communion. Transmit a message to any Ananasi belonging to the same cabal. \n Inspire - As Breath of the Wyld: Instill a feeling of vitality and life in a living being. Spend 1 Gnosis to increase a target's Perception, Intelligence, and Wits by 1; and increase the difficulty of any Rage rolls by 1. \n Mother's Touch - Heal the wounds of any living creature, aggravated or otherwise, simply by laying hands over the affected area. Roll Intelligence and Empathy (Difficulty 5) to determine the effectiveness of the healing." gifts_provided = list( /datum/action/cooldown/power/gift/mindspeak, /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, @@ -76,7 +76,7 @@ /datum/subsplat/werewolf/tribe/ananasi/chymos name = TRIBE_CHYMOS - desc = "Kumoti Wyrsta; Questioners of the Wyld, careful observers of the world and the minions of each Triatic spirit. The Chymos are patient and calculating, seeking to manipulate and disrupt imbalance in the world to restore Symmetry." + desc = "Kumoti Wyrsta; Questioners of the Wyld, careful observers of the world and the minions of each Triatic spirit. The Chymos are patient and calculating, seeking to manipulate and disrupt imbalance in the world to restore Symmetry. \nGifts: \n Alter Mood - The Wyrsta can enhance or dampen the mood of a single individual, making that person elated rather than just happy, or muting utter despair into simple sadness. Spend 1 Gnosis enhance or dampen the mood of a target. \n Inspire - As Breath of the Wyld: Instill a feeling of vitality and life in a living being. Spend 1 Gnosis to increase a target's Perception, Intelligence, and Wits by 1; and increase the difficulty of any Rage rolls by 1. \n Mother's Touch - Heal the wounds of any living creature, aggravated or otherwise, simply by laying hands over the affected area. Roll Intelligence and Empathy (Difficulty 5) to determine the effectiveness of the healing." gifts_provided = list( /datum/action/cooldown/power/gift/alter_mood, /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/tribes.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/tribes.dmi index 45e6712d55cee6f150fe8716e16f499fbcf0ff45..ad28d00c667ae85462c33dc5da75e0f09e3eaf66 100644 GIT binary patch literal 4043 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 literal 4248 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 Date: Thu, 27 Aug 2026 08:38:55 -0400 Subject: [PATCH 31/31] stam check pass sound --- .../code/changing_breeds/ananasi.dm | 2 ++ .../sounds/gifts/blood_of_pain_pass.ogg | Bin 0 -> 15504 bytes 2 files changed, 2 insertions(+) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm index 12579c56ea30..9b93ad9c2b65 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/ananasi.dm @@ -205,6 +205,8 @@ to_chat(owner, span_danger("THE AGONY IS UNBEARABLE!")) SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg', volume = 75)) owner.Stun(5 SECONDS) + else + SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg', volume = 75)) /datum/status_effect/blood_of_pain/on_apply() to_chat(owner, span_danger("You feel horrible after drinking that blood...")) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d610b6f518ab6c2c62d2e23e24f20bfd5213f244 GIT binary patch literal 15504 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 X|Cf*n=$HT3)_#j25I2DHf13U;3W2W+ literal 0 HcmV?d00001