diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 4d60fb72bee..7b53ed26570 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -26,7 +26,7 @@ var/global/list/frozen_mob_list = list() /mob/living/var/frozen = null //used for preventing attacks on admin-frozen mobs /mob/living/var/admin_prev_sleeping = 0 //used for keeping track of previous sleeping value with admin freeze -/mob/living/proc/admin_Freeze(var/client/admin, skip_overlays = FALSE) +/mob/living/proc/admin_Freeze(client/admin, skip_overlays = FALSE) if(istype(admin)) to_chat(src, "You have been frozen by [admin]") message_admins("[key_name_admin(admin)] froze [key_name_admin(src)]") @@ -34,24 +34,25 @@ var/global/list/frozen_mob_list = list() var/obj/effect/overlay/adminoverlay/AO = new if(skip_overlays) - src.overlays += AO + overlays += AO - anchored = 1 - frozen = AO + canmove = FALSE admin_prev_sleeping = sleeping AdjustSleeping(20000) + frozen = AO if(!(src in frozen_mob_list)) frozen_mob_list += src -/mob/living/proc/admin_unFreeze(var/client/admin, skip_overlays = FALSE) +/mob/living/proc/admin_unFreeze(client/admin, skip_overlays = FALSE) if(istype(admin)) to_chat(src, "You have been unfrozen by [admin]") message_admins("[key_name_admin(admin)] unfroze [key_name_admin(src)]") log_admin("[key_name(admin)] unfroze [key_name(src)]") - anchored = 0 if(skip_overlays) overlays -= frozen + + canmove = TRUE frozen = null SetSleeping(admin_prev_sleeping) admin_prev_sleeping = null diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 0e1a19da662..28cdc17afeb 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -344,6 +344,8 @@ return SetSleeping(max(sleeping, amount), updating, no_alert) /mob/living/SetSleeping(amount, updating = 1, no_alert = FALSE) + if(frozen) // If the mob has been admin frozen, sleeping should not be changable + return FALSE . = STATUS_UPDATE_STAT if((!!amount) == (!!sleeping)) // We're not changing from + to 0 or vice versa updating = FALSE