From 77920896a8cd637221b7f8dc3437e5757dbb7bb4 Mon Sep 17 00:00:00 2001 From: Darius <5933805+LeDrascol@users.noreply.github.com> Date: Fri, 25 Oct 2024 02:37:34 -0400 Subject: [PATCH 1/4] Add new bloodfledge quirk Adds the Sanguine Metabolism quirk. This is a lite version of Bloodsucker Fledgling with no special powers. --- code/__SPLURTCODE/DEFINES/traits.dm | 1 + .../subsystem/processing/quirks.dm | 4 ++ modular_splurt/code/datums/traits/negative.dm | 48 +++++++++++++++++++ .../structures/crates_lockers/crates.dm | 11 +++++ 4 files changed, 64 insertions(+) diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm index 3274bba859..9ede9736c2 100644 --- a/code/__SPLURTCODE/DEFINES/traits.dm +++ b/code/__SPLURTCODE/DEFINES/traits.dm @@ -25,6 +25,7 @@ #define TRAIT_PHARMA "hepatic_pharmacokinesis" #define TRAIT_CHOKE_SLUT "choke_slut" #define TRAIT_BLOODFLEDGE "bloodfledge" +#define TRAIT_BLOODFLEDGE_LITE "bloodfledge_lite" #define TRAIT_INCUBUS "incubus" #define TRAIT_SUCCUBUS "succubus" #define TRAIT_ARACHNID "arachnid" diff --git a/modular_splurt/code/controllers/subsystem/processing/quirks.dm b/modular_splurt/code/controllers/subsystem/processing/quirks.dm index 6f25dda079..9d2480606b 100644 --- a/modular_splurt/code/controllers/subsystem/processing/quirks.dm +++ b/modular_splurt/code/controllers/subsystem/processing/quirks.dm @@ -21,4 +21,8 @@ // BLOCKED: Mechanic // Bloodsuckers have NO_THIRST trait. list("Thirsty","Bloodsucker Fledgling"), + + // BLOCKED: Duplicate, mechanic + // This is a lite version of the same quirk. + list("Sanguine Metabolism","Bloodsucker Fledgling") )) diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm index ad7d617a34..8dfec878fe 100644 --- a/modular_splurt/code/datums/traits/negative.dm +++ b/modular_splurt/code/datums/traits/negative.dm @@ -239,3 +239,51 @@ if(H) var/datum/physiology/P = H.physiology P.thirst_mod /= 2 + +// Lite version of Bloodflege +// Removes all special powers +/datum/quirk/bloodfledge_lite + name = "Sanguine Metabolism" + desc = "You are a non-magical Bloodsucker Fledgling, with no special powers. Only blood will sate your hungers, and holy energies will cause your flesh to char." + value = 0 + medical_record_text = "Patient exhibits an unusually weak sanguine curse." + mob_trait = TRAIT_BLOODFLEDGE_LITE + gain_text = span_notice("You feel a sanguine thirst.") + lose_text = span_notice("You feel the sanguine thirst fade away.") + +/datum/quirk/bloodfledge_lite/add() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Add quirk traits + ADD_TRAIT(quirk_mob,TRAIT_NO_PROCESS_FOOD,ROUNDSTART_TRAIT) + ADD_TRAIT(quirk_mob,TRAIT_NOTHIRST,ROUNDSTART_TRAIT) + + // Add full trait to preserve bite, holy weakness, and examine functionality + ADD_TRAIT(quirk_mob,TRAIT_BLOODFLEDGE,ROUNDSTART_TRAIT) + + // Lite version does not set skin tone or grant the language + // Lite version also has no examine text + +/datum/quirk/bloodfledge_lite/post_add() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Define and grant ability Bite + var/datum/action/cooldown/bloodfledge/bite/act_bite = new + act_bite.Grant(quirk_mob) + + // Lite version does not grant the revive ability + +/datum/quirk/bloodfledge_lite/remove() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Remove quirk traits + REMOVE_TRAIT(quirk_mob, TRAIT_NO_PROCESS_FOOD, ROUNDSTART_TRAIT) + REMOVE_TRAIT(quirk_mob, TRAIT_NOTHIRST, ROUNDSTART_TRAIT) + REMOVE_TRAIT(quirk_mob, TRAIT_BLOODFLEDGE, ROUNDSTART_TRAIT) + + // Remove quirk ability action datums + var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions + act_bite.Remove(quirk_mob) diff --git a/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm b/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm index bf2c2ae7c3..0512ebb32c 100644 --- a/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm +++ b/modular_splurt/code/game/objects/structures/crates_lockers/crates.dm @@ -19,6 +19,12 @@ for(var/mob/living/carbon/coffin_user in contents) // Check for bloodfledge if(isbloodfledge(coffin_user)) + // Check for lite version + if (HAS_TRAIT(coffin_user, TRAIT_BLOODFLEDGE_LITE)) + // Warn user and continue + to_chat(coffin_user, span_warning("Your body lacks a proper sanguine connection! [src] does not respond.")) + continue + // Check for synthetic if(coffin_user.mob_biotypes && (coffin_user.mob_biotypes & MOB_ROBOTIC)) // Warn user and continue @@ -50,6 +56,11 @@ for(var/mob/living/carbon/coffin_user in coffin_turf.contents) // Check for bloodfledge if(isbloodfledge(coffin_user)) + // Check for lite version + if (HAS_TRAIT(coffin_user, TRAIT_BLOODFLEDGE_LITE)) + // Do nothing + continue + // Define quirk entry var/datum/quirk/bloodfledge/quirk_target = locate() in coffin_user.roundstart_quirks From 41adebb16dd53ba9a093bba8de06911b612f27c5 Mon Sep 17 00:00:00 2001 From: Darius <5933805+LeDrascol@users.noreply.github.com> Date: Fri, 25 Oct 2024 02:58:00 -0400 Subject: [PATCH 2/4] Add missing bloodfledge lite quirk conflicts Adds matching quirk incompatibilities to Sanguine Metabolism. --- .../code/controllers/subsystem/processing/quirks.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modular_splurt/code/controllers/subsystem/processing/quirks.dm b/modular_splurt/code/controllers/subsystem/processing/quirks.dm index 9d2480606b..0dd5090c0d 100644 --- a/modular_splurt/code/controllers/subsystem/processing/quirks.dm +++ b/modular_splurt/code/controllers/subsystem/processing/quirks.dm @@ -24,5 +24,13 @@ // BLOCKED: Duplicate, mechanic // This is a lite version of the same quirk. - list("Sanguine Metabolism","Bloodsucker Fledgling") + list("Sanguine Metabolism","Bloodsucker Fledgling"), + + // BLOCKED: Mechanic + // Bloodsuckers have NO_THIRST trait. + list("Sanguine Metabolism","Thirsty"), + + // BLOCKED: Thematic, mechanic, game lore. + // Bloodsuckers cannot interact with Hallowed users. + list("Sanguine Metabolism","Hallowed") )) From 8c7816b36bd6694e59deb09c5cf607d7188b33bf Mon Sep 17 00:00:00 2001 From: Darius <5933805+LeDrascol@users.noreply.github.com> Date: Fri, 25 Oct 2024 04:00:49 -0400 Subject: [PATCH 3/4] Add examine text to Sanguine Metabolism Restores the examine text present in the source quirk. Text can only be seen by other bloodsucker quirk holders. --- modular_splurt/code/datums/traits/negative.dm | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm index 8dfec878fe..f0d2bd1ebd 100644 --- a/modular_splurt/code/datums/traits/negative.dm +++ b/modular_splurt/code/datums/traits/negative.dm @@ -263,7 +263,9 @@ ADD_TRAIT(quirk_mob,TRAIT_BLOODFLEDGE,ROUNDSTART_TRAIT) // Lite version does not set skin tone or grant the language - // Lite version also has no examine text + + // Register examine text + RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(quirk_examine_bloodfledge_lite)) /datum/quirk/bloodfledge_lite/post_add() // Define quirk mob @@ -287,3 +289,50 @@ // Remove quirk ability action datums var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions act_bite.Remove(quirk_mob) + + // Unregister examine text + UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE) + +/datum/quirk/bloodfledge_lite/proc/quirk_examine_bloodfledge_lite(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list) + SIGNAL_HANDLER + + // Check if human examiner exists + if(!istype(examiner)) + return + + // Check if examiner is a non-Fledgling + if(!isbloodfledge(examiner)) + // Return with no effects + return + + // Check if examiner is dumb + if(HAS_TRAIT(examiner, TRAIT_DUMB)) + // Return with no effects + return + + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Define hunger texts + var/examine_hunger + + // Check hunger levels + switch(quirk_mob.nutrition) + // Hungry + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] blood starved!" + + // Starving + if(0 to NUTRITION_LEVEL_STARVING) + examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] in dire need of blood!" + + // Invalid hunger + else + // Return with no message + return + + // Add detection text + examine_list += span_info("[quirk_holder.p_their(TRUE)] hunger allows you to identify [quirk_holder.p_them()] as a lesser Bloodsucker Fledgling!") + + // Add hunger text + examine_list += span_warning(examine_hunger) From aa5160f627cec7f768cc2617b6178c12758e5064 Mon Sep 17 00:00:00 2001 From: Darius <5933805+LeDrascol@users.noreply.github.com> Date: Fri, 25 Oct 2024 04:06:15 -0400 Subject: [PATCH 4/4] Move Sanguine Metabolism to neutral Moves the Sanguine Metabolism from negative to neutral. --- modular_splurt/code/datums/traits/negative.dm | 96 ------------------ modular_splurt/code/datums/traits/neutral.dm | 97 +++++++++++++++++++ 2 files changed, 97 insertions(+), 96 deletions(-) diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm index f0d2bd1ebd..889f9c7015 100644 --- a/modular_splurt/code/datums/traits/negative.dm +++ b/modular_splurt/code/datums/traits/negative.dm @@ -240,99 +240,3 @@ var/datum/physiology/P = H.physiology P.thirst_mod /= 2 -// Lite version of Bloodflege -// Removes all special powers -/datum/quirk/bloodfledge_lite - name = "Sanguine Metabolism" - desc = "You are a non-magical Bloodsucker Fledgling, with no special powers. Only blood will sate your hungers, and holy energies will cause your flesh to char." - value = 0 - medical_record_text = "Patient exhibits an unusually weak sanguine curse." - mob_trait = TRAIT_BLOODFLEDGE_LITE - gain_text = span_notice("You feel a sanguine thirst.") - lose_text = span_notice("You feel the sanguine thirst fade away.") - -/datum/quirk/bloodfledge_lite/add() - // Define quirk mob - var/mob/living/carbon/human/quirk_mob = quirk_holder - - // Add quirk traits - ADD_TRAIT(quirk_mob,TRAIT_NO_PROCESS_FOOD,ROUNDSTART_TRAIT) - ADD_TRAIT(quirk_mob,TRAIT_NOTHIRST,ROUNDSTART_TRAIT) - - // Add full trait to preserve bite, holy weakness, and examine functionality - ADD_TRAIT(quirk_mob,TRAIT_BLOODFLEDGE,ROUNDSTART_TRAIT) - - // Lite version does not set skin tone or grant the language - - // Register examine text - RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(quirk_examine_bloodfledge_lite)) - -/datum/quirk/bloodfledge_lite/post_add() - // Define quirk mob - var/mob/living/carbon/human/quirk_mob = quirk_holder - - // Define and grant ability Bite - var/datum/action/cooldown/bloodfledge/bite/act_bite = new - act_bite.Grant(quirk_mob) - - // Lite version does not grant the revive ability - -/datum/quirk/bloodfledge_lite/remove() - // Define quirk mob - var/mob/living/carbon/human/quirk_mob = quirk_holder - - // Remove quirk traits - REMOVE_TRAIT(quirk_mob, TRAIT_NO_PROCESS_FOOD, ROUNDSTART_TRAIT) - REMOVE_TRAIT(quirk_mob, TRAIT_NOTHIRST, ROUNDSTART_TRAIT) - REMOVE_TRAIT(quirk_mob, TRAIT_BLOODFLEDGE, ROUNDSTART_TRAIT) - - // Remove quirk ability action datums - var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions - act_bite.Remove(quirk_mob) - - // Unregister examine text - UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE) - -/datum/quirk/bloodfledge_lite/proc/quirk_examine_bloodfledge_lite(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list) - SIGNAL_HANDLER - - // Check if human examiner exists - if(!istype(examiner)) - return - - // Check if examiner is a non-Fledgling - if(!isbloodfledge(examiner)) - // Return with no effects - return - - // Check if examiner is dumb - if(HAS_TRAIT(examiner, TRAIT_DUMB)) - // Return with no effects - return - - // Define quirk mob - var/mob/living/carbon/human/quirk_mob = quirk_holder - - // Define hunger texts - var/examine_hunger - - // Check hunger levels - switch(quirk_mob.nutrition) - // Hungry - if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) - examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] blood starved!" - - // Starving - if(0 to NUTRITION_LEVEL_STARVING) - examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] in dire need of blood!" - - // Invalid hunger - else - // Return with no message - return - - // Add detection text - examine_list += span_info("[quirk_holder.p_their(TRUE)] hunger allows you to identify [quirk_holder.p_them()] as a lesser Bloodsucker Fledgling!") - - // Add hunger text - examine_list += span_warning(examine_hunger) diff --git a/modular_splurt/code/datums/traits/neutral.dm b/modular_splurt/code/datums/traits/neutral.dm index fdef54a3be..8f19814284 100644 --- a/modular_splurt/code/datums/traits/neutral.dm +++ b/modular_splurt/code/datums/traits/neutral.dm @@ -731,3 +731,100 @@ gain_text = span_lewd("You feel like kissing someone...") lose_text = span_notice("You don't feel like kissing someone anymore...") medical_record_text = "Patient seems to demonstrate an extraordinary liking in kissing." + +// Lite version of Bloodflege +// Removes all special powers +/datum/quirk/bloodfledge_lite + name = "Sanguine Metabolism" + desc = "You are a non-magical Bloodsucker Fledgling, with no special powers. Only blood will sate your hungers, and holy energies will cause your flesh to char." + value = 0 + medical_record_text = "Patient exhibits an unusually weak sanguine curse." + mob_trait = TRAIT_BLOODFLEDGE_LITE + gain_text = span_notice("You feel a sanguine thirst.") + lose_text = span_notice("You feel the sanguine thirst fade away.") + +/datum/quirk/bloodfledge_lite/add() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Add quirk traits + ADD_TRAIT(quirk_mob,TRAIT_NO_PROCESS_FOOD,ROUNDSTART_TRAIT) + ADD_TRAIT(quirk_mob,TRAIT_NOTHIRST,ROUNDSTART_TRAIT) + + // Add full trait to preserve bite, holy weakness, and examine functionality + ADD_TRAIT(quirk_mob,TRAIT_BLOODFLEDGE,ROUNDSTART_TRAIT) + + // Lite version does not set skin tone or grant the language + + // Register examine text + RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, PROC_REF(quirk_examine_bloodfledge_lite)) + +/datum/quirk/bloodfledge_lite/post_add() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Define and grant ability Bite + var/datum/action/cooldown/bloodfledge/bite/act_bite = new + act_bite.Grant(quirk_mob) + + // Lite version does not grant the revive ability + +/datum/quirk/bloodfledge_lite/remove() + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Remove quirk traits + REMOVE_TRAIT(quirk_mob, TRAIT_NO_PROCESS_FOOD, ROUNDSTART_TRAIT) + REMOVE_TRAIT(quirk_mob, TRAIT_NOTHIRST, ROUNDSTART_TRAIT) + REMOVE_TRAIT(quirk_mob, TRAIT_BLOODFLEDGE, ROUNDSTART_TRAIT) + + // Remove quirk ability action datums + var/datum/action/cooldown/bloodfledge/bite/act_bite = locate() in quirk_mob.actions + act_bite.Remove(quirk_mob) + + // Unregister examine text + UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE) + +/datum/quirk/bloodfledge_lite/proc/quirk_examine_bloodfledge_lite(atom/examine_target, mob/living/carbon/human/examiner, list/examine_list) + SIGNAL_HANDLER + + // Check if human examiner exists + if(!istype(examiner)) + return + + // Check if examiner is a non-Fledgling + if(!isbloodfledge(examiner)) + // Return with no effects + return + + // Check if examiner is dumb + if(HAS_TRAIT(examiner, TRAIT_DUMB)) + // Return with no effects + return + + // Define quirk mob + var/mob/living/carbon/human/quirk_mob = quirk_holder + + // Define hunger texts + var/examine_hunger + + // Check hunger levels + switch(quirk_mob.nutrition) + // Hungry + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] blood starved!" + + // Starving + if(0 to NUTRITION_LEVEL_STARVING) + examine_hunger = "[quirk_holder.p_they(TRUE)] [quirk_holder.p_are()] in dire need of blood!" + + // Invalid hunger + else + // Return with no message + return + + // Add detection text + examine_list += span_info("[quirk_holder.p_their(TRUE)] hunger allows you to identify [quirk_holder.p_them()] as a lesser Bloodsucker Fledgling!") + + // Add hunger text + examine_list += span_warning(examine_hunger)