From c30f2f781422d0ad6b6ad8fa0762d0db732cf097 Mon Sep 17 00:00:00 2001 From: Patrick Meade Date: Mon, 25 Dec 2023 14:00:56 -0600 Subject: [PATCH 1/2] Port code for admin verb Freeze from Paradise --- code/game/mecha/mecha.dm | 6 +- code/game/objects/effects/overlays.dm | 6 ++ code/modules/admin/admin_verbs.dm | 1 + code/modules/admin/verbs/freeze.dm | 94 +++++++++++++++++++++++ code/modules/mob/living/living_defines.dm | 5 ++ shiptest.dme | 1 + 6 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 code/modules/admin/verbs/freeze.dm diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index d2c712d32ea..03fb57dea26 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -40,6 +40,7 @@ var/lights = FALSE var/last_user_hud = 1 // used to show/hide the mecha hud while preserving previous preference var/completely_disabled = FALSE //stops the mech from doing anything + var/frozen = FALSE // admin frozen var/bumpsmash = 0 //Whether or not the mech destroys walls by running into it. //inner atmos @@ -565,7 +566,7 @@ /obj/mecha/relaymove(mob/living/user, direction) if(completely_disabled) return - if(!direction) + if(!direction || frozen) return if(user != occupant) //While not "realistic", this piece is player friendly. user.forceMove(get_turf(src)) @@ -884,6 +885,9 @@ . = t_air.return_temperature() /obj/mecha/MouseDrop_T(mob/M, mob/user) + if(frozen) + to_chat(user, "Do not enter Admin-Frozen mechs.") + return TRUE if((user != M) || user.incapacitated() || !Adjacent(user)) return if(!ishuman(user)) // no silicons or drones in mechas. diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index f5f28c60c80..6182101d9b4 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -46,6 +46,12 @@ icon_state = "shieldsparkles" anchored = TRUE +/obj/effect/overlay/adminoverlay + name = "adminoverlay" + icon = 'icons/effects/effects.dmi' + icon_state = "admin" + layer = 4.1 + /obj/effect/overlay/vis mouse_opacity = MOUSE_OPACITY_TRANSPARENT anchored = TRUE diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 929cf33f331..4df079e3749 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -79,6 +79,7 @@ GLOBAL_PROTECT(admin_verbs_admin) /client/proc/overmap_datum_token_manager, /datum/admins/proc/open_borgopanel, /client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/ + /client/proc/freeze, ) GLOBAL_LIST_INIT(admin_verbs_ban, list( diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm new file mode 100644 index 00000000000..494d0f575e8 --- /dev/null +++ b/code/modules/admin/verbs/freeze.dm @@ -0,0 +1,94 @@ +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +//////Freeze Mob/Mech Verb -- Ported from NSS Pheonix (Unbound Travels)///////// +//////////////////////////////////////////////////////////////////////////////// +//////Allows admin's to right click on any mob/mech and freeze them in place./// +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +GLOBAL_LIST_EMPTY(frozen_atom_list) // A list of admin-frozen atoms. + +/client/proc/freeze(atom/movable/M) + set name = "\[Admin\] Freeze" + set category = null + + if(!check_rights(R_ADMIN)) + return + + M.admin_Freeze(src) + +/// Created here as a base proc. Override as needed for any type of object or mob you want able to be frozen. +/atom/movable/proc/admin_Freeze(client/admin) + to_chat(admin, "Freeze is not able to be called on this type of object.You have been [frozen ? "frozen" : "unfrozen"] by [admin]") + message_admins("[key_name_admin(admin)] [frozen ? "froze" : "unfroze"] [key_name_admin(src)] [mech ? "in a [mech]" : ""]") + log_admin("[key_name(admin)] [frozen ? "froze" : "unfroze"] [key_name(src)] [mech ? "in a [mech]" : ""]") + update_icons() + + return frozen + + +/mob/living/simple_animal/slime/admin_Freeze(admin) + if(..()) // The result of the parent call here will be the value of the mob's `frozen` variable after they get (un)frozen. + adjustHealth(1000) //arbitrary large value + else + revive() + +/mob/living/simple_animal/var/admin_prev_health = null + +/mob/living/simple_animal/admin_Freeze(admin) + if(..()) // The result of the parent call here will be the value of the mob's `frozen` variable after they get (un)frozen. + admin_prev_health = health + health = 0 + else + revive() + overlays.Cut() + +//////////////////////////Freeze Mech + +/obj/mecha/admin_Freeze(client/admin) + var/obj/effect/overlay/adminoverlay/freeze_overlay = new + if(!frozen) + GLOB.frozen_atom_list += src + frozen = TRUE + overlays += freeze_overlay + else + GLOB.frozen_atom_list -= src + frozen = FALSE + overlays -= freeze_overlay + + if(occupant) + occupant.admin_Freeze(admin, mech = name) // We also want to freeze the driver of the mech. + else + message_admins("[key_name_admin(admin)] [frozen ? "froze" : "unfroze"] an empty [name]") + log_admin("[key_name(admin)] [frozen ? "froze" : "unfroze"] an empty [name]") diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 734ffac0859..d86ff2adb5a 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -43,6 +43,11 @@ /// Flags that determine the potential of a mob to perform certain actions. Do not change this directly. var/mobility_flags = MOBILITY_FLAGS_DEFAULT + /// Used for preventing attacks on admin-frozen mobs. + var/frozen = null + /// Used for keeping track of previous sleeping value with admin freeze. + var/admin_prev_sleeping = 0 + var/resting = FALSE /// Variable to track the body position of a mob, regardgless of the actual angle of rotation (usually matching it, but not necessarily). diff --git a/shiptest.dme b/shiptest.dme index e933dfe020c..661720a7dfd 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1513,6 +1513,7 @@ #include "code\modules\admin\verbs\fax_manager.dm" #include "code\modules\admin\verbs\fix_air.dm" #include "code\modules\admin\verbs\fps.dm" +#include "code\modules\admin\verbs\freeze.dm" #include "code\modules\admin\verbs\getlogs.dm" #include "code\modules\admin\verbs\individual_logging.dm" #include "code\modules\admin\verbs\machine_upgrade.dm" From 28e3757c497c48f4825fd792b9ee16a3506ae3b7 Mon Sep 17 00:00:00 2001 From: Patrick Meade Date: Mon, 25 Dec 2023 17:27:45 -0600 Subject: [PATCH 2/2] A wild admin icon_state has appeared! --- icons/effects/effects.dmi | Bin 901728 -> 903218 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 0aa256c631e428148e97de7cb47668ff901b7abc..8cb87f5fde8497ac9324433f6d4cd3bd7ca71840 100644 GIT binary patch delta 17128 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 CEp2T8 delta 15626 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