diff --git a/code/datums/emergency_calls/cmb.dm b/code/datums/emergency_calls/cmb.dm index 777ad322befc..a49c0a4ce273 100644 --- a/code/datums/emergency_calls/cmb.dm +++ b/code/datums/emergency_calls/cmb.dm @@ -100,6 +100,19 @@ to_chat(M, SPAN_BOLD("Corporate Officers chase after paychecks and promotions, but you are motivated to do your sworn duty and care for the population, no matter how far or isolated a colony may be.")) to_chat(M, SPAN_BOLD("Despite being stretched thin, the stalwart oath of the Marshals has continued to keep communities safe, with the CMB well respected by many. You are a representation of that oath, serve with distinction.")) + +// A Nearby Colonial Marshal patrol team responding to Marshals in Distress. +/datum/emergency_call/cmb/alt + name = "CMB - Patrol Team - Marshals in Distress (Friendly)" + mob_max = 5 + mob_min = 1 + probability = 0 + +/datum/emergency_call/cmb/alt/New() + ..() + arrival_message = "CMB Team, this is Anchorpoint Station. We have confirmed you are in distress. Routing nearby units to assist!" + objectives = "Patrol Unit 5807, we have nearby Marshals in Distress! Locate and assist them immediately." + // Anchorpoint Station Colonial Marines, use this primarily for reinforcing or evacuating the CMB, as the CMB themselves are not equipped to handle heavy engagements. /datum/emergency_call/cmb/anchorpoint name = "CMB - Anchorpoint Station Colonial Marine QRF (Friendly)" diff --git a/code/datums/emergency_calls/inspection.dm b/code/datums/emergency_calls/inspection.dm index 4c33d7d9bfa3..ad0200339952 100644 --- a/code/datums/emergency_calls/inspection.dm +++ b/code/datums/emergency_calls/inspection.dm @@ -183,7 +183,7 @@ /datum/emergency_call/inspection_cmb/New() ..() - arrival_message = "[MAIN_SHIP_NAME], This is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, a CMB transport vessel is preparing to board you, submitting Federal docking clearances now. Standby." + arrival_message = "[MAIN_SHIP_NAME], this is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, a CMB transport vessel is preparing to board you, submitting Federal docking clearances now. Standby." objectives = "Get your instructions from the CMB Office at Anchorpoint Station, and carry out your orders. Ensure that Colonial assets are safe and in your custody. Do not enforce or override Marine Law on a Marine Ship unless requested, as it's outside of your juristiction." will_spawn_icc_liaison = prob(90) @@ -265,7 +265,7 @@ to_chat(M, SPAN_BOLD("Despite being stretched thin, the stalwart oath of the Marshals has continued to keep communities safe, with the CMB well respected by many. You are a representation of that oath, serve with distinction.")) /datum/emergency_call/inspection_cmb/black_market - name = "Inspection - Colonial Marshal Ledger Investigation Team" + name = "Inspection - Colonial Marshals Ledger Investigation Team" mob_max = 3 //Marshal, Deputy, ICC CL mob_min = 2 shuttle_id = "Distress_PMC" diff --git a/code/game/objects/items/handheld_distress_beacon.dm b/code/game/objects/items/handheld_distress_beacon.dm index d3f99134cd23..699c45c256b2 100644 --- a/code/game/objects/items/handheld_distress_beacon.dm +++ b/code/game/objects/items/handheld_distress_beacon.dm @@ -38,3 +38,44 @@ active = TRUE update_icon() + +/// CMB distress beacon held by CMB Marshal for signalling distress to Anchorpoint Station +/obj/item/handheld_distress_beacon_CMB + name = "\improper CMB handheld distress beacon" + desc = "An emergency beacon. This one is branded with a Colonial Marshal Bureau star and 'ANCHORPOINT STATION' is etched in stencil on the side. This device is issued to CMB Marshals and features an extended relay antenna." + icon = 'icons/obj/items/handheld_distress_beacon.dmi' + icon_state = "beacon_inactive" + w_class = SIZE_SMALL + +/// whether or not the beacon is turned on, when activated sends message to admins requesting Anchorpoint ERT and changes sprite + var/active = FALSE + +/obj/item/handheld_distress_beacon_CMB/get_examine_text(mob/user) + . = ..() + + if(active) + . += "The beacon has been activated!" + +/obj/item/handheld_distress_beacon_CMB/update_icon() + . = ..() + + if(active) + icon_state = "beacon_active" + else + icon_state = initial(icon_state) + +/obj/item/handheld_distress_beacon_CMB/attack_self(mob/user) + . = ..() + + if(active) + to_chat(user, "[src] is already active!") + return + + for(var/client/client in GLOB.admins) + if((R_ADMIN|R_MOD) & client.admin_holder.rights) + playsound_client(client,'sound/effects/sos-morse-code.ogg',10) + message_admins("[key_name(user)] has signalled CMB in distress, and requests reinforcements! [CC_MARK(user)] (SEND MARINE QRF) (SEND CMB TEAM) (DENY) [ADMIN_JMP_USER(user)] [CC_REPLY(user)]") + to_chat(user, SPAN_NOTICE("The CMB distress beacon flashes red, indicating that the device has been activated and is transmitting.")) + + active = TRUE + update_icon() diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index bb7755aa41b0..31f99870fe43 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -1243,7 +1243,7 @@ for(var/client/X in GLOB.admins) if((R_ADMIN|R_MOD) & X.admin_holder.rights) to_chat(X, SPAN_STAFF_IC("ADMINS/MODS: \red [src.owner] replied to [key_name(H)]'s USCM message with: \blue \")[input]\"")) - to_chat(H, SPAN_DANGER("You hear something crackle in your headset before a voice speaks, please stand by for a message from USCM:\" \blue \"[input]\"")) + to_chat(H, SPAN_DANGER("You hear something crackle in your headset before a voice speaks, please stand by for a message:\" \blue \"[input]\"")) else if(href_list["SyndicateReply"]) var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"]) @@ -1904,6 +1904,22 @@ addtimer(CALLBACK(src, PROC_REF(accept_ert), usr, locate(href_list["distress"])), 10 SECONDS) //unanswered_distress -= ref_person + if(href_list["distress_cmb"]) //CMB distress signal, activates Anchorpoint Marine QRF to assist/rescue Colonial Marshals in distress + distress_cancel = FALSE + message_admins("[key_name_admin(usr)] has opted to SEND the Anchorpoint Station Colonial Marine QRF to assist the CMB! Launching in 10 seconds... (CANCEL)") + addtimer(CALLBACK(src, PROC_REF(accept_cmb_ert), usr, locate(href_list["distress"])), 10 SECONDS) + + if(href_list["distress_cmb_alt"]) //CMB distress signal, activates a nearby CMB Patrol Team to assist/rescue Colonial Marshals in distress + distress_cancel = FALSE + message_admins("[key_name_admin(usr)] has opted to SEND a nearby CMB Patrol Team to assist the CMB! Launching in 10 seconds... (CANCEL)") + addtimer(CALLBACK(src, PROC_REF(accept_cmb_alt_ert), usr, locate(href_list["distress"])), 10 SECONDS) + + if(href_list["deny_cmb"]) // Anchorpoint-deny. The distress call is denied, citing unavailable forces + var/mob/ref_person = locate(href_list["deny_cmb"]) + to_chat(ref_person, "A voice barely crackles through the static: CMB Team, this is Anchorpoint Station. No can do, QRF currently dispatched elsewhere, relaying distress. Sorry. Good luck, out.") + log_game("[key_name_admin(usr)] has denied a distress beacon, requested by [key_name_admin(ref_person)]") + message_admins("[key_name_admin(usr)] has denied a distress beacon, requested by [key_name_admin(ref_person)]", 1) + if(href_list["distress_pmc"]) //Wey-Yu specific PMC distress signal for chem retrieval ERT distress_cancel = FALSE message_admins("[key_name_admin(usr)] has opted to SEND the distress beacon! Launching in 10 seconds... (CANCEL)") @@ -2092,6 +2108,24 @@ log_game("[key_name_admin(approver)] has sent a randomized distress beacon, requested by [key_name_admin(ref_person)]") message_admins("[key_name_admin(approver)] has sent a randomized distress beacon, requested by [key_name_admin(ref_person)]") +/// tells admins which admin has sent the Anchorpoint ERT in response to CMB distress +/datum/admins/proc/accept_cmb_ert(mob/approver, mob/ref_person) + if(distress_cancel) + return + distress_cancel = TRUE + SSticker.mode.get_specific_call("CMB - Anchorpoint Station Colonial Marine QRF (Friendly)", FALSE, FALSE) + log_game("[key_name_admin(approver)] has sent an Anchorpoint Station Colonial Marine QRF response, requested by [key_name_admin(ref_person)]") + message_admins("[key_name_admin(approver)] has sent an Anchorpoint Station Colonial Marine QRF response, requested by [key_name_admin(ref_person)]") + +/// tells admins which admin has sent the CMB ERT in response to CMB distress +/datum/admins/proc/accept_cmb_alt_ert(mob/approver, mob/ref_person) + if(distress_cancel) + return + distress_cancel = TRUE + SSticker.mode.get_specific_call("CMB - Patrol Team - Marshals in Distress (Friendly)", FALSE, FALSE) + log_game("[key_name_admin(approver)] has sent a CMB Patrol Team distress response, requested by [key_name_admin(ref_person)]") + message_admins("[key_name_admin(approver)] has sent a CMB Patrol Team distress response, requested by [key_name_admin(ref_person)]") + /datum/admins/proc/accept_pmc_ert(mob/approver, mob/ref_person) if(distress_cancel) return diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index 867669463569..3ce7a6ec281d 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -185,7 +185,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/holdout, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15/rubber, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handheld_distress_beacon_CMB, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/radio, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/camera, WEAR_IN_BACK) diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index 9a4b1551736c..026ea4fac48c 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -1274,7 +1274,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717 name = "\improper M37-17 pump shotgun" - desc = "A military version of the iconic HG 37-12, this design can fit one extra shell in each of its dual-tube internal magazines, and fires shells with increased velocity, resulting in more damage. Issued to select USCM vessels out on the rim. You can switch the active internal magazine by toggling the shotgun tube." + desc = "A military version of the iconic HG 37-12, this design can fit one extra shell in each of its dual-tube internal magazines, and fires shells with increased velocity, resulting in more damage. Issued to select USCM vessels and stations in the outer veil. A button on the side toggles the internal tubes." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m3717" item_state = "m3717"