From ecb5d668001b8e23d2d1e138799ddfbc524b0af5 Mon Sep 17 00:00:00 2001 From: Potatocrip Date: Thu, 30 Jul 2026 23:26:20 -0400 Subject: [PATCH 01/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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/15] 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