diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm
index 9c0e00346409..8883ba75b27e 100644
--- a/code/controllers/subsystem/minimap.dm
+++ b/code/controllers/subsystem/minimap.dm
@@ -458,10 +458,10 @@ SUBSYSTEM_DEF(minimaps)
// hacky ass solution for tgui color display, move functionality to js, fix later.
var/toolbar_updated_selection = "black"
- var/canvas_cooldown_time = 2 MINUTES
+ var/canvas_cooldown_time = 4 MINUTES
// prevent multiple users from updating the canvas image until the cooldown expires.
- var/static/canvas_cooldown = 0
+ COOLDOWN_DECLARE(canvas_cooldown)
var/updated_canvas = FALSE
@@ -557,10 +557,27 @@ SUBSYSTEM_DEF(minimaps)
if ("selectAnnouncement")
toolbar_updated_selection = "export"
+ var/datum/canvas_map/canvas_image = new(params["image"])
+
+ var/input = stripped_multiline_input(user, "Optional message to announce to the [MAIN_SHIP_NAME]'s crew with the tactical map", "Tactical Map Announcement", "")
+ var/signed
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ var/obj/item/card/id/id = H.wear_id
+ if(istype(id))
+ var/paygrade = get_paygrades(id.paygrade, FALSE, H.gender)
+ signed = "[paygrade] [id.registered_name]"
+
+ var/href_map = "View Tacitcal Map
"
+ var/outgoing_message = href_map + input
+
+ message_admins("[key_name(user)] has made a tacitcal map announcement.")
+ log_announcement("[key_name(user)] has announced the following: [outgoing_message]")
//hardcoded testing, PROGRESS!
- marine_announcement("", "Marine Major")
+ marine_announcement(outgoing_message, "Tactical Map Announcement", signature = signed)
updated_canvas = FALSE
+ //qdel(canvas_image)
. = TRUE
}
@@ -590,3 +607,10 @@ SUBSYSTEM_DEF(minimaps)
/datum/tacmap_holder/Destroy()
map = null
return ..()
+
+/datum/canvas_map
+ var/data
+
+/datum/canvas_map/New(data)
+ . = ..()
+ src.data = data
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 6926175c835a..fe76abe996a8 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -148,6 +148,20 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list(
cmd_admin_pm(receiver_client, null)
return
+ else if(href_list["MapView"])
+
+ var/datum/canvas_map/image = locate(href_list["MapView"])
+
+ if(!istype(image))
+ to_chat(usr, SPAN_WARNING("not of type datum"))
+ return
+
+ to_chat(usr, SPAN_WARNING("passed"))
+
+ usr << browse_rsc(image.data)
+
+ show_browser(usr, "","Map Image", "Map Image", "size=1000x1000")
+
else if(href_list["FaxView"])
var/datum/fax/info = locate(href_list["FaxView"])