From e92e5a9e416bb12ee86fa810f766e2d54b65c058 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Mon, 2 Sep 2024 12:41:26 +0100 Subject: [PATCH] admin env messages Added new verbs to the EventKit tab: "Map Message - Create", which spawns a new red admin environmental message, this one does not delete other messages placed by the user, allowing GMs to place as many as they want. "Map Message - Remove" which lists all env messages in the world by their message text, allowing admins/GMs to remove any particular one. The main purpose of these is for event stuff really, I thought it could be useful for setting up a specific description of something not-visible on a tile. --- code/modules/admin/admin_verb_lists_vr.dm | 4 +- code/modules/env_message/env_message.dm | 73 +++++++++++++++++++++- icons/effects/env_message.dmi | Bin 291 -> 377 bytes 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm index aad0440423..5c32950edb 100644 --- a/code/modules/admin/admin_verb_lists_vr.dm +++ b/code/modules/admin/admin_verb_lists_vr.dm @@ -195,7 +195,9 @@ var/list/admin_verbs_spawn = list( /client/proc/map_template_load_on_new_z, /client/proc/eventkit_open_mob_spawner, /client/proc/generic_structure, //VOREStation Add - /client/proc/generic_item //VOREStation Add + /client/proc/generic_item, //VOREStation Add + /client/proc/create_gm_message, + /client/proc/remove_gm_message ) var/list/admin_verbs_server = list( diff --git a/code/modules/env_message/env_message.dm b/code/modules/env_message/env_message.dm index 9b55c1ba72..27f60fb787 100644 --- a/code/modules/env_message/env_message.dm +++ b/code/modules/env_message/env_message.dm @@ -112,4 +112,75 @@ var/global/list/env_messages = list() else var/answer = tgui_alert(src, "Do you want to remove your env message?", "Env Message", list("Yes", "No")) if(answer == "Yes") - clear_env_message(src.ckey) \ No newline at end of file + clear_env_message(src.ckey) + +//GM tool version + +/obj/effect/env_message/admin + name = "Map message" + icon = 'icons/effects/env_message.dmi' + icon_state = "env_message_red" + +/client/proc/create_gm_message() + set name = "Map Message - Create" + set desc = "Create an ooc message in the environment for other players to see." + set category = "EventKit" + + if(!check_rights(R_FUN)) + return + + if(isnewplayer(mob)) + to_chat(src, "You must spawn or observe to place messages.") + return + + if(!get_turf(mob) || !src.ckey) + return + + var/new_message = sanitize(tgui_input_text(src, "Type in your message. It will be displayed to players who hover over the spot where you are right now.", "Env Message")) + + if(!new_message) + return + + var/ourturf = get_turf(mob) + + var/obj/effect/env_message/EM = locate(/obj/effect/env_message) in ourturf + + if(!EM) + EM = new /obj/effect/env_message/admin(ourturf) + EM.add_message(src.ckey, new_message) + + log_game("[key_name(src)] created an Env Message: [new_message] at ([EM.x], [EM.y], [EM.z])") + +/client/proc/remove_gm_message() + set name = "Map Message - Remove" + set desc = "Remove any env/map message." + set category = "EventKit" + + if(!istype(src) || !src.ckey) + return + + if(!check_rights(R_FUN)) + return + + var/list/all_map_messages = list() + for(var/obj/effect/env_message/A in world) + all_map_messages |= A.combined_message + + if(!all_map_messages.len) + to_chat(src, "There are no map or env messages.") + return + + var/mob/chosen_message = tgui_input_list(src, "Which message do you want to remove?", "Make contact", all_map_messages) + if(!chosen_message) + return + + for(var/obj/effect/env_message/EM in world) + if(EM.combined_message == chosen_message) + qdel(EM) + log_game("[key_name(src)] deleted an Env Message that contained other players' entries at ([EM.x], [EM.y], [EM.z])") + +proc/return_env_message_list() + var/list/name_messages = list() + for(var/obj/effect/env_message/A in world) + name_messages[A.combined_message] = A + return name_messages diff --git a/icons/effects/env_message.dmi b/icons/effects/env_message.dmi index 87440a20ad267f6a89e8a9044d96f378009383d2..bb899e6c40ed4dece22dc542d4cc1ce94489c701 100644 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQq@%<5hX6E#mPmP1tppJc?=8{ zb4pKHbF~@>xIMJm+$I0^X!vY5rRgHOSUFQnG(%3Xy#J<~v(=h?pU~kSn~l$;ynLkc z(PqKLaMP9bUo0IKXM3{tMV~nDQ8sg7;D+T)B+(C9~jc(3azIo4=-+wddM*UBr z$2kdV-sWOcwPRy*c(s7e*y-uw7?RQWc7`F}VFdw}^MUgwU$W)z3i>I#ZqXn1s_B&h zw={wduupQo_I8Uzp5%vV`eZfQqD~4W{3yc|uxOY^k-wCeTGOu## zr#Ib~)pWf#*F|2x`}HoDr%BbZ^4%=peco2jd7oLOfzQEM zXTdcA{)N{B$``0vME!qbzTma>gE!0nom~>2bP#R>NTo7k34;{p0_F=X;vX1K^ovD4 TUS;?X=m`c-S3j3^P6kI%Q%`;fN^pNMHV&~+X zsG$5WmJZ1;JX!nFPt>dIK67Ek553<C>b<++|Njv*1P$uYJdc{w+%DQXCcS7ttTQSIgm nW;a=bR}F#eJyr<|WEmKyN^^hwqJJt2XfcDQtDnm{r-UW|<+OG6