Skip to content

Commit

Permalink
Merge remote-tracking branch 'CMSS13/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
morrowwolf committed Oct 12, 2023
2 parents 748c3eb + 75c825a commit 4a97d5a
Show file tree
Hide file tree
Showing 25 changed files with 258 additions and 56 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/shuttles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
#define ALMAYER_DROPSHIP_LZ1 "almayer-hangar-lz1"
#define ALMAYER_DROPSHIP_LZ2 "almayer-hangar-lz2"

#define DROPSHIP_FLYBY_ID "special_flight"
#define DROPSHIP_LZ1 "dropship-lz1"
#define DROPSHIP_LZ2 "dropship-lz2"

Expand Down
13 changes: 13 additions & 0 deletions code/datums/emergency_calls/cmb.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)"
Expand Down
4 changes: 2 additions & 2 deletions code/datums/emergency_calls/inspection.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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"
Expand Down
10 changes: 7 additions & 3 deletions code/defines/procs/announcement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@

//AI shipside announcement, that uses announcement mechanic instead of talking into comms
//to ensure that all humans on ship hear it regardless of comms and power
/proc/shipwide_ai_announcement(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/interference.ogg'), signature)
/proc/shipwide_ai_announcement(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/interference.ogg'), signature, ares_logging = ARES_LOG_MAIN)
var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list
for(var/mob/T in targets)
if(isobserver(T))
Expand All @@ -136,8 +136,12 @@
if(!isnull(signature))
message += "<br><br><i> Signed by, <br> [signature]</i>"
var/datum/ares_link/link = GLOB.ares_link
if(link.interface && !(link.interface.inoperable()))
link.log_ares_announcement(title, message)
if(ares_can_log())
switch(ares_logging)
if(ARES_LOG_MAIN)
link.log_ares_announcement(title, message)
if(ARES_LOG_SECURITY)
link.log_ares_security(title, message)

announcement_helper(message, title, targets, sound_to_play)

Expand Down
2 changes: 1 addition & 1 deletion code/game/area/areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
initialize_power()

/area/Initialize(mapload, ...)
icon_state = "" //Used to reset the icon overlay, I assume.
icon = null
layer = AREAS_LAYER
uid = ++global_uid
. = ..()
Expand Down
41 changes: 41 additions & 0 deletions code/game/objects/items/handheld_distress_beacon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)] (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];distress_cmb=\ref[user]'>SEND MARINE QRF</A>) (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];distress_cmb_alt=\ref[user]'>SEND CMB TEAM</A>) (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];deny_cmb=\ref[user]'>DENY</A>) [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()
2 changes: 2 additions & 0 deletions code/game/objects/structures/props.dm
Original file line number Diff line number Diff line change
Expand Up @@ -810,8 +810,10 @@
var/obj/item/stack/sheet/wood/fuel = attacking_item
if(remaining_fuel >= initial(remaining_fuel))
to_chat(user, SPAN_NOTICE("You cannot fuel [src] further."))
return
if(!fuel.use(1))
to_chat(SPAN_NOTICE("You do not have enough [attacking_item] to fuel [src]."))
return
visible_message(SPAN_NOTICE("[user] fuels [src] with [fuel]."))
remaining_fuel++

Expand Down
91 changes: 84 additions & 7 deletions code/game/turfs/light.dm
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
#define LIGHT_FLOOR_COLOR_BLUE 0
#define LIGHT_FLOOR_COLOR_RED 1
#define LIGHT_FLOOR_COLOR_GREEN 2
#define LIGHT_FLOOR_COLOR_YELLOW 3
#define LIGHT_FLOOR_COLOR_PURPLE 4
#define LIGHT_FLOOR_COLOR_WHITE 5

/turf/open/floor/light
name = "light floor"
desc = "Beware of breakdancing on these tiles, glass shards embedded in the head is not a fun time."
icon_state = "light_on"
tile_type = /obj/item/stack/tile/light
var/on = TRUE
var/state = 0
var/state = LIGHT_FLOOR_COLOR_BLUE

/turf/open/floor/light/get_examine_text(mob/user)
. = ..()
. += "[src] is [broken ? "broken, and requires a replacement lightbulb":"[on ? "on" : "off"]"]."

/turf/open/floor/light/is_light_floor()
return TRUE
Expand All @@ -12,22 +24,22 @@
. = ..()
if(on && !broken) //manages color, I feel like this switch is a sin.
switch(state)
if(0)
if(LIGHT_FLOOR_COLOR_BLUE)
icon_state = "light_on"
set_light(5)
if(1)
if(LIGHT_FLOOR_COLOR_RED)
icon_state = "light_on-r"
set_light(5)
if(2)
if(LIGHT_FLOOR_COLOR_GREEN)
icon_state = "light_on-g"
set_light(5)
if(3)
if(LIGHT_FLOOR_COLOR_YELLOW)
icon_state = "light_on-y"
set_light(5)
if(4)
if(LIGHT_FLOOR_COLOR_PURPLE)
icon_state = "light_on-p"
set_light(5)
if(5,-1)
if(LIGHT_FLOOR_COLOR_WHITE,-1) //change this later
icon_state = "light_on-w"
set_light(5)
state = -1
Expand Down Expand Up @@ -84,3 +96,68 @@
broken = TRUE
update_icon()
return XENO_ATTACK_ACTION

