Sanity Rebalancing (#44800)

cl Floyd / Qustinnus
tweak: The Nanotrasen Physological department has realized that working at a metal deathbox is more stressful than it currently is. Mood has been slightly rebalanced
/cl

This PR is mostly a rebalance of various variables that exist withing the system. The system is now more likely to skew one of two ways instead of always hanging at neutral unless you're hungry, I plan to make it more likely to skew to one side from other things as well, and nerfed various low effort and non interesting interactions such as reading books while buffing the ones that have gameplay like drinking good bartender drinks or winning arcade games.

I also plan to add a moodlet for being in the bar; this will reinforce players to visit these areas if things get bad, or if they just want to refuel for a bit.
This commit is contained in:
Qustinnus
2019-07-03 19:32:09 +12:00
committed by oranges
parent 64460ae3ca
commit d9b316b7ab
8 changed files with 80 additions and 62 deletions
+3 -3
View File
@@ -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
+21 -12
View File
@@ -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
+8 -8
View File
@@ -4,23 +4,23 @@
/datum/mood_event/quality_nice
description = "<span class='nicegreen'>That drink wasn't bad at all.</span>\n"
mood_change = 1
timeout = 2 MINUTES
mood_change = 2
timeout = 7 MINUTES
/datum/mood_event/quality_good
description = "<span class='nicegreen'>That drink was pretty good.</span>\n"
mood_change = 2
timeout = 2 MINUTES
mood_change = 4
timeout = 7 MINUTES
/datum/mood_event/quality_verygood
description = "<span class='nicegreen'>That drink was great!</span>\n"
mood_change = 3
timeout = 2 MINUTES
mood_change = 6
timeout = 7 MINUTES
/datum/mood_event/quality_fantastic
description = "<span class='nicegreen'>That drink was amazing!</span>\n"
mood_change = 4
timeout = 2 MINUTES
mood_change = 8
timeout = 7 MINUTES
/datum/mood_event/amazingtaste
description = "<span class='nicegreen'>Amazing taste!</span>\n"
@@ -8,11 +8,11 @@
/datum/mood_event/on_fire
description = "<span class='boldwarning'>I'M ON FIRE!!!</span>\n"
mood_change = -8
mood_change = -12
/datum/mood_event/suffocation
description = "<span class='boldwarning'>CAN'T... BREATHE...</span>\n"
mood_change = -6
mood_change = -12
/datum/mood_event/burnt_thumb
description = "<span class='warning'>I shouldn't play with lighters...</span>\n"
@@ -21,11 +21,11 @@
/datum/mood_event/cold
description = "<span class='warning'>It's way too cold in here.</span>\n"
mood_change = -2
mood_change = -5
/datum/mood_event/hot
description = "<span class='warning'>It's getting hot in here.</span>\n"
mood_change = -2
mood_change = -5
/datum/mood_event/creampie
description = "<span class='warning'>I've been creamed. Tastes like pie flavor.</span>\n"
@@ -49,18 +49,18 @@
/datum/mood_event/depression
description = "<span class='warning'>I feel sad for no particular reason.</span>\n"
mood_change = -9
mood_change = -12
timeout = 2 MINUTES
/datum/mood_event/shameful_suicide //suicide_acts that return SHAME, like sord
description = "<span class='boldwarning'>I can't even end it all!</span>\n"
mood_change = -10
mood_change = -15
timeout = 60 SECONDS
/datum/mood_event/dismembered
description = "<span class='boldwarning'>AHH! I WAS USING THAT LIMB!</span>\n"
mood_change = -8
timeout = 4 MINUTES
mood_change = -10
timeout = 8 MINUTES
/datum/mood_event/tased
description = "<span class='warning'>There's no \"z\" in \"taser\". It's in the zap.</span>\n"
@@ -6,7 +6,7 @@
/datum/mood_event/betterhug
description = "<span class='nicegreen'>Someone was very nice to me.</span>\n"
mood_change = 3
timeout = 5 MINUTES
timeout = 4 MINUTES
/datum/mood_event/betterhug/add_effects(mob/friend)
description = "<span class='nicegreen'>[friend.name] was very nice to me.</span>\n"
@@ -14,7 +14,7 @@
/datum/mood_event/besthug
description = "<span class='nicegreen'>Someone is great to be around, they make me feel so happy!</span>\n"
mood_change = 5
timeout = 5 MINUTES
timeout = 4 MINUTES
/datum/mood_event/besthug/add_effects(mob/friend)
description = "<span class='nicegreen'>[friend.name] is great to be around, [friend.p_they()] makes me feel so happy!</span>\n"
@@ -22,26 +22,26 @@
/datum/mood_event/arcade
description = "<span class='nicegreen'>I beat the arcade game!</span>\n"
mood_change = 3
timeout = 5 MINUTES
timeout = 8 MINUTES
/datum/mood_event/blessing
description = "<span class='nicegreen'>I've been blessed.</span>\n"
mood_change = 3
timeout = 5 MINUTES
timeout = 8 MINUTES
/datum/mood_event/book_nerd
description = "<span class='nicegreen'>I have recently read a book.</span>\n"
mood_change = 3
mood_change = 1
timeout = 5 MINUTES
/datum/mood_event/exercise
description = "<span class='nicegreen'>Working out releases those endorphins!</span>\n"
mood_change = 3
mood_change = 2
timeout = 5 MINUTES
/datum/mood_event/pet_animal
description = "<span class='nicegreen'>Animals are adorable! I can't stop petting them!</span>\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 = "<span class='nicegreen'>It feels good to save a life.</span>\n"
mood_change = 6
timeout = 5 MINUTES
timeout = 8 MINUTES
/datum/mood_event/oblivious
description = "<span class='nicegreen'>What a lovely day.</span>\n"
@@ -68,12 +68,12 @@
/datum/mood_event/focused
description = "<span class='nicegreen'>I have a goal, and I will reach it, whatever it takes!</span>\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 = "<span class='nicegreen'>I have seen the truth, praise the almighty one!</span>\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 = "<span class='nicegreen'>It's nice to see people are making art around here.</span>\n"
mood_change = 2
timeout = 2 MINUTES
timeout = 5 MINUTES
/datum/mood_event/artgood
description = "<span class='nicegreen'>What a thought-provoking piece of art. I'll remember that for a while.</span>\n"
mood_change = 3
timeout = 3 MINUTES
mood_change = 4
timeout = 5 MINUTES
/datum/mood_event/artgreat
description = "<span class='nicegreen'>That work of art was so great it made me believe in the goodness of humanity. Says a lot in a place like this.</span>\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
+15 -15
View File
@@ -1,23 +1,23 @@
//nutrition
/datum/mood_event/fat
description = "<span class='warning'><B>I'm so fat...</B></span>\n" //muh fatshaming
mood_change = -4
mood_change = -6
/datum/mood_event/wellfed
description = "<span class='nicegreen'>I'm stuffed!</span>\n"
mood_change = 6
mood_change = 8
/datum/mood_event/fed
description = "<span class='nicegreen'>I have recently had some food.</span>\n"
mood_change = 3
mood_change = 5
/datum/mood_event/hungry
description = "<span class='warning'>I'm getting a bit hungry.</span>\n"
mood_change = -8
mood_change = -10
/datum/mood_event/starving
description = "<span class='boldwarning'>I'm starving!</span>\n"
mood_change = -15
mood_change = -16
//charge
/datum/mood_event/charged
@@ -26,20 +26,20 @@
/datum/mood_event/lowpower
description = "<span class='warning'>My power is running low, I should go charge up somewhere.</span>\n"
mood_change = -7
mood_change = -10
/datum/mood_event/decharged
description = "<span class='boldwarning'>I'm in desperate need of some electricity!</span>\n"
mood_change = -12
mood_change = -15
//Disgust
/datum/mood_event/gross
description = "<span class='warning'>I saw something gross.</span>\n"
mood_change = -2
mood_change = -4
/datum/mood_event/verygross
description = "<span class='warning'>I think I'm going to puke...</span>\n"
mood_change = -5
mood_change = -6
/datum/mood_event/disgusted
description = "<span class='boldwarning'>Oh god that's disgusting...</span>\n"
@@ -47,11 +47,11 @@
/datum/mood_event/disgust/bad_smell
description = "<span class='warning'>You smell something horribly decayed inside this room.</span>\n"
mood_change = -3
mood_change = -6
/datum/mood_event/disgust/nauseating_stench
description = "<span class='warning'>The stench of rotting carcasses is unbearable!</span>\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 = "<span class='nicegreen'>I really enjoyed eating that.</span>\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 = "<span class='warning'>That food was disgusting!</span>\n"
mood_change = -4
mood_change = -6
timeout = 4 MINUTES
/datum/mood_event/nice_shower
description = "<span class='nicegreen'>I have recently had a nice shower.</span>\n"
mood_change = 2
timeout = 3 MINUTES
mood_change = 4
timeout = 5 MINUTES
/datum/mood_event/fresh_laundry
description = "<span class='nicegreen'>There's nothing like the feeling of a freshly laundered jumpsuit.</span>\n"
+2
View File
@@ -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 = "<span class='nicegreen'>I love being in the bar!\n</span>"
/area/crew_quarters/bar/atrium
name = "Atrium"
+3
View File
@@ -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