From c7f18988dbcf5c3ba71ffeb23bbdd6ad23a79935 Mon Sep 17 00:00:00 2001 From: Qustinnus Date: Sat, 27 Oct 2018 02:19:33 +0200 Subject: [PATCH] Adds icon for sanity (#41141) cl Floyd / Qustinnus (sprites by Mickyan) fix: sanity can now reach its highest level imageadd: Adds HUD icons for sanity /cl --- code/_onclick/hud/screen_objects.dm | 5 +++++ code/datums/components/mood.dm | 24 ++++++++++++++++++++++-- icons/mob/screen_gen.dmi | Bin 113633 -> 114953 bytes 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index b6fe1a65f64..d70d6b8b281 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -650,6 +650,11 @@ icon_state = "mood5" screen_loc = ui_mood +/obj/screen/sanity + name = "sanity" + icon_state = "sanity3" + screen_loc = ui_mood + /obj/screen/splash icon = 'icons/blank_title.png' icon_state = "" diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 35e2be7e543..9d1e7cf05a9 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -6,10 +6,12 @@ var/sanity = 100 //Current sanity var/shown_mood //Shown happiness, this is what others can see when they try to examine you, prevents antag checking by noticing traitors are always very happy. var/mood_level = 5 //To track what stage of moodies they're on + var/sanity_level = 5 //To track what stage of sanity they're on var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets var/datum/mood_event/list/mood_events = list() var/insanity_effect = 0 //is the owner being punished for low mood? If so, how much? var/obj/screen/mood/screen_obj + var/obj/screen/sanity/screen_obj_sanity /datum/component/mood/Initialize() if(!isliving(parent)) @@ -119,6 +121,7 @@ screen_obj.icon_state = "mood_insane" else screen_obj.icon_state = "mood[mood_level]" + screen_obj_sanity.icon_state = "sanity[sanity_level]" /datum/component/mood/process() //Called on SSmood process var/mob/living/owner = parent @@ -141,7 +144,7 @@ if(8) setSanity(sanity+0.25, maximum=SANITY_GREAT) if(9) - setSanity(sanity+0.4, maximum=SANITY_GREAT) + setSanity(sanity+0.4, maximum=INFINITY) if(owner.has_trait(TRAIT_DEPRESSION)) if(prob(0.05)) @@ -170,15 +173,28 @@ 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)) + 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)) + 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)) - else + sanity_level = 4 + if(SANITY_DISTURBED to SANITY_NEUTRAL) setInsanityEffect(0) master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) + sanity_level = 3 + if(SANITY_NEUTRAL+1 to SANITY_GREAT+1) //shitty hack but +1 to prevent it from responding to super small differences + setInsanityEffect(0) + master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) + sanity_level = 2 + if(SANITY_GREAT+1 to INFINITY) + setInsanityEffect(0) + master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) + sanity_level = 1 + update_mood_icon() /datum/component/mood/proc/setInsanityEffect(newval) if(newval == insanity_effect) @@ -229,7 +245,9 @@ var/mob/living/owner = parent var/datum/hud/hud = owner.hud_used screen_obj = new + screen_obj_sanity = new hud.infodisplay += screen_obj + hud.infodisplay += screen_obj_sanity RegisterSignal(hud, COMSIG_PARENT_QDELETED, .proc/unmodify_hud) RegisterSignal(screen_obj, COMSIG_CLICK, .proc/hud_click) @@ -240,7 +258,9 @@ var/datum/hud/hud = owner.hud_used if(hud && hud.infodisplay) hud.infodisplay -= screen_obj + hud.infodisplay -= screen_obj_sanity QDEL_NULL(screen_obj) + QDEL_NULL(screen_obj_sanity) /datum/component/mood/proc/hud_click(datum/source, location, control, params, mob/user) print_mood(user) diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 1804a28c0eee364b7d66d5b14b3695f607846115..d2161411f62bce3d1b2392f23efdc8255c3c64bf 100644 GIT binary patch delta 5384 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 Bvj6}9 delta 4054 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