diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm
index d283656cca..e650ebacb8 100644
--- a/code/__DEFINES/shuttles.dm
+++ b/code/__DEFINES/shuttles.dm
@@ -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"
diff --git a/code/datums/emergency_calls/cmb.dm b/code/datums/emergency_calls/cmb.dm
index 777ad322be..a49c0a4ce2 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 4c33d7d9bf..ad02003399 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/defines/procs/announcement.dm b/code/defines/procs/announcement.dm
index 5223d63b8e..60bf117a6b 100644
--- a/code/defines/procs/announcement.dm
+++ b/code/defines/procs/announcement.dm
@@ -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))
@@ -136,8 +136,12 @@
if(!isnull(signature))
message += "
Signed by,
[signature]"
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)
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 826b2dc058..c81da5556e 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -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
. = ..()
diff --git a/code/game/objects/items/handheld_distress_beacon.dm b/code/game/objects/items/handheld_distress_beacon.dm
index d3f99134cd..699c45c256 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/game/objects/structures/props.dm b/code/game/objects/structures/props.dm
index 9eea571961..bd5610487e 100644
--- a/code/game/objects/structures/props.dm
+++ b/code/game/objects/structures/props.dm
@@ -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++
diff --git a/code/game/turfs/light.dm b/code/game/turfs/light.dm
index 219e79e93e..e8b7038bcb 100644
--- a/code/game/turfs/light.dm
+++ b/code/game/turfs/light.dm
@@ -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
@@ -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
@@ -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
diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm
index bb7755aa41..31f99870fe 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/client/preferences.dm b/code/modules/client/preferences.dm
index 84a3516333..554ba28e41 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -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
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index 779d8212f3..a6462b7a92 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -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)
@@ -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"
diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm
index 8676694635..3ce7a6ec28 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/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 521045a567..eafbb3c12c 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -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)
diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm
index edecce85cc..c3b4906c1b 100644
--- a/code/modules/projectiles/guns/shotguns.dm
+++ b/code/modules/projectiles/guns/shotguns.dm
@@ -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"
diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm
index bb9268c379..fe2eed914f 100644
--- a/code/modules/shuttle/computers/dropship_computer.dm
+++ b/code/modules/shuttle/computers/dropship_computer.dm
@@ -175,6 +175,9 @@
return
to_chat(xeno, SPAN_NOTICE("You command the metal bird to come down. Clever girl."))
xeno_announcement(SPAN_XENOANNOUNCE("Your Queen has commanded the metal bird to the hive at [linked_lz]."), xeno.hivenumber, XENO_GENERAL_ANNOUNCE)
+ var/datum/ares_link/link = GLOB.ares_link
+ link.log_ares_flight("Unknown", "Remote launch signal for [shuttle.name] received. Authentication garbled.")
+ link.log_ares_security("Security Alert", "Remote launch signal for [shuttle.name] received. Authentication garbled.")
return
if(shuttle.destination.id != linked_lz)
to_chat(xeno, "The shuttle not ready. The screen reads T-[shuttle.timeLeft(10)]. Have patience.")
@@ -313,13 +316,22 @@
.["primary_lz"] = SSticker.mode.active_lz?.linked_lz
if(shuttle.destination)
.["target_destination"] = shuttle.in_flyby? "Flyby" : shuttle.destination.name
- .["destinations"] = list()
.["door_status"] = is_remote ? list() : shuttle.get_door_data()
-
.["flight_configuration"] = is_set_flyby ? "flyby" : "ferry"
.["has_flyby_skill"] = skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)
+ .["destinations"] = list()
+ // add flight
+ .["destinations"] += list(
+ list(
+ "id" = DROPSHIP_FLYBY_ID,
+ "name" = "Flyby",
+ "available" = TRUE,
+ "error" = FALSE
+ )
+ )
+
for(var/obj/docking_port/stationary/dock in compatible_landing_zones)
var/dock_reserved = FALSE
for(var/obj/docking_port/mobile/other_shuttle in SSshuttle.mobile)
@@ -355,15 +367,16 @@
to_chat(usr, SPAN_WARNING("You can't move to a new destination right now."))
return TRUE
- if(is_set_flyby && !skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT))
- to_chat(user, SPAN_WARNING("You don't have the skill to perform a flyby."))
- return FALSE
var/is_optimised = FALSE
// automatically apply optimisation if user is a pilot
if(skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT))
is_optimised = TRUE
update_equipment(is_optimised)
- if(is_set_flyby)
+ var/dock_id = params["target"]
+ if(dock_id == DROPSHIP_FLYBY_ID)
+ if(!skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT))
+ to_chat(user, SPAN_WARNING("You don't have the skill to perform a flyby."))
+ return FALSE
to_chat(user, SPAN_NOTICE("You begin the launch sequence for a flyby."))
link.log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flyby.")
var/log = "[key_name(user)] launched the dropship [src.shuttleId] on flyby."
@@ -371,19 +384,19 @@
log_interact(user, msg = "[log]")
shuttle.send_for_flyby()
return TRUE
- var/dockId = params["target"]
+
var/list/local_data = ui_data(user)
var/found = FALSE
playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1)
for(var/destination in local_data["destinations"])
- if(destination["id"] == dockId)
+ if(destination["id"] == dock_id)
found = TRUE
break
if(!found)
- log_admin("[key_name(user)] may be attempting a href dock exploit on [src] with target location \"[dockId]\"")
- to_chat(user, SPAN_WARNING("The [dockId] dock is not available at this time."))
+ log_admin("[key_name(user)] may be attempting a href dock exploit on [src] with target location \"[dock_id]\"")
+ to_chat(user, SPAN_WARNING("The [dock_id] dock is not available at this time."))
return
- var/obj/docking_port/stationary/dock = SSshuttle.getDock(dockId)
+ var/obj/docking_port/stationary/dock = SSshuttle.getDock(dock_id)
var/dock_reserved = FALSE
for(var/obj/docking_port/mobile/other_shuttle in SSshuttle.mobile)
if(dock == other_shuttle.destination)
diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm
index 363fd8bf28..9d910882d1 100644
--- a/code/modules/shuttle/shuttles/dropship.dm
+++ b/code/modules/shuttle/shuttles/dropship.dm
@@ -100,7 +100,7 @@
var/name = "Unidentified Lifesigns"
var/input = "Unidentified lifesigns detected onboard. Recommendation: lockdown of exterior access ports, including ducting and ventilation."
- shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg')
+ shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg', ares_logging = ARES_LOG_SECURITY)
set_security_level(SEC_LEVEL_RED)
return
diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm
index 426d90c145..7ec4b2eb73 100644
--- a/code/modules/shuttles/marine_ferry.dm
+++ b/code/modules/shuttles/marine_ferry.dm
@@ -230,7 +230,7 @@
if(X && X.stat != DEAD)
var/name = "Unidentified Lifesigns"
var/input = "Unidentified lifesigns detected onboard. Recommendation: lockdown of exterior access ports, including ducting and ventilation."
- shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg')
+ shipwide_ai_announcement(input, name, 'sound/AI/unidentified_lifesigns.ogg', ares_logging = ARES_LOG_SECURITY)
set_security_level(SEC_LEVEL_RED)
break
diff --git a/html/changelogs/AutoChangeLog-pr-4598.yml b/html/changelogs/AutoChangeLog-pr-4598.yml
deleted file mode 100644
index 4d7973cbf2..0000000000
--- a/html/changelogs/AutoChangeLog-pr-4598.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "CapCamIII"
-delete-after: True
-changes:
- - rscdel: "XO can no longer take a sword as their personal weapon in their vendor."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-4601.yml b/html/changelogs/AutoChangeLog-pr-4601.yml
deleted file mode 100644
index 4f4c63c8d6..0000000000
--- a/html/changelogs/AutoChangeLog-pr-4601.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "BeagleGaming1"
-delete-after: True
-changes:
- - code_imp: "prop guns will copy attachments"
\ No newline at end of file
diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml
index 5e0d2a5e50..a511276351 100644
--- a/html/changelogs/archive/2023-10.yml
+++ b/html/changelogs/archive/2023-10.yml
@@ -118,3 +118,38 @@
- rscadd: tactical shotguns now come standard with their stock. Yes you can remove
it if you dont want it
- rscadd: new tactical shotgun stock sprite done by esselnek
+2023-10-10:
+ BeagleGaming1:
+ - code_imp: prop guns will copy attachments
+ CapCamIII:
+ - rscdel: XO can no longer take a sword as their personal weapon in their vendor.
+ realforest2001:
+ - rscadd: Added missing flight record for Queen dropship summon.
+ - code_imp: Added security record option for shipwide_ai_announcement.
+ - rscadd: Added security records for unidentified lifeforms announcement.
+2023-10-11:
+ BeagleGaming1:
+ - rscadd: Light floor can be examined to tell if it is on, off, or broken.
+ - code_imp: Light floor subtypes for easier mapping
+ Birdtalon:
+ - bugfix: You can now pick up paper bins
+ - bugfix: Campfires stop consuming wood when full
+ Zonespace27:
+ - rscdel: Predators can no longer see their or others cross-round honor count.
+ irRegularGuy646:
+ - bugfix: fixed new goggle's on helmet sprite
+2023-10-12:
+ QuickLode:
+ - rscadd: Adds a handheld distress beacon for the Colonial Marshal. They can use
+ this to signal distress which in turn allows reinforcements in the form of Anchorpoint
+ Marine QRF or nearby CMB teams. Admins do the final check.
+ - rscadd: Adds a CMB Patrol Team which responds to "Marshals in Distress" call.
+ - admin: headset admin response no longer specifies USCM origin(as this is used
+ for USCM, WY, and now CMB)
+ - spellcheck: fixes a CMB typo in response message. Also a miniscule change to HG
+ 37-12 desc.
+ - spellcheck: fixes 2 misc typos in CMB Inspections
+ harryob:
+ - rscadd: origin descriptions are now displayed when selecting an origin
+ mullenpaul:
+ - ui: tweaked flyby controls to make them in line with other destinations
diff --git a/icons/mob/humans/onmob/eyes.dmi b/icons/mob/humans/onmob/eyes.dmi
index bda5bec0f0..c4d743f61e 100644
Binary files a/icons/mob/humans/onmob/eyes.dmi and b/icons/mob/humans/onmob/eyes.dmi differ
diff --git a/icons/mob/humans/onmob/helmet_garb.dmi b/icons/mob/humans/onmob/helmet_garb.dmi
index 9e4cbf4629..cc91c47fe2 100644
Binary files a/icons/mob/humans/onmob/helmet_garb.dmi and b/icons/mob/humans/onmob/helmet_garb.dmi differ
diff --git a/icons/mob/humans/onmob/mask.dmi b/icons/mob/humans/onmob/mask.dmi
index 6f7e998139..896da0201b 100644
Binary files a/icons/mob/humans/onmob/mask.dmi and b/icons/mob/humans/onmob/mask.dmi differ
diff --git a/nano/templates/clan_menu.tmpl b/nano/templates/clan_menu.tmpl
index 98ac3057a1..cd987e9079 100644
--- a/nano/templates/clan_menu.tmpl
+++ b/nano/templates/clan_menu.tmpl
@@ -46,7 +46,7 @@
}
#clan_list {
- border-collapse: collapse;
+ border-collapse: collapse;
width: 100%;
}
@@ -76,9 +76,6 @@
{{:data.clan_description}}- {{if data.clan_honor != null}} -
Name | Rank | -Honor | {{if data.player_modify_ranks}}{{/if}} @@ -128,7 +124,6 @@ | {{:keys.name}} | {{:keys.rank}} | -{{:keys.honor}} | {{if data.player_rank_pos > keys.rank_pos}} {{if data.player_modify_ranks}}{{:helper.link('Set Rank', '', { 'clan_target_href' : keys.player_id, 'clan_action': 'modifyrank' })}} |
@@ -142,4 +137,4 @@
{{/if}}
---|