From 8dc88cb80b5fb2be8d440fc274920da71a5b723f Mon Sep 17 00:00:00 2001 From: tigercat2000 Date: Thu, 25 Oct 2018 01:48:51 -0700 Subject: [PATCH] Closer to working 100% --- code/__DEFINES/misc.dm | 4 +++- code/modules/admin/verbs/freeze.dm | 10 ++++++---- .../mob/living/carbon/human/update_icons.dm | 19 ++++++++++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 1f0768ba9b0..3ea0507a50e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -237,7 +237,9 @@ #define R_HAND_LAYER 31 #define TARGETED_LAYER 32 //BS12: Layer for the target overlay from weapon targeting system #define FIRE_LAYER 33 //If you're on fire -#define TOTAL_LAYERS 33 +#define MISC_LAYER 34 +#define FROZEN_LAYER 35 +#define TOTAL_LAYERS 35 ///Access Region Codes/// #define REGION_ALL 0 diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 8dc852e9221..de91530eabe 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -26,14 +26,15 @@ 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) +/mob/living/proc/admin_Freeze(var/client/admin, skip_overlays = FALSE) if(istype(admin)) to_chat(src, "You have been frozen by [key_name(admin)]") message_admins("[key_name_admin(admin)] froze [key_name_admin(src)]") log_admin("[key_name(admin)] froze [key_name(src)]") var/obj/effect/overlay/adminoverlay/AO = new - src.overlays += AO + if(skip_overlays) + src.overlays += AO anchored = 1 frozen = AO @@ -42,14 +43,15 @@ var/global/list/frozen_mob_list = list() if(!(src in frozen_mob_list)) frozen_mob_list += src -/mob/living/proc/admin_unFreeze(var/client/admin) +/mob/living/proc/admin_unFreeze(var/client/admin, skip_overlays = FALSE) if(istype(admin)) to_chat(src, "You have been unfrozen by [key_name(admin)]") message_admins("[key_name_admin(admin)] unfroze [key_name_admin(src)]") log_admin("[key_name(admin)] unfroze [key_name(src)]") anchored = 0 - overlays -= frozen + if(skip_overlays) + overlays -= frozen frozen = null SetSleeping(admin_prev_sleeping) admin_prev_sleeping = null diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 0265723daed..a1d179bbf1a 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -105,7 +105,6 @@ Please contact me on #coderbus IRC. ~Carn x /mob/living/carbon/human var/list/overlays_standing[TOTAL_LAYERS] - var/list/misc_effect_overlays = list() //Overlays that are applied at a custom layer (defined in each image's .layer property) outside of standard overlay application. Updated in update_misc_effects() var/previous_damage_appearance // store what the body last looked like, so we only have to update it if something changed var/icon/skeleton var/list/cached_standing_overlays = list() // List of everything currently in a human's actual overlays @@ -189,6 +188,7 @@ var/global/list/damage_icon_parts = list() else icon_key += "#000000" + update_misc_effects() for(var/organ_tag in dna.species.has_limbs) var/obj/item/organ/external/part = bodyparts_by_name[organ_tag] if(isnull(part)) @@ -296,6 +296,7 @@ var/global/list/damage_icon_parts = list() lips.Blend(lip_color, ICON_ADD) stand_icon.Blend(lips, ICON_OVERLAY) + icon = stand_icon //tail update_tail_layer(0) //head accessory @@ -1246,11 +1247,23 @@ var/global/list/damage_icon_parts = list() apply_overlay(COLLAR_LAYER) /mob/living/carbon/human/proc/update_misc_effects() - misc_effect_overlays.Cut() + remove_overlay(MISC_LAYER) //Begin appending miscellaneous effects. if(eyes_shine()) - misc_effect_overlays += get_eye_shine() //Image layer is specified in get_eye_shine() proc as LIGHTING_LAYER + 1. + overlays_standing[MISC_LAYER] = get_eye_shine() //Image layer is specified in get_eye_shine() proc as LIGHTING_LAYER + 1. + + apply_overlay(MISC_LAYER) + +/mob/living/carbon/human/admin_Freeze(client/admin, skip_overlays = TRUE) + . = ..() + overlays_standing[FROZEN_LAYER] = mutable_appearance(frozen, layer = FROZEN_LAYER) + apply_overlay(FROZEN_LAYER) + +/mob/living/carbon/human/admin_unFreeze(client/admin, skip_overlays = TRUE) + . = ..() + remove_overlay(FROZEN_LAYER) + /mob/living/carbon/human/proc/force_update_limbs() for(var/obj/item/organ/external/O in bodyparts)