diff --git a/code/__DEFINES/~~bubber_defines/traits/declarations.dm b/code/__DEFINES/~~bubber_defines/traits/declarations.dm index c4761904e70..accd94cb6a7 100644 --- a/code/__DEFINES/~~bubber_defines/traits/declarations.dm +++ b/code/__DEFINES/~~bubber_defines/traits/declarations.dm @@ -65,5 +65,8 @@ /// The trait that determines if someone has the robotic limb reattachment quirk. #define TRAIT_ROBOTIC_LIMBATTACHMENT "trait_robotic_limbattachment" +/// Trait that removes mood and replaces it with hunger bar. +#define TRAIT_NOMOOD "trait_nomood" + /// Trait that gives your brain traumas more resilance #define TRAIT_RESILIENT_TRAUMAS "trait_resilient_traumas" diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 5aaaf203e45..0a4e41cc474 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -48,6 +48,11 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/equipping/entombed, /datum/quirk/badback), list(/datum/quirk/unblinking, /datum/quirk/item_quirk/fluoride_stare), list(/datum/quirk/micro, /datum/quirk/micro/smaller, /datum/quirk/micro/smallest, /datum/quirk/oversized), + list(/datum/quirk/nomood, /datum/quirk/unstable), + list(/datum/quirk/nomood, /datum/quirk/alexithymia), + list(/datum/quirk/nomood, /datum/quirk/depression), + list(/datum/quirk/nomood, /datum/quirk/erratic), + list(/datum/quirk/nomood, /datum/quirk/hypersensitive), //BUBBER EDIT ADDITION END )) diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/nomood.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/nomood.dm new file mode 100644 index 00000000000..ee79379bbe7 --- /dev/null +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/nomood.dm @@ -0,0 +1,50 @@ +/datum/quirk/nomood + name = "No Mood" + desc = "You don't receive any moodlets, your mood status will be replaced with hunger bar and you will receive slowdown based on how hungry you are." + icon = FA_ICON_POWER_OFF + value = 0 + mob_trait = TRAIT_NOMOOD + gain_text = span_danger("Your mood is way behind the fourth-wall!") + lose_text = span_notice("Your mood is back to normal...") + medical_record_text = "Patient is incapable of feeling their own emotions." + var/previous_modifier = 1 + +/datum/quirk/nomood/post_add() + . = ..() + if(!quirk_holder.mob_mood) + return + ADD_TRAIT(quirk_holder, TRAIT_APATHETIC, QUIRK_TRAIT) + previous_modifier = quirk_holder.mob_mood.mood_modifier + quirk_holder.mob_mood.mood_modifier = 0 //personalities and anything mood related will just not count + toggle_mood(hide = TRUE) + +/datum/quirk/nomood/remove() + . = ..() + if(!quirk_holder.mob_mood) + return + REMOVE_TRAIT(quirk_holder, TRAIT_APATHETIC, QUIRK_TRAIT) + quirk_holder.mob_mood.mood_modifier = previous_modifier + toggle_mood(hide = FALSE) + +/datum/quirk/nomood/proc/toggle_mood(hide) + //hide the mood + var/datum/mood/mob_mood = quirk_holder.mob_mood + var/datum/hud/human/humanhud = quirk_holder.hud_used + + if(isnull(mob_mood) || isnull(humanhud)) + return + + var/atom/movable/screen/mood/mood_icon = mob_mood.mood_screen_object + var/atom/movable/screen/hunger/hunger_icon = humanhud.hunger + + if(isnull(mood_icon) || isnull(hunger_icon)) + return + + mood_icon.screen_loc = hide ? "EAST-1:-999,CENTER:21" : ui_mood //moves it off the screen so you cant see it + hunger_icon.screen_loc = hide ? ui_mood : ui_hunger + +//slowdown handled the same way it is handled when disable_human_mood is enabled +/obj/item/organ/stomach/handle_hunger(mob/living/carbon/human/human, seconds_per_tick) + . = ..() + if(HAS_TRAIT(human, TRAIT_NOMOOD)) + handle_hunger_slowdown(human) diff --git a/tgstation.dme b/tgstation.dme index a24913191ee..0ec80532ebb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9045,6 +9045,7 @@ #include "modular_zubbers\code\datums\quirks\neutral_quirks\hypnotic.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\lungs.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\nameless.dm" +#include "modular_zubbers\code\datums\quirks\neutral_quirks\nomood.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\perch.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\pet_owner.dm" #include "modular_zubbers\code\datums\quirks\neutral_quirks\pseudo_respiration.dm"