diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 279755cc813..86f500aa015 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -203,36 +203,40 @@
src << "You feel fatigued."
if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit))
H.play_xylophone()
- else if(lying) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15
- var/t_him = "it"
- if (src.gender == MALE)
- t_him = "him"
- else if (src.gender == FEMALE)
- t_him = "her"
- if (istype(src,/mob/living/carbon/human) && src:w_uniform)
- var/mob/living/carbon/human/H = src
- H.w_uniform.add_fingerprint(M)
- src.sleeping = max(0,src.sleeping-5)
- if(src.sleeping == 0)
- src.resting = 0
- AdjustParalysis(-3)
- AdjustStunned(-3)
- AdjustWeakened(-3)
- playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
- M.visible_message( \
- "\blue [M] shakes [src] trying to wake [t_him] up!", \
- "\blue You shake [src] trying to wake [t_him] up!", \
- )
- // BEGIN HUGCODE - N3X
else
- if (istype(src,/mob/living/carbon/human) && src:w_uniform)
- var/mob/living/carbon/human/H = src
- H.w_uniform.add_fingerprint(M)
- playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
- M.visible_message( \
- "\blue [M] gives [src] a [pick("hug","warm embrace")].", \
- "\blue You hug [src].", \
- )
+ if(player_logged)
+ M.visible_message("[M] shakes [src], but they do not respond. Probably suffering from SSD.", \
+ "You shake [src], but they are unresponsive. Probably suffering from SSD.")
+ if(lying) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15
+ var/t_him = "it"
+ if (src.gender == MALE)
+ t_him = "him"
+ else if (src.gender == FEMALE)
+ t_him = "her"
+ if (istype(src,/mob/living/carbon/human) && src:w_uniform)
+ var/mob/living/carbon/human/H = src
+ H.w_uniform.add_fingerprint(M)
+ src.sleeping = max(0,src.sleeping-5)
+ if(src.sleeping == 0)
+ src.resting = 0
+ AdjustParalysis(-3)
+ AdjustStunned(-3)
+ AdjustWeakened(-3)
+ playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ M.visible_message( \
+ "\blue [M] shakes [src] trying to wake [t_him] up!", \
+ "\blue You shake [src] trying to wake [t_him] up!", \
+ )
+ // BEGIN HUGCODE - N3X
+ else
+ if (istype(src,/mob/living/carbon/human) && src:w_uniform)
+ var/mob/living/carbon/human/H = src
+ H.w_uniform.add_fingerprint(M)
+ playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ M.visible_message( \
+ "\blue [M] gives [src] a [pick("hug","warm embrace")].", \
+ "\blue You hug [src].", \
+ )
/mob/living/carbon/proc/eyecheck()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 4c03256ecb8..6a36b6ae3d7 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1017,6 +1017,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
if(status_flags & GODMODE) return 0
+ //SSD check, if a logged player is awake put them back to sleep!
+ if(player_logged && sleeping < 2)
+ sleeping = 2
+
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
blinded = 1
silent = 0
@@ -1093,7 +1097,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
adjustStaminaLoss(-10)
adjustHalLoss(-3)
if (mind)
- if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced.
+ //Are they SSD? If so we'll keep them asleep but work off some of that sleep var in case of stoxin or similar.
+ if(player_logged)
+ sleeping = max(sleeping-1, 2)
+ else
sleeping = max(sleeping-1, 0)
blinded = 1
stat = UNCONSCIOUS
diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm
index cf2f233e7c5..b349e3b15f7 100644
--- a/code/modules/mob/living/login.dm
+++ b/code/modules/mob/living/login.dm
@@ -4,6 +4,9 @@
//Mind updates
sync_mind()
+ //If they're SSD, remove it so they can wake back up.
+ player_logged = 0
+
//Round specific stuff like hud updates
if(ticker && ticker.mode)
var/ref = "\ref[mind]"
diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm
index 8fdcdb0ec46..b79d822d80b 100644
--- a/code/modules/mob/living/logout.dm
+++ b/code/modules/mob/living/logout.dm
@@ -1,7 +1,9 @@
/mob/living/Logout()
..()
if (mind)
- if(!key) //key and mind have become seperated.
+ if(!key) //key and mind have become seperated. I believe this is for when a staff member aghosts.
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
- if(!immune_to_ssd && sleeping < 2 && mind.active)
- sleeping = 2 //This causes instant sleep, but does not prolong it. See life.dm for furthering SSD.
+ //This causes instant sleep and tags a player as SSD. See life.dm for furthering SSD.
+ if(sleeping < 2 && mind.active)
+ sleeping = 2
+ player_logged = 1
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 1c8e7b71d65..e1dfc6907bb 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -6,7 +6,6 @@
var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS
var/list/alarms_to_show = list()
var/list/alarms_to_clear = list()
- immune_to_ssd = 1
var/list/hud_list[10]
var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer
var/list/alarm_types_show = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0)
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index d508eb7fb92..e5e7f502194 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -219,7 +219,8 @@
var/has_limbs = 1 //Whether this mob have any limbs he can move with
var/can_stand = 1 //Whether this mob have ability to stand
- var/immune_to_ssd = 0
+ //SSD var, changed it up some so people can have special things happen for different mobs when SSD.
+ var/player_logged = 0
var/turf/listed_turf = null //the current turf being examined in the stat panel
var/list/shouldnt_see = list() //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes