diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 03407a254d2..376bfed9e4b 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -134,9 +134,9 @@
#define MOOD_LEVEL_HAPPY1 2
#define MOOD_LEVEL_NEUTRAL 0
#define MOOD_LEVEL_SAD1 -3
-#define MOOD_LEVEL_SAD2 -12
-#define MOOD_LEVEL_SAD3 -18
-#define MOOD_LEVEL_SAD4 -25
+#define MOOD_LEVEL_SAD2 -7
+#define MOOD_LEVEL_SAD3 -15
+#define MOOD_LEVEL_SAD4 -20
//Sanity levels for humans
#define SANITY_GREAT 125
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 4cc5d8403e3..708c200533f 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -21,6 +21,7 @@
RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event)
RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event)
+ RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/check_area_mood)
RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud)
var/mob/living/owner = parent
@@ -173,28 +174,28 @@
switch(mood_level)
if(1)
- setSanity(sanity-0.2)
+ setSanity(sanity-0.3)
if(2)
- setSanity(sanity-0.125, minimum=SANITY_CRAZY)
+ setSanity(sanity-0.15)
if(3)
- setSanity(sanity-0.075, minimum=SANITY_UNSTABLE)
+ setSanity(sanity-0.1)
if(4)
- setSanity(sanity-0.025, minimum=SANITY_DISTURBED)
+ setSanity(sanity-0.05, minimum=SANITY_UNSTABLE)
if(5)
setSanity(sanity+0.1)
if(6)
- setSanity(sanity+0.15)
- if(7)
setSanity(sanity+0.2)
+ if(7)
+ setSanity(sanity+0.3)
if(8)
- setSanity(sanity+0.25, maximum=SANITY_GREAT)
- if(9)
setSanity(sanity+0.4, maximum=INFINITY)
+ if(9)
+ setSanity(sanity+0.6, maximum=INFINITY)
HandleNutrition(owner)
HandleHygiene(owner)
-/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)
+/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_GREAT)
var/mob/living/owner = parent
amount = CLAMP(amount, minimum, maximum)
@@ -217,15 +218,15 @@
switch(sanity)
if(SANITY_INSANE to SANITY_CRAZY)
setInsanityEffect(MAJOR_INSANITY_PEN)
- master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1.5, movetypes=(~FLYING))
+ master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1, movetypes=(~FLYING))
sanity_level = 6
if(SANITY_CRAZY to SANITY_UNSTABLE)
setInsanityEffect(MINOR_INSANITY_PEN)
- master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1, movetypes=(~FLYING))
+ master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=0.5, movetypes=(~FLYING))
sanity_level = 5
if(SANITY_UNSTABLE to SANITY_DISTURBED)
setInsanityEffect(0)
- master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=0.5, movetypes=(~FLYING))
+ master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=0.25, movetypes=(~FLYING))
sanity_level = 4
if(SANITY_DISTURBED to SANITY_NEUTRAL)
setInsanityEffect(0)
@@ -371,5 +372,13 @@
T.assume_air(stank)
T.air_update_turf()
+/datum/component/mood/proc/check_area_mood(datum/source, var/area/A)
+ if(A.mood_bonus)
+ var/datum/mood_event/M = add_event(null, "area", /datum/mood_event/area)
+ M.mood_change = A.mood_bonus
+ M.description = A.mood_message
+ else
+ clear_event(null, "area")
+
#undef MINOR_INSANITY_PEN
#undef MAJOR_INSANITY_PEN
diff --git a/code/datums/mood_events/drink_events.dm b/code/datums/mood_events/drink_events.dm
index 4e20b2f5b06..4cc73e97953 100644
--- a/code/datums/mood_events/drink_events.dm
+++ b/code/datums/mood_events/drink_events.dm
@@ -4,23 +4,23 @@
/datum/mood_event/quality_nice
description = "That drink wasn't bad at all.\n"
- mood_change = 1
- timeout = 2 MINUTES
+ mood_change = 2
+ timeout = 7 MINUTES
/datum/mood_event/quality_good
description = "That drink was pretty good.\n"
- mood_change = 2
- timeout = 2 MINUTES
+ mood_change = 4
+ timeout = 7 MINUTES
/datum/mood_event/quality_verygood
description = "That drink was great!\n"
- mood_change = 3
- timeout = 2 MINUTES
+ mood_change = 6
+ timeout = 7 MINUTES
/datum/mood_event/quality_fantastic
description = "That drink was amazing!\n"
- mood_change = 4
- timeout = 2 MINUTES
+ mood_change = 8
+ timeout = 7 MINUTES
/datum/mood_event/amazingtaste
description = "Amazing taste!\n"
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index fddd5627eb7..4302d96cf87 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -8,11 +8,11 @@
/datum/mood_event/on_fire
description = "I'M ON FIRE!!!\n"
- mood_change = -8
+ mood_change = -12
/datum/mood_event/suffocation
description = "CAN'T... BREATHE...\n"
- mood_change = -6
+ mood_change = -12
/datum/mood_event/burnt_thumb
description = "I shouldn't play with lighters...\n"
@@ -21,11 +21,11 @@
/datum/mood_event/cold
description = "It's way too cold in here.\n"
- mood_change = -2
+ mood_change = -5
/datum/mood_event/hot
description = "It's getting hot in here.\n"
- mood_change = -2
+ mood_change = -5
/datum/mood_event/creampie
description = "I've been creamed. Tastes like pie flavor.\n"
@@ -49,18 +49,18 @@
/datum/mood_event/depression
description = "I feel sad for no particular reason.\n"
- mood_change = -9
+ mood_change = -12
timeout = 2 MINUTES
/datum/mood_event/shameful_suicide //suicide_acts that return SHAME, like sord
description = "I can't even end it all!\n"
- mood_change = -10
+ mood_change = -15
timeout = 60 SECONDS
/datum/mood_event/dismembered
description = "AHH! I WAS USING THAT LIMB!\n"
- mood_change = -8
- timeout = 4 MINUTES
+ mood_change = -10
+ timeout = 8 MINUTES
/datum/mood_event/tased
description = "There's no \"z\" in \"taser\". It's in the zap.\n"
diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm
index b4c5e131216..f3479981503 100644
--- a/code/datums/mood_events/generic_positive_events.dm
+++ b/code/datums/mood_events/generic_positive_events.dm
@@ -6,7 +6,7 @@
/datum/mood_event/betterhug
description = "Someone was very nice to me.\n"
mood_change = 3
- timeout = 5 MINUTES
+ timeout = 4 MINUTES
/datum/mood_event/betterhug/add_effects(mob/friend)
description = "[friend.name] was very nice to me.\n"
@@ -14,7 +14,7 @@
/datum/mood_event/besthug
description = "Someone is great to be around, they make me feel so happy!\n"
mood_change = 5
- timeout = 5 MINUTES
+ timeout = 4 MINUTES
/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"
@@ -22,26 +22,26 @@
/datum/mood_event/arcade
description = "I beat the arcade game!\n"
mood_change = 3
- timeout = 5 MINUTES
+ timeout = 8 MINUTES
/datum/mood_event/blessing
description = "I've been blessed.\n"
mood_change = 3
- timeout = 5 MINUTES
+ timeout = 8 MINUTES
/datum/mood_event/book_nerd
description = "I have recently read a book.\n"
- mood_change = 3
+ mood_change = 1
timeout = 5 MINUTES
/datum/mood_event/exercise
description = "Working out releases those endorphins!\n"
- mood_change = 3
+ mood_change = 2
timeout = 5 MINUTES
/datum/mood_event/pet_animal
description = "Animals are adorable! I can't stop petting them!\n"
- mood_change = 3
+ mood_change = 2
timeout = 5 MINUTES
/datum/mood_event/pet_animal/add_effects(mob/animal)
@@ -55,7 +55,7 @@
/datum/mood_event/perform_cpr
description = "It feels good to save a life.\n"
mood_change = 6
- timeout = 5 MINUTES
+ timeout = 8 MINUTES
/datum/mood_event/oblivious
description = "What a lovely day.\n"
@@ -68,12 +68,12 @@
/datum/mood_event/focused
description = "I have a goal, and I will reach it, whatever it takes!\n" //Used for syndies, nukeops etc so they can focus on their goals
- mood_change = 12
+ mood_change = 4
hidden = TRUE
/datum/mood_event/badass_antag
description = "I'm a fucking badass and everyone around me knows it. Just look at them; they're all fucking shaking at the mere thought of me around."
- mood_change = 15
+ mood_change = 7
hidden = TRUE
special_screen_obj = "badass_sun"
special_screen_replace = FALSE
@@ -91,7 +91,7 @@
/datum/mood_event/cult
description = "I have seen the truth, praise the almighty one!\n"
- mood_change = 40 //maybe being a cultist isnt that bad after all
+ mood_change = 10 //maybe being a cultist isnt that bad after all
hidden = TRUE
/datum/mood_event/family_heirloom
@@ -134,14 +134,18 @@
/datum/mood_event/artok
description = "It's nice to see people are making art around here.\n"
mood_change = 2
- timeout = 2 MINUTES
+ timeout = 5 MINUTES
/datum/mood_event/artgood
description = "What a thought-provoking piece of art. I'll remember that for a while.\n"
- mood_change = 3
- timeout = 3 MINUTES
+ mood_change = 4
+ timeout = 5 MINUTES
/datum/mood_event/artgreat
description = "That work of art was so great it made me believe in the goodness of humanity. Says a lot in a place like this.\n"
- mood_change = 4
- timeout = 4 MINUTES
+ mood_change = 6
+ timeout = 5 MINUTES
+
+/datum/mood_event/area
+ description = "fill this in in the area"
+ mood_change = 0
\ No newline at end of file
diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm
index 2b97d3181ad..e987c7cda18 100644
--- a/code/datums/mood_events/needs_events.dm
+++ b/code/datums/mood_events/needs_events.dm
@@ -1,23 +1,23 @@
//nutrition
/datum/mood_event/fat
description = "I'm so fat...\n" //muh fatshaming
- mood_change = -4
+ mood_change = -6
/datum/mood_event/wellfed
description = "I'm stuffed!\n"
- mood_change = 6
+ mood_change = 8
/datum/mood_event/fed
description = "I have recently had some food.\n"
- mood_change = 3
+ mood_change = 5
/datum/mood_event/hungry
description = "I'm getting a bit hungry.\n"
- mood_change = -8
+ mood_change = -10
/datum/mood_event/starving
description = "I'm starving!\n"
- mood_change = -15
+ mood_change = -16
//charge
/datum/mood_event/charged
@@ -26,20 +26,20 @@
/datum/mood_event/lowpower
description = "My power is running low, I should go charge up somewhere.\n"
- mood_change = -7
+ mood_change = -10
/datum/mood_event/decharged
description = "I'm in desperate need of some electricity!\n"
- mood_change = -12
+ mood_change = -15
//Disgust
/datum/mood_event/gross
description = "I saw something gross.\n"
- mood_change = -2
+ mood_change = -4
/datum/mood_event/verygross
description = "I think I'm going to puke...\n"
- mood_change = -5
+ mood_change = -6
/datum/mood_event/disgusted
description = "Oh god that's disgusting...\n"
@@ -47,11 +47,11 @@
/datum/mood_event/disgust/bad_smell
description = "You smell something horribly decayed inside this room.\n"
- mood_change = -3
+ mood_change = -6
/datum/mood_event/disgust/nauseating_stench
description = "The stench of rotting carcasses is unbearable!\n"
- mood_change = -7
+ mood_change = -12
//Hygiene Events
/datum/mood_event/neat
@@ -69,7 +69,7 @@
//Generic needs events
/datum/mood_event/favorite_food
description = "I really enjoyed eating that.\n"
- mood_change = 3
+ mood_change = 5
timeout = 4 MINUTES
/datum/mood_event/gross_food
@@ -79,13 +79,13 @@
/datum/mood_event/disgusting_food
description = "That food was disgusting!\n"
- mood_change = -4
+ mood_change = -6
timeout = 4 MINUTES
/datum/mood_event/nice_shower
description = "I have recently had a nice shower.\n"
- mood_change = 2
- timeout = 3 MINUTES
+ mood_change = 4
+ timeout = 5 MINUTES
/datum/mood_event/fresh_laundry
description = "There's nothing like the feeling of a freshly laundered jumpsuit.\n"
diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm
index f82d0a62d61..0f34594656f 100644
--- a/code/game/area/Space_Station_13_areas.dm
+++ b/code/game/area/Space_Station_13_areas.dm
@@ -390,6 +390,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/crew_quarters/bar
name = "Bar"
icon_state = "bar"
+ mood_bonus = 5
+ mood_message = "I love being in the bar!\n"
/area/crew_quarters/bar/atrium
name = "Atrium"
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 00a72db4acf..2e8f899b6a4 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -31,6 +31,9 @@
var/areasize = 0 //Size of the area in open turfs, only calculated for indoors areas.
+ var/mood_bonus = 0 //Mood for being here
+ var/mood_message = "" //Mood message for being here, only shows up if mood_bonus != 0
+
var/power_equip = TRUE
var/power_light = TRUE
var/power_environ = TRUE