diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 0162879efc3..696d2c079e4 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -194,6 +194,15 @@
setSanity(sanity+0.6*delta_time, SANITY_NEUTRAL, SANITY_MAXIMUM)
HandleNutrition()
+ // 0.416% is 15 successes / 3600 seconds. Calculated with 2 minute
+ // mood runtime, so 50% average uptime across the hour.
+ if(HAS_TRAIT(parent, TRAIT_DEPRESSION) && DT_PROB(0.416, delta_time))
+ add_event(null, "depression_mild", /datum/mood_event/depression_mild)
+
+ if(HAS_TRAIT(parent, TRAIT_JOLLY) && DT_PROB(0.416, delta_time))
+ add_event(null, "jolly", /datum/mood_event/jolly)
+
+
///Sets sanity to the specified amount and applies effects.
/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_GREAT, override = FALSE)
// If we're out of the acceptable minimum-maximum range move back towards it in steps of 0.7
diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm
index 93bd0473d77..9ee7ffedc36 100644
--- a/code/datums/mood_events/generic_positive_events.dm
+++ b/code/datums/mood_events/generic_positive_events.dm
@@ -224,6 +224,10 @@
mood_change = 3
timeout = 90 SECONDS
+/datum/mood_event/gondola
+ description = "I feel at peace and feel no need to make any sudden or rash actions.\n"
+ mood_change = 6
+
/datum/mood_event/kiss
description = "Someone blew a kiss at me, I must be a real catch!\n"
mood_change = 1.5
diff --git a/code/datums/quirks/good.dm b/code/datums/quirks/good.dm
index 0f4e14ce76b..52374440f84 100644
--- a/code/datums/quirks/good.dm
+++ b/code/datums/quirks/good.dm
@@ -126,10 +126,6 @@
mood_quirk = TRUE
medical_record_text = "Patient demonstrates constant euthymia irregular for environment. It's a bit much, to be honest."
-/datum/quirk/jolly/on_process(delta_time)
- if(DT_PROB(0.05, delta_time))
- SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "jolly", /datum/mood_event/jolly)
-
/datum/quirk/light_step
name = "Light Step"
desc = "You walk with a gentle step; footsteps and stepping on sharp objects is quieter and less painful."
diff --git a/code/datums/quirks/negative.dm b/code/datums/quirks/negative.dm
index 0f9b145daae..3421b5f550c 100644
--- a/code/datums/quirks/negative.dm
+++ b/code/datums/quirks/negative.dm
@@ -116,11 +116,7 @@
lose_text = "You no longer feel depressed." //if only it were that easy!
medical_record_text = "Patient has a mild mood disorder causing them to experience acute episodes of depression."
mood_quirk = TRUE
- hardcore_value = 1
-
-/datum/quirk/depression/on_process(delta_time)
- if(DT_PROB(0.05, delta_time))
- SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "depression_mild", /datum/mood_event/depression_mild)
+ hardcore_value = 2
/datum/quirk/family_heirloom
name = "Family Heirloom"
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 2bf28f8e1c6..2037462bfef 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -634,16 +634,17 @@
alert_type = null
/datum/status_effect/gonbola_pacify/on_apply()
- ADD_TRAIT(owner, TRAIT_PACIFISM, "gonbolaPacify")
- ADD_TRAIT(owner, TRAIT_MUTE, "gonbolaMute")
- ADD_TRAIT(owner, TRAIT_JOLLY, "gonbolaJolly")
+ . = ..()
+ ADD_TRAIT(owner, TRAIT_PACIFISM, type)
+ ADD_TRAIT(owner, TRAIT_MUTE, type)
+ SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, type, /datum/mood_event/gondola)
to_chat(owner, "You suddenly feel at peace and feel no need to make any sudden or rash actions...")
- return ..()
/datum/status_effect/gonbola_pacify/on_remove()
- REMOVE_TRAIT(owner, TRAIT_PACIFISM, "gonbolaPacify")
- REMOVE_TRAIT(owner, TRAIT_MUTE, "gonbolaMute")
- REMOVE_TRAIT(owner, TRAIT_JOLLY, "gonbolaJolly")
+ REMOVE_TRAIT(owner, TRAIT_PACIFISM, type)
+ REMOVE_TRAIT(owner, TRAIT_MUTE, type)
+ SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, type)
+ return ..()
/datum/status_effect/trance
id = "trance"
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 4c6a6db3f87..2f49cabc025 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -77,6 +77,15 @@
soft_type = "grey"
dog_fashion = null
+/* A grey baseball cap that grants TRAIT_JOLLY when it's on your head.
+ * Used for testing that gaining and losing the JOLLY trait behaves properly.
+ * Also a perfectly valid weird admin reward.
+ */
+/obj/item/clothing/head/soft/grey/jolly
+ name = "jolly grey cap"
+ desc = "It's a baseball hat in a sublime grey colour. Why, wearing this alone would boost a person's spirits!"
+ clothing_traits = list(TRAIT_JOLLY)
+
/obj/item/clothing/head/soft/orange
name = "orange cap"
desc = "It's a baseball hat in a tasteless orange colour."