Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: ERT Request panel for admins #1061

Merged
merged 22 commits into from
Mar 13, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _maps/map_files/generic/CentCom.dmm
Original file line number Diff line number Diff line change
@@ -4031,6 +4031,7 @@
/area/space/nearstation)
"atC" = (
/obj/structure/chair/comfy/corp,
/obj/effect/landmark/ert_brief_spawn,
/turf/open/floor/iron/smooth_half{
dir = 1
},
1 change: 1 addition & 0 deletions code/__DEFINES/admin.dm
Original file line number Diff line number Diff line change
@@ -60,6 +60,7 @@
#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]"
#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]"
#define ADMIN_SET_SD_CODE "(<a href='byond://?_src_=holder;[HrefToken(forceGlobal = TRUE)];set_selfdestruct_code=1'>SETCODE</a>)"
#define ADMIN_ERT_RESPOND "(<a href='byond://?_src_=holder;[HrefToken(forceGlobal = TRUE)];ert_respond=1'>ERT</a>)" // BANDASTATION ADDITION
#define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)] [ADMIN_INDIVIDUALLOG(user)] [ADMIN_SMITE(user)]"
#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]"
#define ADMIN_JMP(src) "(<a href='byond://?_src_=holder;[HrefToken(forceGlobal = TRUE)];adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)"
22 changes: 22 additions & 0 deletions code/game/machinery/computer/communications.dm
Original file line number Diff line number Diff line change
@@ -305,6 +305,26 @@
priority_announce("[user] запросил коды для запуска механизма ядерного самоуничтожения станции. В ближайшее время будет отправлено уведомление о подтверждении или отклонении данного запроса.", "Запрос кода самоуничтожения станции", SSstation.announcer.get_rand_report_sound())
playsound(src, 'sound/machines/terminal/terminal_prompt.ogg', 50, FALSE)
COOLDOWN_START(src, important_action_cooldown, IMPORTANT_ACTION_COOLDOWN)
// BANDASTATION ADDITION - START
if ("requestERT")
if (!authenticated_as_non_silicon_captain(user))
return
if (!COOLDOWN_FINISHED(src, important_action_cooldown))
return
var/reason = trim(html_encode(params["reason"]), MAX_MESSAGE_LEN)
var/insert_this = list(list(
"time" = station_time_timestamp(),
"sender_real_name" = "[user.real_name ? user.real_name : user.name]",
"sender_uid" = REF(user),
"message" = reason))
GLOB.ert_request_messages.Insert(1, insert_this) // insert it to the top of the list
ert_request(reason, user)
to_chat(user, span_notice("ERT request sent."))
user.log_message("has requested an Emergency Response Team from CentCom with reason \"[reason]\"", LOG_SAY)
priority_announce("Отправлен запрос ОБР. Инициатор: [name]. Запрос принят к рассмотрению. Решение будет направлено в ближайшее время.", "[command_name()]: Служба быстрого реагирования", SSstation.announcer.get_rand_report_sound())
playsound(src, 'sound/machines/terminal/terminal_prompt.ogg', 50, FALSE)
COOLDOWN_START(src, important_action_cooldown, IMPORTANT_ACTION_COOLDOWN)
// BANDASTATION ADDITION - END
if ("restoreBackupRoutingData")
if (!authenticated_as_non_silicon_captain(user))
return
@@ -532,6 +552,7 @@
data["canMessageAssociates"] = FALSE
data["canRecallShuttles"] = !HAS_SILICON_ACCESS(user)
data["canRequestNuke"] = FALSE
data["canRequestERT"] = FALSE // BANDASTATION ADDITION
data["canSendToSectors"] = FALSE
data["canSetAlertLevel"] = FALSE
data["canToggleEmergencyAccess"] = FALSE
@@ -549,6 +570,7 @@
if (authenticated_as_non_silicon_captain(user))
data["canMessageAssociates"] = TRUE
data["canRequestNuke"] = TRUE
data["canRequestERT"] = TRUE // BANDASTATION ADDITION

if (can_send_messages_to_other_sectors(user))
data["canSendToSectors"] = TRUE
9 changes: 9 additions & 0 deletions code/modules/admin/topic.dm
Original file line number Diff line number Diff line change
@@ -1285,6 +1285,15 @@
message_admins("[key_name_admin(usr)] has set the self-destruct \
code to \"[code]\".")

// BANDASTATION ADDITION - START
else if(href_list["ert_respond"])
if(!check_rights(R_ADMIN))
return
var/datum/ert_manager/tgui = new(usr)
tgui.ui_interact(usr)
message_admins("[key_name_admin(usr)] answered an ERT request.")
// BANDASTATION ADDITION - END

else if(href_list["add_station_goal"])
if(!check_rights(R_ADMIN))
return
12 changes: 12 additions & 0 deletions code/modules/admin/verbs/pray.dm
Original file line number Diff line number Diff line change
@@ -84,3 +84,15 @@
to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE)
for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list)
console.override_cooldown()

