From f46b4f5f7a73b2f37edb4c5b93f895b66e3a933a Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sat, 28 Feb 2026 18:25:38 -0500 Subject: [PATCH 01/11] rei --- .../powers/code/discipline/visceratika.dm | 132 +++++++++++------- .../sounds/visceratika.ogg | Bin .../code/vampire_clan/clans/gargoyle.dm | 2 +- tgstation.dme | 1 + 4 files changed, 85 insertions(+), 50 deletions(-) rename modular_darkpack/modules/{deprecated => powers}/sounds/visceratika.ogg (100%) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 9e22d5c54d7d..9981b2668812 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -9,7 +9,24 @@ name = "Visceratika power name" desc = "Visceratika power description" - activate_sound = 'modular_darkpack/modules/deprecated/sounds/visceratika.ogg' + activate_sound = 'modular_darkpack/modules/powers/sounds/visceratika.ogg' + +/datum/discipline/visceratika/post_gain() + . = ..() + // it is rumored that, if a non-gargoyle kindred were to learn Visceratika, their skin would turn stony + owner.skin_tone = "albino" + owner.set_body_sprite("gargoyle") + owner.update_body_parts() + owner.update_body() + // since dot 4 is always active and requires no roll + if(level >= 4) + owner.physiology.brute_mod *= 0.8 + owner.physiology.heat_mod *= 0.5 + //owner.physiology.clone_mod *= 0.9 + //ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_GENERIC) + ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, TRAIT_GENERIC) + if(!(owner.is_clan(/datum/subsplat/vampire_clan/gargoyle))) + ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT) //WHISPERS OF THE CHAMBER /datum/discipline_power/visceratika/whispers_of_the_chamber @@ -18,8 +35,8 @@ level = 1 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE - - cooldown_length = 5 SECONDS + cooldown_length = 1 SECONDS + vitae_cost = 1 /datum/discipline_power/visceratika/whispers_of_the_chamber/activate() . = ..() @@ -35,21 +52,33 @@ /datum/discipline_power/visceratika/scry_the_hearthstone name = "Scry the Hearthstone" desc = "Sense the exact locations of individuals around you." + willpower_cost = 1 level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_SEE - - cancelable = TRUE - duration_length = 15 SECONDS - cooldown_length = 10 SECONDS + toggled = TRUE + var/area/starting_area /datum/discipline_power/visceratika/scry_the_hearthstone/activate() . = ..() + starting_area = get_area(owner) ADD_TRAIT(owner, TRAIT_THERMAL_VISION, "Visceratika Scry the Hearthstone") + owner.update_sight() + //visceratika 2 gives a gargoyle a heatmap of all living people in a building. if they leave the building, they need to re-cast it. + RegisterSignal(owner, COMSIG_EXIT_AREA, PROC_REF(on_area_exited)) /datum/discipline_power/visceratika/scry_the_hearthstone/deactivate() . = ..() + starting_area = null REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, "Visceratika Scry the Hearthstone") + owner.update_sight() + UnregisterSignal(owner, COMSIG_EXIT_AREA) + +/datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_area_exited(atom/movable/source, area/old_area) + SIGNAL_HANDLER + + to_chat(owner, span_warning("You lose your connection to the hearthstone as you leave the area.")) + try_deactivate() //BOND WITH THE MOUNTAIN /datum/discipline_power/visceratika/bond_with_the_mountain @@ -58,68 +87,35 @@ level = 3 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_LYING - + vitae_cost = 2 cancelable = TRUE duration_length = 15 SECONDS cooldown_length = 10 SECONDS /datum/discipline_power/visceratika/bond_with_the_mountain/activate() . = ..() - owner.alpha = 10 + owner.alpha = 40 + apply_wibbly_filters(owner) /datum/discipline_power/visceratika/bond_with_the_mountain/deactivate() . = ..() owner.alpha = 255 + remove_wibbly_filters(owner) //ARMOR OF TERRA /datum/discipline_power/visceratika/armor_of_terra name = "Armor of Terra" - desc = "Solidify into stone and become invulnerable." + desc = "This power requires no roll and is always active. Your stony skin has hardened to the point where nearly all damage against you is lessened." level = 4 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_LYING - violates_masquerade = TRUE - - toggled = TRUE - cooldown_length = 1 MINUTES - duration_length = 1 MINUTES + vitae_cost = 0 /datum/discipline_power/visceratika/armor_of_terra/activate() . = ..() - addtimer(CALLBACK(src, PROC_REF(try_deactivate), null, TRUE), duration_length * 2) //failsafe (no, you can't stay in statue mode forever, 2 mins is enough) - to_chat(owner, span_warning("You harden your skin far more than you're able to take for long!")) - ADD_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) - ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) - ADD_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) - ADD_TRAIT(owner, TRAIT_MUTE, STATUE_MUTE) - ADD_TRAIT(owner, TRAIT_IMMOBILIZED, MAGIC_TRAIT) - ADD_TRAIT(owner, TRAIT_HANDS_BLOCKED, MAGIC_TRAIT) + to_chat(owner, span_danger("This is a passive ability. The Effects are already active")) - owner.name_override = "Statue of [owner.real_name]" - owner.status_flags |= GODMODE - var/newcolor = list(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) - owner.add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) - - for(var/obj/stuff in owner.contents) //no stealing - ADD_TRAIT(stuff, TRAIT_NODROP, MAGIC) - -/datum/discipline_power/visceratika/armor_of_terra/deactivate() - . = ..() - to_chat(owner, span_warning("You soften your skin, to your normal hardness.")) - REMOVE_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) - REMOVE_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) - REMOVE_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) - REMOVE_TRAIT(owner, TRAIT_MUTE, STATUE_MUTE) - REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, MAGIC_TRAIT) - REMOVE_TRAIT(owner, TRAIT_HANDS_BLOCKED, MAGIC_TRAIT) - - owner.name_override = null - owner.status_flags &= GODMODE - owner.remove_atom_colour(FIXED_COLOUR_PRIORITY) - - for(var/obj/item/stuff in owner.contents) - REMOVE_TRAIT(stuff, TRAIT_NODROP, MAGIC) //FLOW WITHIN THE MOUNTAIN /datum/discipline_power/visceratika/flow_within_the_mountain @@ -128,7 +124,7 @@ level = 5 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE - + vitae_cost = 2 violates_masquerade = TRUE cancelable = TRUE @@ -138,12 +134,14 @@ /datum/discipline_power/visceratika/flow_within_the_mountain/activate() . = ..() ADD_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, "Visceratika Flow Within the Mountain") - owner.alpha = 10 + owner.alpha = 40 + apply_wibbly_filters(owner) /datum/discipline_power/visceratika/flow_within_the_mountain/deactivate() . = ..() owner.alpha = 255 REMOVE_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, "Visceratika Flow Within the Mountain") + remove_wibbly_filters(owner) /turf/closed/Enter(atom/movable/mover, atom/oldloc) if(isliving(mover)) @@ -152,3 +150,39 @@ return TRUE return ..() +/* +//ROCKHEART +/datum/discipline_power/visceratika/rockheart + name = "Rockheart" + desc = "Solidify your innermost organs to prevent damage" + + level = 6 + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_LYING + + violates_masquerade = FALSE + + toggled = TRUE + cooldown_length = 1 MINUTES + +/datum/discipline_power/visceratika/rockheart/activate() + . = ..() + to_chat(owner, span_warning("You harden your internal organs, protecting you against many forms of damage and stakes!")) + ADD_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) + ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) + ADD_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) + ADD_TRAIT(owner, TRAIT_PIERCEIMMUNE, MAGIC_TRAIT) + ADD_TRAIT(owner, TRAIT_NEVER_WOUNDED, MAGIC_TRAIT) + + owner.stakeimmune = TRUE + +/datum/discipline_power/visceratika/rockheart/deactivate() + . = ..() + to_chat(owner, span_warning("You soften your internal organs, to their normal durability.")) + REMOVE_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) + REMOVE_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) + REMOVE_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) + REMOVE_TRAIT(owner, TRAIT_PIERCEIMMUNE, MAGIC_TRAIT) + REMOVE_TRAIT(owner, TRAIT_NEVER_WOUNDED, MAGIC_TRAIT) + + owner.stakeimmune = FALSE +*/ diff --git a/modular_darkpack/modules/deprecated/sounds/visceratika.ogg b/modular_darkpack/modules/powers/sounds/visceratika.ogg similarity index 100% rename from modular_darkpack/modules/deprecated/sounds/visceratika.ogg rename to modular_darkpack/modules/powers/sounds/visceratika.ogg diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm index 2c50be3a53e9..7a0d6d686bb1 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm @@ -7,7 +7,7 @@ clan_disciplines = list( /datum/discipline/fortitude, /datum/discipline/potence, - // /datum/discipline/visceratika + /datum/discipline/visceratika ) clan_traits = list( TRAIT_CANNOT_RESIST_MIND_CONTROL, diff --git a/tgstation.dme b/tgstation.dme index 16f285eae546..b42d587f7d06 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7405,6 +7405,7 @@ #include "modular_darkpack\modules\powers\code\discipline\obtenebration.dm" #include "modular_darkpack\modules\powers\code\discipline\serpentis.dm" #include "modular_darkpack\modules\powers\code\discipline\torpor.dm" +#include "modular_darkpack\modules\powers\code\discipline\visceratika.dm" #include "modular_darkpack\modules\powers\code\discipline\auspex\aura_component.dm" #include "modular_darkpack\modules\powers\code\discipline\auspex\auspex.dm" #include "modular_darkpack\modules\powers\code\discipline\auspex\emotion_panel.dm" From 51a891f243ed51185a6d959fe02ef1ad6a966606 Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sun, 1 Mar 2026 16:20:58 -0500 Subject: [PATCH 02/11] ok --- .../powers/code/discipline/visceratika.dm | 79 +++++++++++++------ 1 file changed, 57 insertions(+), 22 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 9981b2668812..dc4019c306f6 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -24,29 +24,40 @@ owner.physiology.heat_mod *= 0.5 //owner.physiology.clone_mod *= 0.9 //ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_GENERIC) - ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, TRAIT_GENERIC) + ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, DISCIPLINE_TRAIT) if(!(owner.is_clan(/datum/subsplat/vampire_clan/gargoyle))) ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT) -//WHISPERS OF THE CHAMBER -/datum/discipline_power/visceratika/whispers_of_the_chamber - name = "Whispers of the Chamber" - desc = "Sense everyone in the same area as you." - +//SKIN OF THE CHAMELEON +/datum/discipline_power/visceratika/skin_of_the_chameleon + name = "Skin of the Chameleon" + desc = "Change your skin to become a reasonable fascimile of whatever your surroundings are, allowing you increased stealth." level = 1 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE - cooldown_length = 1 SECONDS + cooldown_length = 2 SCENES + duration_length = 1 SCENES + cancelable = TRUE vitae_cost = 1 -/datum/discipline_power/visceratika/whispers_of_the_chamber/activate() +/datum/discipline_power/visceratika/skin_of_the_chameleon/activate() . = ..() - for(var/mob/living/player in GLOB.player_list) - if(get_area(player) == get_area(owner)) - var/their_name = player.name - if(ishuman(player)) - var/mob/living/carbon/human/human_player = player - their_name = human_player.real_name - to_chat(owner, "- [their_name]") + skin_chameleon_run() + RegisterSignal(owner, COMSIG_MOVE_INTENT_TOGGLED, PROC_REF(skin_chameleon_run)) + +/datum/discipline_power/visceratika/skin_of_the_chameleon/deactivate(atom/target, direct) + . = ..() + UnregisterSignal(owner, COMSIG_MOVE_INTENT_TOGGLED) + owner.alpha = 255 + remove_wibbly_filters(owner) + +/datum/discipline_power/visceratika/skin_of_the_chameleon/proc/skin_chameleon_run() + SIGNAL_HANDLER + if(owner.move_intent == MOVE_INTENT_RUN) + owner.alpha = 40 + apply_wibbly_filters(owner) + else + owner.alpha = 10 + remove_wibbly_filters(owner) //SCRY THE HEARTHSTONE /datum/discipline_power/visceratika/scry_the_hearthstone @@ -58,11 +69,33 @@ check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_SEE toggled = TRUE var/area/starting_area + var/datum/storyteller_roll/scry_the_hearthstone/scry_roll + +/datum/storyteller_roll/scry_the_hearthstone + bumper_text = "scry the hearthstone" + difficulty = 6 + applicable_stats = list(STAT_PERCEPTION, STAT_AWARENESS) + +/datum/discipline_power/visceratika/scry_the_hearthstone/pre_activation_checks() + . = ..() + if(!scry_roll) + scry_roll = new() + if(scry_roll.st_roll(owner, owner) == ROLL_SUCCESS) + return TRUE + else + return FALSE /datum/discipline_power/visceratika/scry_the_hearthstone/activate() . = ..() + for(var/mob/living/player in GLOB.player_list) + if(get_area(player) == get_area(owner)) + var/their_name = player.name + if(ishuman(player)) + var/mob/living/carbon/human/human_player = player + their_name = human_player.real_name + to_chat(owner, "- [their_name]") starting_area = get_area(owner) - ADD_TRAIT(owner, TRAIT_THERMAL_VISION, "Visceratika Scry the Hearthstone") + ADD_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) owner.update_sight() //visceratika 2 gives a gargoyle a heatmap of all living people in a building. if they leave the building, they need to re-cast it. RegisterSignal(owner, COMSIG_EXIT_AREA, PROC_REF(on_area_exited)) @@ -70,7 +103,7 @@ /datum/discipline_power/visceratika/scry_the_hearthstone/deactivate() . = ..() starting_area = null - REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, "Visceratika Scry the Hearthstone") + REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) owner.update_sight() UnregisterSignal(owner, COMSIG_EXIT_AREA) @@ -94,13 +127,15 @@ /datum/discipline_power/visceratika/bond_with_the_mountain/activate() . = ..() - owner.alpha = 40 - apply_wibbly_filters(owner) + ADD_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) + owner.density = FALSE + owner.damage_deflection = 3 TTRPG_DAMAGE + owner.alpha = 10 /datum/discipline_power/visceratika/bond_with_the_mountain/deactivate() . = ..() + REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) owner.alpha = 255 - remove_wibbly_filters(owner) //ARMOR OF TERRA /datum/discipline_power/visceratika/armor_of_terra @@ -133,14 +168,14 @@ /datum/discipline_power/visceratika/flow_within_the_mountain/activate() . = ..() - ADD_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, "Visceratika Flow Within the Mountain") + ADD_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, DISCIPLINE_TRAIT) owner.alpha = 40 apply_wibbly_filters(owner) /datum/discipline_power/visceratika/flow_within_the_mountain/deactivate() . = ..() owner.alpha = 255 - REMOVE_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, "Visceratika Flow Within the Mountain") + REMOVE_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, DISCIPLINE_TRAIT) remove_wibbly_filters(owner) /turf/closed/Enter(atom/movable/mover, atom/oldloc) From 461bbe651fa5e1abd034d4fcaa4dae6aca88b408 Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:08:35 -0500 Subject: [PATCH 03/11] ok lets redo --- .../modules/powers/code/discipline/visceratika.dm | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index dc4019c306f6..b790560e92e3 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -100,17 +100,14 @@ //visceratika 2 gives a gargoyle a heatmap of all living people in a building. if they leave the building, they need to re-cast it. RegisterSignal(owner, COMSIG_EXIT_AREA, PROC_REF(on_area_exited)) -/datum/discipline_power/visceratika/scry_the_hearthstone/deactivate() - . = ..() - starting_area = null - REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) - owner.update_sight() - UnregisterSignal(owner, COMSIG_EXIT_AREA) - /datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_area_exited(atom/movable/source, area/old_area) SIGNAL_HANDLER to_chat(owner, span_warning("You lose your connection to the hearthstone as you leave the area.")) + starting_area = null + REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) + owner.update_sight() + UnregisterSignal(owner, COMSIG_EXIT_AREA) try_deactivate() //BOND WITH THE MOUNTAIN From 50d0f88db0bdb6d8bcbd74746881951d276e0de1 Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:59:17 -0500 Subject: [PATCH 04/11] ok --- .../powers/code/discipline/visceratika.dm | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index b790560e92e3..032b47fe3ff3 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -116,23 +116,53 @@ desc = "Merge with your surroundings and become difficult to see." level = 3 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_LYING + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE vitae_cost = 2 cancelable = TRUE - duration_length = 15 SECONDS + toggled = TRUE + duration_length = 0 cooldown_length = 10 SECONDS + var/turf/exit_turf + var/turf/stone_turf + +/datum/discipline_power/visceratika/bond_with_the_mountain/pre_activation_checks() + . = ..() + for(var/turf/closed/adjacent in orange(1, owner)) + stone_turf = adjacent + break + + if(!stone_turf) + to_chat(owner, span_warning("You must be adjacent to a stone surface to bond with the mountain.")) + return FALSE + return TRUE /datum/discipline_power/visceratika/bond_with_the_mountain/activate() . = ..() + + exit_turf = get_turf(owner) + to_chat(owner, span_purple("You begin to sink into the stone...")) + + if(!do_after(owner, 2 TURNS)) + to_chat(owner, span_warning("Your bond with the mountain is interrupted!")) + exit_turf = null + return FALSE + + owner.forceMove(stone_turf) + owner.alpha = 30 ADD_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) owner.density = FALSE owner.damage_deflection = 3 TTRPG_DAMAGE - owner.alpha = 10 /datum/discipline_power/visceratika/bond_with_the_mountain/deactivate() . = ..() REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) + owner.density = TRUE + owner.damage_deflection = 0 + if(exit_turf) + owner.forceMove(exit_turf) owner.alpha = 255 + exit_turf = null + stone_turf = null //ARMOR OF TERRA /datum/discipline_power/visceratika/armor_of_terra From 7e46d2b6238b279f32fc8b5171f4c89bd69dd513 Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sun, 1 Mar 2026 22:07:55 -0500 Subject: [PATCH 05/11] bow --- .../~darkpack/traits/declarations.dm | 3 ++ code/_globalvars/traits/_traits.dm | 1 + .../powers/code/discipline/visceratika.dm | 29 +++++++++++++------ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index ad4ab74a8f39..6f455ddc589f 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -92,7 +92,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_UNAGING "unaging" // Does the mob have ghostsight? #define TRAIT_GHOST_VISION "ghost_vision" +// Does the mob have hardened skin via Serpentis? #define TRAIT_SERPENTIS_SKIN "serpent_skin" +// Is the mob melted into a wall via Visceratika? +#define TRAIT_BOND_WITHIN_THE_MOUNTAIN "bond_within_the_mountain" // Allows the user to pass through doors diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 6c35637a7d3f..476148ebb49c 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -668,6 +668,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLOOD_DRINKER" = TRAIT_BLOOD_DRINKER, // 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 - Visceratika "TRAIT_CANNOT_RESIST_MIND_CONTROL" = TRAIT_CANNOT_RESIST_MIND_CONTROL, // DARKPACK EDIT ADD "TRAIT_CAN_ENTER_TORPOR" = TRAIT_CAN_ENTER_TORPOR, // DARKPACK EDIT ADD "TRAIT_CHARMER" = TRAIT_CHARMER, // DARKPACK EDIT ADD diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 032b47fe3ff3..5c9648eba730 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -146,21 +146,23 @@ to_chat(owner, span_warning("Your bond with the mountain is interrupted!")) exit_turf = null return FALSE - owner.forceMove(stone_turf) owner.alpha = 30 + ADD_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN, DISCIPLINE_TRAIT) ADD_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) owner.density = FALSE owner.damage_deflection = 3 TTRPG_DAMAGE -/datum/discipline_power/visceratika/bond_with_the_mountain/deactivate() +/datum/discipline_power/visceratika/bond_with_the_mountain/deactivate(forced = TRUE) . = ..() REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) + REMOVE_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN, DISCIPLINE_TRAIT) owner.density = TRUE owner.damage_deflection = 0 - if(exit_turf) - owner.forceMove(exit_turf) - owner.alpha = 255 + if(forced) //only false when using visceratika 5. we inherit the alpha from this ability and when visceratika 5 deactivates, return to 255 + if(exit_turf) + owner.forceMove(exit_turf) + owner.alpha = 255 exit_turf = null stone_turf = null @@ -185,18 +187,26 @@ desc = "Merge with solid stone, and move through it without disturbing it." level = 5 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE vitae_cost = 2 violates_masquerade = TRUE cancelable = TRUE - duration_length = 15 SECONDS + duration_length = 1 SCENES // might be too long... cooldown_length = 10 SECONDS +/datum/discipline_power/visceratika/flow_within_the_mountain/try_activate() + // placed in try_activate instead of pre_activation_checks so as to not consume blood while running this check + if(!HAS_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN)) + to_chat(owner, span_notice("You must cast Bond with the Mountain first before using Flow within the Mountain")) + return FALSE + ..() + /datum/discipline_power/visceratika/flow_within_the_mountain/activate() . = ..() + var/datum/discipline_power/visceratika/bond_with_the_mountain/bond = discipline.get_power(/datum/discipline_power/visceratika/bond_with_the_mountain) + bond.deactivate(forced = FALSE) ADD_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, DISCIPLINE_TRAIT) - owner.alpha = 40 apply_wibbly_filters(owner) /datum/discipline_power/visceratika/flow_within_the_mountain/deactivate() @@ -205,10 +215,11 @@ REMOVE_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, DISCIPLINE_TRAIT) remove_wibbly_filters(owner) +// there has to be a better way to do this /turf/closed/Enter(atom/movable/mover, atom/oldloc) if(isliving(mover)) var/mob/living/moving_mob = mover - if(HAS_TRAIT(moving_mob, TRAIT_PASS_THROUGH_WALLS) && (get_area(moving_mob) == get_area(src))) + if(HAS_TRAIT(moving_mob, TRAIT_PASS_THROUGH_WALLS)/* && (get_area(moving_mob) == get_area(src))*/) return TRUE return ..() From 20b60975baa5c5fda4182a72ca75dd9711dde94e Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Mon, 2 Mar 2026 14:14:30 -0500 Subject: [PATCH 06/11] ti cghat --- .../modules/powers/code/discipline/visceratika.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 5c9648eba730..ef49e30afbce 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -103,7 +103,7 @@ /datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_area_exited(atom/movable/source, area/old_area) SIGNAL_HANDLER - to_chat(owner, span_warning("You lose your connection to the hearthstone as you leave the area.")) + to_chat(owner, span_warning("You lose your connection to the stone as you leave the area.")) starting_area = null REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) owner.update_sight() @@ -143,7 +143,7 @@ to_chat(owner, span_purple("You begin to sink into the stone...")) if(!do_after(owner, 2 TURNS)) - to_chat(owner, span_warning("Your bond with the mountain is interrupted!")) + to_chat(owner, span_warning("Your bond with the nearby stone is interrupted!")) exit_turf = null return FALSE owner.forceMove(stone_turf) @@ -178,7 +178,7 @@ /datum/discipline_power/visceratika/armor_of_terra/activate() . = ..() - to_chat(owner, span_danger("This is a passive ability. The Effects are already active")) + to_chat(owner, span_danger("This is a passive ability. The effects are already active!")) //FLOW WITHIN THE MOUNTAIN From 44ff4900f894607eada6f248595c69b378c11b12 Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sat, 14 Mar 2026 15:58:51 -0400 Subject: [PATCH 07/11] Update modular_darkpack/modules/powers/code/discipline/visceratika.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- modular_darkpack/modules/powers/code/discipline/visceratika.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index ef49e30afbce..91250542ca55 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -73,7 +73,6 @@ /datum/storyteller_roll/scry_the_hearthstone bumper_text = "scry the hearthstone" - difficulty = 6 applicable_stats = list(STAT_PERCEPTION, STAT_AWARENESS) /datum/discipline_power/visceratika/scry_the_hearthstone/pre_activation_checks() From 7968c1c9f9cd766e42693e0d0867bb06d066540a Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sat, 14 Mar 2026 18:30:02 -0400 Subject: [PATCH 08/11] Update code/_globalvars/traits/_traits.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/_globalvars/traits/_traits.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 476148ebb49c..2c399bcc7fce 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -668,7 +668,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLOOD_DRINKER" = TRAIT_BLOOD_DRINKER, // 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 - Visceratika + "TRAIT_BOND_WITHIN_THE_MOUNTAIN" = TRAIT_BOND_WITHIN_THE_MOUNTAIN, // DARKPACK EDIT ADD - POWERS - (Visceratika) "TRAIT_CANNOT_RESIST_MIND_CONTROL" = TRAIT_CANNOT_RESIST_MIND_CONTROL, // DARKPACK EDIT ADD "TRAIT_CAN_ENTER_TORPOR" = TRAIT_CAN_ENTER_TORPOR, // DARKPACK EDIT ADD "TRAIT_CHARMER" = TRAIT_CHARMER, // DARKPACK EDIT ADD From 823f281dfad151f637bccf76dc4efdbc3160597b Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sat, 14 Mar 2026 18:30:21 -0400 Subject: [PATCH 09/11] Update modular_darkpack/modules/powers/code/discipline/visceratika.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- modular_darkpack/modules/powers/code/discipline/visceratika.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 91250542ca55..df654fc6c5c4 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -139,7 +139,7 @@ . = ..() exit_turf = get_turf(owner) - to_chat(owner, span_purple("You begin to sink into the stone...")) + to_chat(owner, span_notice("You begin to sink into the stone...")) if(!do_after(owner, 2 TURNS)) to_chat(owner, span_warning("Your bond with the nearby stone is interrupted!")) From 82b6b5c6a84de78aacb9e306e24eb80640f4e814 Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sat, 14 Mar 2026 18:34:23 -0400 Subject: [PATCH 10/11] Update modular_darkpack/modules/powers/code/discipline/visceratika.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- modular_darkpack/modules/powers/code/discipline/visceratika.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index df654fc6c5c4..938f8087246d 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -70,7 +70,6 @@ toggled = TRUE var/area/starting_area var/datum/storyteller_roll/scry_the_hearthstone/scry_roll - /datum/storyteller_roll/scry_the_hearthstone bumper_text = "scry the hearthstone" applicable_stats = list(STAT_PERCEPTION, STAT_AWARENESS) From 2080390e38f0f4f5822b20eff2d2b4b71d7f438f Mon Sep 17 00:00:00 2001 From: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> Date: Sat, 14 Mar 2026 18:41:20 -0400 Subject: [PATCH 11/11] dsg --- .../modules/powers/code/discipline/visceratika.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 91250542ca55..37319b0c80ae 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -91,7 +91,7 @@ var/their_name = player.name if(ishuman(player)) var/mob/living/carbon/human/human_player = player - their_name = human_player.real_name + their_name = human_player.name to_chat(owner, "- [their_name]") starting_area = get_area(owner) ADD_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) @@ -149,14 +149,12 @@ owner.alpha = 30 ADD_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN, DISCIPLINE_TRAIT) ADD_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) - owner.density = FALSE owner.damage_deflection = 3 TTRPG_DAMAGE /datum/discipline_power/visceratika/bond_with_the_mountain/deactivate(forced = TRUE) . = ..() REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) REMOVE_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN, DISCIPLINE_TRAIT) - owner.density = TRUE owner.damage_deflection = 0 if(forced) //only false when using visceratika 5. we inherit the alpha from this ability and when visceratika 5 deactivates, return to 255 if(exit_turf)