Files
Bubberstation/code/modules/admin/verbs/commandreport.dm
SpaceLoveSs13 a9ff046352 Administrator Cherrypick (#27405)
* Admin Verb Datums MkIII | Now with functional command bar (#82511)

* Modular stuffs

* Put some admin jump verbs back into the context menu | sorts area jump list again (#82647)

## About The Pull Request

See title.

## Why It's Good For The Game

Some admins wanted all the jump verbs back, aswell as making them not
AGhost you.
Also make the Jump To Area verb use a sorted list again

* Hey what if admins were allowed to use the player panel (#82682)

Re-adds the player panel verb to the verb panel.

* Controller Overview UI (#82739)

* Fixes a minor spelling mistake on the admin panel/verb list (#82747)

## About The Pull Request

Corrects `inisimin` to `invisimin`. This addresses #82728, but only
fixes one of the two issues mentioned

## Why It's Good For The Game

-1 spelling mistake

## Changelog
🆑
spellcheck: 'inisimin' verb corrected to 'invisimin'
/🆑

* Player Panel-age (#82757)

* Admin Forced Mob Rename and Preference Update (#82715)

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: chel <64568243+iliyaxox@users.noreply.github.com>
2024-04-23 20:43:45 +02:00

163 lines
5.9 KiB
Plaintext

/// The default command report announcement sound.
#define DEFAULT_ANNOUNCEMENT_SOUND "default_announcement"
/// Preset central command names to chose from for centcom reports.
#define CENTCOM_PRESET "Central Command"
#define SYNDICATE_PRESET "The Syndicate"
#define WIZARD_PRESET "The Wizard Federation"
#define CUSTOM_PRESET "Custom Command Name"
ADMIN_VERB(change_command_name, R_ADMIN, "Change Command Name", "Change the name of Central Command.", ADMIN_CATEGORY_EVENTS)
var/input = input(user, "Please input a new name for Central Command.", "What?", "") as text|null
if(!input)
return
change_command_name(input)
message_admins("[key_name_admin(user)] has changed Central Command's name to [input]")
log_admin("[key_name(user)] has changed the Central Command name to: [input]")
/// Verb to open the create command report window and send command reports.
ADMIN_VERB(create_command_report, R_ADMIN, "Create Command Report", "Create a command report to be sent to the station.", ADMIN_CATEGORY_EVENTS)
BLACKBOX_LOG_ADMIN_VERB("Create Command Report")
var/datum/command_report_menu/tgui = new /datum/command_report_menu(user.mob)
tgui.ui_interact(user.mob)
/// Datum for holding the TGUI window for command reports.
/datum/command_report_menu
/// The mob using the UI.
var/mob/ui_user
/// The name of central command that will accompany our report
var/command_name = CENTCOM_PRESET
/// Whether we are using a custom name instead of a preset.
var/custom_name
/// The actual contents of the report we're going to send.
var/command_report_content
/// Whether the report's contents are announced.
var/announce_contents = TRUE
/// Whether a copy of the report is printed at every console.
var/print_report = TRUE
/// The sound that's going to accompany our message.
var/played_sound = DEFAULT_ANNOUNCEMENT_SOUND
/// The colour of the announcement when sent
var/announcement_color = "default"
/// The subheader to include when sending the announcement. Keep blank to not include a subheader
var/subheader = ""
/// A static list of preset names that can be chosen.
var/list/preset_names = list(CENTCOM_PRESET, SYNDICATE_PRESET, WIZARD_PRESET, CUSTOM_PRESET)
/datum/command_report_menu/New(mob/user)
ui_user = user
if(command_name() != CENTCOM_PRESET)
command_name = command_name()
preset_names.Insert(1, command_name())
/datum/command_report_menu/ui_state(mob/user)
return GLOB.admin_state
/datum/command_report_menu/ui_close()
qdel(src)
/datum/command_report_menu/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "CommandReport")
ui.open()
/datum/command_report_menu/ui_data(mob/user)
var/list/data = list()
data["command_name"] = command_name
data["custom_name"] = custom_name
data["command_report_content"] = command_report_content
data["announce_contents"] = announce_contents
data["print_report"] = print_report
data["played_sound"] = played_sound
data["announcement_color"] = announcement_color
data["subheader"] = subheader
return data
/datum/command_report_menu/ui_static_data(mob/user)
var/list/data = list()
data["command_name_presets"] = preset_names
data["announcer_sounds"] = list(DEFAULT_ANNOUNCEMENT_SOUND) + GLOB.announcer_keys
data["announcement_colors"] = ANNOUNCEMENT_COLORS
return data
/datum/command_report_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
switch(action)
if("update_command_name")
if(params["updated_name"] == CUSTOM_PRESET)
custom_name = TRUE
else if (params["updated_name"] in preset_names)
custom_name = FALSE
command_name = params["updated_name"]
if("set_report_sound")
played_sound = params["picked_sound"]
if("toggle_announce")
announce_contents = !announce_contents
if("toggle_printing")
print_report = !print_report
if("update_announcement_color")
var/colors = ANNOUNCEMENT_COLORS
var/chosen_color = params["updated_announcement_color"]
if(chosen_color in colors)
announcement_color = chosen_color
if("set_subheader")
subheader = params["new_subheader"]
if("submit_report")
if(!command_name)
to_chat(ui_user, span_danger("You can't send a report with no command name."))
return
if(!params["report"])
to_chat(ui_user, span_danger("You can't send a report with no contents."))
return
command_report_content = params["report"]
send_announcement()
return TRUE
/*
* The actual proc that sends the priority announcement and reports
*
* Uses the variables set by the user on our datum as the arguments for the report.
*/
/datum/command_report_menu/proc/send_announcement()
/// Our current command name to swap back to after sending the report.
var/original_command_name = command_name()
change_command_name(command_name)
/// The sound we're going to play on report.
var/report_sound = played_sound
if(played_sound == DEFAULT_ANNOUNCEMENT_SOUND)
report_sound = SSstation.announcer.get_rand_report_sound()
if(announce_contents)
var/chosen_color = announcement_color
if(chosen_color == "default")
if(command_name == SYNDICATE_PRESET)
chosen_color = "red"
else if(command_name == WIZARD_PRESET)
chosen_color = "purple"
priority_announce(command_report_content, subheader == ""? null : subheader, report_sound, has_important_message = TRUE, color_override = chosen_color)
if(!announce_contents || print_report)
print_command_report(command_report_content, "[announce_contents ? "" : "Classified "][command_name] Update", !announce_contents)
change_command_name(original_command_name)
log_admin("[key_name(ui_user)] has created a command report: \"[command_report_content]\", sent from \"[command_name]\" with the sound \"[played_sound]\".")
message_admins("[key_name_admin(ui_user)] has created a command report, sent from \"[command_name]\" with the sound \"[played_sound]\"")
#undef DEFAULT_ANNOUNCEMENT_SOUND
#undef CENTCOM_PRESET
#undef SYNDICATE_PRESET
#undef WIZARD_PRESET
#undef CUSTOM_PRESET