From aaa3e28efd579042b90498fea88d9a82b2ecea5e Mon Sep 17 00:00:00 2001 From: xProlithium Date: Tue, 28 Jul 2020 16:47:21 -0400 Subject: [PATCH 1/3] Click prevention for admin frozen players --- code/__HELPERS/unsorted.dm | 13 +++++++++++++ code/_onclick/click.dm | 4 +++- .../mob/living/carbon/human/species/_species.dm | 3 --- code/modules/mob/mob.dm | 3 +++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 7e57a394988..b9cc4aa931c 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -2017,5 +2017,18 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) set waitfor = FALSE return call(source, proctype)(arglist(arguments)) +/proc/IsFrozen(var/atom/A) + if(istype(A, /mob/living)) + var/mob/living/L = A + if(L.frozen) + return TRUE + + if(istype(A, /obj/mecha)) + var/obj/mecha/M = A + if(M.frozen) + return TRUE + + return FALSE + /// Waits at a line of code until X is true #define UNTIL(X) while(!(X)) stoplag() diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index d840f64bb4a..2e062992a3a 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -73,7 +73,9 @@ var/dragged = modifiers["drag"] if(dragged && !modifiers[dragged]) return - + if(IsFrozen(A) && !is_admin(usr)) + to_chat(usr, "Interacting with admin-frozen players is not permitted.") + return if(modifiers["middle"] && modifiers["shift"] && modifiers["ctrl"]) MiddleShiftControlClickOn(A) return diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 0914852b131..dfc3c07903c 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -519,9 +519,6 @@ /datum/species/proc/spec_attack_hand(mob/living/carbon/human/M, mob/living/carbon/human/H, datum/martial_art/attacker_style = M.martial_art) //Handles any species-specific attackhand events. if(!istype(M)) return - if(H.frozen) - to_chat(M, "Do not touch Admin-Frozen people.") - return if(istype(M)) var/obj/item/organ/external/temp = M.bodyparts_by_name["r_hand"] diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3b86faeb7e6..be21871f8f2 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -880,6 +880,9 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ return if(!Adjacent(usr)) return + if(IsFrozen(src)) + to_chat(usr, "Interacting with admin-frozen players is not permitted.") + return if(isLivingSSD(src) && M.client && M.client.send_ssd_warning(src)) return show_inv(usr) From c9132451de008181eab37956633be1e8591fbad5 Mon Sep 17 00:00:00 2001 From: xProlithium Date: Wed, 29 Jul 2020 01:10:11 -0400 Subject: [PATCH 2/3] updated per Steel's suggestion --- code/__HELPERS/unsorted.dm | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index b9cc4aa931c..b14c34f2d5a 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -2018,16 +2018,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return call(source, proctype)(arglist(arguments)) /proc/IsFrozen(var/atom/A) - if(istype(A, /mob/living)) - var/mob/living/L = A - if(L.frozen) - return TRUE - - if(istype(A, /obj/mecha)) - var/obj/mecha/M = A - if(M.frozen) - return TRUE - + if(A in GLOB.frozen_atom_list) + return TRUE return FALSE /// Waits at a line of code until X is true From e80d517cc6358bf9493746794074e78b211756f8 Mon Sep 17 00:00:00 2001 From: xProlithium Date: Fri, 31 Jul 2020 18:51:27 -0400 Subject: [PATCH 3/3] Changes part 2 Added admin check to click drop removed /var Changed warning onclick to boldannounce --- code/__HELPERS/unsorted.dm | 2 +- code/_onclick/click.dm | 2 +- code/modules/mob/mob.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index b14c34f2d5a..fc0f7520e0e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -2017,7 +2017,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) set waitfor = FALSE return call(source, proctype)(arglist(arguments)) -/proc/IsFrozen(var/atom/A) +/proc/IsFrozen(atom/A) if(A in GLOB.frozen_atom_list) return TRUE return FALSE diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 2e062992a3a..36b6d647b7d 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -74,7 +74,7 @@ if(dragged && !modifiers[dragged]) return if(IsFrozen(A) && !is_admin(usr)) - to_chat(usr, "Interacting with admin-frozen players is not permitted.") + to_chat(usr, "Interacting with admin-frozen players is not permitted.") return if(modifiers["middle"] && modifiers["shift"] && modifiers["ctrl"]) MiddleShiftControlClickOn(A) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index be21871f8f2..1c7f8fa6ae9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -880,7 +880,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ return if(!Adjacent(usr)) return - if(IsFrozen(src)) + if(IsFrozen(src) && !is_admin(usr)) to_chat(usr, "Interacting with admin-frozen players is not permitted.") return if(isLivingSSD(src) && M.client && M.client.send_ssd_warning(src))