diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm
index 5fa50a1c26..7257641016 100644
--- a/code/modules/admin/admin_verb_lists_vr.dm
+++ b/code/modules/admin/admin_verb_lists_vr.dm
@@ -200,7 +200,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 f5e62b133c..10a9ca8f02 100644
--- a/code/modules/env_message/env_message.dm
+++ b/code/modules/env_message/env_message.dm
@@ -113,3 +113,68 @@ var/global/list/env_messages = list()
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)
+
+//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 = "Fun.Event Kit" //CHOMPEdit
+
+ 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])")
diff --git a/icons/effects/env_message.dmi b/icons/effects/env_message.dmi
index 87440a20ad..bb899e6c40 100644
Binary files a/icons/effects/env_message.dmi and b/icons/effects/env_message.dmi differ