diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index c69349b1ea65..0961b0876e3f 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -104,6 +104,8 @@ #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" #define TRAIT_LIGHT_DRINKER "light_drinker" +#define TRAIT_EMPATH "empath" +#define TRAIT_FRIENDLY "friendly" // common trait sources #define TRAIT_GENERIC "generic" diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 35dfaa4e3db2..f28b953901f2 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -149,7 +149,6 @@ timeout = 30 hidden = TRUE - /datum/mood_event/notcreepingsevere//not hidden since it's so severe description = "THEY NEEEEEEED OBSESSIONNNN!!\n" mood_change = -30 @@ -176,6 +175,14 @@ description = "Bags never sit right on my back, this hurts like hell!\n" mood_change = -15 +/datum/mood_event/sad_empath + description = "Someone seems upset...\n" + mood_change = -2 + timeout = 600 + +/datum/mood_event/sad_empath/add_effects(mob/sadtarget) + description = "[sadtarget.name] seems upset...\n" + //These are unused so far but I want to remember them to use them later /datum/mood_event/cloned_corpse description = "I recently saw my own corpse...\n" diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index ba1478e55695..7d7adc3d7d37 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -3,6 +3,22 @@ mood_change = 1 timeout = 1200 +/datum/mood_event/betterhug + description = "Someone was very nice to me.\n" + mood_change = 3 + timeout = 3000 + +/datum/mood_event/betterhug/add_effects(mob/friend) + description = "[friend.name] was very nice to me.\n" + +/datum/mood_event/besthug + description = "Someone is great to be around, they make me feel so happy!\n" + mood_change = 5 + timeout = 3000 + +/datum/mood_event/besthug/add_effects(mob/friend) + description = "[friend.name] is great to be around, [friend.p_they()] makes me feel so happy!\n" + /datum/mood_event/arcade description = "I beat the arcade game!\n" mood_change = 3 diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index 88e6668dde42..74a840709bc8 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -35,6 +35,14 @@ lose_text = "You no longer feel like drinking would ease your pain." medical_record_text = "Patient has unusually efficient liver metabolism and can slowly regenerate wounds by drinking alcoholic beverages." +/datum/quirk/empath + name = "Empath" + desc = "Whether it's a sixth sense or careful study of body language, it only takes you a quick glance at someone to understand how they feel." + value = 2 + mob_trait = TRAIT_EMPATH + gain_text = "You feel in tune with those around you." + lose_text = "You feel isolated from others." + /datum/quirk/freerunning name = "Freerunning" desc = "You're great at quick moves! You can climb tables more quickly." @@ -43,6 +51,15 @@ gain_text = "You feel lithe on your feet!" lose_text = "You feel clumsy again." +/datum/quirk/friendly + name = "Friendly" + desc = "You give the best hugs, especially when you're in the right mood." + value = 1 + mob_trait = TRAIT_FRIENDLY + gain_text = "You want to hug someone." + lose_text = "You no longer feel compelled to hug others." + mood_quirk = TRUE + /datum/quirk/jolly name = "Jolly" desc = "You sometimes just feel happy, for no reason at all." diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index c23d9688d12a..12f6f43c85c4 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -273,6 +273,12 @@ M.visible_message("[M] hugs [src] to make [p_them()] feel better!", \ "You hug [src] to make [p_them()] feel better!") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug) + if(M.has_trait(TRAIT_FRIENDLY)) + GET_COMPONENT_FROM(mood, /datum/component/mood, M) + if (mood.sanity >= SANITY_GREAT) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M) + else if (mood.sanity >= SANITY_DISTURBED) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M) for(var/datum/brain_trauma/trauma in M.get_traumas()) trauma.on_hug(M, src) AdjustStun(-60) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 255bceefdb9b..b25e94e9b815 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/human/examine(mob/user) //User is the person being examined +/mob/living/carbon/human/examine(mob/user) //this is very slightly better than it was because you can use it more places. still can't do \his[src] though. var/t_He = p_they(TRUE) var/t_His = p_their(TRUE) @@ -258,6 +258,22 @@ if(91.01 to INFINITY) msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n" + if(user.has_trait(TRAIT_EMPATH) && !appears_dead && (src != user)) + if (a_intent != INTENT_HELP) + msg += "[t_He] seem[p_s()] to be on guard.\n" + if (getOxyLoss() >= 10) + msg += "[t_He] seem[p_s()] winded.\n" + if (getToxLoss() >= 10) + msg += "[t_He] seem[p_s()] sickly.\n" + GET_COMPONENT_FROM(mood, /datum/component/mood, src) + if(mood.sanity <= SANITY_DISTURBED) + msg += "[t_He] seem[p_s()] distressed.\n" + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "empath", /datum/mood_event/sad_empath, src) + if (has_trait(TRAIT_BLIND)) + msg += "[t_He] appear[p_s()] to be staring off into space.\n" + if (has_trait(TRAIT_DEAF)) + msg += "[t_He] appear[p_s()] to not be responding to noises.\n" + msg += "" if(!appears_dead)