diff --git a/modular_splurt/code/datums/traits/neutral_quirks/sanguine_metabolism.dm b/modular_splurt/code/datums/traits/neutral_quirks/sanguine_metabolism.dm new file mode 100644 index 0000000000..d7bb12c245 --- /dev/null +++ b/modular_splurt/code/datums/traits/neutral_quirks/sanguine_metabolism.dm @@ -0,0 +1,96 @@ +// 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)