/turf/open/floor/light/red
icon_state = "light_on-r"
state = LIGHT_FLOOR_COLOR_RED

/turf/open/floor/light/green
icon_state = "light_on-g"
state = LIGHT_FLOOR_COLOR_GREEN

/turf/open/floor/light/yellow
icon_state = "light_on-y"
state = LIGHT_FLOOR_COLOR_YELLOW

/turf/open/floor/light/purple
icon_state = "light_on-p"
state = LIGHT_FLOOR_COLOR_PURPLE

/turf/open/floor/light/white
icon_state = "light_on-w"
state = LIGHT_FLOOR_COLOR_WHITE

/turf/open/floor/light/off
icon_state = "light_off"
on = FALSE

/turf/open/floor/light/off/red
state = LIGHT_FLOOR_COLOR_RED

/turf/open/floor/light/off/green
state = LIGHT_FLOOR_COLOR_GREEN

/turf/open/floor/light/off/yellow
state = LIGHT_FLOOR_COLOR_YELLOW

/turf/open/floor/light/off/purple
state = LIGHT_FLOOR_COLOR_PURPLE

/turf/open/floor/light/off/white
state = LIGHT_FLOOR_COLOR_WHITE

/turf/open/floor/light/broken
icon_state = "light_broken"
broken = TRUE

/turf/open/floor/light/broken/red
state = LIGHT_FLOOR_COLOR_RED

/turf/open/floor/light/broken/green
state = LIGHT_FLOOR_COLOR_GREEN

/turf/open/floor/light/broken/yellow
state = LIGHT_FLOOR_COLOR_YELLOW

/turf/open/floor/light/broken/purple
state = LIGHT_FLOOR_COLOR_PURPLE

/turf/open/floor/light/broken/white
state = LIGHT_FLOOR_COLOR_WHITE

#undef LIGHT_FLOOR_COLOR_BLUE
#undef LIGHT_FLOOR_COLOR_RED
#undef LIGHT_FLOOR_COLOR_GREEN
#undef LIGHT_FLOOR_COLOR_YELLOW
#undef LIGHT_FLOOR_COLOR_PURPLE
#undef LIGHT_FLOOR_COLOR_WHITE
36 changes: 35 additions & 1 deletion code/modules/admin/topic/topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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("<b>ADMINS/MODS: \red [src.owner] replied to [key_name(H)]'s USCM message with: \blue \")[input]\"</b>"))
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 <b>\"[input]\"</b>"))
to_chat(H, SPAN_DANGER("You hear something crackle in your headset before a voice speaks, please stand by for a message:\" \blue <b>\"[input]\"</b>"))

else if(href_list["SyndicateReply"])
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
Expand Down Expand Up @@ -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... (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];distresscancel=\ref[usr]'>CANCEL</A>)")
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... (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];distresscancel=\ref[usr]'>CANCEL</A>)")
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... (<A HREF='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];distresscancel=\ref[usr]'>CANCEL</A>)")
Expand Down Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions code/modules/client/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1696,6 +1696,9 @@ var/const/MAX_SAVE_SLOTS = 10

if("origin")
var/choice = tgui_input_list(user, "Please choose your character's origin.", "Origin Selection", GLOB.player_origins)
var/datum/origin/picked_choice = GLOB.origins[choice]
if(tgui_alert(user, "You've selected [picked_choice.name]. [picked_choice.desc]", "Selected Origin", list("Confirm", "Cancel")) == "Cancel")
return
if(choice)
origin = choice

Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/glasses/glasses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@

/obj/item/clothing/glasses/science/prescription
name = "prescription reagent scanner HUD goggles"
desc = "These goggles are probably of use to someone who isn't holding a rifle and actively seeking to lower their combat life expectancy. Contains prescription lenses."
desc = "These goggles are probably of use to someone who isn't holding a rifle and actively seeking to lower their combat life expectancy. Contains prescription lenses."
prescription = TRUE

/obj/item/clothing/glasses/science/get_examine_text(mob/user)
Expand Down Expand Up @@ -414,7 +414,7 @@
/obj/item/clothing/glasses/mgoggles/v2
name = "M1A1 marine ballistic goggles"
desc = "Newer issue USCM goggles. While commonly found mounted atop M10 pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes. This version has larger lenses."
icon_state = "mgoggles2_down"
icon_state = "mgoggles2"
active_icon_state = "mgoggles2_down"
inactive_icon_state = "mgoggles2"

Expand Down
2 changes: 1 addition & 1 deletion code/modules/gear_presets/cmb.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
3 changes: 1 addition & 2 deletions code/modules/paperwork/paperbin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@
/obj/item/paper_bin/MouseDrop(atom/over_object)
if(over_object == usr && ishuman(usr) && !usr.is_mob_restrained() && !usr.stat && (loc == usr || in_range(src, usr)))
if(!usr.get_active_hand()) //if active hand is empty
attack_hand(usr, 1, 1)

usr.put_in_hands(src)
return

/obj/item/paper_bin/attack_hand(mob/user)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/projectiles/guns/shotguns.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1278,7 +1278,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"
Expand Down
Loading

0 comments on commit 4a97d5a

Please sign in to comment.