// BANDASTATION ADDITION - START
/proc/ert_request(text, mob/sender)
var/msg = copytext_char(sanitize(text), 1, MAX_MESSAGE_LEN)
GLOB.requests.ert_request(sender.client, msg)
msg = span_adminnotice("<b><font color=orange>ERT REQUEST:</font>[ADMIN_FULLMONTY(sender)] [ADMIN_CENTCOM_REPLY(sender)] [ADMIN_ERT_RESPOND]:</b> [msg]")
for(var/client/staff as anything in GLOB.admins)
SEND_SOUND(staff, sound('sound/misc/server-ready.ogg'))
to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE)
for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list)
console.override_cooldown()
// BANDASTATION ADDITION - END
27 changes: 27 additions & 0 deletions code/modules/requests/request_manager.dm
Original file line number Diff line number Diff line change
@@ -6,6 +6,10 @@
#define REQUEST_SYNDICATE "request_syndicate"
/// Requests for the nuke code
#define REQUEST_NUKE "request_nuke"
// BANDASTATION ADDITION - START
/// Requests an ERT
#define REQUEST_ERT "request_ert"
// BANDASTATION ADDITION - END
/// Requests somebody from fax
#define REQUEST_FAX "request_fax"
/// Requests from Request Music
@@ -99,6 +103,18 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new)
/datum/request_manager/proc/nuke_request(client/C, message)
request_for_client(C, REQUEST_NUKE, message)

// BANDASTATION ADDITION - START
/**
* Creates a request for an ERT
*
* Arguments:
* * C - The client who is sending the request
* * message - The message
*/
/datum/request_manager/proc/ert_request(client/C, message)
request_for_client(C, REQUEST_ERT, message)
// BANDASTATION ADDITION - END

/**
* Creates a request for fax answer
*
@@ -256,6 +272,16 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new)

web_sound(usr, request.message)
return TRUE
// BANDASTATION ADDITION - START
if ("requestert")
if (request.req_type != REQUEST_ERT)
to_chat(usr, "You cannot request an ERT for a non-ERT-request request!", confidential = TRUE)
return TRUE
message_admins("[key_name_admin(usr)] answered an ERT request.")
var/datum/ert_manager/tgui = new(usr)
tgui.ui_interact(usr)
return TRUE
// BANDASTATION ADDITION - END

/datum/request_manager/ui_data(mob/user)
var/list/data = list()
@@ -281,3 +307,4 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new)
#undef REQUEST_NUKE
#undef REQUEST_FAX
#undef REQUEST_INTERNET_SOUND
#undef REQUEST_ERT // BANDASTATION ADDITION
4 changes: 4 additions & 0 deletions modular_bandastation/ert/_ert.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/datum/modpack/ert_manager
name = "ERT менеджер"
desc = "Менеджер для ЕРТ."
author = "Ros_Sample"
3 changes: 3 additions & 0 deletions modular_bandastation/ert/_ert.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include "_ert.dm"

#include "code/ert_manager.dm"
Loading

Unchanged files with check annotations Beta

"Вы пытаетесь что-то сказать, но костюм сдавливает вам гортань..."
)
speech_args[SPEECH_MESSAGE] = "..."

Check warning on line 117 in modular_bandastation/objects/code/items/clothing/spacesuits/hev_suit.dm

GitHub Actions / Run Linters

OD2304: Invalid index operation. datum[] index operations are not valid starting in BYOND 515.1641
to_chat(source, span_warning(pick(cancel_messages)))
//Fire