Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 4bcec77
Author: cm13-github <[email protected]>
Date:   Tue Mar 12 12:51:03 2024 +0000

    Automatic changelog for PR cmss13-devs#5901 [ci skip]

commit 1c2ad76
Author: Segrain <[email protected]>
Date:   Tue Mar 12 16:44:40 2024 +0400

    Fixes for medals. (cmss13-devs#5901)

    # About the pull request

    By design, you cannot wear uniform/armour with somebody else's medal.
    Fine, but let it be checked upon trying to don the bemedalled object
    yourself, not upon simply picking it up from the ground. It is
    frustrating to constantly drop medals when trying to rearmour your
    patients after revival/surgery.
    (Ceterum censeo, letting doctors call themselves surgeons adds nothing
    but an excuse to shirk pharmacy duties and to pretend to have priority
    for deployment. But a bug is a bug.)

    # Explain why it's good for the game

    Is fixes.

    # Changelog

    🆑
    fix: Picking up clothes/armour with somebody else's medal attached no
    longer makes the medal fall off (trying to wear them still does).
    fix: Doctors calling themselves surgeons now properly get playtime
    medals.
    fix: Playtime medals now use assignments instead of backend paygrade
    codes (e.g. "Awarded to Squad Leader John Doe" instead of "Awarded to
    ME5 John Doe").
    /🆑

commit 4822bbd
Author: Changelogs <[email protected]>
Date:   Tue Mar 12 01:07:18 2024 +0000

    Automatic changelog compile [ci skip]

commit c7abb8d
Author: cm13-github <[email protected]>
Date:   Tue Mar 12 00:55:46 2024 +0000

    Automatic changelog for PR cmss13-devs#5510 [ci skip]

commit 02350b6
Author: forest2001 <[email protected]>
Date:   Tue Mar 12 00:48:53 2024 +0000

    Project ARES: Ticket Notifications (cmss13-devs#5510)

    # About the pull request
    Adds audio notifications for certain ticket interactions, played from
    APOLLO consoles and WJ PDAs.
    <!-- Remove this text and explain what the purpose of your PR is.

    Mention if you have tested your changes. If you changed a map, make sure
    you used the mapmerge tool.
    If this is an Issue Correction, you can type "Fixes Issue #169420" to
    link the PR to the corresponding Issue number #169420.

    Remember: something that is self-evident to you might not be to others.
    Explain your rationale fully, even if you feel it goes without saying.
    -->

    # Explain why it's good for the game
    # Testing Photographs and Procedure
    <details>
    <summary>Screenshots & Videos</summary>

    Put screenshots and videos here with an empty line between the
    screenshots and the `<details>` tags.

    </details>

    # Changelog
    🆑
    soundadd: Added pda_ping.ogg, sourced from Paradise SS13
    mailapproved.ogg
    add: Added notification sounds from certain APOLLO ticket interactions.
    add: People making an access ticket request are now notified of the
    status changes.
    /🆑

    ---------

    Co-authored-by: Drathek <[email protected]>

commit 135e111
Author: cm13-github <[email protected]>
Date:   Mon Mar 11 20:44:50 2024 +0000

    Automatic changelog for PR cmss13-devs#5902 [ci skip]

commit 80a989c
Author: Staykeu <[email protected]>
Date:   Mon Mar 11 16:38:18 2024 -0400

    Drop Pouch Buff (cmss13-devs#5902)

    # About the pull request

    The intention behind this PR is to see the drop pouch used more often as
    a middle ground between the magazine webbing and large webbing. Adds two
    more small item spaces (one medium item space). The drop pouch carries
    either two large items (unchanged), four medium sized items, or eight
    small items.

    <!-- Remove this text and explain what the purpose of your PR is.

    Mention if you have tested your changes. If you changed a map, make sure
    you used the mapmerge tool.
    If this is an Issue Correction, you can type "Fixes Issue #169420" to
    link the PR to the corresponding Issue number #169420.

    Remember: something that is self-evident to you might not be to others.
    Explain your rationale fully, even if you feel it goes without saying.
    -->

    # Explain why it's good for the game

    The drop pouch is rarely ever used, mostly by smartgunners who need a
    few extra drums. This should change that. It brings the drop pouch up
    from a niche "(worse) large pouch but for your webbing slot" to a
    middler between the magazine webbing and large webbing, mag webbing is
    still better for packing mags, like it always has been, and large
    webbing is still better for packing medium sized items, which are most
    of the items a marine would be packing.
    # Testing Photographs and Procedure
    <details>
    <summary>Screenshots & Videos</summary>

    Put screenshots and videos here with an empty line between the
    screenshots and the `<details>` tags.

    </details>

    # Changelog
    🆑 Stakeyng
    balance: Drop pouch has more space (2 large (unchanged), 4 medium, 8
    small)
    /🆑

    ---------

    Co-authored-by: private-tristan <[email protected]>

commit f2e1761
Author: cm13-github <[email protected]>
Date:   Mon Mar 11 20:30:59 2024 +0000

    Automatic changelog for PR cmss13-devs#5904 [ci skip]

commit f85a7bf
Author: Katskan <[email protected]>
Date:   Mon Mar 11 16:15:37 2024 -0400

    Adjust Medical Skill Duration Multiplier (cmss13-devs#5904)

    # About the pull request

    Adjusts medical skill level to be more incremental and based on
    proficiency and familiarity with the tools, as such Medical 4 doesn't
    get speed bonus out of nowhere, being preceded by Medical 3 giving a
    lower bonus and then Medical 4 getting a larger bonus. Also reduces the
    raw bonus of Medical 4 so that you no longer have the issue with
    defibrillators shocking before they're done charging.

    # Explain why it's good for the game

    Makes medical skill make some more sense in how it progresses, also
    gives a little bump to the majority of higher medical roles which have
    Medical 3. Because it doesn't touch Medical 2, shouldn't impact front
    line dynamics much if at all.

    # Testing Photographs and Procedure

    Ran on local machine for testing.

    # Changelog
    Spoke with Drathek King Of Balance prior to posting PR

    🆑
    balance: Medical Skill 4 reduced speed buff from -75% duration to -50%
    duration
    balance: Medical Skill 3 increased speed buff from -0% duration to -25%
    duration
    /🆑

commit 3ff60e3
Author: cm13-github <[email protected]>
Date:   Mon Mar 11 20:22:44 2024 +0000

    Automatic changelog for PR cmss13-devs#5917 [ci skip]

commit e6aeb40
Author: ihatethisengine <[email protected]>
Date:   Mon Mar 11 23:15:19 2024 +0300

    Dropship doors can now always be broken by queen (cmss13-devs#5917)

    # About the pull request

    This PR is a follow up to
    cmss13-devs#5808 removing a locked check
    to break the doors.

    # Explain why it's good for the game

    Now regardless of currently locked or open, the queen can break the
    doors to prevent further door spamming.

    <details>
    <summary>Screenshots & Videos</summary>

    Put screenshots and videos here with an empty line between the
    screenshots and the `<details>` tags.

    </details>

    # Changelog
    🆑 ihatethisengine2
    fix: Dropship door prying can now always be performed by queen even if
    open or not locked
    /🆑

    ---------

    Co-authored-by: Drathek <[email protected]>

commit 19e7779
Author: cm13-github <[email protected]>
Date:   Mon Mar 11 17:27:24 2024 +0000

    Automatic changelog for PR cmss13-devs#5900 [ci skip]

commit 87ea79f
Author: Segrain <[email protected]>
Date:   Mon Mar 11 21:20:41 2024 +0400

    Spare medical/engineering radios. (cmss13-devs#5900)

    # About the pull request

    May the medical survivors rejoice.

    # Explain why it's good for the game

    Ever since somebody decided that half the shipside roles should be
    spawning without headsets at all, there is no way for a
    doctor/researcher that survives and gets to Almayer to actually get a
    functional radio. Time to fix that.
    (Also removed a thing that should have been gone long ago. You know who
    you are and what have you done.)

    # Changelog

    🆑
    add: Requisitions' vendor now has medical radio keys in stock.
    add: CE and CMO can now get spare departmental headsets from their
    vendors to recruit survivors without having to go to Requisitions.
    /🆑

    ---------

    Co-authored-by: Zonespace <[email protected]>

commit 268eb4b
Author: cm13-github <[email protected]>
Date:   Mon Mar 11 11:59:17 2024 +0000

    Automatic changelog for PR cmss13-devs#5898 [ci skip]

commit d3e5812
Author: Segrain <[email protected]>
Date:   Mon Mar 11 15:54:04 2024 +0400

    Fix for empty lists of frequencies. (cmss13-devs#5898)

    # About the pull request

    Followup to cmss13-devs#5833. First I thought that I had simply fumbled back then
    by fixing things enough that breaking them actually works now and fixing
    it is simply a matter of making the list empty itself instead of
    replacing itself with a null so that trying to `|=` to it no longer
    would runtime.
    And then I discovered that somebody once had decided that the syntax to
    declare comms machines as universal shall be by giving them empty
    frequency lists. Please never do that. It is a pain to track which cases
    are intended to be empty because they are meant to be universal and
    which are intended to be empty because they will be filled via some
    procedure. I _think_ that I sorted them correctly, but if something will
    break again, more fixing will need doing.

    # Explain why it's good for the game

    Is fix.

    # Changelog

    🆑
    fix: Wiping frequencies off radiotowers no longer breaks them forever.
    /🆑

commit 111f650
Author: cm13-github <[email protected]>
Date:   Mon Mar 11 11:30:45 2024 +0000

    Automatic changelog for PR cmss13-devs#5911 [ci skip]

commit ae6a2e8
Author: Drathek <[email protected]>
Date:   Mon Mar 11 04:23:57 2024 -0700

    Fix chestrig expecting map skins (cmss13-devs#5911)

    # About the pull request

    This PR is a follow up to cmss13-devs#5620 setting the setting required to indicate
    it doesn't have map specific skins (e.g. Shiva)

    # Explain why it's good for the game
    Fixes cmss13-devs#5910

    # Testing Photographs and Procedure
    <details>
    <summary>Screenshots & Videos</summary>

    ![rig](https://github.com/cmss13-devs/cmss13/assets/76988376/412f41c3-338c-414e-a218-434ac4917ade)

    </details>

    # Changelog
    🆑 Drathek
    fix: Fix chestrig not displaying on maps with different skins (e.g.
    Shivas)
    /🆑

commit 24a1538
Author: Changelogs <[email protected]>
Date:   Mon Mar 11 01:07:59 2024 +0000

    Automatic changelog compile [ci skip]

commit 19d20a8
Author: cm13-github <[email protected]>
Date:   Sun Mar 10 16:56:46 2024 +0000

    Automatic changelog for PR cmss13-devs#5897 [ci skip]

commit 4c17176
Author: Segrain <[email protected]>
Date:   Sun Mar 10 20:50:36 2024 +0400

    Fix for answering marked tickets. (cmss13-devs#5897)

    # About the pull request

    Followup to cmss13-devs#5872. Should have searched through all the files instead of
    only one to begin withal.

    # Explain why it's good for the game

    Is fix.

    # Changelog

    🆑
    admin: Actually fixed the last case of being warned against interacting
    with ticket already marked by you.
    /🆑

commit 499d157
Author: Changelogs <[email protected]>
Date:   Sat Mar 9 01:04:24 2024 +0000

    Automatic changelog compile [ci skip]

commit 43b5afb
Author: cm13-github <[email protected]>
Date:   Fri Mar 8 22:34:06 2024 +0000

    Automatic changelog for PR cmss13-devs#5890 [ci skip]

commit 4b6139c
Author: iloveloopers <[email protected]>
Date:   Fri Mar 8 18:27:28 2024 -0400

    buffs ravager empower (cmss13-devs#5890)

    # About the pull request
    empower range increased to 4

    # Explain why it's good for the game
    cmss13-devs#3729 nerfed base rav too much, rav does not have great armor (only 25)
    which means it has to rely alot on shields gained for sustain. it also
    increased the max targets from 5 to 6 but didn't give any empower range,
    its very rare to actually be able to get the full 6 targets.

    # Testing Photographs and Procedure
    its a numbers change

    # Changelog
    🆑
    balance: ravager empower range is now 4 tiles
    /🆑

commit 6b731c7
Author: cm13-github <[email protected]>
Date:   Fri Mar 8 15:20:22 2024 +0000

    Automatic changelog for PR cmss13-devs#5892 [ci skip]

commit 78fe2df
Author: Drathek <[email protected]>
Date:   Fri Mar 8 07:13:40 2024 -0800

    Fix LateInitialize not occurring for poddoors for relativewall_neighbours (cmss13-devs#5892)

    # About the pull request

    This PR is a followup to cmss13-devs#5821 where I forgot to check if LateInitialize
    was occurring since it requires a hint to do so. Previously they would
    call the proc after a timer, but it made more sense to do so in
    LateInitialize. However, I am not able to find anywhere this even
    visually has any effect so I'm not sure its necessary for the doors to
    be calling `relativewall_neighbours`.

    # Explain why it's good for the game

    Fixes dead code.

    # Testing Photographs and Procedure
    <details>
    <summary>Screenshots & Videos</summary>

    Put screenshots and videos here with an empty line between the
    screenshots and the `<details>` tags.

    </details>

    # Changelog
    🆑 Drathek
    fix: Fix pod doors no longer updating adjacent tiles
    /🆑
  • Loading branch information
Johannes2262 committed Mar 12, 2024
1 parent 35d3089 commit 5f2697b
Show file tree
Hide file tree
Showing 24 changed files with 238 additions and 109 deletions.
6 changes: 4 additions & 2 deletions code/controllers/subsystem/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ Frequency range: 1200 to 1600
Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking)
*/

#define UNIVERSAL_FREQ 1

#define MIN_FREE_FREQ 1201 // -------------------------------------------------

//Misc channels
Expand Down Expand Up @@ -327,11 +329,11 @@ SUBSYSTEM_DEF(radio)
if(length(extra_zs))
target_zs += extra_zs
for(var/obj/structure/machinery/telecomms/T as anything in tcomm_machines_ground)
if(!length(T.freq_listening) || (frequency in T.freq_listening))
if((UNIVERSAL_FREQ in T.freq_listening) || (frequency in T.freq_listening))
target_zs += SSmapping.levels_by_trait(ZTRAIT_GROUND)
break
for(var/obj/structure/machinery/telecomms/T as anything in tcomm_machines_almayer)
if(!length(T.freq_listening) || (frequency in T.freq_listening))
if((UNIVERSAL_FREQ in T.freq_listening) || (frequency in T.freq_listening))
target_zs += SSmapping.levels_by_trait(ZTRAIT_MARINE_MAIN_SHIP)
target_zs += SSmapping.levels_by_trait(ZTRAIT_RESERVED)
break
Expand Down
54 changes: 27 additions & 27 deletions code/game/machinery/ARES/ARES_interface.dm
Original file line number Diff line number Diff line change
Expand Up @@ -218,17 +218,17 @@
return

playsound(src, "keyboard_alt", 15, 1)
var/mob/living/carbon/human/operator = ui.user

switch (action)
if("go_back")
if(!last_menu)
return to_chat(usr, SPAN_WARNING("Error, no previous page detected."))
return to_chat(operator, SPAN_WARNING("Error, no previous page detected."))
var/temp_holder = current_menu
current_menu = last_menu
last_menu = temp_holder

if("login")
var/mob/living/carbon/human/operator = usr
var/obj/item/card/id/idcard = operator.get_active_hand()
if(istype(idcard))
authentication = get_ares_access(idcard)
Expand All @@ -239,22 +239,22 @@
authentication = get_ares_access(idcard)
last_login = idcard.registered_name
else
to_chat(usr, SPAN_WARNING("You require an ID card to access this terminal!"))
to_chat(operator, SPAN_WARNING("You require an ID card to access this terminal!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(authentication)
datacore.interface_access_list += "[last_login] at [worldtime2text()], Access Level [authentication] - [ares_auth_to_text(authentication)]."
current_menu = "main"

if("sudo")
var/new_user = tgui_input_text(usr, "Enter Sudo Username", "Sudo User", encode = FALSE)
var/new_user = tgui_input_text(operator, "Enter Sudo Username", "Sudo User", encode = FALSE)
if(new_user)
if(new_user == sudo_holder)
last_login = sudo_holder
sudo_holder = null
return FALSE
if(new_user == last_login)
to_chat(usr, SPAN_WARNING("Already remote logged in as this user."))
to_chat(operator, SPAN_WARNING("Already remote logged in as this user."))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
sudo_holder = last_login
Expand Down Expand Up @@ -370,9 +370,9 @@
datacore.records_talking -= conversation

if("message_ares")
var/message = tgui_input_text(usr, "What do you wish to say to ARES?", "ARES Message", encode = FALSE)
var/message = tgui_input_text(operator, "What do you wish to say to ARES?", "ARES Message", encode = FALSE)
if(message)
message_ares(message, usr, params["active_convo"])
message_ares(message, operator, params["active_convo"])

if("read_record")
var/datum/ares_record/deleted_talk/conversation = locate(params["record"])
Expand All @@ -385,90 +385,90 @@
// -- Emergency Buttons -- //
if("general_quarters")
if(!COOLDOWN_FINISHED(datacore, ares_quarters_cooldown))
to_chat(usr, SPAN_WARNING("It has not been long enough since the last General Quarters call!"))
to_chat(operator, SPAN_WARNING("It has not been long enough since the last General Quarters call!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(GLOB.security_level < SEC_LEVEL_RED)
set_security_level(SEC_LEVEL_RED, no_sound = TRUE, announce = FALSE)
shipwide_ai_announcement("ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS.", MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg')
log_game("[key_name(usr)] has called for general quarters via ARES.")
message_admins("[key_name_admin(usr)] has called for general quarters via ARES.")
log_game("[key_name(operator)] has called for general quarters via ARES.")
message_admins("[key_name_admin(operator)] has called for general quarters via ARES.")
log_ares_security("General Quarters", "[last_login] has called for general quarters via ARES.")
COOLDOWN_START(datacore, ares_quarters_cooldown, 10 MINUTES)
. = TRUE

if("evacuation_start")
if(GLOB.security_level < SEC_LEVEL_RED)
to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures."))
to_chat(operator, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures."))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE

if(SShijack.evac_admin_denied)
to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods."))
to_chat(operator, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods."))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE

if(!SShijack.initiate_evacuation())
to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!"))
to_chat(operator, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE

log_game("[key_name(usr)] has called for an emergency evacuation via ARES.")
message_admins("[key_name_admin(usr)] has called for an emergency evacuation via ARES.")
log_game("[key_name(operator)] has called for an emergency evacuation via ARES.")
message_admins("[key_name_admin(operator)] has called for an emergency evacuation via ARES.")
log_ares_security("Initiate Evacuation", "[last_login] has called for an emergency evacuation via ARES.")
. = TRUE

if("distress")
if(!SSticker.mode)
return FALSE //Not a game mode?
if(world.time < DISTRESS_TIME_LOCK)
to_chat(usr, SPAN_WARNING("You have been here for less than six minutes... what could you possibly have done!"))
to_chat(operator, SPAN_WARNING("You have been here for less than six minutes... what could you possibly have done!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(!COOLDOWN_FINISHED(datacore, ares_distress_cooldown))
to_chat(usr, SPAN_WARNING("The distress launcher is cooling down!"))
to_chat(operator, SPAN_WARNING("The distress launcher is cooling down!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(GLOB.security_level == SEC_LEVEL_DELTA)
to_chat(usr, SPAN_WARNING("The ship is already undergoing self destruct procedures!"))
to_chat(operator, SPAN_WARNING("The ship is already undergoing self destruct procedures!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(GLOB.security_level < SEC_LEVEL_RED)
to_chat(usr, SPAN_WARNING("The ship must be under red alert to launch a distress beacon!"))
to_chat(operator, SPAN_WARNING("The ship must be under red alert to launch a distress beacon!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE

for(var/client/admin in GLOB.admins)
if((R_ADMIN|R_MOD) & admin.admin_holder.rights)
playsound_client(admin,'sound/effects/sos-morse-code.ogg',10)
SSticker.mode.request_ert(usr, TRUE)
to_chat(usr, SPAN_NOTICE("A distress beacon request has been sent to USCM High Command."))
SSticker.mode.request_ert(operator, TRUE)
to_chat(operator, SPAN_NOTICE("A distress beacon request has been sent to USCM High Command."))
COOLDOWN_START(datacore, ares_distress_cooldown, COOLDOWN_COMM_REQUEST)
return TRUE

if("nuclearbomb")
if(!SSticker.mode)
return FALSE //Not a game mode?
if(world.time < NUCLEAR_TIME_LOCK)
to_chat(usr, SPAN_WARNING("It is too soon to request Nuclear Ordnance!"))
to_chat(operator, SPAN_WARNING("It is too soon to request Nuclear Ordnance!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(!COOLDOWN_FINISHED(datacore, ares_nuclear_cooldown))
to_chat(usr, SPAN_WARNING("The ordnance request frequency is garbled, wait for reset!"))
to_chat(operator, SPAN_WARNING("The ordnance request frequency is garbled, wait for reset!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
if(GLOB.security_level == SEC_LEVEL_DELTA || SSticker.mode.is_in_endgame)
to_chat(usr, SPAN_WARNING("The mission has failed catastrophically, what do you want a nuke for?!"))
to_chat(operator, SPAN_WARNING("The mission has failed catastrophically, what do you want a nuke for?!"))
playsound(src, 'sound/machines/buzz-two.ogg', 15, 1)
return FALSE
var/reason = tgui_input_text(usr, "Please enter reason nuclear ordnance is required.", "Reason for Nuclear Ordnance")
var/reason = tgui_input_text(operator, "Please enter reason nuclear ordnance is required.", "Reason for Nuclear Ordnance")
if(!reason)
return FALSE
for(var/client/admin in GLOB.admins)
if((R_ADMIN|R_MOD) & admin.admin_holder.rights)
playsound_client(admin,'sound/effects/sos-morse-code.ogg',10)
message_admins("[key_name(usr)] has requested use of Nuclear Ordnance (via ARES)! Reason: <b>[reason]</b> [CC_MARK(usr)] (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];nukeapprove=\ref[usr]'>APPROVE</A>) (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];nukedeny=\ref[usr]'>DENY</A>) [ADMIN_JMP_USER(usr)] [CC_REPLY(usr)]")
to_chat(usr, SPAN_NOTICE("A nuclear ordnance request has been sent to USCM High Command for the following reason: [reason]"))
message_admins("[key_name(operator)] has requested use of Nuclear Ordnance (via ARES)! Reason: <b>[reason]</b> [CC_MARK(operator)] (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];nukeapprove=\ref[operator]'>APPROVE</A>) (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];nukedeny=\ref[operator]'>DENY</A>) [ADMIN_JMP_USER(operator)] [CC_REPLY(operator)]")
to_chat(operator, SPAN_NOTICE("A nuclear ordnance request has been sent to USCM High Command for the following reason: [reason]"))
log_ares_security("Nuclear Ordnance Request", "[last_login] has sent a request for nuclear ordnance for the following reason: [reason]")
if(ares_can_interface())
ai_silent_announcement("[last_login] has sent a request for nuclear ordnance to USCM High Command.", ".V")
Expand Down
Loading

0 comments on commit 5f2697b

Please sign in to comment.