From 38b9c5a8bb6d2e477da2728223c9deb30ed7a372 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 02:15:51 +0200 Subject: [PATCH 001/104] blank disciplines --- .../vampire_clan/clans/tzimisce/creatures.dm | 18 +- .../vampire_clan/clans/tzimisce/tzimisce.dm | 23 +- .../vicissitude/shapeshift_forms.dm | 19 + .../vicissitude/shapeshifting_powers.dm | 19 + .../discipline/vicissitude/vicissitude.dm | 378 +++--------------- tgstation.dme | 3 + 6 files changed, 103 insertions(+), 357 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/creatures.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/creatures.dm index ad489e92abdb..2d301589918e 100644 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/creatures.dm +++ b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/creatures.dm @@ -1,4 +1,3 @@ - /mob/living/basic/biter name = "biter" desc = "A ferocious, fang-bearing creature that resembles a spider." @@ -184,14 +183,15 @@ /mob/living/basic/bloodcrawler var/collected_blood = 0 -/mob/living/basic/bloodcrawler/Move(NewLoc, direct) +/mob/living/basic/bloodcrawler/Move(atom/newloc, direct, glide_size_override) . = ..() - var/obj/structure/vampdoor/V = locate() in NewLoc + + var/obj/structure/vampdoor/V = locate() in newloc if(V?.lockpick_difficulty <= 10) forceMove(get_turf(V)) - for(var/obj/effect/decal/cleanable/blood/B in range(1, NewLoc)) - if(B.bloodiness) - collected_blood = collected_blood+1 - to_chat(src, span_info("You sense blood entering your mass...")) - var/turf/T = get_turf(B) - T?.wash(CLEAN_SCRUB) + + for(var/obj/effect/decal/cleanable/blood/B in get_turf(newloc)) + collected_blood += B.bloodiness + to_chat(src, span_info("You sense blood entering your mass...")) + var/turf/T = get_turf(B) + T?.wash(CLEAN_SCRUB) diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm index cf8d3c4bc0ec..2652c164b333 100644 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm +++ b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm @@ -3,38 +3,17 @@ id = VAMPIRE_CLAN_TZIMISCE desc = "If someone were to call a Tzimisce inhuman and sadistic, the Tzimisce would probably commend them for their perspicacity, and then demonstrate that their mortal definition of sadism was laughably inadequate. The Tzimisce have left the human condition behind gladly, and now focus on transcending the limitations of the vampiric state. At a casual glance or a brief conversation, a Tzimisce appears to be one of the more pleasant vampires. Polite, intelligent, and inquisitive, they seem a stark contrast to the howling Sabbat mobs or even the apparently more humane Brujah or Nosferatu. However, upon closer inspection, it becomes clear that this is merely a mask hiding something alien and monstrous." curse = "Grounded to material domain." - /* clan_disciplines = list( /datum/discipline/auspex, /datum/discipline/animalism, /datum/discipline/vicissitude - )*/ + ) male_clothes = /obj/item/clothing/under/vampire/sport female_clothes = /obj/item/clothing/under/vampire/red enlightenment = TRUE //accessories = list("spines", "spines_slim", "animal_skull", "none") //accessories_layers = list("spines" = UNICORN_LAYER, "spines_slim" = UNICORN_LAYER, "animal_skull" = UNICORN_LAYER, "none" = UNICORN_LAYER) -/datum/action/cooldown/spell/shapeshift/tzimisce - name = "Tzimisce Form" - desc = "Take on the shape a beast." - cooldown_time = 10 SECONDS - revert_on_death = TRUE - die_with_shapeshifted_form = FALSE - spell_requirements = NONE - convert_damage = FALSE - possible_shapes = list(/mob/living/basic/tzimisce_beast) - -/datum/action/cooldown/spell/shapeshift/bloodcrawler - name = "Blood Crawler" - desc = "Take on the shape a beast." - cooldown_time = 5 SECONDS - revert_on_death = TRUE - convert_damage = FALSE - spell_requirements = NONE - die_with_shapeshifted_form = FALSE - possible_shapes = list(/mob/living/basic/bloodcrawler) - /datum/vampire_clan/tzimisce/on_join_round(mob/living/carbon/human/H) . = ..() diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm new file mode 100644 index 000000000000..d16d275eb29f --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm @@ -0,0 +1,19 @@ +/datum/action/cooldown/spell/shapeshift/tzimisce + name = "Tzimisce Form" + desc = "Take on the shape a beast." + cooldown_time = 10 SECONDS + revert_on_death = TRUE + die_with_shapeshifted_form = FALSE + spell_requirements = NONE + convert_damage = FALSE + possible_shapes = list(/mob/living/basic/tzimisce_beast) + +/datum/action/cooldown/spell/shapeshift/bloodcrawler + name = "Blood Crawler" + desc = "Take on the shape a beast." + cooldown_time = 5 SECONDS + revert_on_death = TRUE + convert_damage = FALSE + spell_requirements = NONE + die_with_shapeshifted_form = FALSE + possible_shapes = list(/mob/living/basic/bloodcrawler) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm new file mode 100644 index 000000000000..5f28f969a6e4 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm @@ -0,0 +1,19 @@ +/datum/action/basic_vicissitude + name = "Vicissitude Shapeshfting" + desc = "Shapeshift your body." + button_icon_state = "basic" + check_flags = AB_CHECK_CONSCIOUS + vampiric = TRUE + +/datum/action/basic_vicissitude/Trigger() + . = ..() + + +// Malleable Visage - Transform your own appearance or voice to someone you've saved before +/datum/action/basic_viscissitude/proc/copy_voice(mob/target) + owner.override_voice = target.real_name + to_chat(owner, span_notice("We shape our glands to take the voice of [mimic_voice].")) + +/datum/action/basic_viscissitude/proc/return_voice() + owner.override_voice = "" + to_chat(owner, span_notice("Our vocal glands return to their original position.")) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 572a2a4826a7..845143d1e78a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -5,168 +5,70 @@ clan_restricted = TRUE power_type = /datum/discipline_power/vicissitude +// Level 1 /datum/discipline/vicissitude/post_gain() . = ..() owner.faction |= VAMPIRE_CLAN_TZIMISCE ADD_TRAIT(owner, TRAIT_VICISSITUDE_KNOWLEDGE, DISCIPLINE_TRAIT) +/datum/discipline_power/vicissitude/malleable_visage/post_gain() + . = ..() + var/datum/action/basic_vicissitude/basic_vicissitude = new() + basic_vicissitude.Grant(owner) + +// Level 2 +/datum/discipline_power/vicissitude/fleshcrafting/post_gain() + . = ..() + var/obj/item/organ/cyberimp/arm/surgery/surgery_implant = new() + surgery_implant.Insert(owner) + + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_wall) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_stool) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_floor) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_eyes) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_implant) + +// Level 3 +/datum/discipline_power/vicissitude/bonecrafting/post_gain() + . = ..() + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_trench) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_biter) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_fister) + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_tanker) + +// Level 4 +/datum/discipline_power/vicissitude/horrid_form/post_gain() + . = ..() + owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_heart) + +//////////////////////////////////////////////////////////////////////////////////////////// + /datum/discipline_power/vicissitude name = "Vicissitude power name" desc = "Vicissitude power description" activate_sound = 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg' -//MALLEABLE VISAGE +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /datum/discipline_power/vicissitude/malleable_visage name = "Malleable Visage" desc = "Change your features to mimic those of a victim." level = 1 - check_flags = DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND | DISC_CHECK_SEE | DISC_CHECK_LYING - + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND + target_type = TARGET_HUMAN violates_masquerade = TRUE + cooldown_length = 1 TURNS + vitae_cost = 1 + toggled = FALSE - cooldown_length = 10 SECONDS - - //why is this necessary why isn't transfer_identity working please fix this - var/datum/dna/original_dna - var/original_name - var/original_skintone - var/original_hairstyle - var/original_facialhair - var/original_haircolor - var/original_facialhaircolor - var/original_eyecolor - var/original_body_mod - var/original_body_sprite - - var/datum/dna/impersonating_dna - var/impersonating_name - var/impersonating_skintone - var/impersonating_hairstyle - var/impersonating_facialhair - var/impersonating_haircolor - var/impersonating_facialhaircolor - var/impersonating_eyecolor - var/impersonating_body_mod - var/impersonating_body_sprite - - var/is_shapeshifted = FALSE - -/datum/discipline_power/vicissitude/malleable_visage/activate() +/datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) . = ..() - if (is_shapeshifted) - var/choice = alert(owner, "What form do you wish to take?", name, "Yours", "Someone Else's") - if (choice == "Yours") - deactivate() - return - choose_impersonating() - shapeshift() +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/discipline_power/vicissitude/malleable_visage/deactivate() - . = ..() - shapeshift(to_original = TRUE) - -/datum/discipline_power/vicissitude/malleable_visage/proc/choose_impersonating() - initialize_original() - - var/list/mob/living/carbon/human/potential_victims = list() - for (var/mob/living/carbon/human/adding_victim in oviewers(3, owner)) - potential_victims += adding_victim - if (!length(potential_victims)) - to_chat(owner, span_warning("No one is close enough for you to examine...")) - return - var/mob/living/carbon/human/victim = input(owner, "Who do you wish to impersonate?", name) as null|mob in potential_victims - if (!victim) - return - - impersonating_dna = new - victim.dna.copy_dna(impersonating_dna) - impersonating_name = victim.real_name - impersonating_skintone = victim.skin_tone - impersonating_hairstyle = victim.hairstyle - impersonating_facialhair = victim.facial_hairstyle - impersonating_haircolor = victim.hair_color - impersonating_facialhaircolor = victim.facial_hair_color - impersonating_eyecolor = victim.eye_color - impersonating_body_mod = victim.base_body_mod - impersonating_body_sprite = GET_BODY_SPRITE(victim) - -/datum/discipline_power/vicissitude/malleable_visage/proc/initialize_original() - if (is_shapeshifted) - return - if (original_dna) - return - - original_dna = new - owner.dna.copy_dna(original_dna) - original_name = owner.real_name - original_skintone = owner.skin_tone - original_hairstyle = owner.hairstyle - original_facialhair = owner.facial_hairstyle - original_haircolor = owner.hair_color - original_facialhaircolor = owner.facial_hair_color - original_eyecolor = owner.eye_color - original_body_mod = owner.base_body_mod - original_body_sprite = GET_BODY_SPRITE(owner) - -/datum/discipline_power/vicissitude/malleable_visage/proc/shapeshift(to_original = FALSE, instant = FALSE) - if (!impersonating_dna) - return - if (!instant) - var/time_delay = 10 SECONDS - if (original_body_mod != impersonating_body_mod) - time_delay += 5 SECONDS - if (original_body_sprite != impersonating_body_sprite) - time_delay += 10 SECONDS - to_chat(owner, span_notice("You begin molding your appearance... This will take [DisplayTimeText(time_delay)].")) - if (!do_after(owner, time_delay)) - return - - owner.Stun(1 SECONDS) - owner.do_jitter_animation(10) - playsound(get_turf(owner), 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 100, TRUE, -6) - - if (to_original) - original_dna.transfer_identity(destination = owner, transfer_SE = TRUE, superficial = TRUE) - owner.real_name = original_name - owner.skin_tone = original_skintone - owner.set_hairstyle(original_hairstyle) - owner.set_facial_hairstyle(original_facialhair) - owner.set_haircolor(original_haircolor) - owner.set_facial_haircolor(original_facialhaircolor) - owner.set_eye_color(original_eyecolor) - owner.set_body_sprite(original_body_sprite) - is_shapeshifted = FALSE - QDEL_NULL(impersonating_dna) - else - //Nosferatu, Cappadocians, Gargoyles, Kiasyd, etc. will revert instead of being indefinitely without their curse - if (!NORMAL_BODY_SPRITE(owner)) - addtimer(CALLBACK(src, PROC_REF(revert_to_cursed_form)), 1 SCENES) - impersonating_dna.transfer_identity(destination = owner, superficial = TRUE) - owner.real_name = impersonating_name - owner.skin_tone = impersonating_skintone - owner.set_hairstyle(impersonating_hairstyle) - owner.set_facial_hairstyle(impersonating_facialhair) - owner.set_haircolor(impersonating_haircolor) - owner.set_facial_haircolor(impersonating_facialhaircolor) - owner.set_eye_color(impersonating_eyecolor) - owner.set_body_sprite(impersonating_body_sprite) - is_shapeshifted = TRUE - - owner.update_body() - -/datum/discipline_power/vicissitude/malleable_visage/proc/revert_to_cursed_form() - if (!is_shapeshifted) - return - - owner.set_body_sprite(original_body_sprite) - - to_chat(owner, span_warning("Your cursed appearance reasserts itself!")) - -//FLESHCRAFTING /datum/discipline_power/vicissitude/fleshcrafting name = "Fleshcrafting" desc = "Mold your victim's flesh and soft tissue to your desire." @@ -181,35 +83,14 @@ hostile = TRUE violates_masquerade = TRUE - cooldown_length = 5 SECONDS + cooldown_length =1 TURNS grouped_powers = list(/datum/discipline_power/vicissitude/bonecrafting) /datum/discipline_power/vicissitude/fleshcrafting/activate(mob/living/target) . = ..() - if(target.stat >= HARD_CRIT) - if(target.stat != DEAD) - target.death() - new /obj/item/stack/human_flesh/ten(target.loc) - new /obj/item/guts(target.loc) - qdel(target) - else - target.emote("scream") - target.apply_damage(30, BRUTE, BODY_ZONE_CHEST) -/datum/discipline_power/vicissitude/fleshcrafting/post_gain() - . = ..() - var/obj/item/organ/cyberimp/arm/surgery/surgery_implant = new() - surgery_implant.Insert(owner) +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (!owner.mind) - return - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_wall) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_stool) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_floor) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_eyes) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_implant) - -//BONECRAFTING /datum/discipline_power/vicissitude/bonecrafting name = "Bonecrafting" desc = "Mold your victim's flesh and soft tissue to your desire." @@ -224,150 +105,20 @@ hostile = TRUE violates_masquerade = TRUE - cooldown_length = 5 SECONDS + cooldown_length = 1 TURNS grouped_powers = list(/datum/discipline_power/vicissitude/fleshcrafting) /datum/discipline_power/vicissitude/bonecrafting/activate(mob/living/target) . = ..() - if (target.stat >= HARD_CRIT) - if(target.stat != DEAD) - target.death() - var/obj/item/bodypart/r_arm/r_arm = target.get_bodypart(BODY_ZONE_R_ARM) - var/obj/item/bodypart/l_arm/l_arm = target.get_bodypart(BODY_ZONE_L_ARM) - var/obj/item/bodypart/r_leg/r_leg = target.get_bodypart(BODY_ZONE_R_LEG) - var/obj/item/bodypart/l_leg/l_leg = target.get_bodypart(BODY_ZONE_L_LEG) - if(r_arm) - r_arm.drop_limb() - if(l_arm) - l_arm.drop_limb() - if(r_leg) - r_leg.drop_limb() - if(l_leg) - l_leg.drop_limb() - new /obj/item/stack/human_flesh/ten(target.loc) - new /obj/item/guts(target.loc) - new /obj/item/spine(target.loc) - qdel(target) - else - target.emote("scream") - target.apply_damage(60, BRUTE, BODY_ZONE_CHEST) -/datum/discipline_power/vicissitude/bonecrafting/post_gain() - . = ..() - var/datum/action/basic_vicissitude/vicissitude_upgrade = new() - vicissitude_upgrade.Grant(owner) - - if (!owner.mind) - return - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_trench) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_biter) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_fister) - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_tanker) - -/datum/action/basic_vicissitude - name = "Vicissitude Upgrade" - desc = "Upgrade your body..." - button_icon_state = "basic" - check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_LYING|AB_CHECK_CONSCIOUS - vampiric = TRUE - var/selected_upgrade - var/mutable_appearance/upgrade_overlay - var/original_skin_tone - var/original_hairstyle - var/original_body_mod - -/datum/action/basic_vicissitude/Trigger() - . = ..() - if (selected_upgrade) - remove_upgrade() - else - give_upgrade() - - owner.update_body() - -/datum/action/basic_vicissitude/proc/give_upgrade() - var/mob/living/carbon/human/user = owner - var/upgrade = input(owner, "Choose basic upgrade:", "Vicissitude Upgrades") as null|anything in list("Skin armor", "Centipede legs", "Second pair of arms", "Leather wings") - if(!upgrade) - return - to_chat(user, span_notice("You begin molding your flesh and bone into a stronger form...")) - if (!do_after(user, 10 SECONDS)) - return - if(selected_upgrade) - return - selected_upgrade = upgrade - ADD_TRAIT(user, TRAIT_UNMASQUERADE, TRAUMA_TRAIT) - switch (upgrade) - if ("Skin armor") - user.set_body_sprite("tziarmor") - original_skin_tone = user.skin_tone - user.skin_tone = "albino" - original_hairstyle = user.hairstyle - user.set_hairstyle("Bald") - original_body_mod = user.base_body_mod - user.physiology.armor.melee += 20 - user.physiology.armor.bullet += 20 - if ("Centipede legs") - user.remove_overlay(PROTEAN_LAYER) - upgrade_overlay = mutable_appearance('modular_darkpack/modules/deprecated/icons/64x64.dmi', "centipede", -PROTEAN_LAYER) - upgrade_overlay.pixel_z = -16 - upgrade_overlay.pixel_w = -16 - user.overlays_standing[PROTEAN_LAYER] = upgrade_overlay - user.apply_overlay(PROTEAN_LAYER) - user.add_movespeed_modifier(/datum/movespeed_modifier/centipede) - if ("Second pair of arms") - var/limbs = user.held_items.len - user.change_number_of_hands(limbs + 2) - user.remove_overlay(PROTEAN_LAYER) - upgrade_overlay = mutable_appearance('modular_darkpack/modules/deprecated/icons/icons.dmi', "2hands", -PROTEAN_LAYER) - upgrade_overlay.color = "#[skintone2hex(user.skin_tone)]" - user.overlays_standing[PROTEAN_LAYER] = upgrade_overlay - user.apply_overlay(PROTEAN_LAYER) - if ("Leather wings") - user.dna.species.GiveSpeciesFlight(user) - - user.do_jitter_animation(10) - playsound(get_turf(user), 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 100, TRUE, -6) - -/datum/action/basic_vicissitude/proc/remove_upgrade() - var/mob/living/carbon/human/user = owner - if (!selected_upgrade) - return - to_chat(user, span_notice("You begin surgically removing your enhancements...")) - if (!do_after(user, 10 SECONDS)) - return - REMOVE_TRAIT(user, TRAIT_UNMASQUERADE, TRAUMA_TRAIT) - switch (selected_upgrade) - if ("Skin armor") - user.set_body_sprite() - user.skin_tone = original_skin_tone - user.set_hairstyle(original_hairstyle) - user.physiology.armor.melee -= 20 - user.physiology.armor.bullet -= 20 - if ("Centipede legs") - user.remove_overlay(PROTEAN_LAYER) - QDEL_NULL(upgrade_overlay) - user.remove_movespeed_modifier(/datum/movespeed_modifier/centipede) - if ("Second pair of arms") - var/limbs = user.held_items.len - user.change_number_of_hands(limbs - 2) - user.remove_overlay(PROTEAN_LAYER) - QDEL_NULL(upgrade_overlay) - if ("Leather wings") - user.dna.species.RemoveSpeciesFlight(user) - - user.do_jitter_animation(10) - playsound(get_turf(user), 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 100, TRUE, -6) - - selected_upgrade = null - -//HORRID FORM +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /datum/discipline_power/vicissitude/horrid_form name = "Horrid Form" desc = "Shift your flesh and bone into that of a hideous monster." level = 4 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND vitae_cost = 2 violates_masquerade = TRUE @@ -375,53 +126,28 @@ duration_length = 20 SECONDS cooldown_length = 20 SECONDS - var/obj/effect/proc_holder/spell/targeted/shapeshift/tzimisce/horrid_form_shapeshift - /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() - if (!horrid_form_shapeshift) - horrid_form_shapeshift = new(owner) - - horrid_form_shapeshift.Shapeshift(owner) /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() - horrid_form_shapeshift.Restore(horrid_form_shapeshift.myshape) - owner.Stun(2 SECONDS) - owner.do_jitter_animation(50) -/datum/discipline_power/vicissitude/horrid_form/post_gain() - . = ..() - if (!owner.mind) - return - owner.mind.teach_crafting_recipe(/datum/crafting_recipe/tzi_heart) -//BLOODFORM +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /datum/discipline_power/vicissitude/bloodform name = "Bloodform" desc = "Liquefy into a shifting mass of sentient Vitae." level = 5 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND violates_masquerade = TRUE - duration_length = 20 SECONDS - cooldown_length = 20 SECONDS - - var/obj/effect/proc_holder/spell/targeted/shapeshift/bloodcrawler/bloodform_shapeshift + cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/bloodform/activate() . = ..() - if (!bloodform_shapeshift) - bloodform_shapeshift = new(owner) - - bloodform_shapeshift.Shapeshift(owner) /datum/discipline_power/vicissitude/bloodform/deactivate() . = ..() - var/mob/living/simple_animal/hostile/bloodcrawler/bloodform = bloodform_shapeshift.myshape - owner.bloodpool = min(owner.bloodpool + round(bloodform.collected_blood / 2), owner.maxbloodpool) - bloodform_shapeshift.Restore(bloodform_shapeshift.myshape) - owner.Stun(1.5 SECONDS) - owner.do_jitter_animation(30) diff --git a/tgstation.dme b/tgstation.dme index 6dec507940d4..398c9084a026 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7227,6 +7227,9 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\fleshwalls.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\human_flesh.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting_powers.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\radios\code\police_radio.dm" #include "modular_darkpack\modules\radios\code\radio.dm" #include "modular_darkpack\modules\radios\code\radio_globals.dm" From 3f09f374ee9f2fdcf5fa6a6af0261ad1889fcf15 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 02:47:01 +0200 Subject: [PATCH 002/104] raaahhhh --- .../vicissitude/basic_shapeshifting.dm | 98 +++++++++++++++++++ .../vicissitude/shapeshifting_powers.dm | 19 ---- .../discipline/vicissitude/vicissitude.dm | 2 +- tgstation.dme | 2 +- 4 files changed, 100 insertions(+), 21 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm new file mode 100644 index 000000000000..2b2ca8bcc82e --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -0,0 +1,98 @@ +#define CHANGE_HAIR "Change Hair" +#define CHANGE_BEARD "Change Beard" +#define CHANGE_SEX "Change Sex" +#define CHANGE_EYES "Change Eyes" +#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES) + +/datum/action/cooldown/basic_vicissitude + name = "Vicissitude Shapeshfting" + desc = "Shapeshift your body." + button_icon_state = "basic" + check_flags = AB_CHECK_CONSCIOUS + vampiric = TRUE + click_to_activate = TRUE + +/datum/action/cooldown/basic_vicissitude/Trigger() + . = ..() + display_radial_menu(owner) + +/datum/action/cooldown/basic_vicissitude/proc/display_radial_menu(mob/target) + var/chosen_option = show_radial_menu(owner, target, CHOICE_OPTIONS, target, radius = 36, tooltips = TRUE) + if(!chosen_option) + return TRUE + + switch(chosen_option) + if(CHANGE_HAIR) + change_hair(target) + if(CHANGE_BEARD) + change_beard(target) + if(CHANGE_SEX) // sex: yes + change_sex(target) + if(CHANGE_EYES) + change_eyes(target) + return display_radial_menu(target) + +/datum/action/cooldown/basic_viscissitude/proc/change_sex(mob/living/carbon/human/target) + var/chosen_sex = tgui_input_list(target, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) + switch(chosen_sex) + if("Male") + target.gender = MALE + if("Female") + target.gender = FEMALE + if("Plural") + target.gender = PLURAL + if("Neuter") + target.gender = NEUTER + + var/chosen_physique = tgui_input_list(target, "Alter your physique as well?", "Confirmation", list("Masculine", "Feminine")) + if(chosen_physique) + target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE + + target.dna.update_ui_block(/datum/dna_block/identity/gender) + target.update_body(is_creating = TRUE) // or else physique won't change properly + target.update_mutations_overlay() //(hulk male/female) + target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing + to_chat(owner, span_notice("You finish altering the gender of [target].")) + +/datum/action/cooldown/basic_viscissitude/proc/change_eyes(mob/living/carbon/human/target) + var/new_eye_color = input(target, "Choose your eye color", "Eye Color", target.eye_color_left) as color|null + if(isnull(new_eye_color)) + return TRUE + target.set_eye_color(sanitize_hexcolor(new_eye_color)) + target.dna.update_ui_block(/datum/dna_block/identity/eye_colors) + target.update_body() + to_chat(owner, span_notice("You finish altering the eye color of [target].")) + +/datum/action/cooldown/basic_viscissitude/proc/change_beard(mob/living/carbon/human/beard_dresser) + var/new_style = tgui_input_list(beard_dresser, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) + if(isnull(new_style)) + return TRUE + beard_dresser.set_facial_hairstyle(new_style, update = TRUE) + to_chat(owner, span_notice("You finish altering the facial style of [target].")) + + var/new_face_color = input(target, "Choose your facial hair color", "Hair Color", target.facial_hair_color) as color|null + if(new_face_color) + target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) + target.dna.update_ui_block(/datum/dna_block/identity/facial_color) + to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) + return TRUE + +/datum/action/cooldown/basic_viscissitude/proc/change_hair(mob/living/carbon/human/target) + var/new_style = tgui_input_list(hairdresser, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) + if(isnull(new_style)) + return TRUE + hairdresser.set_hairstyle(new_style, update = TRUE) + to_chat(owner, span_notice("You finish altering the hair style of [target].")) + + var/new_hair_color = input(target, "Choose your hair color", "Hair Color", target.hair_color) as color|null + if(new_hair_color) + target.set_haircolor(sanitize_hexcolor(new_hair_color)) + target.dna.update_ui_block(/datum/dna_block/identity/hair_color) + to_chat(owner, span_notice("You finish altering the hair color of [target].")) + return TRUE + +#undef CHANGE_HAIR +#undef CHANGE_BEARD +#undef CHANGE_SEX +#undef CHANGE_EYES +#undef CHOICE_OPTIONS diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm deleted file mode 100644 index 5f28f969a6e4..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting_powers.dm +++ /dev/null @@ -1,19 +0,0 @@ -/datum/action/basic_vicissitude - name = "Vicissitude Shapeshfting" - desc = "Shapeshift your body." - button_icon_state = "basic" - check_flags = AB_CHECK_CONSCIOUS - vampiric = TRUE - -/datum/action/basic_vicissitude/Trigger() - . = ..() - - -// Malleable Visage - Transform your own appearance or voice to someone you've saved before -/datum/action/basic_viscissitude/proc/copy_voice(mob/target) - owner.override_voice = target.real_name - to_chat(owner, span_notice("We shape our glands to take the voice of [mimic_voice].")) - -/datum/action/basic_viscissitude/proc/return_voice() - owner.override_voice = "" - to_chat(owner, span_notice("Our vocal glands return to their original position.")) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 845143d1e78a..85e13aa139dc 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -13,7 +13,7 @@ /datum/discipline_power/vicissitude/malleable_visage/post_gain() . = ..() - var/datum/action/basic_vicissitude/basic_vicissitude = new() + var/datum/action/cooldown/basic_vicissitude/basic_vicissitude = new() basic_vicissitude.Grant(owner) // Level 2 diff --git a/tgstation.dme b/tgstation.dme index 398c9084a026..7304ff70b9c4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7225,10 +7225,10 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\path_of_blood.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\basic_shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\fleshwalls.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\human_flesh.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting_powers.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\radios\code\police_radio.dm" #include "modular_darkpack\modules\radios\code\radio.dm" From af9d51aeccbe7714603a6fcc76078297a4dc6b8a Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 02:57:26 +0200 Subject: [PATCH 003/104] AAAAAAAAAA --- .../vampire_clan/clans/tzimisce/tzimisce.dm | 2 +- .../vicissitude/basic_shapeshifting.dm | 30 +++++++++---------- .../discipline/vicissitude/vicissitude.dm | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm index 2652c164b333..55e2d23b0ad7 100644 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm +++ b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/tzimisce.dm @@ -4,7 +4,7 @@ desc = "If someone were to call a Tzimisce inhuman and sadistic, the Tzimisce would probably commend them for their perspicacity, and then demonstrate that their mortal definition of sadism was laughably inadequate. The Tzimisce have left the human condition behind gladly, and now focus on transcending the limitations of the vampiric state. At a casual glance or a brief conversation, a Tzimisce appears to be one of the more pleasant vampires. Polite, intelligent, and inquisitive, they seem a stark contrast to the howling Sabbat mobs or even the apparently more humane Brujah or Nosferatu. However, upon closer inspection, it becomes clear that this is merely a mask hiding something alien and monstrous." curse = "Grounded to material domain." clan_disciplines = list( - /datum/discipline/auspex, + // /datum/discipline/auspex, /datum/discipline/animalism, /datum/discipline/vicissitude ) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm index 2b2ca8bcc82e..ca3e9a2c68af 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -12,9 +12,9 @@ vampiric = TRUE click_to_activate = TRUE -/datum/action/cooldown/basic_vicissitude/Trigger() +/datum/action/cooldown/basic_vicissitude/Trigger(mob/clicker, trigger_flags, atom/target) . = ..() - display_radial_menu(owner) + display_radial_menu(target) /datum/action/cooldown/basic_vicissitude/proc/display_radial_menu(mob/target) var/chosen_option = show_radial_menu(owner, target, CHOICE_OPTIONS, target, radius = 36, tooltips = TRUE) @@ -32,8 +32,8 @@ change_eyes(target) return display_radial_menu(target) -/datum/action/cooldown/basic_viscissitude/proc/change_sex(mob/living/carbon/human/target) - var/chosen_sex = tgui_input_list(target, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) +/datum/action/cooldown/basic_vicissitude/proc/change_sex(mob/living/carbon/human/target) + var/chosen_sex = tgui_input_list(owner, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) switch(chosen_sex) if("Male") target.gender = MALE @@ -44,7 +44,7 @@ if("Neuter") target.gender = NEUTER - var/chosen_physique = tgui_input_list(target, "Alter your physique as well?", "Confirmation", list("Masculine", "Feminine")) + var/chosen_physique = tgui_input_list(owner, "Alter your physique as well?", "Confirmation", list("Masculine", "Feminine")) if(chosen_physique) target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE @@ -54,8 +54,8 @@ target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing to_chat(owner, span_notice("You finish altering the gender of [target].")) -/datum/action/cooldown/basic_viscissitude/proc/change_eyes(mob/living/carbon/human/target) - var/new_eye_color = input(target, "Choose your eye color", "Eye Color", target.eye_color_left) as color|null +/datum/action/cooldown/basic_vicissitude/proc/change_eyes(mob/living/carbon/human/target) + var/new_eye_color = input(owner, "Choose your eye color", "Eye Color", target.eye_color_left) as color|null if(isnull(new_eye_color)) return TRUE target.set_eye_color(sanitize_hexcolor(new_eye_color)) @@ -63,28 +63,28 @@ target.update_body() to_chat(owner, span_notice("You finish altering the eye color of [target].")) -/datum/action/cooldown/basic_viscissitude/proc/change_beard(mob/living/carbon/human/beard_dresser) - var/new_style = tgui_input_list(beard_dresser, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) +/datum/action/cooldown/basic_vicissitude/proc/change_beard(mob/living/carbon/human/target) + var/new_style = tgui_input_list(owner, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) if(isnull(new_style)) return TRUE - beard_dresser.set_facial_hairstyle(new_style, update = TRUE) + target.set_facial_hairstyle(new_style, update = TRUE) to_chat(owner, span_notice("You finish altering the facial style of [target].")) - var/new_face_color = input(target, "Choose your facial hair color", "Hair Color", target.facial_hair_color) as color|null + var/new_face_color = input(owner, "Choose your facial hair color", "Hair Color", target.facial_hair_color) as color|null if(new_face_color) target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) target.dna.update_ui_block(/datum/dna_block/identity/facial_color) to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) return TRUE -/datum/action/cooldown/basic_viscissitude/proc/change_hair(mob/living/carbon/human/target) - var/new_style = tgui_input_list(hairdresser, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) +/datum/action/cooldown/basic_vicissitude/proc/change_hair(mob/living/carbon/human/target) + var/new_style = tgui_input_list(owner, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) if(isnull(new_style)) return TRUE - hairdresser.set_hairstyle(new_style, update = TRUE) + target.set_hairstyle(new_style, update = TRUE) to_chat(owner, span_notice("You finish altering the hair style of [target].")) - var/new_hair_color = input(target, "Choose your hair color", "Hair Color", target.hair_color) as color|null + var/new_hair_color = input(owner, "Choose your hair color", "Hair Color", target.hair_color) as color|null if(new_hair_color) target.set_haircolor(sanitize_hexcolor(new_hair_color)) target.dna.update_ui_block(/datum/dna_block/identity/hair_color) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 85e13aa139dc..0121269eaaa3 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -19,7 +19,7 @@ // Level 2 /datum/discipline_power/vicissitude/fleshcrafting/post_gain() . = ..() - var/obj/item/organ/cyberimp/arm/surgery/surgery_implant = new() + var/obj/item/organ/cyberimp/arm/toolkit/surgery/surgery_implant = new() surgery_implant.Insert(owner) owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_wall) From ffc4773b822be184b9d6dec00244eca3b55bb8ec Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 17:50:21 +0200 Subject: [PATCH 004/104] viscissitude 1 alpha --- .../vicissitude/basic_shapeshifting.dm | 81 ++++++++++++++----- .../discipline/vicissitude/vicissitude.dm | 6 +- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm index ca3e9a2c68af..5f12b0103b2d 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -1,23 +1,43 @@ #define CHANGE_HAIR "Change Hair" #define CHANGE_BEARD "Change Beard" #define CHANGE_SEX "Change Sex" +#define CHANGE_NAME "Change Name" #define CHANGE_EYES "Change Eyes" -#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES) +#define CHANGE_RACE "Change Race" +#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE) -/datum/action/cooldown/basic_vicissitude +/datum/action/cooldown/mob_cooldown/basic_vicissitude name = "Vicissitude Shapeshfting" - desc = "Shapeshift your body." - button_icon_state = "basic" - check_flags = AB_CHECK_CONSCIOUS + desc = "Shapeshift a body." + button_icon = 'icons/mob/actions/actions_changeling.dmi' + button_icon_state = "transform" + check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_HANDS_BLOCKED | AB_CHECK_IMMOBILE | AB_CHECK_INCAPACITATED vampiric = TRUE - click_to_activate = TRUE + var/list/choices = CHOICE_OPTIONS -/datum/action/cooldown/basic_vicissitude/Trigger(mob/clicker, trigger_flags, atom/target) + ranged_mousepointer = 'icons/effects/mouse_pointers/discipline.dmi' + +/datum/action/cooldown/mob_cooldown/basic_vicissitude/New(Target, original) . = ..() + update_choices() + +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/update_choices() + for(var/i in choices) + choices[i] = icon('icons/hud/radial.dmi', i) + +/datum/action/cooldown/mob_cooldown/basic_vicissitude/Activate(atom/target) + if(!ishuman(target)) + return FALSE + if(!IN_GIVEN_RANGE(owner, target, 1)) + owner.balloon_alert(owner, "too far!") + return FALSE + unset_click_ability(owner, refund_cooldown = FALSE) display_radial_menu(target) + // StartCooldown() + return TRUE -/datum/action/cooldown/basic_vicissitude/proc/display_radial_menu(mob/target) - var/chosen_option = show_radial_menu(owner, target, CHOICE_OPTIONS, target, radius = 36, tooltips = TRUE) +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/display_radial_menu(mob/target) + var/chosen_option = show_radial_menu(owner, target, choices, target, radius = 36, tooltips = TRUE) if(!chosen_option) return TRUE @@ -26,13 +46,17 @@ change_hair(target) if(CHANGE_BEARD) change_beard(target) - if(CHANGE_SEX) // sex: yes + if(CHANGE_SEX) change_sex(target) + if(CHANGE_NAME) + change_name(target) if(CHANGE_EYES) change_eyes(target) + if(CHANGE_RACE) + change_race(target) return display_radial_menu(target) -/datum/action/cooldown/basic_vicissitude/proc/change_sex(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_sex(mob/living/carbon/human/target) var/chosen_sex = tgui_input_list(owner, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) switch(chosen_sex) if("Male") @@ -44,7 +68,7 @@ if("Neuter") target.gender = NEUTER - var/chosen_physique = tgui_input_list(owner, "Alter your physique as well?", "Confirmation", list("Masculine", "Feminine")) + var/chosen_physique = tgui_input_list(owner, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) if(chosen_physique) target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE @@ -54,8 +78,8 @@ target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing to_chat(owner, span_notice("You finish altering the gender of [target].")) -/datum/action/cooldown/basic_vicissitude/proc/change_eyes(mob/living/carbon/human/target) - var/new_eye_color = input(owner, "Choose your eye color", "Eye Color", target.eye_color_left) as color|null +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_eyes(mob/living/carbon/human/target) + var/new_eye_color = input(owner, "Choose a eye color", "Eye Color", target.eye_color_left) as color|null if(isnull(new_eye_color)) return TRUE target.set_eye_color(sanitize_hexcolor(new_eye_color)) @@ -63,34 +87,55 @@ target.update_body() to_chat(owner, span_notice("You finish altering the eye color of [target].")) -/datum/action/cooldown/basic_vicissitude/proc/change_beard(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_beard(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) if(isnull(new_style)) return TRUE target.set_facial_hairstyle(new_style, update = TRUE) to_chat(owner, span_notice("You finish altering the facial style of [target].")) - var/new_face_color = input(owner, "Choose your facial hair color", "Hair Color", target.facial_hair_color) as color|null + var/new_face_color = input(owner, "Choose a facial hair color", "Hair Color", target.facial_hair_color) as color|null if(new_face_color) target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) target.dna.update_ui_block(/datum/dna_block/identity/facial_color) to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) return TRUE -/datum/action/cooldown/basic_vicissitude/proc/change_hair(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_hair(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) if(isnull(new_style)) return TRUE target.set_hairstyle(new_style, update = TRUE) to_chat(owner, span_notice("You finish altering the hair style of [target].")) - var/new_hair_color = input(owner, "Choose your hair color", "Hair Color", target.hair_color) as color|null + var/new_hair_color = input(owner, "Choose a hair color", "Hair Color", target.hair_color) as color|null if(new_hair_color) target.set_haircolor(sanitize_hexcolor(new_hair_color)) target.dna.update_ui_block(/datum/dna_block/identity/hair_color) to_chat(owner, span_notice("You finish altering the hair color of [target].")) return TRUE +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_name(mob/living/carbon/human/user) + var/newname = sanitize_name(tgui_input_text(user, "Who are we again?", "Name change", user.name, MAX_NAME_LEN)) + if(!newname) + return TRUE + user.real_name = newname + user.name = newname + if(user.dna) + user.dna.real_name = newname + if(user.mind) + user.mind.name = newname + return TRUE + +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_race(mob/living/carbon/human/user) + var/new_s_tone = tgui_input_list(owner, "Choose a skin tone", "Race change", GLOB.skin_tones) + if(new_s_tone) + user.skin_tone = new_s_tone + user.dna.update_ui_block(/datum/dna_block/identity/skin_tone) + user.update_body(is_creating = TRUE) + user.update_mutations_overlay() + return TRUE + #undef CHANGE_HAIR #undef CHANGE_BEARD #undef CHANGE_SEX diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 0121269eaaa3..8abaea7783b6 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -13,7 +13,7 @@ /datum/discipline_power/vicissitude/malleable_visage/post_gain() . = ..() - var/datum/action/cooldown/basic_vicissitude/basic_vicissitude = new() + var/datum/action/cooldown/mob_cooldown/basic_vicissitude/basic_vicissitude = new(owner) basic_vicissitude.Grant(owner) // Level 2 @@ -53,10 +53,10 @@ /datum/discipline_power/vicissitude/malleable_visage name = "Malleable Visage" - desc = "Change your features to mimic those of a victim." + desc = "Remember another person's features and copy them at a later time." level = 1 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE target_type = TARGET_HUMAN violates_masquerade = TRUE cooldown_length = 1 TURNS From 934681ac5494d4c23bf6eb8aa4a896651e081a7a Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 18:02:09 +0200 Subject: [PATCH 005/104] Update basic_shapeshifting.dm --- .../powers/code/discipline/vicissitude/basic_shapeshifting.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm index 5f12b0103b2d..4e2593d07fd6 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -116,7 +116,7 @@ return TRUE /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_name(mob/living/carbon/human/user) - var/newname = sanitize_name(tgui_input_text(user, "Who are we again?", "Name change", user.name, MAX_NAME_LEN)) + var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", user.name, MAX_NAME_LEN)) if(!newname) return TRUE user.real_name = newname From 85c596a802c1b04f571190c29340624ca81a89cf Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 19:07:14 +0200 Subject: [PATCH 006/104] finally --- .../vicissitude/basic_shapeshifting.dm | 37 +++++++++++++++--- .../powers/icons/shapeshifting_radial.dmi | Bin 0 -> 606 bytes 2 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm index 4e2593d07fd6..6ffc7481950a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -4,7 +4,8 @@ #define CHANGE_NAME "Change Name" #define CHANGE_EYES "Change Eyes" #define CHANGE_RACE "Change Race" -#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE) +#define CHANGE_HEIGHT "Change Height" +#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT) /datum/action/cooldown/mob_cooldown/basic_vicissitude name = "Vicissitude Shapeshfting" @@ -23,7 +24,7 @@ /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/update_choices() for(var/i in choices) - choices[i] = icon('icons/hud/radial.dmi', i) + choices[i] = icon('modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi', i) /datum/action/cooldown/mob_cooldown/basic_vicissitude/Activate(atom/target) if(!ishuman(target)) @@ -54,6 +55,8 @@ change_eyes(target) if(CHANGE_RACE) change_race(target) + if(CHANGE_HEIGHT) + change_height(target) return display_radial_menu(target) /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_sex(mob/living/carbon/human/target) @@ -117,8 +120,8 @@ /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_name(mob/living/carbon/human/user) var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", user.name, MAX_NAME_LEN)) - if(!newname) - return TRUE + if(!newname || newname == user.name) + return FALSE user.real_name = newname user.name = newname if(user.dna) @@ -128,7 +131,13 @@ return TRUE /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_race(mob/living/carbon/human/user) - var/new_s_tone = tgui_input_list(owner, "Choose a skin tone", "Race change", GLOB.skin_tones) + var/list/skin_tones = list() + for(var/skin_tone as anything in GLOB.skin_tone_names) + var/skin_tone_name = GLOB.skin_tone_names[skin_tone] + skin_tones[skin_tone_name] = skin_tone + + var/new_s_tone = tgui_input_list(owner, "Choose a skin tone", "Race change", skin_tones) + new_s_tone = skin_tones[new_s_tone] if(new_s_tone) user.skin_tone = new_s_tone user.dna.update_ui_block(/datum/dna_block/identity/skin_tone) @@ -136,8 +145,26 @@ user.update_mutations_overlay() return TRUE +/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_height(mob/living/carbon/human/user) + var/list/heights = list( + "Taller" = HUMAN_HEIGHT_TALLER, + "Tall" = HUMAN_HEIGHT_TALL, + "Average" = HUMAN_HEIGHT_MEDIUM, + "Short" = HUMAN_HEIGHT_SHORT, + "Shorter" = HUMAN_HEIGHT_SHORTEST, + ) + + var/new_height = tgui_input_list(owner, "Choose a height", "Height change", heights) + new_height = heights[new_height] + if(new_height) + user.set_mob_height(new_height) + return TRUE + #undef CHANGE_HAIR #undef CHANGE_BEARD #undef CHANGE_SEX #undef CHANGE_EYES +#undef CHANGE_NAME +#undef CHANGE_RACE +#undef CHANGE_HEIGHT #undef CHOICE_OPTIONS diff --git a/modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi b/modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi new file mode 100644 index 0000000000000000000000000000000000000000..644726610f935e03248e1459c114e1a6e0c2ebb0 GIT binary patch literal 606 zcmV-k0-^nhP)L_t(oh3%J3 zYQr!Ph245TOg$%4jo(=6r%3uZ{(7j5Qwrb(sxM}3&A zTUU*pTmHcXAp`^$?zwVOI1q9tI0A)SiGw%Z^J9~rx7L{8EH|5uFIDoCkE7zp1i(=U zuIZF25!k^PpZwsNz^157KnU=a5Qy!l@gtI>B~V8YPkx>R`2BBZ&+!hFb?>UNQwS=R zO7&*CKB`KqkAp*8OrMAwwl%JZ`5PBW2UkZaCk5vNcaS>Qd08GauvEf6Ol=*dJXmG6 z@`%rbxUxC0;=2;qk80rX=$3q-o*>6pA(%ZPDgkC7Y*CJ_5F`+qJ1~KSKnDWmLa-bW z$2)KbnXpwALLUc*xKOE7s&~`4FTBwH?!GSwu8ijwgcJs{Ej$PIuLNEdATRW2BH;wV so+qR*kZs{Sfj1DC(}ZDPP^tc+A727hnrupY$^ZZW07*qoM6N<$f|fD;Y5)KL literal 0 HcmV?d00001 From b458c16b1e34079659160cafba13cd93f5ff1fe9 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 24 Nov 2025 19:36:21 +0200 Subject: [PATCH 007/104] wow --- .../code/discipline/__discipline_power.dm | 10 +-- .../vicissitude/basic_shapeshifting.dm | 66 ++++++++++++++----- .../discipline/vicissitude/vicissitude.dm | 1 - 3 files changed, 52 insertions(+), 25 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm index 950579505a68..4cf31c7bebc9 100644 --- a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm +++ b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm @@ -458,14 +458,8 @@ * of using this power amongst NPCs. */ /datum/discipline_power/proc/do_masquerade_violation(atom/target) - /* - if (violates_masquerade) - if (owner.CheckEyewitness(target ? target : owner, owner, 7, TRUE)) - //TODO: detach this from being a human - if (ishuman(owner)) - var/mob/living/carbon/human/human = owner - human.adjust_masquerade(-1) - */ + if(violates_masquerade) + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) /** * Overridable proc handling the spending of resources (vitae/blood) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm index 6ffc7481950a..4a80a4fb9ba9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -61,6 +61,8 @@ /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_sex(mob/living/carbon/human/target) var/chosen_sex = tgui_input_list(owner, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE switch(chosen_sex) if("Male") target.gender = MALE @@ -70,51 +72,72 @@ target.gender = PLURAL if("Neuter") target.gender = NEUTER + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) var/chosen_physique = tgui_input_list(owner, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) - if(chosen_physique) - target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE - + if(!chosen_physique) + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE + target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE target.dna.update_ui_block(/datum/dna_block/identity/gender) target.update_body(is_creating = TRUE) // or else physique won't change properly target.update_mutations_overlay() //(hulk male/female) target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the gender of [target].")) /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_eyes(mob/living/carbon/human/target) var/new_eye_color = input(owner, "Choose a eye color", "Eye Color", target.eye_color_left) as color|null if(isnull(new_eye_color)) return TRUE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE target.set_eye_color(sanitize_hexcolor(new_eye_color)) target.dna.update_ui_block(/datum/dna_block/identity/eye_colors) target.update_body() + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the eye color of [target].")) /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_beard(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) if(isnull(new_style)) - return TRUE + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE target.set_facial_hairstyle(new_style, update = TRUE) + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the facial style of [target].")) var/new_face_color = input(owner, "Choose a facial hair color", "Hair Color", target.facial_hair_color) as color|null - if(new_face_color) - target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) - target.dna.update_ui_block(/datum/dna_block/identity/facial_color) + if(!new_face_color) + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE + target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) + target.dna.update_ui_block(/datum/dna_block/identity/facial_color) + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) return TRUE /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_hair(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) if(isnull(new_style)) - return TRUE + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE target.set_hairstyle(new_style, update = TRUE) + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the hair style of [target].")) var/new_hair_color = input(owner, "Choose a hair color", "Hair Color", target.hair_color) as color|null - if(new_hair_color) - target.set_haircolor(sanitize_hexcolor(new_hair_color)) - target.dna.update_ui_block(/datum/dna_block/identity/hair_color) + if(!new_hair_color) + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE + target.set_haircolor(sanitize_hexcolor(new_hair_color)) + target.dna.update_ui_block(/datum/dna_block/identity/hair_color) + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the hair color of [target].")) return TRUE @@ -122,12 +145,15 @@ var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", user.name, MAX_NAME_LEN)) if(!newname || newname == user.name) return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE user.real_name = newname user.name = newname if(user.dna) user.dna.real_name = newname if(user.mind) user.mind.name = newname + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) return TRUE /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_race(mob/living/carbon/human/user) @@ -138,11 +164,15 @@ var/new_s_tone = tgui_input_list(owner, "Choose a skin tone", "Race change", skin_tones) new_s_tone = skin_tones[new_s_tone] - if(new_s_tone) - user.skin_tone = new_s_tone - user.dna.update_ui_block(/datum/dna_block/identity/skin_tone) + if(!new_s_tone) + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE + user.skin_tone = new_s_tone + user.dna.update_ui_block(/datum/dna_block/identity/skin_tone) user.update_body(is_creating = TRUE) user.update_mutations_overlay() + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) return TRUE /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_height(mob/living/carbon/human/user) @@ -156,8 +186,12 @@ var/new_height = tgui_input_list(owner, "Choose a height", "Height change", heights) new_height = heights[new_height] - if(new_height) - user.set_mob_height(new_height) + if(!new_height) + return FALSE + if(!do_after(owner, delay = 1 TURNS, target = target)) + return FALSE + user.set_mob_height(new_height) + SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) return TRUE #undef CHANGE_HAIR diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 8abaea7783b6..1ab67c66f658 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -58,7 +58,6 @@ level = 1 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE target_type = TARGET_HUMAN - violates_masquerade = TRUE cooldown_length = 1 TURNS vitae_cost = 1 toggled = FALSE From 0d33333d39b02028732d061f40a5a9631ed7e65c Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 25 Nov 2025 02:49:25 +0200 Subject: [PATCH 008/104] Update basic_shapeshifting.dm --- .../powers/code/discipline/vicissitude/basic_shapeshifting.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm index 4a80a4fb9ba9..ed69e8fe09e2 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm @@ -34,7 +34,6 @@ return FALSE unset_click_ability(owner, refund_cooldown = FALSE) display_radial_menu(target) - // StartCooldown() return TRUE /datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/display_radial_menu(mob/target) From e862ca3a04ba2cf283e5cff7c55532e14ff6316b Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Wed, 26 Nov 2025 11:47:22 +0200 Subject: [PATCH 009/104] RAHHHHHHHHHH --- code/__DEFINES/~darkpack/dcs/power_signals.dm | 8 - code/__DEFINES/~darkpack/discipline.dm | 9 - .../code/discipline/__discipline_power.dm | 246 ++++++++---------- .../powers/code/discipline/protean/protean.dm | 1 - ...c_shapeshifting.dm => malleable_visage.dm} | 119 ++++++--- .../discipline/vicissitude/vicissitude.dm | 20 -- .../modules/powers/code/discipline_actions.dm | 60 ++--- tgstation.dme | 2 +- 8 files changed, 216 insertions(+), 249 deletions(-) rename modular_darkpack/modules/powers/code/discipline/vicissitude/{basic_shapeshifting.dm => malleable_visage.dm} (65%) diff --git a/code/__DEFINES/~darkpack/dcs/power_signals.dm b/code/__DEFINES/~darkpack/dcs/power_signals.dm index 7851940c2675..bdb54789d00a 100644 --- a/code/__DEFINES/~darkpack/dcs/power_signals.dm +++ b/code/__DEFINES/~darkpack/dcs/power_signals.dm @@ -1,14 +1,6 @@ /* Signals for the World of Darkness power system */ //Normal signals sent to the power and caster, _ON signals are sent to target -//can_activate() signals -///from datum/discipline_power/can_activate(): (datum/discipline_power/power, atom/target) -#define COMSIG_POWER_TRY_ACTIVATE "power_try_activate" -///from datum/discipline_power/can_activate(): (datum/discipline_power/power) -#define COMSIG_POWER_TRY_ACTIVATE_ON "power_try_activate_on" - ///Makes can_activate return false and prevent activation - #define POWER_PREVENT_ACTIVATE (1<<0) - //pre_activation() signals ///from datum/discipline_power/pre_activation(): (datum/discipline_power/power, atom/target) #define COMSIG_POWER_PRE_ACTIVATION "power_pre_activation" diff --git a/code/__DEFINES/~darkpack/discipline.dm b/code/__DEFINES/~darkpack/discipline.dm index 10f85f1b3b4b..0a529e498d55 100644 --- a/code/__DEFINES/~darkpack/discipline.dm +++ b/code/__DEFINES/~darkpack/discipline.dm @@ -18,9 +18,6 @@ ///Targets mobs only if they are vampires/Kindred #define TARGET_VAMPIRE (1<<8) -//Aggregated targeting for /mob/living -#define MOB_LIVING_TARGETING (TARGET_MOB | TARGET_LIVING | TARGET_HUMAN | TARGET_PLAYER | TARGET_VAMPIRE) - //bitflags to check for certain conditions determining ability to actually cast a discipline //flags overlap, like DISC_CHECK_CAPABLE covers DISC_CHECK_CONSCIOUS and DISC_CHECK_TORPOR ///Caster must not be in Torpor @@ -41,9 +38,3 @@ #define DISC_CHECK_SEE (1<<7) ///Caster must see the target directly (without the usage of auspex for example) #define DISC_CHECK_DIRECT_SEE (1<<8) - -//power type defines, will be useful when it's made generic -///Power is a Discipline of the Vampire: The Masquerade game line -#define POWER_TYPE_DISCIPLINE "discipline" -///Power is a Chi Art of the Kindred of the East game line -#define POWER_TYPE_CHI_ART "chi_art" diff --git a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm index 4cf31c7bebc9..95300088718c 100644 --- a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm +++ b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm @@ -74,7 +74,7 @@ */ /datum/discipline_power/proc/get_cooldown() var/time_left = timeleft(cooldown_timer) - if (isnull(time_left)) + if(isnull(time_left)) time_left = 0 return time_left @@ -86,11 +86,11 @@ */ /datum/discipline_power/proc/get_duration() var/highest_timeleft = 0 - for (var/timer_id in duration_timers) + for(var/timer_id in duration_timers) var/time_left = timeleft(timer_id) - if (isnull(time_left)) + if(isnull(time_left)) continue - if (time_left > highest_timeleft) + if(time_left > highest_timeleft) highest_timeleft = time_left return highest_timeleft @@ -120,99 +120,99 @@ SHOULD_CALL_PARENT(TRUE) //can't be casted without an actual caster - if (!owner) + if(!owner) return FALSE //can always be deactivated if that's an option - if (active && (toggled || cancelable)) - if (can_deactivate_untargeted()) + if(active && (toggled || cancelable)) + if(can_deactivate_untargeted()) return TRUE else return FALSE //the power is currently active - if (active && !multi_activate) - if (alert) + if(active && !multi_activate) + if(alert) to_chat(owner, span_warning("[src] is already active!")) return FALSE //a mutually exclusive power is already active or on cooldown - if (islist(grouped_powers)) - for (var/exclude_power in grouped_powers) + if(islist(grouped_powers)) + for(var/exclude_power in grouped_powers) var/datum/discipline_power/found_power = discipline.get_power(exclude_power) - if (!found_power || (found_power == src)) + if(!found_power || (found_power == src)) continue - if (found_power.active) - if (found_power.cancelable || found_power.toggled) - if (alert) + if(found_power.active) + if(found_power.cancelable || found_power.toggled) + if(alert) found_power.try_deactivate(direct = TRUE, alert = TRUE) return TRUE else - if (alert) + if(alert) to_chat(owner, span_warning("You cannot have [src] and [found_power] active at the same time!")) return FALSE - if (found_power.get_cooldown()) - if (alert) + if(found_power.get_cooldown()) + if(alert) to_chat(owner, span_warning("You cannot activate [src] before [found_power]'s cooldown expires in [DisplayTimeText(found_power.get_cooldown())].")) return FALSE //the user cannot afford the power's vitae expenditure - if (!can_afford()) - if (alert) + if(!can_afford()) + if(alert) to_chat(owner, span_warning("You do not have enough blood to cast [src]!")) return FALSE //the power's cooldown has not elapsed - if (get_cooldown()) - if (alert) + if(get_cooldown()) + if(alert) to_chat(owner, span_warning("[src] is still on cooldown for [DisplayTimeText(get_cooldown())]!")) return FALSE //status checks - if ((check_flags & DISC_CHECK_TORPORED) && HAS_TRAIT(owner, TRAIT_TORPOR)) - if (alert) + if((check_flags & DISC_CHECK_TORPORED) && HAS_TRAIT(owner, TRAIT_TORPOR)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] while in Torpor!")) return FALSE - if ((check_flags & DISC_CHECK_CONSCIOUS) && HAS_TRAIT(owner, TRAIT_KNOCKEDOUT)) - if (alert) + if((check_flags & DISC_CHECK_CONSCIOUS) && HAS_TRAIT(owner, TRAIT_KNOCKEDOUT)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] while unconscious!")) return FALSE - if ((check_flags & DISC_CHECK_CAPABLE) && HAS_TRAIT(owner, TRAIT_INCAPACITATED)) - if (alert) + if((check_flags & DISC_CHECK_CAPABLE) && HAS_TRAIT(owner, TRAIT_INCAPACITATED)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] while incapacitated!")) return FALSE - if ((check_flags & DISC_CHECK_IMMOBILE) && HAS_TRAIT(owner, TRAIT_IMMOBILIZED)) - if (alert) + if((check_flags & DISC_CHECK_IMMOBILE) && HAS_TRAIT(owner, TRAIT_IMMOBILIZED)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] while immobilised!")) return FALSE - if ((check_flags & DISC_CHECK_LYING) && HAS_TRAIT(owner, TRAIT_FLOORED)) - if (alert) + if((check_flags & DISC_CHECK_LYING) && HAS_TRAIT(owner, TRAIT_FLOORED)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] while lying on the floor!")) return FALSE - if ((check_flags & DISC_CHECK_SEE) && owner.is_blind()) - if (alert) + if((check_flags & DISC_CHECK_SEE) && owner.is_blind()) + if(alert) to_chat(owner, span_warning("You cannot cast [src] without your sight!")) return FALSE - if ((check_flags & DISC_CHECK_SPEAK) && HAS_TRAIT(owner, TRAIT_MUTE)) - if (alert) + if((check_flags & DISC_CHECK_SPEAK) && HAS_TRAIT(owner, TRAIT_MUTE)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] without speaking!")) return FALSE - if ((check_flags & DISC_CHECK_FREE_HAND) && HAS_TRAIT(owner, TRAIT_HANDS_BLOCKED)) - if (alert) + if((check_flags & DISC_CHECK_FREE_HAND) && HAS_TRAIT(owner, TRAIT_HANDS_BLOCKED)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] without free hands!")) return FALSE //respect pacifism, prevent hostile Discipline usage from pacifists - if (hostile && HAS_TRAIT(owner, TRAIT_PACIFISM)) - if (alert) + if(hostile && HAS_TRAIT(owner, TRAIT_PACIFISM)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] as a pacifist!")) return FALSE @@ -237,98 +237,72 @@ /datum/discipline_power/proc/can_activate(atom/target, alert = FALSE) SHOULD_CALL_PARENT(TRUE) - var/signal_return = SEND_SIGNAL(src, COMSIG_POWER_TRY_ACTIVATE, src, target) | SEND_SIGNAL(owner, COMSIG_POWER_TRY_ACTIVATE, src, target) - if (target) - signal_return |= SEND_SIGNAL(target, COMSIG_POWER_TRY_ACTIVATE_ON, src) - if (signal_return & POWER_PREVENT_ACTIVATE) - //feedback is sent by the proc preventing activation - return FALSE - //can't activate if the owner isn't capable of it - if (!can_activate_untargeted(alert)) + if(!can_activate_untargeted(alert)) return FALSE - if ((check_flags & DISC_CHECK_DIRECT_SEE) && !can_see(owner, target, range)) - if (alert) + if((check_flags & DISC_CHECK_DIRECT_SEE) && !can_see(owner, target, range)) + if(alert) to_chat(owner, span_warning("You cannot cast [src] without being in direct line of sight!")) return FALSE //self activated so target doesn't matter - if (target_type == NONE) + if(target_type == NONE) return TRUE - //check if distance is in range - if (get_dist(owner, target) > range) - if (alert) - to_chat(owner, span_warning("[target] is out of range!")) - return FALSE - //handling for if a ranged Discipline is being used on its caster - if (target == owner) - if (target_type & TARGET_SELF) + if(target == owner) + if(target_type & TARGET_SELF) return TRUE else - if (alert) + if(alert) to_chat(owner, span_warning("You can't use this power on yourself!")) return FALSE //account for complete supernatural resistance - if (HAS_TRAIT(target, TRAIT_ANTIMAGIC)) - if (alert) + if(HAS_TRAIT(target, TRAIT_ANTIMAGIC)) + if(alert) to_chat(owner, span_warning("[target] resists your Disciplines!")) return FALSE - //check target type - // mob/living with a bunch of extra conditions - if ((target_type & MOB_LIVING_TARGETING) && isliving(target)) - //make sure our LIVING target isn't DEAD - var/mob/living/living_target = target - if ((target_type & TARGET_LIVING) && (living_target.stat == DEAD)) - if (alert) - to_chat(owner, span_warning("You cannot cast [src] on dead things!")) - return FALSE - - if ((target_type & TARGET_PLAYER) && !living_target.client) - if (alert) - to_chat(owner, span_warning("You can only cast [src] on other players!")) - return FALSE - - if ((target_type & TARGET_VAMPIRE) && !iskindred(target)) - if (alert) - to_chat(owner, span_warning("You can only cast [src] on Kindred!")) - return FALSE + //make sure our LIVING target isn't DEAD + var/mob/living/living_target = target + if((target_type & TARGET_LIVING) && (living_target?.stat == DEAD)) + if(alert) + to_chat(owner, span_warning("You cannot cast [src] on dead things!")) + return FALSE - if (ishuman(target)) - var/mob/living/carbon/human/human_target = living_target - //todo: remove this variable and refactor it into TRAIT_ANTIMAGIC - if (human_target.resistant_to_disciplines) - if (alert) - to_chat(owner, span_warning("[target] resists your Disciplines!")) - return FALSE + if((target_type & TARGET_PLAYER) && !living_target?.client) + if(alert) + to_chat(owner, span_warning("You can only cast [src] on other players!")) + return FALSE - if (target_type & TARGET_HUMAN) - return TRUE + if((target_type & TARGET_VAMPIRE) && !iskindred(target)) + if(alert) + to_chat(owner, span_warning("You can only cast [src] on Kindred!")) + return FALSE - if (target_type & TARGET_HUMAN) - if (alert) - to_chat(owner, span_warning("You can only cast [src] on humans!")) - return FALSE + if(target_type & TARGET_HUMAN && !ishuman(target)) + if(alert) + to_chat(owner, span_warning("You can only cast [src] on humans!")) + return FALSE + if((target_type & TARGET_OBJ) && istype(target, /obj)) return TRUE - if ((target_type & TARGET_OBJ) && istype(target, /obj)) + if((target_type & TARGET_GHOST) && istype(target, /mob/dead)) return TRUE - if ((target_type & TARGET_GHOST) && istype(target, /mob/dead)) + if((target_type & TARGET_TURF) && istype(target, /turf)) return TRUE - if ((target_type & TARGET_TURF) && istype(target, /turf)) - return TRUE + //check if distance is in range + if(!IN_GIVEN_RANGE(owner, target, range)) + if(alert) + to_chat(owner, span_warning("[target] is out of range!")) + return FALSE - //target doesn't match any targeted types, so can't activate on them - if (alert) - to_chat(owner, span_warning("You cannot cast [src] on [target]!")) - return FALSE + return TRUE /** * Spends necessary resources (vitae) and makes sure activation is valid @@ -351,13 +325,13 @@ spend_resources() var/signal_return = SEND_SIGNAL(src, COMSIG_POWER_PRE_ACTIVATION, src, target) | SEND_SIGNAL(owner, COMSIG_POWER_PRE_ACTIVATION, src, target) - if (target) + if(target) signal_return |= SEND_SIGNAL(target, COMSIG_POWER_PRE_ACTIVATION_ON, src) - if (signal_return & POWER_CANCEL_ACTIVATION) + if(signal_return & POWER_CANCEL_ACTIVATION) //feedback is sent by the proc cancelling activation return - if (!pre_activation_checks(target)) + if(!pre_activation_checks(target)) return activate(target) @@ -403,17 +377,17 @@ SEND_SIGNAL(src, COMSIG_POWER_ACTIVATE, src, target) SEND_SIGNAL(owner, COMSIG_POWER_ACTIVATE, src, target) - if (target) + if(target) SEND_SIGNAL(target, COMSIG_POWER_ACTIVATE_ON, src, was_hostile_usage(target)) //make it active if it can only have one active instance at a time - if (!multi_activate) + if(!multi_activate) active = TRUE - if (!cooldown_override) + if(!cooldown_override) do_cooldown(TRUE) - if (!duration_override) + if(!duration_override) do_duration(target) do_activate_sound() @@ -434,7 +408,7 @@ * only when using powers. */ /datum/discipline_power/proc/do_activate_sound() - if (activate_sound) + if(activate_sound) owner.playsound_local(owner, activate_sound, 50, FALSE) /** @@ -442,7 +416,7 @@ * effects, audible to everyone around it. */ /datum/discipline_power/proc/do_effect_sound(atom/target) - if (effect_sound) + if(effect_sound) playsound(target ? target : owner, effect_sound, 50, FALSE) /** @@ -467,7 +441,7 @@ * returns FALSE otherwise. */ /datum/discipline_power/proc/spend_resources() - if (can_afford()) + if(can_afford()) owner.bloodpool = owner.bloodpool - vitae_cost owner.update_action_buttons() return TRUE @@ -495,7 +469,7 @@ * try_deactivate(direct = TRUE). */ /datum/discipline_power/proc/do_duration(atom/target) - if (toggled && (duration_length == 0)) + if(toggled && (duration_length == 0)) return //REFACTOR ME @@ -514,7 +488,7 @@ * * on_activation - if this proc is being called by activate(), which will stop it from triggering unless multi_activate is true. */ /datum/discipline_power/proc/do_cooldown(on_activation = FALSE) - if (multi_activate && !on_activation) + if(multi_activate && !on_activation) return cooldown_timer = addtimer(CALLBACK(src, PROC_REF(cooldown_expire)), cooldown_length, TIMER_STOPPABLE | TIMER_DELETE_ME) @@ -527,7 +501,7 @@ * * target - what the targeted Discipline (null otherwise) is being used on. */ /datum/discipline_power/proc/try_activate(atom/target) - if (can_activate(target, TRUE)) + if(can_activate(target, TRUE)) pre_activation(target) return TRUE @@ -543,7 +517,7 @@ clear_duration_timer() //proceed to deactivation or refreshing - if (toggled) + if(toggled) refresh(target) else try_deactivate(target) @@ -567,8 +541,8 @@ /datum/discipline_power/proc/can_deactivate_untargeted() SHOULD_CALL_PARENT(TRUE) - if (target_type == NONE) - if (isnull(owner)) + if(target_type == NONE) + if(isnull(owner)) return FALSE return TRUE @@ -587,17 +561,17 @@ SHOULD_CALL_PARENT(TRUE) var/signal_return = SEND_SIGNAL(src, COMSIG_POWER_TRY_DEACTIVATE, src, target) | SEND_SIGNAL(owner, COMSIG_POWER_TRY_DEACTIVATE, src, target) - if (target) + if(target) signal_return |= SEND_SIGNAL(target, COMSIG_POWER_TRY_DEACTIVATE_ON, src) - if (signal_return & POWER_PREVENT_DEACTIVATE) + if(signal_return & POWER_PREVENT_DEACTIVATE) //feedback is sent by the proc cancelling activation return FALSE - if (!can_deactivate_untargeted()) + if(!can_deactivate_untargeted()) return FALSE - if (target_type != NONE) - if (!target) + if(target_type != NONE) + if(!target) return FALSE return TRUE @@ -619,21 +593,21 @@ /datum/discipline_power/proc/deactivate(atom/target, direct = FALSE) SHOULD_CALL_PARENT(TRUE) - if (direct) + if(direct) clear_duration_timer() SEND_SIGNAL(src, COMSIG_POWER_DEACTIVATE, src, target) SEND_SIGNAL(owner, COMSIG_POWER_DEACTIVATE, src, target) - if (target) + if(target) SEND_SIGNAL(target, COMSIG_POWER_DEACTIVATE_ON, src) - if (!multi_activate) + if(!multi_activate) active = FALSE - if (!cooldown_override) + if(!cooldown_override) do_cooldown() - if (deactivate_sound) + if(deactivate_sound) owner.playsound_local(owner, deactivate_sound, 50, FALSE) owner.update_action_buttons() @@ -651,10 +625,10 @@ /datum/discipline_power/proc/try_deactivate(atom/target, direct = FALSE, alert = FALSE) SHOULD_NOT_OVERRIDE(TRUE) - if (can_deactivate(target)) + if(can_deactivate(target)) deactivate(target, direct) - if (alert) + if(alert) to_chat(owner, span_warning("You deactivate [src].")) /** @@ -673,18 +647,18 @@ * * target - what the targeted Discipline (null otherwise) is being used on. */ /datum/discipline_power/proc/refresh(atom/target) - if (!active) + if(!active) return - if (!owner) + if(!owner) return //cancels if overridable proc returns FALSE - if (!do_refresh_checks(target)) + if(!do_refresh_checks(target)) return - if (spend_resources()) + if(spend_resources()) to_chat(owner, span_warning("[src] consumes your blood to stay active.")) - if (!duration_override) + if(!duration_override) do_duration(target) else to_chat(owner, span_warning("You don't have enough blood to keep [src] active!")) @@ -705,7 +679,7 @@ * duration_timer expire without calling the relevant proc. */ /datum/discipline_power/proc/clear_duration_timer(to_clear = 1) - if (toggled && (duration_length == 0)) + if(toggled && (duration_length == 0)) return deltimer(duration_timers[to_clear]) diff --git a/modular_darkpack/modules/powers/code/discipline/protean/protean.dm b/modular_darkpack/modules/powers/code/discipline/protean/protean.dm index 35d28111eaae..7f5d80f80971 100644 --- a/modular_darkpack/modules/powers/code/discipline/protean/protean.dm +++ b/modular_darkpack/modules/powers/code/discipline/protean/protean.dm @@ -66,7 +66,6 @@ /datum/discipline_power/protean/feral_claws/activate() . = ..() - sleep(1 TURNS) owner.drop_all_held_items() owner.put_in_r_hand(new /obj/item/gangrel_claws(owner)) owner.put_in_l_hand(new /obj/item/gangrel_claws(owner)) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/malleable_visage.dm similarity index 65% rename from modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm rename to modular_darkpack/modules/powers/code/discipline/vicissitude/malleable_visage.dm index ed69e8fe09e2..9f6099cf7fda 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/basic_shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/malleable_visage.dm @@ -5,38 +5,38 @@ #define CHANGE_EYES "Change Eyes" #define CHANGE_RACE "Change Race" #define CHANGE_HEIGHT "Change Height" -#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT) - -/datum/action/cooldown/mob_cooldown/basic_vicissitude - name = "Vicissitude Shapeshfting" - desc = "Shapeshift a body." - button_icon = 'icons/mob/actions/actions_changeling.dmi' - button_icon_state = "transform" - check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_HANDS_BLOCKED | AB_CHECK_IMMOBILE | AB_CHECK_INCAPACITATED - vampiric = TRUE +#define CHANGE_APPEARANCE "Change Appearance" +#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT, CHANGE_APPEARANCE) + +/datum/discipline_power/vicissitude/malleable_visage + name = "Malleable Visage" + desc = "Basic Shapeshifting." + + level = 1 + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + target_type = TARGET_HUMAN | TARGET_SELF + cooldown_length = 1 TURNS + vitae_cost = 1 + range = 1 + toggled = FALSE var/list/choices = CHOICE_OPTIONS - ranged_mousepointer = 'icons/effects/mouse_pointers/discipline.dmi' - -/datum/action/cooldown/mob_cooldown/basic_vicissitude/New(Target, original) +/datum/discipline_power/vicissitude/malleable_visage/post_gain() . = ..() update_choices() -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/update_choices() +/datum/discipline_power/vicissitude/malleable_visage/proc/update_choices() for(var/i in choices) choices[i] = icon('modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi', i) -/datum/action/cooldown/mob_cooldown/basic_vicissitude/Activate(atom/target) +/datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) + . = ..() if(!ishuman(target)) return FALSE - if(!IN_GIVEN_RANGE(owner, target, 1)) - owner.balloon_alert(owner, "too far!") - return FALSE - unset_click_ability(owner, refund_cooldown = FALSE) display_radial_menu(target) return TRUE -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/display_radial_menu(mob/target) +/datum/discipline_power/vicissitude/malleable_visage/proc/display_radial_menu(mob/target) var/chosen_option = show_radial_menu(owner, target, choices, target, radius = 36, tooltips = TRUE) if(!chosen_option) return TRUE @@ -56,10 +56,19 @@ change_race(target) if(CHANGE_HEIGHT) change_height(target) + if(CHANGE_APPEARANCE) + show_saved_profiles(target) + + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE return display_radial_menu(target) -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_sex(mob/living/carbon/human/target) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_sex(mob/living/carbon/human/target) var/chosen_sex = tgui_input_list(owner, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) + if(!chosen_sex) + return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE switch(chosen_sex) @@ -76,6 +85,8 @@ var/chosen_physique = tgui_input_list(owner, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) if(!chosen_physique) return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE @@ -86,10 +97,12 @@ SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the gender of [target].")) -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_eyes(mob/living/carbon/human/target) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_eyes(mob/living/carbon/human/target) var/new_eye_color = input(owner, "Choose a eye color", "Eye Color", target.eye_color_left) as color|null - if(isnull(new_eye_color)) + if(!new_eye_color) return TRUE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE target.set_eye_color(sanitize_hexcolor(new_eye_color)) @@ -98,9 +111,11 @@ SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) to_chat(owner, span_notice("You finish altering the eye color of [target].")) -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_beard(mob/living/carbon/human/target) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_beard(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) - if(isnull(new_style)) + if(!new_style) + return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE @@ -111,6 +126,8 @@ var/new_face_color = input(owner, "Choose a facial hair color", "Hair Color", target.facial_hair_color) as color|null if(!new_face_color) return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) @@ -119,9 +136,11 @@ to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) return TRUE -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_hair(mob/living/carbon/human/target) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_hair(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) - if(isnull(new_style)) + if(!new_style) + return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE @@ -132,6 +151,8 @@ var/new_hair_color = input(owner, "Choose a hair color", "Hair Color", target.hair_color) as color|null if(!new_hair_color) return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE target.set_haircolor(sanitize_hexcolor(new_hair_color)) @@ -140,22 +161,24 @@ to_chat(owner, span_notice("You finish altering the hair color of [target].")) return TRUE -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_name(mob/living/carbon/human/user) - var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", user.name, MAX_NAME_LEN)) - if(!newname || newname == user.name) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_name(mob/living/carbon/human/target) + var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", target.name, MAX_NAME_LEN)) + if(!newname || newname == target.name) + return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE - user.real_name = newname - user.name = newname - if(user.dna) - user.dna.real_name = newname - if(user.mind) - user.mind.name = newname + target.real_name = newname + target.name = newname + if(target.dna) + target.dna.real_name = newname + if(target.mind) + target.mind.name = newname SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) return TRUE -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_race(mob/living/carbon/human/user) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_race(mob/living/carbon/human/target) var/list/skin_tones = list() for(var/skin_tone as anything in GLOB.skin_tone_names) var/skin_tone_name = GLOB.skin_tone_names[skin_tone] @@ -165,16 +188,18 @@ new_s_tone = skin_tones[new_s_tone] if(!new_s_tone) return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE - user.skin_tone = new_s_tone - user.dna.update_ui_block(/datum/dna_block/identity/skin_tone) - user.update_body(is_creating = TRUE) - user.update_mutations_overlay() + target.skin_tone = new_s_tone + target.dna.update_ui_block(/datum/dna_block/identity/skin_tone) + target.update_body(is_creating = TRUE) + target.update_mutations_overlay() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) return TRUE -/datum/action/cooldown/mob_cooldown/basic_vicissitude/proc/change_height(mob/living/carbon/human/user) +/datum/discipline_power/vicissitude/malleable_visage/proc/change_height(mob/living/carbon/human/target) var/list/heights = list( "Taller" = HUMAN_HEIGHT_TALLER, "Tall" = HUMAN_HEIGHT_TALL, @@ -187,12 +212,22 @@ new_height = heights[new_height] if(!new_height) return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE - user.set_mob_height(new_height) + target.set_mob_height(new_height) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) return TRUE +/datum/discipline_power/vicissitude/malleable_visage/proc/show_saved_profiles(mob/living/carbon/human/target) + var/chosen_option // = show_radial_menu(owner, target, saved_profiles, target, radius = 36, tooltips = TRUE) + if(!chosen_option) + return TRUE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE + + #undef CHANGE_HAIR #undef CHANGE_BEARD #undef CHANGE_SEX diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 1ab67c66f658..5edc00f74918 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -11,11 +11,6 @@ owner.faction |= VAMPIRE_CLAN_TZIMISCE ADD_TRAIT(owner, TRAIT_VICISSITUDE_KNOWLEDGE, DISCIPLINE_TRAIT) -/datum/discipline_power/vicissitude/malleable_visage/post_gain() - . = ..() - var/datum/action/cooldown/mob_cooldown/basic_vicissitude/basic_vicissitude = new(owner) - basic_vicissitude.Grant(owner) - // Level 2 /datum/discipline_power/vicissitude/fleshcrafting/post_gain() . = ..() @@ -51,21 +46,6 @@ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/discipline_power/vicissitude/malleable_visage - name = "Malleable Visage" - desc = "Remember another person's features and copy them at a later time." - - level = 1 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE - target_type = TARGET_HUMAN - cooldown_length = 1 TURNS - vitae_cost = 1 - toggled = FALSE - -/datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) - . = ..() - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude/fleshcrafting diff --git a/modular_darkpack/modules/powers/code/discipline_actions.dm b/modular_darkpack/modules/powers/code/discipline_actions.dm index 11f7985765f0..a56c57601e8b 100644 --- a/modular_darkpack/modules/powers/code/discipline_actions.dm +++ b/modular_darkpack/modules/powers/code/discipline_actions.dm @@ -30,13 +30,13 @@ /datum/action/discipline/proc/register_to_availability_signals() //this should only go through if it's the first Discipline gained by the mob for (var/datum/action/action in owner.actions) - if (action == src) + if(action == src) continue - if (istype(action, /datum/action/discipline)) + if(istype(action, /datum/action/discipline)) return //irrelevant for NPCs - if (!owner.client) + if(!owner.client) return var/list/relevant_signals = list( @@ -72,49 +72,45 @@ build_all_button_icons(UPDATE_BUTTON_STATUS) //easy de-targeting - if (targeting) + if(targeting) end_targeting() - . = FALSE - return . + return FALSE //cancel targeting of other Disciplines when one is activated for (var/datum/action/action in owner.actions) - if (istype(action, /datum/action/discipline)) + if(istype(action, /datum/action/discipline)) var/datum/action/discipline/other_discipline = action other_discipline.end_targeting() //ensure it's actually possible to trigger this - if (!discipline?.current_power || !isliving(owner)) - . = FALSE - return . + if(!discipline?.current_power) + return FALSE var/datum/discipline_power/power = discipline.current_power - if (power.active) //deactivation logic - if (power.cancelable || power.toggled) + if(power.active) //deactivation logic + if(power.cancelable || power.toggled) power.try_deactivate(direct = TRUE, alert = TRUE) else to_chat(owner, span_warning("[power] is already active!")) else //activate - if (power.target_type == NONE) //self activation + if(power.target_type == NONE) //self activation power.try_activate() else //ranged targeted activation begin_targeting() build_all_button_icons(UPDATE_BUTTON_STATUS) - return . - /datum/action/discipline/proc/switch_level(to_advance = 1) SEND_SOUND(owner, sound('modular_darkpack/modules/deprecated/sounds/highlight.ogg', 0, 0, 50)) - if (discipline.level_casting + to_advance > length(discipline.known_powers)) + if(discipline.level_casting + to_advance > length(discipline.known_powers)) discipline.level_casting = 1 - else if (discipline.level_casting + to_advance < 1) + else if(discipline.level_casting + to_advance < 1) discipline.level_casting = length(discipline.known_powers) else discipline.level_casting += to_advance - if (targeting) + if(targeting) end_targeting() discipline.current_power = discipline.known_powers[discipline.level_casting] @@ -129,45 +125,45 @@ /datum/action/discipline/proc/end_targeting() var/client/client = owner?.client - if (!client) + if(!client) return - if (!targeting) + if(!targeting) return - UnregisterSignal(owner, COMSIG_MOB_CLICKON) targeting = FALSE client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + owner.update_mouse_pointer() + owner.click_intercept = null -/datum/action/discipline/proc/handle_click(mob/source, atom/target, click_parameters) +/datum/action/discipline/proc/InterceptClickOn(mob/user, params, atom/target) SIGNAL_HANDLER - var/list/modifiers = params2list(click_parameters) + var/list/modifiers = params2list(params) //ensure we actually need a target, or cancel on right click - if (!targeting || modifiers[RIGHT_CLICK]) + if(!targeting || modifiers[RIGHT_CLICK]) SEND_SOUND(owner, sound('modular_darkpack/modules/deprecated/sounds/highlight.ogg', 0, 0, 50)) end_targeting() return //actually try to use the Discipline on the target - spawn() - if (discipline.current_power.try_activate(target)) - end_targeting() + if(discipline.current_power.try_activate(target)) + end_targeting() return COMSIG_MOB_CANCEL_CLICKON /datum/action/discipline/proc/begin_targeting() var/client/client = owner?.client - if (!client) + if(!client) return - if (targeting) + if(targeting) return - if (!discipline.current_power.can_activate_untargeted(TRUE)) + if(!discipline.current_power.can_activate_untargeted(TRUE)) return SEND_SOUND(owner, sound('modular_darkpack/modules/deprecated/sounds/highlight.ogg', 0, 0, 50)) - RegisterSignal(owner, COMSIG_MOB_CLICKON, PROC_REF(handle_click)) targeting = TRUE client.mouse_pointer_icon = 'modular_darkpack/modules/deprecated/icons/effects/mouse_pointers/discipline.dmi' + owner.click_intercept = src /atom/movable/screen/movable/action_button/Click(location, control, params) if(istype(linked_action, /datum/action/discipline)) @@ -176,7 +172,7 @@ //increase on right click, decrease on shift right click if(LAZYACCESS(modifiers, RIGHT_CLICK)) var/datum/action/discipline/discipline = linked_action - if (LAZYACCESS(modifiers, "alt")) + if(LAZYACCESS(modifiers, ALT_CLICK)) discipline.switch_level(-1) else discipline.switch_level(1) diff --git a/tgstation.dme b/tgstation.dme index fada978adec1..e7d5355ea7d5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7234,9 +7234,9 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\path_of_blood.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\basic_shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\fleshwalls.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\human_flesh.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\malleable_visage.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\radios\code\police_radio.dm" From 7e041bf0dc5685d5862df5a341c117f891dc5eb3 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Wed, 26 Nov 2025 12:38:03 +0200 Subject: [PATCH 010/104] rahhh --- code/datums/components/crafting/crafting.dm | 2 +- .../modules/deprecated/icons/items.dmi | Bin 17308 -> 16597 bytes .../clans/tzimisce/crafting_recipes.dm | 4 +- .../vampire_clan/clans/tzimisce/objects.dm | 46 -------- .../code/discipline/vicissitude}/creatures.dm | 0 .../discipline/vicissitude/flesh_items.dm | 109 ++++++++++++++++++ .../code/discipline/vicissitude/fleshwalls.dm | 22 ---- .../discipline/vicissitude/human_flesh.dm | 22 ---- .../discipline/vicissitude/vicissitude.dm | 19 --- .../modules/powers/icons/flesh_items.dmi | Bin 0 -> 7200 bytes tgstation.dme | 6 +- 11 files changed, 114 insertions(+), 116 deletions(-) delete mode 100644 modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/objects.dm rename modular_darkpack/modules/{kindred_species/code/vampire_clan/clans/tzimisce => powers/code/discipline/vicissitude}/creatures.dm (100%) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/fleshwalls.dm delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/human_flesh.dm create mode 100644 modular_darkpack/modules/powers/icons/flesh_items.dmi diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index 1aae8eabf262..daf1dda11474 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -444,7 +444,7 @@ if (recipe.category == CAT_CULT && !IS_CULTIST(user)) // Skip blood cult recipes if not cultist return FALSE // DARKPACK EDIT ADD - START - if (recipe.category == CAT_TZIMISCE) // TODO: [Disciplines] Uncomment when viscissitude is a thing. + if (recipe.category == CAT_TZIMISCE) return HAS_TRAIT(user, TRAIT_VICISSITUDE_KNOWLEDGE) // DARKPACK EDIT ADD - END return recipe.is_recipe_available(user) // DARKPACK EDIT CHANGE diff --git a/modular_darkpack/modules/deprecated/icons/items.dmi b/modular_darkpack/modules/deprecated/icons/items.dmi index c4303eb0f58d5cf945c50be0eb7c051e15b6eb64..f1059b26a8bf4948725b2477f3f0ab048da90ca7 100644 GIT binary patch literal 16597 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 diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/crafting_recipes.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/crafting_recipes.dm index bcb1b8eea8b0..f169df1807ad 100644 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/crafting_recipes.dm +++ b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/crafting_recipes.dm @@ -24,7 +24,7 @@ name = "Implanting Flesh Device" time = 50 reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/knife/vamp = 1, /obj/item/reagent_containers/blood = 1) - result = /obj/item/autosurgeon // DARKPACK TODO - Tzimisce autosurgeon + result = /obj/item/autosurgeon/vicissitude category = CAT_TZIMISCE /datum/crafting_recipe/tzi_floor @@ -39,7 +39,7 @@ name = "Flesh Wall" time = 50 reqs = list(/obj/item/stack/human_flesh = 2) - result = /turf/closed/wall/mineral/iron // DARKPACK TODO - Tzimisce walls + result = /obj/structure/fleshwall category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/objects.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/objects.dm deleted file mode 100644 index b6f8f00b4e64..000000000000 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/objects.dm +++ /dev/null @@ -1,46 +0,0 @@ -/obj/item/ground_heir - name = "bag of ground" - desc = "Boghatyrskaya sila taitsa zdies'..." - icon_state = "dirt" - icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - w_class = WEIGHT_CLASS_SMALL - -// Why is this NOT a floor type. -/obj/effect/decal/gut_floor - name = "gut floor" - icon = 'modular_darkpack/modules/walls/icons/floors.dmi' - icon_state = "tzimisce_floor" - -/obj/effect/decal/gut_floor/Initialize(mapload) - . = ..() - if(isopenturf(get_turf(src))) - var/turf/open/T = get_turf(src) - if(T) - T.slowdown = 1 - -/obj/effect/decal/gut_floor/Destroy() - . = ..() - var/turf/open/T = get_turf(src) - if(T) - T.slowdown = initial(T.slowdown) - -/obj/structure/chair/old/tzimisce - icon = 'modular_darkpack/modules/deprecated/icons/props.dmi' - icon_state = "tzimisce_stool" - -/obj/item/guts - name = "guts" - desc = "Just blood and guts..." - icon_state = "guts" - icon = 'modular_darkpack/modules/deprecated/icons/items.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - w_class = WEIGHT_CLASS_SMALL - -/obj/item/spine - name = "spine" - desc = "If only I had control..." - icon_state = "spine" - icon = 'modular_darkpack/modules/deprecated/icons/items.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - w_class = WEIGHT_CLASS_SMALL diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/creatures.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/creatures.dm similarity index 100% rename from modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/creatures.dm rename to modular_darkpack/modules/powers/code/discipline/vicissitude/creatures.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm new file mode 100644 index 000000000000..39358374dbf4 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm @@ -0,0 +1,109 @@ +/datum/material/vicissitude_flesh + name = "flesh" + desc = "What remains of a person, when you really get down to it." + color = "#d8965b" + categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL = TRUE) + sheet_type = /obj/item/stack/sheet/meat + value_per_unit = 0.05 + beauty_modifier = -0.3 + strength_modifier = 0.7 + item_sound_override = 'sound/effects/meatslap.ogg' + turf_sound_override = FOOTSTEP_MEAT + +/obj/item/stack/human_flesh + name = "human flesh" + desc = "What the fuck..." + singular_name = "human flesh" + icon = 'modular_darkpack/modules/deprecated/icons/obj/stack_objects.dmi' + icon_state = "human" + ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') + mats_per_unit = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT) + merge_type = /obj/item/stack/human_flesh + max_amount = 50 + +/obj/item/stack/human_flesh/fifty + amount = 50 + +/obj/item/stack/human_flesh/twenty + amount = 20 + +/obj/item/stack/human_flesh/ten + amount = 10 + +/obj/item/stack/human_flesh/five + amount = 5 + +/obj/item/autosurgeon/organ/vicissitude + name = "little brother" + desc = "A talented fleshcrafted creature that can insert an implant or organ into its master without the hassle of extensive surgery. \ + Its mouth is eagerly awaiting implants or organs. However, it's quite greedy, so a screwdriver must be used to pry away accidentally added items." + icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + +/obj/structure/fleshwall + name = "flesh wall" + desc = "Wall from FLESH." + icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + icon_state = "fleshwall" + plane = GAME_PLANE + layer = ABOVE_MOB_LAYER + anchored = TRUE + density = TRUE + max_integrity = 100 + +/obj/structure/tzijelly + name = "jelly thing" + desc = "an important part of the meat matrix." + icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + icon_state = "tzijelly" + plane = GAME_PLANE + layer = ABOVE_MOB_LAYER + anchored = TRUE + density = TRUE + max_integrity = 100 + +/obj/item/ground_heir + name = "bag of ground" + desc = "Boghatyrskaya sila taitsa zdies'..." + icon_state = "dirt" + icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' + ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') + w_class = WEIGHT_CLASS_SMALL + +// Why is this NOT a floor type. +/obj/effect/decal/gut_floor + name = "gut floor" + icon = 'modular_darkpack/modules/walls/icons/floors.dmi' + icon_state = "tzimisce_floor" + +/obj/effect/decal/gut_floor/Initialize(mapload) + . = ..() + if(isopenturf(get_turf(src))) + var/turf/open/T = get_turf(src) + if(T) + T.slowdown = 1 + +/obj/effect/decal/gut_floor/Destroy() + . = ..() + var/turf/open/T = get_turf(src) + if(T) + T.slowdown = initial(T.slowdown) + +/obj/structure/chair/old/tzimisce + icon = 'modular_darkpack/modules/deprecated/icons/props.dmi' + icon_state = "tzimisce_stool" + +/obj/item/guts + name = "guts" + desc = "Just blood and guts..." + icon_state = "guts" + icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') + w_class = WEIGHT_CLASS_SMALL + +/obj/item/spine + name = "spine" + desc = "If only I had control..." + icon_state = "spine" + icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') + w_class = WEIGHT_CLASS_SMALL diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/fleshwalls.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/fleshwalls.dm deleted file mode 100644 index 23112b415532..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/fleshwalls.dm +++ /dev/null @@ -1,22 +0,0 @@ - -/obj/structure/fleshwall - name = "flesh wall" - desc = "Wall from FLESH." - icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' - icon_state = "fleshwall" - plane = GAME_PLANE - layer = ABOVE_MOB_LAYER - anchored = TRUE - density = TRUE - max_integrity = 100 - -/obj/structure/tzijelly - name = "jelly thing" - desc = "an important part of the meat matrix." - icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' - icon_state = "tzijelly" - plane = GAME_PLANE - layer = ABOVE_MOB_LAYER - anchored = TRUE - density = TRUE - max_integrity = 100 diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/human_flesh.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/human_flesh.dm deleted file mode 100644 index f023ec1e8299..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/human_flesh.dm +++ /dev/null @@ -1,22 +0,0 @@ -/obj/item/stack/human_flesh - name = "human flesh" - desc = "What the fuck..." - singular_name = "human flesh" - icon = 'modular_darkpack/modules/deprecated/icons/obj/stack_objects.dmi' - icon_state = "human" - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - mats_per_unit = list(/datum/material/pizza = SHEET_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/human_flesh - max_amount = 50 - -/obj/item/stack/human_flesh/fifty - amount = 50 - -/obj/item/stack/human_flesh/twenty - amount = 20 - -/obj/item/stack/human_flesh/ten - amount = 10 - -/obj/item/stack/human_flesh/five - amount = 5 diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 5edc00f74918..2e7720b79b2d 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -17,25 +17,6 @@ var/obj/item/organ/cyberimp/arm/toolkit/surgery/surgery_implant = new() surgery_implant.Insert(owner) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_wall) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_stool) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_floor) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_eyes) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_implant) - -// Level 3 -/datum/discipline_power/vicissitude/bonecrafting/post_gain() - . = ..() - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_trench) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_biter) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_fister) - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_tanker) - -// Level 4 -/datum/discipline_power/vicissitude/horrid_form/post_gain() - . = ..() - owner.mind?.teach_crafting_recipe(/datum/crafting_recipe/tzi_heart) - //////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude diff --git a/modular_darkpack/modules/powers/icons/flesh_items.dmi b/modular_darkpack/modules/powers/icons/flesh_items.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7618d09d5454ca3508a69829612b48540f3cf624 GIT binary patch literal 7200 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index e7d5355ea7d5..b78dd974c8c5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7089,9 +7089,7 @@ #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\baali\holy_weakness.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\kiasyd\kiasyd.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\crafting_recipes.dm" -#include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\creatures.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\needs_home_soil.dm" -#include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\objects.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\tzimisce.dm" #include "modular_darkpack\modules\languages\code\languages\arabic.dm" #include "modular_darkpack\modules\languages\code\languages\armenian.dm" @@ -7234,8 +7232,8 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\path_of_blood.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\fleshwalls.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\human_flesh.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\creatures.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\flesh_items.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\malleable_visage.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" From 6c70335defdf09f7f78dc8ecb783e465308dbe5d Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Wed, 26 Nov 2025 12:41:58 +0200 Subject: [PATCH 011/104] RAHHH --- .../code/discipline/vicissitude}/crafting_recipes.dm | 0 .../code/discipline/vicissitude/{ => objects}/creatures.dm | 0 .../discipline/vicissitude/{ => objects}/flesh_items.dm | 2 +- tgstation.dme | 6 +++--- 4 files changed, 4 insertions(+), 4 deletions(-) rename modular_darkpack/modules/{kindred_species/code/vampire_clan/clans/tzimisce => powers/code/discipline/vicissitude}/crafting_recipes.dm (100%) rename modular_darkpack/modules/powers/code/discipline/vicissitude/{ => objects}/creatures.dm (100%) rename modular_darkpack/modules/powers/code/discipline/vicissitude/{ => objects}/flesh_items.dm (98%) diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/crafting_recipes.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm similarity index 100% rename from modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/crafting_recipes.dm rename to modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/creatures.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm similarity index 100% rename from modular_darkpack/modules/powers/code/discipline/vicissitude/creatures.dm rename to modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm similarity index 98% rename from modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm rename to modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index 39358374dbf4..be354aac2b5e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -33,7 +33,7 @@ /obj/item/stack/human_flesh/five amount = 5 -/obj/item/autosurgeon/organ/vicissitude +/obj/item/autosurgeon/vicissitude name = "little brother" desc = "A talented fleshcrafted creature that can insert an implant or organ into its master without the hassle of extensive surgery. \ Its mouth is eagerly awaiting implants or organs. However, it's quite greedy, so a screwdriver must be used to pry away accidentally added items." diff --git a/tgstation.dme b/tgstation.dme index b78dd974c8c5..ee8e9b7d64bc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7088,7 +7088,6 @@ #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\baali\baali.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\baali\holy_weakness.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\kiasyd\kiasyd.dm" -#include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\crafting_recipes.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\needs_home_soil.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\tzimisce.dm" #include "modular_darkpack\modules\languages\code\languages\arabic.dm" @@ -7232,11 +7231,12 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\path_of_blood.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\creatures.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\flesh_items.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\malleable_visage.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\flesh_items.dm" #include "modular_darkpack\modules\radios\code\police_radio.dm" #include "modular_darkpack\modules\radios\code\radio.dm" #include "modular_darkpack\modules\radios\code\radio_globals.dm" From b6984ae99c180adfe3e70f1ec8fb8b43f3ecd81a Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:33:02 +0200 Subject: [PATCH 012/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 2e7720b79b2d..847b8235a54a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -27,8 +27,6 @@ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - /datum/discipline_power/vicissitude/fleshcrafting name = "Fleshcrafting" desc = "Mold your victim's flesh and soft tissue to your desire." From 3ea731e9ca844f9f6e6c3464612de271e2b3f5cc Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:52:09 +0200 Subject: [PATCH 013/104] Update vicissitude.dm --- .../discipline/vicissitude/vicissitude.dm | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 847b8235a54a..f5896301f202 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -27,6 +27,27 @@ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/discipline_power/vicissitude/malleable_visage + name = "Malleable Visage" + desc = "Basic Shapeshifting." + + level = 1 + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + target_type = TARGET_SELF + cooldown_length = 1 TURNS + vitae_cost = 1 + range = 1 + toggled = FALSE + +/datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) + . = ..() + if(!ishuman(target)) + return FALSE + display_radial_menu(target) + return TRUE + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /datum/discipline_power/vicissitude/fleshcrafting name = "Fleshcrafting" desc = "Mold your victim's flesh and soft tissue to your desire." From 509590536d7bdfd07d5e2cbed9d555bf588ccc6f Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 27 Nov 2025 21:22:35 +0200 Subject: [PATCH 014/104] Update vicissitude.dm --- .../powers/code/discipline/vicissitude/vicissitude.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index f5896301f202..3234d5ad0aff 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -62,7 +62,7 @@ hostile = TRUE violates_masquerade = TRUE - cooldown_length =1 TURNS + cooldown_length = 1 TURNS grouped_powers = list(/datum/discipline_power/vicissitude/bonecrafting) /datum/discipline_power/vicissitude/fleshcrafting/activate(mob/living/target) @@ -102,8 +102,8 @@ violates_masquerade = TRUE - duration_length = 20 SECONDS - cooldown_length = 20 SECONDS + duration_length = 1 TURNS + cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() From 2148527dae25e4ca142ba1158d5cfb60d74952b2 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 27 Nov 2025 23:00:33 +0200 Subject: [PATCH 015/104] awawa --- .../{malleable_visage.dm => shapeshifting.dm} | 56 ++++++------ .../discipline/vicissitude/vicissitude.dm | 83 +++++++++--------- .../powers/icons/shapeshifting_radial.dmi | Bin 606 -> 1777 bytes tgstation.dme | 2 +- 4 files changed, 73 insertions(+), 68 deletions(-) rename modular_darkpack/modules/powers/code/discipline/vicissitude/{malleable_visage.dm => shapeshifting.dm} (75%) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/malleable_visage.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm similarity index 75% rename from modular_darkpack/modules/powers/code/discipline/vicissitude/malleable_visage.dm rename to modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index 9f6099cf7fda..8b89632ba0fe 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/malleable_visage.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -8,35 +8,25 @@ #define CHANGE_APPEARANCE "Change Appearance" #define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT, CHANGE_APPEARANCE) -/datum/discipline_power/vicissitude/malleable_visage - name = "Malleable Visage" - desc = "Basic Shapeshifting." - - level = 1 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND - target_type = TARGET_HUMAN | TARGET_SELF - cooldown_length = 1 TURNS - vitae_cost = 1 - range = 1 - toggled = FALSE +/datum/action/cooldown/mob_cooldown/shapeshift + owner_has_control = FALSE var/list/choices = CHOICE_OPTIONS + var/range = 1 -/datum/discipline_power/vicissitude/malleable_visage/post_gain() +/datum/action/cooldown/mob_cooldown/shapeshift/New(Target, original) . = ..() update_choices() -/datum/discipline_power/vicissitude/malleable_visage/proc/update_choices() +/datum/action/cooldown/mob_cooldown/shapeshift/proc/update_choices() for(var/i in choices) choices[i] = icon('modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi', i) -/datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) +/datum/action/cooldown/mob_cooldown/shapeshift/Activate(atom/target) . = ..() - if(!ishuman(target)) - return FALSE display_radial_menu(target) return TRUE -/datum/discipline_power/vicissitude/malleable_visage/proc/display_radial_menu(mob/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/display_radial_menu(mob/target) var/chosen_option = show_radial_menu(owner, target, choices, target, radius = 36, tooltips = TRUE) if(!chosen_option) return TRUE @@ -63,7 +53,7 @@ return FALSE return display_radial_menu(target) -/datum/discipline_power/vicissitude/malleable_visage/proc/change_sex(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_sex(mob/living/carbon/human/target) var/chosen_sex = tgui_input_list(owner, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) if(!chosen_sex) return FALSE @@ -81,6 +71,8 @@ if("Neuter") target.gender = NEUTER SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(owner, span_notice("You finish altering the gender of [target].")) var/chosen_physique = tgui_input_list(owner, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) if(!chosen_physique) @@ -95,9 +87,10 @@ target.update_mutations_overlay() //(hulk male/female) target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - to_chat(owner, span_notice("You finish altering the gender of [target].")) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(owner, span_notice("You finish altering the physique of [target].")) -/datum/discipline_power/vicissitude/malleable_visage/proc/change_eyes(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_eyes(mob/living/carbon/human/target) var/new_eye_color = input(owner, "Choose a eye color", "Eye Color", target.eye_color_left) as color|null if(!new_eye_color) return TRUE @@ -109,9 +102,10 @@ target.dna.update_ui_block(/datum/dna_block/identity/eye_colors) target.update_body() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the eye color of [target].")) -/datum/discipline_power/vicissitude/malleable_visage/proc/change_beard(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_beard(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) if(!new_style) return FALSE @@ -121,6 +115,7 @@ return FALSE target.set_facial_hairstyle(new_style, update = TRUE) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the facial style of [target].")) var/new_face_color = input(owner, "Choose a facial hair color", "Hair Color", target.facial_hair_color) as color|null @@ -133,10 +128,11 @@ target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) target.dna.update_ui_block(/datum/dna_block/identity/facial_color) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) return TRUE -/datum/discipline_power/vicissitude/malleable_visage/proc/change_hair(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_hair(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) if(!new_style) return FALSE @@ -146,6 +142,7 @@ return FALSE target.set_hairstyle(new_style, update = TRUE) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the hair style of [target].")) var/new_hair_color = input(owner, "Choose a hair color", "Hair Color", target.hair_color) as color|null @@ -158,10 +155,11 @@ target.set_haircolor(sanitize_hexcolor(new_hair_color)) target.dna.update_ui_block(/datum/dna_block/identity/hair_color) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the hair color of [target].")) return TRUE -/datum/discipline_power/vicissitude/malleable_visage/proc/change_name(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_name(mob/living/carbon/human/target) var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", target.name, MAX_NAME_LEN)) if(!newname || newname == target.name) return FALSE @@ -176,9 +174,11 @@ if(target.mind) target.mind.name = newname SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(owner, span_notice("You finish altering the name of [target].")) return TRUE -/datum/discipline_power/vicissitude/malleable_visage/proc/change_race(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_race(mob/living/carbon/human/target) var/list/skin_tones = list() for(var/skin_tone as anything in GLOB.skin_tone_names) var/skin_tone_name = GLOB.skin_tone_names[skin_tone] @@ -197,9 +197,11 @@ target.update_body(is_creating = TRUE) target.update_mutations_overlay() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(owner, span_notice("You finish altering the race of [target].")) return TRUE -/datum/discipline_power/vicissitude/malleable_visage/proc/change_height(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/change_height(mob/living/carbon/human/target) var/list/heights = list( "Taller" = HUMAN_HEIGHT_TALLER, "Tall" = HUMAN_HEIGHT_TALL, @@ -218,9 +220,11 @@ return FALSE target.set_mob_height(new_height) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(owner, span_notice("You finish altering the height of [target].")) return TRUE -/datum/discipline_power/vicissitude/malleable_visage/proc/show_saved_profiles(mob/living/carbon/human/target) +/datum/action/cooldown/mob_cooldown/shapeshift/proc/show_saved_profiles(mob/living/carbon/human/target) var/chosen_option // = show_radial_menu(owner, target, saved_profiles, target, radius = 36, tooltips = TRUE) if(!chosen_option) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 3234d5ad0aff..b9ae16de3921 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -1,3 +1,9 @@ +// Level 1: Shapeshift Self +// Level 2: Shapeshift Other +// Level 3: Damage others and self. +// Level 4: Shapeshift into a Horrid Form +// Level 5: Slimegirl tzimisce + /datum/discipline/vicissitude name = "Vicissitude" desc = "It is widely known as Tzimisce art of flesh and bone shaping. Violates Masquerade." @@ -5,45 +11,41 @@ clan_restricted = TRUE power_type = /datum/discipline_power/vicissitude -// Level 1 /datum/discipline/vicissitude/post_gain() . = ..() owner.faction |= VAMPIRE_CLAN_TZIMISCE ADD_TRAIT(owner, TRAIT_VICISSITUDE_KNOWLEDGE, DISCIPLINE_TRAIT) -// Level 2 -/datum/discipline_power/vicissitude/fleshcrafting/post_gain() - . = ..() - var/obj/item/organ/cyberimp/arm/toolkit/surgery/surgery_implant = new() - surgery_implant.Insert(owner) - //////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude name = "Vicissitude power name" desc = "Vicissitude power description" - activate_sound = 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg' + var/datum/action/cooldown/mob_cooldown/shapeshift/shapeshift_ability + +/datum/discipline_power/vicissitude/post_gain() + if(!shapeshift_ability) + shapeshift_ability = new(owner) + shapeshift_ability.Grant(owner) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude/malleable_visage name = "Malleable Visage" - desc = "Basic Shapeshifting." + desc = "Shapeshift yourself." level = 1 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND - target_type = TARGET_SELF + target_type = NONE cooldown_length = 1 TURNS vitae_cost = 1 - range = 1 toggled = FALSE + aggravating = TRUE /datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) . = ..() - if(!ishuman(target)) - return FALSE - display_radial_menu(target) + shapeshift_ability.Activate(owner) return TRUE ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -53,39 +55,38 @@ desc = "Mold your victim's flesh and soft tissue to your desire." level = 2 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND - target_type = TARGET_MOB + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + target_type = TARGET_SELF | TARGET_HUMAN + vitae_cost = 1 range = 1 - - effect_sound = 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg' + toggled = FALSE aggravating = TRUE - hostile = TRUE - violates_masquerade = TRUE - cooldown_length = 1 TURNS - grouped_powers = list(/datum/discipline_power/vicissitude/bonecrafting) -/datum/discipline_power/vicissitude/fleshcrafting/activate(mob/living/target) +/datum/discipline_power/vicissitude/fleshcrafting/activate(atom/target) + . = ..() + shapeshift_ability.Activate(target) + return TRUE + +/datum/discipline_power/vicissitude/fleshcrafting/post_gain() . = ..() + var/obj/item/organ/cyberimp/arm/toolkit/surgery/surgery_implant = new() + surgery_implant.Insert(owner) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude/bonecrafting name = "Bonecrafting" - desc = "Mold your victim's flesh and soft tissue to your desire." + desc = "Force a body to have an upgrade, or injure it." level = 3 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND - target_type = TARGET_MOB + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + target_type = TARGET_SELF | TARGET_HUMAN + vitae_cost = 1 range = 1 - - effect_sound = 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg' + toggled = FALSE aggravating = TRUE - hostile = TRUE - violates_masquerade = TRUE - cooldown_length = 1 TURNS - grouped_powers = list(/datum/discipline_power/vicissitude/fleshcrafting) /datum/discipline_power/vicissitude/bonecrafting/activate(mob/living/target) . = ..() @@ -94,15 +95,16 @@ /datum/discipline_power/vicissitude/horrid_form name = "Horrid Form" - desc = "Shift your flesh and bone into that of a hideous monster." + desc = "Force a body to become something truly monstrous." level = 4 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND - vitae_cost = 2 - violates_masquerade = TRUE - + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + target_type = TARGET_SELF | TARGET_HUMAN duration_length = 1 TURNS + vitae_cost = 2 + toggled = FALSE + aggravating = TRUE cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/horrid_form/activate() @@ -116,13 +118,12 @@ /datum/discipline_power/vicissitude/bloodform name = "Bloodform" - desc = "Liquefy into a shifting mass of sentient Vitae." + desc = "Liquify into a shifting mass of sentient Vitae." level = 5 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND - + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + target_type = TARGET_SELF violates_masquerade = TRUE - cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/bloodform/activate() diff --git a/modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi b/modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi index 644726610f935e03248e1459c114e1a6e0c2ebb0..ca760f338c1af98af89105e64d96fc5369e28aa3 100644 GIT binary patch delta 1639 zcma)-{WsGK9LK*~mUUE!4n<6lql8qR#>OaaV#=kqNLDHA%JWw2>!C!+Lx|Xnvx&i$`Qt+fe{87h|kz*1J!4^@^L1pwA=baAxzB-3W;w#hzD zn%#361-p!l9B{$4$JsCaZP2%1#@k;9-ac565k->2?d7BX8ry3fEsi%NJ2^MF)F8B1 zEfuu23as;@mSaX7vZC*vyCQL#&*j}ukDiNs3kHW#=kuP2&vEbDDy+<-g#{Fw(b3UB zT^nIdW&6i86~EM9(%-_&+T*q_?Iv=n>&_jI-bidtF0oCJWn^O5&LW^K%1zGDbK-+f?e`fLneKBb*g zOkTG@MWNeNb6zRP6rcU1{2#cyWu24a^h_}j2Zj9XhiN+lC^HNRRK?Knn11XP6e)-&>#fFb!METTp1yx2G!O6bj(W7w>=p`h(hMv+5c2cI z+kNrE67loW$R7UeXNbITS78~);7F$O6(_zGr4WzawsbiZg$}tf$RnRQCLk~d!oWyvDP7?gY z^2QT;OK&308)~iV(Q)RD$`LMvGpIvC9xSHnUNC=j{CaU0phgfd#!^ar%FXJPv&%&B zU}Kd9`weZVHU7gXcDXBs;Yk}wA2~Wk=k1SXozIWwBsJ5580- z;d>fl-bhDUV>f<-YKVdm@~m6eDd3)GTf?Ip5fUyyJ-Ap;6JGr7!jCE3feu z`dop&(8eZV&!o14bD&0XlNn|!@?uQ&!g3Jnh56CK;6iCoq^pl6pCcrwaMrcQzpL}& z-oQ5(8Nt|Hap3-W$myt{dK?`%zw?h6)-oh)J@7)ufhx2=bQP21ZXcJr$97VXajN=B-dm$k` z?{-Q4x|rK=}4v`%3d^hsNi4;Y&1*FvHdYz2pNrR#2@ z>55QmY{0#Hm=KGu;7BLY#CED?z7Du%s-%LZt{{K^XsQJ)T5s*@Mj<4J>%7$Qdh7t~ ztBfft7S0QQC<@xP=25}AH3L$)AzVLSodN#M^NUG^jIPfUdau@%1I?)U zN-&;P&%O>Pb|iZ5o;jhk>A^4slLKWJ;Iz#oyR+L7`zCIMsW(~-Asr&!L$J?9GtCp( zBBGLdloyt|;uA{poQBl)rEF=tKGcX?T^ZbOkHq>r9}zZ(J`44;opkH?_hx(vA?cUZ Ulp6<0R$mF=;^gL7>EM^}4`PQWT>t<8 delta 459 zcmV;+0W|*c4c-Kh7&`<50000GwrUFi000$GOjJd{z`z$58~^|SV1}R*6B8U99>BoB zYw8yB00001bW%=J06^y0W&i*Hm60Whe+ZXqWd&D17jQ5G0N@&E1{bxD9{>OWR!Kxb zR9J=WmrZKJFc5{^knSUNfiOCO^sIfsIY7bq{#WUY^%Kd0#&pvx<^>C8NZuE1=6R+` zrTRyGn569uF*ufZ|{NS0url?Fn2=J86pA(%ZPDgkC7Y*CJ_5F`+qJ1~KS zKnDWmLa-bW$2)KbnXpwALLUc*xKOE7s&~`4FTBwH?!GSwu8ijwgcJs{Ej$PIuLNEd zATRW2BH;wVo+qR*kZs{Sfj1DC(}ZDPP^tc+A727hnrupY$^ZZW07*qo1w^hwV1g;{ B!NC9k diff --git a/tgstation.dme b/tgstation.dme index ee8e9b7d64bc..ddcb0c340530 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7232,8 +7232,8 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\malleable_visage.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\flesh_items.dm" From eab196bf6f32ad99c13274180864450630cb3aca Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 27 Nov 2025 23:25:02 +0200 Subject: [PATCH 016/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index b9ae16de3921..5cd59b19b415 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -77,7 +77,7 @@ /datum/discipline_power/vicissitude/bonecrafting name = "Bonecrafting" - desc = "Force a body to have an upgrade, or injure it." + desc = "Forcefully injure a body." level = 3 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND From bdb82f0b626d5501ecd8cf75bf87875de2de9516 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 00:03:52 +0200 Subject: [PATCH 017/104] surgeries :3 --- code/modules/mob/living/carbon/examine.dm | 2 +- .../discipline/vicissitude/shapeshifting.dm | 6 +- .../surgeries/appearance_change.dm | 38 +++++++++++ .../surgeries/eye_colour_change.dm | 36 +++++++++++ .../surgeries/hair_colour_change.dm | 44 +++++++++++++ .../vicissitude/surgeries/height_change.dm | 51 +++++++++++++++ .../vicissitude/surgeries/sex_change.dm | 63 +++++++++++++++++++ .../surgeries/skin_colour_change.dm | 43 +++++++++++++ tgstation.dme | 6 ++ 9 files changed, 286 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 976a07ab5a08..6392031ee937 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -260,7 +260,7 @@ // DARKPACK EDIT ADD START if(iskindred(src) && !(obscured_slots & HIDEFACE)) - switch(clan.alt_sprite) + switch(clan?.alt_sprite) if("nosferatu") . += span_warning("[p_they(TRUE)] look[p_s()] utterly deformed and inhuman!
") if("gargoyle") diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index 8b89632ba0fe..542d724bd43e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -89,6 +89,7 @@ SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the physique of [target].")) + return TRUE /datum/action/cooldown/mob_cooldown/shapeshift/proc/change_eyes(mob/living/carbon/human/target) var/new_eye_color = input(owner, "Choose a eye color", "Eye Color", target.eye_color_left) as color|null @@ -104,6 +105,7 @@ SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the eye color of [target].")) + return TRUE /datum/action/cooldown/mob_cooldown/shapeshift/proc/change_beard(mob/living/carbon/human/target) var/new_style = tgui_input_list(owner, "Select a facial hairstyle", "Grooming", SSaccessories.facial_hairstyles_list) @@ -227,10 +229,10 @@ /datum/action/cooldown/mob_cooldown/shapeshift/proc/show_saved_profiles(mob/living/carbon/human/target) var/chosen_option // = show_radial_menu(owner, target, saved_profiles, target, radius = 36, tooltips = TRUE) if(!chosen_option) - return TRUE + return FALSE if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE - + return TRUE #undef CHANGE_HAIR #undef CHANGE_BEARD diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm new file mode 100644 index 000000000000..9dbc6a9a5ed3 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm @@ -0,0 +1,38 @@ +/datum/surgery/fleshcraft/appearance_change + name = "Appearance Change" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/reshape_appearance, /datum/surgery_step/close) + possible_locs = list(BODY_ZONE_HEAD) + replaced_by = null + +/datum/surgery_step/reshape_appearance + name = "Reshape Face" + implements = list(TOOL_SCALPEL = 100, TOOL_KNIFE = 50, TOOL_WIRECUTTER = 35) + time = 64 + repeatable = TRUE + +/datum/surgery_step/reshape_appearance/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin to alter [target]'s appearance."), + span_notice("[user] begins to alter [target]'s appearance."), + span_notice("[user] begins to make an incision in [target]'s face!"), + ) + display_pain(target, "You feel your face being split apart!") + +/datum/surgery_step/reshape_appearance/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + var/newname = sanitize_name(tgui_input_text(user, "Choose a new name.", "Name change", target.name, MAX_NAME_LEN)) + if(!newname || newname == target.name) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.real_name = newname + target.name = newname + if(target.dna) + target.dna.real_name = newname + if(target.mind) + target.mind.name = newname + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the name of [target].")) + return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm new file mode 100644 index 000000000000..b4aea4a45a15 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm @@ -0,0 +1,36 @@ +/datum/surgery/fleshcraft/eye_colour_change + name = "Change Eye Colour" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_eyes, /datum/surgery_step/close) + possible_locs = list(BODY_ZONE_PRECISE_EYES) + replaced_by = null + +//reshape_face +/datum/surgery_step/modify_eyes + name = "Change Eye Colour" + accept_hand = TRUE + time = 20 + repeatable = TRUE + +/datum/surgery_step/modify_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin to reshape [target]'s eyes."), + span_notice("[user] begins to manipulate [target]'s head in truly horrific ways!"), + span_notice("[user] begins to manipulate [target]'s head in truly horrific ways!"), + ) + display_pain(target, "You feel a burning feeling in the back of your eyes!") + +/datum/surgery_step/modify_eyes/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + var/new_eye_color = input(user, "Choose a eye color", "Eye Color", target.eye_color_left) as color|null + if(!new_eye_color) + return TRUE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.set_eye_color(sanitize_hexcolor(new_eye_color)) + target.dna.update_ui_block(/datum/dna_block/identity/eye_colors) + target.update_body() + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the eye color of [target].")) + return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm new file mode 100644 index 000000000000..420276c31f8f --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm @@ -0,0 +1,44 @@ +/datum/surgery/fleshcraft/hair + name = "Change Hair Colour" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_hair, /datum/surgery_step/close) + possible_locs = list(BODY_ZONE_HEAD) + replaced_by = null + +//reshape_face +/datum/surgery_step/modify_hair + name = "Change Hair Colour" + accept_hand = TRUE + time = 20 + +/datum/surgery_step/modify_hair/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin to reshape [target]'s hair."), + span_notice("[user] begins to manipulate [target]'s head in truly horrific ways!"), + span_notice("[user] begins to manipulate [target]'s head in truly horrific ways!"), + ) + display_pain(target, "You feel your hair being pulled in excruciating pain!") + +/datum/surgery_step/modify_hair/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + var/new_style = tgui_input_list(user, "Select a hairstyle", "Grooming", SSaccessories.hairstyles_list) + if(!new_style) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.set_hairstyle(new_style, update = TRUE) + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the hair style of [target].")) + + var/new_hair_color = input(user, "Choose a hair color", "Hair Color", target.hair_color) as color|null + if(!new_hair_color) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.set_haircolor(sanitize_hexcolor(new_hair_color)) + target.dna.update_ui_block(/datum/dna_block/identity/hair_color) + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the hair color of [target].")) + return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm new file mode 100644 index 000000000000..6aaf46ec2427 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm @@ -0,0 +1,51 @@ +/datum/surgery/fleshcraft/height_change + name = "Height Change" + possible_locs = list(BODY_ZONE_CHEST) + steps = list( + /datum/surgery_step/incise, + /datum/surgery_step/retract_skin, + /datum/surgery_step/saw, + /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/incise, + /datum/surgery_step/change_spine, + /datum/surgery_step/close + ) + + replaced_by = null + +/datum/surgery_step/change_spine + name = "Manipulate Spine" + accept_hand = TRUE + time = 100 + repeatable = TRUE + +/datum/surgery_step/change_spine/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin to manipulate [target]'s spine like taffy."), + span_notice("[user] begins to manipulate [target]'s spine like taffy!"), + span_notice("[user] begins to manipulate [target]'s spine like taffy!"), + ) + display_pain(target, "You feel like your spine is carving its way through your back!") + +/datum/surgery_step/change_spine/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + var/list/heights = list( + "Taller" = HUMAN_HEIGHT_TALLER, + "Tall" = HUMAN_HEIGHT_TALL, + "Average" = HUMAN_HEIGHT_MEDIUM, + "Short" = HUMAN_HEIGHT_SHORT, + "Shorter" = HUMAN_HEIGHT_SHORTEST, + ) + + var/new_height = tgui_input_list(user, "Choose a height", "Height change", heights) + new_height = heights[new_height] + if(!new_height) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.set_mob_height(new_height) + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the height of [target].")) + return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm new file mode 100644 index 000000000000..3e073a809e9b --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm @@ -0,0 +1,63 @@ +/datum/surgery/fleshcraft/sex_change + name = "Sex Change" + steps = list(/datum/surgery_step/incise, + /datum/surgery_step/retract_skin, + /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/incise, + /datum/surgery_step/sex_change, + /datum/surgery_step/close) + + replaced_by = null + +/datum/surgery_step/sex_change + name = "Sex Change" + accept_hand = TRUE + time = 180 + repeatable = TRUE + +/datum/surgery_step/sex_change/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin to reshape [target]..."), + span_notice("[user] begins to manipulate [target]'s flesh in truly horrific ways!"), + span_notice("[user] begins to manipulate [target]'s flesh in truly horrific ways!"), + ) + display_pain(target, "You feel like your flesh is moving!") + +/datum/surgery_step/sex_change/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + display_results(user, target, span_notice("You finish changing [target]'s sex!"), + span_notice("[user] changes [target] into something... new."), + span_notice("[user] finishes.")) + var/chosen_sex = tgui_input_list(user, "Choose a gender.", "Confirmation", list("Male", "Female", "Plural", "Neuter")) + if(!chosen_sex) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + switch(chosen_sex) + if("Male") + target.gender = MALE + if("Female") + target.gender = FEMALE + if("Plural") + target.gender = PLURAL + if("Neuter") + target.gender = NEUTER + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the gender of [target].")) + + var/chosen_physique = tgui_input_list(user, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) + if(!chosen_physique) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE + target.dna.update_ui_block(/datum/dna_block/identity/gender) + target.update_body(is_creating = TRUE) // or else physique won't change properly + target.update_mutations_overlay() //(hulk male/female) + target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the physique of [target].")) + return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm new file mode 100644 index 000000000000..6445df266a63 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm @@ -0,0 +1,43 @@ +/datum/surgery/fleshcraft/skin_colour_change + name = "Change Skin Colour" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_skin, /datum/surgery_step/close) + possible_locs = list(BODY_ZONE_CHEST) + replaced_by = null + +//Modify Skin Tone +/datum/surgery_step/modify_skin + name = "Change Skin Colour" + accept_hand = TRUE + time = 64 + repeatable = TRUE + +/datum/surgery_step/modify_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin to alter [target]'s skin..."), + span_notice("[user] begins to alter [target]'s skin."), + span_notice("[user] begins to press against [target]'s skin."), + ) + display_pain(target, "Your skin stings like hell!") + +/datum/surgery_step/modify_skin/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + var/list/skin_tones = list() + for(var/skin_tone as anything in GLOB.skin_tone_names) + var/skin_tone_name = GLOB.skin_tone_names[skin_tone] + skin_tones[skin_tone_name] = skin_tone + + var/new_s_tone = tgui_input_list(user, "Choose a skin tone", "Race change", skin_tones) + new_s_tone = skin_tones[new_s_tone] + if(!new_s_tone) + return FALSE + if(!IN_GIVEN_RANGE(user, target, 1)) + return FALSE + target.skin_tone = new_s_tone + target.dna.update_ui_block(/datum/dna_block/identity/skin_tone) + target.update_body(is_creating = TRUE) + target.update_mutations_overlay() + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + to_chat(user, span_notice("You finish altering the race of [target].")) + return TRUE diff --git a/tgstation.dme b/tgstation.dme index ddcb0c340530..15617d15a58e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7237,6 +7237,12 @@ #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\flesh_items.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\appearance_change.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\eye_colour_change.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\hair_colour_change.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\height_change.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\sex_change.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\skin_colour_change.dm" #include "modular_darkpack\modules\radios\code\police_radio.dm" #include "modular_darkpack\modules\radios\code\radio.dm" #include "modular_darkpack\modules\radios\code\radio_globals.dm" From 28884334c342a72eb56075bd3ac088d158a0163d Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 00:09:53 +0200 Subject: [PATCH 018/104] bugfix for surgeries --- .../code/discipline/vicissitude/surgeries/appearance_change.dm | 1 + .../code/discipline/vicissitude/surgeries/eye_colour_change.dm | 1 + .../code/discipline/vicissitude/surgeries/hair_colour_change.dm | 1 + .../code/discipline/vicissitude/surgeries/height_change.dm | 1 + .../powers/code/discipline/vicissitude/surgeries/sex_change.dm | 1 + .../code/discipline/vicissitude/surgeries/skin_colour_change.dm | 1 + .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 1 + 7 files changed, 7 insertions(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm index 9dbc6a9a5ed3..63ddb917a1b9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm @@ -3,6 +3,7 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/reshape_appearance, /datum/surgery_step/close) possible_locs = list(BODY_ZONE_HEAD) replaced_by = null + requires_tech = TRUE /datum/surgery_step/reshape_appearance name = "Reshape Face" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm index b4aea4a45a15..c84a282bd8ca 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm @@ -3,6 +3,7 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_eyes, /datum/surgery_step/close) possible_locs = list(BODY_ZONE_PRECISE_EYES) replaced_by = null + requires_tech = TRUE //reshape_face /datum/surgery_step/modify_eyes diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm index 420276c31f8f..11760ed39d1d 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm @@ -3,6 +3,7 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_hair, /datum/surgery_step/close) possible_locs = list(BODY_ZONE_HEAD) replaced_by = null + requires_tech = TRUE //reshape_face /datum/surgery_step/modify_hair diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm index 6aaf46ec2427..b23980727884 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm @@ -12,6 +12,7 @@ ) replaced_by = null + requires_tech = TRUE /datum/surgery_step/change_spine name = "Manipulate Spine" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm index 3e073a809e9b..ca3896d566f0 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm @@ -8,6 +8,7 @@ /datum/surgery_step/close) replaced_by = null + requires_tech = TRUE /datum/surgery_step/sex_change name = "Sex Change" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm index 6445df266a63..2e1fe3b70e42 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm @@ -3,6 +3,7 @@ steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_skin, /datum/surgery_step/close) possible_locs = list(BODY_ZONE_CHEST) replaced_by = null + requires_tech = TRUE //Modify Skin Tone /datum/surgery_step/modify_skin diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 5cd59b19b415..a6c374d56c00 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -72,6 +72,7 @@ . = ..() var/obj/item/organ/cyberimp/arm/toolkit/surgery/surgery_implant = new() surgery_implant.Insert(owner) + ADD_TRAIT(owner, TRAIT_SURGEON, DISCIPLINE_TRAIT) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 6612dfeba6da2adef6ce979a78899bab0f920117 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 16:17:03 +0200 Subject: [PATCH 019/104] moar bugfixes --- .../vicissitude/objects/surgery_tools.dm | 103 ++++++++++++++++++ .../discipline/vicissitude/vicissitude.dm | 4 +- .../icons/fleshcrafting_surgery_tools.dmi | Bin 0 -> 4509 bytes .../modules/powers/icons/lefthand.dmi | Bin 0 -> 1292 bytes .../modules/powers/icons/righthand.dmi | Bin 0 -> 1260 bytes tgstation.dme | 1 + 6 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm create mode 100644 modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi create mode 100644 modular_darkpack/modules/powers/icons/lefthand.dmi create mode 100644 modular_darkpack/modules/powers/icons/righthand.dmi diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm new file mode 100644 index 000000000000..70005088512c --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm @@ -0,0 +1,103 @@ +/obj/item/organ/cyberimp/arm/toolkit/surgery/vicissitude + icon_state = "toolkit_implant_vic" + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + organ_flags = ORGAN_ORGANIC + contents = newlist(/obj/item/retractor/augment/vicissitude, /obj/item/hemostat/augment/vicissitude, /obj/item/cautery/augment/vicissitude, /obj/item/surgicaldrill/augment/vicissitude, /obj/item/scalpel/augment/vicissitude, /obj/item/circular_saw/augment/vicissitude, /obj/item/surgical_drapes/vicissitude, /obj/item/bonesetter/augment/vicissitude, /obj/item/blood_filter/augment/vicissitude, /obj/item/healthanalyzer/vicissitude, /obj/item/shockpaddles/cyborg/vicissitude) + +/obj/item/retractor/augment/vicissitude + name = "retracting appendage" + desc = "A pair of prehensile pincers." + icon_state = "retractor_vic" + inhand_icon_state = "clamps_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/hemostat/augment/vicissitude + name = "hemostatic pincers" + desc = "A pair of thin appendages that were once fingers, secreting a hemostatic fluid from the tips." + icon_state = "hemostat_vic" + inhand_icon_state = "clamps_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/cautery/augment/vicissitude + name = "chemical cautery" + desc = "A specialized organ drooling a chemical package that releases an extreme amount of heat, very quickly." + icon_state = "cautery_vic" + inhand_icon_state = "cautery_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/surgicaldrill/augment/vicissitude + name = "surgical fang" + desc = "A spiral fang that bores into the flesh with reckless glee." + icon_state = "drill_vic" + hitsound = 'sound/effects/wounds/blood2.ogg' + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/scalpel/augment/vicissitude + name = "scalpel claw" + desc = "An altered nail, adjusted to make fine incisions." + icon_state = "scalpel_vic" + inhand_icon_state = "scalpel_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/circular_saw/augment/vicissitude + name = "circular jaw" + desc = "A spinning disc of teeth, screaming, as it bites through the flesh." + icon_state = "saw_vic" + inhand_icon_state = "saw_vic" + hitsound = 'sound/effects/wounds/blood2.ogg' + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/surgical_drapes/vicissitude + name = "skin drape" + desc = "A stretch of skin, sweating out antibiotics and disinfectants, to provide a sterile-ish environment to work in." + icon_state = "surgical_drapes_vic" + inhand_icon_state = "drapes_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/bonesetter/augment/vicissitude + name = "bonesetting appendage" + desc = "A pair of organic clamps for setting bones." + icon_state = "bone setter_vic" + inhand_icon_state = "clamps_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/blood_filter/augment/vicissitude + name = "filtering organ" + desc = "A specialised set of organs capable of filtering blood non-harmfully." + icon_state = "bone-gel_vic" + inhand_icon_state = "clamps_vic" + lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' + righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + +/obj/item/healthanalyzer/vicissitude + name = "synaptic tendrils" + desc = "A set of sensory tendrils that swiftly assess the health conditions of a patient" + icon = 'icons/obj/medical/organs/organs.dmi' + icon_state = "hivenode" + advanced = TRUE + +/obj/item/shockpaddles/cyborg/vicissitude + name = "electrocyte stack" + desc = "A stack of electrocyte cells - they take too long to recharge for combat uses, but are able to produce powerful shocks." + icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' + icon_state = "shockpaddles0" + inhand_icon_state = "syndiepaddles0" + base_icon_state = "shockpaddles" + req_defib = FALSE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index a6c374d56c00..aa276864cf0c 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -52,7 +52,7 @@ /datum/discipline_power/vicissitude/fleshcrafting name = "Fleshcrafting" - desc = "Mold your victim's flesh and soft tissue to your desire." + desc = "Shapeshift others." level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND @@ -70,7 +70,7 @@ /datum/discipline_power/vicissitude/fleshcrafting/post_gain() . = ..() - var/obj/item/organ/cyberimp/arm/toolkit/surgery/surgery_implant = new() + var/obj/item/organ/cyberimp/arm/toolkit/surgery/vicissitude/surgery_implant = new() surgery_implant.Insert(owner) ADD_TRAIT(owner, TRAIT_SURGEON, DISCIPLINE_TRAIT) diff --git a/modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi b/modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3ae6883acad98424c603c81134dff47e7b2ea504 GIT binary patch literal 4509 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 literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/powers/icons/lefthand.dmi b/modular_darkpack/modules/powers/icons/lefthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..32bbdcfa2b04e38a3ebbadad4222944eee595737 GIT binary patch literal 1292 zcmeAS@N?(olHy`uVBq!ia0vp^3xK$RgAGXbBqvD&slKX^h!U67;^d;tf|AVqJO+k} zIl*BCMWx@r1Q&e#`b5iHSL@uF^T8WJ4K5l#c%*aQNAn~@QBUs<3*#W;%f?;`a~@4P zGATqMc%_A<;c^92^?f?Vk)7Sfs+(6xEScJEyjH`|T=a;UOVI2HzbU((9Jw^<$|A2v zSDvXn6B7|$YO+*gqk`!Apj6gyd+`DT28QJtevg!;xL+|auvmJ!IEGZrd3$Gnwuqxd z`$t>f)Ws7HAM;>Zc|&JWZOxKa`K`SDd;il&jjY^VSj*glG6F!)mzvlhj{gu`0Ph@i%Y`A)ypDXuIV(P=%TYu*0-rF@x zw9_D~A=Tea*8ka~xx0I{uFt(CcencAmW?0tj5l+vKYLb2BJm2t={Y>Vt$zQykiF{A z&*H~ZTPD7e+sSd(vHXymsQl?KcUOd%o2i!GQ06}WuIcQvjBUT(l$xLUA0K?O+F`zR z)82D&{WU<@=*Kr&JKx+s_r0as{6tt<8Siq5uZ*eP=6sWO>xXmC<$e2f^|s0*??m0o zt}_RMH+5V)w{3D%@cMeDlG&NYch6k=D1SFz^znh9C~rCQ&jp{JcfOnNKi6*No7PFI zYWowcAC_&(T{k;$-iImIF7-$EuRVY5rJk6`_3wgj+%i}CS9oPh9=Xf8{eI2Ech58L z%UY9S0*}p;WIKf=KjsVIO&8ch203wMD?F>%a^X(ciHE8epWoIIN^y$zF1}qGoy0v6O`+b@w;E`7VDyf2!QnYt@CmXQ#);#&i{y zek++VD_-i?dl{<(A?l8iC4L=~C!XTip|mRQ_5G7;>-BylI_cQX)4eJX$iMVHvyl9$ h2lEpZF!JgZeFKB5XFJ3aB!I;mgQu&X%Q~loCIA!|D98W+ literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/powers/icons/righthand.dmi b/modular_darkpack/modules/powers/icons/righthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..12b78c3f8e49fe2ef6a365901fd92fe877d63e86 GIT binary patch literal 1260 zcmeAS@N?(olHy`uVBq!ia0vp^3xK$RgAGXbBqvD&slKX^h!U67;^d;tf|AVqJO+k} zIl*BCMWx@r1Q&e#`b5iHSL@uF^T8WJ4K5l#c%*aQNAn~@QBUs<3*#W;%f?;`a~@4P zGATqMc%_A<;c^92^?f?Vk)7Sfs+(6xEScJEyjH`|T=a;UOVI2HzbU((9Jw^<$|A2v zSDvXn6B7|$YO+*gqk`!Apj6gyd+`DT28QJtevg!;xL+|aut<8kIEGZrd3(n`TO?4V z{b8i$g8wxo^JsvUJw*kCjYeCocW9etY6; zP>uXGyRv`pHXgHQ?%DTXQRV#lCx16?eU^Wxq>}6Hv8LS?)>k|8zkZD>d;Rh74fTXC ztkoMnfA2Z+`$y+m!^)g9)iZNno=mrSY`mMzg5#rVv%tc&g|FT`o$%M=&eHQ+W+5k($dtj zO{8Xi*H&aqV(-2%uSV_BZG$?VW?7wmC*J?BWOC|KC&}{|K^1zF!8|PdR-E!-f#bRk z=N;bcFx!8m?S+f0$D6&;aS<^lE;hRZQKJLeysd!Ap;D&U7&)w+p?wpmslbDK8P zQSwftSYE!V^vPp6&KxTb>Af? zl*1b)&Q7|#C}i=eH&*=pS2ru=?bvR7J>B`-=i?V2p1abqC;KVahWU;ym74BTZ|XeCCYdiFo^e{Gnpb4bnsr<5+g1vc&0l3?_AbAQFThs(s9D(7GW)2tXV=8Z2hMj( z<@x%H|FX%F6C7_>SARNk Date: Fri, 28 Nov 2025 16:41:20 +0200 Subject: [PATCH 020/104] awa --- .../organs/internal/cyberimp/augments_arms.dm | 5 +++++ .../vicissitude/objects/surgery_tools.dm | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index 5d176683edae..f79a8cbc8c7b 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -214,6 +214,11 @@ to_chat(owner, span_warning("The implant doesn't respond. It seems to be broken...")) return + // DARKPACK EDIT START + var/datum/component/two_handed/two_handed = GetComponent(/datum/component/two_handed) + if(two_handed) + return + // DARKPACK EDIT END if(!active_item || (active_item in src)) active_item = null if(contents.len == 1) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm index 70005088512c..63cf6ac3176a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm @@ -2,7 +2,18 @@ icon_state = "toolkit_implant_vic" icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' organ_flags = ORGAN_ORGANIC - contents = newlist(/obj/item/retractor/augment/vicissitude, /obj/item/hemostat/augment/vicissitude, /obj/item/cautery/augment/vicissitude, /obj/item/surgicaldrill/augment/vicissitude, /obj/item/scalpel/augment/vicissitude, /obj/item/circular_saw/augment/vicissitude, /obj/item/surgical_drapes/vicissitude, /obj/item/bonesetter/augment/vicissitude, /obj/item/blood_filter/augment/vicissitude, /obj/item/healthanalyzer/vicissitude, /obj/item/shockpaddles/cyborg/vicissitude) + items_to_create = list( + /obj/item/retractor/augment/vicissitude, + /obj/item/hemostat/augment/vicissitude, + /obj/item/cautery/augment/vicissitude, + /obj/item/surgicaldrill/augment/vicissitude, + /obj/item/scalpel/augment/vicissitude, + /obj/item/circular_saw/augment/vicissitude, + /obj/item/surgical_drapes/vicissitude, + /obj/item/bonesetter/augment/vicissitude, + /obj/item/blood_filter/augment/vicissitude, + /obj/item/healthanalyzer/vicissitude, + /obj/item/shockpaddles/cyborg/vicissitude) /obj/item/retractor/augment/vicissitude name = "retracting appendage" @@ -101,3 +112,7 @@ inhand_icon_state = "syndiepaddles0" base_icon_state = "shockpaddles" req_defib = FALSE + +/obj/item/shockpaddles/cyborg/vicissitude/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NEEDS_TWO_HANDS, "implant_requirement") From 244877a156e54925d0dfd89f1c23f4d451182eb9 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 17:11:53 +0200 Subject: [PATCH 021/104] visc 3 + sound changes --- .../discipline/vicissitude/shapeshifting.dm | 20 ++++---- .../surgeries/appearance_change.dm | 2 +- .../surgeries/eye_colour_change.dm | 2 +- .../surgeries/hair_colour_change.dm | 4 +- .../vicissitude/surgeries/height_change.dm | 2 +- .../vicissitude/surgeries/sex_change.dm | 4 +- .../surgeries/skin_colour_change.dm | 2 +- .../discipline/vicissitude/vicissitude.dm | 45 ++++++++++++++++-- .../sounds/vicissitude.ogg | Bin .../rituals/gargoyle_transformation.dm | 7 ++- 10 files changed, 61 insertions(+), 27 deletions(-) rename modular_darkpack/modules/{deprecated => powers}/sounds/vicissitude.ogg (100%) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index 542d724bd43e..5fbe5d89067e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -71,7 +71,7 @@ if("Neuter") target.gender = NEUTER SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the gender of [target].")) var/chosen_physique = tgui_input_list(owner, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) @@ -87,7 +87,7 @@ target.update_mutations_overlay() //(hulk male/female) target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the physique of [target].")) return TRUE @@ -103,7 +103,7 @@ target.dna.update_ui_block(/datum/dna_block/identity/eye_colors) target.update_body() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the eye color of [target].")) return TRUE @@ -117,7 +117,7 @@ return FALSE target.set_facial_hairstyle(new_style, update = TRUE) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the facial style of [target].")) var/new_face_color = input(owner, "Choose a facial hair color", "Hair Color", target.facial_hair_color) as color|null @@ -130,7 +130,7 @@ target.set_facial_haircolor(sanitize_hexcolor(new_face_color)) target.dna.update_ui_block(/datum/dna_block/identity/facial_color) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the facial hair color of [target].")) return TRUE @@ -144,7 +144,7 @@ return FALSE target.set_hairstyle(new_style, update = TRUE) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the hair style of [target].")) var/new_hair_color = input(owner, "Choose a hair color", "Hair Color", target.hair_color) as color|null @@ -157,7 +157,7 @@ target.set_haircolor(sanitize_hexcolor(new_hair_color)) target.dna.update_ui_block(/datum/dna_block/identity/hair_color) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the hair color of [target].")) return TRUE @@ -176,7 +176,7 @@ if(target.mind) target.mind.name = newname SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the name of [target].")) return TRUE @@ -199,7 +199,7 @@ target.update_body(is_creating = TRUE) target.update_mutations_overlay() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the race of [target].")) return TRUE @@ -222,7 +222,7 @@ return FALSE target.set_mob_height(new_height) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the height of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm index 63ddb917a1b9..e355c2dac30f 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm @@ -34,6 +34,6 @@ if(target.mind) target.mind.name = newname SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the name of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm index c84a282bd8ca..89154465553a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm @@ -32,6 +32,6 @@ target.dna.update_ui_block(/datum/dna_block/identity/eye_colors) target.update_body() SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the eye color of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm index 11760ed39d1d..6d300b31509b 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm @@ -29,7 +29,7 @@ return FALSE target.set_hairstyle(new_style, update = TRUE) SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the hair style of [target].")) var/new_hair_color = input(user, "Choose a hair color", "Hair Color", target.hair_color) as color|null @@ -40,6 +40,6 @@ target.set_haircolor(sanitize_hexcolor(new_hair_color)) target.dna.update_ui_block(/datum/dna_block/identity/hair_color) SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the hair color of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm index b23980727884..fbb90070edfd 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm @@ -47,6 +47,6 @@ return FALSE target.set_mob_height(new_height) SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the height of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm index ca3896d566f0..2b2dfca561bd 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm @@ -45,7 +45,7 @@ if("Neuter") target.gender = NEUTER SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the gender of [target].")) var/chosen_physique = tgui_input_list(user, "Alter physique as well?", "Confirmation", list("Masculine", "Feminine")) @@ -59,6 +59,6 @@ target.update_mutations_overlay() //(hulk male/female) target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the physique of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm index 2e1fe3b70e42..70496fad1b07 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm @@ -39,6 +39,6 @@ target.update_body(is_creating = TRUE) target.update_mutations_overlay() SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, TRUE) + playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the race of [target].")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index aa276864cf0c..07f2acfd00d9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -21,6 +21,7 @@ /datum/discipline_power/vicissitude name = "Vicissitude power name" desc = "Vicissitude power description" + effect_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' var/datum/action/cooldown/mob_cooldown/shapeshift/shapeshift_ability @@ -55,7 +56,7 @@ desc = "Shapeshift others." level = 2 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE target_type = TARGET_SELF | TARGET_HUMAN vitae_cost = 1 range = 1 @@ -63,9 +64,12 @@ aggravating = TRUE cooldown_length = 1 TURNS -/datum/discipline_power/vicissitude/fleshcrafting/activate(atom/target) +/datum/discipline_power/vicissitude/fleshcrafting/activate(atom/movable/target) . = ..() - shapeshift_ability.Activate(target) + if(target.pulledby == owner && (owner.grab_state == GRAB_AGGRESSIVE)) + shapeshift_ability.Activate(target) + else + to_chat(owner, span_danger("You need to have a firm grip on [target]!")) return TRUE /datum/discipline_power/vicissitude/fleshcrafting/post_gain() @@ -81,17 +85,48 @@ desc = "Forcefully injure a body." level = 3 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND - target_type = TARGET_SELF | TARGET_HUMAN + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE + target_type = TARGET_MOB vitae_cost = 1 range = 1 toggled = FALSE aggravating = TRUE + hostile = TRUE + violates_masquerade = TRUE + cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/bonecrafting/activate(mob/living/target) . = ..() + var/roll = SSroll.storyteller_roll((owner.st_get_stat(STAT_STRENGTH) + owner.st_get_stat(STAT_MEDICINE)), 7, owner, target, TRUE) + + if(target.stat >= HARD_CRIT) + if(target.stat != DEAD) + target.death() + var/obj/item/bodypart/arm/right/r_arm = target.get_bodypart(BODY_ZONE_R_ARM) + var/obj/item/bodypart/arm/left/l_arm = target.get_bodypart(BODY_ZONE_L_ARM) + var/obj/item/bodypart/leg/right/r_leg = target.get_bodypart(BODY_ZONE_R_LEG) + var/obj/item/bodypart/leg/left/l_leg = target.get_bodypart(BODY_ZONE_L_LEG) + if(r_arm) + r_arm.drop_limb() + if(l_arm) + l_arm.drop_limb() + if(r_leg) + r_leg.drop_limb() + if(l_leg) + l_leg.drop_limb() + new /obj/item/stack/human_flesh/twenty(target.loc) + new /obj/item/guts(target.loc) + new /obj/item/spine(target.loc) + qdel(target) + else + target.emote("scream") + target.apply_damage(roll * 30, BRUTE, BODY_ZONE_CHEST) + if(roll >= 5) + target.visible_message(span_danger("[target]'s rib cage curves inwards grotesquely!"), span_danger("Your feel your ribcages curve inwards and pierce your heart!")) + target.adjustBloodPool(-(target.bloodpool * 0.5)) // A vampire who scores five or more successes on the roll (...) cause the affected vampire to lose half his blood points. + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude/horrid_form diff --git a/modular_darkpack/modules/deprecated/sounds/vicissitude.ogg b/modular_darkpack/modules/powers/sounds/vicissitude.ogg similarity index 100% rename from modular_darkpack/modules/deprecated/sounds/vicissitude.ogg rename to modular_darkpack/modules/powers/sounds/vicissitude.ogg diff --git a/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm b/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm index fda3e3eedf8e..419af8cab882 100644 --- a/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm +++ b/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm @@ -37,8 +37,7 @@ usr.visible_message(span_notice("[usr] begins invoking a ritual with [body_count] vampire bod[body_count == 1 ? "y" : "ies"]...")) playsound(loc, 'modular_darkpack/modules/powers/sounds/thaum.ogg', 50, FALSE) - // DARKPACK TODO - vicissitude, when its reintroduced re-path this - playsound(loc, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, FALSE) + playsound(loc, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, FALSE) // Apply stun so that they cant just crawl away in crit - caster must also stay still for(var/mob/living/carbon/human/H in valid_bodies) @@ -106,7 +105,7 @@ addtimer(CALLBACK(src, PROC_REF(perfect_gargoyle_check_ai), G, last_activator), 31 SECONDS) playsound(loc, 'modular_darkpack/modules/powers/sounds/thaum.ogg', 50, FALSE) - playsound(loc, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, FALSE) + playsound(loc, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, FALSE) else // Create normal sentient gargoyle (1 body) var/mob/living/carbon/human/target_body = bodies[1] @@ -139,7 +138,7 @@ target_body.forceMove(original_location) playsound(loc, 'modular_darkpack/modules/powers/sounds/thaum.ogg', 50, FALSE) - playsound(target_body.loc, 'modular_darkpack/modules/deprecated/sounds/vicissitude.ogg', 50, FALSE) + playsound(target_body.loc, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, FALSE) // Handle key assignment if(!target_body.key) From 940289753c919ddddcdc674884ca16a1cc66e74c Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 17:50:34 +0200 Subject: [PATCH 022/104] Update vicissitude.dm --- .../powers/code/discipline/vicissitude/vicissitude.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 07f2acfd00d9..ec84db2d50ad 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -135,7 +135,7 @@ level = 4 violates_masquerade = TRUE - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND + check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE target_type = TARGET_SELF | TARGET_HUMAN duration_length = 1 TURNS vitae_cost = 2 @@ -145,10 +145,13 @@ /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() + owner.Stun(2 SECONDS) + owner.do_jitter_animation(50) /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() - + owner.Stun(2 SECONDS) + owner.do_jitter_animation(50) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 079ff5c8336e8661efeea8becdcfbde69fa9be6a Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 22:14:27 +0200 Subject: [PATCH 023/104] Update discipline.dm --- code/__DEFINES/~darkpack/discipline.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/__DEFINES/~darkpack/discipline.dm b/code/__DEFINES/~darkpack/discipline.dm index 0a529e498d55..10f85f1b3b4b 100644 --- a/code/__DEFINES/~darkpack/discipline.dm +++ b/code/__DEFINES/~darkpack/discipline.dm @@ -18,6 +18,9 @@ ///Targets mobs only if they are vampires/Kindred #define TARGET_VAMPIRE (1<<8) +//Aggregated targeting for /mob/living +#define MOB_LIVING_TARGETING (TARGET_MOB | TARGET_LIVING | TARGET_HUMAN | TARGET_PLAYER | TARGET_VAMPIRE) + //bitflags to check for certain conditions determining ability to actually cast a discipline //flags overlap, like DISC_CHECK_CAPABLE covers DISC_CHECK_CONSCIOUS and DISC_CHECK_TORPOR ///Caster must not be in Torpor @@ -38,3 +41,9 @@ #define DISC_CHECK_SEE (1<<7) ///Caster must see the target directly (without the usage of auspex for example) #define DISC_CHECK_DIRECT_SEE (1<<8) + +//power type defines, will be useful when it's made generic +///Power is a Discipline of the Vampire: The Masquerade game line +#define POWER_TYPE_DISCIPLINE "discipline" +///Power is a Chi Art of the Kindred of the East game line +#define POWER_TYPE_CHI_ART "chi_art" From 8305bc4092a7654d13326e3c4cb4fc5e29849de6 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 28 Nov 2025 22:17:45 +0200 Subject: [PATCH 024/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index ec84db2d50ad..e997caf3e3fb 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -125,7 +125,7 @@ target.apply_damage(roll * 30, BRUTE, BODY_ZONE_CHEST) if(roll >= 5) target.visible_message(span_danger("[target]'s rib cage curves inwards grotesquely!"), span_danger("Your feel your ribcages curve inwards and pierce your heart!")) - target.adjustBloodPool(-(target.bloodpool * 0.5)) // A vampire who scores five or more successes on the roll (...) cause the affected vampire to lose half his blood points. + target.adjust_blood_pool(-(target.bloodpool * 0.5)) // A vampire who scores five or more successes on the roll (...) cause the affected vampire to lose half his blood points. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From f5930621f5a46f138902d447fa3d955d5b9bb218 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 00:00:23 +0200 Subject: [PATCH 025/104] Update flesh_items.dmi --- .../modules/powers/icons/flesh_items.dmi | Bin 7200 -> 6611 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_darkpack/modules/powers/icons/flesh_items.dmi b/modular_darkpack/modules/powers/icons/flesh_items.dmi index 7618d09d5454ca3508a69829612b48540f3cf624..460bb61485c5c5476f9b17c6665ad3b7bce796bc 100644 GIT binary patch literal 6611 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 Rq5S{=002ovPDHLkV1nD`zO(=U literal 7200 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 From ed28ad9b9d0be2ac630d4df5981550f4e7db62b3 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 00:00:46 +0200 Subject: [PATCH 026/104] Update shapeshifting.dm --- .../modules/powers/code/discipline/vicissitude/shapeshifting.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index 5fbe5d89067e..e141ef6b1d0f 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -242,3 +242,4 @@ #undef CHANGE_RACE #undef CHANGE_HEIGHT #undef CHOICE_OPTIONS +#undef CHANGE_APPEARANCE From 0bb79d46cad94beced568408b763f47e16fb325f Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 00:23:00 +0200 Subject: [PATCH 027/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index e997caf3e3fb..0cf4588ee6b5 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -57,7 +57,7 @@ level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE - target_type = TARGET_SELF | TARGET_HUMAN + target_type = TARGET_SELF | TARGET_HUMAN | TARGET_VAMPIRE vitae_cost = 1 range = 1 toggled = FALSE From 976891f860a4323a1a4ed0f3021b5ec2ffb46321 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 00:45:36 +0200 Subject: [PATCH 028/104] awawa --- .../vicissitude/objects/surgery_tools.dm | 1 + .../modules/powers/icons/lefthand.dmi | Bin 1292 -> 1672 bytes .../modules/powers/icons/righthand.dmi | Bin 1260 -> 1648 bytes 3 files changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm index 63cf6ac3176a..aeb4cdfa7ab2 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm @@ -46,6 +46,7 @@ name = "surgical fang" desc = "A spiral fang that bores into the flesh with reckless glee." icon_state = "drill_vic" + inhand_icon_state = "drill_vic" hitsound = 'sound/effects/wounds/blood2.ogg' lefthand_file = 'modular_darkpack/modules/powers/icons/righthand.dmi' righthand_file = 'modular_darkpack/modules/powers/icons/lefthand.dmi' diff --git a/modular_darkpack/modules/powers/icons/lefthand.dmi b/modular_darkpack/modules/powers/icons/lefthand.dmi index 32bbdcfa2b04e38a3ebbadad4222944eee595737..09021561944e7653a16dac8de3f7b35aef0db87c 100644 GIT binary patch delta 1299 zcmV+u1?>8a3WyDm7Y?8Z1^@s6i_d2*0001zktKqEl~|>jIe7h~tl;YB0uC?$+r(Qt zvAaLL000HCNklt2K`-7y+Gop4x6RJ(%+CAH@0s}hTr{vd zzIopf@6INXJgr`@mjNmtsTY6`8R~kTFjs&0u~p}~z3tJBdv{u!&$cp)aCvEAVuVQp zta2FkJbQlZHPzvZ)2C_)!|NV}2+gEBVXKZ`%PhN5UN_d0ChU=gXLrGN`$V>J_wgXi z|39XduU7%f+!5??_ITuL!XDWg=gxJqx4ZAgz8%ljv6!>xzi*vAU+l5oU)3HoVUNO> zU!BE;tlRBo^Sh%T$9KU<#v-)%jD1Zgdke;g%|f)d<56n)CIraC9g{%@f%p4w zvWJhJx`@xiTJjW`fv02<-T$oTYE8rb6KG)AOq=OuwrAcC{#1+u^R$*cVdmld-jTt_ z$4?$}`$F;Rz+12#xE;35bu-EX_q3K#!g_3dw$AWkL2)DBg2N~+^?`d@%Q)dqxbx&S zcfXPj+yU*ty&SfuwM;T@1|IS;9}rUfPY9Di0UDD|1PhZ-0SuE)1Pgy5MSu;Eay(jW z;g|G_iXLE-HY*n!vFt+iZo@z&5lU?_#YfCXN znT)Nq%ruK6Z^3nq14}(Tv5c_sHl!%_n(VsWZa3y7lPNn&rLkWF)-gP>sIss6X*6X< zPFc)`iKvbc51Yo`0X+jEzVefC10<7A0SuE)1PhZ-0SkZdknuFEsfbzi0-E5(@4xN0 z+b6QQufJpR!H^ikp(@`2Z61oJSKZF$gXn9q`1<`fu`i3P;vFyy<0(58GbIb9|Mwls z{{F}F?aHIlhF@G~E>&G!T8eRX_U>@z(zU7o&8Y+QItj|63t}9Gml1G9)VHxsiC zqrqla`fZb?3=|evtQPJUc2z^@_LnPeg4Vb+R@JGsjm@>t)w1Q zR*QZIym9YNYxCJw_Hyf0w!E~EP5Uaf=h^e^I_g(?SWEBrEf;s4SbOY2lDFWnL1y*J z#nKyOkGJO;yN-WdFa9cRcMcnIyK(n%p~DLYZj(+QK6>gRJ`Zcj zGtC}*k}SY5ws(H-$l&ASCyz}$#ITufci#;@-ky0s_){^1(9>G-OtZ({B>OQ;IH=Cz z!r<`2K~7?iv&Y->hOeXGX)U8nyT_g+eG4|>Rl4)!b>U05;JI_1!Qa&f?rAOKl-*-b zYWYF59bP!dN$hc64%^dOCMmPWo+Q5m0^{&sagZWFND&~U{sKvRy@9EsG%NrB002ov JPDHLkV1knVk)Qwo delta 948 zcmV;l155mf4U7tq7Y=|31^@s6jALRO0001vktKqE6|Yid1y?^8a4-M>rzlS1BN_|p z000CzNklDsaO=Y8y!^TJgsl+B_q6Dq141y_B_#?!>A(f(43VT6` z+N3lf+8$gQMQm(LWkfJlxPUfx5`9kwPjh?Oxt-bXZ1Q{>6)x*!_SxNwa&M#EZfAhX zG4%ohaI}+=0~3=l1rL)=0TF+}ZEvja-M@KzugGf&FtF9f4+?GkVP)Zc+Wed?-nyC< zi7;w_Wlu&OPv+vCyNxQ>o!TDVd;YYs@oqD-2(Qh}92jBL0Lz>V`#Ssj&}*u~`E%oy zgpukVxd_cccfv*$AItRJs8lyLC3V;%3(xL?&E{yf`s{T#%>Q3g$$M5npF4uR&R&mv zb=V_YFldP`kQK z-b|0Gq_mb^J~QwXESj1Fkoz8Cd^3~fU;!9yId5X-yQ?iKG&bE_U zQ?GvlbZDDtGu_PA@gLn^7308CT1y@`^KkO#iSD0Ioj#fDg_5d$k6=6DcCu}*n^B(d zl-AOZTaT^J*6A)56xa6=>_%y+Pk2ge8N}TQx8Ho>?&oRW9nemADknRowH##73_Rpx zJ|Lv{pAeH#0xgqJ0up~~Am(_q(AfqU1#z^j}XJ5O5Xu(9!g4A-S)Wcoz8CP!y+qr2Xw=D ze5Yc@WTA9^-?8lXAK!149+lR6aZSyaU0qy?adq}|n3`W2`tKY%z*HweS#(Z_laa~@ zxFV`v>)*+(e=hi8LM%O=E!8v-Q4gix0}>y~;Gbb2MSzeZKu8fFqzDjF1PCbtgw!uE WFxAb77GM|v0000jIe7h~tl;YB0uC?$+r(Qt zvAaLL000G4LukMG?XF{^dh~;*6+Y08?z?6o%ueWc_!}{ zs9BU0d1mH$XEss%j&(Yn3{ZJXeFE6qlVAfce-Kg=>JvbZAN)k2Q7-F!lwP&HMag-XB|Q@vE<0o}j?7hq@;mKz_<1+&TtV4W39U`G?tZEilv zRc_w8>l&Zg7GUhpwixVsJR|Wwek}cOyH6iK%bG{0+^=hl|Co-z0-XKy!)$H*c{VpU zm$lpN%=?{?0I`KdXiq*9$Y}oU52`~g=yq;1q)-W+=<-N`}(Ka*IdS$ZnKJ(X!UH8Ow zG)H)HG#Ur9l`FShHqU=^jo7pD`q}1Pd$*Hhe4}s+FwB*keleN9K5%G%>6_@eMhM&H z}xY5Yz(!LW%$(MSzeZKuD8a12TWGhEkfSl~jPr z8=K0e#+s;Q>x79EMHC7!=BC)RDAlMkyUuqGH?lHrxVK|p&PO@Vf8U$Tr$!WAt5ATW z3?eK_IjYRA(}on4al^f}+wG|1M2g;%!f(OD4kE0Jsz(?rzW)1AWKCwnjKFRBjChG|GKBec)%BcDvadfkk*Z~=cjSbO>N%OAhq zcb{h%^GR#MIKDEktMb#a`rl$y11hT~glDm*eorbNAnJ|pf+0nKkRm`x5g?N}1Qe4W z1TKF_?K&N6xpl6$c=lA*oIRcN5S+5vxVV)ox3ddZFLPfC*zpM%;(NIIDE~OtNtM9@ z@j7QauH6&6H?i(ZYWIIwU};BVLkFU-$mf3N?Ob?>bv^_gzxzVGdc?4yt0&wlv! z($a~~7naLBz8&wEOFu7puF)^-#h=~ZmTZ4r&$VJ3_yi13K9gE}#?IHy+ju>tVyt0O z-;3RBn-3T+*hbCXymdF}3l2{X8=33%^_u4zb=r$J*%Dy5nNJ@-%U`dJKhJ+v&W8TK z!a()u7nAwx1BdpPzKNb|)M+nvvh6L{F4!)1>f}uRI@Jpf=WW+v*Aq4}r8VlZ7ducH z_!iteI+cH1hYJo*sf|19Zf{{;Yt(Ho2HExmv~kCd delta 913 zcmV;C18)5A4D1Pz7Y=|31^@s6jALRO0001vktKqE6|Yid1y?^8a4-M>rzlS1BN_|p z000CTNklU*=%Nj z%0Bf331Dv{lRpA5e+{Wm0OfZ3%C+|V)eG6^^rf1|@p%GP$kP2g?a1{~d>__6cK+_M z#y-D`FJWG5M9<3Gi$Z=5Xq%TdvPx@2&&u12m=6f4%KlFX1_P4; z1tOC`1RH;F099$CR;2<|-q@;aYSct6TPIDV$Rk&Pk(*-EqEw^G>^cvR)w3dQxVJOc zXG6~O$I;==)QG%m%I?p)?_wJAMA!Rtf*L(dK02Xe8nR`ND&~U2oRG-0yL5Z3xD*?V-8SX0hW0tN?B~I zuC(7hc@TD=sxmh2Z+Z?;Jr~6`R<(9NTCL5jULR4PMr923`VZ4Iq{s;Et9$aq#P;W- zQ48nr{_XnKpIaX<-nh>*jC|6XG>)&x>ni)qu*fN#R-SRlg^t4-kWmcfpV% nKu8fFqzDjF1e5#(3KsPX?`F}Tzn2XB00000NkvXXu0mjf?8w5} From 7c075abc407acaf0b251e58921afc7d51fda4d66 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 20:53:03 +0200 Subject: [PATCH 029/104] remove shapeshift spells --- .../vicissitude/shapeshift_forms.dm | 19 ------------------- tgstation.dme | 1 - 2 files changed, 20 deletions(-) delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm deleted file mode 100644 index d16d275eb29f..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshift_forms.dm +++ /dev/null @@ -1,19 +0,0 @@ -/datum/action/cooldown/spell/shapeshift/tzimisce - name = "Tzimisce Form" - desc = "Take on the shape a beast." - cooldown_time = 10 SECONDS - revert_on_death = TRUE - die_with_shapeshifted_form = FALSE - spell_requirements = NONE - convert_damage = FALSE - possible_shapes = list(/mob/living/basic/tzimisce_beast) - -/datum/action/cooldown/spell/shapeshift/bloodcrawler - name = "Blood Crawler" - desc = "Take on the shape a beast." - cooldown_time = 5 SECONDS - revert_on_death = TRUE - convert_damage = FALSE - spell_requirements = NONE - die_with_shapeshifted_form = FALSE - possible_shapes = list(/mob/living/basic/bloodcrawler) diff --git a/tgstation.dme b/tgstation.dme index 4f8c5422a165..424e10245ff8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7272,7 +7272,6 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshift_forms.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" From 66e92c671f32945e189a24bdf6593e282be09f97 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 21:19:10 +0200 Subject: [PATCH 030/104] zulo Credit to Minzeyes (minzeyes) on discord for the zulo sprites! --- .../modules/deprecated/icons/64x64.dmi | Bin 67420 -> 54990 bytes .../vicissitude/objects/creatures.dm | 41 ------------------ .../discipline/vicissitude/vicissitude.dm | 6 +++ .../code/discipline/vicissitude/zulo.dm | 28 ++++++++++++ .../modules/powers/icons/zulo_forms.dmi | Bin 0 -> 9653 bytes tgstation.dme | 1 + 6 files changed, 35 insertions(+), 41 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm create mode 100644 modular_darkpack/modules/powers/icons/zulo_forms.dmi diff --git a/modular_darkpack/modules/deprecated/icons/64x64.dmi b/modular_darkpack/modules/deprecated/icons/64x64.dmi index 5e6f366dc3cc69887fa9a588108fc5f909dc6260..bac2d5ec0259269f61bd8fe466a8a1a7384c8d29 100644 GIT binary patch literal 54990 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 HF!ld`9DHBN diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm index 1bc5b73c6c5c..1dc5c92cbaac 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm @@ -92,47 +92,6 @@ bloodpool = 7 maxbloodpool = 7 -/mob/living/basic/tzimisce_beast - name = "tzimisce beast form" - desc = "The peak of abominations armor. Unbelievably undamagable..." - icon = 'modular_darkpack/modules/deprecated/icons/64x64.dmi' - icon_state = "weretzi" - icon_living = "weretzi" - pixel_w = -16 - pixel_z = -16 - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - mob_size = MOB_SIZE_HUGE - speed = -0.55 - maxHealth = 575 - health = 575 - butcher_results = list(/obj/item/stack/human_flesh = 10) - melee_damage_lower = 35 - melee_damage_upper = 70 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 10 - maxbloodpool = 10 - -/mob/living/basic/bloodcrawler - name = "tzimisce blood form" - desc = "The peak of abominations. Unbelievably undamagable..." - icon = 'modular_darkpack/modules/deprecated/icons/mobs.dmi' - icon_state = "liquid" - icon_living = "liquid" - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - speed = 3 - butcher_results = list(/obj/item/stack/human_flesh = 1) - melee_damage_lower = 10 - melee_damage_upper = 10 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 20 - maxbloodpool = 20 - /mob/living/basic/biter/hostile faction = list(FACTION_HOSTILE) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 0cf4588ee6b5..b01ebeeba718 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -142,6 +142,12 @@ toggled = FALSE aggravating = TRUE cooldown_length = 1 TURNS + var/datum/action/cooldown/spell/shapeshift/zulo/zulo_form + +/datum/discipline_power/vicissitude/horrid_form/post_gain() + if(!zulo_form) + zulo_form = new(owner) + zulo_form.Grant(owner) /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm new file mode 100644 index 000000000000..e140827de401 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -0,0 +1,28 @@ +/datum/action/cooldown/spell/shapeshift/zulo + name = "Zulo Form" + desc = "Take on the shape a beast." + cooldown_time = 1 TURNS + revert_on_death = TRUE + die_with_shapeshifted_form = FALSE + spell_requirements = NONE + convert_damage = FALSE + possible_shapes = list(/mob/living/basic/zulo) + owner_has_control = FALSE + +/mob/living/basic/zulo + name = "unknown creature" + desc = "What the hell is that thing!?" + icon = 'modular_darkpack/modules/powers/icons/zulo_forms.dmi' + icon_state = "fiend" + pixel_w = -16 + pixel_z = -16 + mob_biotypes = MOB_ORGANIC + mob_size = MOB_SIZE_HUGE + + attack_verb_continuous = "slashes" + attack_verb_simple = "slash" + attack_sound = 'sound/items/weapons/slash.ogg' + combat_mode = TRUE + + bloodpool = 10 + maxbloodpool = 10 diff --git a/modular_darkpack/modules/powers/icons/zulo_forms.dmi b/modular_darkpack/modules/powers/icons/zulo_forms.dmi new file mode 100644 index 0000000000000000000000000000000000000000..329d9eedc3159d765f85b6942f74fb6db170a8ee GIT binary patch literal 9653 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 H!$bcU9yfcs literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 424e10245ff8..26e84bfdf70d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7274,6 +7274,7 @@ #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\zulo.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\flesh_items.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\surgery_tools.dm" From 097ddf41947e1ee112088a43f4a881357f093209 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 29 Nov 2025 22:20:35 +0200 Subject: [PATCH 031/104] awawa --- .../code/vampire_clan/__vampire_clan.dm | 3 +++ .../powers/code/discipline/vicissitude/vicissitude.dm | 5 +++-- .../powers/code/discipline/vicissitude/zulo.dm | 11 +++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/__vampire_clan.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/__vampire_clan.dm index 26887c3adc5b..1e819953fc01 100644 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/__vampire_clan.dm +++ b/modular_darkpack/modules/kindred_species/code/vampire_clan/__vampire_clan.dm @@ -80,6 +80,9 @@ for (var/trait in clan_traits) ADD_TRAIT(vampire, trait, CLAN_TRAIT) + if(isdummy(vampire)) + return + // Applies on_join_round effects when a client logs into this mob if (joining_round) RegisterSignal(vampire, COMSIG_MOB_LOGIN, PROC_REF(on_join_round), override = TRUE) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index b01ebeeba718..3e6e28b73cca 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -136,12 +136,12 @@ level = 4 violates_masquerade = TRUE check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE - target_type = TARGET_SELF | TARGET_HUMAN - duration_length = 1 TURNS + target_type = TARGET_SELF vitae_cost = 2 toggled = FALSE aggravating = TRUE cooldown_length = 1 TURNS + duration_length = 1 SCENES var/datum/action/cooldown/spell/shapeshift/zulo/zulo_form /datum/discipline_power/vicissitude/horrid_form/post_gain() @@ -153,6 +153,7 @@ . = ..() owner.Stun(2 SECONDS) owner.do_jitter_animation(50) + zulo_form.Activate(owner) /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index e140827de401..144765026198 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -7,7 +7,6 @@ spell_requirements = NONE convert_damage = FALSE possible_shapes = list(/mob/living/basic/zulo) - owner_has_control = FALSE /mob/living/basic/zulo name = "unknown creature" @@ -15,7 +14,6 @@ icon = 'modular_darkpack/modules/powers/icons/zulo_forms.dmi' icon_state = "fiend" pixel_w = -16 - pixel_z = -16 mob_biotypes = MOB_ORGANIC mob_size = MOB_SIZE_HUGE @@ -24,5 +22,14 @@ attack_sound = 'sound/items/weapons/slash.ogg' combat_mode = TRUE + maxHealth = 600 + health = 600 + speed = 2 + obj_damage = 20 + armour_penetration = 5 + wound_bonus = 0 + sharpness = SHARP_POINTY + attacked_sound = SFX_DESECRATION + bloodpool = 10 maxbloodpool = 10 From 1feb65e71285fbc77729decc387eddee2696ffcd Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sat, 6 Dec 2025 15:17:47 +0200 Subject: [PATCH 032/104] awawa --- .../discipline/vicissitude/appearances.dm | 345 ++++++++++++++++++ .../discipline/vicissitude/shapeshifting.dm | 84 +++-- .../discipline/vicissitude/vicissitude.dm | 11 +- .../code/discipline/vicissitude/zulo.dm | 1 + tgstation.dme | 1 + 5 files changed, 412 insertions(+), 30 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm new file mode 100644 index 000000000000..875caff0a9aa --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm @@ -0,0 +1,345 @@ +/* + * Create a new changeling profile datum based off of [target]. + * + * target - the human we're basing the new profile off of. + * protect - if TRUE, set the new profile to protected, preventing it from being removed (without force). + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/create_profile(mob/living/carbon/human/target, protect = 0) + var/datum/changeling_profile/new_profile = new() + + target.dna.real_name = target.real_name //Set this again, just to be sure that it's properly set. + + // Set up a copy of their DNA in our profile. + var/datum/dna/new_dna = new target.dna.type() + target.dna.copy_dna(new_dna) + new_profile.dna = new_dna + new_profile.name = target.name + new_profile.protected = protect + + new_profile.age = target.age + new_profile.physique = target.physique + new_profile.athletics_level = target.mind?.get_skill_level(/datum/skill/athletics) || SKILL_LEVEL_NONE + + // Grab the target's quirks. + for(var/datum/quirk/target_quirk as anything in target.quirks) + LAZYADD(new_profile.quirks, new target_quirk.type) + + // Clothes, of course + new_profile.underwear = target.underwear + new_profile.underwear_color = target.underwear_color + new_profile.undershirt = target.undershirt + new_profile.socks = target.socks + + // Grab skillchips they have + new_profile.skillchips = target.clone_skillchip_list(TRUE) + + // Get any scars they may have + for(var/datum/scar/target_scar as anything in target.all_scars) + LAZYADD(new_profile.stored_scars, target_scar.format()) + + // Make an icon snapshot of what they currently look like + var/datum/icon_snapshot/entry = new() + entry.name = target.name + entry.icon = target.icon + entry.icon_state = target.icon_state + entry.overlays = target.get_overlays_copy(list(HANDS_LAYER, HANDCUFF_LAYER, LEGCUFF_LAYER)) + new_profile.profile_snapshot = entry + + // Grab the target's sechut icon. + new_profile.id_icon = target.wear_id?.get_sechud_job_icon_state() + + var/list/slots = list("head", "wear_mask", "wear_neck", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store") + for(var/slot in slots) + if(!(slot in target.vars)) + continue + var/obj/item/clothing/clothing_item = target.vars[slot] + if(!clothing_item) + continue + new_profile.name_list[slot] = clothing_item.name + new_profile.appearance_list[slot] = clothing_item.appearance + new_profile.flags_cover_list[slot] = clothing_item.flags_cover + new_profile.lefthand_file_list[slot] = clothing_item.lefthand_file + new_profile.righthand_file_list[slot] = clothing_item.righthand_file + new_profile.inhand_icon_state_list[slot] = clothing_item.inhand_icon_state + new_profile.worn_icon_list[slot] = clothing_item.worn_icon + new_profile.worn_icon_state_list[slot] = clothing_item.worn_icon_state + new_profile.exists_list[slot] = 1 + + new_profile.voice = target.voice + new_profile.voice_filter = target.voice_filter + + return new_profile + +/* + * Add a new profile to our changeling's profile list. + * Pops the first profile in the list if we're above our limit of profiles. + * + * new_profile - the profile being added. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/add_profile(datum/changeling_profile/new_profile) + if(stored_profiles.len > max_appearances) + if(!push_out_profile()) + return + + if(!first_profile) + first_profile = new_profile + current_profile = first_profile + + stored_profiles += new_profile + +/* + * Create a new profile from the given [profile_target] + * and add it to our profile list via add_profile. + * + * profile_target - the human we're making a profile based off of + * protect - if TRUE, mark the new profile as protected. If protected, it cannot be removed / popped from the profile list (without force). + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/add_new_profile(mob/living/carbon/human/profile_target, protect = FALSE) + var/datum/changeling_profile/new_profile = create_profile(profile_target, protect) + add_profile(new_profile) + return new_profile + +/* + * Remove a given profile from the profile list. + * * + * profile_target - the human we want to remove from our profile list (looks for a profile with a matching name) + * force - if TRUE, removes the profile even if it's protected. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/remove_profile(mob/living/carbon/human/profile_target, force = FALSE) + for(var/datum/changeling_profile/found_profile as anything in stored_profiles) + if(profile_target.real_name == found_profile.name) + if(found_profile.protected && !force) + continue + stored_profiles -= found_profile + qdel(found_profile) + +/* + * Removes the highest changeling profile from the list + * that isn't protected and returns TRUE if successful. + * + * Returns TRUE if a profile was removed, FALSE otherwise. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/push_out_profile() + var/datum/changeling_profile/profle_to_remove + for(var/datum/changeling_profile/found_profile as anything in stored_profiles) + if(!found_profile.protected) + profle_to_remove = found_profile + break + + if(profle_to_remove) + stored_profiles -= profle_to_remove + return TRUE + return FALSE + +/* + * Create a profile based on the changeling's initial appearance. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/create_initial_profile() + if(!ishuman(owner)) + return + + add_new_profile(owner) + +/* + * Restores the appearance of the changeling to the original DNA. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/admin_restore_appearance(mob/admin) + if(!stored_profiles.len || !iscarbon(owner)) + to_chat(admin, span_danger("Resetting DNA failed!")) + return + + var/mob/living/carbon/carbon_owner = owner + first_profile.dna.copy_dna(carbon_owner.dna, COPY_DNA_SE|COPY_DNA_SPECIES) + carbon_owner.real_name = first_profile.name + carbon_owner.updateappearance(mutcolor_update = TRUE) + carbon_owner.domutcheck() + +/* + * Transform the currentc hangeing [user] into the [chosen_profile]. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/transform(mob/living/carbon/human/user, datum/changeling_profile/chosen_profile) + var/static/list/slot2slot = list( + "head" = ITEM_SLOT_HEAD, + "wear_mask" = ITEM_SLOT_MASK, + "wear_neck" = ITEM_SLOT_NECK, + "back" = ITEM_SLOT_BACK, + "wear_suit" = ITEM_SLOT_OCLOTHING, + "w_uniform" = ITEM_SLOT_ICLOTHING, + "shoes" = ITEM_SLOT_FEET, + "belt" = ITEM_SLOT_BELT, + "gloves" = ITEM_SLOT_GLOVES, + "glasses" = ITEM_SLOT_EYES, + "ears" = ITEM_SLOT_EARS, + "wear_id" = ITEM_SLOT_ID, + "s_store" = ITEM_SLOT_SUITSTORE, + ) + + var/datum/dna/chosen_dna = chosen_profile.dna + user.real_name = chosen_profile.name + user.underwear = chosen_profile.underwear + user.underwear_color = chosen_profile.underwear_color + user.undershirt = chosen_profile.undershirt + user.socks = chosen_profile.socks + user.age = chosen_profile.age + user.physique = chosen_profile.physique + user.mind?.set_level(/datum/skill/athletics, chosen_profile.athletics_level, silent = TRUE) + user.voice = chosen_profile.voice + user.voice_filter = chosen_profile.voice_filter + + chosen_dna.copy_dna(user.dna, COPY_DNA_SE) + + for(var/obj/item/bodypart/limb as anything in user.bodyparts) + limb.update_limb(is_creating = TRUE) + + user.updateappearance(mutcolor_update = TRUE) + user.domutcheck() + + // Get rid of any scars from previous Changeling-ing + for(var/datum/scar/old_scar as anything in user.all_scars) + if(old_scar.fake) + user.all_scars -= old_scar + qdel(old_scar) + + // Now, we do skillchip stuff, AFTER DNA code. + // (There's a mutation that increases max chip complexity available, even though we force-implant skillchips.) + + // Remove existing skillchips. + user.destroy_all_skillchips(silent = FALSE) + + // Add new set of skillchips. + for(var/chip in chosen_profile.skillchips) + var/chip_type = chip["type"] + var/obj/item/skillchip/skillchip = new chip_type(user) + + if(!istype(skillchip)) + stack_trace("Failure to implant changeling from [chosen_profile] with skillchip [skillchip]. Tried to implant with non-skillchip type [chip_type]") + qdel(skillchip) + continue + + // Try force-implanting and activating. If it doesn't work, there's nothing much we can do. There may be some + // incompatibility out of our hands + var/implant_msg = user.implant_skillchip(skillchip, TRUE) + if(implant_msg) + // Hopefully recording the error message will help debug it. + stack_trace("Failure to implant changeling from [chosen_profile] with skillchip [skillchip]. Error msg: [implant_msg]") + qdel(skillchip) + continue + + // Time to set the metadata. This includes trying to activate the chip. + var/set_meta_msg = skillchip.set_metadata(chip) + + if(set_meta_msg) + // Hopefully recording the error message will help debug it. + stack_trace("Failure to activate changeling skillchip from [chosen_profile] with skillchip [skillchip] using [chip] metadata. Error msg: [set_meta_msg]") + continue + + //vars hackery. not pretty, but better than the alternative. + for(var/slot in slot2type) + if(istype(user.vars[slot], slot2type[slot]) && !(chosen_profile.exists_list[slot])) // Remove unnecessary flesh items + qdel(user.vars[slot]) + continue + + if((user.vars[slot] && !istype(user.vars[slot], slot2type[slot])) || !(chosen_profile.exists_list[slot])) + continue + + if(istype(user.vars[slot], slot2type[slot]) && slot == "wear_id") // Always remove old flesh IDs - so they get properly updated. + qdel(user.vars[slot]) + + var/obj/item/new_flesh_item + var/equip = FALSE + if(!user.vars[slot]) + var/slot_type = slot2type[slot] + equip = TRUE + new_flesh_item = new slot_type(user) + + else if(istype(user.vars[slot], slot2type[slot])) + new_flesh_item = user.vars[slot] + + new_flesh_item.appearance = chosen_profile.appearance_list[slot] + new_flesh_item.name = chosen_profile.name_list[slot] + new_flesh_item.flags_cover = chosen_profile.flags_cover_list[slot] + new_flesh_item.lefthand_file = chosen_profile.lefthand_file_list[slot] + new_flesh_item.righthand_file = chosen_profile.righthand_file_list[slot] + new_flesh_item.inhand_icon_state = chosen_profile.inhand_icon_state_list[slot] + new_flesh_item.worn_icon = chosen_profile.worn_icon_list[slot] + new_flesh_item.worn_icon_state = chosen_profile.worn_icon_state_list[slot] + + if(istype(new_flesh_item, /obj/item/changeling/id) && chosen_profile.id_icon) + var/obj/item/changeling/id/flesh_id = new_flesh_item + flesh_id.hud_icon = chosen_profile.id_icon + + if(equip) + user.equip_to_slot_or_del(new_flesh_item, slot2slot[slot], indirect_action = TRUE) + if(!QDELETED(new_flesh_item)) + ADD_TRAIT(new_flesh_item, TRAIT_NODROP, CHANGELING_TRAIT) + + for(var/stored_scar_line in chosen_profile.stored_scars) + var/datum/scar/attempted_fake_scar = user.load_scar(stored_scar_line) + if(attempted_fake_scar) + attempted_fake_scar.fake = TRUE + + user.regenerate_icons() + user.name = user.get_visible_name() + current_profile = chosen_profile + +/* + * Get the corresponding changeling profile for the passed name. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/get_dna(searched_dna_name) + for(var/datum/changeling_profile/found_profile as anything in stored_profiles) + if(searched_dna_name == found_profile.name) + return found_profile + +/* + * Checks if we have a changeling profile with the passed DNA. + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/has_profile_with_dna(datum/dna/searched_dna) + for(var/datum/changeling_profile/found_profile as anything in stored_profiles) + if(searched_dna.is_same_as(found_profile.dna)) + return TRUE + return FALSE + + +//Change our DNA to that of somebody we've absorbed. +/datum/action/cooldown/mob_cooldown/shapeshift/proc/transform_mob(mob/living/carbon/human/user) + var/datum/changeling_profile/chosen_prof = select_dna() + if(!chosen_prof) + return FALSE + if(!IN_GIVEN_RANGE(owner, target, range)) + return FALSE + transform(user, chosen_prof) + SEND_SIGNAL(user, COMSIG_CHANGELING_TRANSFORM) + return TRUE + +/** + * Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/select_dna() + var/mob/living/carbon/user = owner + if(!istype(user)) + return FALSE + + var/list/disguises = list() + for(var/datum/changeling_profile/current_profile as anything in stored_profiles) + var/datum/icon_snapshot/snap = current_profile.profile_snapshot + var/image/disguise_image = image(icon = snap.icon, icon_state = snap.icon_state) + disguise_image.overlays = snap.overlays + disguises[current_profile.name] = disguise_image + + var/chosen_name = show_radial_menu(user, user, disguises, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 40, require_near = TRUE, tooltips = TRUE) + if(!chosen_name) + return FALSE + + var/datum/changeling_profile/prof = get_dna(chosen_name) + return prof + +/** + * Checks if we are allowed to interact with a radial menu + * + * Arguments: + * * user The carbon mob interacting with the menu + */ +/datum/action/cooldown/mob_cooldown/shapeshift/proc/check_menu(mob/living/carbon/user) + if(!istype(user)) + return FALSE + return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index e141ef6b1d0f..f5151a611b9a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -6,17 +6,48 @@ #define CHANGE_RACE "Change Race" #define CHANGE_HEIGHT "Change Height" #define CHANGE_APPEARANCE "Change Appearance" -#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT, CHANGE_APPEARANCE) +#define SAVE_APPEARANCE "Save Appearance" +#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT, CHANGE_APPEARANCE, SAVE_APPEARANCE) /datum/action/cooldown/mob_cooldown/shapeshift owner_has_control = FALSE + /// What choices we get to pick. var/list/choices = CHOICE_OPTIONS + /// The range of this action. var/range = 1 + /// list of datum/changeling_profile + var/list/stored_profiles = list() + /// The original profile of this vicissitude holder. + var/datum/changeling_profile/first_profile = null + /// Keeps track of the currently selected profile. + var/datum/changeling_profile/current_profile + /// Satic list of what each slot associated with (in regard to changeling flesh items). + var/static/list/slot2type = list( + "head" = /obj/item/clothing/head/changeling, + "wear_mask" = /obj/item/clothing/mask/changeling, + "wear_neck" = /obj/item/changeling, + "back" = /obj/item/changeling, + "wear_suit" = /obj/item/clothing/suit/changeling, + "w_uniform" = /obj/item/clothing/under/changeling, + "shoes" = /obj/item/clothing/shoes/changeling, + "belt" = /obj/item/changeling, + "gloves" = /obj/item/clothing/gloves/changeling, + "glasses" = /obj/item/clothing/glasses/changeling, + "ears" = /obj/item/changeling, + "wear_id" = /obj/item/changeling/id, + "s_store" = /obj/item/changeling, + ) + /// How many different appearances we can choose from. + var/max_appearances = 6 /datum/action/cooldown/mob_cooldown/shapeshift/New(Target, original) . = ..() update_choices() +/datum/action/cooldown/mob_cooldown/shapeshift/Destroy() + current_profile = null + return ..() + /datum/action/cooldown/mob_cooldown/shapeshift/proc/update_choices() for(var/i in choices) choices[i] = icon('modular_darkpack/modules/powers/icons/shapeshifting_radial.dmi', i) @@ -31,23 +62,32 @@ if(!chosen_option) return TRUE - switch(chosen_option) - if(CHANGE_HAIR) - change_hair(target) - if(CHANGE_BEARD) - change_beard(target) - if(CHANGE_SEX) - change_sex(target) - if(CHANGE_NAME) - change_name(target) - if(CHANGE_EYES) - change_eyes(target) - if(CHANGE_RACE) - change_race(target) - if(CHANGE_HEIGHT) - change_height(target) - if(CHANGE_APPEARANCE) - show_saved_profiles(target) + if(chosen_option == SAVE_APPEARANCE) + if(target == owner) + return TRUE + add_profile_save(target) + + if((target.pulledby == owner && (owner.grab_state != GRAB_AGGRESSIVE)) || (target == owner)) + switch(chosen_option) + if(CHANGE_HAIR) + change_hair(target) + if(CHANGE_BEARD) + change_beard(target) + if(CHANGE_SEX) + change_sex(target) + if(CHANGE_NAME) + change_name(target) + if(CHANGE_EYES) + change_eyes(target) + if(CHANGE_RACE) + change_race(target) + if(CHANGE_HEIGHT) + change_height(target) + if(CHANGE_APPEARANCE) + transform_mob(target) + else + to_chat(owner, span_danger("You need to have a firm grip on [target]!")) + return TRUE if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE @@ -226,12 +266,11 @@ to_chat(owner, span_notice("You finish altering the height of [target].")) return TRUE -/datum/action/cooldown/mob_cooldown/shapeshift/proc/show_saved_profiles(mob/living/carbon/human/target) - var/chosen_option // = show_radial_menu(owner, target, saved_profiles, target, radius = 36, tooltips = TRUE) - if(!chosen_option) - return FALSE +/datum/action/cooldown/mob_cooldown/shapeshift/proc/add_profile_save(mob/living/carbon/human/target) if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE + if(!has_profile_with_dna(target.dna)) + add_new_profile(target) return TRUE #undef CHANGE_HAIR @@ -243,3 +282,4 @@ #undef CHANGE_HEIGHT #undef CHOICE_OPTIONS #undef CHANGE_APPEARANCE +#undef SAVE_APPEARANCE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 3e6e28b73cca..a5d03eb6a917 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -21,7 +21,6 @@ /datum/discipline_power/vicissitude name = "Vicissitude power name" desc = "Vicissitude power description" - effect_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' var/datum/action/cooldown/mob_cooldown/shapeshift/shapeshift_ability @@ -29,6 +28,7 @@ if(!shapeshift_ability) shapeshift_ability = new(owner) shapeshift_ability.Grant(owner) + shapeshift_ability.create_initial_profile() ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -42,7 +42,6 @@ cooldown_length = 1 TURNS vitae_cost = 1 toggled = FALSE - aggravating = TRUE /datum/discipline_power/vicissitude/malleable_visage/activate(atom/target) . = ..() @@ -57,19 +56,15 @@ level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE - target_type = TARGET_SELF | TARGET_HUMAN | TARGET_VAMPIRE + target_type = TARGET_SELF | TARGET_HUMAN vitae_cost = 1 range = 1 toggled = FALSE - aggravating = TRUE cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/fleshcrafting/activate(atom/movable/target) . = ..() - if(target.pulledby == owner && (owner.grab_state == GRAB_AGGRESSIVE)) - shapeshift_ability.Activate(target) - else - to_chat(owner, span_danger("You need to have a firm grip on [target]!")) + shapeshift_ability.Activate(target) return TRUE /datum/discipline_power/vicissitude/fleshcrafting/post_gain() diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 144765026198..025005639059 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -7,6 +7,7 @@ spell_requirements = NONE convert_damage = FALSE possible_shapes = list(/mob/living/basic/zulo) + owner_has_control = FALSE /mob/living/basic/zulo name = "unknown creature" diff --git a/tgstation.dme b/tgstation.dme index 26e84bfdf70d..6ba876c04fba 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7271,6 +7271,7 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\path_of_blood.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\appearances.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" From 55129298831581685721adf1aeaa4ee5c4ccbd91 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 22 Jan 2026 03:34:48 +0200 Subject: [PATCH 033/104] Update tgstation.dme --- tgstation.dme | 3 --- 1 file changed, 3 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index 3bc36f7c584a..e056ef016745 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7241,8 +7241,6 @@ #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\lasombra\creatures.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\lasombra\lasombra.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\malkavian\malkavian.dm" -#include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\crafting_recipes.dm" -#include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\creatures.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\needs_home_soil.dm" #include "modular_darkpack\modules\kindred_species\code\vampire_clan\clans\tzimisce\tzimisce.dm" #include "modular_darkpack\modules\languages\code\languages\arabic.dm" @@ -7443,7 +7441,6 @@ #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\height_change.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\sex_change.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\skin_colour_change.dm" -#include "modular_darkpack\modules\radios\code\police_radio.dm" #include "modular_darkpack\modules\quirks\code\negative_quirks\derangement.dm" #include "modular_darkpack\modules\radios\code\admin_verb.dm" #include "modular_darkpack\modules\radios\code\radio.dm" From 00423a4b3b89dafa62b2bc33d5276e0d852a8c2a Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 22 Jan 2026 04:10:21 +0200 Subject: [PATCH 034/104] me when new surgery --- .../surgeries/appearance_change.dm | 39 --------- .../surgeries/eye_colour_change.dm | 3 + .../surgeries/hair_colour_change.dm | 2 + .../vicissitude/surgeries/height_change.dm | 3 + .../surgeries/operation_eye_color.dm | 81 +++++++++++++++++++ .../vicissitude/surgeries/sex_change.dm | 3 + .../surgeries/skin_colour_change.dm | 2 + .../discipline/vicissitude/vicissitude.dm | 1 - tgstation.dme | 2 +- 9 files changed, 95 insertions(+), 41 deletions(-) delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm deleted file mode 100644 index e355c2dac30f..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/appearance_change.dm +++ /dev/null @@ -1,39 +0,0 @@ -/datum/surgery/fleshcraft/appearance_change - name = "Appearance Change" - steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/reshape_appearance, /datum/surgery_step/close) - possible_locs = list(BODY_ZONE_HEAD) - replaced_by = null - requires_tech = TRUE - -/datum/surgery_step/reshape_appearance - name = "Reshape Face" - implements = list(TOOL_SCALPEL = 100, TOOL_KNIFE = 50, TOOL_WIRECUTTER = 35) - time = 64 - repeatable = TRUE - -/datum/surgery_step/reshape_appearance/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - display_results( - user, - target, - span_notice("You begin to alter [target]'s appearance."), - span_notice("[user] begins to alter [target]'s appearance."), - span_notice("[user] begins to make an incision in [target]'s face!"), - ) - display_pain(target, "You feel your face being split apart!") - -/datum/surgery_step/reshape_appearance/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/newname = sanitize_name(tgui_input_text(user, "Choose a new name.", "Name change", target.name, MAX_NAME_LEN)) - if(!newname || newname == target.name) - return FALSE - if(!IN_GIVEN_RANGE(user, target, 1)) - return FALSE - target.real_name = newname - target.name = newname - if(target.dna) - target.dna.real_name = newname - if(target.mind) - target.mind.name = newname - SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) - playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) - to_chat(user, span_notice("You finish altering the name of [target].")) - return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm index 89154465553a..2319c2e24142 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/eye_colour_change.dm @@ -1,3 +1,4 @@ +/* /datum/surgery/fleshcraft/eye_colour_change name = "Change Eye Colour" steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_eyes, /datum/surgery_step/close) @@ -35,3 +36,5 @@ playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the eye color of [target].")) return TRUE + +*/ diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm index 6d300b31509b..644693571347 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/hair_colour_change.dm @@ -1,3 +1,4 @@ +/* /datum/surgery/fleshcraft/hair name = "Change Hair Colour" steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_hair, /datum/surgery_step/close) @@ -43,3 +44,4 @@ playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the hair color of [target].")) return TRUE +*/ diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm index fbb90070edfd..e6b00b795337 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/height_change.dm @@ -1,3 +1,4 @@ +/* /datum/surgery/fleshcraft/height_change name = "Height Change" possible_locs = list(BODY_ZONE_CHEST) @@ -50,3 +51,5 @@ playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the height of [target].")) return TRUE + +*/ diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm new file mode 100644 index 000000000000..984ba1d5196a --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm @@ -0,0 +1,81 @@ +#define OPERATION_NEW_COLOR "chosen_color" + +/datum/surgery_operation/organ/eye_color_surgery + name = "keratopigmentation surgery" + desc = "Change the color of a patient's eyes." + implements = list( + TOOL_HEMOSTAT = 1.15, + TOOL_SCREWDRIVER = 2.85, + /obj/item/pen = 6.67, + ) + preop_sound = 'sound/items/handling/surgery/scalpel1.ogg' + success_sound = 'sound/items/handling/surgery/scalpel2.ogg' + operation_flags = OPERATION_LOCKED | OPERATION_NOTABLE | OPERATION_MORBID + time = 20 SECONDS + target_type = /obj/item/organ/eyes + all_surgery_states_required = SURGERY_SKIN_OPEN + any_surgery_states_blocked = SURGERY_VESSELS_UNCLAMPED + required_organ_flag = NONE + +/datum/surgery_operation/organ/eye_color_surgery/all_required_strings() + return list("operate on eyes (target eyes)") + ..() + +/datum/surgery_operation/organ/eye_color_surgery/get_default_radial_image() + return image(/obj/item/scalpel) + +/datum/surgery_operation/organ/eye_color_surgery/state_check(atom/movable/operating_on) + return TRUE + +/datum/surgery_operation/organ/eye_color_surgery/pre_preop(atom/movable/operating_on, mob/living/surgeon, tool, list/operation_args) + operation_args[OPERATION_NEW_COLOR] = list() + operation_args[OPERATION_NEW_COLOR][1] = tgui_color_picker(surgeon, "Left Eye", "Keratopigmentation Surgery") + operation_args[OPERATION_NEW_COLOR][2] = tgui_color_picker(surgeon, "Right Eye", "Keratopigmentation Surgery") + return !!operation_args[OPERATION_NEW_COLOR][1] || !!operation_args[OPERATION_NEW_COLOR][2] + +/datum/surgery_operation/organ/eye_color_surgery/on_preop(atom/movable/operating_on, mob/living/surgeon, tool, list/operation_args) + var/mob/living/patient = get_patient(operating_on) + var/atom/movable/display_target = patient || operating_on + display_results( + surgeon, + patient, + span_notice("You begin to alter [patient.name]'s eyes..."), + span_notice("[surgeon] begins to alter [patient.name]'s eyes."), + span_notice("[surgeon] begins to make an incision in [patient.name]'s [display_target]."), + ) + display_pain(patient, "You feel a slicing pain across your face!") + +/datum/surgery_operation/organ/eye_color_surgery/on_success(atom/movable/operating_on, mob/living/surgeon, tool, list/operation_args) + var/mob/living/carbon/human/patient = get_patient(operating_on) + + var/eye_color_left = operation_args[OPERATION_NEW_COLOR][1] + var/eye_color_right = operation_args[OPERATION_NEW_COLOR][2] + if(eye_color_left) + patient.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + if(eye_color_right) + patient.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + + display_results( + surgeon, + patient, + span_notice("You alter [patient.name]'s eyes completely."), + span_notice("[surgeon] alters [patient.name]'s eyes completely."), + span_notice("[surgeon] finishes the operation on [patient.name]'s eyes."), + ) + display_pain(patient, "The pain fades, your eyes feel new and unfamiliar!") + +/datum/surgery_operation/organ/eye_color_surgery/on_failure(atom/movable/operating_on, mob/living/surgeon, tool, list/operation_args) + var/mob/living/carbon/human/patient = get_patient(operating_on) + display_results( + surgeon, + patient, + span_warning("Your screw up, leaving [patient.name]'s eyes bruised!"), + span_warning("[surgeon] screws up, bruising [patient.name]'s eyes!"), + span_notice("[surgeon] finishes the operation on [patient.name]'s eyes."), + ) + display_pain(patient, "Your eyes feels torn!") + ADD_TRAIT(patient, TRAIT_DISFIGURED, TRAIT_GENERIC) + var/obj/item/organ/eyes/eyes = patient.get_organ_slot(ORGAN_SLOT_EYES) + eyes.apply_organ_damage(1) + +#undef OPERATION_NEW_COLOR + diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm index 2b2dfca561bd..f7d034d2b6be 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm @@ -1,3 +1,4 @@ +/* /datum/surgery/fleshcraft/sex_change name = "Sex Change" steps = list(/datum/surgery_step/incise, @@ -62,3 +63,5 @@ playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the physique of [target].")) return TRUE + +*/ diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm index 70496fad1b07..533ba9dab9e3 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm @@ -1,3 +1,4 @@ +/* /datum/surgery/fleshcraft/skin_colour_change name = "Change Skin Colour" steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/modify_skin, /datum/surgery_step/close) @@ -42,3 +43,4 @@ playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(user, span_notice("You finish altering the race of [target].")) return TRUE +*/ diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index a5d03eb6a917..fb7fb153ef19 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -71,7 +71,6 @@ . = ..() var/obj/item/organ/cyberimp/arm/toolkit/surgery/vicissitude/surgery_implant = new() surgery_implant.Insert(owner) - ADD_TRAIT(owner, TRAIT_SURGEON, DISCIPLINE_TRAIT) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/tgstation.dme b/tgstation.dme index e056ef016745..250d00c53f67 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7435,10 +7435,10 @@ #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\flesh_items.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\surgery_tools.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\appearance_change.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\eye_colour_change.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\hair_colour_change.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\height_change.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\operation_eye_color.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\sex_change.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\surgeries\skin_colour_change.dm" #include "modular_darkpack\modules\quirks\code\negative_quirks\derangement.dm" From df75d6e856c06034db3b30fb47fb21d9feaf7a28 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 22 Jan 2026 04:30:18 +0200 Subject: [PATCH 035/104] hm --- code/__DEFINES/surgery.dm | 2 +- .../operations/operation_plastic_surgery.dm | 1 + .../discipline/vicissitude/vicissitude.dm | 21 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm index 1a7945b2bf7c..ab8fee7c9a08 100644 --- a/code/__DEFINES/surgery.dm +++ b/code/__DEFINES/surgery.dm @@ -173,7 +173,7 @@ DEFINE_BITFIELD(operation_flags, list( #define OPERATION_BRUTE_MULTIPLIER "brute_multiplier" #define OPERATION_BURN_MULTIPLIER "burn_multiplier" -/// Used in string formatting to print a limb as "John's right arm" or "the human right arm" +/// Used in string formatting to print a limb as "John's right arm" or "the human right arm" #define FORMAT_LIMB_OWNER(limb) (limb.owner ? "[limb.owner]'s [limb.plaintext_zone]" : limb) /// Used in string formatting to print an organ's location as "John" or "the human chest" #define FORMAT_ORGAN_OWNER(organ) (organ.owner || organ.loc) diff --git a/code/modules/surgery/operations/operation_plastic_surgery.dm b/code/modules/surgery/operations/operation_plastic_surgery.dm index 2ef9db9d8563..d94ec452a6ab 100644 --- a/code/modules/surgery/operations/operation_plastic_surgery.dm +++ b/code/modules/surgery/operations/operation_plastic_surgery.dm @@ -109,6 +109,7 @@ desc = "Apply plastic to a patient's face to to allow for greater customization in following plastic surgery." implements = list( /obj/item/stack/sheet/plastic = 1, + /obj/item/stack/human_flesh = 1, // DARKPACK EDIT ADD ) time = 4.8 SECONDS operation_flags = OPERATION_MORBID | OPERATION_LOCKED diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index fb7fb153ef19..b444c97590a9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -71,6 +71,27 @@ . = ..() var/obj/item/organ/cyberimp/arm/toolkit/surgery/vicissitude/surgery_implant = new() surgery_implant.Insert(owner) + RegisterSignal(owner, COMSIG_LIVING_OPERATING_ON, PROC_REF(add_surgery)) + +/datum/discipline_power/vicissitude/fleshcrafting/Destroy(force) + UnregisterSignal(owner, COMSIG_LIVING_OPERATING_ON) + return ..() + +/datum/discipline_power/vicissitude/fleshcrafting/proc/add_surgery(datum/source, atom/movable/operating_on, list/possible_operations) + SIGNAL_HANDLER + + var/static/list/tzimisce_operations + if(!length(tzimisce_operations)) + tzimisce_operations = list() + tzimisce_operations += /datum/surgery_operation/basic/tend_wounds/combo/upgraded/master + tzimisce_operations += /datum/surgery_operation/limb/add_plastic + tzimisce_operations += typesof(/datum/surgery_operation/limb/bioware) + tzimisce_operations += typesof(/datum/surgery_operation/organ/brainwash) + tzimisce_operations += typesof(/datum/surgery_operation/organ/lobotomy) + tzimisce_operations += typesof(/datum/surgery_operation/organ/pacify) + tzimisce_operations += /datum/surgery_operation/organ/eye_color_surgery + + possible_operations |= tzimisce_operations ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 985aef591582c9c0be2e0064f86449a51e2deb5f Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:15:39 +0200 Subject: [PATCH 036/104] awawa --- .../vicissitude/surgeries/operation_eye_color.dm | 4 ++-- .../powers/code/discipline/vicissitude/vicissitude.dm | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm index 984ba1d5196a..36abded04c11 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm @@ -50,9 +50,9 @@ var/eye_color_left = operation_args[OPERATION_NEW_COLOR][1] var/eye_color_right = operation_args[OPERATION_NEW_COLOR][2] if(eye_color_left) - patient.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + patient.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = TRUE) if(eye_color_right) - patient.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) + patient.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = TRUE) display_results( surgeon, diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index b444c97590a9..138ed985ebfd 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -152,7 +152,7 @@ violates_masquerade = TRUE check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE target_type = TARGET_SELF - vitae_cost = 2 + // vitae_cost = 2 toggled = FALSE aggravating = TRUE cooldown_length = 1 TURNS @@ -160,20 +160,27 @@ var/datum/action/cooldown/spell/shapeshift/zulo/zulo_form /datum/discipline_power/vicissitude/horrid_form/post_gain() + /* if(!zulo_form) zulo_form = new(owner) zulo_form.Grant(owner) + */ /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() + to_chat(owner, span_notice("Not implemented yet, apologies!")) + /* owner.Stun(2 SECONDS) owner.do_jitter_animation(50) zulo_form.Activate(owner) + */ /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() + /* owner.Stun(2 SECONDS) owner.do_jitter_animation(50) + */ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -189,6 +196,7 @@ /datum/discipline_power/vicissitude/bloodform/activate() . = ..() + to_chat(owner, span_notice("Not implemented yet, apologies!")) /datum/discipline_power/vicissitude/bloodform/deactivate() . = ..() From 78fee25d4a57d9ef980f99957710b95902622482 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:40:48 +0200 Subject: [PATCH 037/104] Update operation_eye_color.dm --- .../vicissitude/surgeries/operation_eye_color.dm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm index 36abded04c11..13226fd23815 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/operation_eye_color.dm @@ -28,8 +28,8 @@ /datum/surgery_operation/organ/eye_color_surgery/pre_preop(atom/movable/operating_on, mob/living/surgeon, tool, list/operation_args) operation_args[OPERATION_NEW_COLOR] = list() - operation_args[OPERATION_NEW_COLOR][1] = tgui_color_picker(surgeon, "Left Eye", "Keratopigmentation Surgery") - operation_args[OPERATION_NEW_COLOR][2] = tgui_color_picker(surgeon, "Right Eye", "Keratopigmentation Surgery") + operation_args[OPERATION_NEW_COLOR] += tgui_color_picker(surgeon, "Left Eye", "Keratopigmentation Surgery") + operation_args[OPERATION_NEW_COLOR] += tgui_color_picker(surgeon, "Right Eye", "Keratopigmentation Surgery") return !!operation_args[OPERATION_NEW_COLOR][1] || !!operation_args[OPERATION_NEW_COLOR][2] /datum/surgery_operation/organ/eye_color_surgery/on_preop(atom/movable/operating_on, mob/living/surgeon, tool, list/operation_args) @@ -49,10 +49,9 @@ var/eye_color_left = operation_args[OPERATION_NEW_COLOR][1] var/eye_color_right = operation_args[OPERATION_NEW_COLOR][2] - if(eye_color_left) - patient.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = TRUE) - if(eye_color_right) - patient.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = TRUE) + patient.set_eye_color(sanitize_hexcolor(eye_color_left), sanitize_hexcolor(eye_color_right)) + patient.dna.update_ui_block(/datum/dna_block/identity/eye_colors) + patient.update_body() display_results( surgeon, From 6850bbcc44de64a6b828ead93a40cb863366b7ae Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:44:50 +0200 Subject: [PATCH 038/104] Update crafting_recipes.dm --- .../code/discipline/vicissitude/crafting_recipes.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm index 674fa23331cc..c68a5d9b7b12 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm @@ -1,4 +1,3 @@ -/* // DARKPACK TODO - requires vicissitude material to pass unit tests. /datum/crafting_recipe/tzi_trench name = "Leather-Bone Trenchcoat (Armor)" time = 50 @@ -59,14 +58,14 @@ name = "Biting Abomination" time = 100 reqs = list(/obj/item/stack/human_flesh = 2, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2, /obj/item/spine = 1) - result = /mob/living/basic/biter + result = /mob/living/basic/szlachta category = CAT_TZIMISCE /datum/crafting_recipe/tzi_fister name = "Punching Abomination" time = 100 reqs = list(/obj/item/stack/human_flesh = 5, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/spine = 1, /obj/item/guts = 1) - result = /mob/living/basic/fister + result = /mob/living/basic/szlachta/fister category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY @@ -74,7 +73,6 @@ name = "Fat Abomination" time = 100 reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/bodypart/leg/right = 1, /obj/item/bodypart/leg/left = 1, /obj/item/spine = 1, /obj/item/guts = 2) - result = /mob/living/basic/tanker + result = /mob/living/basic/szlachta/tanker category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY -*/ From cd96a7021beb50cb73772f41c8b4c0da5b7f6acb Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:45:57 +0200 Subject: [PATCH 039/104] Update needs_home_soil.dm --- .../code/vampire_clan/clans/tzimisce/needs_home_soil.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/needs_home_soil.dm b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/needs_home_soil.dm index b195d6b4b1ba..e2da17fce37a 100644 --- a/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/needs_home_soil.dm +++ b/modular_darkpack/modules/kindred_species/code/vampire_clan/clans/tzimisce/needs_home_soil.dm @@ -50,8 +50,6 @@ // Deal 25% of their health in clone damage and reduce their bloodpool size by 3, to a minimum of 8 var/mob/living/lacking_soil = parent lacking_soil.apply_damage(0.25 * lacking_soil.getMaxHealth(), AGGRAVATED) - // Currently nonfunctional, will be fixed in the splat rework - // lacking_soil.maxbloodpool = max(lacking_soil.maxbloodpool - 3, 8) lacking_soil.adjust_blood_pool(-3) to_chat(lacking_soil, span_danger("Your home soil has been destroyed! Its loss debilitates you.")) From bac59603620afaf4aa03c06236dde4bcf5365233 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:33:21 +0200 Subject: [PATCH 040/104] awaw --- tzimisce/needs_home_soil.dm | 57 ------------------------------------- tzimisce/tzimisce.dm | 32 --------------------- 2 files changed, 89 deletions(-) delete mode 100644 tzimisce/needs_home_soil.dm delete mode 100644 tzimisce/tzimisce.dm diff --git a/tzimisce/needs_home_soil.dm b/tzimisce/needs_home_soil.dm deleted file mode 100644 index e2da17fce37a..000000000000 --- a/tzimisce/needs_home_soil.dm +++ /dev/null @@ -1,57 +0,0 @@ -/** - * # Needs Home Soil - * - * Causes a vampire to need to keep soil - * from their homeland on their person, or - * else they start losing power (blood) - * periodically. - * - */ -/datum/component/needs_home_soil - var/obj/item/ground_heir/soil - -/datum/component/needs_home_soil/Initialize(obj/item/ground_heir/soil) - . = ..() - - if (!istype(soil, /obj/item/ground_heir)) - return COMPONENT_INCOMPATIBLE - src.soil = soil - - RegisterSignal(soil, COMSIG_QDELETING, PROC_REF(handle_soil_destroyed)) - -/datum/component/needs_home_soil/RegisterWithParent() - if (!isliving(parent)) - return COMPONENT_INCOMPATIBLE - - RegisterSignal(soil, COMSIG_MOVABLE_MOVED, PROC_REF(handle_soil_moved)) - -/datum/component/needs_home_soil/proc/handle_soil_moved(obj/item/ground_heir/source, atom/OldLoc, dir) - SIGNAL_HANDLER - - var/mob/living/needs_soil = parent - var/list/atom/movable/mob_contents = needs_soil.get_all_contents() - if (mob_contents.Find(source)) - STOP_PROCESSING(SSdcs, src) - else - START_PROCESSING(SSdcs, src) - -/datum/component/needs_home_soil/process(seconds_per_tick) - if (!SPT_PROB(3, seconds_per_tick)) - return - - var/mob/living/lacking_soil = parent - lacking_soil.adjust_blood_pool(-1) - - to_chat(lacking_soil, span_warning("You are missing your home soil. Being without it weakens you...")) - -/datum/component/needs_home_soil/proc/handle_soil_destroyed(obj/item/ground_heir/source, force) - SIGNAL_HANDLER - - // Deal 25% of their health in clone damage and reduce their bloodpool size by 3, to a minimum of 8 - var/mob/living/lacking_soil = parent - lacking_soil.apply_damage(0.25 * lacking_soil.getMaxHealth(), AGGRAVATED) - lacking_soil.adjust_blood_pool(-3) - - to_chat(lacking_soil, span_danger("Your home soil has been destroyed! Its loss debilitates you.")) - - qdel(src) diff --git a/tzimisce/tzimisce.dm b/tzimisce/tzimisce.dm deleted file mode 100644 index e859b8af7aa0..000000000000 --- a/tzimisce/tzimisce.dm +++ /dev/null @@ -1,32 +0,0 @@ -/datum/vampire_clan/tzimisce - name = "Tzimisce" - id = VAMPIRE_CLAN_TZIMISCE - desc = "If someone were to call a Tzimisce inhuman and sadistic, the Tzimisce would probably commend them for their perspicacity, and then demonstrate that their mortal definition of sadism was laughably inadequate. The Tzimisce have left the human condition behind gladly, and now focus on transcending the limitations of the vampiric state. At a casual glance or a brief conversation, a Tzimisce appears to be one of the more pleasant vampires. Polite, intelligent, and inquisitive, they seem a stark contrast to the howling Sabbat mobs or even the apparently more humane Brujah or Nosferatu. However, upon closer inspection, it becomes clear that this is merely a mask hiding something alien and monstrous." - curse = "Grounded to material domain." - clan_disciplines = list( - /datum/discipline/auspex, - /datum/discipline/animalism, - /datum/discipline/vicissitude - - ) - male_clothes = /obj/item/clothing/under/vampire/sport - female_clothes = /obj/item/clothing/under/vampire/red - enlightenment = TRUE - accessories = list("spines", "spines_slim", "animal_skull", "none") - accessories_layers = list("spines" = BODY_ADJ_LAYER, "spines_slim" = BODY_ADJ_LAYER, "animal_skull" = BODY_ADJ_LAYER, "none" = BODY_ADJ_LAYER) - -/datum/vampire_clan/tzimisce/on_join_round(mob/living/carbon/human/H) - . = ..() - - var/obj/item/ground_heir/heirloom = new(get_turf(H)) - var/list/slots = list( - LOCATION_LPOCKET = ITEM_SLOT_LPOCKET, - LOCATION_RPOCKET = ITEM_SLOT_RPOCKET, - LOCATION_BACKPACK = ITEM_SLOT_BACK, - LOCATION_HANDS = ITEM_SLOT_HANDS - ) - H.equip_in_one_of_slots(heirloom, slots, FALSE) - H.AddComponent(/datum/component/needs_home_soil, heirloom) - -/datum/movespeed_modifier/centipede - multiplicative_slowdown = -0.6 From 21213500b211dda5c497cd4722cade5675cf2d6f Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:39:03 +0200 Subject: [PATCH 041/104] aawa --- .../clans/tzimisce/crafting_recipes.dm | 78 ----------- .../vampire_clan/clans/tzimisce/creatures.dm | 131 ------------------ .../vampire_clan/clans/tzimisce/objects.dm | 46 ------ tgstation.dme | 3 - 4 files changed, 258 deletions(-) delete mode 100644 modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/crafting_recipes.dm delete mode 100644 modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/creatures.dm delete mode 100644 modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/objects.dm diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/crafting_recipes.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/crafting_recipes.dm deleted file mode 100644 index c68a5d9b7b12..000000000000 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/crafting_recipes.dm +++ /dev/null @@ -1,78 +0,0 @@ -/datum/crafting_recipe/tzi_trench - name = "Leather-Bone Trenchcoat (Armor)" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 50, /obj/item/spine = 1) - result = /obj/item/clothing/suit/vampire/trench/tzi - category = CAT_TZIMISCE - -/datum/crafting_recipe/tzi_heart - name = "Second Heart (Antistun)" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 25, /obj/item/organ/heart = 1) - result = /obj/item/organ/cyberimp/brain/anti_stun - category = CAT_TZIMISCE - -/datum/crafting_recipe/tzi_eyes - name = "Better Eyes (Nightvision)" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 15, /obj/item/organ/eyes = 1) - result = /obj/item/organ/eyes/night_vision/tzimisce - category = CAT_TZIMISCE - -/obj/item/organ/eyes/night_vision/tzimisce - low_light_cutoff = list(15, 6, 8) - medium_light_cutoff = list(35, 20, 25) - high_light_cutoff = list(50, 40, 40) - -/datum/crafting_recipe/tzi_implant - name = "Implanting Flesh Device" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/knife/vamp = 1, /obj/item/reagent_containers/blood = 1) - result = /obj/item/autosurgeon/vicissitude - category = CAT_TZIMISCE - -/datum/crafting_recipe/tzi_floor - name = "Gut Floor" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 1, /obj/item/guts = 1) - result = /obj/effect/decal/gut_floor - category = CAT_TZIMISCE - crafting_flags = CRAFT_ON_SOLID_GROUND|CRAFT_CHECK_DENSITY - -/datum/crafting_recipe/tzi_wall - name = "Flesh Wall" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 2) - result = /obj/structure/fleshwall - category = CAT_TZIMISCE - crafting_flags = CRAFT_CHECK_DENSITY - -/datum/crafting_recipe/tzi_stool - name = "Arm Stool" - time = 50 - reqs = list(/obj/item/stack/human_flesh = 5, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2) - result = /obj/structure/chair/old/tzimisce - category = CAT_TZIMISCE - -/datum/crafting_recipe/tzi_biter - name = "Biting Abomination" - time = 100 - reqs = list(/obj/item/stack/human_flesh = 2, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2, /obj/item/spine = 1) - result = /mob/living/basic/szlachta - category = CAT_TZIMISCE - -/datum/crafting_recipe/tzi_fister - name = "Punching Abomination" - time = 100 - reqs = list(/obj/item/stack/human_flesh = 5, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/spine = 1, /obj/item/guts = 1) - result = /mob/living/basic/szlachta/fister - category = CAT_TZIMISCE - crafting_flags = CRAFT_CHECK_DENSITY - -/datum/crafting_recipe/tzi_tanker - name = "Fat Abomination" - time = 100 - reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/bodypart/leg/right = 1, /obj/item/bodypart/leg/left = 1, /obj/item/spine = 1, /obj/item/guts = 2) - result = /mob/living/basic/szlachta/tanker - category = CAT_TZIMISCE - crafting_flags = CRAFT_CHECK_DENSITY diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/creatures.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/creatures.dm deleted file mode 100644 index 775a6e106d34..000000000000 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/creatures.dm +++ /dev/null @@ -1,131 +0,0 @@ -/mob/living/basic/szlachta - name = "biter" - desc = "A ferocious, fang-bearing creature that resembles a spider." - icon = 'modular_darkpack/modules/deprecated/icons/mobs.dmi' - icon_state = "biter" - icon_living = "biter" - icon_dead = "biter_dead" - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - butcher_results = list(/obj/item/stack/human_flesh = 1) - response_help_continuous = "pets" - response_help_simple = "pet" - response_disarm_continuous = "gently pushes aside" - response_disarm_simple = "gently push aside" - speed = -1 - maxHealth = 75 - health = 75 - obj_damage = 50 - melee_damage_lower = 20 - melee_damage_upper = 20 - attack_verb_continuous = "bites" - attack_verb_simple = "bite" - attack_sound = 'sound/items/weapons/bite.ogg' - speak_emote = list("gnashes") - faction = list(VAMPIRE_CLAN_TZIMISCE) - pressure_resistance = 200 - bloodquality = BLOOD_QUALITY_LOW - bloodpool = 2 - maxbloodpool = 2 - -/mob/living/basic/szlachta/fister - name = "fister" - desc = "A true abomination walking on both hands." - icon_state = "fister" - icon_living = "fister" - icon_dead = "fister_dead" - maxHealth = 125 - health = 125 - butcher_results = list(/obj/item/stack/human_flesh = 2) - melee_damage_lower = 30 - melee_damage_upper = 30 - attack_verb_continuous = "punches" - attack_verb_simple = "punch" - attack_sound = 'sound/items/weapons/punch1.ogg' - combat_mode = TRUE - status_flags = CANPUSH - bloodpool = 5 - maxbloodpool = 5 - -/mob/living/basic/szlachta/tanker - name = "tanker" - desc = "The peak of abominable armor. Unbelievably undamagable..." - icon_state = "tanker" - icon_living = "tanker" - icon_dead = "tanker_dead" - maxHealth = 350 - health = 350 - butcher_results = list(/obj/item/stack/human_flesh = 4) - melee_damage_lower = 25 - melee_damage_upper = 25 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 7 - maxbloodpool = 7 - -/mob/living/basic/tzimisce_beast - name = "tzimisce beast form" - desc = "The peak of abominations armor. Unbelievably undamagable..." - icon = 'modular_darkpack/modules/deprecated/icons/64x64.dmi' - icon_state = "weretzi" - icon_living = "weretzi" - pixel_w = -16 - pixel_z = -16 - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - mob_size = MOB_SIZE_HUGE - speed = -0.55 - maxHealth = 575 - health = 575 - butcher_results = list(/obj/item/stack/human_flesh = 10) - melee_damage_lower = 35 - melee_damage_upper = 70 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 10 - maxbloodpool = 10 - -/mob/living/basic/bloodcrawler - name = "tzimisce blood form" - desc = "The peak of abominations. Unbelievably undamagable..." - icon = 'modular_darkpack/modules/deprecated/icons/mobs.dmi' - icon_state = "liquid" - icon_living = "liquid" - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - speed = 3 - butcher_results = list(/obj/item/stack/human_flesh = 1) - melee_damage_lower = 10 - melee_damage_upper = 10 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 20 - maxbloodpool = 20 - -/mob/living/basic/szlachta/hostile - faction = list(FACTION_HOSTILE) - -/mob/living/basic/szlachta/fister/hostile - faction = list(FACTION_HOSTILE) - -/mob/living/basic/szlachta/tanker/hostile - faction = list(FACTION_HOSTILE) - -/mob/living/basic/bloodcrawler - var/collected_blood = 0 - -/mob/living/basic/bloodcrawler/Move(atom/newloc, direct, glide_size_override) - . = ..() - - var/obj/structure/vampdoor/V = locate() in newloc - if(V?.lockpick_difficulty <= 10) - forceMove(get_turf(V)) - - for(var/obj/effect/decal/cleanable/blood/B in get_turf(newloc)) - collected_blood += B.bloodiness - to_chat(src, span_info("You sense blood entering your mass...")) - var/turf/T = get_turf(B) - T?.wash(CLEAN_SCRUB) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/objects.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/objects.dm deleted file mode 100644 index b6f8f00b4e64..000000000000 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/objects.dm +++ /dev/null @@ -1,46 +0,0 @@ -/obj/item/ground_heir - name = "bag of ground" - desc = "Boghatyrskaya sila taitsa zdies'..." - icon_state = "dirt" - icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - w_class = WEIGHT_CLASS_SMALL - -// Why is this NOT a floor type. -/obj/effect/decal/gut_floor - name = "gut floor" - icon = 'modular_darkpack/modules/walls/icons/floors.dmi' - icon_state = "tzimisce_floor" - -/obj/effect/decal/gut_floor/Initialize(mapload) - . = ..() - if(isopenturf(get_turf(src))) - var/turf/open/T = get_turf(src) - if(T) - T.slowdown = 1 - -/obj/effect/decal/gut_floor/Destroy() - . = ..() - var/turf/open/T = get_turf(src) - if(T) - T.slowdown = initial(T.slowdown) - -/obj/structure/chair/old/tzimisce - icon = 'modular_darkpack/modules/deprecated/icons/props.dmi' - icon_state = "tzimisce_stool" - -/obj/item/guts - name = "guts" - desc = "Just blood and guts..." - icon_state = "guts" - icon = 'modular_darkpack/modules/deprecated/icons/items.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - w_class = WEIGHT_CLASS_SMALL - -/obj/item/spine - name = "spine" - desc = "If only I had control..." - icon_state = "spine" - icon = 'modular_darkpack/modules/deprecated/icons/items.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - w_class = WEIGHT_CLASS_SMALL diff --git a/tgstation.dme b/tgstation.dme index ad592700b1bf..f3d51b7f90b9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7583,10 +7583,7 @@ #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\lasombra\creatures.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\lasombra\lasombra.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\malkavian\malkavian.dm" -#include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\tzimisce\crafting_recipes.dm" -#include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\tzimisce\creatures.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\tzimisce\needs_home_soil.dm" -#include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\tzimisce\objects.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\tzimisce\tzimisce.dm" #include "modular_darkpack\modules\vaults\code\drill.dm" #include "modular_darkpack\modules\vaults\code\keypad.dm" From 9d531ed5b58ff117796125597fdfb94ff7992ac1 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:35:34 +0200 Subject: [PATCH 042/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 138ed985ebfd..c3ba62ed155d 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -140,7 +140,7 @@ target.apply_damage(roll * 30, BRUTE, BODY_ZONE_CHEST) if(roll >= 5) target.visible_message(span_danger("[target]'s rib cage curves inwards grotesquely!"), span_danger("Your feel your ribcages curve inwards and pierce your heart!")) - target.adjust_blood_pool(-(target.bloodpool * 0.5)) // A vampire who scores five or more successes on the roll (...) cause the affected vampire to lose half his blood points. + target.adjust_blood_pool(-(round(target.bloodpool * 0.5))) // A vampire who scores five or more successes on the roll (...) cause the affected vampire to lose half his blood points. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 00df41a2d0bc68b1fc2ddfe619b8a64b13d2af3e Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:42:23 +0200 Subject: [PATCH 043/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index c3ba62ed155d..fae09b933947 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -13,7 +13,7 @@ /datum/discipline/vicissitude/post_gain() . = ..() - owner.faction |= VAMPIRE_CLAN_TZIMISCE + owner.add_faction(VAMPIRE_CLAN_TZIMISCE) ADD_TRAIT(owner, TRAIT_VICISSITUDE_KNOWLEDGE, DISCIPLINE_TRAIT) //////////////////////////////////////////////////////////////////////////////////////////// From d982ed506066bb55312785c066fa2990e044bb9b Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:24:49 +0200 Subject: [PATCH 044/104] awawwawa --- .../modules/powers/code/discipline/vicissitude/appearances.dm | 2 +- .../powers/code/discipline/vicissitude/shapeshifting.dm | 4 +++- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm index 875caff0a9aa..6129a9520159 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm @@ -138,7 +138,7 @@ if(!ishuman(owner)) return - add_new_profile(owner) + add_new_profile(owner, TRUE) /* * Restores the appearance of the changeling to the original DNA. diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index f5151a611b9a..47f6690554f9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -67,7 +67,7 @@ return TRUE add_profile_save(target) - if((target.pulledby == owner && (owner.grab_state != GRAB_AGGRESSIVE)) || (target == owner)) + if(((target.pulledby == owner) && (owner.grab_state >= GRAB_AGGRESSIVE)) || (target == owner)) switch(chosen_option) if(CHANGE_HAIR) change_hair(target) @@ -85,6 +85,8 @@ change_height(target) if(CHANGE_APPEARANCE) transform_mob(target) + if(SAVE_APPEARANCE) + add_new_profile(target) else to_chat(owner, span_danger("You need to have a firm grip on [target]!")) return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index fae09b933947..cfde4406428b 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -27,8 +27,8 @@ /datum/discipline_power/vicissitude/post_gain() if(!shapeshift_ability) shapeshift_ability = new(owner) - shapeshift_ability.Grant(owner) - shapeshift_ability.create_initial_profile() + shapeshift_ability.Grant(owner) + shapeshift_ability.create_initial_profile() ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 2ff810b26f92f106228f99cc05e4d7cf633d6e64 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:42:14 +0200 Subject: [PATCH 045/104] rahhh --- .../discipline/vicissitude/appearances.dm | 345 ------------------ .../discipline/vicissitude/shapeshifting.dm | 28 +- .../discipline/vicissitude/vicissitude.dm | 3 +- tgstation.dme | 1 - 4 files changed, 5 insertions(+), 372 deletions(-) delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm deleted file mode 100644 index 6129a9520159..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/appearances.dm +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Create a new changeling profile datum based off of [target]. - * - * target - the human we're basing the new profile off of. - * protect - if TRUE, set the new profile to protected, preventing it from being removed (without force). - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/create_profile(mob/living/carbon/human/target, protect = 0) - var/datum/changeling_profile/new_profile = new() - - target.dna.real_name = target.real_name //Set this again, just to be sure that it's properly set. - - // Set up a copy of their DNA in our profile. - var/datum/dna/new_dna = new target.dna.type() - target.dna.copy_dna(new_dna) - new_profile.dna = new_dna - new_profile.name = target.name - new_profile.protected = protect - - new_profile.age = target.age - new_profile.physique = target.physique - new_profile.athletics_level = target.mind?.get_skill_level(/datum/skill/athletics) || SKILL_LEVEL_NONE - - // Grab the target's quirks. - for(var/datum/quirk/target_quirk as anything in target.quirks) - LAZYADD(new_profile.quirks, new target_quirk.type) - - // Clothes, of course - new_profile.underwear = target.underwear - new_profile.underwear_color = target.underwear_color - new_profile.undershirt = target.undershirt - new_profile.socks = target.socks - - // Grab skillchips they have - new_profile.skillchips = target.clone_skillchip_list(TRUE) - - // Get any scars they may have - for(var/datum/scar/target_scar as anything in target.all_scars) - LAZYADD(new_profile.stored_scars, target_scar.format()) - - // Make an icon snapshot of what they currently look like - var/datum/icon_snapshot/entry = new() - entry.name = target.name - entry.icon = target.icon - entry.icon_state = target.icon_state - entry.overlays = target.get_overlays_copy(list(HANDS_LAYER, HANDCUFF_LAYER, LEGCUFF_LAYER)) - new_profile.profile_snapshot = entry - - // Grab the target's sechut icon. - new_profile.id_icon = target.wear_id?.get_sechud_job_icon_state() - - var/list/slots = list("head", "wear_mask", "wear_neck", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store") - for(var/slot in slots) - if(!(slot in target.vars)) - continue - var/obj/item/clothing/clothing_item = target.vars[slot] - if(!clothing_item) - continue - new_profile.name_list[slot] = clothing_item.name - new_profile.appearance_list[slot] = clothing_item.appearance - new_profile.flags_cover_list[slot] = clothing_item.flags_cover - new_profile.lefthand_file_list[slot] = clothing_item.lefthand_file - new_profile.righthand_file_list[slot] = clothing_item.righthand_file - new_profile.inhand_icon_state_list[slot] = clothing_item.inhand_icon_state - new_profile.worn_icon_list[slot] = clothing_item.worn_icon - new_profile.worn_icon_state_list[slot] = clothing_item.worn_icon_state - new_profile.exists_list[slot] = 1 - - new_profile.voice = target.voice - new_profile.voice_filter = target.voice_filter - - return new_profile - -/* - * Add a new profile to our changeling's profile list. - * Pops the first profile in the list if we're above our limit of profiles. - * - * new_profile - the profile being added. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/add_profile(datum/changeling_profile/new_profile) - if(stored_profiles.len > max_appearances) - if(!push_out_profile()) - return - - if(!first_profile) - first_profile = new_profile - current_profile = first_profile - - stored_profiles += new_profile - -/* - * Create a new profile from the given [profile_target] - * and add it to our profile list via add_profile. - * - * profile_target - the human we're making a profile based off of - * protect - if TRUE, mark the new profile as protected. If protected, it cannot be removed / popped from the profile list (without force). - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/add_new_profile(mob/living/carbon/human/profile_target, protect = FALSE) - var/datum/changeling_profile/new_profile = create_profile(profile_target, protect) - add_profile(new_profile) - return new_profile - -/* - * Remove a given profile from the profile list. - * * - * profile_target - the human we want to remove from our profile list (looks for a profile with a matching name) - * force - if TRUE, removes the profile even if it's protected. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/remove_profile(mob/living/carbon/human/profile_target, force = FALSE) - for(var/datum/changeling_profile/found_profile as anything in stored_profiles) - if(profile_target.real_name == found_profile.name) - if(found_profile.protected && !force) - continue - stored_profiles -= found_profile - qdel(found_profile) - -/* - * Removes the highest changeling profile from the list - * that isn't protected and returns TRUE if successful. - * - * Returns TRUE if a profile was removed, FALSE otherwise. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/push_out_profile() - var/datum/changeling_profile/profle_to_remove - for(var/datum/changeling_profile/found_profile as anything in stored_profiles) - if(!found_profile.protected) - profle_to_remove = found_profile - break - - if(profle_to_remove) - stored_profiles -= profle_to_remove - return TRUE - return FALSE - -/* - * Create a profile based on the changeling's initial appearance. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/create_initial_profile() - if(!ishuman(owner)) - return - - add_new_profile(owner, TRUE) - -/* - * Restores the appearance of the changeling to the original DNA. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/admin_restore_appearance(mob/admin) - if(!stored_profiles.len || !iscarbon(owner)) - to_chat(admin, span_danger("Resetting DNA failed!")) - return - - var/mob/living/carbon/carbon_owner = owner - first_profile.dna.copy_dna(carbon_owner.dna, COPY_DNA_SE|COPY_DNA_SPECIES) - carbon_owner.real_name = first_profile.name - carbon_owner.updateappearance(mutcolor_update = TRUE) - carbon_owner.domutcheck() - -/* - * Transform the currentc hangeing [user] into the [chosen_profile]. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/transform(mob/living/carbon/human/user, datum/changeling_profile/chosen_profile) - var/static/list/slot2slot = list( - "head" = ITEM_SLOT_HEAD, - "wear_mask" = ITEM_SLOT_MASK, - "wear_neck" = ITEM_SLOT_NECK, - "back" = ITEM_SLOT_BACK, - "wear_suit" = ITEM_SLOT_OCLOTHING, - "w_uniform" = ITEM_SLOT_ICLOTHING, - "shoes" = ITEM_SLOT_FEET, - "belt" = ITEM_SLOT_BELT, - "gloves" = ITEM_SLOT_GLOVES, - "glasses" = ITEM_SLOT_EYES, - "ears" = ITEM_SLOT_EARS, - "wear_id" = ITEM_SLOT_ID, - "s_store" = ITEM_SLOT_SUITSTORE, - ) - - var/datum/dna/chosen_dna = chosen_profile.dna - user.real_name = chosen_profile.name - user.underwear = chosen_profile.underwear - user.underwear_color = chosen_profile.underwear_color - user.undershirt = chosen_profile.undershirt - user.socks = chosen_profile.socks - user.age = chosen_profile.age - user.physique = chosen_profile.physique - user.mind?.set_level(/datum/skill/athletics, chosen_profile.athletics_level, silent = TRUE) - user.voice = chosen_profile.voice - user.voice_filter = chosen_profile.voice_filter - - chosen_dna.copy_dna(user.dna, COPY_DNA_SE) - - for(var/obj/item/bodypart/limb as anything in user.bodyparts) - limb.update_limb(is_creating = TRUE) - - user.updateappearance(mutcolor_update = TRUE) - user.domutcheck() - - // Get rid of any scars from previous Changeling-ing - for(var/datum/scar/old_scar as anything in user.all_scars) - if(old_scar.fake) - user.all_scars -= old_scar - qdel(old_scar) - - // Now, we do skillchip stuff, AFTER DNA code. - // (There's a mutation that increases max chip complexity available, even though we force-implant skillchips.) - - // Remove existing skillchips. - user.destroy_all_skillchips(silent = FALSE) - - // Add new set of skillchips. - for(var/chip in chosen_profile.skillchips) - var/chip_type = chip["type"] - var/obj/item/skillchip/skillchip = new chip_type(user) - - if(!istype(skillchip)) - stack_trace("Failure to implant changeling from [chosen_profile] with skillchip [skillchip]. Tried to implant with non-skillchip type [chip_type]") - qdel(skillchip) - continue - - // Try force-implanting and activating. If it doesn't work, there's nothing much we can do. There may be some - // incompatibility out of our hands - var/implant_msg = user.implant_skillchip(skillchip, TRUE) - if(implant_msg) - // Hopefully recording the error message will help debug it. - stack_trace("Failure to implant changeling from [chosen_profile] with skillchip [skillchip]. Error msg: [implant_msg]") - qdel(skillchip) - continue - - // Time to set the metadata. This includes trying to activate the chip. - var/set_meta_msg = skillchip.set_metadata(chip) - - if(set_meta_msg) - // Hopefully recording the error message will help debug it. - stack_trace("Failure to activate changeling skillchip from [chosen_profile] with skillchip [skillchip] using [chip] metadata. Error msg: [set_meta_msg]") - continue - - //vars hackery. not pretty, but better than the alternative. - for(var/slot in slot2type) - if(istype(user.vars[slot], slot2type[slot]) && !(chosen_profile.exists_list[slot])) // Remove unnecessary flesh items - qdel(user.vars[slot]) - continue - - if((user.vars[slot] && !istype(user.vars[slot], slot2type[slot])) || !(chosen_profile.exists_list[slot])) - continue - - if(istype(user.vars[slot], slot2type[slot]) && slot == "wear_id") // Always remove old flesh IDs - so they get properly updated. - qdel(user.vars[slot]) - - var/obj/item/new_flesh_item - var/equip = FALSE - if(!user.vars[slot]) - var/slot_type = slot2type[slot] - equip = TRUE - new_flesh_item = new slot_type(user) - - else if(istype(user.vars[slot], slot2type[slot])) - new_flesh_item = user.vars[slot] - - new_flesh_item.appearance = chosen_profile.appearance_list[slot] - new_flesh_item.name = chosen_profile.name_list[slot] - new_flesh_item.flags_cover = chosen_profile.flags_cover_list[slot] - new_flesh_item.lefthand_file = chosen_profile.lefthand_file_list[slot] - new_flesh_item.righthand_file = chosen_profile.righthand_file_list[slot] - new_flesh_item.inhand_icon_state = chosen_profile.inhand_icon_state_list[slot] - new_flesh_item.worn_icon = chosen_profile.worn_icon_list[slot] - new_flesh_item.worn_icon_state = chosen_profile.worn_icon_state_list[slot] - - if(istype(new_flesh_item, /obj/item/changeling/id) && chosen_profile.id_icon) - var/obj/item/changeling/id/flesh_id = new_flesh_item - flesh_id.hud_icon = chosen_profile.id_icon - - if(equip) - user.equip_to_slot_or_del(new_flesh_item, slot2slot[slot], indirect_action = TRUE) - if(!QDELETED(new_flesh_item)) - ADD_TRAIT(new_flesh_item, TRAIT_NODROP, CHANGELING_TRAIT) - - for(var/stored_scar_line in chosen_profile.stored_scars) - var/datum/scar/attempted_fake_scar = user.load_scar(stored_scar_line) - if(attempted_fake_scar) - attempted_fake_scar.fake = TRUE - - user.regenerate_icons() - user.name = user.get_visible_name() - current_profile = chosen_profile - -/* - * Get the corresponding changeling profile for the passed name. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/get_dna(searched_dna_name) - for(var/datum/changeling_profile/found_profile as anything in stored_profiles) - if(searched_dna_name == found_profile.name) - return found_profile - -/* - * Checks if we have a changeling profile with the passed DNA. - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/has_profile_with_dna(datum/dna/searched_dna) - for(var/datum/changeling_profile/found_profile as anything in stored_profiles) - if(searched_dna.is_same_as(found_profile.dna)) - return TRUE - return FALSE - - -//Change our DNA to that of somebody we've absorbed. -/datum/action/cooldown/mob_cooldown/shapeshift/proc/transform_mob(mob/living/carbon/human/user) - var/datum/changeling_profile/chosen_prof = select_dna() - if(!chosen_prof) - return FALSE - if(!IN_GIVEN_RANGE(owner, target, range)) - return FALSE - transform(user, chosen_prof) - SEND_SIGNAL(user, COMSIG_CHANGELING_TRANSFORM) - return TRUE - -/** - * Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/select_dna() - var/mob/living/carbon/user = owner - if(!istype(user)) - return FALSE - - var/list/disguises = list() - for(var/datum/changeling_profile/current_profile as anything in stored_profiles) - var/datum/icon_snapshot/snap = current_profile.profile_snapshot - var/image/disguise_image = image(icon = snap.icon, icon_state = snap.icon_state) - disguise_image.overlays = snap.overlays - disguises[current_profile.name] = disguise_image - - var/chosen_name = show_radial_menu(user, user, disguises, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 40, require_near = TRUE, tooltips = TRUE) - if(!chosen_name) - return FALSE - - var/datum/changeling_profile/prof = get_dna(chosen_name) - return prof - -/** - * Checks if we are allowed to interact with a radial menu - * - * Arguments: - * * user The carbon mob interacting with the menu - */ -/datum/action/cooldown/mob_cooldown/shapeshift/proc/check_menu(mob/living/carbon/user) - if(!istype(user)) - return FALSE - return TRUE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index 47f6690554f9..1599ce708662 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -5,9 +5,7 @@ #define CHANGE_EYES "Change Eyes" #define CHANGE_RACE "Change Race" #define CHANGE_HEIGHT "Change Height" -#define CHANGE_APPEARANCE "Change Appearance" -#define SAVE_APPEARANCE "Save Appearance" -#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT, CHANGE_APPEARANCE, SAVE_APPEARANCE) +#define CHOICE_OPTIONS list(CHANGE_HAIR, CHANGE_BEARD, CHANGE_SEX, CHANGE_EYES, CHANGE_NAME, CHANGE_RACE, CHANGE_HEIGHT) /datum/action/cooldown/mob_cooldown/shapeshift owner_has_control = FALSE @@ -45,6 +43,7 @@ update_choices() /datum/action/cooldown/mob_cooldown/shapeshift/Destroy() + first_profile = null current_profile = null return ..() @@ -62,11 +61,6 @@ if(!chosen_option) return TRUE - if(chosen_option == SAVE_APPEARANCE) - if(target == owner) - return TRUE - add_profile_save(target) - if(((target.pulledby == owner) && (owner.grab_state >= GRAB_AGGRESSIVE)) || (target == owner)) switch(chosen_option) if(CHANGE_HAIR) @@ -83,10 +77,6 @@ change_race(target) if(CHANGE_HEIGHT) change_height(target) - if(CHANGE_APPEARANCE) - transform_mob(target) - if(SAVE_APPEARANCE) - add_new_profile(target) else to_chat(owner, span_danger("You need to have a firm grip on [target]!")) return TRUE @@ -204,15 +194,14 @@ return TRUE /datum/action/cooldown/mob_cooldown/shapeshift/proc/change_name(mob/living/carbon/human/target) - var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", target.name, MAX_NAME_LEN)) - if(!newname || newname == target.name) + var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", target.real_name, MAX_NAME_LEN)) + if(!newname || newname == target.real_name) return FALSE if(!IN_GIVEN_RANGE(owner, target, range)) return FALSE if(!do_after(owner, delay = 1 TURNS, target = target)) return FALSE target.real_name = newname - target.name = newname if(target.dna) target.dna.real_name = newname if(target.mind) @@ -268,13 +257,6 @@ to_chat(owner, span_notice("You finish altering the height of [target].")) return TRUE -/datum/action/cooldown/mob_cooldown/shapeshift/proc/add_profile_save(mob/living/carbon/human/target) - if(!IN_GIVEN_RANGE(owner, target, range)) - return FALSE - if(!has_profile_with_dna(target.dna)) - add_new_profile(target) - return TRUE - #undef CHANGE_HAIR #undef CHANGE_BEARD #undef CHANGE_SEX @@ -283,5 +265,3 @@ #undef CHANGE_RACE #undef CHANGE_HEIGHT #undef CHOICE_OPTIONS -#undef CHANGE_APPEARANCE -#undef SAVE_APPEARANCE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index cfde4406428b..e6e5e2ea6390 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -28,7 +28,6 @@ if(!shapeshift_ability) shapeshift_ability = new(owner) shapeshift_ability.Grant(owner) - shapeshift_ability.create_initial_profile() ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -52,7 +51,7 @@ /datum/discipline_power/vicissitude/fleshcrafting name = "Fleshcrafting" - desc = "Shapeshift others." + desc = "Shapeshift yourself or others." level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE diff --git a/tgstation.dme b/tgstation.dme index 0df75fffebab..39d8608c48cd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7411,7 +7411,6 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\paths\lure_of_flames.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\appearances.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" From 789b1fd880fde620bc70e8af47735ca128cdf9b6 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:44:03 +0200 Subject: [PATCH 046/104] Update vicissitude.dm --- .../code/discipline/vicissitude/vicissitude.dm | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index e6e5e2ea6390..88e52dc5b333 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -122,14 +122,10 @@ var/obj/item/bodypart/arm/left/l_arm = target.get_bodypart(BODY_ZONE_L_ARM) var/obj/item/bodypart/leg/right/r_leg = target.get_bodypart(BODY_ZONE_R_LEG) var/obj/item/bodypart/leg/left/l_leg = target.get_bodypart(BODY_ZONE_L_LEG) - if(r_arm) - r_arm.drop_limb() - if(l_arm) - l_arm.drop_limb() - if(r_leg) - r_leg.drop_limb() - if(l_leg) - l_leg.drop_limb() + r_arm?.drop_limb() + l_arm?.drop_limb() + r_leg?.drop_limb() + l_leg?.drop_limb() new /obj/item/stack/human_flesh/twenty(target.loc) new /obj/item/guts(target.loc) new /obj/item/spine(target.loc) From 0f186f002b1acf200f2a5b8a597d19f7f0484149 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:48:30 +0200 Subject: [PATCH 047/104] Update vicissitude.dm --- .../powers/code/discipline/vicissitude/vicissitude.dm | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 88e52dc5b333..bdbad8cc56cf 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -147,7 +147,7 @@ violates_masquerade = TRUE check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE target_type = TARGET_SELF - // vitae_cost = 2 + vitae_cost = 2 toggled = FALSE aggravating = TRUE cooldown_length = 1 TURNS @@ -155,27 +155,21 @@ var/datum/action/cooldown/spell/shapeshift/zulo/zulo_form /datum/discipline_power/vicissitude/horrid_form/post_gain() - /* if(!zulo_form) zulo_form = new(owner) zulo_form.Grant(owner) - */ /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() - to_chat(owner, span_notice("Not implemented yet, apologies!")) - /* owner.Stun(2 SECONDS) owner.do_jitter_animation(50) zulo_form.Activate(owner) - */ /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() - /* owner.Stun(2 SECONDS) owner.do_jitter_animation(50) - */ + zulo_form.unshift_owner() ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 2dcee96a389a064c4e11ab448819618acebe914b Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:54:58 +0200 Subject: [PATCH 048/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index bdbad8cc56cf..be3070093340 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -162,13 +162,13 @@ /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() owner.Stun(2 SECONDS) - owner.do_jitter_animation(50) + owner.do_jitter_animation(5 SECONDS) zulo_form.Activate(owner) /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() owner.Stun(2 SECONDS) - owner.do_jitter_animation(50) + owner.do_jitter_animation(5 SECONDS) zulo_form.unshift_owner() ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From c479152aff7e9ef428386e7f7479026f4eca445f Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:09:49 +0200 Subject: [PATCH 049/104] awawa --- .../discipline/vicissitude/preferences.dm | 18 ++++++++++++++ .../discipline/vicissitude/vicissitude.dm | 2 +- .../modules/powers/icons/zulo_forms.dmi | Bin 9653 -> 164752 bytes .../code/preferences/clan.dm | 23 +++++++++--------- tgstation.dme | 1 + 5 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm new file mode 100644 index 000000000000..eff8fad073d2 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm @@ -0,0 +1,18 @@ +/datum/preference/choiced/vampire_clan + savefile_key = "vampire_clan" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_FEATURES + priority = PREFERENCE_PRIORITY_WORLD_OF_DARKNESS + main_feature_name = "Clan" + relevant_inherent_trait = TRAIT_VICISSITUDE_KNOWLEDGE + must_have_relevant_trait = TRUE + should_generate_icons = TRUE + +/datum/preference/choiced/vampire_clan/init_possible_values() + return assoc_to_keys() + +/datum/preference/choiced/vampire_clan/icon_for(value) + return uni_icon('modular_darkpack/modules/vampire_the_masquerade/icons/vampire_clans.dmi', ) + +/datum/preference/choiced/vampire_clan/apply_to_human(mob/living/carbon/human/target, value) + target.set_clan(value, TRUE) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index be3070093340..43fb2a35a292 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -185,7 +185,7 @@ /datum/discipline_power/vicissitude/bloodform/activate() . = ..() - to_chat(owner, span_notice("Not implemented yet, apologies!")) + /datum/discipline_power/vicissitude/bloodform/deactivate() . = ..() diff --git a/modular_darkpack/modules/powers/icons/zulo_forms.dmi b/modular_darkpack/modules/powers/icons/zulo_forms.dmi index 329d9eedc3159d765f85b6942f74fb6db170a8ee..ea15bc0e89b57004db046cb5772e3dafd9f6d52e 100644 GIT binary patch literal 164752 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

Tc%6N2eA)D4s`J&C1u#Bhh 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

&KI!8vQTK85 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 ZDIrqrZlp>W3lZ>oq^1KdSFsNL{{V!90?hyb literal 9653 zcmc(lRa8~c_wV?iNiGW(bc z%K-3pSfxRTSCe;wSBWld`D^!AZ8|L$4qkpPxew92j5S5%d8o0RnOl&gTR^sGP?2Lu zg?&I_xGP`NpkrzbV;2Cr@0k1+v)04`fZXd#_Mx(JO2_i+lx2jUpx|vAk*{uyb@U}PT?`?XE zJVsj*z9Y(VI+yU5tF5n}`6HTsOS_CX6lwzxW63nnR8D}$8n&43d{-MB&d#C>{o-dA z*F7H2DzDFmw2hSrqp<)!nEiPdR2r0r4u=*n^;ZbaHSpSeQtig1|?#0Qtm$Qv02hfgpk8 zNV(`8$~=i|G9bIv`B?#vmsXx;u2MPxiYh(1eL| z)KuAi_ht(zfrs6ojpn1Kx%IrM&Pn&A?O3g3Wh${8s-E^<2efq0=`^=1HBKh}UBAy4 zAssaCms6wlz^$ly2g;-Ei`y8+HgO9HeDaGN?Q>W|Jl(kxj2!PJ`X%}yU~Jx&XVyt_ z4I0PZA>bR%C~XDNya&UHSDvEll#!s366g{VJZ;8QtcgBF7oH!o*zJC~2g-uD(%11Z zBRa8u+}{>YWIN2n&=!um@6Gfnj)W>)KM&l0dG^!qVCO{i6)J=(xRy_4(bciJ$Q`%{ zwamsnAuaw(Pb>arFr0TPTtg2RM7%I&Tw>f53o-$x?@Vvcb2B6{;dd+h_^dZ{NyFcC zBt+F>$aj}gM)9m1Fl*o7JDsBQrX1jXmn00Nw>wo<=y=Ys2LnUGZmT67rPbLNTcx=d9%}qfN`a3>m+-wyz?a;;VEPydhk^+;mlo z-qU%t$wgeN(%wD4Q|QCz3xw06n(xdRn%et#)It1RVbyBZi4l&pk`Rd4+aIbljeGsO-S?4DcOlAQnH@eZQ|~b`JZ6 z#eB&?6OUlflTnla14?u^p>(%|pBN_85OkL|@geGjOAJt$RJD(wu!Bw4yE}HRDDvU0Mmm%pQ7Vo zuU0Dt{Q?5NzHGx}wF8FMK?oOnAv*rlaOIK2&QZUsz(2g2Y;<=&4w>$3xITXjY^m4X zs+W2$@m&c}K-Xun)Ds{8n3UKsOPMg{81xN6^SCfD;^y{ugRw*{d%wKI2ISp7vXMor4wz%z2P!2;k1H3D8cw?bMf~ZChwf$Rr)dkiR@xmX4^{7Q>@XqGcfq2k z4>AUQz-33-W;HRV{7pDRMgYtJI(Vf533PBMea9}%&k{l$nDMOZkoNaA+|dd2^?uj( z+lg%-4r^yjDyA9$5Z}M04A!5>>Y-D_m05do&tQuPmTnd?2VN+?Y^$8-AxuS+ys=w* ze63*df+8c#)G*3WGnCHl#LjF}^mS4?#})do?TIt=@8%WLmiHZS&Oo}4lJmEprqKJP z9u-J`Z`z{uTldIG_=W%n-ta^prpnRI_kn8IMqHQ<&9pLP@%Yyugbd>JkixbQk3EJ$yc(}Ri#6%-HNUj?h-^L>q`P>%h1L9Ra}J`tG$X*L;DS22KNen7wM7x8N0&p(>bgxg3sD+nz}}D0m}42 zXkO$+pVL^=xhy?L9ll~#dr6Jt6lCDkNIcW1aq(hblDlv^Je!c=`p`P`UV)SKgj0{vYv7BdJg>~cPF-|t5Uu8ORMV?@h+-SjdArR=w`x%_$O*-A3N zZYTjmTKSLlkx5s^rtj+5`i`1yWg3z;yb2PAoL9RJO=kxDRW`Fv51JuM$qfh4s;mZL z(oU?zlU@a1QQ-d8dg59&bSiQH3MPpr6$e4d1}k%yQ6h9DFY&=(d&%}6&?&XpBJa%*FU5BL(|0HR!xzi9n{1zZM(qtTUBY6%~$&m z46e8wT;}=ga)RC%nXJ^5FScPV>IRtUrCj~+eINUWl@L)Mh4`CsBD{#v#SH$KuuMdk z99z{1E@Lj|0-F~pp#oBj20`Fdkn7ejjbpt#b>M*9A6X&|TG#a+jwa*UJ~NBnRJO_( z&F%C)H1+HRmTB>qjkaWtnExu#Ah*ibMhjE2k~j5kVte<2XA!dt8v-8VZGp)|Xo5TC zuC*`-;hawqh|em52S;OU83#1Q#Gb-&F<4p#u;mwq{as>lxTC(XK+F>g3)qcxuNEvx z2h{W_UCY_=x9$%e_b;dfQv$-XT+K@_QqPs`dwYgo+-?yOqZw7Iu;_~heYN+yu{xX` zF6nnzd--)!jU)@8qnUmaG-EU?jX7*Kll@YhPxv^1>BO#89k73+A@#H@a$F=AD<#t9 z?o5qZk5A^C70Spe$%cpLF*DcK?`%1XU3Y}18itfU5~522!!Wa_fR~$VJ2vzs zoqij@&D#kBfD;O?gIle4@=^{?>C*>SR@6l_?Nq|WAi%acx0VJ2_8?q$_B;J7^{38XGZzld zZbFpD4-JUE$_AAHk3X|W`QXu=&3qF};6702r6z)lV|__!6z>YaEtY}&V3x)H4d)i< z43=&~lAv72Ol0ZlsBL+Bd3M~xeDDNkzg{u@YD+3VoRCnU*UT>K zC?-IFVpZ)qr*YG6#`$?JV~`oqRwWL`5~)J%4_b0#SESQxihhXHos4CaZ&0M&&oE&_ zQA4Rnkjv3)O&M|oQ#JFZ`qD9?LL`yXN6!&WTXVCr0Zk#h@+D(c?aHEyOqlQUx#(YR z3m8*EPLY~p9`ZP#qyb_&k>^zYULUooD^f>Hr92s^hNL0G9kk(qbokg)4(X7AKRXZt z!#4lu*=F0b8<1 zuFbock<%0aEz&EDy05^i;YDJtLj{;DM_{3$i0wjR_9vGyt$vGm){-w{n1?|PvO#jh zk_SY~xNY;Ih6e==t>rmxvJ@+vsr)XF!nlE;^LeA^n;YDV`RYN<_D4ZCT=6rlJ}sK{ z>G<5EPg|^;$a!@S3(81-aDQeNxcE3G_E&=IW;=ZwabF+hTN!=YR{^{|FmANtJO3Ff z-S6g#HvF#kSr-UKuz$bQ!JFbrc55kmuq{+NYJ5KwcVETY;I&-uyF&*)FcKFTR08q1 zK}%D@I`FU$uO?~&E`rBy5!dF2dU|?-W#t@cAgO4;tXU~&7blp1NfnydIflQse5=ad zl9fxiPmPC#*o}T74|ZxiaP;A-@~5gV%1q8YxxZaW$&Lu!LyMD?sT1^E4$Gfh36$udDa21CC;< z<4Gip+}i8tJQ?|iYgFWczr46luYM$W-<9Y`nCmK6Os%qxwIDsNE%ks_b9c{J_C^C5 z0YtB2EicX1{zM-7gi3?pKoH>q8`X{aOChAJI3cWWuE8{61ZrMreKsCdR~} zJlQ3-fzfJV{WN?!Rlh=cM{)!Z`tL^%EugVAvOLvt>j8!nRrPp2#p~h?GrQMXrMe_- zsC4vPB)Rh9N)f-p>C8ns)p5!!^W2eW0FDd+TT_W*kzyzq{b`ho)@OOokt{v@hmNT` z^G{p8m@Q8OINABtWC9z>s%6^?IrT-YemKEF^R|DcwEtq`N}Nq3?qwhjDC2CEIDV@Z z>$mxbgTx6;lY(}7wytba_&$jW23&x7RJ+LFYPeo2>f_Zq5w*r}J^p-D@+K7duzXNg z`mWNT$maf%k^@|K^M@X;tQtvzFu7*agcx1+=Wff|7N-34w;esp5`Jna0#5#9pdKXh z!dX?j>lQv-$T-;N&-ba-JFwYzHT443#SkbbQI}B`57aab+B-Z>prB6Ns?;Za-x=%p zIhm;E#U$o9<>SKVh;3Van)&s6>tQyNwjaL1PRWvuFPV}amUiRs|7hv%ydyS4HY#Vk z)tTrsI1WE2Cki(tqhF%GBPj->mtk5GigK3%0@m-J=wt7B@Dmc@F~Mw_M%RB0i1N@| zUcHJS{emA*Fy@aFGT>dnv2~v*)~+Mg@W%S2pu%m0jg+MnunMo{whfv6c8|wuh&|nz z`SA`kiD4DV{HR~78g|v3eSgj$G0Yw{=$Z=0dY1HOT!>dlkbE@?$LjVM)*JDR09~W@ zAoIa4`2gtVY!=6Mi4IjutwSQ&9)}4k^>GlB&oSgivyWe`1p)o?gydE5K_W2Vp zK7|s4VT&<#j8-WBick1U7~b{SH249WL3=rCFDmYRkT~lyucbe{A*Bi4In~P}Dr-77 zdXV&vEUS(6Fa`9a5+uD=n=;!oEV;>PhYS>me$jVE4Rn4iFXGL2{ZZkF_G>M6#6}P@UhSmT2~n?Qp~kenz$g&ekbsUxAEMt&WkS=AT&HpBux7L8)% z5&uYOyim94CS~MG>~5%jI?p@JKjGV)nY`37_+>yrFA8Z&c#puk>xPBWTYhf z*Pa)IbsXrABq75rA;G&w+)^P8zvmKbaupALRz)y$skvLte#|_#T%Z;AaDMfw`Tn&x z(!__OIW(0Y9ZjK>GJeVxrE#pm#BW*ABWSnA8*JVs2W9O_J)dCg3~K^W_Pgj;nKpsu#=?;(&bTLKFT+N!Nk6ixT#vgIH`C9!x;4#+28gk61{=rK7{RfR<+ahV`P~tE5 z|7a)6CHZd7OFFDR+op5dH#BZ0j_t~7XFG>7p;EfAm%H|yw>ZJYqJ54Z?69F=_mj9O z>XF34huhkW7YZo$Y%^g+TasB#k50NC z@Uopf1Sfe_X$ICp6;JzwpE>TIO^CV&y#=v{#=&2og%}bAj_u6gCE7`$h#l@aU)6+B zWS>(NHZP#D-?0}j`)f0H3LVxa-zy&}zKe-b0$ruRduzc@79F4P2!7tpz9W(8gp^}* zuEqDqMFDB74hTLHP`bZngs#9DqvJG9yA-VE$(iFsmVaBF198uOU`Wd3HDZYyTU;72 z_Tqrro$6U>ib8p%z;oH98kdbRS;O`~)!Y7vOc76a`|M1e*HVQkpJlJvzVp#bLFIA5 zOoMaVXj7QH`R}kS<}8xThEUtMBswT1q`OVJis<0l22I)DVe?4ThYjkEh;bp(V^a!t-TGxZ<$n-*o3R(h@CK7rEgWQ0h_v1$gtSr;qUF`B8h#V$S6%dwk@VTT1>V1jB?6D|LEEM#C-^(By*eXQ?Z7=1yX%QRH$jJO| z^iDV%gAQfI!~ta)lu#Gv+(U*Jt0Hsb@4e~_!T9x;E5excLd>MGyDVlpARO?vwmi$n zL0QhY$xf&h^7arbddeSJ9sxIIZW?>a^fnXJ%~nWO=CM?d@Q1*B5EJ zF36MovOrRdnJq68DM)y+!~aBXe4(IYg-hefbD@8@Eqd+{pZd);48wR#PjwBC0YU`t zou5aZD?vhcPMf3DNjFcwgq61udi!>Pkwl}d^@;~iL!Z9zB1fDNkA!%zsGTTi4-M%>hBB7*QDxU?X3St+q3>)7N%}rB-5KFTE+O8OWN7 zThC2fVMMU>hI9WNeK!O=L`G-xa<#w#F21ss9<+VP{JOk+;#!QhYddnPzLvn$$0I#3 z5v~K&VNEP6Ius?hw`uWH@9Ne}FIp^s(*EB_eMb6Uq?Sf~^PJgvQZTGQfnd8TC7I;M zj58Tn@t;gy&qiex|vHgqdI|SqFOLpvviA)Ar)?gLv z6e@=Qov7cgV2l`N{%wnxgn|u;bHI*OzTOa9(iGcGen&3Afx zTKLFjXoHPqRJj~Ldc1%xwz%QEAM4)bcOF0tA)klN?u3ooP85}AI1w`coWAe) zj2VhroR2sk$Ubffy>ZgC4fIuKfr7(79_dlO7PZV&#k`vMfSbtKT-bW|dH}hB3bX8h zLs%!t#X@94NDSem1YbeXg>4e4SW#SaJUSlw((=!|NLa9{g~oU`Vr_KkEMIw%#0c-V z$8}t&6bWMbQ}mwm;=p;%sj-(7zeVA}M$@y1U^bi@Uu+wJ%YDjXVPnD6*3exAfrJRc zq%a8xC>)ac!Y~{yu4d*j%@6-8(poRILP{LtLW!*^Loh6zU>DMfB`E)yeC9Me#q~r#Y`ABp)jn@tO3g=~?_u`bRK(kb*WZ`PJ^Vzf% zWKpj%>!x1HhSN&N4VDB2i3j=C9nc&m)9Op$-EVJiN7mLx@Y210yyWmt5DY>3-cs^V z&s%g9Xx}V%KbA7u7cpAIWk>dMu-aZ6UTo0L;BgQ;k|jN5-Nr*ag^)&LL>nf?kaJrw zkP{>gZ&afME9S5Jjg1IL(tS^}ZRt!dDK`j&=CtV<{^ZMcjp-H;2wdlc~*IB<-6@bGfsbHos~gf}qs<)~;+n;OFbLv^KT3VQGBb+bzSned<}c;H+GaE?o`g02U8zUvMq##T_p*>pI$C% zqei(A-w>3P!iEWNbN|Wn$r>URN!(=kT~%nR0s; zc}B5t20jnkCGTAQj|~;fM7ooa53_IcLs3Xy2pROlq1gQ!pqG9yLB;R2f0>v37p*N* zI@nh1g`BnT9>`OF`DX2h6lz@xUuz+QeR)n%{_5yn+>L#u9LGuOw>iK(>KK7#a^t5`W5_5mp`UKIMr8s4usc5^2 z*zw3s1^MHua9`ETw8>Qi6YJVqi1PY>Jd7V&eNB;oRo@syaiWySRZaspVp6a8g1s&w zLSLoc^{J%iw zcRTicq!V7EpN09c7pi43&hYNr6E;tYVzc>@$*4Xuao1+U3QvjL(~*O3&8k(R&L16`0k{QWcb~9IMD*TD1eF| zwJ#n*=QHCtb>sd<<%T|9Z{J(eui-!5S6O^_v1Hp;v3pw1mKyASWm%K_aqS}3ULxDG z^n>4lS?;m+K9<|V6>BEy^WllKt-*SsOR)A9Cq#72Kx3V?hv|*cX=7Ho5RNbhv+q8| zPKsUY!kEe-e68OqkL_r9Cjypvbz;C_4s}ltoXHjocA{_rq=TQn=OXnnSU))l{`5# zT1*37Fu9=S3{fR3@jG#)?U{rS?fg5R+A8<9xfygZ9?z)~RhpHhxgeerI;Mms^Kg`U zM5et_7n`c=BEZHp=pe5yZ9HTH3XY%FFcvW8eMbCJ)%D^_eKII`cRx?LHSLNAMR0$o ziO3-?K;@$Y#0Th20FM8{=~lF!2({nEKj544%HJL1a*6g`)L`{YvtxpU8s6m81=^6J z`|OF(JP5t_LY$-eMn(&h2T7_w#7f>w9*`kSsSRm`HwcSTlKtyFFS`dj=P=_G=x?_14RHVr;}F7Z4K(Nw4+ zY4z=g5NERUeoVi8uEBy;q}6Wd@NBa1et=EBji|+9htky)CaS?FqVEGVs<@FS*Zf`9 zhU&V4FZ8>Q>HmXJZKOE~m|p+t?YC9XYPY?<*lCM`G8W9wBH=7^tnMHuzFrqA5cQma zxEy$TI4~;rV=w2Mgf4Li=V>PR#Lb4yI!c(TWw@*;wi1kA-H9rxkvU%PDa3Z9nM*;4 z!2p}>eu|AxQyeg)XNURvur`t~c122#lJ8@}9QRNEOoe7;s0O!vYlLUddKS H!$bcU9yfcs diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm b/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm index 285083c7407a..3586ebb45f3b 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm @@ -1,19 +1,18 @@ -/datum/preference/choiced/vampire_clan - savefile_key = "vampire_clan" +/datum/preference/choiced/zulo_form + savefile_key = "zulo_form" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_FEATURES - priority = PREFERENCE_PRIORITY_WORLD_OF_DARKNESS - main_feature_name = "Clan" - relevant_inherent_trait = TRAIT_VTM_CLANS + priority = PREFERENCE_PRIORITY_REQUIRES_CLAN + main_feature_name = "Zulo Form" + relevant_inherent_trait = TRAIT_VICISSITUDE_KNOWLEDGE must_have_relevant_trait = TRUE should_generate_icons = TRUE -/datum/preference/choiced/vampire_clan/init_possible_values() - // DARKPACK TODO - implement whitelisting - return assoc_to_keys(GLOB.vampire_clan_list) +/datum/preference/choiced/zulo_form/init_possible_values() + return assoc_to_keys(GLOB.zulo_form_list) -/datum/preference/choiced/vampire_clan/icon_for(value) - return uni_icon('modular_darkpack/modules/vampire_the_masquerade/icons/vampire_clans.dmi', get_vampire_clan(value).id) +/datum/preference/choiced/zulo_form/icon_for(value) + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', get_zulo_form(value).id) -/datum/preference/choiced/vampire_clan/apply_to_human(mob/living/carbon/human/target, value) - target.set_clan(value, TRUE) +/datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/tgstation.dme b/tgstation.dme index d5f481835cf6..75bcae6bccfc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7423,6 +7423,7 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\preferences.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\zulo.dm" From c477e2cb8bb7ffde902d468be411baa16809760b Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:11:15 +0200 Subject: [PATCH 050/104] awaw --- .../discipline/vicissitude/preferences.dm | 18 --------------- .../vicissitude/zulo_preferences.dm | 18 +++++++++++++++ .../code/preferences/clan.dm | 23 ++++++++++--------- tgstation.dme | 2 +- 4 files changed, 31 insertions(+), 30 deletions(-) delete mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm deleted file mode 100644 index eff8fad073d2..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/preferences.dm +++ /dev/null @@ -1,18 +0,0 @@ -/datum/preference/choiced/vampire_clan - savefile_key = "vampire_clan" - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_FEATURES - priority = PREFERENCE_PRIORITY_WORLD_OF_DARKNESS - main_feature_name = "Clan" - relevant_inherent_trait = TRAIT_VICISSITUDE_KNOWLEDGE - must_have_relevant_trait = TRUE - should_generate_icons = TRUE - -/datum/preference/choiced/vampire_clan/init_possible_values() - return assoc_to_keys() - -/datum/preference/choiced/vampire_clan/icon_for(value) - return uni_icon('modular_darkpack/modules/vampire_the_masquerade/icons/vampire_clans.dmi', ) - -/datum/preference/choiced/vampire_clan/apply_to_human(mob/living/carbon/human/target, value) - target.set_clan(value, TRUE) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm new file mode 100644 index 000000000000..3586ebb45f3b --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -0,0 +1,18 @@ +/datum/preference/choiced/zulo_form + savefile_key = "zulo_form" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_FEATURES + priority = PREFERENCE_PRIORITY_REQUIRES_CLAN + main_feature_name = "Zulo Form" + relevant_inherent_trait = TRAIT_VICISSITUDE_KNOWLEDGE + must_have_relevant_trait = TRUE + should_generate_icons = TRUE + +/datum/preference/choiced/zulo_form/init_possible_values() + return assoc_to_keys(GLOB.zulo_form_list) + +/datum/preference/choiced/zulo_form/icon_for(value) + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', get_zulo_form(value).id) + +/datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm b/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm index 3586ebb45f3b..285083c7407a 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/preferences/clan.dm @@ -1,18 +1,19 @@ -/datum/preference/choiced/zulo_form - savefile_key = "zulo_form" +/datum/preference/choiced/vampire_clan + savefile_key = "vampire_clan" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_FEATURES - priority = PREFERENCE_PRIORITY_REQUIRES_CLAN - main_feature_name = "Zulo Form" - relevant_inherent_trait = TRAIT_VICISSITUDE_KNOWLEDGE + priority = PREFERENCE_PRIORITY_WORLD_OF_DARKNESS + main_feature_name = "Clan" + relevant_inherent_trait = TRAIT_VTM_CLANS must_have_relevant_trait = TRUE should_generate_icons = TRUE -/datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys(GLOB.zulo_form_list) +/datum/preference/choiced/vampire_clan/init_possible_values() + // DARKPACK TODO - implement whitelisting + return assoc_to_keys(GLOB.vampire_clan_list) -/datum/preference/choiced/zulo_form/icon_for(value) - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', get_zulo_form(value).id) +/datum/preference/choiced/vampire_clan/icon_for(value) + return uni_icon('modular_darkpack/modules/vampire_the_masquerade/icons/vampire_clans.dmi', get_vampire_clan(value).id) -/datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) - return +/datum/preference/choiced/vampire_clan/apply_to_human(mob/living/carbon/human/target, value) + target.set_clan(value, TRUE) diff --git a/tgstation.dme b/tgstation.dme index 75bcae6bccfc..daf15ab27709 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7423,10 +7423,10 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" -#include "modular_darkpack\modules\powers\code\discipline\vicissitude\preferences.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\zulo.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\zulo_preferences.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\creatures.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\flesh_items.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\objects\surgery_tools.dm" From 3beff39fb9c4053fcebd5a21d90308324ec6166a Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:13:14 +0200 Subject: [PATCH 051/104] Update zulo_forms.dmi --- .../modules/powers/icons/zulo_forms.dmi | Bin 164752 -> 164752 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_darkpack/modules/powers/icons/zulo_forms.dmi b/modular_darkpack/modules/powers/icons/zulo_forms.dmi index ea15bc0e89b57004db046cb5772e3dafd9f6d52e..4632b7544d72b214631192aee4377ef72caeaef5 100644 GIT binary patch delta 239 zcmVhYFB~3XnQ~O$x#=5QW#tDT3XKX#GJKZbXqT^a_%iu^E~+l0>DqH&tjW zR12bHGc&x*_jpObR-0|KXX{-=uV5_doGsa8Fr?&$!b#uECX`6PM7n2V9e3c%-U%TW zJxT-`TVA5%WOxQ;9WMMB6fb-|>VJ7CF>u3Nlsjswf-7<-dEQQ0ZYZrZm_mH9vRyi! z{=npm;R=n}nJXWs19+3rDC~sS>te-^>EZ8rS3IGQPMgkvg-$v(kfAEtRr9x=8wkS_ p-Tlm^n(%shY|q+w-NyYeu8_%ZZ!Y^ delta 239 zcmVhYFB~3XnQ~%L>9U5JlI?SA@D1vA)oS8>vV^{RN55v>BQrz} zss&N9nHg^8TyD}~i{&cbvS<_23XDZvvN;>|`jnhdIO&_oh!P2yNq1|k;|_coqzI)5 zC=qCEeTkCP@B-?3F!N(j{Os$n`{kj;zzIuH?|4wxP$74cm(Ao^C#97JbJ!oPY?cnk zKQQ@X_>RWnz?F~F0lY~l9JIn8>-LH#`R?y|-+4kOPMg+%h0a0jFZFK$V7d?%@LyJJd_k$7vhY|q+w-NyYeu7BUbx8mK From 5d3da2ff0fd63d96c9c005acc40cab8cec9f97d0 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:19:40 +0200 Subject: [PATCH 052/104] awaw --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 4 ++-- modular_darkpack/modules/powers/code/discipline_actions.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 3586ebb45f3b..ed8223f44aa2 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -9,10 +9,10 @@ should_generate_icons = TRUE /datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys(GLOB.zulo_form_list) + return assoc_to_keys("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon") // Maybe this being a define would be better. /datum/preference/choiced/zulo_form/icon_for(value) - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', get_zulo_form(value).id) + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return diff --git a/modular_darkpack/modules/powers/code/discipline_actions.dm b/modular_darkpack/modules/powers/code/discipline_actions.dm index 05e7c79a717a..efc4ccf5f4c7 100644 --- a/modular_darkpack/modules/powers/code/discipline_actions.dm +++ b/modular_darkpack/modules/powers/code/discipline_actions.dm @@ -135,7 +135,7 @@ owner.update_mouse_pointer() owner.click_intercept = null -/datum/action/discipline/proc/InterceptClickOn(mob/user, params, atom/target) +/datum/action/discipline/proc/handle_click(mob/user, params, atom/target) SIGNAL_HANDLER var/list/modifiers = params2list(params) From 873eeef4ff977a66faf5bbb21cbfe48185fa4758 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:28:00 +0200 Subject: [PATCH 053/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index ed8223f44aa2..796d4e2a6cbb 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -11,6 +11,9 @@ /datum/preference/choiced/zulo_form/init_possible_values() return assoc_to_keys("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon") // Maybe this being a define would be better. +/datum/preference/choiced/zulo_form/create_default_value() + return "fiend" + /datum/preference/choiced/zulo_form/icon_for(value) return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) From c64d6efaff28b36a4190f8a9a6f67dd7dd6ac179 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:34:56 +0200 Subject: [PATCH 054/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 796d4e2a6cbb..d340f190e88b 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -9,7 +9,7 @@ should_generate_icons = TRUE /datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon") // Maybe this being a define would be better. + return assoc_to_keys(list("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon")) // Maybe this being a define would be better. /datum/preference/choiced/zulo_form/create_default_value() return "fiend" From 926356c9ef1a51bc9cc6d738823063d20d4ccf28 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:52:30 +0200 Subject: [PATCH 055/104] Update zulo_preferences.dm --- .../code/discipline/vicissitude/zulo_preferences.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index d340f190e88b..6d3235a04e0d 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -8,14 +8,17 @@ must_have_relevant_trait = TRUE should_generate_icons = TRUE -/datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys(list("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon")) // Maybe this being a define would be better. +/datum/preference/choiced/zulo_form/has_relevant_feature(datum/preferences/preferences) + return TRUE -/datum/preference/choiced/zulo_form/create_default_value() - return "fiend" +/datum/preference/choiced/zulo_form/init_possible_values() + return list("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon") // Maybe this being a define would be better. /datum/preference/choiced/zulo_form/icon_for(value) return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) +/datum/preference/choiced/zulo_form/create_default_value() + return "fiend" + /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From b680bc8814aaf335c810755df91412acaeb0fc17 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 22:03:29 +0200 Subject: [PATCH 056/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 43fb2a35a292..a157539d8622 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -157,7 +157,7 @@ /datum/discipline_power/vicissitude/horrid_form/post_gain() if(!zulo_form) zulo_form = new(owner) - zulo_form.Grant(owner) + zulo_form.Grant(owner) /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() From 9d5308382e3d90af7c1dc599976cc0ab8fe26d9d Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 10 Feb 2026 22:05:01 +0200 Subject: [PATCH 057/104] Update zulo.dm --- .../modules/powers/code/discipline/vicissitude/zulo.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 025005639059..e416c10c3dd7 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -7,6 +7,7 @@ spell_requirements = NONE convert_damage = FALSE possible_shapes = list(/mob/living/basic/zulo) + click_to_activate = FALSE owner_has_control = FALSE /mob/living/basic/zulo From 8d6491a1ba2378800836f44f66cfd20db4ae5c32 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 06:42:15 +0200 Subject: [PATCH 058/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index a157539d8622..3a7753e784ca 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -27,7 +27,7 @@ /datum/discipline_power/vicissitude/post_gain() if(!shapeshift_ability) shapeshift_ability = new(owner) - shapeshift_ability.Grant(owner) + shapeshift_ability.Grant(owner) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -157,7 +157,7 @@ /datum/discipline_power/vicissitude/horrid_form/post_gain() if(!zulo_form) zulo_form = new(owner) - zulo_form.Grant(owner) + zulo_form.Grant(owner) /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() From aeff90f2985403c3b839be93663a9defc87470c6 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 06:57:57 +0200 Subject: [PATCH 059/104] Update shapeshifting.dm --- .../modules/powers/code/discipline/vicissitude/shapeshifting.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index 1599ce708662..20263789130b 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -194,7 +194,7 @@ return TRUE /datum/action/cooldown/mob_cooldown/shapeshift/proc/change_name(mob/living/carbon/human/target) - var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", target.real_name, MAX_NAME_LEN)) + var/newname = sanitize_name(tgui_input_text(owner, "Who are we again?", "Name change", target.name, MAX_NAME_LEN)) if(!newname || newname == target.real_name) return FALSE if(!IN_GIVEN_RANGE(owner, target, range)) From d69a2c800c4451514aaa95ec5237cb94dc4b2db2 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 07:12:31 +0200 Subject: [PATCH 060/104] awaw --- .../code/discipline/vicissitude/zulo.dm | 30 +++++++++++++++++++ .../vicissitude/zulo_preferences.dm | 12 ++------ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index e416c10c3dd7..ab273ed768ff 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -10,6 +10,36 @@ click_to_activate = FALSE owner_has_control = FALSE +/datum/zulo_form + var/icon_state = "fiend" + +/datum/zulo_form/leviathan + icon_state = "leviathan" + +/datum/zulo_form/shrikebush + icon_state = "shrikebush" + +/datum/zulo_form/impalersteed + icon_state = "impalersteed" + +/datum/zulo_form/black_fiend + icon_state = "black_fiend" + +/datum/zulo_form/doctor + icon_state = "doctor" + +/datum/zulo_form/dog + icon_state = "dog" + +/datum/zulo_form/emily + icon_state = "emily" + +/datum/zulo_form/dragon + icon_state = "dragon" + +/datum/zulo_form/tendrildragon + icon_state = "tendrildragon" + /mob/living/basic/zulo name = "unknown creature" desc = "What the hell is that thing!?" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 6d3235a04e0d..cd3556dc9f0f 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -8,17 +8,11 @@ must_have_relevant_trait = TRUE should_generate_icons = TRUE -/datum/preference/choiced/zulo_form/has_relevant_feature(datum/preferences/preferences) - return TRUE - /datum/preference/choiced/zulo_form/init_possible_values() - return list("fiend", "leviathan", "shrikebush", "impalersteed", "black_fiend", "doctor", "dog", "emily", "dragon", "tendrildragon") // Maybe this being a define would be better. - -/datum/preference/choiced/zulo_form/icon_for(value) - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) + return assoc_to_keys(typesof(/datum/zulo_form)) -/datum/preference/choiced/zulo_form/create_default_value() - return "fiend" +/datum/preference/choiced/zulo_form/icon_for(datum/zulo_form/value) + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value.icon_state) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From 388a9f9df60dd80a24b62173b0d291c505bb3063 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 07:24:00 +0200 Subject: [PATCH 061/104] Update zulo_preferences.dm --- .../discipline/vicissitude/zulo_preferences.dm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index cd3556dc9f0f..51d68e90fe56 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -4,10 +4,21 @@ category = PREFERENCE_CATEGORY_FEATURES priority = PREFERENCE_PRIORITY_REQUIRES_CLAN main_feature_name = "Zulo Form" - relevant_inherent_trait = TRAIT_VICISSITUDE_KNOWLEDGE - must_have_relevant_trait = TRUE should_generate_icons = TRUE +/datum/preference/choiced/zulo_form/has_relevant_feature(datum/preferences/preferences) + . = ..() + if(!.) // Make sure we acctually can select clan in the first place + return FALSE + var/clan_type = preferences.read_preference(/datum/preference/choiced/vampire_clan) + var/datum/vampire_clan/clan = get_vampire_clan(clan_type) + if(!clan) + return FALSE + for(var/discipline in clan.clan_disciplines) // DARKPACK TODO - reimplement choosing disciplines + if(ispath(discipline, /datum/discipline/vicissitude)) + return TRUE + return FALSE + /datum/preference/choiced/zulo_form/init_possible_values() return assoc_to_keys(typesof(/datum/zulo_form)) From b7dd691360a23115ecdf9e2eba9de567e2142cc0 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 07:33:35 +0200 Subject: [PATCH 062/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 51d68e90fe56..57a9fa01a937 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -23,6 +23,7 @@ return assoc_to_keys(typesof(/datum/zulo_form)) /datum/preference/choiced/zulo_form/icon_for(datum/zulo_form/value) + value = new() return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value.icon_state) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) From 9d3f070407dc547e61a06e52619ddc72f47dd0b0 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 07:39:39 +0200 Subject: [PATCH 063/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 57a9fa01a937..1699b7b8b88f 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -22,9 +22,10 @@ /datum/preference/choiced/zulo_form/init_possible_values() return assoc_to_keys(typesof(/datum/zulo_form)) -/datum/preference/choiced/zulo_form/icon_for(datum/zulo_form/value) +/datum/preference/choiced/zulo_form/icon_for(value) value = new() - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value.icon_state) + var/new_icon_state = value.icon_state + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', new_icon_state) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From 3cb6ea5a845208421d60b5eae73172c9faff8a26 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 07:59:52 +0200 Subject: [PATCH 064/104] awaw --- .../code/discipline/vicissitude/zulo.dm | 37 +++++++++++++------ .../vicissitude/zulo_preferences.dm | 4 +- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index ab273ed768ff..c5621c8eee0c 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -1,14 +1,15 @@ -/datum/action/cooldown/spell/shapeshift/zulo - name = "Zulo Form" - desc = "Take on the shape a beast." - cooldown_time = 1 TURNS - revert_on_death = TRUE - die_with_shapeshifted_form = FALSE - spell_requirements = NONE - convert_damage = FALSE - possible_shapes = list(/mob/living/basic/zulo) - click_to_activate = FALSE - owner_has_control = FALSE +GLOBAL_LIST_INIT(zulo_forms, list( + "Fiend" = /datum/zulo_form, + "Leviathan" = /datum/zulo_form/leviathan, + "Shrikebush" = /datum/zulo_form/shrikebush, + "Impaler Steed" = /datum/zulo_form/impalersteed, + "Black Fiend" = /datum/zulo_form/black_fiend, + "Doctor" = /datum/zulo_form/doctor, + "Dog" = /datum/zulo_form/dog, + "Emily" = /datum/zulo_form/emily, + "Dragon" = /datum/zulo_form/dragon, + "Tendril Dragon" = /datum/zulo_form/tendrildragon, +)) /datum/zulo_form var/icon_state = "fiend" @@ -40,11 +41,23 @@ /datum/zulo_form/tendrildragon icon_state = "tendrildragon" +/datum/action/cooldown/spell/shapeshift/zulo + name = "Zulo Form" + desc = "Take on the shape a beast." + cooldown_time = 1 TURNS + revert_on_death = TRUE + die_with_shapeshifted_form = FALSE + spell_requirements = NONE + convert_damage = FALSE + possible_shapes = list(/mob/living/basic/zulo) + click_to_activate = FALSE + owner_has_control = FALSE + /mob/living/basic/zulo name = "unknown creature" desc = "What the hell is that thing!?" icon = 'modular_darkpack/modules/powers/icons/zulo_forms.dmi' - icon_state = "fiend" + icon_state = "fiend" // Default icon_state, changed by character preference pixel_w = -16 mob_biotypes = MOB_ORGANIC mob_size = MOB_SIZE_HUGE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 1699b7b8b88f..5f34c04cb07f 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -20,9 +20,9 @@ return FALSE /datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys(typesof(/datum/zulo_form)) + return assoc_to_keys(GLOB.zulo_forms) -/datum/preference/choiced/zulo_form/icon_for(value) +/datum/preference/choiced/zulo_form/icon_for(datum/zulo_form/value) value = new() var/new_icon_state = value.icon_state return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', new_icon_state) From f5e5912c6ecb6251292b46085c43dcd67ca4e098 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:03:29 +0200 Subject: [PATCH 065/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 5f34c04cb07f..0f4dacab0993 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -22,10 +22,8 @@ /datum/preference/choiced/zulo_form/init_possible_values() return assoc_to_keys(GLOB.zulo_forms) -/datum/preference/choiced/zulo_form/icon_for(datum/zulo_form/value) - value = new() - var/new_icon_state = value.icon_state - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', new_icon_state) +/datum/preference/choiced/zulo_form/icon_for(value) + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From 86cc7f69557940d57d544a3b1505a48846a497ce Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:10:13 +0200 Subject: [PATCH 066/104] Update zulo.dm --- .../code/discipline/vicissitude/zulo.dm | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index c5621c8eee0c..5c3b7ae8faab 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -1,14 +1,14 @@ GLOBAL_LIST_INIT(zulo_forms, list( - "Fiend" = /datum/zulo_form, - "Leviathan" = /datum/zulo_form/leviathan, - "Shrikebush" = /datum/zulo_form/shrikebush, - "Impaler Steed" = /datum/zulo_form/impalersteed, - "Black Fiend" = /datum/zulo_form/black_fiend, - "Doctor" = /datum/zulo_form/doctor, - "Dog" = /datum/zulo_form/dog, - "Emily" = /datum/zulo_form/emily, - "Dragon" = /datum/zulo_form/dragon, - "Tendril Dragon" = /datum/zulo_form/tendrildragon, + "Fiend" = /datum/zulo_form::icon_state, + "Leviathan" = /datum/zulo_form/leviathan::icon_state, + "Shrikebush" = /datum/zulo_form/shrikebush::icon_state, + "Impaler Steed" = /datum/zulo_form/impalersteed::icon_state, + "Black Fiend" = /datum/zulo_form/black_fiend::icon_state, + "Doctor" = /datum/zulo_form/doctor::icon_state, + "Dog" = /datum/zulo_form/dog::icon_state, + "Emily" = /datum/zulo_form/emily::icon_state, + "Dragon" = /datum/zulo_form/dragon::icon_state, + "Tendril Dragon" = /datum/zulo_form/tendrildragon::icon_state, )) /datum/zulo_form From 3366c121a99ad3656fc2636c5081840eec2d3533 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:10:16 +0200 Subject: [PATCH 067/104] Update zulo.dm --- .../modules/powers/code/discipline/vicissitude/zulo.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 5c3b7ae8faab..6d58ce92fdc9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -76,5 +76,5 @@ GLOBAL_LIST_INIT(zulo_forms, list( sharpness = SHARP_POINTY attacked_sound = SFX_DESECRATION - bloodpool = 10 - maxbloodpool = 10 + bloodpool = 2 + maxbloodpool = 2 From 8153cf721f8fcdcfc45f5c4d1823e1e5676085b7 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:14:25 +0200 Subject: [PATCH 068/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 0f4dacab0993..5df6860bc21a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -23,7 +23,7 @@ return assoc_to_keys(GLOB.zulo_forms) /datum/preference/choiced/zulo_form/icon_for(value) - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', GLOB.zulo_forms[value]) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From 84e91436149e411ccdefabfd2d00688c47b79cdc Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:38:14 +0200 Subject: [PATCH 069/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 5df6860bc21a..35ba009c7f05 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -23,7 +23,8 @@ return assoc_to_keys(GLOB.zulo_forms) /datum/preference/choiced/zulo_form/icon_for(value) - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', GLOB.zulo_forms[value]) + var/icon_state = GLOB.zulo_forms[value] + return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From d0a38ba9b050946818d7e02f0e8300abc732db49 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:45:14 +0200 Subject: [PATCH 070/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 35ba009c7f05..dd533bfed316 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -24,7 +24,8 @@ /datum/preference/choiced/zulo_form/icon_for(value) var/icon_state = GLOB.zulo_forms[value] - return uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) + var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) + return zulo_icon /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From 5a442ff0c7b7e77264cb45c90f364a3ecc835aa3 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 09:02:07 +0200 Subject: [PATCH 071/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index dd533bfed316..99e91a20daa9 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -25,6 +25,7 @@ /datum/preference/choiced/zulo_form/icon_for(value) var/icon_state = GLOB.zulo_forms[value] var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) + zulo_icon.scale(32, 32) return zulo_icon /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) From 0fea92e0ad67ffaf86b5147fd2e233eb1cc1e1c9 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 09:06:38 +0200 Subject: [PATCH 072/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 99e91a20daa9..8e271ca2ab39 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -20,12 +20,11 @@ return FALSE /datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys(GLOB.zulo_forms) + return assoc_to_values(GLOB.zulo_forms) /datum/preference/choiced/zulo_form/icon_for(value) - var/icon_state = GLOB.zulo_forms[value] - var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) - zulo_icon.scale(32, 32) + var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) + zulo_icon.scale(48, 48) return zulo_icon /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) From 71f62b36593f24f0772813c5997cd6e07670250d Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 12 Feb 2026 21:05:40 +0200 Subject: [PATCH 073/104] awawawwa --- .../code/discipline/vicissitude/zulo.dm | 30 ++++++++++++------- .../vicissitude/zulo_preferences.dm | 8 +++-- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 6d58ce92fdc9..dae5510dd317 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -1,44 +1,54 @@ GLOBAL_LIST_INIT(zulo_forms, list( - "Fiend" = /datum/zulo_form::icon_state, - "Leviathan" = /datum/zulo_form/leviathan::icon_state, - "Shrikebush" = /datum/zulo_form/shrikebush::icon_state, - "Impaler Steed" = /datum/zulo_form/impalersteed::icon_state, - "Black Fiend" = /datum/zulo_form/black_fiend::icon_state, - "Doctor" = /datum/zulo_form/doctor::icon_state, - "Dog" = /datum/zulo_form/dog::icon_state, - "Emily" = /datum/zulo_form/emily::icon_state, - "Dragon" = /datum/zulo_form/dragon::icon_state, - "Tendril Dragon" = /datum/zulo_form/tendrildragon::icon_state, + "Fiend" = /datum/zulo_form, + "Leviathan" = /datum/zulo_form/leviathan, + "Shrikebush" = /datum/zulo_form/shrikebush, + "Impaler Steed" = /datum/zulo_form/impalersteed, + "Black Fiend" = /datum/zulo_form/black_fiend, + "Doctor" = /datum/zulo_form/doctor, + "Dog" = /datum/zulo_form/dog, + "Emily" = /datum/zulo_form/emily, + "Dragon" = /datum/zulo_form/dragon, + "Tendril Dragon" = /datum/zulo_form/tendrildragon, )) /datum/zulo_form + var/name = "Fiend" var/icon_state = "fiend" /datum/zulo_form/leviathan + name = "Leviathan" icon_state = "leviathan" /datum/zulo_form/shrikebush + name = "Shrikebush" icon_state = "shrikebush" /datum/zulo_form/impalersteed + name = "Impaler Steed" icon_state = "impalersteed" /datum/zulo_form/black_fiend + name = "Black Fiend" icon_state = "black_fiend" /datum/zulo_form/doctor + name = "Doctor" icon_state = "doctor" /datum/zulo_form/dog + name = "Dog" icon_state = "dog" /datum/zulo_form/emily + name = "Emily" icon_state = "emily" /datum/zulo_form/dragon + name = "Dragon" icon_state = "dragon" /datum/zulo_form/tendrildragon + name = "Tendril Dragon" icon_state = "tendrildragon" /datum/action/cooldown/spell/shapeshift/zulo diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 8e271ca2ab39..94a41d599234 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -20,11 +20,13 @@ return FALSE /datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_values(GLOB.zulo_forms) + return assoc_to_keys(GLOB.zulo_forms) /datum/preference/choiced/zulo_form/icon_for(value) - var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', value) - zulo_icon.scale(48, 48) + var/typepath = GLOB.zulo_forms[value] + var/datum/zulo_form/form = new typepath() + var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', form.icon_state) + zulo_icon.scale(32, 32) return zulo_icon /datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) From 8ab39c8075a7ea24deced302ad9f4ac4d45b8e34 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 13 Feb 2026 19:13:36 +0200 Subject: [PATCH 074/104] finally works --- .../code/discipline/vicissitude/zulo.dm | 60 ++++--------------- .../vicissitude/zulo_preferences.dm | 10 ++-- 2 files changed, 16 insertions(+), 54 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index dae5510dd317..c16da0e65260 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -1,56 +1,16 @@ GLOBAL_LIST_INIT(zulo_forms, list( - "Fiend" = /datum/zulo_form, - "Leviathan" = /datum/zulo_form/leviathan, - "Shrikebush" = /datum/zulo_form/shrikebush, - "Impaler Steed" = /datum/zulo_form/impalersteed, - "Black Fiend" = /datum/zulo_form/black_fiend, - "Doctor" = /datum/zulo_form/doctor, - "Dog" = /datum/zulo_form/dog, - "Emily" = /datum/zulo_form/emily, - "Dragon" = /datum/zulo_form/dragon, - "Tendril Dragon" = /datum/zulo_form/tendrildragon, + "Fiend" = "fiend", + "Leviathan" = "leviathan", + "Shrikebush" = "shrikebush", + "Impaler Steed" = "impalersteed", + "Black Fiend" = "black_fiend", + "Doctor" = "doctor", + "Dog" = "dog", + "Emily" = "emily", + "Dragon" = "dragon", + "Tendril Dragon" = "tendrildragon", )) -/datum/zulo_form - var/name = "Fiend" - var/icon_state = "fiend" - -/datum/zulo_form/leviathan - name = "Leviathan" - icon_state = "leviathan" - -/datum/zulo_form/shrikebush - name = "Shrikebush" - icon_state = "shrikebush" - -/datum/zulo_form/impalersteed - name = "Impaler Steed" - icon_state = "impalersteed" - -/datum/zulo_form/black_fiend - name = "Black Fiend" - icon_state = "black_fiend" - -/datum/zulo_form/doctor - name = "Doctor" - icon_state = "doctor" - -/datum/zulo_form/dog - name = "Dog" - icon_state = "dog" - -/datum/zulo_form/emily - name = "Emily" - icon_state = "emily" - -/datum/zulo_form/dragon - name = "Dragon" - icon_state = "dragon" - -/datum/zulo_form/tendrildragon - name = "Tendril Dragon" - icon_state = "tendrildragon" - /datum/action/cooldown/spell/shapeshift/zulo name = "Zulo Form" desc = "Take on the shape a beast." diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 94a41d599234..65511798ce8e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -20,12 +20,14 @@ return FALSE /datum/preference/choiced/zulo_form/init_possible_values() - return assoc_to_keys(GLOB.zulo_forms) + var/list/values = list() + for(var/name in GLOB.zulo_forms) + values[name] = GLOB.zulo_forms[name] + return values /datum/preference/choiced/zulo_form/icon_for(value) - var/typepath = GLOB.zulo_forms[value] - var/datum/zulo_form/form = new typepath() - var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', form.icon_state) + var/icon_state = GLOB.zulo_forms[value] + var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) zulo_icon.scale(32, 32) return zulo_icon From 2d5b62a6c8cf980f2c2d0c84b55b90d6e338b283 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 13 Feb 2026 20:34:01 +0200 Subject: [PATCH 075/104] awaww --- .../code/discipline/__discipline_power.dm | 20 ++++++ .../discipline/vicissitude/vicissitude.dm | 70 +++++++++++++++---- 2 files changed, 75 insertions(+), 15 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm index 491f68ef5e16..61c1ff1a5369 100644 --- a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm +++ b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm @@ -556,6 +556,23 @@ return TRUE +/** + * An overridable proc that allows for custom can_deactivate() behaviour. + * + * This is meant to be overridden by powers to allow for extra checks + * on deactivation (eg. Social vs. Mentality for mental disciplines), to + * delay deactivation with a do_after() (eg. Valeren 5 taking 10 seconds), + * or possibly to hijack the can_deactivate() proc by returning FALSE and + * using its own logic instead (like activating on several targets in an + * AoE rather than on one). Don't be fooled by the name, this is not just + * for checks. + * + * Arguments: + * * target - what the targeted Discipline (null otherwise) is being used on. + */ +/datum/discipline_power/proc/pre_deactivation_checks(atom/target) + return TRUE + /** * Overridable proc mirroring can_activate(), making sure * that deactivation won't result in a runtime in case of @@ -579,6 +596,9 @@ if(!can_deactivate_untargeted()) return FALSE + if(!pre_deactivation_checks(target)) + return FALSE + if(target_type != NONE) if(!target) return FALSE diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 3a7753e784ca..55a99cc65df6 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -1,3 +1,4 @@ +#define HORRID_FORM_SOURCE "Horrid Form" // Level 1: Shapeshift Self // Level 2: Shapeshift Other // Level 3: Damage others and self. @@ -107,7 +108,7 @@ aggravating = TRUE hostile = TRUE violates_masquerade = TRUE - + activate_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' cooldown_length = 1 TURNS /datum/discipline_power/vicissitude/bonecrafting/activate(mob/living/target) @@ -141,35 +142,73 @@ /datum/discipline_power/vicissitude/horrid_form name = "Horrid Form" - desc = "Force a body to become something truly monstrous." + desc = "Force yourself to become something truly monstrous." level = 4 violates_masquerade = TRUE check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE - target_type = TARGET_SELF + target_type = NONE vitae_cost = 2 - toggled = FALSE + toggled = TRUE aggravating = TRUE cooldown_length = 1 TURNS - duration_length = 1 SCENES - var/datum/action/cooldown/spell/shapeshift/zulo/zulo_form + activate_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' + var/list/obj/item/bodypart/strengthened_limbs -/datum/discipline_power/vicissitude/horrid_form/post_gain() - if(!zulo_form) - zulo_form = new(owner) - zulo_form.Grant(owner) +/datum/discipline_power/vicissitude/horrid_form/pre_activation_checks() + . = ..() + owner.Stun(1 TURNS) + owner.do_jitter_animation(1 TURNS) + if(!do_after(owner, 1 TURNS, owner)) + return FALSE + return TRUE /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() - owner.Stun(2 SECONDS) - owner.do_jitter_animation(5 SECONDS) - zulo_form.Activate(owner) + // All Physical Attributes increase by three + owner.st_add_stat_mod(STAT_STRENGTH, 3, HORRID_FORM_SOURCE) + owner.st_add_stat_mod(STAT_DEXTERITY, 3, HORRID_FORM_SOURCE) + owner.st_add_stat_mod(STAT_STAMINA, 3, HORRID_FORM_SOURCE) + + // but all Social Attributes drop to zero + owner.st_add_stat_mod(STAT_CHARISMA, -owner.st_get_stat(STAT_CHARISMA), HORRID_FORM_SOURCE) + owner.st_add_stat_mod(STAT_MANIPULATION, -owner.st_get_stat(STAT_MANIPULATION), HORRID_FORM_SOURCE) + owner.st_add_stat_mod(STAT_APPEARANCE, -owner.st_get_stat(STAT_APPEARANCE), HORRID_FORM_SOURCE) + + for(var/obj/item/bodypart/limb in owner.bodyparts) + limb.unarmed_damage_low += 5 + limb.unarmed_damage_high += 5 + LAZYADD(strengthened_limbs, limb) + + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_DEATHCOMA), PROC_REF(deactivate)) + +/datum/discipline_power/vicissitude/horrid_form/pre_deactivation_checks() + . = ..() + owner.Stun(1 TURNS) + owner.do_jitter_animation(1 TURNS) + if(!do_after(owner, 1 TURNS, owner)) + return FALSE + return TRUE /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() owner.Stun(2 SECONDS) owner.do_jitter_animation(5 SECONDS) - zulo_form.unshift_owner() + + owner.st_remove_stat_mod(STAT_STRENGTH, HORRID_FORM_SOURCE) + owner.st_remove_stat_mod(STAT_DEXTERITY, HORRID_FORM_SOURCE) + owner.st_remove_stat_mod(STAT_STAMINA, HORRID_FORM_SOURCE) + + owner.st_remove_stat_mod(STAT_CHARISMA, HORRID_FORM_SOURCE) + owner.st_remove_stat_mod(STAT_MANIPULATION, HORRID_FORM_SOURCE) + owner.st_remove_stat_mod(STAT_APPEARANCE, HORRID_FORM_SOURCE) + + for(var/obj/item/bodypart/limb in strengthened_limbs) + limb.unarmed_damage_low -= 5 + limb.unarmed_damage_high -= 5 + strengthened_limbs = null + + UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_DEATHCOMA)) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -179,9 +218,10 @@ level = 5 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND - target_type = TARGET_SELF + target_type = NONE violates_masquerade = TRUE cooldown_length = 1 TURNS + activate_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' /datum/discipline_power/vicissitude/bloodform/activate() . = ..() From 366468bdbb0f1679edbb2214971ec2c62395f8e3 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Thu, 19 Feb 2026 20:16:18 +0200 Subject: [PATCH 076/104] awaw --- .../modules/powers/code/discipline/vicissitude/blood_form.dm | 0 tgstation.dme | 1 + 2 files changed, 1 insertion(+) create mode 100644 modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tgstation.dme b/tgstation.dme index daf15ab27709..611a8e1fd700 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7422,6 +7422,7 @@ #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\paths\lure_of_flames.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_of_potency_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\thaumaturgy\status_effects\blood_rage_status.dm" +#include "modular_darkpack\modules\powers\code\discipline\vicissitude\blood_form.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\crafting_recipes.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\shapeshifting.dm" #include "modular_darkpack\modules\powers\code\discipline\vicissitude\vicissitude.dm" From 125185b90cab42c322e82d7d3c1cedd1f317b97d Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:36:25 +0200 Subject: [PATCH 077/104] Update 64x64.dmi --- .../modules/deprecated/icons/64x64.dmi | Bin 54990 -> 49748 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_darkpack/modules/deprecated/icons/64x64.dmi b/modular_darkpack/modules/deprecated/icons/64x64.dmi index bac2d5ec0259269f61bd8fe466a8a1a7384c8d29..c43aa1b2b89f592ca201c56ec23847f999c8c192 100644 GIT binary patch delta 19989 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 delta 25272 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�LRKPuw=8xI5$YUkfI|$tPZExWD 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 From 672c453431e3f1c074a57349360765db1b725ab1 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:41:07 +0200 Subject: [PATCH 078/104] awwa --- .../powers/code/discipline/vicissitude/objects/flesh_items.dm | 2 +- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index be354aac2b5e..1785c365c57c 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -63,7 +63,7 @@ /obj/item/ground_heir name = "bag of ground" - desc = "Boghatyrskaya sila taitsa zdies'..." + desc = "Heroic strength is forged here..." icon_state = "dirt" icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 48eec7e6e175..23b368bb8baa 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -132,7 +132,7 @@ qdel(target) else target.emote("scream") - target.apply_damage(roll * 30, BRUTE, BODY_ZONE_CHEST) + target.apply_damage(roll LETHAL_TTRPG_DAMAGE, BRUTE, BODY_ZONE_CHEST) if(roll >= 5) target.visible_message(span_danger("[target]'s rib cage curves inwards grotesquely!"), span_danger("Your feel your ribcages curve inwards and pierce your heart!")) target.adjust_blood_pool(-(round(target.bloodpool * 0.5))) // A vampire who scores five or more successes on the roll (...) cause the affected vampire to lose half his blood points. From 14de53861426a47de234f04e3662d719f14fe6ee Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:42:24 +0200 Subject: [PATCH 079/104] awaw --- .../modules/deprecated/icons/onfloor.dmi | Bin 8860 -> 7841 bytes .../vicissitude/objects/flesh_items.dm | 8 ++++---- .../modules/powers/icons/flesh_onfloor.dmi | Bin 0 -> 1029 bytes 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 modular_darkpack/modules/powers/icons/flesh_onfloor.dmi diff --git a/modular_darkpack/modules/deprecated/icons/onfloor.dmi b/modular_darkpack/modules/deprecated/icons/onfloor.dmi index e98035d0cf00febedaad481bf55824e44ee61a4e..902bae5a9a7d5fb88b2801231e1060d469a270c4 100644 GIT binary patch literal 7841 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 literal 8860 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 Q0`oP4r>mdKI;Vst056%;6951J literal 0 HcmV?d00001 From 706313453ae0e71da0442ef60af3887be3d03d12 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:44:57 +0200 Subject: [PATCH 080/104] awaw --- .../modules/deprecated/icons/icons.dmi | Bin 89296 -> 84217 bytes .../modules/deprecated/icons/props.dmi | Bin 12889 -> 10987 bytes .../vicissitude/objects/flesh_items.dm | 10 +++++----- .../modules/powers/icons/flesh_items.dmi | Bin 6611 -> 2563 bytes .../modules/powers/icons/flesh_objects.dmi | Bin 0 -> 6177 bytes .../icons/flesh_stack.dmi} | Bin 6 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 modular_darkpack/modules/powers/icons/flesh_objects.dmi rename modular_darkpack/modules/{deprecated/icons/obj/stack_objects.dmi => powers/icons/flesh_stack.dmi} (100%) diff --git a/modular_darkpack/modules/deprecated/icons/icons.dmi b/modular_darkpack/modules/deprecated/icons/icons.dmi index e86bb13cbaa7efe4a1d40a263778516af1cb9060..c8b80ed95f543fcb91a23599f51b06b437ebab07 100644 GIT binary patch literal 84217 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

8f!g`7t8FYNtdIi`0Hgj6Y+4- zozUVGL-OKbfbTD7d1DJw1yWIVO^(Qg%@F4iJ24INsZmo?gApB?6D`yQNLJNH-eCrne8{(s3 zYkL$LovP9HRB=IaYnphiou=r z`#~X#o?S>gnQMK-pz3wSyvqIGlgmGDB1m2tYm7rcXz$j$BF#fp19I$$t~5r8nBo8| z`L;Ysu?6_x{-5StBgg^N&8c46Uj^Xk^)H+wZ}Mw8IlE)~T%L==@ZqCf?f z9w?`fRHVYe$^X{!4wQ^^4Gv&^9dpeL&Bz>IoqL*v6gExa{0V?Vu>pCHe{oL5yl?@R zJ%5^uCp;Pg7uNCaEJjN6`5B1h$!Gz2UdNT>{60K@v&*B$?S5A)C$1rU zTACKx+E|TF;J-2>;=gF2x=C7ube-=m=3J3^Mjy#JHReX}16gvZvgHXGMcvZsk_#=N z1GJvrC;(XVcY<;V^x~1EhXMc#8hict-kv>JIZBA|dLH+GJsTPH=KD*eHwdNMTFRaG zjPln=wG4VgMMV|(I*9)dY_Va3E2?1sf(hSQVC!_C%lTq>Lx;DUa|fW zn|SvL^iR<#0bx5R1g9vNc5+E!J;NnPAD$1jw6S7tklDD*3Af)fy`*AcI z^MYQ6gbl%tPjWZ8EJSiVyqhP+ zu9YLpUV1vlN&9c}<_$O5Cpf-9M@BtO zf;UTgQbqp&Cr9HoBDU?H0xEbiF>l3*YxCK~j5Nt43H)eaP$jZ1k)D7x9bV-i|ATMH z6Igj)xgv;8_su_UDIMX%zfO%4(ld_EAgJ4~?I{c-fD-;s^VRCHX50nHPA@fR2I zfpX6Qce<61L2Q_T_T>DaSL2Jy|^X+r!(pBRu9^g*N8SrqnBHh1T4!q{ zV1u|Gpa;)e^6*auuV4MdeFmvGLd%`~RdEnFygdEl|Nlms^>JBqM2Tf&HoGvt;6cd( zZpBJo%EdBnHF>t{e2kphUd5JD0#mCNi(M*#-~CKxd}r0(!$z3n24owP`+6{`N2Nga zJFB?J=Vnn+{9y+F)fsxODX%J0FcSPmkau|Cz!a*q1_xYDwBaS>y8pi}rJ*$jc3x*D zO7;=T7mKng0fA`Avl2R~O)^%BAO6(qk;?WUO0djV_uvuKb(e!Ma?v_WX%H5}jT~W-oPW+MewiC~ ztJnQs_mKcFzuoXhNN&G+>@zJOf%?qjmcjDBK4sz1{>p==0zypKC?~~=@<P=%1P`pH!CZ`p~Ma1;sQsqQC=lQA3-NEk% zH(hsaSOL}r^7{Xp)=yG`PX->G2BiUeyQx>{sTxC6aOmb`5%)3wRi69h3BDAG)#1tP zvx=&lauKvJ1g48%f$+ z4oAbd*!X9>uDjxllKu}qP|FTl+&31}V)*z$mq;*-o=m_sLG<-4a;s8F?FuRGn{oho zN@^IRgaqJ;K_&-%Bo3_UjX&zkYXG8B5F&O`t2h)8YFi^|9;IJcH#1138#_@PFA`k& ztQP+6OE|7~$SjW!ow@o(i`(~kHVc5s`mC}5err0|pLwbqu&_Hi<%&3ZZ6Kt% zTzFdt>;K$EH!r!aN@~+fZj7)oDS!a72>;WK5&#Kslj5+7@Ii8JZZ3u8O7bB@6m)X? z{ZU5^c4no?A6%2k7?WT62uLMO9_r*F&GAXPaS3 z^DUpD^X2TUets@N9-XPpA7dy%XqM6o=!!zLc40E(Og9$3KCMmobZ^@Q((wrUiv-1* z^H6lD93S83(xrZTUqCiObo}5o3Yrz`8@Uw_5*n(};1@%Q8ox`H(wTm3Nvaae5{7b{ z{YoVUonZ(g_~@KFl&h`#{#TdrrM+4oAT!M!B13O`4e*tq8yq?u>u# z2Ec3zGNM82M+SjIExWh*f&!Hr_7BERmTe^?zDu6u&eFd9$>9W^?Zku1nyMNaqqp1= z+m3%3Q4DN8N;)w#=8}-J{2-P5Gn?=5h}aO3;`}s^8bDZ5?1>9U2ns~G#28QvMpp!e z0=VE)-bpvHrsQ`1YTdXmc?2lO7wND3_Ci&SO(>JgL>y?!8N9VBO?``m1da(UuKlFV z`%C%sf1W5hMgea2BVifblKglke7jUBM1gOR7)nU^J^>GZ^G)U^lRaJIaetyfOn1)# z+RHTlL{kE4zaSPu#5SWdRu_d0mizbW}4yk6B3^xotY54gSl41EtB9htTo8bmC0uqo#(4?^#7`qX`*~I%Pm1AsXARiw=?=F+fz@RbAKTV%9o%E%Y$QoeHtLK6aB?GnaB4DOoC-`a?kzA6lArRGO z;=$OJ@{5?eOXCK~eTJqI=iB|QuadS@ufyh_><|lQE-F&l2^(--Ce6@F{$5fRT zp7PQ#guL14n)SFQN8?`(>z{PdS#N7|Xgw*2j>e760GIdx1dMsCshs8i7Yo3|icw^y zc@z^QbXC)M*<25NRUQC6X?^Or;dxHe(d>3-okDkc!63K3O2{jHwNm*c@|IY@A~#E! zfIuoUamjk2Ou_0M&EDQOuxlv7?xYnbgKZ=ikN|9y*@;qt)nl&t7mzX*#S*Y)q!03# zZXmxfTlw9jd~n`E3nGq6Wz!CI1S?RCkgom7i&0wr$S}UgGOQ~fGwD?zD}!|OZS&7{ zO58VLNO>8lD4^-c!1eV<E#Z}QneU|~8aqm|SsiOpH5M(Pib$~T7Vifmx z=BH@>Im|ku>uG4WtZV80EDp5fPptUtMOAiqw-P9Bk$QbKSSLuYmP)j-TH{&c+r`k8 zjxp%E-43_*Pth-6;RU3%@(R$Cz3!O$fIW7Rqteu^8*m{Tb{FJY6>T zzGG;0D&RlVpI^b0{m*`SR{>H>75;#Cgzc3d!gq29!xfm08HJ;S^#gVQRE4(+yl;lFNjoq!iHn=y zLPar<41LvIscv!4}igc``?I+Rz01=1J7%lmygarWq(E|CwECxAen7l zP>?41L=xxw_D5@pxVT*u&f_i?zN9ZMB@>t;EJ2F|??}nqh(HhdV>Y=0F80Xx$sR!C z?d`3BvH!aN^hM&uuXVxq+#ifTtoLhzmaD>9Dwy5Irb(mH<7ktJjHmhS89}qrHXS z|2$l9P4C9hbbS4o0r}sfEVFyThOqDe;~UGK(d$bjD}quvr@qC|v0T@Nii2~M2Z>MUjFmWSXpFBq0;hNYZ4SA6Rt!g1XZ62%We?RjOdwI*}hZwl3m!%;+|7K4#l`2 zY%X(mK4Wph9T?cU?yf>^o#QG?PVLy@Jh@n31OWK zj4FOj3PlLO`;AkAg3%wf;VBN881t%OvOx*y0;y|#M`X%;$c$y5NeZy~^VKeCH7O_Z z0%BCe>l=)i*tSL9B1*bimvzPkmqC>fM?@ajl3N(dcpwK>)2NGHGwh+!9*5LT4FV+&WR%0Vp2V9p-<`KS>hq4^< z6qc;qR1FijD8m42fS5n^0U@bN*qz9f!ImN;Rk-qdhTPf~`lSNbaG$#zq350;cZebr zsV(DoY}dtnTu435@Mt1)s??_iIzcQ>oPUP>vP0U;wUS9nmF-!SG(s*SxPyQPq+l(I zrQgZ3RKP>j-AE%s*oy8$DC_ev_kkunDuC({>5}e}eE@n#yk#0fOaCz&Q?@ig4pWu1 zmBfcp)_lLe<-M4Ac)*$5h{i-m3**O%O{CS})esQFM-U@{IlAmrfs8V_GQmT$M8Zvq z!4Ru-^OZ#N5K=RTG(vOw=o3|bXibJ@y5!YQ?Nff@K#uJzlJ$F$?llo%6%VKWk&#Cr zjLjk~>hk_oNNY!e%#YRt=^Bo(o`>YZeG#IxQ#!8i)&wa(Xhg8skRAX^IT!tywpff; z;u;SkQ(+;eg|CLL-SPhZaLY~*G>B+jEl{kH>_+SA6KFW9IGnQm2JKgln+pdA3^eUA zZOKKco+n9<{|lsrxQM?}l%3M$Deqo(REc+ej^(B%xzO>X%89TW@~Xs~6X)vrngB0~ zQH*P(XAor?3}iPy!(#lH?lthX30nleVV8-(tqIK)=qQVvzMOj#hir-(6irZJVuo-2 z{)z6ddM*V4^o_d{Rl^3PFRwk0pvWnlB=8GIHl$ylPt?XlER@VV`>9IQON!vjTdzZa z?8cPv>pQ`sKfenMEP@SCEB>(%B9t;j$a92{?x9T~CQL7(zm01$%RKKf58nQqWpcFo zwkT`yokV72+IoDN!v@79QQuT0>ZJ|J-?Ae#E+omAfhPzqJxga#b@J)=Zbjwc*F9*M z;MP|SU1|&iEEpZg^cp${1JObsUXHqEyCH|EMJe+)Hi$1n4OaBm`vRfQ8mOO4EJiI6 zHjG+&&Fq!(SXX3Hi`e^3zodnyDynJnu36-Im*Qq# zpjz$ArJx$;lc}+t@VwCukD=I$hd=WC&jA&~@*hHU2(?p`kiY8Dljgm`{C zAb;kNgj3NQyc)TuqOCt1S0DJZ^C5r~*y6JT*2KrjC_yvDLk^D|*X7u(iD z&pPJS?=aMt-AL~u@a?Xdl8Pfi7%*g4L{;L6vPS-v5n3 zU_WbghF2v=8={{oKJZ~*SL@`!iHT)|51K_A%Pb`b3DWvx_8^k*!YWg-j$~iLM-)$J ze&ayI4>z0sPlv%ZJ|5VbGvpmCf(t0hoB3Q#!Ari#@rXE~i>k-f1G#mzV{=EOtpF@V zb%oWHd-lW{3`b*|-yeHUL{Cut$9hh71LbHQh!aZcEo{%>a7W2!)qw*di0OwoxF`Rg zOE*(qbKgqUDY>|HgY2aem7mD6n(g|n(912eEJCV$cYOs`5Ht{#YTea zF(BQFMKvM&#HbpX(y2VA7QwQ+z@=eh!x3*(gcbGZ)*Es#9cjtC0fuIx22w}azey$* zQ^L3qBp=urPcmAvf?JtlBz<%VpTZiA= zd2&HfT>8G^y`Pto$+a2-iNbaEe=q9=Y^Xtrw{+AJ=gX~VBVcv~e}oJGc}TN_Hdg02aB^6%!t{E!{2HD z$M_|2*;4KmYeI?fK#=fQ)B9<(sb6P8XtK;2xd+s-$soS&QL0a_TN9Ljg4FY4x=p~b zgMo@pW+)OQyWI`gzf4`J*Q3C~Izh$QE2edHQt<`wMKdn2^E;Lgblf&_wU%aebi0m2 z$JYt#?YZ+T0T&Gf8kGXByV2#J7dL_F%dcmou!d(R`05r%FnICAdE|nmTdh(}tMjreRNxa?iSZl> zzb2ln2_9)KNy9NE5(Xy23Hw~7_@IB1#%I1J6$;GPRp8Uf5AsiHsomUb?WWkx4;JRi zu&E(2HsgAmYoAp?3r6`FN;I#_$Y0NGtE z@9U$I%}Mb;>w|&#uSfl*;%B86Q^ErxAa=JJWhZriye56?u%S0}(~DA#cSUYp96}Z@ zT+ka~7uP-UtdoH8GNAN%$lw}WB4IvW|4V59v_LtPLJgbiz{~sBrR0BGlI><``6nUB zE)=p3k`elGK?!OrB7ce6$r{!?7{b{sVYK?6-A2CDonA0TG25d22JNz}=^s+V~S{B|UZ^ZxmyKMz?IxrN?DTW_QOo*mCIBsQov{ zGqnMcX;%p)2wvn;$HF(&uW>y*CS(Ha~%%d zMXA!0TpV#09(FoEHm?JdjeuewQJ1@}DUB>7b2VTNZu=>;0U3Na_eLYY+mbdn*d!~w zJ)vYZ+e@KSG+Xy(9hh!u_H*!7a(K2EBDEQCFK|8bgxG+PUSFYV4cWKe7srX0YScG- z!I6SEFj1~XKK3l!ts9fJmc zewKu$=IjX5J#5uaz~Mb}#~_v1?M4m*IBK@(jxr^rng9`-djx$GUQ?rlIqRIn$(bM< z=f1u#?oT*A9UUch?7?Jp=oL^%xl13ut^z4p= zNbmN=mi-9-H031*R zvl~-`0YhLr6Y0VvN_yQj5<5-5StFE;i5cM1KdVF>JA9B%i_Ybk#PEh*W0Cdtj#pej zzWJIl>ZS=r#DD#*5FYNrLc!LkwGj9pfCGO9iZKtsC`Nz)*S0AZxcBq@RR-mdaBIK|yI>R=P_&p(O08US8tq;8l+!zmZoX zR7k%DHU{a|dSZ2fum2T!3JlgOiFM|JF#n+1e=gAqa=|gg%eZ4=kI9T2Ic2QBp>H6&~B|ZuGcPxEvTjWX7!Z%CR$pvaX28!->r#7w* zAjoz4UQw@zd1-WgAXj^hl9#Vmr2^*XU50c|yWZy9os^GEn?IXIN04rqL4cCucU9Jq zYTJIb<>d*F<1uh#a$>R+*|+1vEca=I#~Iv46?ELsfv0C_z;%fd?d~-C^d$@aUPn>Cx+C+#!h*4b_wWnDlflSvLWIhTkN~t@%4@skBPUbLwV4ieG3F z@Vr8r63qUbb;jA1fU1XKd;RL03&9p!$5-HIEa#eBw;84(g>(&x^9V zUu2A22Sam9mUJ`=lex$n zcwO42)5eaP)D-lLgYOL)^p_FA4L#jw_er=2k+Cnw4~aYT+i4@Gnyto&TYTl&jO?fK z0*(r4xKW$+^p9hZ>BFtsDE^FCEX3jf*;gQ{lscUAcpAsS{Sc?2=s;P z=e;Z;CQmwEabaYTV(Yy>Vasog?2VdR4<@fej{&w{*bR{1QISUU8TmXv_BWB@bRE7v zQI#qp{zldLRPd$aD$-i`>CH<^k9hh_57Y)2H4o5wQWOS&oays{Q@6yw1i~2z(sE43%s;;hT3JkNfE0h~pSn2wu!7T8UZ5Wu!ZVELn- zn7S&<;#Pq~p8~oj z_HAtiB}^CY)Scwu#?L>|d=T+AQCFsz{CmR3PZ+J=zeac?T+nJ;n-!kR7aA~97e=Yn zZIS53ukfA2#HmMzpI0DGQk$Y@AchNC^9jfT^cv0)dkc>WI6K#UxrDRJK;OMRDc;rfgj$h7usX zd5K}{%)~N--bDrmt&vg0;2X`@fV1bg7x+4{SUy5|2*@p(f@A!kOSLs})P>C>__#$l z5+QnjPc60clhvw>`}=E5T3$@wROkf-Ux`|FAsp^>&SMP_4)=; zDI*xs5KVxE>>RegQsORyWG`0~z%X{Y3DjG6UZm&HKOkxpw1*tX?%jb_3IOiwK-Le` z?y;jUa-)B7(DUC-2Vgr3fioGPKyGuS9K?T-HG6+(Mp%*#vQ{FWYTJ3?rP>`u{U#XJ zA78d35TG$0?si10ZvsW(gVP$81^|c?Zx{#0*Ki|r-me+z7qq~EMCnw@5GbFI1?JqU|i_$dP-XVkXjmvBqwNfU5yA`KxRm)p#mvQt0 z8J2Scx`xjvRInpZ)!S)v{=BYj<&f{cb~9C(zeaxjt#Mbmb~n~7l&#w$no#f>h{tzD z^$Ej@3(TL`KJV&5ClzY66Y=Nj5aCpNJ#u*6A=SbTbVRX)@qkV?d>J3o*U-c`D%an=8YF5;8`3WlOg)K0cnrFbT~_j%tt# zocUFy=#Pw8PALq&X-KiNLZ!A zd{HsbN#^77-kekj#G9#lwbh#oI=>_080CNBH&E<`n!@{m@1k2iYEsei;o*WF^?)JV z8$LwsE^0nXA*=k}EbqyBi}wANXKM;-_N(oBS=>zQ%HSE(+A=FH#H6umaJSq&4m+JK zL~oku9Zpe3WQGBUVilj_>phXTHXk^d4&iSTUNCyK>CyUg>}f}LPK)zb{{`Vx#?Xxp zGE|@tj?l{5{CMvOwIvBU6nUFO%UkdF-1^%K_4=R>hb7hBD zY(Hy089DqUNwX%nCykKkmVpWIWMDRpa9cRYh1N-h7KAvnl_Lv*n2#3-KsxVJR)fuI zl!5W3+wD=+XZ^9Fn<)f^fb_cWm^T_3+YjBQ_O(}mw9_}g8|}&blQ&E{qR`wLgb!g4 z9SGJ%D|;Fm&oyky*>#~TK{nX*&RaA}|8h6=^Y+OK2WqS#=QYaUFWW(Ej@6+T5ttFO zzqfgQIyUZCo7VoKZC)tE-UT5D!z(h=8tbtZj@S?I$3#`W4EIqz6~Z-OEJY&t`^@8X z+J!HT5@O8`yP%z5;fIZoEPQR?G{&XNi{m4liCSs1%lF3p*0l4fd}C~Ea!#t5sL%>w zY&qjp%YggsPK$>i1WTs8swhY#NOon~@?q?=_D{Y{=bPVFc4e}%!HmB1MaRnd7$tV5 z$Yf>xJ>_WfW7lha`7X7$(VgT6MhfF}dL ztpL##jV?3Z{jUf11iUx1UnlIlSZBdJ{P$*cx%VLI6=EAMu;WO2;*Z;pnTWf~x-^h= z8y8qRHL zP%m;~tUD9Ifxe;&8p0RmzLhOVxi{PYx}A22^%AtO!X!}M+rwv&w<3BicuVIZ?nZSg zYh?KOW?h|0{&i^5HxZ&Wh$mB28*UR~C50Ggaaan->&8q7{G|EkTL9rq42D z%_%z}#OSH@>P8qdy3H@6=dh}Q0~Payx*@e%dHKXfZ)6BQ`8Q#pScy!kgOxx~^Yw>8 z>pM13_Vt14cIRsLM!dn;b!Yz3>!eMmG1DM z7@)kha92YoFPOgOR~0h}S@;`(G9O*wTYCB2Iigt0d}Az3L>9znE_!UItte|stbXJ;fP!48153d0qEaAHLW$I`xNCgj38Fk|Mcf!}8RSyah@?0+ zzLzokGsr}2P>vKXknEb(7ZH)A@~=N@1g|BdOXrm)^+E`ReqW@=OgATk*@$RilLjaS z>{|R_EKO!C1Csx&yooFjCguAXyK**tU#p;#tppmn~jX*T22dO=?1J^Rcs!)WAoE@v6@IlMP;1eP&8H(*{^Q;v&|8 z&UKWTvextX=c)nD!W=`C%nRPmPrKXU{cS+b(1*UBVoXhQGqd!A=Yy4u=2t#Ei<=;4 zmv*~kxO7!__xFM8Rh5DkX7g2y;9gx|cMIb4!@@O zM$=z1*K&%mlsD@GncWV_lS8jbNHo=q{m*2e8XeE;*wZ-M&&49m_cMPqAV;7lp91y3 z6GP9}vxuW>MywneH&qeG>N05mom1s(`Wd|SO8UA#a8siLdM3>J3H-lUfVZB{XRsPp zr=m|$3^K)NFZe^vTtpr&zO(pnVv;HZ^Y!;Hw@5&5s~c))8=Q<0u(`BBG^F*Cn<}ig zx3}A%(|Vd6E269aPxCYrIyyRHJEdyhjBp@$yg`XCTZ2YQGQp6GRnC4%jR!92hd21T zWo_=Ju^bfiY@hCD^F!B9ya5QeIcB8&loG+|y6Q+e_}7jvo1B=~BKo9mytJ-6XmkXW zys5-O{Mno#zxBLrO?y-$U>he!?OUXp6?3*)w6?9d>t4F(k53?*g)*ZTT3jt9%?|jb z&9O^g0ygs*WXX(o%e!v!2OVSSu1hTWc=;$m+Lc+Y*D9F~A9tRG3alAnK3{62WP_T1 zUItzUO1W-Fyt#v3v=mroqW6B(;zv=yC!;=xhV|!eHA~00_oCFm=Q8U+0gv0>je*au zr>hSvU%zr~^@QvYqoB-20F9*}RL+pot$uvdI$GadeMKcLTviPGN;!@kXc!y@jD=ie6a$<@y1iYeKmd?TlK zmMBT1)Pq}F)ho>>%J&z}tRQ@5N$61-&YMZg1T&Y*veQ4!3DD=A-JAQAQBW2pFYoN+ zrHinIg~V6f+Crmq#?(*m8(Jx+4MQ%5uR1Ub$a+0X_9f(hIc&GZI-d-Lo0~KAUAlxf zG(^$M5svK%841TM2^p{lnC?7NPNPigwAS@`)^4SX9ORLy5q#ef`MD!9-YkNVF-I`} zPCJtL#RII90CNL}Mv$;@pr_~C;=_iR-{wxDRQlvWe_VpoXP3*`(@o&EcG5pTKXKwq zG{JMlykF3=kvOohw(z}u@*5g9Z6aY}BQ>vmV_IJGtzWs>6@w4r&Msd{(zUm?~N6 z?v6BXNY#F=F4WHCY8lNPP!w<6uD%t``Xu6F#+jOWlAWdBJEA=Q{6hL|Ejbl?ih3p+ ziFuleaoRZhWrvWQkF-7h^v$KXi!l{K;o7!eBkOWi4^VA$0?x+3ex#IOWaDG1FoOTU0;+mS7!8%=Wm-K%qnB3^3B0@oV zuO$>6f;331p;niu_+UD-D0r=~*)o1~>xzpHnhZgyx3;w8$9OT2OW!UF8yPac>cv+m zv7jBXYT5mcXtC$6)OSTR8*7{5)lRe zO$Z1QJn}I7TMw)Hr2@;g{;uJks)$f#i8=7*07*0Sdnl)4Mld&A-QXtd=qtOnI$6>i+M%NMTD{HsS)^};vy4*)jAZY%5256gK96~M0(E&z zdmkZNjx1Ip7{o=k(-Ts%(*EF~sFY~kCM46(yEI#b&HnM!zxMy5=_;e*Xqq+d1eZ6s zyCe|Y-QC@tAi*7iJHdi`aJS&@9tgI$yDh%RoqXrqA8>Zro~5UztDdT-s=F>Pn|oLD zW;~yYis+oTddWTs_@N{xGXa{ds2}SoS)_FkN%iKOPoL^j&0I7A3r+=~mc1Omn(_0G zh|`1XS5?12%uTZXhmosSSpl|$Q+yXg?}tw8{f3A`+i}Y)fr;N`4k>yXkbf5py9@gD z*vM#;ZnAAbu&r@1$yRVDM!>&h6BqNF6UipjqPV+`!}2EwWEkF>MIfJ+bI5 z;>uZ4@q7+3&+HlzC-zwW9a1iL^kEnSK6lbsXJ}MZ(SQFP1Ge_pxbnJ3R>b0eO#vvI z?es@0_Ko7US2a+m6Ag9Dsn6F5 z#z+Bmm|{U(pSz6zs8P2Y2*SngK0+5pY4;?P)dyG%dfC3 zpao%mirh^tZA$7Yt!YgbbxNA$lZc?hN<-hc z)qDUK#Eq`dFo4dOiMcXnV7MKCPA%k|Gq=R*x>{BKx^6<3Im z37>ANAEZ$XxD%#L0ch1^!@&Mp#`98@(Zq?=Q7gfQ6|0G*@=O02`E?g*=*_%d@COxE z3^i7=e4T9aJT^6Yk%D}BW<}ew1&n}vbQ!;SRrr!v;0lK;>NJps`Igz5=gfQ7@M{LT0%r|E zmij4zDp>8zO!Bkna(O;138vQ6?6Q=Iktb*+|J2=qs4$Yu)CT%{o0*W$jY`oXAmBpo zhn&}i+S|FpL91GY%|dvcqAEgrks~opt)A3CU)F=CnAC>jb9B!Uvro}O{X`V6a9d39 zBqW(NH3!xb)duB@LuTK-HgKFGq{Fw%kW2WE&J2DGu>j5!L6E86yRKhgo(rtE4T%|Y zs>Dfz@U3bE+}<2t!Xl|$m?~qu8di#)UKm~?di9sIlGx@U$?}GJC_L4Q<0|I6U9uQ> zq^2Yyoq)YYf*^*?K}cxg6ouoU%6hD%kI)l)mx~{Vg|^=BMQ9Rqq4#V6My+QZ{wD!= zf~dh>5$*)x0AgjKCluEX4AZ^5iw|MrGr zq0WC{yY%VYNi!qZOGcnhg*uGDWzzds9a`Lz;TC?Q0uACV(Q0L?yi0ilZ_9at*Fi*~ z{G;=~gS+q!AlT=+swtgCss3%eDDX@IHEVm>@i^u6NMIFG1YV0{fd+1gR{jDXvpq{o zSBMIIXK`OQwuJ)~24V|^xv98_U&=Ul|7!}*Zmc(iGu4W%SXxsj@F%52gfI*YuIPe# zuq}2|ies6ZZUq9O85s(&L>dC+C9d>%;Mgxi<;l{<(7P`j3M+SCbqr!@~fU-AH`SNKcb1A;2^Aw48lw zT2%Gx!I(KMF^K=?j)v<6V+Y<_M@L1`x2>V@=NSvDvN~nozTV+W;FVESYZu)CU`^M( zDZr#skWV>eW+7ePCjO55EH59# zNH7_m@ZhTdo96|BI7R2hLJadWPn9m&@NDDNY+G?4qQG)K^h({{3Qe=sbmxj9#IvOYboQk`5$9M@p`Bs$h2U-W4WRWff#ef`(_ zvnXnz`}%Oj#f8ncYTB&77L80A1$7JttYkQMuN$eDh>`XrB?cP?N~KF2d>@q!+%>=D zYPj-N%hPP$2(%iWK1%Hp7{eRdtaBtOwbE@obRYbR#gEB!8wZo^L=Ajxzs)y!xImqzXndB%{Uu%vhm*cnk+|y6X zz6vYTd8`=I&h<~QQXb^OaG@|yeG`e<$FIG`ifLmoRLj}T8!ld?yXC(+8BS5r$QDHZs#DQs9buk>Do&z&h%vD2AJCnxgQjgus}<4EVoRPO^UYii zC?!7>xrn%i_T+wFAnZfdgSv>8(QZYu)ogKA&OSZ9eb~8H9p9&n%kDgGS_o#q_jO!a z-+}~edLVV7-TG9crc4NB#GZBF#(X)Hn%d{gEj7!PmM!mlpKTX}eo7BcIF+jQ+vvA< zEfg!j#Ka)`^p=VxpThiD)4@4(U)(*-3EjXqc*?R>>5iKzuT!RaVHQB z233V{rL@-7?<2zQ59EW8no+gPmd-B;X{Yd`rlUMD^QQgXdPK79Ike3xqM%w zvnb>z91}HHP7np2R+sX~aP>CuH9Ab54WKHEQ@Pz@@C(#l2C$J4kBH`hcXYq0wpsg1 zAYco^R1>Pn77}s@5%=0qDLvfJ%tcR|i2;p03=H4=fOZgY!mggTF+^e}jgyjmksrlG zn}9QpxbhEEqe;n>IF)VsY9I?!LOI+_qg6>S?oLaGVQ1}NP-)|!}>_kPfP6RZ%vx0VmGgvl=`A6{E zz@*7bmT30}c+{oswVrllBRsIV>f>YTz$CYwyQkinqUhZ%69i>&|hW zjmZdi8o2|jwc11N-k!U$l<{Unb<2pW87iYK^|7zVTlDB@;w@N$x)G>4~R9oWF`;JE?s;G8OV1 zAiz)QQR$2pcp*Pm>USWJDio z2KtH7e{N!@N&-$yD`yOQt_d(yF=>!B4;>p4$x{z~`yLWnD$GCmY~c#T!&k2q(ULK0 z3>FQ^9~0EZPN4r5-R%u@=fVDl@o*mio)okzFWcRBGEUDVrgWCwji~?BRHT5GBxuzm zil)8cEq$0|y0c9miZqDyT8rG#BJ(u}KBM2*2u3gBJO=Q(KdgUgr2p}jd?7~xe|drl*Bb|&APvS znvLo_gn*_bPrr{PbZTRll0U9+>$)19&WG$nz{NoZ=q zgFR0qr9F89F0n5@PcP+)uh`dakEV^F#nSvcrl8%R3pGi7B{;w2&;&T~+CFgn5ZDJB zoxUK~nV4uPZrfY%@h!=wivf{>=JPAJ*aqUhEeV_bde~*_7b-&DZJu$5_Lcjx%Lg5+ z(b`b!7(HbLFC({QFlF2k*x&{y-h9{F#jgjwdN=Y%!)$xxrS;T@y$!R-k*d!#Li#k* zd`z*9t){w$^nWANPG@}t^_-x%pzP<`(KlPKJJE8vLk{uqB?DNyG_VpPA|=cuigH2+ zx|Z+lQuLxMt0l@wQ%*Sd*c3$6LUNXeC=UvnV-o9$^$2F$Q=V65@SEPKSvwRygZfQl zROlt>ar;`#b+m9x`gODjCmK}bh;EANtH{>{bt3)dKWugy%#+pvEUalzuchuWK3eY4 zX*hCt90i8e2&L`nbu?JJogNl@(I%u07r%yZHtcsH%Y>AGXvVtPxYvt?eD40Dr@prlb?4_2D}4J0aycu;BoYB!ui|zmzX3a& z&v$vAr{cNsmQk@cBOSEpa#Ai0&7|9UK`x(!xQ0kP^UWcYRW1(a!)0OhxeFg3g07#t zMV9+1-_fbQxGzLiqG-fKR~m}MvaSW%$tt?gSI9!ePPjlN&1RvfdaAIii#06$_Yq~x z^fcGbwNU@I;_`izQ1;L7R2!)G5frs1lo&(AI(iIwDoBNK6NAdxf!(P*4{Pj6GQ^+@ z*1lD&<(JK^%+qZOqB9qrMl!wuxv<#NVwam4!6muuZ%QdDWjW4Xf-U}Va@Fu!u=|rA|Y`E`W|CPRrR$bNR$_;o)D(2hN@MnFosy}*H>XNpV|Uc z=JLG^V}?O?IWMX9pc&VkO^WmH?=lwf+gEbTl>`$f66IX#<}!?o`dY{!R#T9qLr0Jr zZ+@hMwyKDI{mYuWw);3a{s1O9QW*8nW{V@oF!ln;Aef$J&-xia-w3q}+-s~Gbt(JW zkEjb^c!1m=aS=QCl6;GJ5fOx>d2zgeq%(?-4zvdz%vYLH@c&pgETu0412h&pl`+Bl z5iX=Y3~mbq7Z`O7`(-&N!;|7Xvgd?AuhXy|dS0|-gRws&m+AZt*4FMNN=tZW*5@)JXU zQDGK@67G4|?S88;hx*X)oc(aGTxJ(ic<2#q=pxAvYI)6UoaP&OZw-XBHT&HChlajQ zMN5j=h>0YL0WFkL?d*k7zx?Xv?r6Q<{z*yD-9G}SbxQs znk|@hNiqLRy4XfTRT7;;N9{n1_TIpD*Se!4qs!Aiqx)&KyK?tn#|BxOHy_GFWl4sI~thQ3x`WvbHVJg=IGc<%@ zUt6&^m(H1(E>wrcEb@ebFFsj%hnaKU5{Z2i@ghZvrBHS7(LdIEKbVfkD;O1jE{L4- z&oftP*n|tQrc>QH8tQOTuTb%UqovG1!);agkB$72N4(W#u)Kq<1umY9FG zG6Xkg#7&00ys5)C9Idr|G z(cLPY`s6S6;W`~$>Fv)a&tJ!z?M=4`6LH0(-pCWhYn+(A%*&6elWx{IWn zEf12ENnHT~Lb9HoQ5ze>%slo>VtkJK4*VP1jE>9Jx}{Rvzm-!b2w;e-adBF@IxIln z9qX69I;*QEqw)CM!Bcn1d8ak%x3@Zbt^lX3iHpK?-AQ%bdG{DV(7>Kx4uT+udEi9F zVn^Xdjkuqr>7OL`n8D-5U^`c9z->B>fPJnz@o204u<6Y}w#-ZsfB`y(*>=uQvB@M{ zh+Now%~3LNPmOR)ud7m%#IvR#Oe=w&vG8bv8=q?!RH#jHyoX}KK}l5?ezjEu&y0=? zlIbFr)FIYXALm;OYJ#o#7U{}hITe56^WsM^#x|E`^}aGl*ud!)KTyUfn%p77D1T2m zX}5QqN(|%_!<53Zm(5;b*~lEWf}XP8wv*^}E`i@A1g{vGWUoX`tKHW!5@Hh&*Cvly zRG-ckB5hC}O8@oZalBq3>gH^&Lrlvr>7SiF(ikS_1^mST+5PvIH*4P7kY&H8z^?CO zeAC>u9tw94rN4JjlsA1Z&$}(p>*Pxs;&cLFZnj-jRGOsqL5;-j3rbv08(Alpwf5GJ z0K*8E#VssrefV19_MB@|a1{}0nc7OuHAGpsO^J!hgh%^PP(*u)^!a&MP21S8hf=4x zLc;0NtE|%g&_W+1?&#?F(DILV{4g}N^{e^*Lr@P)ct;ay9LOWHrN!)|_Pw1#S-f01 zK&{bCl3{H#ux4(s7wPJ#~7pGS!Wi`Q389Odbt#wV!b5lLA@*he%=pV85{0}5+fIe?Hjk1%Nouh@g%|2n zLc7ePLgn-ZEY4kajn!n+i2!8sf+kgXzT(?u;A?jcn8oW8puq2( zFGJFZHIQ7~Znevm{ZG2v_1x=T6o7OzKd2SbeV9`ysO*?BH2Psrs<$7kWM#3Z9~*ln z`}(@cZ81}_0NFUC>%Iz8Sa5$h5i6(?aQefN%BK`MAB1OG4N5uH^RLm5#6^Msb8H4A zzdwGo$!tIP$n7$KzWd+ue)>d!D#NK}n!DI2n6hQj_ok-fop5t=1ushBSNC4tJ8#3g^=_FWNcKrxq|YqF%s8ql7KV#~XGTrOgdEgI`!JM3bMj&B9J3)}%xiaTPkg;wMW9ro$KgVQe7AuNg<2 zkbH0=UHIF>$Q%m3SYCq)(Vlv-Aq;449n~lD?*DjwgpSEGq8nzdVVMx%rGv4gW8bO}SAzQILW#EqU@eHnn<{OG9nD98T1p*~*!b zlf|B{CZi=+|C^H-HS=_)hyK^!n3#&3rahSpUzSn;l5jaIdrgwB3zFjMeI%vxU&N%` zvh`Cyuv`0fM{H?Ln^b8{PqzeXI&C^pfeK-%!SoJ95@(C)OQ0Oh&uqkMG4ubg1!y8# zd003UDqZOUS^9N~2<4R+OmDZt3)IGH@TT?0{CLIdcOSq-DF|=sduXPhv=pcfJxslR z4GM*G5i(82uf2L@uOTYYh*n{gq{lyRYpK-194h>!GMgetD4&@7gGH;f_Zg>2{LiJO z0HuOXe-ED{zyC8}N2F;7xPOjGW4H+e;! z$)xpm#l!QoeP2HGYb8uf!?c@)V{%4i~Ry z8+zOVI$C8(QOUi7lK+ISf@&Ym!4pGf5V=UluowE++kWRPfom?dW%DK0gs3Qh#e|-j z*nx<$Tl5Bl=GsZbp@>>W4_pB^ti&KUt+Ltv{v9Pc)*ULxWfxAoT+?NL`t=M*h z8@wAjOxL?aZ$SjK&pBk+#6%j$H9pssbtc5P zeeu>xO=jv<9+j_{IK7d}1ygLpuQWcFgG?x4ly$C-%AL3LFNHz^xsN!k>;RKN3<0?p$MkA1hC@`py;lsX>0BL%cfmPrJS7=8M8)H0hUg)wAYb8% znI}lq+@R6fMny-@DT<7RZ;Sr)65Jy@%)ffUrsXP&x>;wBeL?uF-ADD#(2#JyEw-g8 zvj}WNy&N`uJj{0r_3sI*CUqG5$w#8-*RW(`D3MzjfmuQ*g?lHpXKSDQ#E%mCaV~AJ zN!Vy|HVyBr6i+HriA*dYWa(pQ;@?e#5`ko7t=@(knIZel#CUcwXFja{`MAV9qfjJw zsu;~lVtpcHlqz98vd)=w3m;wjk~-%92pD1s9bkygVDY8OFSo9>2rY!^u#zeiejc&1Zi4HT@|LBjPXcU~d@W>(N9T!RJ1`+WOia$$_ zWPc$)d40~9{A<5$8|nwnNhlj-Za8A~K@H{I;~wg_REdM%O$6Kw{C-Aec6Xf4{oFhj zjf4sV_^9AuIO}W|^aLTF@E)g4jihjs#_G7y*m~1A_g!o zZvT-EW#KNG&wQ)vhRip=7v(5^5fH2v&6?-=*in9B2P)j&g^6g$$gjBr%@wm<<@CLQ zB)-BgUvaL=fOGFTcAY>plBb#)0?)x+NYUvM22k^&0h9t1)bxr3SUJ}vDEvA-a?pC$ zIIW?~PK+NhzIUKDJ5FVK9gO3?Q1rhoLXR7edzsp#H+quGno}JbmB|n@{WCb)RHQ*% zJ)olnoI6E_eH}R>xC;8>@81SogDdES&3T{la>q@^n6Ko($ zirq*Vok=B4jkNU@n!9zdLnGqP%!XbhhG+#{ zlN2DwZz+Si>|vsnN2WGmrdHkHGk=LcRl2$`#Tqf3^ZamhxWkM~#TC=L-zrcRbU z=ZTN`O+<9!Q`@vvANi&^{{|m$`BB>(3vHrIRcv~fR*h5!XbTvSy4v9X;z!koA5DtxbY z{5b)#v{{BvmP_b|K@SuOuWeuK$LG8RY#;95vgeiLzeK~)bU#Yko4GalTDaXVe_1(; znyas0idRtTK7ego`;=_5PKt(G z_T1cjdh78~myIP=DuUxZAUr9MDK2deOz9Lxj2^qNRn-#@_eG{k`?^5n(}>U|#$Esw6|m zpdvRz^bq@#AODI2#>$zUYun#Fus?1Llk>WVc#uP*rbLvC#ZR3x-JR?8rsnga#%}-v zmDv9FoQdbY^L&aoRH#UcLzQ)2ta4PSbM{LoHX}}rC8ePhCLy&U?#nPY$lL-cj20pwGr+#nn16;3nqL zxP+UA)jHoKyI-twIjjFP)#BLW5a}0m4iXQjU&doejUUHHDQ!Ijmn!0;WPKhEdu*+# ze5+DfZgO$cNNrfL7Be)QSq8NT&dWSKi52kcF_H-CGIyIv7C4XBo!-Y~1T7_4e6DSm zE#Hyn=Ldg>+{Y;?D8$mez0Am$&-mB8Nxz(fXzoB@pj#<_$sb17HXQm?t}SoVo9&OBGMr-{3{V1E)C4vERhmc3(5987YThs8b75 zQ5fYBY45$0fC3ixovzEfdS=PCGj&E=0|EnXiE;~~m;{}|kV$r^5(A(*idjajV-##K zzTaE8S8#{wsQq||e$s5hSw}Ksk2(zQdSzio$8UmqeLw38^uztz_5Pk|0sTD)Miz}8 z6Iv7}T2wTyj5$9*f1s;Sj6pb+%c!CYzcUW2%tya6|C2#UOKZA4BOd#xW@XFZy?QFM z7W$VmRasnIB;k){NTNTG#JDmp$r>-mG8!8@8auvOagBKkkqV4XUra;JvNL#Vy?Ztf z{jrlG$O3+Eiem^a01d8$p7y+DWo2K}SPk2`)BNwiK87Sndj8$4>5+^{GSt|z+NBdL zxJ{-5;dF>-gwCgdZ-;?OPj|I}f?hzeD%}TC0iK?wrlxd|V=^#0O5)F#x@xN!9DwXG z>wSBLT#^d<+-3kxssj`i743X|A>B?ruPxP`oiAyNi;JMQ^UXKMJkWWH%vs?+86G3l zZO`YWhEn#lOX>>$N(g}?2bP08HMZ}u8fm`hcZ4{YS;*D)z$>mKulLQK?EcYQQBgbz zzlV#wyu6aT``yO=MEXpE`@68|TZSWt@8-#2zrQv%zk2uXdtb`sW8f^wdCNK4)5}-&W!;> z1!!z-{2CyfnVEU@N1pBOb%-q>xP{B{SNX`UsK39U&)rEgLNB;}_0e(bJWy?vj=Z~wAsAylpZhbRirU}Jd|2yoYprBQr(TZ}I&AeO z0p;!w#eXNU{rf*ve-mGJKBE9b&F$yRMMsL?Q`@5d?&6|$R91cuMF*vM8u`O7Ov^`D zlr039qW}1ffc|#vLw=S&S;D1&{_;)!Wmz=+C%nh|>jT^K^J(p+gPmQw6|fjd=#;W$ zK7KNTgW6gsSHFV1+Su6idID8e3}pVdbN2uZe)<@Sj8kLO?e}z;bU!r%13~74N5$}V zq77YMk`8`P&+L5g*z(_y$317RbB3+6Nsypsi%B*jm||uW^m9hPe4~chIBpwnk@hu*$$@}oTF{rw^%q*c(dV7gVJf#+U4T)F+|Xc z37n#+E*M3RWu@`5h5&DX<8)~x+qnmk-Jlz4FyB~KeV~-0gUg|!SLIc`#KTB^T=|G4 z3fTDYl~A{%Ux*ch4D?I!o6`$#;tbZA4nzG)9l(3NnUO!Jn^%Q&Cq3_v{YGLDB&MoFaNmWqx6@n$B+P>@w8f zpkZJ@ZnU1sRlIcC>^3~#?0HWTa|LEa1qb0rk^OJdDaL60YdT?>C ztMYu1=2PibMsmpchh;9Li})##KL%cl(3L8oo<+;b5*R9Sa(QwIbmb*QMdHCB>H&d} zeaC=zs<4L*j*7PZ!L;XLpf5@H(*YT}bXE)7)7*KFkXqnv>cL_%_x;T+?>y6r`dqEC z++=cIz#BL(P?&|~ydIIvkNxOpMMVp4atmBabh&!z$3=hdqk@PRz}{?v`w+1J_Y2n_%+)>d*B@MUf=`%uJSTO!HaMGE55$o6eOmgl%@1QTz6IK@PIn8f){6p7FS%tgIBDtWzJN*Veuy!C*(s9A)6~Sn z5Por1DRbN#P1@~#KB+X8vggOO5)0p?WxS;ci{o`OSfht0|3k~~HB4z@_R0$Bs+LSR z&Lx+-KyMblf3>&TFpGKo)M&cYEkV&92X9nsM`%&HUi8lEJ^$JL=9gu^WTdrW0c|JD z&IEW;8V~^>6AGnBa{oHzOwbdCvjyhjw*Z(zY3o(N-X`DB_W<>z5n|Yp3<2#SSKC-~R<8#$ zk)$6V1!nw;G2SR~Lhk$#5qvjLO>DAk9-)P=^xR10Bm?5xmYwy3ctk`^4h&U#JRK1D zxcISwt*Nq~1Q+-4V#DiTj>i5neY-ysyc#)h(qpqZJtBnczYWy-`**sx7kX^PzUw!+ zXFm9Dk1}01*GbQH-}(G$H}-6!c!z}Y3J;%u3SJ}jWB%{1BW`%8 zrzFF+LXYyVP_27poCz7L(q-$A7?H37T%%?DnfU(mXUvasFuH}Geq{&-vf81zBKD+h zmpk7h;;Za~*napUaMcB{DuJ=PRb3mxzf6NxFTFxapPrF9eMtXgb@LXuecA@41_S;ax$j zHqJf(3@Me$4$Squ%7=Dp@pL2SZ6nAhZ(FbZC31KBK>eWhBU#V}+`8+gPZVB^VUz8n zxLEsR_7l6T?PcVB1Q1ar_t@ImWp(6ueu`t1 z?_lzGYOEmrf;6}~VZaJ}`QfkX?tQ!BX?iw-9Uhg*PQfg3c)C#iy{A5O{^RjxAlKPTEZMyx?`i(~3M$vF}7IedRyIgJ#0WqW)9UO(EhuTmsE8=StxJpG^*V`fSdt!(*c)V5BF43Y2lB; zYt~}^N|eWTgL)3^Skbs1(%IP;U!{`ZFVzaj*(7v-t_btN2(mv13?O07w2NumeTJS5 z70suOpOrXshAB4Zh=yC8VJVOP3C2||Mj%Df0+C2K5zNFGVk%c;I?Vu z$^W_7Z-a>e-rwg=?4*rB{|~~4pI+BTv9jN+z3C2&k_4Z8x!*_Rzg>7;?OmCQdl<9d zcJ8V+F)#y~7xqyPH|}hv7g48{igC66tjEh`l1#~9p|9wB3;M4Mo8uHeQWpJtuI1+e0YNd=K5Q2zj)94JgC(Gr`!q2 zJ@-Nfw!Le=yTgc(ysvEJ7N?{w9vnmEMpal+@OYdpr+}yVXB>;r~IwJ1}ca5Vig!p@-SbWJc3;;2|mzRm_j0=vu!X6N;eNgCW@q zyJc+VBr4>OU{DOLG$RS!^1jY`8Vj@;D0jy}dH+G_m5Y2Ce9gvy-NI9m`mK&wBo_(< zL@ua|PSaYpI}0jS^h`?uM!aghTNWmxOVzc72y-{rcZo5HoL9!?tI2q zx{Tu7$!O`N6G*$FHkUg*FRcLez38|kZ5kL=v)TCA9qV4EYizYaz6hDeE66b5B$|}N z=6oli1Fe!c%2EfV1!A9{(ee+Fx4(*XrPsMRv|xHWX1s{&=QXjh2C8SbBO zD@VRr%BCh_V(JI;Q-{FGaE=&jJhA|)R7ITu`T@I8Yka93VS)B`7bw(8d%zn829r5- zz85qrzdMhy*_p2+Vz2}}FPkTzo3PJh}(L`R6_q$VJ0ldGt#5*?=Y(38d0D+uCS(tH}~OYK>%-NDJ_ktl+E+$&*|OARbju!E6sER*RkgM3kcm2ntNB=7M#r@ zk;VOtgNw%MjQcFU&UuA<5O$IT(kqP^5w#%VJTY1Xei5@(vWhobV(Okv$9W^%Sqy$q zI~4LKDE>4moE@E*@jyy6j%|fia>|DongqPyGhPBr<2hD%?9Yhwsd2xbDC^~T zIkB3eZ&YDmMNDr5QpB?#f^~G&!Zc?k5bQU5ijjbLI&^=t?mp%K4q?mo2sbe3oTF!Q zl%-tEl5)k`xj&$OrWDtw>!iZ(Mgk9rpy1zFN)wrM{IJ|U)G(K$gm%F6bS&B7LJC3J z={O?d5g)n^dV^sv;Up4+ftj{`fHK1q7CCJ4z~-6ra+n-cVut)9IXUS20HwoIDHJ^a zafOxS^$|r2X-;I%;?DRzOo(uxmGn>$+3$8^^n!|jJFI5 zwr4{D<-yvBj;l?_Oq!a4Y&|coYjmdC*dp5q8@WRC{C5!FXO}cUuP(&Wu|@Xx_j3Vu zbS))2+aN19xBD=j|KgEr!{37jn)=^uM-7s;r$GJq$MQZLM)|92K>c>wyZ=dsIdv}z ziuAf?JAQU+v%LaX-F`}oxf!??(7LzTCT{at1j=|o860w&*L~ktCP=}8Aoejd@HH+w z7T6AyD{0FZQMhTH)_=Vm$JGTtwYM$+mL}zA|)90{oExLX=5IX&&r4ywUGH z!Ai=@mF4!d_ZnPbY>svV5^~v{UJL=jDb)O0WjG`@D1vbz%=Mi>kI#U^<1g2s|N9OU zJiW^%sB&$7&GPpVO!NG=sT*Lj%2k*REme-JO@; zY38u(bCszth}sOd1!c4Z9+oea}brf7mRi_E?rEo8gN@xz>052SX1~dE-EE z3Wq>midf+4re*5h&Q6Hj18_$_Q4VJi8??DMX|5ap9630Kyk?j3d=2E^2 z=R`+}sK05I?h`6``_ULI)@i_wDG(a|Bj6^cLzmkoFUYz=I)zTl=NyuQ?BvFNYQa#;MT%1 zniyWhGGHCwK|7NK0lWsFQC^;X>hWtx>>rN41_FMbM$IX% zm{N5Fj14Ig)GUHnedSfSMOF*`OvMZF9^Wml0p?Zb_Nth_K5&;P$vF(F#sHMI8P)2w zDK(W0Mi{=X+G1q`NVU)EYlLlTi(nU_Z)!u{y{Ys)S*T91GV=gd5|v-20n+lV=gi*d zD&fqzX#p8YMTDPKNe~Ju^C3(*#KTooNd(96ANiZ37nK=78VW22 zUdL7P?(AQH=1dg4zIg?7tn|8Vj-E%8hz(VAsVskSe*?7Ffj~4oSctq~QhNvlG)-j=A*@B(?Sr-QM1MKk4jC5tf-ZZkHs-h&`v{ z9y6K3PGj@~xYocZj0i03_8&-wfVxRK?e#a-%;G`5hUeNK7^#vY&KoXFY$E4>1kv}zC!y@cDfdCNL<%Y&Zdg_0Zlf6H-nU;A&lGm*sp z@j)mguruxbmC;k2IAx$4R=pdDmdbtvp`hwqaN*p#m7R9B^h~F`H;3R1;e1fSnT0Sy=A$oxh zCLRkeAD#IWY77M>`%N{;I5hP`=$61YH8GUL^FRVyU2)WR^55t{2Z26xy!cR)7y0Nd z@9;+9b5f1HJZ#eNIj38aEcB6H0NDPIrmv1``uqML-JMF8ARr+rFd8W-X^}=iV3bJ5 z=u%oy8bm^n4yC&!1%xpg=}`hB#@O%0`}6z$!2{;zYxmrH&htFa^W6J-@lm-k=hA>c zI~*cXo?^IWz-$_t=@s+_I0xP`iDT)1lB3v!a&33qf^eN9F=B5Fe!AD&bL;>(6LTz8 z5M7Wv8ZJIr3xma46A+GQN1PvjR)Wqmj*xs<;q*37_Po+rQ+?WoE%@=~yP5Z}-3XT5 zsfSP6R#6?xv9Nhb!m}tL0LUJ4xZmWxjfUa`@Bw*t^=BTOkr6j{DEv3l+DYzS+7|XS zbOad`l_&xx`rLe!LdmDjzV=ZTBSPlM17HRf?V$|i`_~wcpoLoIVn9ePx4|U@(Kfmk zEz)68+I&cVV&-!ww#^c-rusmY={j#5Rs8d~5{Dlr-Imy+%oF@jj&=QBTfkA`lID;J zLN-2K`&|^=qw=SNL2MWQ&Muegka~lFcv=N4UM>S@nRMgig>uo$^6eVdSaSb$V=Gck@nhG|?Zb{t&iG1OcrBJu&(6EuCJ;@e7t)cJSBN1^Y)_yY(r zvcb=g!G<7_%>|hcdugzxq=F7!)Js{DCpqaEd~qWd2^lNYI=Nh}>}&Swc^Mj<=bAIv zd~Szozh44KMl^o4p$T(FD)2ju{Z zKs~XPwJD-n3DxAIx2}Q{!ZZz>QGgh+AbcEXJR!#R^B?LLfcrol>@v@^3W$=heBuEV zC4TClb$%#YL=O{x)B?pw$hsL1-;Gk#xrk_FJ|EWed(oiUY-eI{!l$p!n)>m`KJ&9< zpUl0Pcu+jCeDlz=olhZugv?HQ7k0HGVtM(oj3~=msfbePY=H)vS{tF-Ebc?X%8Si_ ztuK>od-H;$w;4@z-NU8iX_V0fT-=KPU+cVxbQ;7j-D&2(c(N zZ%znLx>W0g^>fS*CyIYoJ<=EOBIoT_H)W71jQdV$hbx?1rs@F3Jm}GRYV`gSko>hd z*-fEnK=toGKQeFWCbmrLQbU>GTLXzLrB;w-&5HQ=ODGs1S}w;9Ic*8(vnctk6y8a!56%Jk$OqvKVq z9Q7gQwre5U$E$ri2+wQsAsy;iVuflB|IrcznsQW+$>x6tupDE@e~PCuwi<3Kg*3Ch z2T>W^TTTO!uz!2pZcI^{P9m1g0oG5eQZ&LI`mHuwYwlL$&W*+CEaM|y^fU@o8~hB9 zo=4zWp40AS8mI{+M`#?rFxnCKX7T{{%x*-X9x5VStVZln)5)5?Nx-CZ0ljN!Ht|9v1V{o!~jkd5fsabwumqGur2}UUb=O!Kie)yiAX)-^QYw4woB$r#7Kl8IX zc0~XbqoP5lJs;R@5PnXTHyt0a8MYc8gRYx%ye%u^k9%4kDH8MHdaSXs^AqqRNavvt zg9|8t01H@KUuDK|QE0op1|Evv6h)E66R@R&!$6 z(>tbdB;?P30|xpDhz@)bY`QJ31t*t6*g^Qi*e&yS{^V{!FX9OFIcu2!Yk}hL0nbDt zGd|VX8IH45V@(wrdZCs9!s6s+z)wmXD)ngg5d7(ATobQ|T{(0aHYE2hX)KAbCS{w= z-dgpNXonf9qgI2{nU7%Le^4p~qaXyeR%5+bF1)KMt39p{Sh63*|MeI7jyu5|mTI_4 z0t6SJAN(Xl%#&hrX`+_60KWS*VkG5LuE!{PZn)o;C(SH=1jh(4!&XHpoJ8?50?Ofr z%A_qkjv+3@<_44oWtcEPRe%ZY*{A%x5O(T<9uWSGW49Mgyyy=+b$ODK8AcI^O?Cz* z@=29i@kHi&qx4z|dqh@GZA}fZ-%U;^xl;;0%OkkcTaYlh+E(0B)+aR4iuGALx? zDn^SBxKnAsm(P*_X5JfDpn?>9m`7Xa7U~;BL~W0x@&5&&qr)nXuw>~=u7~);a4>%O zu>hK87B{|+-0lVGY-h1X_Iov{e289e=O%6Xjf?4N#1wu3Kn8Ma!NBrpbw`xyTdf

bZ%^r{=MtX`*Hwmub`>%eXrKV)rC{fM1zCu0oR;Di#K;C4U|PEp9`hJA zco@J?wZe;bA}!QH$-T9|i8SK!`Pqn?j4|yShX=HT9GFROvpBR1svYFQ)e?mj_wC0> zjHt}$zt)2{LHeAM1gYb#ehhM7pTU}x`x}Bt=Qwi1io7|#%Q?ig;qPFvJ3p-&MWy

zObrD011xT$f$vIYoL=dw(nm|~k=aOd4n%_vaqZ6&O2O3ma9Ty6(BrIq2aho1tR;B} z=xV^r)H7*23zBD?|CNiyBwr@5gMbQ<4umi}`G8cbK{ZS#0UrVi&Z^-r%SXE}IO?q* z{~jQJdVRSD+`n5mG-}}wvfya*QC?i#xhz>V)(+g=T9)9wanSi(g9k{u1;q#|Xlk^i zQPe|Z7kxyF6sQ9{T(&R1L%}hh6LD9gs&ekO)L?&IOOMoGQ(z{`XBJ1lgt*Fnv%Vor z7t)*Sr$)ixbK^>5G2X?=Y*k@-z^B^Yth6R84F{PRliA@ZF4wy(vfhuJCqfuTvD}%Y z!EKqm?KGc8PR#V-NO$GRl$0!~g5MYgD@X^n& z79eM_o zcBg+K!WsC|cxvSG@Umem6So7ug7akmuQ%GwJ3R!GeOgEa(a;NVI#@j~yT^&@l6{7J zsC1r1iyB5qo9{$rMZ3l0uW$b-iG3^~u{vLCnr`3-9=m911+tU2tG1U_xc;`&e(EL) zoHx^?j~1T5)8w0PV+##(>~sL8BMF%Flf~bUG{){l&*T_@#KU`IM;=(_Rc+%=U5xxW z>N{}V#ywD2f6fR@KecHUIooxbZFOF^rJs-q{3f(Hn8`m02SZ#?@_ z_)A>d6S-fkf^G2+&BU$Iy)oM~d#r(jMOS-eB+o^|4w>I7c6KNosb53Dx%%rOVJFIs znd(d>cmD}nvD#{3UsaYMuJ!O`aahj%q~=vXi$4q6{rjsf#oI&}0bcwhGS|T} z)6~QTQF&5FuOkuFUPu2rK#_LuaU3VPR?b%MO9`ftw-XcsS)j2XhZh7xhs-PsZ21h_ zL}W{#&iOFHIZH`m32TI3tLDc~3VumhZ>OR`(BaHiSkSc?A<EpWyg3ZLX7uiP#O<%mml6-Cf8Up@0jzKKdNmZw7jP6IJAZe)@II zpF|#AG~R%TSKSMWfTWva!mia=09%GSC{zH$Ml6nwp7x&5i!*y*fo}ZA&q2`2M4`TL zuEFE0+v})(j4b__=@GEHxxnzWC|>(5{WN=}CWlF08Jt=goHT2ktNC8*BAj$6U(%`m zM48*=E~tUfRE4;<$~WdlE8E|M{`zyI+RIDe<#SPMgQcn*-KQlN5ltum_aybFLTVu| zR)L|agQZX5A(n>G{7qD|!eRyRWN^dpeK}QuIJga1$EWCXY0tlm8X!aX?nT@At-CEw z0sQK@FN~K;6+K~vQM5~7i&z*?08JgGuJb+yJd^*70<;_$CbfL)DI9t+8n}5iW|6Ti z<)Qh*o^b+)l1CATaAecgx<0JliqqtB(&-<)p6c>?e2c%!RvcUC%RFCULF-2lQHc^&;&bF#nRlF$xT~ z$a=W3?~5P+1V9Br&V(I|oSVlr@T=GV8puS(@xL6sLTVq5V(n@55Y&7$;(dIgTa4B} zTvxpSVdY*u6r^48Eqr2`Rdv&c7yzw0cD%gqx@|#+qYd3)rHC+1(}M=ua2{BRK{Q5H2JTSvW=bD?wOqb27E?)-y4I1G)OOoSksR1r`kbn7gyKG_ zRRMqifw$yDtiaA|*mW*Gm1+&qbOQyo@?Z4sZ)`%57?V+VsBV;{8C4$_4W_S~TqZx% zAl6TzQuIs#O%`|W-6(#${!q6*v)j<8kevbouBpK#2ntLWfcB$Mj_!K?=IK30NG(Tg zLv18kfMT%pJ7jMa$x{Gtq!6Xr)%bcukswlDx$I!xe|=mikM>TuNdM`y@SfsurS2kh z?6&EP=L=2-$uCj1GULG*!_K&ts~V)rd8Y;{Z8i9b7US2?MnyD7OHC{3sdHf$(DTJf zA3uI?jpD6$kDrA}31oc&2SsocX2tTWP5ZsxGRs7QYHNrhA)%ccytz!sUHoSZ_wwWB z76YjntUpm1E)nv(A+K%&Nq6QLf}cxySo9qw#^lXo93hmcal13c5za)JFOQ7Y!LE^H z*0Q!Mm0)l=#(c5kcCkqhvg3l*tLRRji#flUEGhvK+D=95>3OKL?Bu<5PGRcFhb7MW zK;o40Pi`@ZZWs9xV(?pMVmIB|VXdLcXuh%(8K%dZ(dEg1lGixVr1IcaHW5CT({^hg zd%k$QACPJm;J!;AavcaH_?Tj6YL&AN1MY*F(tey5LR2uZXOViUi=qEK;T?24nlyw} z%z@o0r|VggdeaLOY*!=tu+NQ|af8LYHat`fKhKMiG9x2XjvsQdPWzrK=MfzC26BK< zj&=rwi^H!0CEh1>;rV~gWpZ{XWiO_FpoM#kNRzwI@lohi+qX{hH!?)v2h_l3Um~Ld@e*CklKIJ3xJn20=QeqEM<3iGF=m+J%F0+ z-eoMPk_B?$(SUD)4Akm6|0x`j|CBT>65Mm9ceE8ymtva|Iy3t=cx&5xN<5o8(z2uc zQXNIkor~@5t6kK!wV~4?NV1|-fY}~5*!a#Y_g~H|!0=js#AEhQD$2ota}PbyrO9mW zLsx}4ELq>x3I%-W%>Xn#kJi1qVT(WuJql408*{OMhj%&A2;n}(nJo8!A0Ng_loT?g z8a^{eAOlA-f2=avD&utt>q)4FIi=K~C!0gNu zVIh2X#vrI#_BwC5=&q}cu0Pf^SEwcO_MZ@i7cJ}O*5`|nF2$bopy`B(-Hq7&{IwOQ z(munt&Y+kh9yfA*L7v9ebaY-4{HJ;);ri9TNdso--`pr`%70jVGCgCG*+3?7i3NGv zzh(k`T0j5hhQS$M_B(2MQ>%4>Q4QJI-7^AT6f7JAPknfll`!zFJ#d-af;p9#1v@pG z+~QFdvB2-M>$8(yGS(6RFsQ`{;^;$AOJe&U?lMPWa@zSo^!jLxy+MyZLVJDiK#dMl zvlj4bAD+L*S^&(%tZSe&PpIl2KP`tvE29sMdT0s|L6Z1dSL%Z`q&>%sgl&_cPD9j- zg@MZ7wYj7Dvg(`FVZ8hNW58bw3eX2F-{<{;46LN$C7cpW0!k<8qpO_p&43^n$^&D) zwkIH%z5eVIAaj>e04y)NDZqNQ@3(iQ${h+YgxS+~^MQ(=(P=b>pxPUN^;9L0d-FVP z&A_u+!J9M|;+IXwH^ zsRRq(52&!Vl+`twPs0Lz^oraZeSyLLLtLswgYTlWBAQ5A8PuK?m$v7{z!UlJxLFK# zx-LguM|y6Y?u+CZOe#_VaMW{ves}_8&qdIV{W(VcKj;6`@1kejEBxZJV**HrZ@(eu zORZ;ik>$+99ts(hcGbpOrE$Lefu_-8bal#QuonQ=1z{=m>Do?M$Wb-!``z!c6o<&W zrXtbXAKj;%Qch5%>j_XvV|k7@P`l_{Vy)T@U>A)mol^J?foJMD3u54)*q}N2g9eIo zUltY**W5=020JEl8gh!TZ^_sm7=|*s=J)Vns@KJ|kxTNWUzBFf*?@2;kaZidz^W|~x?Hk!o{MisQ(PNXngQm@w@A)m020YZwDYa+`W zzs1V%`!@^xCmGuQGbr$f+;TNmHs7a=pxzfY;;o5oiW%ZM`Z@*r6}>pQt`TpUu()0L z%ZyQlxOZQWuty{^bNf0!UIs+1OZSWvK;#h!%AE@Z>~VI-lsNC~qV*tg7tOpqD(%MW z4>ON%-rd{FPv<=&a<9s>>VUohv7L{N2-K~tEP+f(|n`koW&~I6up#D3|?ZR7c0b7 zWYDgZ-lMPY>REEjkOT~C0)yWCMb%7#GMN2c8|E%W#6 zaig1|<1aZt*N^XISobOS@Yfa>|F48*#R>58_dmh;G_m!YAFNV+)O++rl0C_+P#maI zZ7xLlq}bK)M(tgSyZq;`kZ1Q5Cz*o-#~cGMm3I*I>x1i@4xBnZ*B`WDqv=oSr1gw({UmXTB&B33J$^spjcc`l+C5KRv$++ zB-!(qFHjSkLeh1b-RhCbsgiH`lRjp0T{U)Ad=9#Z`M&r0r(bo}&BDs;m(5L$Y#E6~ z^+(em5Q)x_aAYgBfQg`KyH&MN=#1hcc@t92^=+mjpIL;5l&5yE8SDY|!%zeVkw^j+ zJ#o4I`V>&xvr9N-Smp3R5UT|>WRLXpR)j4&4XrB$Gsv3VVtXFK9XpqF;Bw-tf0FKh zC1sMLjrEPTjys;Lk^x>AUC5Z-t7%OSX@##gp{sC@&UYW)EoI9i<;8)qm9VCxNBv}| zcuwWa?^ab+H@(DfH`z>n{EqQI;KfpO8RuK<@FfQ(I4O&4^AnJhfZ9x*&1W|(qKytn z+#5TG_Co;d1|;$p0VUj>7y+iZxo}Q#EdBBGH50U=$?(n7pDwa#BHTwf1!O%3Qr1k! z@-OHuSGxQD2giy&5-8v1ZV1W}&*Y}8l`Hs1wjwJukMY(^+lMcZErXnogCjm<9YR8@g8KP2VVsS#)_-2kP868P*x zsB6=-WJart>`aHb-55tXi-eXY&U%M*>$i~B1zHEFR{C4HE4=p!n@ zQmQ+3v%f44!dekQAV`)t9R=rIIX7K8{7e6;n|{d<%Q+GPcwG(3OkX3qM;wr!$gGHb zhl83S(@u+ZW2PlO3%>TVRxdpt0y~nz%|9ic-|&Su#=$yaN4}-1&dvDCsyz_l6pN-M z8`$3FUi<@yElhKcY|!V(8PrucQ0-NA;+iAJ*(9I}(<@TAY@prrO|Z3v96NuwRh z&U^ssHf7dm%GR|D_BAooYaH8XfYiUffQou>|6xw^M^3RI2J6|H4`?!s5a)rjbOI6i zKXyWH!M?JX&-yF1zv-=Rj@N{&F8SjO*ILUS)JMd|Ai<`9T(SZur`!IBf>8Zm;Nx z1(wgpCCsbSfrBZGCjHOftzXtFQD+&R9fHs5~5qWxNw=jG$aof8_<(_=j^xt-0tRKiZ-JEv#O z6WebN%9ntxOYS2lP0=hj)V2>Y;EV#o2pEXkJ>ET*-RXroZ@=tLZVSC@8wJmipttv$) za~I!Ku~JAq#IsjYz<;sk&av`Qx70pq+?`0j5BQ^+y|ERw#3=yW(A^*X&VB65duNL# zD%DZ1{F~$eUqS$lk@4(`7$KdbEJ_L^lR;UtezF!#ArQC|(sS@a(W=_i_{{(oDC3)@ zSM&DRzK1wr%Kpkt_Lokbg`)tZX4DzW@7FHFWY##KyhTrP5aTipPXwaj2umj2K3vy> za5Lpjo4ZTgER_$NaTlSZ40~b~x1*td9>E3O=O2h}d^}j77~Kaot^|LNP#og^)18U7 z5?}w)I-guhrn}J0X=XOM`~~8uoPcX2eq7&jS@W^OV|?Epd9N$v#NKH>k?k_)>B7-Z zr1ipO&f~kq&r%DiJ$(O0M?pobj$9)2Jy`ud&2mTV`E3o3sBB~$8H2$*ad>xn$txP8 z-k1)(06w5FYS0=Sbuy=T$JCU3D8Ka$B8j^dbD(cW8RvmaWkKxWVB4^XI#w>$`iBROnqwxOhLA8Mk!9=yg|sQn#hO7 zk4ldIG&SuLwYo1lnQS)o!A8zP4}_$xZkHQ&)L7jP|&bE%k%YjOimAeeh4 zTWN|8nyQ6kvgAX5bdxBNxXCyBkle{!0C~k7yI({%6y9Ys67>d1Go<(DndG08QFOTd zuCi#t`r#s5Z(Uc>^xY`(;~6t>m;sXqbFDw9WM2nPFdQYDi>lNYJ1w}=-xq^dJ73~D zDbhUAniT>)ouEMZwMpmtaUN)+KoL;{0oFo{m00C4q+AB=_$m*kO1xt;ENor?p>-k4TR^!#rWoHaqe@FBJETH5E? zrS4_+>%3_WVc!?BN1KI^Glh7L9`eFJ>8A$8Ax;MqFZ^2<6gHUA5@SuAC*2R&*yMdl zW0PTQx74-@4#ox8t)CKbTv0WNTeBT?52x3;-|KUB*0)J&zoZrWGw(LwSLA22)9P>3f!U2*vkItgqn# zaB3n-IVORbCT9gE3ht5|4fm}?p?^j1^Si$q9XyV^Z?#D2I6Q&4;7L>Me-_*@ldp(* z_vVb-!FS=w=IR-XchjTc30>I5WWolbr~uG^XIv-rr@)}VA77D?_zvF71Wn#v3%mqm z`=+(5q=ESf$F=oYIZa@I&YD7;9%X$aVV83I)vwPJPkdxfO}9tf+{JHmc(ryKXy#>) zFC3_0^R~3#oM$Qh<24OP29GG)^I3ot^kYyjNivY_&X0J%g;2DvOScLc^BDRhSMxsu z8V8naP(XRcm3N+0k@+0H$vht@S=r1bCeo$QJOhRUa+u9?n{1{g0fqVXZ;%ming%r$ zFK)!=OaemWRt;Pwx=DHLy6CGg=wTqYB@Q*YFeF$P3)+8yHZo;sI|fnGM%Z1X4k6De z%{B?hhQ26e7P_Hz|31odE|Y&YU3T?)Uhr@DY6VU9lp%!19aaVC08&rga#eq~6K!u2 z88`FJAcVv?Hj&SnsWlr?j@kK=9bqmTqiUA#aBsihX<-%ET`U)5f#V%ldOap-yl|G| z+WKkU9^J{*WtN@Ol!1k+>y>H?7v*tmlyVw|g$kgO>6)*QZHP8E&}`}H=MSDzq5u3> za90-#hA6J%(?Q z)pJk+(USK4CE2;&I^Fb&Jf*l)#V(po%B`mk*5FHztgkRt*t)#7r;blQn~)}8a3Je` z5_!Fc0YL(Yul@eTC4gJ+pL{&}71dn52&)Dj{B4(Z5q{1L$`xzm6I79K;xmorF$%fw z8wO;S&O3X`1HVB)KfK1?{EKyQ2Ux*Q%08g>diqi*FE!`im|xrNVoXwVAk3 zrl#HI3nKt|`!uAJlVO2Y&u=sWskz1ZaOvDjKIE>eXN0KmIQxp=7i^a?;@jfR71)ZN zJ_Rk1^7zVvR3x_YoU{AM;C0juszqx61=N2V{8!vJzBtJ46W-HhY{g#;h280vy5THQ zK(28flCX81nR%|H;Ak!9HlEOM&;|i+y$}yeqZ0(amV1eWVl%yFxVb?PM;64T?~trl zmD`7S_l*S56q81~K+gnHX`CF4)XrS?Fe7<2f1C<}M&v*8I@>MvACsX2k+Up1&3E`7Z2WupjJ*yM zB!wjcl}ci6#15)g?OPm1KQF7STXm52}|8o)4i+77n*!_(ccWE^1o^ynU<5? z+jiQ43kWRJxLY7Q5n;$iM3@sQukp#l3ztEZHD_)554=gBnlOHm<2K7u5p5NPc+UXZ z!}!Y&W%?gxG22MKUaoiDRnYTx?j7? z1)TW8B%g#M!pQC}x70Is3$*Xq9V!01-cWuWTg%R$s*snqmcKuL5n~CsZzt^2!XXnt zvkoy}qQ6;n9DKRzIwxP{7PuxsCn6tiV$v3ir|`qP403n5ax!ou2C#k_qBqjMFxA1k z!(3pmJE-V$H)uO^&?AfXmtdf30Ez6jtbICUAp=RzTuR(A#&q?*eU9b!(d9U-6RA~w zsTR$jrn0^?%#y*yw`bZ-OHrX0HEUdv-kgZ1ck_DtR&PH{QTC66aO!pb#2|pPz}}x7 z)oIO;-GGk(wJ)-}u*z|kiNAx^ul>VT3p=Cy8)s*|yub;o_Eju<>N1-6xJqyrj5kcI z^&C@a8ouiLWQiPx8RtZ;83cxJn^II%+=wd0&^d4&5HX&N6Pd z+pXeN^;+-~4qLR3aHjAW6P?DMpYkTD_?pl!2ZmV8PhfTZ8F&hUPHZQ(T4od9TH-;k zUmVC$@OBJ^J}r4L$v}&Fuy&wsOceO12R=(u7Xx(+!Rkt5>c9ud{Zz8Z%L_UBOGW1! zS8(T!yYat9&nFZ(vVK}DG_k@dWPUE>H>o8j?7UA98+A1T zYio<-@4$h|cy{33j=I1npaP`WL0i!NIi!TM*#D2<+iRU^5a@HJ^F_CXiJW5vnn7i+(y$okR(j7<8klO4~-4e7Iy_WSh=<6@(? zpm!2a9&B1cvbA&a1Ai?PN{(7dQv~af8l<2BXR!yO`5JiE=q{SynoAA$E@pk)t|a5e zu~N}1z@d6Vc>=RmU!*KW5Nis!=_t3T^rDlAcIj=V7G`ugABEmmiqN2)m5^v*;HI@; zVlt>Rv>45dO0i5StJ!}OZ>R9h+~zOVi;JhFWtAMy)t%P)U-A?`&=|P7cTK~K zetJJD_ZvZ)S1A7D@rg-P0T8Nz7I!FwvSCMc)<3EoI#TN*gSP{QC-_O4>Sf1iFN67BsTo|W;<%uZB=B7p*l(jPzoy-o{(9&2-1*}eL>gVuxqojZJ zmq1zQYyixgYQp zPwPfCbkv?Y#@I56Zt?46fPe0w0(*P}t=LC+6aJoyMs}nF)3$D2KV#wfS|wn=WrRJUGeLGz381ZkESB<;d!h8h zZL=&x6qusJZ`ucxI|#H)d#dzl!&qy!K`2=@r0mpm6-G5eP60%EB`>yx#swWGVg#P9 z9fg+0ePS6PW+9F}fj3D?a&oPr8Q&QHx2C&NI@7o`b~H+D?=_T5R=;M_QVX3eX{@zs zAcwOZ-YNjAeC=0PU&k3bkp|*C5d#W7&?FfAv)Ok!cxYc`eH*|^0C`p;DmgyhXC(?; zc$|2Jvk-j+*aedDkUyd46+_8~^?q%t4BHA&PnbS|cnh4Q0EhBU$kp`@F#va%s$lht zzGZmAw6{hO_B9`81~YR}G_DdlOn_t_l2%YT3gT5(v@FE53e3{6Z2*{!1!5q}ekV-c z?&`0wh!BxwFHBeP%Gvet*Me@H`aXUv2IcFqMZ6QTbG7Fp77X?Se*L>QF?N<+qIQ6n zFn8;-^_ClDi$}S6RFlUha3@-+P7nX+qX?TOdh7Ka7-l4@xo#bNhmD!2+X~sv%4SgESTqh^q@gCOptc*+gQn|z-JPeZ*XB18y$JwK(_npTI8x6=7EV>38Se0Z}PvIr@wMI@i3b>;yoSex6mAeOSU)Q0!%&YSK;d7c|=120wED)*gZ44#1EmDDGXhIZyj7Q2e7X! zHytXp;FZ|4;@3|Z+mrAdL+)*6#b?^>{ze(g|Iv}k)z{lEbT=_s%}4GI$OG)_rNkzG zD!lbA4I^(xNtc*Z^{pr;@3ml8>f}2W zwy0Eseo{4K1ICNKd%D7Ng5`|O{iS5Un=lF4?R_^B^lFqIY?I#M$}r%-{b-x~qjTO# zKv1zHteswdNKkf^QV%g_5S;0MCIy{9B4!B`T8P>KWa?C8yPl2oY7V!#(3UdyJ+}AI zy3rada@X?V+9I&wT?GpXy9-9=4l>1k$Go;_Y6VxSbETs42g!v~V3m(~uk%G@L)%2Y zx>`HPLdWgLKfV(Ar9=%o3brU)$+aTA$jxQj=P;id1XJyd9$lF+C<5-icopv2h(Tz@ zl$0O*9p(_d8~&=tK86rfq8t}}e$yw*BY)I%k4oXr^}kM-7b5FJu05JuRuFGe9gEdQ zv5FeoH7IL|CfsU!dk2&7i1Pm{$l*%jqP_z>%!aYnVkgge7IrI(-hg&WE+(s4`&2pu z^}`nIJbH@$3D5H?m_+ISAli}JntRqZ<9-Tqz^Lzq1&(cL!@3J2QOC!Tosa#^hVs(U z6sqzACrDX6!R>Iq%9j{jrDfJql!8HF4!dld0;0uQQE{k}!2M;g0O*liM!>MfOlXtd zDYC6YheqlB`@kjkCQfl49*?EtFsg$(R$A&8f63||(}j#0Kbf!pqQ$@}CDdU|^Vq;Y zWhnCeZ%A?zrAu)a>bx^1_{gH6}|IpkZ>>vH@a&+WS&Tt zD^4%)D^rK1ltQQi;H0EkOWnLSR(F;kccw6dZXMODG5@YDdh%snW3sLMbS>&a$Ts;i7HS3Y5c&JU`alpHApiX-^Ns^T_jmO3%4POC^%Y)G2@$D( ze!KObGvBE$L&P`}no_Xitj9voG@T|ONUEW4t56I!W(vC;q+c84p+8pOZ(G_2lo#8V zf`qDRRhG%dMh`p``m4mQ~_L$D#>ft`M31u@1>q&{!6>@lp1<_VXTs{h4<$A zKIHm6?bCBW=kS1Q&EmM8CuzYNGkO|Go-vKi*9i97v4sEO+z?=>|0(Cjs`pms{Ti74 z$1z(xt5$*|N8zgnQ9#}}Zaxp2xlrdUMr?lPgZ(5S>1oJMt2bX$SuOw;kNr5bA%!yA zX00CJjRr*3Wh5M|ce==x%BSz>{wit@0!N}4M{V}Fs77_Yc}}O$nwP-pMboSPRl(BT z0tsGrk6kCsh=ZnWxV<@4+2?UKR57tx=z)t)XJ5CKa2B{0V;*q_Qn7b*s&>4XHMm;e#||VtmT6W{E0LZ$>k$6`@ZJp<@eN#7z(0 zrAt|}*01pY+j9B{9l7Y#a6aCii?l=KU#l1iQCd5sRCjXPJ*7N|&A+0ldS6s%KVFr% zX@n(z%i7hfCVq2%6xA&HTy`F!+x(@XH_%=~F-7AcFy(}m`~9YBfADnJ2V+@Q1G<%- zh-8T9OmAPc$N;xKDZDQSGdI8f$8eVSVMPT6vMDn`|JjEN5|sfw$LN|I9^-sa-$ZqJ zU@(SFq6W|$()vz9$(gr6D{KBuF;$Sw#0zdHeGr>uu!H{M=N`%ijeL!HteDO3Mw&SsDXNSnNUv2N%0-u1D{7O z`Ln#yisPVQ5m8+0C~*McOHI>cJ~0Fdira{=*RBs-NS zH0~oPlc(&d%|qf058hpJXeg>)iADU764@6t!P{~JSFIViRN<&9Hh1E|9GSc)b|3 z;Prk(jv9XEj4Zl7B#>I%qB6zN+F(AmWb_DT5Iw5>^uDr#iDN|n3*oYg5Cwj$z6sJd z)Ga3zK*3dWxQQ9G`@g*a)F2g6IfM9cw?m@rGc8w|T8PhMw!!z=!mjZ0?0i7`=%DuC zJn!6jNqfr-%GnL-K`tPpRZ8+P0aB`=gmNu}rI-T=dYtUO|ef^qt4pL&OcvUkT^6emF{-lk~keX9G&q z96*B^Uu_BzQ$>QQ_Lx0e$n`myF{;igei7bQ8U>Sr!c7Gn-3%8S407LJC2-aaPh78; zV{tgV)e812`9;Eht4wPU*@v*>l?509T?cLixA>h1W)vWM+$z0oOv`FSk0HxwFqQreR1f7K|_Gcl}Mqu|~Z4Fc5#4Oo|U zVz%qXl;Ow10dLN4nwRqm3+%B#tyvec-lW`1u|h{!-Vuo?3e{`6NT^>j_9VW;!fn7W zFVG~x-!lRHwRJxNUjdY(T#a*Wpn0`C2ucChjcf$3rirh1d08Bg{op2Jka{h7JZFPi zi?Wpt4a6+*gM$AhXZ>(uHR}ctb)$O5(dFj)1Y;7Ig;s?s;G1-+uSe1`buL~W5koo; zw(`q430D6%;`!M&>y@Vm98_n(V2uqp`7$mGk?)v13yTuz&hbwiJP~n_7YgzyI&xsF8-@2mua1!Y&NYJIJA>Zyvoh!Vbun?bkXLz&Q zYJUvawm4($+N+Ft4H)G$`j*T6EbwIM^IUJz0?pbT()c-9B{Q`zv)Zo!!>>h1{W&s+ zRl`K%`XEx6XYB$44BPqeUuWpkiG%3YI&Uxdm;%l3Sa&$@&@b-+>sZS%)Z5l}unJcg z>_K2qOhi(D)fQTMqq_H3^>+g^+Xty;N`X+pyJ3j8twh~TF#$+^X}L1sNnA|tWj7s8 zN@zbj@K$lqD@2p^<)MM#nd>tBawxLgk+vh~zFPQ1Vnp9WoX;5QU!XSIok^sf?N?%` z1IaMonMsPU9>%ugP%(F{xn=A5g7^Ywuu}ewiZ*N8)V|u%hqqMnENmOqqdh-r?T@AM z^_t ziG>@T>EFsG84nJN*B?|44CS8U1S`_}?|v}-z_9G`v=^lVDxkQ=c+frR5~RXFW$yH5CD2`gvpdza(W3(U)&vj{UJLf( z<~rodyr+`>*6CNUCjQMLYhy&M)~@sH<7b!i0#b*3mw{3^g}rJZ8?*DIoH8(^;{Zc2 zD-~a;twnv~c{!^&3@iRsThL((^tH zWTjqu{Ik-OZM5Z8$^G{s{|FHa?SqF8vg=$gSl=hlTEN`78`&HK&|5AB zC4|4vlfS&_@)~8z2>)FY_;N9fUFgjaG8R&b_0Lyad_RvuOVu|kKVPOC?X}7+bSNx; zb)EXaKF-66Igc&AkAJO4KsU;&a^6!0_piy2W=spWF9%+V8sEiN8IjXCIgV5OS3B#G zX8BK}pF(pd%h@DcaN5G@)dAeO>2It+poi`J$xI=aejrrvsC!VB)1XOdBy zX5}Ycy$ZL#gN@*M-xtlfA>Yhh?K4u;L6eTrCqFrA{n;*YmrqO`ZFf=%OO`(#I_BrT zdPPth7+&-QpE|yHn`0kj9)(L;5CCQMKXdZ`yX|_0fnBH)u~XlNm1dCzXb{}j{UY-U zDnzVGRIqfqRqk-1*!y~n=8rcs!v&kOG^-OC6K~&bbF6PULX;Qo_8b`=GtFr6;{FG8 z{&HCJ$T;yrV-Uq&(#&oE=UeqX!B}tSW2a8-NTCy{{0R|si|hgc;`0l(U$=Ju8xPe7 zg1C^PtkkS5ky-9LK^nG~={qM@*dnVi*PPS0-+4(Uv_DHwjaiqvY}@>?25xN^alo8@ z+_+@MO4imc1zk_#1TPzTT(%KXi8nPEU2P<4Z7@VG!A0&=#lNe&gR zKn~{w35?~ku4$tO-8F(Y4uUjoLnWRwYH-W_Cy~okh{ZCUCIBN3A159oNeH940MA2E zf=gaE&4N%sHp~L*%#PI;K;2~^=lXFEsl=Bjp*=P<+9jayYYzU(^f&kHN0_+sFGxT! zQA_Fe1&-m_1UOKOq}A>0tQ#lt-OBqxroIJh&sAwNib=muSqd;X#g{B163BhgNqSV_ zLSzP3nLCzN_8yk=l{Bh=hkwN-Q`7Tltx>RfM2%`p`U$6EyO<#)qDL*##?QjI+ zfzHBd#d?oo+5F9&CwV-y8j!E^lfmb4Ex|AxrOu<;QdWab+0($kI-T7O5a0PQM7g>V zNTi-(p6z-)o|gCvvL8rk)U5wsc889iH!8mm=&yGypZ3VYSG4HL=wO?W?t|wa_qO&P zRsiByMsgn7V^#0u5U)6gM%0g@h5i6`)d0e-#5(~*!oH)?+{{k?ceI=JV#W7UK(QxBsrs>E9tA;x zYL%2&`uFfEH&BemAYVDX!jkpt?_5#*e>8msR8-yf_JBx4FUqv-6cb} zbeA9?UDDl33?N-1IfMvEmvqO_`9HkB?^}x{I5YRmJ^So<_Os7DyO{Axty*~QO0;t` zTl{kk3i-z<|Gs7#WN<(%EYMYIOqZ=(L)70^AAUp;wlD301#ujwe|6tU zs|^*RdU}Q@jLS*?9&Nfc$WKwQC%r;rz<|@H_}7;IQ2F9OXwc*?1L3#n9yx0|(}_Ky z^X)Qw@nD}oynw@hCKqrFoD0;d@EnWN4$n@AgbR*|Wm^8a5~w=(be$;CW`VMr%Dw3# z4CYHCMYzR+Jb{^3(VR6Ah!~z8X{^j~zrC8@p0Tlh=SF$Qf<>beXIk7?i2hu_?fI|4 zAiIAT{_{U}zJ047V-r~Q1|cllk6Leb3?unuE655$@4(MArUK@OM14~wh4V-FZP#V4 zysX*ogWuMV4^Ic`>+eJpxW|`)m-o~fh|0IXZma5f@VoG*IYu}KYAP>bZ1Bxp_1T)T zQ-WsZ2HWXpJ!b2^ejSEHlHY;&CQs2NYT3UIPC}#YW+&~Y2R5sE_Q=@2q`6(sj;C+YraH)F((sXVPLqpre|l6Xb6eRkV>t)i@*qMo9i z@=7LZfzRa?GsnNCv!)b+GtIN6Gv6m^?utC(-Vtnlvn!9Gl^$>EJ)DVoqNDz;d!0gy zX?~6m+J41KXpQF#L``R9S#Ui`>ZejWrAR1P8J!sKYjT^_5y&}9!fW$0c%mt=qIy)T zg<6$SIhow4!(v>wJ;Fp*8uJS;?0z_*g*F zZR5~u|9KV@Bk8V)1EkG@zRZTvOmV>E^cPf|p7x84L8zjQLESgJ1p|$n!4BWg(i-!5 zBbgpb3h#tl2i%s3MwdoobHlvfA2Gi-{4_eDncP0(0*|Nj@|9ygvfg~Vsy35HSi=9H z(yjH!J5Q3yX0e^A>d>4Edd?oxD(qY-N92aZ+^f>6&UdfyqRm!DkDM1dUtXo%9ToIP z?YZW{wVr5}9X;(d^gC2VCf)8>{D@ZkZfbQk>37qm7+WB{sgh{p3MQ!Zh%>HQ?Km`0 zDgaEezZTK=uJ#?*GfMN*Upvjxy-rBuVYj;lH8Mf2;+B%2;3`y_fYDesm`_!04uR-G?Pcl4l%e&wSDik*t|CcTSo zRBOkL$wOHzL95lN1C;_|-?__L_s8w$Rm)!jmSzSI|t=3@fJZ&bYV+t<+dgr=STk%rV~PuKH}LR7PgNheKRONZR?qX9x}{-i_ex6vrHi|p z!-|+&C6W25rV0j;cz==|REQqjhx{ju^8O`fAB^6=Mku8G*}x*IXzCyz~Ek+08fEIfzY#ZAA1H4K)%F9w41QsOof$D_p#n)ZfYfnQ5px z7u!Gpt-swWDCf;cGmZYtW%U39cj(2vNbiE6BaK1AkJ6`(EV5VtD zFB>^^$0p<7dT>0N$i49uzcQj=M zI6>NXhj-p>H!9q2X^LGOMj4<|k?ysB$zDYi=o;8xz$cSdXJ1Bv@w~G{j)xef zl;N3vRc)N9Dcj@xoifTW-S+_@7@HC$tge42%F$S4U-_#%{3DT{?nfjtM?t{EC7lm; zycV82U=~Zf6|Vcj-?8->d(I8ox_^L*YPJxKD8I@QIWXGBRx`eyJRE&5C*qsLcO4sz ze{JJdfU;8b*V*^Y7!Wn22zPnJC-hMHZPybfm*T=XxNet-&q-fl`i@F5)rXQQ^4PmX zKld6q?BQ;g>b4f+%1nIYHkY`b&Gl+-tfS=c>c=KCG_Y*W96c*y*2!2uVa>*s`stKsV8Al`gr zn&VkB{+z0P)KU)fj~@k3@z}EnL{8Qwn|Jm+jD-`v98T?DSK8w7K65$$(?i8jGiCVl zwRT1p=3p{m5?f$+1h%Ek5&HBWoJ#&wah}`e!7|i26v1cj3XsRc90dx!ZWHz88I{rc zeSIT}GkN+xp;jHO)a33Zbbj<}?>_5Lw#7$P#a3-+yzT2zfgR}b7<{g{?##>ASV((A z>sMerQK6CR{3dIE!S|RvpC5iyM}33d;9Gy}?|1j%Ok>{bBDM(2|IM?=6xl7(EkgFp zNEXj|M6{s%PUDY2FX3Yk_;?-32TRd6LwmC?W2t{>EP$kF3z{-X$GHbJD| zWiJ%PpYMelSsK*?e_&-ju@k2npL>9C^yxU{C1NZjmbdXlrU`R$Z(~^X^=n{{sD2(D zeH_xfTliylFdms=*S3y3d(x}<%1@KIQE!r{A~Ra*@Y>B6bDD0pTvcGwj-EF`2J%C{ z2e@j=xrdZYwi4K_HIKU`a=c@bU;SF9OX&ZJ=eI(iKQ$6DkKa_0Iy z>`(11lM>fX!Q@!OyyLcyi|y5Qgh+bbmzr7OH?=D>Js1jXep6*_{-dykjF<)KCnPOY zTE5iTQss5_8;yG8-dFJpj1zdF2OTr}jLv+kL3Im?tlO=web&1ZHAK|SH@3HP8ha9_J9Jd%lS{_*r)#QxoR+~e6t8z*BGEe8Wd zeI{34KKqZdUL*)c0?#(H-;kI4UcgcK;;s-A9~PiipOJHWUe%Uj9^A#zl_q(jr6zm> zSEigMyUF=a2@SWbV}tghQV zB^WdIrSD;zpfpuvof|bfBvCM*+UK8$Mz3P65UX`j`zyT{(vxiIc8^8rO_H$)eUHQL zq>H1zf3an2`Ju`77#Bz5N03E6L%Ife%R$6k`#6$(f27LV=N);XVjtdfn!Dq1M&=6v z&Z)ZiBkKTGp{XWV^fbRo-84q=-;>kjlcaw-wI~l=%Ez-uvP$v|XvyhBJ_}$}v@0e1 zZ->66+z(b*HTdhp64EG6`kuNXCeO1N?B4rttJCwA?W3x42HGw+t zVuj)B6|6OTk;}*Mq0t~Pm_=%g0Z>Zc+waus>CHa-WkvH8o#x7i0>Mf83%wJdaZ?tI1#$0{AKWgRTaM!&$bHIYbye%+yv~owL>EcpvU8 zVb@YUd9=c%ibbMLA`5FmEjuo0n%}P{qet|z6?!rH=f0Mu(o9FYi2HJ}zRG770q3QT z*p0<0zfU$3%eWiN%Oj;AP1pRPZ~tMiz^E;XFf8reJ7ytAokT-xkL|41O9oZ_zjH4y zL>8*eGrhf3PFbjZMWo)n3(JseIo?5V!C28fTUyfIP}Vh4$IPMEpq4)&9}5)v_cp9u z#p1ZxOf1=zq*G%-XEN-!Nq#W_&`X6c<{#WWj~YUfPFrvK_T2;(iwVg5&gK-~02K{A zwE4C=oHtz|bh1WzdUv!y(qeYUcK2O8a4T{Ya|51uGYtf%3;&g7r)Zok-($r%#CW&B zi82j@p-M^Uy_B*}P`{S+L$00x)RgUvOCPu0iLOsi`z4EH=zV+GbkJ(;HsE#VGqG2k zP^6i)pm4DbV438nV?jbuLqj!bP0!;RU0)%fn#eVu!kmXqTdu$Ch)-cuIvnyc{w+J# zpA2`TYJ|{JNn&-WDhxaJ6r}%-LhHpy&qbx*2yfwqyw#oDT>hzWs+)T70 zXD)rSzSfj=0)71aq@*jYC(`^wBIai^IkuG0QCy{?x2u0vi?^2F$L5={k39!A>^&cs znxQ5nbU{%V=Q*>&6|uF-7E7J3iN&2HJg;VIHJmAgV|)BAU)=OzYH<%-YS5BK3$rt6a4ZcMy{dY?J$d?2yaW{%KR2^85>T2WcuI_kO^Tz|j zMJc>o%Cy4o`Hp-ls3GO(x9exEkw8b+BR>q!kWrBS5>BVu)=N^XORkI-5_%(K-)u(R ze7edCdDNZBv%o#o9#!|Rt%H9!qjDW3QCi_9oLLr)Up@rHi-t`el!T;{9 z@7lzK8&;n|+C}!f(D!><t`eDN=nm)GDW<(+3k$`YIJX@8u4zI7i)rKs?3|Meha zW~tuWXk|K$SbKWIT_%~f5pL>iiQgMXL>YG}?I5TPA)<3L8aK`V;^@$cLNvadt1bU& zyC(i<84A-=8Q)%u+nrf+@hBAX+qtove$2lY52L(%dsDxSy-3z%0Bfj5?1E^#cS+;4zp_2*AaScgnvm#&XW`{iob8ucg| zo(q2*4i#4XVK(t^e%wtX7u&w;J#O8~c}17jCGU^RzZ#$0H!Xe@>83mS{QivR@9`@r zE&*7q(~uDLrQpR%k~Mqc*x~GP8p}yn&hp=~%V)q}Zrs06$!O?Ccps~nJ*3C`rpB`y zdD5~Zu!3(UfrPLRsx=S7hDCy72e%#QE3+BW^==!&G zG5q8Kd)o!|N$B@}d*ahb9rCGH`IMM?AK$~82pTuHol>dl9q0q_NsUWwxezcCq$&-1r#BR0CYqM}&P4-TK z(%}R>_oVda5XQx$?qbJg^+_y^ybs*gK|1bhjEd|vXOANr1%Yv9W_p(s-efcQOVRib zabe|S^`2t(jK&Wy86>=_0`a1rs)$+n<%PDL2!$6F@pEs{Fg-z@8?#Tr--wwmax3F= zq)Jb>axMkL>E8e&emUztQy#utF#eA7mAFj1Q`^<}gb1*`uRZ%M$xxD|%J>+C7%JKG zVkmf?ST-PzE&K)pH#^1u^IQLC5L;=j-9<}vVkM`a)zwQ;oHR9T%p-Qc-)Bs`ob3B5 z^k>}iU+q_lrn%&x@akIICZh@)E6;Si1f~T|7>pl`i3BuY`9z03oYa2@8E+sv0kf2j%u%FhiEL8yIhHd`Ou0{pidGTsCd@cnyufuVS4F`N5kkfRu2Sru-btV;mZe84R`nZnD6}p z@^Y!c!>@E-U-z3m8xYJ$4l>M2?c!HdEI4i>;r#IIgXLnpZh6OKz%pf86Q%RT_T>`( z?M3@OiS2;Ad0Dw{FpR>)i`(PL$L=;agy8R@)@_wJVxui#eoI&A8`N z%#`tlk2sHxrYd}}uBe3_q)bOwE7GW;Tt<3(c4q^b&tK_M@H#9mMw5-NV6-=H<>~ay z$e@+3YVzEcofrtLjQa9}Z@SNG%u37JEvOk%ZRGP5Gw8%>*a!wUbI^))in3Y{d*M&>MD8wzRklKg-a(kwE%S-;XxxE1)Lq(8!~}xS~4Q#POhbg=R{C!w(r& z#Gmx&_`KyTPSN`|$0P06G&0+Nt**nW1RT_gflG1ydg8@@l5QGANYNMuwL2ZR@b1Ni{Lk@;MR@5~R|4+g#$FuwRcG;d+*YRl0=Ehq`| z^!)mplrN^*B`G>!;ztfcsgd&+smM^e2T7 z$|46)*flgVF6yt35Gf+pOLz>VI3$4`Mko-Is*5lm(CP4v(%b!!5#>kE?sYNvYZ$W6HXi5@~-@OVqX|qfX zUgjmne)yB%`?LSQ7r+O!1l**57xfk5Fs`oY2yThg`>^XNo7dT#8_$XpU){vE&a7YFCF;4mHzF0R#6eP`t#6%}lPJUq#D(IT&3cMJ{cGm$1}Xtgpw5T*v)Ef z?C;mzcPN1PYq;TAJ(6(;eP>W}nXs8*K{}@xq7dn~Z{PM4DGH8UZ5!TsZfjfkVc<>& zzLD{zfUmZ9SROF%LIR@rjY<3={%wnakA6)U`nA;QV2I(HMlCZynhPzjL5tIBik`tr zsIC!dh;&^38=TG;gkb^F3~(L%;MxGu?4pW_{S0S*+e+xnAhP+D4BEIV&~&~nOgYr zd%|NgbMvQ@cO&npGp_z5w=w_$u_nrDXVkPU?AwnV<+=?WGw!YX(yX7kS-CeOE$% zI8s=Zi6g)nzW>e-m*-76_`E@P(pXcDsWK*6jktWG>gwu-VV}K^iEQ1GJo8##)6TZ;!aaGKh{Av%BO8- z^IqhhUS5g?qnoVy6VDNFiBV3Nx;hL2=YAHlq^i#KN+vE&wgA|WPJ1; zYGGe4liB6vj^1rO<&W=_W0`8Fu1=K8)TmP>#&TuOLH2?I*FF|@5h%^z z#GZ`s;HSMGyGl!t(aFD*T8?>Djojli%ex66^dQR~JzdHkT4r3Uj)uF`&IYHu!wA0i z0_k=W1q(B?LN8BG&-g-1ySf>nC)l6NtoUe+92uJ_C<_YUZy?#FR@4Z1xrU7r;ufq1KDb-C(VcLqJRvyrod7MEZR7CvN#+S!amrmk|4p{t z>5{d`-(uF?KU25(uAd`=G=QOfU(&0;JNLwOcu829K%}BRZcZAKweF#>oS;R6FI}!v zYZX9*x+SpWx?!Z91PwQt-ab({J3V~?Bt%7pyWKbh9Oqt1NeLIw;;)F+M)}bM#Cz3r z2ANG~{yA7`A-TU%YGE%NT49;m&i=(xo1};Ri#8K6gBU()Ak9WDQ#WY{76xj-uf@eh zJwLxT$F3)u?4Z$}ndE72ue8KyjYeOVi8hIKYGDr?`aEkGx#>JTYC~*lYRX`e`l8e} zX3)%wOMd&cyea{jSR#y1qZ9p0p(V7F{R>PR)xXddh$cnuMe(+0GEAFe7)h(0vRsJSG;w7G}iQ2KB>jP`Bhg(rQiv=xZv7cE|ARuKG%F2WQ!vk%NGc>cwf z&+z=gQ1OUWiKyjzvpgEG7>*!Vz)Ee|d3fr$GZgUB3OCKP|5ie+WAMdoxEEOvCJ2cH z7%4g=^#?Gs;laW0?~6tsB*9+dbhg941t|1Jb(w?}*u`}HT_$h&5s!y*>2JFxHU}-O zuyrv|!1@tn29#&$W_ngOM_$1m;U83Qb}(u@zngbo@o|_UBv9^?#6+XfUva&EOHIl{+faJq2%80oVUO&d7{)SmA?3(wAIj=H|8Dl zupM7q6tjvn#2Awnh&&!PMbXJFIE)lTz@1(tZe^yVj9}4HK-Nmj$~k=Rt`>CL;eFIa z+x*s~Qi^=oFi!G^DE>O!=bMUtTf(6E(lhx{z13CWJR3u+2S02uLhyekV9Abh7t`zV zIju-nDlwrcy*hcvXv*gDv1VJO)Ky&ty54N&QtW0Y@JfRJQ?=0SUN#@^*}^|~`j!2K zQ9#^-fmNsbsZcfEUT*sx2H<%wKDGY)jqexIdxTRy*_ads0rx~X&XK@GOQ4AHSD}Mj zXeR+%0%l=K8e)_B;(_R*M|0xLtlFZ*RZP3#o;^Ma|BZYwUMTJ9~?{ghfjT zi8UtGAeMZuOiTp9{uCI~XPWQK&thJ!4HN`hz;(wc0Q*9~6=+I}&&6tTTLVC%c?K0c zs!YU!Ra!RcP!jT#v^4UR^z_-(KGTrbS=V8W6uoLpODtsW<8Cwx5jM{8Qw* zDI=w>7#SI_l$;t99N3xOiP$7_FuClnV$tHrj-V>wqrD}TtWM~(c1V$vQYadQ53lDb zNP~xC47>)nVsO7Pg(pD~FCYNzyiSqpXH724eIUz#p=s#DrO8BG58|I9hrB8t8fqAj zbWQoTZvrO%bAC0F5AiZ5C_RqpG?>9K?J_MWyhN@4NkkWbrCV@l8aP^pNHW&3L66^` zR7n7}T8lUwUtESXXjC~SDNl)b4E@805Af2`B*f~gBf$y~Hu5BdnWiddW^c)AY#yZ9 z^no>AM;3H0Is9eE;gKB?Ofvo&)hn!9rDoBhT|-aYHsPpHl*OcHD)s%S5?%)#+A(j$mVJ>rZJqzR^dC-Lae<%&^i@ z8}2l9l@c{gy4c^s(zm^NHu;b8SiZfB*mIcy$20y?JK?H|;`16AjhSys{j7fv> z*>UIz#04S5;Do()(SHE_2m$aMv}#q;0We90e9`FKsvaFt0TW(-TUp;bNjwBxOI=;E zlf6+pN!_VI&+t`ZzZ6~U0O%{ZwK0-+czb)>FkYsqs1K4LjG&IiW|Snc+oUI-`qz=U zbLe2`PJqDZFTCds4f?;qf~>CUOoObZdZMYR`CYcgQf;_rYCqp3Ck(QGi5oNv>NDja z!VM*d-%X)iy)7CqjdAU>U%f;g8p}BTST*3a5J|t<-;os97omcbW+(+Q_~&L49ld#8 zAJLT?BlqF~_^Ps=o*tg*415S$P)CwWC5ucVF_U_bG9~KjpYuH%Zt^c(CU1)rGIXv$ zre#~mujhAjV*dpDA!~f!XW)IF;D+9eSd3-$nF@v&GcidTkPc+Iu`I_Q;Tb9ztU)SM z3mpqB!;@e#IGvTiUx4To2S6xqra}>l^A~?^iifY|iPX6_!h4njyoL8)vH6Yks?OLd zy?2F@Ac6NuwoFxFKIOrAE5&E5Gs-#7DIbQfGI48;ifA!@+SEF7Cq6tL`fsZ6Y^pFi zsNf!@EZdAWWn3OWlsd6$gV27zqBJ250f;~xb4e@d(;OCxD1U~XOsG@&un9jq3}eVD z6@8SG4*_>if-y(Mtb5F@Iu(HZYQNaO^dh|h8Zl5;?^}~5f6ZHU^A)Fa<)N5#sk=CsAUc~RPiBd01?P|Oy(M0dO&u&EKOHvZ0Iuy6yCMWe zBo2mkieq>_Yv)#4RJ48$S__|neyhk@5Fhs{V0T@Wv!M=Uc$sE|WW%N|(gGhJO=GQ# z`T72AxZ6VTr?qacZ{57ZQep=Bob+IfH%j%Pm=Z{tYzz$-a$;j+-Q0F24=)FK7Md%P zh^#b1kNza<3%mSrWlT?Ic=_+_O7ZmUjM}iyZf?Z7ykYJ8J@kT%(-MX)YPMY_R{Gvt zmP<2m#DLw6!T9RV>xRbrK zyNKJ!y4Q9ZeH@NBoj?;);*!rhHBXIY!4&V`bzRqEO)g=Q9a=|b5KA7q3th2=tlnZw z_j|g~%a3n-&Daq8!}N^oOwWskpSNjo)(=5G(QrqCfj8zN9uWr-?-gWJi)vJ2On8Du z%Z7mOAukB^_4TWLe0-LtY)&PF7{|hKzh)7sBCr^n4eawPD(pQiEH=)&BgyeX#B)3p z&R3HSHMqgfD)KOiOW^pSGAh%6%s^f=Tcw&+QSiN1mKEoQ^l}S9A?Q7huR7T!LyX~q z!;Jc@n!k2k8DZM2vT^x&32F2oH^UM&?g&*1x-L+8DXFgRwcMqHR>PuPY(n6*$JU{^5xXD9Hicr60+HDwcR)OkdMfXB zfs`;FC8YnJuC*?c5!E4~+F z*Oijnc6x;yrxTo)0y0Jp;Vic2;kkXt=02o%?E1ww8cfTmWfRCx$Ui2o4SL8oc&AV) zQ-2d2O6}61N5q8Xn<2-6C z!C}o_Lq60GiD3mO?F_*dyz)-PySu-N#BWWt%cI&UzC8)p+}&L*wOw>=sumo6L(xMJ zwTu(Bj2%d0$`=)pY>WRu3F?OqR?$&X8TVB%P`@UkDR&f+J* z)MernoG6}}kxCJv9j!nFCzr7-)5#HIN&=H)Q4 zP-%e21PsnWc`lQ(x;mfysC(wRi!!miIA+?QSt8&`l3{%Nu1z0Z$<<~Im5Bioc`=L( z0p}ft7-K^?GuHvBwq*hb_6xAhgVIu5i_~u2r03SDYlEv!bAUW(!N8;X@)z!hv0s72 zJvn_|icw?=8aAH-j%4~#>of|h6eToD%uandTcwkM|WTb+k;xIi*yEx-)Hm=i)_$i&g0U!mZrl3eay1Kz&L8!Rs zn8UR!4(J~(h2s9iV9EP_!N}#1K377n`YDq$k z2hxl_QTBChZ`Q2XE9U6v2V;%JER5^COg1E)LFRB7!2!AX>Rh zYrv=FY7qBtpKQ6J_9skBYTD4q5JC|qD3yUU#j9Cga+w^(@WbIyM$!-&3L#IZt;LlGhhEE6t2Zxpc_(joE(q$5>s_qh0T8aZnGA13`bv4)g zuH!Ph>IBOju>e4SgG*kO5KW9o@-?l@pY&X&Dk}_3NQqjhI_2Mz(kHNSjliW<;v!$cg8^Z4=LsF*S_YId(V;wY$})r(*ps=4#v+P-HgDb z_2H#_NcOQoj{sPT{=}42o)Wmul^g^Mx?nI085~;lTt)?ehV+?Th0nQKAOT7>*5-Z^ zCc(XiyugPj$K|U5j{BQ_)2S(4EWT<9@l)K;2{88K)IzKz7$v{cO7D5oek=Kii_j%# zP^~qFu70Z74-bPP_>vKckI+yFB$dO1@#j~ay0-h~D~&tzp@=;RI$FSkspE7OHJ8(#=8KK2N9|?wT*0ZV3tuO#3 zAeRvX?ic{Mz=eIquw090A+(2rS%6;Mv*1i+C5iB1x_N2`!s@BJ;3%+7tcnTpWnNZY zD9KzP4TE-4h71FtDiINpDxUDU(U1bFzY1}#Hs!y=dgf=5FTg1F9-XQH^Z@obgNl?? zy14XJWOVe|x)WbkE>kR6qx%F#^{Jt^}6n*{?@AT}_YW+nfEM8-9+%JSKL%<* zPY2eK29QM$;VQGi)I2b95%wq4EV&nnVBxz=M&L7mRD{qQGfXSD(Pt}o&@xp3ab!Wx(mPN1@usZ(t>_*$7*|H9kg;KKXk zi76;=gsQ8r&f3+{gqvhBg>xX_amJ)Qg+)b-QIrBn-k=^9Q8(wBW?bhd#EHb;`K9Ca z#z%5`E@;K(t$?f_C5Dq7@Wew@>BDE#Y~lX|F|?S78=dtv`}64qI5|060Q}rEsUnpw z8U+L<2%KK)Yiln!QsmemQ|n0im*Gxw$_c7e(Tse&yiEAwM^#$i-YF+|1G@2iu_LG` z)BC9J*yn7{9HmGG0{NW#S;P6W1Rdj>6ghnVowF2Ktfu?1xClmxw_cpfOQS8 zATN9&&46hJZl*WnG5HJmQ3=jxE*l5&&$Eijt?}?DD?%%fSNORKq6IK zS~>vSNrWg3O?d8C+F)sl9!d}-zcd53u)#db=Wp?kI}@IFd3Zm%Zi)1U-V@%kJ!Izg^h)U-ZWy}Jq<%zU#G1SfoagG@w{?K#-EEAF zXhejB^p(^T0dH)no%9ShG#V6oKvJ5Z#Kie`Ztms>Vl|amQkk5L%ouph(LdWMf|g6YGJNrYJ@QH)j<*1=s`u` zP)C08&$FYWM4S8jSyZ50@hC9c&BevzS)_PmWTf^OdJ+s2aAfD^=CGoB-VDKQ7?Kgs z0V_EL?f|fXuj)aGE57fXEF@rf{XKRddmT{lGf-oE>Vq8QQ3a*C5K#B!VGjRitW4a5 zNsE#Mi|&UDPE1S`wSm<|>d+8le+sujz!|cJlUI3Jzm-}IfZ|7p@v#%ykdd}V1*4aP z1N+>)B?&ZLe;bO+GDTE89%|I|JB;;5WYoxp zpKpXvux9C9*v+g)xqeu;U4{d`dETfcIv`7rzXEEI|NQl;y)%u+o_pT+%2p5D)7E^8S2ZwxP{vv2!U;-9u4RBcS~HLrMUZE4#4!}ekIKO~ z$fDLSf-O@WD<-^3LBiV)h<7m0SK)DBp7_|GUMb^8Ekl!Fk0PaVcDUK)Re=IO{v`e; zM`;6q0BMXMv7hW;X2-`9mwBUpnY=b+AjATx3)ruq05awj>x!1s?+pzNV*s%X_}!iP zv3)aW@sx_ouj`*cLlgUY=q?x!(u2{q%khe7a^|7gj#&r*r3qOHi$Q&*X zl8PsiRV4A0xS=eN^WJyDarc3S9CTu|$x%8uJwDE_vzbyMrJx{w!N^Fyhho~(up^oj zWVWWiO*@PAu2QdMXl?k&#&OY{d?=K!26g>*ThQI8l?arvAETjuEYtX&y0f_{(+mFs z7(lSFIk@Z@3Re=!V2y`#cGH)m@-|Cb~!+T;SxO&uCa1&H$n0C4bc zbeMrJ!|6)?im9tZ7PXU}1H)JXHU9=_hTOEmK1Yg)PULkyQ@HBQ%?%Stgm4lp#bx`i zd>>q}0ftD*+xJ?y!lmYSmM&V(00jyVxbFcI$j7Rn@6Ac2s-cgP^pfeGbLQh6I0icUPY@BS z?ORSXW|t2S$a(A-0L>o*OR<;Wt`+gO@$>T&OdHf${dLiJ>h@dMd27kc?{j9!UGK~s zZ^hgPeg`Gstji+1oYw;`6pHKWc=!PxSw6d>7aZG0EFJa<*`8IiIl7!ME9s} z?Csr~hBQ0r7)Vx^4|x$t!IvZvs1Q3)z&?m>_2i+C(>K#v(f8C6bbeGf&c$jD+V>i=OoZ5AY30furw-(xiq zBryI!i*ApS+c-5V4CcmKRmLZO*pgSGRUNQU2Yat_nE4w z5KA_K75O@t#*+q$e*~Zbsv_sJUBs%BuXfU41Z(3)@74TStIxQEk*BAQ5osY~+Mp}w zYFn;b$2z{SU=K+8^bCKynIDlJpbiIXy5Bf5aw-h?cLuPtAQ=HWzwxcj;09PBB|(0- zE&cWV{=4>$2CNrU(G|rHpa?BTN)5u=-UU40g9mf_XYYZDii2|c*yw1UbDTdv_%PTt z<|k)#3MBf6|G$f=pM(ABnmP|LaBnR-9<2M8{lWiN!b-3^#K zbcNK`JCDD*juvT|yPy)dzgs>WbF6`Y2js$T!?r8oCuOg9lG+It4`!hX3Pt!w;ab!? zQpxWFh7i2$E`%joC|O>Y4;cwpvSGaMjc_TxQJg1gvUL z%AO&tU|3z}Yt(V|H{ves{vFSP^?fjUB1+RAY+eTk?!|x^ds?axqZkYgH#hp!I`(8{ z6I0&cGVXGW_JDN>2F@os!jB|D_vN3mWxMyX#nlNWLUCGzi27rcYrXNWMG^Un^Vn!1 zr}KR9oMFHO*Uw`?==`kilvW)|moi#aI1{PH`e>eUdH?QMX|%+>tEiz zqlPM?_WB-udAoc+EMcWt zQ#|#t`-b5#RsiMAqM9gOnRpgTRiw3f0R(RZTg0cqz=hO%kj$|X%!@+eM+xu^x+Sec z9c*5NcgCwO!pQWhAPOr>hwcPhk7!a@Xfg->k>kxu@vBp=9kDq7h|DyU577x2%lE#z z7&py+@>#yWF6;iK4%y)aF!zk0YP7X>6v%-ne^%H08Lr7$0KNOoq$34cR!HgQ`8f40 zWUlgemlH2l)Z%K;GCo#-VjRTbpi$_+gTdyp`@z@)x40f*C-e7DOtPlI!>J#JWgx+c(?5b4VQk$4E}4PO!K% zrwWcZZX5q^E#Eu}h448*Xh?V}Mbf(_B?x_^F*<#Ov}Ow0dtUQCQJ~9E5GV04#rB}c zeALPD7=m-u7~((kFgBK*qXv71RWE|o1p0DcE_aGarD?>5xM0qLJABOU+wnCec-)m7 z7exn^t>u`|1NaVrdlR#g4LmKoJlmCgN?l5CbJo8lWM=$QLAEW0kb}472Q!{x5r)x) zczORGKozIAcI^>qMvKsU98R_O;hf*b8iX1LFhOB-~On1im+QUFn@%pOQcrexiM<+2GmBi^k2uv{x0o`^s~!yVIY@?do%2 zglh7_B%=j$5;0PaTYW!<(^`Ga_YENJ!v@|}9DwV7zXc&TPK~5pN zXIVU%_TPNk9opUT-3@VdA079Z!`H|cug%%D7M4G$|Nc!LM}X-Z^qSLuJx6D7cUYHM zyqZE>bzdjh-nanN^u?1-qtLt)T$E&U#dkU}9vf@sQV*12i?H45f@jv@0g5cQb+9uhU0c%Q z;sMW*hPfuUWv~<1(rRx?g2X65uGPP!fiGW?vU7{vuDzt>rJP(=V9DnBWT@Rwkz0gf zN3|e4B; z7lkjX^4h4uLB>D-BG|+^6a5!fyUN4)Qt9G2zDb6yhE_3i)YQ=IeTDOufkqkfc3_rUpj%i>YwEvBERCQR@KL!`VnS>)C{ zpJYV&w(|jUl}#*U<9vLiFfp?Y_-+k!V9sb`hpp9aY^?_eoi4+9%As2YjM+88V^FNp z7u4VJ$s38spgYRx_sf*g;^o+Py6ck1;@Yyqkv7;-f?m5|TQ`plc|u7-|0&sK!9X=x z>fo;R{Nvhk-Mqx*rRQ&5rPox$OXF`x>$T;@;)t)8cJnaNePXn5!mxP)7u|#Ya-w_ z7d-9Um49BmBpeHzu4Jiybzwt!As2M?P%?1-i??>5-BlWaM?3F#NT>1z4yoOy-bVuh zW8#|b)ry0AN9JI*h@br|duU?Mf%8>i&-B4X!gMGGamBUuZ@b;d4OM4e`WxKmoHaWcrygOq;5i11dt-zK&h{^X1j@MCZuSm3ZRyA^%Y{ z&&#_F!gcCb@f7nlmEFD>%DMr0gHJBiyDLKfx57hE3e*}*;6v0M8&7)iDjl%CO%;?C zn6iaank!tYuuU)HBtRtbI7*n|UXKMg}a;D*sIh z6oc~5&ce|q!Wa?8%Kl*u&gdw0UjmJ3N(ry)u0*77XU_blolSS{&iC-F4L%On-F+{q z+Tv2u!%iNH^>d6r+UCO7!|q(TOirD6EOatg*j+Xu>iF`1vFNt}uaCb~d*(+KN|YRi zB9f{qwxHTZG+3zqDL5@a)3;PC+HYwo^zc(CbvN*lj#L+x=+2wFkMKmAjc~`2KknpR zw5%E`wK+Nd03jhkYKH>;;<*=?zj*Ei=Kdf2Xr6;SQ^e=$=U!m0e(nY4vMTv!%JHv%=2>R_ zGtV+>zBgaqnIb+bJ%0xd9GqD=5uiGtRYa6XQ0HpTiLpmQ>||lNB;eIoUuAB%;RZtG zzw*i}^PGFFh)As^C+hs0$w4Y7E|XgGuAWzQ={Ybz@>H${YgF_C-Rb;y?b?OgZoRc4 z$3A~M0i&?nqnSi(Nnl|Tg8j#j!_NRWUUMbl=_Go4x*!<_p8CPF@UaYdnSsycMmn9w z?CcD#+CC2{k83LBe7U7eCSX#q{7p}#` zsVSJ6j$FQg*N;siZ2^}CJxCM^i03pMnx27`&tw04$HAHgEMmbhO-#(ip|LCs(?XJ% z7$gQHUcyvHMZYY-;OBoO^6A`?oth2Jz+3mx=41B}?{|L4m<`Gg?;0ijHu+jQw`8YgQ`aGX z{Le_SM$|?54-b&S|NI_f>Uyn97l6I>1H^jqf1fq;ci_Om%D^E&i=eufPWA7l&`R!2 z_4U9)$G#YVmDNZqJXqw<&A0^pWgZed<}=_O+C=hKY+Tj@pgJ;4ke2pD)74iTE30wn7R&fh80-p`8#mn zpgnL1P#xH#K+QJQYe)3Ot^*|`c2w(AuV+sypyY$*Gu4}WRo|aw$*hNZb6IT3&(@5x zX?dxN!NCKS<){nKG6oQMKf1Oy(s&OiXbgGa7lz>-+FSrJ8DLo{CiF9{HJ z9VP?#MG?Acph!%(cp#b0qsT1un6WXl&|h`DR(Iy=rK`hL)nSVruea=_rE}O1U~>(#fWOw?tU?)Gz-5SE)SBRof;&anYH!Z6hvz-K0gWAEa3q4k=EWTCP zbF8ZSE7@VULG^NFv-sK%e#(5}gEx_Vr!@2hyAe-Dq3Z@jmVsN4U|2ei%_gy`OF&k) z;ASj{f{gbjPomrHg=!HnhJ~P4K_*v3N>!2LImqB3F(StES#W&wIY5o%@w7YF$Bstw zSUQ>O(nuapyK{Z)Sn2sYaNwZ*a0pNhQ0HGO2ZlP=r6Mlv*cXeA@zP5#)!dYo>I0l! zF0+${J#(lsSv%d!7Af4Y0#wf6w{tGn(X0xWPQ zpfRPMLGeTul1Bu`Gw{g@rqgM}GZw%CG7EUUZbXwA6buWZ&LRaB7B~oX5@&z4YqZiS z*xm`c8g`;ni}ct#N>kK|FjXU5mM{3+^Ex3{!|v#7IsJGI`Hk#<#oqb>0sx%PHLnwN zHS9#E7U{8fl%}W^VXDST&)bot39IAXjG+L@+lDoP7}{+qSqtFSVWL2Q2X1;l`QGlAYwFosIOh$ilhiCg_o{ueg*5ByAoU^EZ~6=-E> zJMDa27vzSq7MaG*RO5YC?Pl(|GmG=)J@=l&^r($T6Cnl7W}A{-M8*-A1p*`%0Uh6B zwk+8CcEF8lna!GyCqu?2i!4-ZUhLGEDHnfP<4wXCx zFI30leiQ%O@Hl{Z(%la0h3fd+ukac6{xup+zWgMBvJfi&qWFR1@=wxf=q`J8J3m<^ zUxkWC4f<3l5s-BZN(`xCsY%qk$wC0CZ*Y?PGstlmCn1ai<8Fv8e1w!V8ckZUq#cFC zhQs=Hjqd?mo3hy0YjSb?XlQCZwuoeiCk;xGz>g0oNWm8`-FXouV$zDCenrn|s3e|N z3=BHyD-n}c4D~B|PGi{n*Jw1^Ay!vchaJOTOSjtszq%cH$J1Tv`qRVCe-exOos21q zSblc~3bHGEC3(EOB!ftB>zvE0{SKGL3_dnGjE@v>qKMs4GHTk)O$avj+IVry`HF)T zSxk(Yy!_QNT<|P_|-BOuTwToUUh{Mx)VaGD07M zJ_U6cTKyly_3lB@Ybfb3$is>1z7dz#o*ymUm8B7r`AHYA(cv%@+?;aoT5Z18nq01y z`S9%k%PC^HQ1e5s&X#z;+vfSZ&)mK|$?MHs3dI5!Dr2ng)p4B>3_q9fH5!dZa{}4{ zN`Xqgf0OuuW7lOEZd5mUmEn?m&3fMtmzL#}4Oh-Me5tkA@&c-^f!B%HZTUz)U}yh; zaofP~eYWdu_FEB7!QjeF1uqWpy$;o}BDKR1KW^a`E$VF_L&QA2cQ1G6PNUIiG)MdZ X{)Ry@^9{KX00000NkvXXu0mjfIJ09_ diff --git a/modular_darkpack/modules/deprecated/icons/props.dmi b/modular_darkpack/modules/deprecated/icons/props.dmi index 32981c55cb6755fbc5f41e74ef89fa50bae4c731..62c032191db7a862e43c0e4b8768b3bd8b8a7392 100644 GIT binary patch literal 10987 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 literal 12889 zcmXwgbzD@>7xrBi7L=3_q`O-}YFSE20qF(-rIwKH1tg?F5Tr{&8tJx3>F#DhTw=*3 zU%v0}egCy3$fxs)znW9+~!xx~6#gNwqI+1FZ|+ z&67`vW~qHIH{HV8{q*13)-d#uX|oCcs((9lbNBT~4xPuMZs|0O4Y4Ja9_bykfP*E^ z9(rlF{!R7s6)|R{rg?(nqc6zUB3V7l-um);^At9Sq%)rG`hR{86aO-JFz_y3NOo~@ zYaYKv4(Gk5>5MTw2_xm(_`+8CJC<_KXG7IdzGop^Pe`NX& z;>h9m6ADHR{EuOEND{#L5^LGCx3kmd$;DhE|+Dd#ole5);^nZ^~2Z5qn_ z1ILs^*XFZ$2{NZeRCKDrL(lVcv5diD!o)Lszs2)qwxr&Yo{ou$8deBG*6;Lhs!6?_ zb{z4XMgSfmHr5;?6#|y`2rySn_V^B9W9g|sy*R+gfd?ykwMV9>o1yUw5w0Por zy?09U1+(gA^8gvZF?@tVqt`CFB+y3}?9ZVB4ASwui?4F>IFLRu?bjXXJzFU!i%;|k z!M%ORt+3ulDMZ;s0hq6PmX=iH|8V7D=m1pWVx2b(?6i@zDMd*VNSxE|VzZv zRSpEnd9OzGQkfq7ud;fDu{Um*=Q6hG#X7S}r6;FL&0f|&C5YAl%n9KIf81tzL~(sY zQ&gqf2WY+FrtaP6#|96pI}e?lhP;&T<3CHq+aH)HCK&KuttMK z9LHkYvL9=3ebxxbGT#upcIu`bq3Q&YJ;>kHO{zhp(b?kD41V4Zk zzu-FF89WzJOd-y`Q5KrO6l(Szk>3mn$#T_32wNjC-2wUNuu^JCl-;5QO(z`RHW z>_Nrg=EgM{BKEHgGsL)@V@BbsBDUk=ACfEzIW1;Voi97aPefy1hb-Eab>SK+?ufAk z$OgmytpAQFz>xu&8Zfi5IlA3M)uPaQL6b*cger5sWIcMr{8(*Vpj>t(E9p)y_L^99 zOWuF}u!??KO|&YzLvW86v0r5n{Vta|E1jvExn*~EJC zq|32E&N46YrC*U|?DcX6nplIgYtQWbUG?5O{Crm z<^pEKJi~0Q?O^E*@t&$E7F#C^Cp&N9L2z>sqUg(omY~&cZ=YuQYS`-^kUz^2?2I8gHq1jTI+V=AMk}p-)@LM&}LZ-rB9q zgNlLkn`@~iXP#$QWqL+N*fIdC1~H6dy;}H{pfE5hAV5>rwAIF^?E>q1LY!uc*8vLL z56Xj#mmXf{g-Bfb-;40YsJjdy3C9kzCD2UNojT^X`bwC?An6;Z^vU4h^S|(=c8R}) z7oT+YMXAG;(YR;Po76ob9eVqc+|jN zcW16_BArikeDC@)p89LX=E@ff;Y#NwKqlYdOkhssURNWx#eMZ&Y?WbbuRU+GxwMm> z_QeNWSa2Kh{0?^qSlabhZq@q4N>!NHS5=QJ+<2b}zKfHltGu|Xaj9U5xZlcoGh+r;RLugXOYi78z9ozSQColQXpr?^OOdKNQfb7Sog4KOmr?d|R;0$QDJomu^{s|R>%{|ga`ydsZhd)%QUZpTZEr*AzLdUB_sEp^s#@Ytn3>~k z(K=#%b3XEG5GLk;=@BF0Qt}biO8zmhU6L{Fl_ObX|4%(GimaXx_BhP7*yi7m!rX!* z|NH{?`D+F9WTf(ZgnkQdYP%D+Lvs7`9kGzo}r2JYh z%!t3nXkmUw#)=|gMz3VTvCv<$b_o&Z$63Q|B+}RAcgV{L2SEeB?-m%LvZxWCC^C zagDKIoYl<_Xsu){yAj{`qIyGLQ`;oxzgpNeMap-+gqL%#q*_h(8*D#eO-{-H<-MRN zHe)%CAX}hnL0a>RgZLc}ikt-#iq7o|8*Q~aD9!n@PLz0Q46j0U93b7{@&|95NyP<>9i(cN81}LHq@%5K3~Cx=|%`=Zh!m^l$GsOZa~|vQ&LCfKMf0@ z(#q6jSD9}zQ)0ndW!WCR=7kt}H7r9~|4~a%ro5jgGAt=NO84fYn-IrS6C8gsfE1Cjh34*@IbV%+t8o&b5T4 z1WlqQgs}>o>w28ubAlQ7_T4HI>)Y&%@g|78Y&ALwCc3Km<`p4~!*OSi1V5Th%*KXB zfbwdWmfyU9%yY&T|8$usg)5;ax;;(hGJ@UAfgH8H!=8cClpP;ch;s2Ne@gDsOBxfn z`PrpNT$%Gw&hw9&c9UuuK%-keZ`>%DitAZ+L!&3DI^@9|>ps+JfKsNsOx${7D_7W> zWPxyYmb_BlO|)kvHKuwTzSY)vdJ{^TXya2o#IEhu#-29#nLw%GQNAeM*WC#?juYhH z`l9xfc#p0_O9i2FEyb3>4a#Rrvn2K?f-YvDzNTIFe9`@zVkn1Zj?<(_j);A74e7ZM ziSjvd&ejjd%x2_kbxk2liX%(0?^QNzKmDg92(3 z2+*kS_n&VJw5{dzYSn|qC&Yg`z4&bwTffmy*0Dq89Z1VP1k9~GEsqd+#7qq9rK|K% zU)*oLUVm7-n|{KIR4gU8OTv|ZhEzN+A|)g7l^3(T6Dy#{Gmzo`44cO8nE$O5wRm>%w@2o6?p>Q$<;kD7^6*8$JXWErV+Wjk3!6%m=ehoHbUhx6n09%|YddvRSa=^rq1F409aS#T+)=t1Y2ZWy=$uOp^?B)A2B#Hi&>O8y*jMlM7$slR>8AYlh>apJ($eD)dzFL$ zk+jH2@+a*55(F6{X-VG#QEGxdcWi8fze z!EEZSLjQbKF8*Ws0{6y59J-C$Vz-fulN_bsV7i~&lFr{^=dRmy<<(X2maq@Eg7yq; zDI4I)JJn?i8puc9f41@{lW14uo;{MJw>P#q%86D_7i99{JmPCwd{sydcHIpkOMaOc zGaOdA*bWA2VvZw7_A3C`UO$;hh|{MJ3=Y%{VYSnYV(ffUP?Y= z^2%@Hgm^`I3+#Nn#Y@i{1?^q-%*)B%Kh@qYvL^D_V&B!XtloI?;_a5@)K|U3A6n~< z3yp9d^+IbP0K3g;rjc7%aW`Pnu&!Ovx5txf9Qlpvy$+v+7}lhUKZ`m!bgV(k(RxV6 z@@O^LedIJi(pVu*p#0SS(3a6+zlk?^%5maHQJdPNQUq9StDB5pwZW}3T)4(x; z?|mcr-O^&@;PQ43uVhQqck72vpeFLNzCQ~+_-qUJiX>Sa>u#~`OX;DL4g$v?w6hH+ zqz23eb5mts(@M&Hsb7CmJZtB2Opr!c&0B^x$Pi!4n#u8r^KZ9KIQxL65qhoYCN&JC zpWT(%Vl)a4xm9z1Q8dNvor&?i*lyVMdZPa@)vN1~r`pUXDv;4owW{$F;+}PeO->WO zTI0=nsQ3$dnEIbJ5B}h8lciwMN*egZh<1j{n5s76n@OoxfuL$wWPwdj4DR#kMRR7pG@`7 z!feLhzQgpumd4<6a#jYpDiKG)m8Eq49^8 zUv(mN38B%$Y=O_n(sWOu9+kDutD0YKDl)1$gLUd&@$61^7mHS@ebMP(Xj{vcaDUSe z)jWFS#mdO!Ct6ea2rhZSJy{UiPc+Ijc~k^<$;oOycH5-}*HMe(Lx%Ay3ckVobN3;e zOf(NTe{OY?&WUm^{3@(jwku`!AZL1h^rm+Br>=^$xfIG14YxnQh5vmi` zpr{RIGUN6>>9yz^#J_^79ZjvI^bII?tHwGk{2Q(h|0>ilw>+~;iA?&XH+?gtq)IpA z?cz>VgO*svm*OugtE{A8PZxFkG-! zo0{Jp0?SKEPNjk|c5m&QI7emVS+kqwEvBfy(`fk5zp_2o;MiO6Y7pU(2+e!`+XpaE zzxLcOEhOfVIJrH$b?B(b7WVTagcfQWHKLfgA_-qq5 zQ1z_DG$84;%X3=>;9MqNV&vKKk5JO+~#F9VJVjcVPj z>p$$B-}-6RN1RAC+A9RTyGZB*3qVynja~dGg8=W~fy1>H+q9c9S4)(!{FzShpk`{c zAaFdLtJ!(`SE|l)Pk+2*&ug=9S>oN8MHjO{)=~zoF9{Rzkk4${wY!CMOrq)XRWxl4 zZ5fk>3cp3W3k{lAV!!t%bw@x(@y#9kwMi_4dxV}ZU7JU=gQpGBtn)>m3b^0by7yyd zf>fNTo>b=IQ&jxUVp@48n@i^r`<(k-Aj?)4<}Xb?N4GMRipfrY6rxNXh5%T77$=S) z{f*~t+Zb!7HD+HJd54;Fb1l3GfZs1z5>x2Bq@%9=k09v&tM>tI zEnL1wOK&!JTV5n`r7bB&>{}>2MotjWJ`)`OFh6g6C6}9FYL40d*mpC0wcL^cc?8|8 zHuAJ+MRVB%$GqSjz!IlUrAnbqp?hq({O|K`QTnU(n32N3_U&3<&8;QZW3Q(oa(VXo zq+tklL}fRf2+!y@#I-@dby;eFeG$a+X#Ka%-^sGyH{Q!8u;KKH(d~fakJW{z0%-zF zSKbFEUX_H!<~I_%%_eH&ts8!IW-%ybWMC&FN(w6HoHZ5`a5dBz5N#HN!$1M5%_lLb zZSpY5k0{Ug(>w@r>YCg-7{?IQT~7GxeAHyQGpVm*$Dbdi!n2{cyNaY!$?5k8YI>~g z7@;P$t>&1a`BhGub&}1vA3{b1ScntXr6ouQi69X|X4Xw)IOy#nlCVUC^o6xJ?_aQQK>tGRKb30Uh>abBCxmbuY|8 zB(2@w1`<;?dgxV*MXusSTtMjK{flUgBE7wPPi+$>DcHvRRwA;5J@@%pQ;j`f2kV!c zvjUk1V;Hni_>R(z4pV>a?hX$a>^1lyOrEbv5~0G>5STcl6cMnwus7!QlA(!WBnU)KR@}WNnrB>E2I%kh3HqtrBnOwo_*w2}`VF8hiGyWmY<0>j+9p z1614;o|e0?4)r{#TKF-=8JuQDeeYbF6D_WtBLiSe7T11Omg<9VaEJ?SXWnUoCt!X# z^67bGVKr+Z-Om86Gp1e&X%Z2bTgVU;_Y;GTeP{|5&^q|?*Wn!T<0c_U9@cjCI9=3F zi=6RQyGS7OAYLGNB?;jKMQXzq7NDtw?PAT^jp{+~;v~@lOU0!OA%v-P@-*SMH*s}~$Sb^$V$Wc>OrF*xdG)7mQAO*6DRi+URFqV-??#xCa2)Dv5Qf#YE`o6Xp@t-MvD_;$%d zv(b$dU}iHL?U?Xa7a9TW(}ZyPl)R)XfSa<^borfT)NP1;5Avq>=xW!1eUN)}ui7=6 z%YzmqLn6p;c}U_ziPdc#Imr-dj-T4ZOeP9?oE0o&|4#eo^{<7hVH0FKND#HZAxG(f z;6M2%f$bo3x%K2@EqaPS7vg{^&9>;GOY5O9?8_hB5aVR}_mjHG48{XxjFuz8{mC>6 z2CY8%J`1{#8l@+pif1y5*QQP>f&&=`67h+Zcf6c3?u#}x#0f-n-dk0>$BuvXKhY7R zQO8~0%iC83lm2kI<`B8D-Iv#(0^Y=!VVy5PT^Tk>JXgXKiQ2UU^wN*rv1dS|O8(C_7s}4WXq0Jd zhuTm2$ob(O$GRzgS+y+R5slw)D)O)@Uk{>!)6+*+x1YAgQTEx5qD5vcKVG_EBQ!{W z4mt!J3#OMhL0IMl%%9oS_&D|@D4PstyqS`p%EGX^8NHx3XV`q3(ENkf{~$Lgq>nr? zc#AEVcmF4X))*Q{bg@LyRm+@9kBJ;09^DTzB1sg9HPd<^&rO3!+wLq5*yyG=E(3#v zDzJL8!7z|U{tHlnaG|M|x;}d#QQW6pI~aBby&wr!@<$h}ldg?~X=yrJuwXm#Ir?nD z#e|dwFDi-4vdUh{xa=K2If)E$sftmdLU2yZ?JMGl)q(n^1}MMZchd5w=H=Y z>57Q4J@QkPH+#MzVGq98EqT}V>vI8Yb4v5k7u>FSmw7M7txU|t z#DQWfiqRALJT8!PL&fv(V~>fSJ$5iLhB24#^g2novjD8Jsudec<**WwPB~dRvDZuA zw@*24MKZq4F`yTOe}(~l9^-YyDs4Usfl=pSS>=i`zAF(TJfrVEpQ-04t}O4Rr#GT_zN41iZb;elh<-i6`L8@I7e%nhgExi}AHxkpQ4kV#x! z|8y2-Dsjrqf)FE`Bbe&NRsr!%OS67-whwTK1(vCnX#XSVbFrfcDv>9g=C=r|eLvb7W8U+!4Ra?X`F&N0erp$yM~S&2V$E}45+qEwHAIDZ+k{Gg_s#Wkd)ro2pd zCNxB$!ErQ5As`DWeE{OLP-v@h(uf2JI?;fg1Yc(j3TtJCF-Fl-(;uv;ycHFA;-{H z$u3JkH|@4c$d3;<(_}&8OpP`2ay>s1WuX`a2fvmlivG$J^WJ+pc&^mP^d1HnG-G9=ka~>$e&t z8o3L>ZuhWb6+M8{znRLcRZqMaD;DKYN34uRWLB~_#kI$_l$afx2?n1DA!rS%Qe)Kh2N2HcS zQj&Z?nDS{!q_zOXxYHs z{=JgU=I;c7XK5|_-g7=-`a9Nz&*QkK6Ww60u^K<0_lE_DLWrHUUQ2dEoS|6opv45W zkM**$FQN6vZ_R0WPOlJJLRlA z$f*ZiuLnX!4PycbdmbB7k^gLrGur8UCPi8$)XyMRccMV%{&vYy2|6^PDXZ_1>njJ7 z?%AKPS2uM{8Nol4L%keKP}`_`uu6^hSB`ddGxwHhzUyw^Z4s)n{uO`P(ng{Xp zZ>eV2Wn@s-txn;_ZN?~*V%Ot{cc(FGu+@2KSP=nQw*_)k)-DwxlK`TeI6C25a!quC z`^WEoF0ayisA7RXNkjCl4B~ zit8Ax6=Z_`a-W*e#cj#@W+cZ*1o-+iW&Br5wF04 zJ>sTUUvD(>_+U7a5~3rc`>qtz;26)`cJltMCyY+ftVttv{!RS9;k1ci1EsB9+iBuS z37RO2KF7`+=7mJrmO=RD#atwNa`nKUC+Ep?-{{e2ZhAVHS72a;qW2*7qd4_86A}lM zWXFHZ7Y-j&j1WnXzU1^?z-hmR_gM^5DWsw8S%3xaCAYGq07?Y<3Oi**6eU%vVVt3d zG424g-SawCNX|BCeA)et>cj(lqb9D;b)CY*Iw>YZDCV{H}t z!zEaU%JyP%VuXBx;7NeToM$8XXw!91Y%-`DmbbsSsglCr$VpkcNtXt3P;b17qkR8U zq&+}=bK^(zdm^q@SEpEPN(b4=+lAwGGTs2UdB6xzK`mxSbFeymVI zS}I)ZF|<>k0U9tJ(xC56H89`(l}tqYOsn6(AZcVfb(1<1?da%O*^fK#>Ch{aQ}j4~ zkY^CR;e%lqp=i>i4K(iW#E0eQN5~!+eC!{Z(cqSNt8m{Tm@L#RQ-N>frFxX8tdv08 z-}liWPVP3cxBjQ?8*cVIM$pg(9!}N(Km5)f_oD-jw1CuJob>ZV7JBB!E&LZ)R7&m6%ZeIf0PYpN;B;~>x(X}V$_MgJgK2(1)ixV( z`p+}$S(~N5o=JNIVGgdAL(ks5F_H|}JNUTeLYWXJRn0_4FdWj(tpO#rvsQ@1SB+c- zDvp}VsSs+Ic?Rq?UqB3LTPA0xqUTE)5S5&av z5DDS`HS@xxO6Zd6;T-Yh;-uWoS}A=ZU4qs z9vt*H1uWl;UU|d`fC)|uH z->PBi4}k9aq$5bcj9U+T9820Hi?NpUR~!%Sq8h(9r|(akBZkNY^<5V|R(_Qt_F|pI zD`d@&RMy*fq`%`-V`CbD&vpL95JV!WIF&LFBu}-$7oc14j(WVB_3b6g`BI>)@Ac6S zRw{)^dbO8y?!r&p|IYnB@m@La8iVHiJV~>-Gh=>=A>xU^OZx6-RpI`6rm))PWo$wO{Fft$;8bf&%;(6DNUdARQzGIUUUHc$!Uc+V)@~6 z6VU(!KytjWycQbPBobg5?e#p8At`zF`aTl*q)fa&(;({m5X5dK6DQ>nMY5hD-S0!b zT%{?W!})9Cp_~^G!uY$IYA=HB-`6{xxa+#A1l?XFiD!TlE(m^tRbkYT5i7YCYj=f2 zJ~jvDt&ol5aLbLR%$S+KC)saRp!nS4<(rm_cGZ9k)%A~i5`{1MzqQS+bv{;#-< z>#_J%6ghVbgk7G@GbI6^&jF;>_uD(sEcUmw^5Ddt>rI3UPDKh80>#LP0?iU(&C}xo z4MMSD2HJwkjx;N1PgsKWSZGuKkob*~As3A&cs_$+sR>K}e;pP7F{)28nu^C%>zengWg#<@2}C9 zJ&koJYqyb#in&GfAsBpR1>EwkNKiQF70xIk~j= zC%05IKd{L0>#1O|RjcOt%!b=FpZd934<*ogb}BcIw%{xh=^?IvgM$D4bj@u5;MeS+nhI<+vZa3CH+ooyQ8%_DUCjKbi6vHseyw{9|rK` zH=023KMC}&f!AN*td`@5PnFjJgW@<{HrRa`yh`B1IRg{-uA33lO>8d2}Cr7d{;^hI9y&6wRxfhMg-pGohVZe z5MRWDY_c8baDn~CGOUdDh&>aiyf~9C_`?aZS8*mq1T@=(K@V7Xg~VXS0(*fvA{o*e z>dpts;HnDEfI;s#eS+?(dq`OWMkU5F0N^OQWQq(pV}6uCO16H`Gl=7CRNCD4IFCAwAf)PWW;mu@O!|vdf}h?a79S z)JHxKw@S_;(~BGMv9bC`&j1)^S4_*)ACK2g5Gw@MnB)hn2JH;1n7<2@pWz_EYksi< zLZFYAok`{VvBe_fAXp%8JbzFfG@6S9FP#YmsXr3aWhCii|G^IY;UjX7<;c#ICc(3z zu@~r;c$@v4zvFsd@$*}Ik$WM|7gy!oB%5IZaoz8JtwpBtUP#>AUI*2@Be&}hh3;fQ zM=^FGD2I>LF{5Ba%Wt<%cf|&YJSjDMMoTQtg?%%rM}|=2q}!5~z(LJuS6YBzJ6~1~ zy8}yW0zBH2u(z#140Ng%ND-|@^ROe?a~DF}uX-M44;KCNw=@vmoj&MeOH&u7P7@5c zC^bC?pWUZ6Y94pJSo4o+zF9WG@6VFh@5&?R46n48d*IS?dpUVa)VYH#g?!!kb1i`j>$ho+vT9SuhkPqd>zGe2WNgI1Ji0)lZx=J5flFLz)+Tm$ zS2ZR!xmmh+oaW3sz3oE)Qi?nlk=_#6gbxqR+{nJ0^L$!>1DxNbB;DwUVlk3QlQiRM zb=QM1tEbY(1Gr^98_}Cmw*GPI5?@XVp#Cz<^ytv z8Md3wIaWbV*MEOr`vq_NSkWZ30n&ie9g97;EMkb*FgIwMt!w}S!?zmVRKVc;XjVAd`!G zUSnhqKy7ZyXqnK_iZY)2Lvy64!%J(H0U*h=ARQ|xdJA~1?&0pV)__< z5^4bN@7m~!(Nkp6Ss;QKYF9dC+~8oFm0Q^;8yX!SxHd}osTh4l58qLMPIlr=*ZpgK zJ7R8YPZJYh@QWI_peFgl$De85JbzdjFohRe*?V;Q@eUdP_2U6)J}xk@QX7c-#XbUl z)D3qF76&NBYf`*QF{*o-aZe11{3LRktYL?LL5a+Xx*L=ST}Jk1fjpYo@nuA zr#kA8+m$gfkTedP02?bV%o4x~;b#BuQb6{{hI17KH!+ diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index 62a57f854d0b..32b2a4d4fca3 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -14,7 +14,7 @@ name = "human flesh" desc = "What the fuck..." singular_name = "human flesh" - icon = 'modular_darkpack/modules/deprecated/icons/obj/stack_objects.dmi' + icon = 'modular_darkpack/modules/powers/icons/flesh_stack.dmi' icon_state = "human" ONFLOOR_ICON_HELPER('modular_darkpack/modules/powers/icons/flesh_onfloor.dmi') mats_per_unit = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT) @@ -42,7 +42,7 @@ /obj/structure/fleshwall name = "flesh wall" desc = "Wall from FLESH." - icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + icon = 'modular_darkpack/modules/powers/icons/flesh_objects.dmi' icon_state = "fleshwall" plane = GAME_PLANE layer = ABOVE_MOB_LAYER @@ -53,7 +53,7 @@ /obj/structure/tzijelly name = "jelly thing" desc = "an important part of the meat matrix." - icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + icon = 'modular_darkpack/modules/powers/icons/flesh_objects.dmi' icon_state = "tzijelly" plane = GAME_PLANE layer = ABOVE_MOB_LAYER @@ -65,7 +65,7 @@ name = "bag of ground" desc = "Heroic strength is forged here..." icon_state = "dirt" - icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' + icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/powers/icons/flesh_onfloor.dmi') w_class = WEIGHT_CLASS_SMALL @@ -89,7 +89,7 @@ T.slowdown = initial(T.slowdown) /obj/structure/chair/old/tzimisce - icon = 'modular_darkpack/modules/deprecated/icons/props.dmi' + icon = 'modular_darkpack/modules/powers/icons/flesh_objects.dmi' icon_state = "tzimisce_stool" /obj/item/guts diff --git a/modular_darkpack/modules/powers/icons/flesh_items.dmi b/modular_darkpack/modules/powers/icons/flesh_items.dmi index 460bb61485c5c5476f9b17c6665ad3b7bce796bc..08333a261143de9dff8befebf7ad472d87f44e99 100644 GIT binary patch literal 2563 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 K8u7-+1OIPXrr@mr literal 6611 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 Rq5S{=002ovPDHLkV1nD`zO(=U diff --git a/modular_darkpack/modules/powers/icons/flesh_objects.dmi b/modular_darkpack/modules/powers/icons/flesh_objects.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6371ef85c0f14d7628acd1632255c1db1ed44013 GIT binary patch literal 6177 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 literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/deprecated/icons/obj/stack_objects.dmi b/modular_darkpack/modules/powers/icons/flesh_stack.dmi similarity index 100% rename from modular_darkpack/modules/deprecated/icons/obj/stack_objects.dmi rename to modular_darkpack/modules/powers/icons/flesh_stack.dmi From 53e99477efc28651f8a3fc946074f1eb5a9af340 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:49:26 +0200 Subject: [PATCH 081/104] Update zulo_preferences.dm --- .../powers/code/discipline/vicissitude/zulo_preferences.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index 65511798ce8e..e102edb6571e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -2,7 +2,7 @@ savefile_key = "zulo_form" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_FEATURES - priority = PREFERENCE_PRIORITY_REQUIRES_CLAN + priority = PREFERENCE_PRIORITY_REQUIRES_SUBSPLAT main_feature_name = "Zulo Form" should_generate_icons = TRUE @@ -10,8 +10,8 @@ . = ..() if(!.) // Make sure we acctually can select clan in the first place return FALSE - var/clan_type = preferences.read_preference(/datum/preference/choiced/vampire_clan) - var/datum/vampire_clan/clan = get_vampire_clan(clan_type) + var/clan_type = preferences.read_preference(/datum/preference/choiced/subsplat/vampire_clan) + var/datum/subsplat/vampire_clan/clan = get_vampire_clan(clan_type) if(!clan) return FALSE for(var/discipline in clan.clan_disciplines) // DARKPACK TODO - reimplement choosing disciplines From 1791024c746ce17a51834170bea114b7ac40521b Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:51:30 +0200 Subject: [PATCH 082/104] Update creatures.dm --- .../vicissitude/objects/creatures.dm | 57 ------------------- 1 file changed, 57 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm index 775a6e106d34..5254ca1854b4 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm @@ -64,47 +64,6 @@ bloodpool = 7 maxbloodpool = 7 -/mob/living/basic/tzimisce_beast - name = "tzimisce beast form" - desc = "The peak of abominations armor. Unbelievably undamagable..." - icon = 'modular_darkpack/modules/deprecated/icons/64x64.dmi' - icon_state = "weretzi" - icon_living = "weretzi" - pixel_w = -16 - pixel_z = -16 - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - mob_size = MOB_SIZE_HUGE - speed = -0.55 - maxHealth = 575 - health = 575 - butcher_results = list(/obj/item/stack/human_flesh = 10) - melee_damage_lower = 35 - melee_damage_upper = 70 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 10 - maxbloodpool = 10 - -/mob/living/basic/bloodcrawler - name = "tzimisce blood form" - desc = "The peak of abominations. Unbelievably undamagable..." - icon = 'modular_darkpack/modules/deprecated/icons/mobs.dmi' - icon_state = "liquid" - icon_living = "liquid" - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - speed = 3 - butcher_results = list(/obj/item/stack/human_flesh = 1) - melee_damage_lower = 10 - melee_damage_upper = 10 - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/items/weapons/slash.ogg' - combat_mode = TRUE - bloodpool = 20 - maxbloodpool = 20 - /mob/living/basic/szlachta/hostile faction = list(FACTION_HOSTILE) @@ -113,19 +72,3 @@ /mob/living/basic/szlachta/tanker/hostile faction = list(FACTION_HOSTILE) - -/mob/living/basic/bloodcrawler - var/collected_blood = 0 - -/mob/living/basic/bloodcrawler/Move(atom/newloc, direct, glide_size_override) - . = ..() - - var/obj/structure/vampdoor/V = locate() in newloc - if(V?.lockpick_difficulty <= 10) - forceMove(get_turf(V)) - - for(var/obj/effect/decal/cleanable/blood/B in get_turf(newloc)) - collected_blood += B.bloodiness - to_chat(src, span_info("You sense blood entering your mass...")) - var/turf/T = get_turf(B) - T?.wash(CLEAN_SCRUB) From f7cc67dc8717d024041e536276b5cc3cb5f4c075 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:54:19 +0200 Subject: [PATCH 083/104] Update __discipline_power.dm --- .../code/discipline/__discipline_power.dm | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm index 8611b7797b63..a5b58b1d8df4 100644 --- a/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm +++ b/modular_darkpack/modules/powers/code/discipline/__discipline_power.dm @@ -273,6 +273,12 @@ to_chat(owner, span_warning("[target] resists your Disciplines!")) return FALSE + //check if distance is in range + if(!IN_GIVEN_RANGE(owner, target, range)) + if(alert) + to_chat(owner, span_warning("[target] is out of range!")) + return FALSE + //make sure our LIVING target isn't DEAD var/mob/living/living_target = target if((target_type & TARGET_LIVING) && (living_target?.stat == DEAD)) @@ -295,21 +301,14 @@ to_chat(owner, span_warning("You can only cast [src] on humans!")) return FALSE - if((target_type & TARGET_OBJ) && istype(target, /obj)) - return TRUE - - if((target_type & TARGET_GHOST) && istype(target, /mob/dead)) - return TRUE - - if((target_type & TARGET_TURF) && istype(target, /turf)) - return TRUE + if((target_type & TARGET_OBJ) && !istype(target, /obj)) + return FALSE - //check if distance is in range - if(!IN_GIVEN_RANGE(owner, target, range)) - if(alert) - to_chat(owner, span_warning("[target] is out of range!")) + if((target_type & TARGET_GHOST) && !istype(target, /mob/dead)) return FALSE + if((target_type & TARGET_TURF) && !istype(target, /turf)) + return FALSE return TRUE /** From a33981145304b21c80c70c826acbcf78dc955a50 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:10:39 +0200 Subject: [PATCH 084/104] awawawawawawa --- .../discipline/vicissitude/vicissitude.dm | 48 ++++--------------- .../code/discipline/vicissitude/zulo.dm | 5 ++ .../vicissitude/zulo_preferences.dm | 10 ++-- 3 files changed, 18 insertions(+), 45 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 23b368bb8baa..10b33f56773c 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -148,66 +148,34 @@ check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE target_type = NONE vitae_cost = 2 - toggled = TRUE aggravating = TRUE cooldown_length = 1 TURNS activate_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' - var/list/obj/item/bodypart/strengthened_limbs + var/datum/action/cooldown/spell/shapeshift/zulo/zulo_form /datum/discipline_power/vicissitude/horrid_form/pre_activation_checks() . = ..() owner.Stun(1 TURNS) owner.do_jitter_animation(1 TURNS) - if(!do_after(owner, 1 TURNS, owner)) - return FALSE return TRUE /datum/discipline_power/vicissitude/horrid_form/activate() . = ..() - // All Physical Attributes increase by three - owner.st_add_stat_mod(STAT_STRENGTH, 3, HORRID_FORM_SOURCE) - owner.st_add_stat_mod(STAT_DEXTERITY, 3, HORRID_FORM_SOURCE) - owner.st_add_stat_mod(STAT_STAMINA, 3, HORRID_FORM_SOURCE) - - // but all Social Attributes drop to zero - owner.st_add_stat_mod(STAT_CHARISMA, -owner.st_get_stat(STAT_CHARISMA), HORRID_FORM_SOURCE) - owner.st_add_stat_mod(STAT_MANIPULATION, -owner.st_get_stat(STAT_MANIPULATION), HORRID_FORM_SOURCE) - owner.st_add_stat_mod(STAT_APPEARANCE, -owner.st_get_stat(STAT_APPEARANCE), HORRID_FORM_SOURCE) - - for(var/obj/item/bodypart/limb in owner.bodyparts) - limb.unarmed_damage_low += 5 - limb.unarmed_damage_high += 5 - LAZYADD(strengthened_limbs, limb) - - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_DEATHCOMA), PROC_REF(deactivate)) + if(!zulo_form) + zulo_form = new(owner) + zulo_form.Grant(owner) + zulo_form.Activate() /datum/discipline_power/vicissitude/horrid_form/pre_deactivation_checks() . = ..() - owner.Stun(1 TURNS) owner.do_jitter_animation(1 TURNS) - if(!do_after(owner, 1 TURNS, owner)) - return FALSE + owner.Stun(1 TURNS) return TRUE /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() - owner.Stun(2 SECONDS) - owner.do_jitter_animation(5 SECONDS) - - owner.st_remove_stat_mod(STAT_STRENGTH, HORRID_FORM_SOURCE) - owner.st_remove_stat_mod(STAT_DEXTERITY, HORRID_FORM_SOURCE) - owner.st_remove_stat_mod(STAT_STAMINA, HORRID_FORM_SOURCE) - - owner.st_remove_stat_mod(STAT_CHARISMA, HORRID_FORM_SOURCE) - owner.st_remove_stat_mod(STAT_MANIPULATION, HORRID_FORM_SOURCE) - owner.st_remove_stat_mod(STAT_APPEARANCE, HORRID_FORM_SOURCE) - - for(var/obj/item/bodypart/limb in strengthened_limbs) - limb.unarmed_damage_low -= 5 - limb.unarmed_damage_high -= 5 - strengthened_limbs = null - - UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_DEATHCOMA)) + if(zulo_form && is_type_in_list(owner, zulo_form.possible_shapes)) + zulo_form.cast(owner) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index c16da0e65260..ea2ed02b45a1 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -48,3 +48,8 @@ GLOBAL_LIST_INIT(zulo_forms, list( bloodpool = 2 maxbloodpool = 2 + +/mob/living/basic/zulo/Initialize(mapload) + . = ..() + var/preffered_form = client?.prefs.read_preference(/datum/preference/choiced/subsplat/zulo_form) + icon_state = preffered_form ? preffered_form : "fiend" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm index e102edb6571e..d78f3e2e200e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo_preferences.dm @@ -1,4 +1,4 @@ -/datum/preference/choiced/zulo_form +/datum/preference/choiced/subsplat/zulo_form savefile_key = "zulo_form" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_FEATURES @@ -6,7 +6,7 @@ main_feature_name = "Zulo Form" should_generate_icons = TRUE -/datum/preference/choiced/zulo_form/has_relevant_feature(datum/preferences/preferences) +/datum/preference/choiced/subsplat/zulo_form/has_relevant_feature(datum/preferences/preferences) . = ..() if(!.) // Make sure we acctually can select clan in the first place return FALSE @@ -19,17 +19,17 @@ return TRUE return FALSE -/datum/preference/choiced/zulo_form/init_possible_values() +/datum/preference/choiced/subsplat/zulo_form/init_possible_values() var/list/values = list() for(var/name in GLOB.zulo_forms) values[name] = GLOB.zulo_forms[name] return values -/datum/preference/choiced/zulo_form/icon_for(value) +/datum/preference/choiced/subsplat/zulo_form/icon_for(value) var/icon_state = GLOB.zulo_forms[value] var/datum/universal_icon/zulo_icon = uni_icon('modular_darkpack/modules/powers/icons/zulo_forms.dmi', icon_state) zulo_icon.scale(32, 32) return zulo_icon -/datum/preference/choiced/zulo_form/apply_to_human(mob/living/carbon/human/target, value) +/datum/preference/choiced/subsplat/zulo_form/apply_to_human(mob/living/carbon/human/target, value) return From 27b07524428b00c260a72fa6783228526dd4582c Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:17:41 +0200 Subject: [PATCH 085/104] Update vicissitude.dm --- .../powers/code/discipline/vicissitude/vicissitude.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 10b33f56773c..04d11a4d272a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -155,8 +155,9 @@ /datum/discipline_power/vicissitude/horrid_form/pre_activation_checks() . = ..() - owner.Stun(1 TURNS) owner.do_jitter_animation(1 TURNS) + if(!do_after(owner, 1 TURNS, owner)) + return FALSE return TRUE /datum/discipline_power/vicissitude/horrid_form/activate() @@ -164,18 +165,19 @@ if(!zulo_form) zulo_form = new(owner) zulo_form.Grant(owner) - zulo_form.Activate() + zulo_form.Activate(owner) /datum/discipline_power/vicissitude/horrid_form/pre_deactivation_checks() . = ..() owner.do_jitter_animation(1 TURNS) - owner.Stun(1 TURNS) + if(!do_after(owner, 1 TURNS, owner)) + return FALSE return TRUE /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() if(zulo_form && is_type_in_list(owner, zulo_form.possible_shapes)) - zulo_form.cast(owner) + zulo_form.Activate(owner) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 40429749488e39798b326e80f0f3a2afc2d701f8 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:20:34 +0200 Subject: [PATCH 086/104] Update zulo.dm --- .../modules/powers/code/discipline/vicissitude/zulo.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index ea2ed02b45a1..1b26eff82446 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -51,5 +51,6 @@ GLOBAL_LIST_INIT(zulo_forms, list( /mob/living/basic/zulo/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_UNMASQUERADE, type) var/preffered_form = client?.prefs.read_preference(/datum/preference/choiced/subsplat/zulo_form) icon_state = preffered_form ? preffered_form : "fiend" From 5fe1c75a0953c395e7575c8ec01312d0067a74ef Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:28:37 +0200 Subject: [PATCH 087/104] Update zulo.dm --- .../powers/code/discipline/vicissitude/zulo.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 1b26eff82446..4b13eca1dbbe 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(zulo_forms, list( pixel_w = -16 mob_biotypes = MOB_ORGANIC mob_size = MOB_SIZE_HUGE - + basic_mob_flags = PRECISE_ATTACK_ZONES | FLAMMABLE_MOB attack_verb_continuous = "slashes" attack_verb_simple = "slash" attack_sound = 'sound/items/weapons/slash.ogg' @@ -39,8 +39,10 @@ GLOBAL_LIST_INIT(zulo_forms, list( maxHealth = 600 health = 600 - speed = 2 - obj_damage = 20 + speed = 3 + melee_damage_lower = 30 + melee_damage_upper = 30 + obj_damage = 30 armour_penetration = 5 wound_bonus = 0 sharpness = SHARP_POINTY @@ -52,5 +54,8 @@ GLOBAL_LIST_INIT(zulo_forms, list( /mob/living/basic/zulo/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_UNMASQUERADE, type) + +/mob/living/basic/zulo/mind_initialize() + . = ..() var/preffered_form = client?.prefs.read_preference(/datum/preference/choiced/subsplat/zulo_form) icon_state = preffered_form ? preffered_form : "fiend" From 80086d9d6d803cb6240643b861c4d8fe0519b877 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:36:53 +0200 Subject: [PATCH 088/104] Update zulo.dm --- .../modules/powers/code/discipline/vicissitude/zulo.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 4b13eca1dbbe..a40cb2b1cc25 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -39,7 +39,7 @@ GLOBAL_LIST_INIT(zulo_forms, list( maxHealth = 600 health = 600 - speed = 3 + speed = 1 melee_damage_lower = 30 melee_damage_upper = 30 obj_damage = 30 @@ -58,4 +58,5 @@ GLOBAL_LIST_INIT(zulo_forms, list( /mob/living/basic/zulo/mind_initialize() . = ..() var/preffered_form = client?.prefs.read_preference(/datum/preference/choiced/subsplat/zulo_form) - icon_state = preffered_form ? preffered_form : "fiend" + var/new_icon_state = GLOB.zulo_forms[preffered_form] + icon_state = new_icon_state ? new_icon_state : "fiend" From 5f98e5576bd1945f6d3709a6194a334ab50cff42 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 12:45:35 +0200 Subject: [PATCH 089/104] Update vicissitude.dm --- .../powers/code/discipline/vicissitude/vicissitude.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 04d11a4d272a..cfd53eecbc77 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -1,8 +1,4 @@ -#define HORRID_FORM_SOURCE "Horrid Form" -// Level 1: Shapeshift Self -// Level 2: Shapeshift Other -// Level 3: Damage others and self. -// Level 4: Shapeshift into a Horrid Form + // Level 5: Slimegirl tzimisce /datum/discipline/vicissitude From 34d6e002bcaed97f8b33722b9cbbacbc7ae05fc6 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 13:49:22 +0200 Subject: [PATCH 090/104] woaw --- .../~darkpack/traits/declarations.dm | 3 + code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + modular_darkpack/modules/clothes/code/suit.dm | 16 -- .../code/discipline/dominate/dominate.dm | 4 + .../code/discipline/vicissitude/blood_form.dm | 162 ++++++++++++++++++ .../vicissitude/crafting_recipes.dm | 22 ++- .../vicissitude/objects/creatures.dm | 3 + .../vicissitude/objects/flesh_items.dm | 34 ++++ .../code/discipline/vicissitude/zulo.dm | 1 - 10 files changed, 224 insertions(+), 23 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index ad4ab74a8f39..9d8a05dae348 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -111,6 +111,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // its called this because theres apparently already a defined quirk called 'hungry' which appears to lower your blood drawn from biting by half. #define TRAIT_NEEDS_BLOOD "vampire_hungry" +// If the vampire can't perform mental abilities that require eye contact, as an example: dominate. +#define TRAIT_NO_EYE_CONTACT "no_eye_contact" + /// If the species has garou breeds to select. #define TRAIT_WTA_GAROU_BREED "wta_garou_breeds" // if the species has garou tribes to select. diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 6c35637a7d3f..295333f2ff8b 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -697,6 +697,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MASQUERADE_VIOLATING_EYES" = TRAIT_MASQUERADE_VIOLATING_EYES, // DARKPACK EDIT ADD "TRAIT_MASQUERADE_VIOLATING_FACE" = TRAIT_MASQUERADE_VIOLATING_FACE, // DARKPACK EDIT ADD "TRAIT_NEEDS_BLOOD" = TRAIT_NEEDS_BLOOD, //DARKPACK EDIT ADD - Hunger and Frenzy + "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_ORGANOVORE" = TRAIT_ORGANOVORE, // DARKPACK EDIT ADD - Nagaraja "TRAIT_SANGUINE_INCONGRUITY" = TRAIT_SANGUINE_INCONGRUITY, // DARKPACK EDIT ADD - Giovanni Quirk "TRAIT_MONSTROUS" = TRAIT_MONSTROUS, // DARKPACK EDIT ADD - MERITS/FLAWS diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 544540773ad1..de94b7825796 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -389,6 +389,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_MASQUERADE_VIOLATING_FACE" = TRAIT_MASQUERADE_VIOLATING_FACE, // DARKPACK EDIT ADD "TRAIT_NEEDS_BLOOD" = TRAIT_NEEDS_BLOOD, //DARKPACK EDIT ADD - Hunger and Frenzy "TRAIT_NON_INT" = TRAIT_NON_INT, // 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_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD diff --git a/modular_darkpack/modules/clothes/code/suit.dm b/modular_darkpack/modules/clothes/code/suit.dm index 87093cd3eeff..cbf5207d5cd3 100644 --- a/modular_darkpack/modules/clothes/code/suit.dm +++ b/modular_darkpack/modules/clothes/code/suit.dm @@ -371,22 +371,6 @@ desc = "True power lies not in wealth, but in the things it affords you." icon_state = "strauss_coat" -/obj/item/clothing/suit/vampire/trench/tzi - name = "fleshcoat" - desc = "HUMAN LEATHER JACKET." - icon_state = "trench_tzi" - armor_type = /datum/armor/fleshcoat - clothing_traits = list(TRAIT_UNMASQUERADE) - -/datum/armor/fleshcoat - melee = 50 - bullet = 50 - laser = 10 - energy = 10 - bomb = 25 - acid = 10 - wound = 50 - /obj/item/clothing/suit/vampire/trench/voivode name = "regal coat" desc = "A beautiful jacket. Whoever owns this must be important." diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index 56d76f718711..3063c9d9f0bb 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -74,6 +74,10 @@ /datum/discipline_power/dominate/proc/dominate_check(mob/living/carbon/human/owner, mob/living/carbon/human/target, owner_stat, numerical = FALSE) var/datum/discipline/dominate/parent_disc = discipline + if(HAS_TRAIT(owner, TRAIT_NO_EYE_CONTACT)) + to_chat(owner, span_warning("You are unable to make eye contact!")) + return FALSE + //someone has botched a dominate against this human if(LAZYLEN(parent_disc.botched_targets)) for(var/datum/weakref/ref in parent_disc.botched_targets) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index e69de29bb2d1..2e7ba564c8ce 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -0,0 +1,162 @@ +#define SPECIES_BLOODFORM "bloodform" + +/datum/species/tzimisce_blood_form + // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. + name = "\improper Bloodform" + plural_form = "Bloodforms" + id = SPECIES_BLOODFORM + examine_limb_id = SPECIES_BLOODFORM + inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_SLIME + inherent_traits = list( + TRAIT_MUTE, + TRAIT_NO_EYE_CONTACT, + ) + exotic_bloodtype = BLOOD_TYPE_KINDRED + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/blood_form, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/blood_form, + BODY_ZONE_HEAD = /obj/item/bodypart/head/blood_form, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/blood_form, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/blood_form, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/blood_form, + ) + var/datum/action/innate/regenerate_blood_limbs/regenerate_limbs + +/datum/species/tzimisce_blood_form/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load, regenerate_icons) + . = ..() + if(ishuman(new_jellyperson)) + regenerate_limbs = new + regenerate_limbs.Grant(new_jellyperson) + new_jellyperson.AddElement(/datum/element/soft_landing) + RegisterSignal(new_jellyperson, COMSIG_HUMAN_ON_HANDLE_BLOOD, PROC_REF(slime_blood)) + +/datum/species/tzimisce_blood_form/on_species_loss(mob/living/carbon/former_jellyperson, datum/species/new_species, pref_load) + if(regenerate_limbs) + regenerate_limbs.Remove(former_jellyperson) + former_jellyperson.RemoveElement(/datum/element/soft_landing) + UnregisterSignal(former_jellyperson, COMSIG_HUMAN_ON_HANDLE_BLOOD) + return ..() + +/datum/species/tzimisce_blood_form/proc/slime_blood(mob/living/carbon/human/slime, seconds_per_tick) + SIGNAL_HANDLER + + if(slime.stat == DEAD) + return HANDLE_BLOOD_HANDLED + + if(slime.bloodpool < 1) // Oh shit, we're running out of blood. Save ourselves by cannibalizing a limb. + if(!cannibalize_body(slime)) + slime.death() // We couldnt cannibalize a limb, so that means we've hit critical blood. Time to die. + return HANDLE_BLOOD_HANDLED + + regenerate_limbs?.build_all_button_icons(UPDATE_BUTTON_STATUS) + return HANDLE_BLOOD_HANDLED + +/datum/species/tzimisce_blood_form/proc/cannibalize_body(mob/living/carbon/human/H) + var/list/limbs_to_consume = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - H.get_missing_limbs() + var/obj/item/bodypart/consumed_limb + if(!length(limbs_to_consume)) + H.losebreath++ + return FALSE + if(H.num_legs) //Legs go before arms + limbs_to_consume -= list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM) + consumed_limb = H.get_bodypart(pick(limbs_to_consume)) + consumed_limb.drop_limb() + to_chat(H, span_userdanger("Your [consumed_limb] is drawn back into your body, unable to maintain its shape!")) + qdel(consumed_limb) + H.bloodpool += 1 + return TRUE + +/datum/action/innate/regenerate_blood_limbs + name = "Regenerate Limbs" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeheal" + button_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + overlay_icon_state = "bg_alien_border" + + var/blood_per_limb = 100 + +/datum/action/innate/regenerate_blood_limbs/IsAvailable(feedback = FALSE) + . = ..() + if(!.) + return + var/mob/living/carbon/human/H = owner + var/list/limbs_to_heal = H.get_missing_limbs() + if(!length(limbs_to_heal)) + return FALSE + if(H.get_blood_volume() >= BLOOD_VOLUME_OKAY + blood_per_limb) + return TRUE + +/datum/action/innate/regenerate_blood_limbs/Activate() + var/mob/living/carbon/human/H = owner + var/list/limbs_to_heal = H.get_missing_limbs() + if(!length(limbs_to_heal)) + to_chat(H, span_notice("You feel intact enough as it is.")) + return + to_chat(H, span_notice("You focus intently on your missing [length(limbs_to_heal) >= 2 ? "limbs" : "limb"]...")) + if(H.get_blood_volume() >= blood_per_limb * length(limbs_to_heal) + BLOOD_VOLUME_OKAY) + H.regenerate_limbs() + H.adjust_blood_volume(-blood_per_limb * length(limbs_to_heal)) + to_chat(H, span_notice("...and after a moment you finish reforming!")) + return + else if(H.get_blood_volume() >= blood_per_limb)//We can partially heal some limbs + while(H.get_blood_volume() >= BLOOD_VOLUME_OKAY + blood_per_limb) + var/healed_limb = pick(limbs_to_heal) + H.regenerate_limb(healed_limb) + limbs_to_heal -= healed_limb + H.adjust_blood_volume(-blood_per_limb) + to_chat(H, span_warning("...but there is not enough of you to fix everything! You must attain more vitae to heal completely!")) + return + to_chat(H, span_warning("...but there is not enough of you to go around! You must attain more vitae to heal!")) + +/// Bodyparts +/obj/item/bodypart/head/blood_form + biological_state = (BIO_INORGANIC) + limb_id = SPECIES_BLOODFORM + is_dimorphic = TRUE + dmg_overlay_type = null + burn_modifier = 1 + head_flags = HEAD_EYECOLOR | HEAD_EYESPRITES | HEAD_HAIR | HEAD_FACIAL_HAIR + butcher_replacement = null + +/obj/item/bodypart/chest/blood_form + biological_state = (BIO_INORGANIC) + limb_id = SPECIES_BLOODFORM + is_dimorphic = TRUE + dmg_overlay_type = null + burn_modifier =1 + butcher_replacement = null + +/obj/item/bodypart/chest/blood_form/get_butt_sprite() + return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME) + +/obj/item/bodypart/arm/left/blood_form + biological_state = (BIO_INORGANIC) + limb_id = SPECIES_BLOODFORM + dmg_overlay_type = null + burn_modifier = 1 + butcher_replacement = null + +/obj/item/bodypart/arm/right/blood_form + biological_state = (BIO_INORGANIC) + limb_id = SPECIES_BLOODFORM + dmg_overlay_type = null + burn_modifier = 1 + butcher_replacement = null + +/obj/item/bodypart/leg/left/blood_form + biological_state = (BIO_INORGANIC) + limb_id = SPECIES_BLOODFORM + dmg_overlay_type = null + burn_modifier = 1 + butcher_replacement = null + +/obj/item/bodypart/leg/right/blood_form + biological_state = (BIO_INORGANIC) + limb_id = SPECIES_BLOODFORM + dmg_overlay_type = null + burn_modifier = 1 + butcher_replacement = null + +#undef SPECIES_BLOODFORM diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm index c68a5d9b7b12..30154aaf3cde 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm @@ -9,7 +9,7 @@ name = "Second Heart (Antistun)" time = 50 reqs = list(/obj/item/stack/human_flesh = 25, /obj/item/organ/heart = 1) - result = /obj/item/organ/cyberimp/brain/anti_stun + result = /obj/item/organ/cyberimp/brain/anti_stun/tzi category = CAT_TZIMISCE /datum/crafting_recipe/tzi_eyes @@ -19,11 +19,6 @@ result = /obj/item/organ/eyes/night_vision/tzimisce category = CAT_TZIMISCE -/obj/item/organ/eyes/night_vision/tzimisce - low_light_cutoff = list(15, 6, 8) - medium_light_cutoff = list(35, 20, 25) - high_light_cutoff = list(50, 40, 40) - /datum/crafting_recipe/tzi_implant name = "Implanting Flesh Device" time = 50 @@ -31,6 +26,13 @@ result = /obj/item/autosurgeon/vicissitude category = CAT_TZIMISCE +/datum/crafting_recipe/tzicreature + name = "Wretched Creature" + time = 50 + reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/organ/brain = 1) + result = /obj/item/toy/plush/tzi + category = CAT_TZIMISCE + /datum/crafting_recipe/tzi_floor name = "Gut Floor" time = 50 @@ -47,6 +49,14 @@ category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY +/datum/crafting_recipe/tzijelly + name = "Living Meat Node" + time = 50 + reqs = list(/obj/item/stack/human_flesh = 20, /obj/item/guts = 1, /obj/item/toy/plush/tzi = 1) + result = /obj/structure/tzijelly + category = CAT_TZIMISCE + crafting_flags = CRAFT_CHECK_DENSITY + /datum/crafting_recipe/tzi_stool name = "Arm Stool" time = 50 diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm index 5254ca1854b4..9260df832ebb 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm @@ -26,6 +26,7 @@ bloodquality = BLOOD_QUALITY_LOW bloodpool = 2 maxbloodpool = 2 + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 2) /mob/living/basic/szlachta/fister name = "fister" @@ -45,6 +46,7 @@ status_flags = CANPUSH bloodpool = 5 maxbloodpool = 5 + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 5) /mob/living/basic/szlachta/tanker name = "tanker" @@ -63,6 +65,7 @@ combat_mode = TRUE bloodpool = 7 maxbloodpool = 7 + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 10) /mob/living/basic/szlachta/hostile faction = list(FACTION_HOSTILE) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index 32b2a4d4fca3..a45958ba38e1 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -38,6 +38,7 @@ desc = "A talented fleshcrafted creature that can insert an implant or organ into its master without the hassle of extensive surgery. \ Its mouth is eagerly awaiting implants or organs. However, it's quite greedy, so a screwdriver must be used to pry away accidentally added items." icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 10, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) /obj/structure/fleshwall name = "flesh wall" @@ -49,6 +50,7 @@ anchored = TRUE density = TRUE max_integrity = 100 + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 2) /obj/structure/tzijelly name = "jelly thing" @@ -74,6 +76,7 @@ name = "gut floor" icon = 'modular_darkpack/modules/walls/icons/floors.dmi' icon_state = "tzimisce_floor" + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT) /obj/effect/decal/gut_floor/Initialize(mapload) . = ..() @@ -91,6 +94,7 @@ /obj/structure/chair/old/tzimisce icon = 'modular_darkpack/modules/powers/icons/flesh_objects.dmi' icon_state = "tzimisce_stool" + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 5) /obj/item/guts name = "guts" @@ -107,3 +111,33 @@ icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/powers/icons/flesh_onfloor.dmi') w_class = WEIGHT_CLASS_SMALL + +/obj/item/clothing/suit/vampire/trench/tzi + name = "fleshcoat" + desc = "HUMAN LEATHER JACKET." + icon_state = "trench_tzi" + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 50) + armor_type = /datum/armor/fleshcoat + clothing_traits = list(TRAIT_UNMASQUERADE) + +/datum/armor/fleshcoat + melee = 50 + bullet = 50 + laser = 10 + energy = 10 + bomb = 25 + acid = 10 + wound = 50 + +/obj/item/organ/cyberimp/brain/anti_stun/tzi + name = "secondary adrenal gland" + desc = "This organ will secrete a potent cocktail of stimulants when stunned, reducing downtime. Installs to the head." + icon_state = "tongueayylmao" + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 25) + + +/obj/item/organ/eyes/night_vision/tzimisce + low_light_cutoff = list(15, 6, 8) + medium_light_cutoff = list(35, 20, 25) + high_light_cutoff = list(50, 40, 40) + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 15) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index a40cb2b1cc25..a7c003a1ecaa 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -21,7 +21,6 @@ GLOBAL_LIST_INIT(zulo_forms, list( convert_damage = FALSE possible_shapes = list(/mob/living/basic/zulo) click_to_activate = FALSE - owner_has_control = FALSE /mob/living/basic/zulo name = "unknown creature" From f9872af0534611563c90d3654d28097de580be5e Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:06:19 +0200 Subject: [PATCH 091/104] rahhh --- .../code/discipline/vicissitude/blood_form.dm | 27 +++++++++---------- .../discipline/vicissitude/vicissitude.dm | 5 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index 2e7ba564c8ce..06772976aeaf 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -113,50 +113,49 @@ /// Bodyparts /obj/item/bodypart/head/blood_form biological_state = (BIO_INORGANIC) - limb_id = SPECIES_BLOODFORM - is_dimorphic = TRUE + limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null - burn_modifier = 1 + teeth_count = 0 head_flags = HEAD_EYECOLOR | HEAD_EYESPRITES | HEAD_HAIR | HEAD_FACIAL_HAIR butcher_replacement = null + is_dimorphic = FALSE /obj/item/bodypart/chest/blood_form biological_state = (BIO_INORGANIC) - limb_id = SPECIES_BLOODFORM - is_dimorphic = TRUE + limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null - burn_modifier =1 butcher_replacement = null + is_dimorphic = TRUE /obj/item/bodypart/chest/blood_form/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME) /obj/item/bodypart/arm/left/blood_form biological_state = (BIO_INORGANIC) - limb_id = SPECIES_BLOODFORM + limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null - burn_modifier = 1 butcher_replacement = null + is_dimorphic = FALSE /obj/item/bodypart/arm/right/blood_form biological_state = (BIO_INORGANIC) - limb_id = SPECIES_BLOODFORM + limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null - burn_modifier = 1 butcher_replacement = null + is_dimorphic = FALSE /obj/item/bodypart/leg/left/blood_form biological_state = (BIO_INORGANIC) - limb_id = SPECIES_BLOODFORM + limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null - burn_modifier = 1 butcher_replacement = null + is_dimorphic = FALSE /obj/item/bodypart/leg/right/blood_form biological_state = (BIO_INORGANIC) - limb_id = SPECIES_BLOODFORM + limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null - burn_modifier = 1 butcher_replacement = null + is_dimorphic = FALSE #undef SPECIES_BLOODFORM diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index cfd53eecbc77..a89a6615472c 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -173,7 +173,7 @@ /datum/discipline_power/vicissitude/horrid_form/deactivate() . = ..() if(zulo_form && is_type_in_list(owner, zulo_form.possible_shapes)) - zulo_form.Activate(owner) + zulo_form.Remove(owner) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -190,7 +190,8 @@ /datum/discipline_power/vicissitude/bloodform/activate() . = ..() - + owner.set_species(mrace = /datum/species/tzimisce_blood_form, icon_update = TRUE, pref_load = TRUE, replace_missing = FALSE) /datum/discipline_power/vicissitude/bloodform/deactivate() . = ..() + owner.set_species(mrace = /datum/species/human, icon_update = TRUE, pref_load = TRUE, replace_missing = FALSE) From 8e16a11f241f40d0d1bf898629fae42fd116ee15 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:22:41 +0200 Subject: [PATCH 092/104] wdawawdwa --- .../code/discipline/vicissitude/vicissitude.dm | 12 ------------ .../powers/code/discipline/vicissitude/zulo.dm | 7 ++++++- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index a89a6615472c..e57fb5109e05 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -163,18 +163,6 @@ zulo_form.Grant(owner) zulo_form.Activate(owner) -/datum/discipline_power/vicissitude/horrid_form/pre_deactivation_checks() - . = ..() - owner.do_jitter_animation(1 TURNS) - if(!do_after(owner, 1 TURNS, owner)) - return FALSE - return TRUE - -/datum/discipline_power/vicissitude/horrid_form/deactivate() - . = ..() - if(zulo_form && is_type_in_list(owner, zulo_form.possible_shapes)) - zulo_form.Remove(owner) - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/discipline_power/vicissitude/bloodform diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index a7c003a1ecaa..667e66b28925 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -22,6 +22,11 @@ GLOBAL_LIST_INIT(zulo_forms, list( possible_shapes = list(/mob/living/basic/zulo) click_to_activate = FALSE +/datum/action/cooldown/spell/shapeshift/zulo/do_unshapeshift(mob/living/caster) + . = ..() + owner.do_jitter_animation(1 TURNS) + Remove(caster) + /mob/living/basic/zulo name = "unknown creature" desc = "What the hell is that thing!?" @@ -38,7 +43,7 @@ GLOBAL_LIST_INIT(zulo_forms, list( maxHealth = 600 health = 600 - speed = 1 + speed = 0.5 melee_damage_lower = 30 melee_damage_upper = 30 obj_damage = 30 From 00b7257ccb794e1e08fb894102a0e2070c18d3a7 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:25:28 +0200 Subject: [PATCH 093/104] Update zulo.dm --- .../modules/powers/code/discipline/vicissitude/zulo.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index 667e66b28925..b58ab8bea634 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_INIT(zulo_forms, list( /datum/action/cooldown/spell/shapeshift/zulo/do_unshapeshift(mob/living/caster) . = ..() - owner.do_jitter_animation(1 TURNS) + caster.do_jitter_animation(1 TURNS) Remove(caster) /mob/living/basic/zulo From d8462555200b55f2ce95fd814fac9a3c66b5a7fa Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:29:12 +0200 Subject: [PATCH 094/104] Update zulo.dm --- .../modules/powers/code/discipline/vicissitude/zulo.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm index b58ab8bea634..3bde48206521 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/zulo.dm @@ -24,7 +24,6 @@ GLOBAL_LIST_INIT(zulo_forms, list( /datum/action/cooldown/spell/shapeshift/zulo/do_unshapeshift(mob/living/caster) . = ..() - caster.do_jitter_animation(1 TURNS) Remove(caster) /mob/living/basic/zulo From 4d7b16b91940edeb5d23d9cb84fcf03b086b4b61 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:38:07 +0200 Subject: [PATCH 095/104] Update vicissitude.dm --- .../modules/powers/code/discipline/vicissitude/vicissitude.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index e57fb5109e05..956952864197 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -174,6 +174,7 @@ target_type = NONE violates_masquerade = TRUE cooldown_length = 1 TURNS + toggled = TRUE activate_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' /datum/discipline_power/vicissitude/bloodform/activate() From e662133b6d59774c8d11ce6fa79fb69bb8a91ded Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:46:09 +0200 Subject: [PATCH 096/104] awwawa --- .../discipline/vicissitude/objects/flesh_items.dm | 3 +-- .../code/discipline/vicissitude/vicissitude.dm | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index a45958ba38e1..99e4db211d94 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -3,7 +3,7 @@ desc = "What remains of a person, when you really get down to it." color = "#d8965b" categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL = TRUE) - sheet_type = /obj/item/stack/sheet/meat + sheet_type = /obj/item/stack/sheet/human_flesh value_per_unit = 0.05 beauty_modifier = -0.3 strength_modifier = 0.7 @@ -135,7 +135,6 @@ icon_state = "tongueayylmao" custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 25) - /obj/item/organ/eyes/night_vision/tzimisce low_light_cutoff = list(15, 6, 8) medium_light_cutoff = list(35, 20, 25) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 956952864197..9b8a7224040d 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -177,10 +177,24 @@ toggled = TRUE activate_sound = 'modular_darkpack/modules/powers/sounds/vicissitude.ogg' +/datum/discipline_power/vicissitude/bloodform/pre_activation_checks() + . = ..() + owner.do_jitter_animation(1 TURNS) + if(!do_after(owner, 1 TURNS, owner)) + return FALSE + return TRUE + /datum/discipline_power/vicissitude/bloodform/activate() . = ..() owner.set_species(mrace = /datum/species/tzimisce_blood_form, icon_update = TRUE, pref_load = TRUE, replace_missing = FALSE) +/datum/discipline_power/vicissitude/bloodform/pre_deactivation_checks(atom/target) + . = ..() + owner.do_jitter_animation(1 TURNS) + if(!do_after(owner, 1 TURNS, owner)) + return FALSE + return TRUE + /datum/discipline_power/vicissitude/bloodform/deactivate() . = ..() owner.set_species(mrace = /datum/species/human, icon_update = TRUE, pref_load = TRUE, replace_missing = FALSE) From 06bc89abcfb9f353a097967d4cf7b6b71fe9d01c Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:49:40 +0200 Subject: [PATCH 097/104] RAHHHHHH --- .../operations/operation_plastic_surgery.dm | 2 +- .../npc/code/nonhuman/hostile/baali_guard.dm | 2 +- .../npc/code/nonhuman/hostile/werewolf.dm | 2 +- .../code/discipline/protean/beast_form.dm | 2 +- .../vicissitude/crafting_recipes.dm | 24 +++++++++---------- .../vicissitude/objects/creatures.dm | 6 ++--- .../vicissitude/objects/flesh_items.dm | 13 +++++----- .../discipline/vicissitude/vicissitude.dm | 2 +- modular_darkpack/modules/toys/code/plushes.dm | 1 + 9 files changed, 28 insertions(+), 26 deletions(-) diff --git a/code/modules/surgery/operations/operation_plastic_surgery.dm b/code/modules/surgery/operations/operation_plastic_surgery.dm index 7e572a5f881b..969017adc0cb 100644 --- a/code/modules/surgery/operations/operation_plastic_surgery.dm +++ b/code/modules/surgery/operations/operation_plastic_surgery.dm @@ -122,7 +122,7 @@ desc = "Apply plastic to a patient's face to to allow for greater customization in following plastic surgery." implements = list( /obj/item/stack/sheet/plastic = 1, - /obj/item/stack/human_flesh = 1, // DARKPACK EDIT ADD + /obj/item/stack/sheet/human_flesh = 1, // DARKPACK EDIT ADD ) time = 4.8 SECONDS operation_flags = OPERATION_MORBID | OPERATION_LOCKED | OPERATION_NO_PATIENT_REQUIRED diff --git a/modular_darkpack/modules/npc/code/nonhuman/hostile/baali_guard.dm b/modular_darkpack/modules/npc/code/nonhuman/hostile/baali_guard.dm index b380e30b888c..fbcb018512f3 100644 --- a/modular_darkpack/modules/npc/code/nonhuman/hostile/baali_guard.dm +++ b/modular_darkpack/modules/npc/code/nonhuman/hostile/baali_guard.dm @@ -10,7 +10,7 @@ maxHealth = 1500 health = 1500 - guaranteed_butcher_results = list(/obj/item/stack/human_flesh = 20) + guaranteed_butcher_results = list(/obj/item/stack/sheet/human_flesh = 20) combat_mode = TRUE melee_damage_type = AGGRAVATED diff --git a/modular_darkpack/modules/npc/code/nonhuman/hostile/werewolf.dm b/modular_darkpack/modules/npc/code/nonhuman/hostile/werewolf.dm index 070c2a9337e4..899cda5d67a4 100644 --- a/modular_darkpack/modules/npc/code/nonhuman/hostile/werewolf.dm +++ b/modular_darkpack/modules/npc/code/nonhuman/hostile/werewolf.dm @@ -13,7 +13,7 @@ maxHealth = 575 health = 575 - butcher_results = list(/obj/item/stack/human_flesh = 10) + butcher_results = list(/obj/item/stack/sheet/human_flesh = 10) combat_mode = TRUE melee_damage_lower = 35 diff --git a/modular_darkpack/modules/powers/code/discipline/protean/beast_form.dm b/modular_darkpack/modules/powers/code/discipline/protean/beast_form.dm index bd0d11e468bc..1d4f95882467 100644 --- a/modular_darkpack/modules/powers/code/discipline/protean/beast_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/protean/beast_form.dm @@ -59,7 +59,7 @@ speed = -0.4 maxHealth = 275 health = 275 - butcher_results = list(/obj/item/stack/human_flesh = 10) + butcher_results = list(/obj/item/stack/sheet/human_flesh = 10) melee_damage_lower = 30 melee_damage_upper = 30 attack_verb_continuous = "slashes" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm index 30154aaf3cde..d5a0aab6112e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/crafting_recipes.dm @@ -1,42 +1,42 @@ /datum/crafting_recipe/tzi_trench name = "Leather-Bone Trenchcoat (Armor)" time = 50 - reqs = list(/obj/item/stack/human_flesh = 50, /obj/item/spine = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 50, /obj/item/spine = 1) result = /obj/item/clothing/suit/vampire/trench/tzi category = CAT_TZIMISCE /datum/crafting_recipe/tzi_heart name = "Second Heart (Antistun)" time = 50 - reqs = list(/obj/item/stack/human_flesh = 25, /obj/item/organ/heart = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 25, /obj/item/organ/heart = 1) result = /obj/item/organ/cyberimp/brain/anti_stun/tzi category = CAT_TZIMISCE /datum/crafting_recipe/tzi_eyes name = "Better Eyes (Nightvision)" time = 50 - reqs = list(/obj/item/stack/human_flesh = 15, /obj/item/organ/eyes = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 15, /obj/item/organ/eyes = 1) result = /obj/item/organ/eyes/night_vision/tzimisce category = CAT_TZIMISCE /datum/crafting_recipe/tzi_implant name = "Implanting Flesh Device" time = 50 - reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/knife/vamp = 1, /obj/item/reagent_containers/blood = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 10, /obj/item/knife/vamp = 1, /obj/item/reagent_containers/blood = 1) result = /obj/item/autosurgeon/vicissitude category = CAT_TZIMISCE /datum/crafting_recipe/tzicreature name = "Wretched Creature" time = 50 - reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/organ/brain = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 10, /obj/item/organ/brain = 1) result = /obj/item/toy/plush/tzi category = CAT_TZIMISCE /datum/crafting_recipe/tzi_floor name = "Gut Floor" time = 50 - reqs = list(/obj/item/stack/human_flesh = 1, /obj/item/guts = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 1, /obj/item/guts = 1) result = /obj/effect/decal/gut_floor category = CAT_TZIMISCE crafting_flags = CRAFT_ON_SOLID_GROUND|CRAFT_CHECK_DENSITY @@ -44,7 +44,7 @@ /datum/crafting_recipe/tzi_wall name = "Flesh Wall" time = 50 - reqs = list(/obj/item/stack/human_flesh = 2) + reqs = list(/obj/item/stack/sheet/human_flesh = 2) result = /obj/structure/fleshwall category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY @@ -52,7 +52,7 @@ /datum/crafting_recipe/tzijelly name = "Living Meat Node" time = 50 - reqs = list(/obj/item/stack/human_flesh = 20, /obj/item/guts = 1, /obj/item/toy/plush/tzi = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 20, /obj/item/guts = 1, /obj/item/toy/plush/tzi = 1) result = /obj/structure/tzijelly category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY @@ -60,21 +60,21 @@ /datum/crafting_recipe/tzi_stool name = "Arm Stool" time = 50 - reqs = list(/obj/item/stack/human_flesh = 5, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2) + reqs = list(/obj/item/stack/sheet/human_flesh = 5, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2) result = /obj/structure/chair/old/tzimisce category = CAT_TZIMISCE /datum/crafting_recipe/tzi_biter name = "Biting Abomination" time = 100 - reqs = list(/obj/item/stack/human_flesh = 2, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2, /obj/item/spine = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 2, /obj/item/bodypart/arm/right = 2, /obj/item/bodypart/arm/left = 2, /obj/item/spine = 1) result = /mob/living/basic/szlachta category = CAT_TZIMISCE /datum/crafting_recipe/tzi_fister name = "Punching Abomination" time = 100 - reqs = list(/obj/item/stack/human_flesh = 5, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/spine = 1, /obj/item/guts = 1) + reqs = list(/obj/item/stack/sheet/human_flesh = 5, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/spine = 1, /obj/item/guts = 1) result = /mob/living/basic/szlachta/fister category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY @@ -82,7 +82,7 @@ /datum/crafting_recipe/tzi_tanker name = "Fat Abomination" time = 100 - reqs = list(/obj/item/stack/human_flesh = 10, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/bodypart/leg/right = 1, /obj/item/bodypart/leg/left = 1, /obj/item/spine = 1, /obj/item/guts = 2) + reqs = list(/obj/item/stack/sheet/human_flesh = 10, /obj/item/bodypart/arm/right = 1, /obj/item/bodypart/arm/left = 1, /obj/item/bodypart/leg/right = 1, /obj/item/bodypart/leg/left = 1, /obj/item/spine = 1, /obj/item/guts = 2) result = /mob/living/basic/szlachta/tanker category = CAT_TZIMISCE crafting_flags = CRAFT_CHECK_DENSITY diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm index 9260df832ebb..dd40d411f973 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/creatures.dm @@ -6,7 +6,7 @@ icon_living = "biter" icon_dead = "biter_dead" mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - butcher_results = list(/obj/item/stack/human_flesh = 1) + butcher_results = list(/obj/item/stack/sheet/human_flesh = 1) response_help_continuous = "pets" response_help_simple = "pet" response_disarm_continuous = "gently pushes aside" @@ -36,7 +36,7 @@ icon_dead = "fister_dead" maxHealth = 125 health = 125 - butcher_results = list(/obj/item/stack/human_flesh = 2) + butcher_results = list(/obj/item/stack/sheet/human_flesh = 2) melee_damage_lower = 30 melee_damage_upper = 30 attack_verb_continuous = "punches" @@ -56,7 +56,7 @@ icon_dead = "tanker_dead" maxHealth = 350 health = 350 - butcher_results = list(/obj/item/stack/human_flesh = 4) + butcher_results = list(/obj/item/stack/sheet/human_flesh = 4) melee_damage_lower = 25 melee_damage_upper = 25 attack_verb_continuous = "slashes" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index 99e4db211d94..f5644ea760e8 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -10,7 +10,7 @@ item_sound_override = 'sound/effects/meatslap.ogg' turf_sound_override = FOOTSTEP_MEAT -/obj/item/stack/human_flesh +/obj/item/stack/sheet/human_flesh name = "human flesh" desc = "What the fuck..." singular_name = "human flesh" @@ -18,19 +18,19 @@ icon_state = "human" ONFLOOR_ICON_HELPER('modular_darkpack/modules/powers/icons/flesh_onfloor.dmi') mats_per_unit = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT) - merge_type = /obj/item/stack/human_flesh + merge_type = /obj/item/stack/sheet/human_flesh max_amount = 50 -/obj/item/stack/human_flesh/fifty +/obj/item/stack/sheet/human_flesh/fifty amount = 50 -/obj/item/stack/human_flesh/twenty +/obj/item/stack/sheet/human_flesh/twenty amount = 20 -/obj/item/stack/human_flesh/ten +/obj/item/stack/sheet/human_flesh/ten amount = 10 -/obj/item/stack/human_flesh/five +/obj/item/stack/sheet/human_flesh/five amount = 5 /obj/item/autosurgeon/vicissitude @@ -62,6 +62,7 @@ anchored = TRUE density = TRUE max_integrity = 100 + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 20) /obj/item/ground_heir name = "bag of ground" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm index 9b8a7224040d..661061dc5294 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/vicissitude.dm @@ -122,7 +122,7 @@ l_arm?.drop_limb() r_leg?.drop_limb() l_leg?.drop_limb() - new /obj/item/stack/human_flesh/twenty(target.loc) + new /obj/item/stack/sheet/human_flesh/twenty(target.loc) new /obj/item/guts(target.loc) new /obj/item/spine(target.loc) qdel(target) diff --git a/modular_darkpack/modules/toys/code/plushes.dm b/modular_darkpack/modules/toys/code/plushes.dm index 0eb39d560b05..badbac450f5d 100644 --- a/modular_darkpack/modules/toys/code/plushes.dm +++ b/modular_darkpack/modules/toys/code/plushes.dm @@ -29,3 +29,4 @@ attack_verb_continuous = list("tortures", "scourges") attack_verb_simple = list("torture", "scourge") squeak_override = list('modular_darkpack/modules/toys/sounds/femurbreaker.ogg'=1) + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 10) From b8fc7d56691114b5217a3c24bacdabdd936a4aab Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:51:41 +0200 Subject: [PATCH 098/104] Update blood_form.dm --- .../powers/code/discipline/vicissitude/blood_form.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index 06772976aeaf..8bef77e68cdc 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -119,6 +119,7 @@ head_flags = HEAD_EYECOLOR | HEAD_EYESPRITES | HEAD_HAIR | HEAD_FACIAL_HAIR butcher_replacement = null is_dimorphic = FALSE + species_color = "#e70000" /obj/item/bodypart/chest/blood_form biological_state = (BIO_INORGANIC) @@ -126,6 +127,7 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = TRUE + species_color = "#e70000" /obj/item/bodypart/chest/blood_form/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME) @@ -136,6 +138,7 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE + species_color = "#e70000" /obj/item/bodypart/arm/right/blood_form biological_state = (BIO_INORGANIC) @@ -143,6 +146,7 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE + species_color = "#e70000" /obj/item/bodypart/leg/left/blood_form biological_state = (BIO_INORGANIC) @@ -150,6 +154,7 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE + species_color = "#e70000" /obj/item/bodypart/leg/right/blood_form biological_state = (BIO_INORGANIC) @@ -157,5 +162,6 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE + species_color = "#e70000" #undef SPECIES_BLOODFORM From 9bbf6bbb18c10525cade1b85b8dda6b37fe4fb25 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:14:08 +0200 Subject: [PATCH 099/104] RAHHHH --- .../powers/code/discipline/vicissitude/blood_form.dm | 11 +++++------ .../discipline/vicissitude/objects/flesh_items.dm | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index 8bef77e68cdc..29502a0dbd4a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -10,6 +10,7 @@ inherent_traits = list( TRAIT_MUTE, TRAIT_NO_EYE_CONTACT, + TRAIT_MUTANT_COLORS, ) exotic_bloodtype = BLOOD_TYPE_KINDRED changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT @@ -21,6 +22,10 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/blood_form, BODY_ZONE_CHEST = /obj/item/bodypart/chest/blood_form, ) + fixed_mut_color = "#e6000099" + hair_color_mode = USE_FIXED_MUTANT_COLOR + hair_alpha = 150 + facial_hair_alpha = 150 var/datum/action/innate/regenerate_blood_limbs/regenerate_limbs /datum/species/tzimisce_blood_form/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load, regenerate_icons) @@ -119,7 +124,6 @@ head_flags = HEAD_EYECOLOR | HEAD_EYESPRITES | HEAD_HAIR | HEAD_FACIAL_HAIR butcher_replacement = null is_dimorphic = FALSE - species_color = "#e70000" /obj/item/bodypart/chest/blood_form biological_state = (BIO_INORGANIC) @@ -127,7 +131,6 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = TRUE - species_color = "#e70000" /obj/item/bodypart/chest/blood_form/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME) @@ -138,7 +141,6 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE - species_color = "#e70000" /obj/item/bodypart/arm/right/blood_form biological_state = (BIO_INORGANIC) @@ -146,7 +148,6 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE - species_color = "#e70000" /obj/item/bodypart/leg/left/blood_form biological_state = (BIO_INORGANIC) @@ -154,7 +155,6 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE - species_color = "#e70000" /obj/item/bodypart/leg/right/blood_form biological_state = (BIO_INORGANIC) @@ -162,6 +162,5 @@ dmg_overlay_type = null butcher_replacement = null is_dimorphic = FALSE - species_color = "#e70000" #undef SPECIES_BLOODFORM diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index f5644ea760e8..d131a468658b 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -62,7 +62,7 @@ anchored = TRUE density = TRUE max_integrity = 100 - custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 20) + custom_materials = list(/datum/material/vicissitude_flesh = SHEET_MATERIAL_AMOUNT * 30) /obj/item/ground_heir name = "bag of ground" From 5b04137b2e7cf1b9daaa5cba1a685d44572db2f9 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:17:02 +0200 Subject: [PATCH 100/104] Update discipline_actions.dm --- modular_darkpack/modules/powers/code/discipline_actions.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline_actions.dm b/modular_darkpack/modules/powers/code/discipline_actions.dm index 6ff8a6d4ba94..66b81d982491 100644 --- a/modular_darkpack/modules/powers/code/discipline_actions.dm +++ b/modular_darkpack/modules/powers/code/discipline_actions.dm @@ -134,11 +134,9 @@ owner.update_mouse_pointer() owner.click_intercept = null -/datum/action/discipline/proc/handle_click(mob/user, params, atom/target) +/datum/action/discipline/proc/handle_click(mob/user, atom/target, list/modifiers) SIGNAL_HANDLER - var/list/modifiers = params2list(params) - //ensure we actually need a target, or cancel on right click if(!targeting || modifiers[RIGHT_CLICK]) SEND_SOUND(owner, sound('modular_darkpack/modules/deprecated/sounds/highlight.ogg', volume = 50)) From a93e7e074787cec1cd739e55215a7838934f9bb6 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:18:20 +0200 Subject: [PATCH 101/104] Update blood_form.dm --- .../modules/powers/code/discipline/vicissitude/blood_form.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index 29502a0dbd4a..9cd778fc9f3e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -22,7 +22,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/blood_form, BODY_ZONE_CHEST = /obj/item/bodypart/chest/blood_form, ) - fixed_mut_color = "#e6000099" + fixed_mut_color = "#e60000d3" hair_color_mode = USE_FIXED_MUTANT_COLOR hair_alpha = 150 facial_hair_alpha = 150 From 24382de00a165a1b6c7991075a8369d0846606dd Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:21:42 +0200 Subject: [PATCH 102/104] TODO: Brute immunity, Limb Regeneration --- .../modules/powers/code/discipline/vicissitude/blood_form.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index 9cd778fc9f3e..43e04db57911 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -130,7 +130,7 @@ limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null butcher_replacement = null - is_dimorphic = TRUE + is_dimorphic = FALSE /obj/item/bodypart/chest/blood_form/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME) From 543d2c2c2cfcd279fc78cb6bdd868eeee406c965 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:22:43 +0200 Subject: [PATCH 103/104] Update surgery_tools.dm --- .../powers/code/discipline/vicissitude/objects/surgery_tools.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm index aeb4cdfa7ab2..779654f68f62 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm @@ -2,6 +2,7 @@ icon_state = "toolkit_implant_vic" icon = 'modular_darkpack/modules/powers/icons/fleshcrafting_surgery_tools.dmi' organ_flags = ORGAN_ORGANIC + aug_overlay = "" items_to_create = list( /obj/item/retractor/augment/vicissitude, /obj/item/hemostat/augment/vicissitude, From bda82b329f9b340bd70cc928ca9d62ad7b91b427 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Fri, 27 Feb 2026 18:35:20 +0200 Subject: [PATCH 104/104] Update blood_form.dm --- .../modules/powers/code/discipline/vicissitude/blood_form.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm index 43e04db57911..9cd778fc9f3e 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/blood_form.dm @@ -130,7 +130,7 @@ limb_id = SPECIES_SLIMEPERSON dmg_overlay_type = null butcher_replacement = null - is_dimorphic = FALSE + is_dimorphic = TRUE /obj/item/bodypart/chest/blood_form/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME)

5L!+5k#spW(;>{GRwUSU|Q0|f|NQ7~<6 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