diff --git a/code/__DEFINES/dcs/signals/atom/signals_obj.dm b/code/__DEFINES/dcs/signals/atom/signals_obj.dm
index c850b2a52e03..35aa07a63563 100644
--- a/code/__DEFINES/dcs/signals/atom/signals_obj.dm
+++ b/code/__DEFINES/dcs/signals/atom/signals_obj.dm
@@ -2,6 +2,10 @@
// Sent after the limb has taken damage
#define COMSIG_LIMB_TAKEN_DAMAGE "limb_taken_damage"
+// From /datum/effects/bleeding/internal/process_mob() and /datum/effects/bleeding/external/process_mob()
+#define COMSIG_BLEEDING_PROCESS "bleeding_process"
+ #define COMPONENT_BLEEDING_CANCEL (1<<0)
+
/// From /obj/effect/alien/weeds/Initialize()
#define COMSIG_WEEDNODE_GROWTH_COMPLETE "weednode_growth_complete"
/// From /obj/effect/alien/weeds/Initialize()
diff --git a/code/datums/effects/bleeding.dm b/code/datums/effects/bleeding.dm
index f56efbb3c69d..4509348b0ccf 100644
--- a/code/datums/effects/bleeding.dm
+++ b/code/datums/effects/bleeding.dm
@@ -81,6 +81,8 @@
if(affected_human.chem_effect_flags & CHEM_EFFECT_NO_BLEEDING)
buffer_blood_loss = 0
return FALSE
+ if(SEND_SIGNAL(affected_human, COMSIG_BLEEDING_PROCESS, FALSE) & COMPONENT_BLEEDING_CANCEL)
+ return FALSE
affected_mob.drip(buffer_blood_loss)
buffer_blood_loss = 0
@@ -111,6 +113,8 @@
if(istype(affected_human))
if(affected_human.chem_effect_flags & CHEM_EFFECT_NO_BLEEDING)
return FALSE
+ if(SEND_SIGNAL(affected_human, COMSIG_BLEEDING_PROCESS, TRUE) & COMPONENT_BLEEDING_CANCEL)
+ return FALSE
blood_loss = max(blood_loss, 0) // Bleeding shouldn't give extra blood even if its only 1 tick
affected_mob.blood_volume = max(affected_mob.blood_volume - blood_loss, 0)
diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm
index 4988e60e0014..c195f78d2c59 100644
--- a/code/game/objects/effects/landmarks/landmarks.dm
+++ b/code/game/objects/effects/landmarks/landmarks.dm
@@ -434,6 +434,18 @@
name = "Intelligence Officer late join"
job = JOB_INTEL
+/obj/effect/landmark/late_join/police
+ name = "Military Police late join"
+ job = JOB_POLICE
+
+/obj/effect/landmark/late_join/warden
+ name = "Military Warden late join"
+ job = JOB_WARDEN
+
+/obj/effect/landmark/late_join/chief_police
+ name = "Chief Military Police late join"
+ job = JOB_CHIEF_POLICE
+
/obj/effect/landmark/late_join/Initialize(mapload, ...)
. = ..()
if(squad)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index ba7172045493..b4375531177b 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -204,6 +204,7 @@ GLOBAL_LIST_INIT(bgstate_options, list(
var/xeno_name_ban = FALSE
var/xeno_vision_level_pref = XENO_VISION_LEVEL_MID_NVG
var/playtime_perks = TRUE
+ var/show_queen_name = FALSE
var/stylesheet = "Modern"
@@ -448,6 +449,7 @@ GLOBAL_LIST_INIT(bgstate_options, list(
dat += "Xeno postfix: [display_postfix]
"
dat += "Enable Playtime Perks: [playtime_perks? "Yes" : "No"]
"
+ dat += "Show Queen Name: [show_queen_name? "Yes" : "No"]
"
dat += "Default Xeno Night Vision Level: [xeno_vision_level_pref]
"
var/tempnumber = rand(1, 999)
@@ -1859,6 +1861,9 @@ GLOBAL_LIST_INIT(bgstate_options, list(
if("playtime_perks")
playtime_perks = !playtime_perks
+ if("show_queen_name")
+ show_queen_name = !show_queen_name
+
if("be_special")
var/num = text2num(href_list["num"])
be_special ^= (1<> xeno_postfix
S["xeno_name_ban"] >> xeno_name_ban
S["playtime_perks"] >> playtime_perks
+ S["show_queen_name"] >> show_queen_name
S["xeno_vision_level_pref"] >> xeno_vision_level_pref
S["view_controller"] >> View_MC
S["observer_huds"] >> observer_huds
@@ -310,6 +311,7 @@
ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit))
auto_observe = sanitize_integer(auto_observe, 0, 1, 1)
playtime_perks = sanitize_integer(playtime_perks, 0, 1, 1)
+ show_queen_name = sanitize_integer(show_queen_name, FALSE, TRUE, FALSE)
xeno_vision_level_pref = sanitize_inlist(xeno_vision_level_pref, list(XENO_VISION_LEVEL_NO_NVG, XENO_VISION_LEVEL_MID_NVG, XENO_VISION_LEVEL_FULL_NVG), XENO_VISION_LEVEL_MID_NVG)
hear_vox = sanitize_integer(hear_vox, FALSE, TRUE, TRUE)
hide_statusbar = sanitize_integer(hide_statusbar, FALSE, TRUE, FALSE)
@@ -428,6 +430,7 @@
S["xeno_name_ban"] << xeno_name_ban
S["xeno_vision_level_pref"] << xeno_vision_level_pref
S["playtime_perks"] << playtime_perks
+ S["show_queen_name"] << show_queen_name
S["view_controller"] << View_MC
S["observer_huds"] << observer_huds
diff --git a/code/modules/clothing/suits/marine_armor/_marine_armor.dm b/code/modules/clothing/suits/marine_armor/_marine_armor.dm
index 0ba339433fc2..138de402fbe4 100644
--- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm
+++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm
@@ -137,6 +137,7 @@
/obj/item/clothing/suit/storage/marine/update_icon(mob/user)
var/image/I
+ overlays -= armor_overlays["lamp"]
armor_overlays["lamp"] = null
if(flags_marine_armor & ARMOR_LAMP_OVERLAY)
if(flags_marine_armor & ARMOR_LAMP_ON)
diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm
index a9aec9544641..1558ebaccd92 100644
--- a/code/modules/clothing/under/marine_uniform.dm
+++ b/code/modules/clothing/under/marine_uniform.dm
@@ -527,7 +527,6 @@
worn_state = "upp_uniform"
min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_UPP
suit_restricted = list(/obj/item/clothing/suit/storage/marine/faction/UPP, /obj/item/clothing/suit/gimmick/jason, /obj/item/clothing/suit/storage/snow_suit/soviet, /obj/item/clothing/suit/storage/snow_suit/survivor, /obj/item/clothing/suit/storage/webbing)
flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE
@@ -696,7 +695,6 @@
icon_state = "colonist"
worn_state = "colonist"
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_COLONIST
/obj/item/clothing/under/colonist/workwear
name = "grey workwear"
@@ -737,7 +735,6 @@
desc = "A stylish grey-green jumpsuit - standard issue for colonists. This version appears to have the symbol of the Colonial Liberation Front emblazoned in select areas."
icon_state = "clf_uniform"
worn_state = "clf_uniform"
- sensor_faction = FACTION_CLF
/obj/item/clothing/under/colonist/ua_civvies
name = "\improper UA gray utility uniform"
@@ -745,7 +742,6 @@
icon_state = "ua_civvies"
worn_state = "ua_civvies"
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/colonist/wy_davisone
name = "\improper UA brown utility uniform"
@@ -753,7 +749,6 @@
icon_state = "wy_davisone"
worn_state = "wy_davisone"
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/colonist/white_service
name = "white service uniform"
@@ -761,7 +756,6 @@
icon_state = "CO_service"
worn_state = "CO_service"
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/colonist/wy_joliet_shopsteward
name = "steward utilities"
@@ -769,7 +763,6 @@
icon_state = "wy_joliet_shopsteward"
worn_state = "wy_joliet_shopsteward"
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/tshirt
name = "T-shirt parent object"
@@ -782,7 +775,6 @@
worn_state = "tshirt_w_br"
displays_id = FALSE
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/tshirt/gray_blu
name = "gray T-shirt and jeans"
@@ -791,7 +783,6 @@
worn_state = "tshirt_gray_blu"
displays_id = FALSE
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/tshirt/r_bla
name = "red T-shirt and black pants"
@@ -800,7 +791,6 @@
worn_state = "tshirt_r_bla"
displays_id = FALSE
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_MARINE
/obj/item/clothing/under/CM_uniform
name = "\improper Colonial Marshal uniform"
diff --git a/code/modules/clothing/under/under.dm b/code/modules/clothing/under/under.dm
index a48967d88538..effd441ab81b 100644
--- a/code/modules/clothing/under/under.dm
+++ b/code/modules/clothing/under/under.dm
@@ -16,7 +16,6 @@
armor_internaldamage = CLOTHING_ARMOR_NONE
w_class = SIZE_MEDIUM
blood_overlay_type = "uniform"
- var/sensor_faction = FACTION_MARINE
var/has_sensor = UNIFORM_HAS_SENSORS // For the crew computer
var/sensor_mode = SENSOR_MODE_LOCATION
/*
diff --git a/code/modules/cm_marines/vehicle_part_fabricator.dm b/code/modules/cm_marines/vehicle_part_fabricator.dm
index fc71763d96b3..b02c66f4f5ed 100644
--- a/code/modules/cm_marines/vehicle_part_fabricator.dm
+++ b/code/modules/cm_marines/vehicle_part_fabricator.dm
@@ -65,7 +65,7 @@
omnisentry_price += omnisentry_price_scale
icon_state = "drone_fab_active"
busy = TRUE
- addtimer(CALLBACK(src, PROC_REF(do_build_part), part_type), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(do_build_part), part_type), 3 SECONDS)
/obj/structure/machinery/part_fabricator/proc/do_build_part(part_type)
busy = FALSE
diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm
index 77efbb7ad4ef..03b647ac7677 100644
--- a/code/modules/cm_preds/yaut_bracers.dm
+++ b/code/modules/cm_preds/yaut_bracers.dm
@@ -32,7 +32,7 @@
var/charge = 1500
var/charge_max = 1500
/// The amount charged per process
- var/charge_rate = 30
+ var/charge_rate = 60
/// Cooldown on draining power from APC
var/charge_cooldown = COOLDOWN_BRACER_CHARGE
var/cloak_timer = 0
diff --git a/code/modules/cm_preds/yaut_items.dm b/code/modules/cm_preds/yaut_items.dm
index 97b0f14f5b9b..8371bfd714c5 100644
--- a/code/modules/cm_preds/yaut_items.dm
+++ b/code/modules/cm_preds/yaut_items.dm
@@ -123,7 +123,7 @@
armor_bio = CLOTHING_ARMOR_HIGH
armor_rad = CLOTHING_ARMOR_HIGH
armor_internaldamage = CLOTHING_ARMOR_HIGH
- slowdown = 1
+ slowdown = 0.75
var/speed_timer = 0
item_state_slots = list(WEAR_JACKET = "fullarmor")
allowed = list(
@@ -277,12 +277,11 @@
flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_ARMS|BODY_FLAG_FEET|BODY_FLAG_HANDS
flags_item = ITEM_PREDATOR
has_sensor = UNIFORM_HAS_SENSORS
- sensor_faction = FACTION_YAUTJA
siemens_coefficient = 0.9
min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT
armor_melee = CLOTHING_ARMOR_LOW
- armor_bullet = CLOTHING_ARMOR_LOW
+ armor_bullet = CLOTHING_ARMOR_MEDIUMLOW
armor_laser = CLOTHING_ARMOR_MEDIUM
armor_energy = CLOTHING_ARMOR_MEDIUM
armor_bomb = CLOTHING_ARMOR_MEDIUMHIGH
@@ -295,7 +294,7 @@
desc = "A set of very fine chainlink in a meshwork for comfort and utility."
armor_melee = CLOTHING_ARMOR_LOW
- armor_bullet = CLOTHING_ARMOR_LOW
+ armor_bullet = CLOTHING_ARMOR_MEDIUM
armor_laser = CLOTHING_ARMOR_MEDIUMHIGH
armor_energy = CLOTHING_ARMOR_MEDIUMHIGH
armor_bomb = CLOTHING_ARMOR_HIGH
diff --git a/code/modules/cm_preds/yaut_weapons.dm b/code/modules/cm_preds/yaut_weapons.dm
index 2ca371fa75a9..14336cbdba04 100644
--- a/code/modules/cm_preds/yaut_weapons.dm
+++ b/code/modules/cm_preds/yaut_weapons.dm
@@ -60,7 +60,7 @@
w_class = SIZE_HUGE
edge = TRUE
sharp = IS_SHARP_ITEM_ACCURATE
- flags_item = NOSHIELD|NODROP|DELONDROP|ITEM_PREDATOR
+ flags_item = NOSHIELD|NODROP|ITEM_PREDATOR
flags_equip_slot = NO_FLAGS
hitsound = 'sound/weapons/wristblades_hit.ogg'
attack_speed = 6
diff --git a/code/modules/cm_tech/implements/armor.dm b/code/modules/cm_tech/implements/armor.dm
index 0e772567ea1a..5ed344a42d8b 100644
--- a/code/modules/cm_tech/implements/armor.dm
+++ b/code/modules/cm_tech/implements/armor.dm
@@ -271,26 +271,25 @@
/obj/item/clothing/accessory/health/research_plate/coagulator/on_attached(obj/item/clothing/S, mob/living/carbon/human/user)
. = ..()
- if (user.chem_effect_flags & CHEM_EFFECT_NO_BLEEDING)
- return
- user.chem_effect_flags |= CHEM_EFFECT_NO_BLEEDING
+ RegisterSignal(user, COMSIG_BLEEDING_PROCESS, PROC_REF(cancel_bleeding))
to_chat(user, SPAN_NOTICE("You feel tickling as you activate [src]."))
+/obj/item/clothing/accessory/health/research_plate/coagulator/proc/cancel_bleeding()
+ SIGNAL_HANDLER
+ return COMPONENT_BLEEDING_CANCEL
+
/obj/item/clothing/accessory/health/research_plate/coagulator/on_removed(mob/living/carbon/human/user, obj/item/clothing/C)
. = ..()
- if (user.chem_effect_flags & CHEM_EFFECT_NO_BLEEDING)
- user.chem_effect_flags &= CHEM_EFFECT_NO_BLEEDING
- to_chat(user, SPAN_NOTICE("You feel [src] peeling off from your skin."))
- attached_uni = null
+ to_chat(user, SPAN_NOTICE("You feel [src] peeling off from your skin."))
+ UnregisterSignal(user, COMSIG_BLEEDING_PROCESS)
+ attached_uni = null
/obj/item/clothing/accessory/health/research_plate/coagulator/on_removed_sig(mob/living/carbon/human/user, slot)
. = ..()
if(. == FALSE)
return
- if(user.chem_effect_flags & CHEM_EFFECT_NO_BLEEDING)
- to_chat(user, SPAN_NOTICE("You feel [src] peeling off from your skin."))
- user.chem_effect_flags &= CHEM_EFFECT_NO_BLEEDING
- attached_uni = null
+ UnregisterSignal(user, COMSIG_BLEEDING_PROCESS)
+ attached_uni = null
/obj/item/clothing/accessory/health/research_plate/emergency_injector
name = "emergency chemical plate"
@@ -350,7 +349,7 @@
/obj/item/clothing/accessory/health/research_plate/emergency_injector/on_attached(obj/item/clothing/S, mob/living/carbon/human/user)
. = ..()
wearer = user
- activation = new /datum/action/item_action/emergency_plate/inject_chemicals(src, attached_uni)
+ activation = new /datum/action/item_action/toggle/emergency_plate/inject_chemicals(src, attached_uni)
activation.give_to(wearer)
/obj/item/clothing/accessory/health/research_plate/emergency_injector/on_removed(mob/living/user, obj/item/clothing/C)
@@ -366,7 +365,7 @@
attached_uni = null
//Action buttons
-/datum/action/item_action/emergency_plate/inject_chemicals/New(Target, obj/item/holder)
+/datum/action/item_action/toggle/emergency_plate/inject_chemicals/New(Target, obj/item/holder)
. = ..()
name = "Inject Emergency Plate"
action_icon_state = "plate_research"
diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm
index 672afa99873b..eef879e160d2 100644
--- a/code/modules/gear_presets/cmb.dm
+++ b/code/modules/gear_presets/cmb.dm
@@ -51,7 +51,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_MARINE
return ..()
//*****************************************************************************************************/
diff --git a/code/modules/gear_presets/colonist.dm b/code/modules/gear_presets/colonist.dm
index a5b33c428f2e..59b508f078af 100644
--- a/code/modules/gear_presets/colonist.dm
+++ b/code/modules/gear_presets/colonist.dm
@@ -25,7 +25,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_COLONIST
return ..()
//*****************************************************************************************************/
diff --git a/code/modules/gear_presets/contractor.dm b/code/modules/gear_presets/contractor.dm
index 2d8f4dd960fe..c0c2e7a79a03 100644
--- a/code/modules/gear_presets/contractor.dm
+++ b/code/modules/gear_presets/contractor.dm
@@ -54,7 +54,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_CONTRACTOR
return ..()
//*****************************************************************************************************/
diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm
index 063263748e02..73f8c5dc4df0 100644
--- a/code/modules/gear_presets/other.dm
+++ b/code/modules/gear_presets/other.dm
@@ -626,7 +626,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_COLONIST
new_human.job = "Zombie"
new_human.faction = faction
return ..()
diff --git a/code/modules/gear_presets/pmc.dm b/code/modules/gear_presets/pmc.dm
index 60f25442f04e..e280060cae34 100644
--- a/code/modules/gear_presets/pmc.dm
+++ b/code/modules/gear_presets/pmc.dm
@@ -50,7 +50,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_PMC
return ..()
diff --git a/code/modules/gear_presets/royal_marines.dm b/code/modules/gear_presets/royal_marines.dm
index 2e218e5292a6..f59ade2eb75b 100644
--- a/code/modules/gear_presets/royal_marines.dm
+++ b/code/modules/gear_presets/royal_marines.dm
@@ -41,7 +41,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_TWE
return ..()
//*****************************************************************************************************/
diff --git a/code/modules/gear_presets/survivors/survivors.dm b/code/modules/gear_presets/survivors/survivors.dm
index 1378bb6f6dbb..02cdf5cb9243 100644
--- a/code/modules/gear_presets/survivors/survivors.dm
+++ b/code/modules/gear_presets/survivors/survivors.dm
@@ -105,7 +105,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_COLONIST
return ..()
/*
diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm
index db82e44ea890..6b6d7eb2b89d 100644
--- a/code/modules/gear_presets/synths.dm
+++ b/code/modules/gear_presets/synths.dm
@@ -164,7 +164,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_COLONIST
return ..()
/datum/equipment_preset/synth/survivor/medical_synth
diff --git a/code/modules/gear_presets/wy_goons.dm b/code/modules/gear_presets/wy_goons.dm
index a15e9b443302..859a9f33202a 100644
--- a/code/modules/gear_presets/wy_goons.dm
+++ b/code/modules/gear_presets/wy_goons.dm
@@ -51,7 +51,6 @@
var/obj/item/clothing/under/uniform = new_human.w_uniform
if(istype(uniform))
uniform.has_sensor = UNIFORM_HAS_SENSORS
- uniform.sensor_faction = FACTION_WY
return ..()
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm
index 8fe101a08dfa..69fd4292323f 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm
@@ -171,6 +171,11 @@
var/obj/structure/window/framed/framed_window = structure_blocker
if(!framed_window.unslashable)
framed_window.deconstruct(disassembled = FALSE)
+ if(istype(structure_blocker, /obj/structure/fence))
+ var/obj/structure/fence/fence = structure_blocker
+ if(!fence.unslashable)
+ fence.health -= 50
+ fence.healthcheck()
if(structure_blocker.opacity)
blocked = TRUE
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
index 0cbb6bec8b35..5c934693d695 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
@@ -478,6 +478,10 @@
if(client)
name_client_prefix = "[(client.xeno_prefix||client.xeno_postfix) ? client.xeno_prefix : "XX"]-"
name_client_postfix = client.xeno_postfix ? ("-"+client.xeno_postfix) : ""
+ if(client?.prefs?.show_queen_name)
+ name += " (" + replacetext((name_client_prefix + name_client_postfix), "-","") + ")"
+
+
full_designation = "[name_client_prefix][nicknumber][name_client_postfix]"
color = hive.color
diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm
index a1405d7e4e23..b0eca77fdda5 100644
--- a/code/modules/shuttle/shuttles/dropship.dm
+++ b/code/modules/shuttle/shuttles/dropship.dm
@@ -115,9 +115,8 @@
for(var/area/checked_area in shuttle_areas)
for(var/mob/living/carbon/xenomorph/checked_xeno in checked_area)
- if(checked_xeno.stat == DEAD)
+ if(checked_xeno.stat == DEAD || (FACTION_MARINE in checked_xeno?.iff_tag.faction_groups))
continue
-
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', ares_logging = ARES_LOG_SECURITY)
diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm
index bd4a08716954..7b610d23141b 100644
--- a/code/modules/shuttles/marine_ferry.dm
+++ b/code/modules/shuttles/marine_ferry.dm
@@ -218,8 +218,8 @@
if(!queen_locked)
for(var/turf/T in turfs_src)
- var/mob/living/carbon/xenomorph/X = locate(/mob/living/carbon/xenomorph) in T
- if(X && X.stat != DEAD)
+ var/mob/living/carbon/xenomorph/xeno = locate(/mob/living/carbon/xenomorph) in T
+ if((xeno && xeno.stat != DEAD) && !(FACTION_MARINE in xeno?.iff_tag.faction_groups))
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', ares_logging = ARES_LOG_SECURITY)
diff --git a/html/changelogs/AutoChangeLog-pr-7190.yml b/html/changelogs/AutoChangeLog-pr-7190.yml
new file mode 100644
index 000000000000..13d8d6e84d0a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7190.yml
@@ -0,0 +1,4 @@
+author: "Git-Nivrak"
+delete-after: True
+changes:
+ - qol: "Added a preference to show your tag as Queen, turned off by default."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-7195.yml b/html/changelogs/AutoChangeLog-pr-7195.yml
new file mode 100644
index 000000000000..85b323f1b064
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7195.yml
@@ -0,0 +1,4 @@
+author: "stalkerino"
+delete-after: True
+changes:
+ - balance: "Buffed predator armor, thrall armor, bullet resistance has been raised. Heavy clan armor has slightly less slowdown (by 1 tier)"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml
index 122f3a58e929..20d492749779 100644
--- a/html/changelogs/archive/2024-09.yml
+++ b/html/changelogs/archive/2024-09.yml
@@ -88,3 +88,22 @@
realforest2001:
- bugfix: Fixes the duration of the AI Core nerve gas, will no longer last a full
minute.
+2024-09-20:
+ iloveloopers:
+ - balance: Ravager scissor cut will now destroy fences.
+ realforest2001:
+ - rscadd: Xenos with USCM IFF tags no longer trigger code red when on dropships.
+ tallfission:
+ - qol: Decreased dropship equipment printing time to 3 seconds from 10 seconds.
+2024-09-24:
+ Mister-moon1:
+ - bugfix: fixes what bracer power should be
+ - code_imp: 'reverts #7159'
+ Private-Tristan, KiVts:
+ - bugfix: Injector and Coagulator plates are now functional.
+ efzapa:
+ - qol: MPs now latejoin in the Brig
+ nauticall:
+ - rscadd: Added more fortunes for fortune cookies.
+ stalkerino:
+ - balance: ' increased recharge for pred bracer'
diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm
index a1a656e90951..68461b06f3db 100644
--- a/maps/map_files/USS_Almayer/USS_Almayer.dmm
+++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm
@@ -23597,6 +23597,7 @@
icon_state = "E";
pixel_x = 1
},
+/obj/effect/landmark/late_join/warden,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cryo)
"fSl" = (
@@ -53068,6 +53069,7 @@
icon_state = "W";
layer = 2.5
},
+/obj/effect/landmark/late_join/police,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cryo)
"sbZ" = (
@@ -57397,6 +57399,7 @@
icon_state = "E";
pixel_x = 1
},
+/obj/effect/landmark/late_join/chief_police,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cryo)
"tQL" = (
@@ -63266,6 +63269,7 @@
icon_state = "E";
pixel_x = 1
},
+/obj/effect/landmark/late_join/police,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cryo)
"wei" = (
diff --git a/strings/fortunes.txt b/strings/fortunes.txt
index 27f249d0c8b0..ea2e994242a1 100644
--- a/strings/fortunes.txt
+++ b/strings/fortunes.txt
@@ -1,40 +1,61 @@
A bird sitting on a tree is never afraid of the branch breaking, because its trust is not in the branch, but in its wings.
+A broken clock is right twice a day.
A broken vase is more interesting than a perfect one.
A bruise is a lesson, and each lesson makes us better.
+A change in your routine will bring excitement.
+A close friend will give you advice that you need.
A conclusion is simply the place where you got tired of thinking.
A curse on the surface may be a blessing in disguise.
A cynic is only a frustrated optimist.
+A decision you make will change your life.
A dream is a wish your heart makes.
+A fresh start is coming your way.
A friend will bring you a big surprise soon.
A golden egg of your opportunity falls into your lap this month.
A good gun will never kill anyone on its own. It is the shooter who pulls the trigger.
A good leader knows when to shut up and listen.
+A journey is only impossible to finish if you never start it.
A letter of great importance may reach you any day now.
+A life without challenges is a life without thrill.
A metaphor could save your life.
+A new adventure awaits you.
+A new friendship will enrich your life.
+A new hobby will bring you joy.
A new voyage will fill your life with untold memories.
A penny saved is a penny earned.
A person of words and not deeds is like a garden full of weeds.
+A positive attitude will lead to success.
+A secret will soon be revealed to you.
A stranger is a friend you have not spoken to yet.
+A surprise encounter will bring you happiness.
+A thrilling time is in your near future.
A true friend only asks for time, not for money.
A true leader looks after their men, not their life.
A true soldier dies protecting the ones they care for.
A very attractive person will come with a message for you.
A well-aimed spear is worth three.
-All endings are also beginnings. We just don't know it all the time.
About time I got out of that cookie.
Accept what comes to you each day.
Accomplish the tasks you were given, and then you can rest easy.
+Act as if what you do makes a difference, because it does.
Actions speak louder than fortune cookies.
+Add some sugar to your life. It may be short, might as well be sweet too.
After all, tomorrow is another day.
Aim high. Work hard. Care for what you believe in.
+All endings are also beginnings. We just don't know it all the time.
All troubles you may have can pass away quickly.
All we have to decide is what to do with the time that is given to us.
An alien of some sort will be appearing to you shortly.
An artist's greatest critic is only themself.
+An exciting opportunity will come your way soon.
An eye for an eye and the world goes blind.
An inch of time is an inch of gold.
+An old friend will re-enter your life.
+An opportunity will come your way soon.
An unexpected acquaintance will resurface once more.
+An unexpected event will bring you joy.
An unexpected relationship will become permanent.
+An unexpected visitor will bring you good news.
Anyone who dares to be can never be weak.
Anything you can't change, you can change your perspective on.
Are you living life to the fullest? If not, go do so.
@@ -46,10 +67,12 @@ Be the reason someone wants to wake up in the morning.
Be yourself. Everyone else is already taken.
Because of your melodic nature, the moonlight never misses an appointment.
Being a parent is learning about strengths you never knew you had.
+Believe in the magic of new beginnings.
Believe you can do something, and you're already halfway to achieving it.
Blood loss makes one quite hungry.
Bravery is to stand up for what you believe in.
Bread today is better than a cake tomorrow.
+Chance doesn't improve your life. Change does.
Change comes from embracing the future, not fighting your past.
Cherish the friends you have now, for none of them will last forever.
Cherish the present, for you may never know when the future may betray you.
@@ -71,6 +94,8 @@ Do not judge a book by its cover.
Do not let ambitions overshadow small success.
Do not make extra work for yourself.
Do the thing that scares you the most.
+Do what you can, with what you have, where you are.
+Don't be afraid to give up the good to go for the great.
Don't be afraid to set boundaries for your own sanity.
Don't be afraid to try new things.
Don't eat this paper.
@@ -80,12 +105,14 @@ Don't hold onto things that require a tight grip.
Don't let anyone ever make you feel like you don't deserve what you want.
Don't let life make the best of you. Make the best of life.
Don't survive. Live.
+Don't watch the clock. Do what it does - keep going.
Don’t behave with cold manners.
Don’t forget you are always on our minds.
+Dreams are never ridiculous. It's your life, after all.
+Dreams never work unless you do.
Eat food while it is still hot.
Embrace a new narrative.
Embrace the glorious mess that you are.
-Embrace the glorious mess that you are.
Emotion is energy in motion.
Enjoy yourself while you still can.
Enter unknown territory.
@@ -94,17 +121,21 @@ Even the crudest piece of flint can still light a bright fire.
Every day is a new day. But tomorrow is never promised.
Every day, in every way, you are getting better and better.
Every new beginning comes from some other beginning's end.
+Every path was first carved by a daring person walking on untrodden ground. There's a reason everyone follows it.
+Everyone asked questions. Even Einstein.
Everyone's life was decided by random chance - and you were the lucky draw.
Everything always goes wrong. You just have to deal with it.
Everything happens for a reason.
Everything has beauty, but not everyone sees it.
Everything you do is your life's work.
+Everything you've ever wanted is on the other side of fear.
Evolve as a human.
Expect great things of yourself before you do them.
Failure is only the opportunity to begin again more intelligently.
Fear the old man in a profession where men die young.
Fearless courage is the foundation of victory.
Feeding a cow with roses does not get extra appreciation.
+Finish your goal, and then move onto the next.
Flanking is not always the solution.
Follow what calls you.
Follow your heart and see what turns up.
@@ -117,18 +148,22 @@ Get busy living or get busy dying.
Get lost in the right direction.
Get out of your comfort zone. It's not even that comfortable.
Give someone a fish, they will eat for a week. Teach a man to fish, they will eat for the rest of their life.
+Good fortune is on its way to you.
Good instincts are worthless if you don't follow them.
Good news: the light at the end of the tunnel is not a train.
Great men are not born great, they grow great.
+Happiness is just around the corner.
Happiness is not something ready made. It comes from your own actions.
Hard words break no bones. Fine words butter no parsnips.
Hard work pays off in the future. Laziness pays off now.
+Hardships prepare ordinary people to do extraordinary things.
He who climbs a ladder must begin at the first rung.
He who has one arm is luckier than he who has none.
He who knows he has enough is rich.
He who laughs at himself never runs out of things to laugh at.
He who rules with an iron fist can only hurt those he tries to caress.
Help! I am being held prisoner in a fortune cookie factory.
+Here's how to predict the future: make it.
Hope brings about a better future.
Hope is like food. You will starve without it.
I am worth a fortune.
@@ -139,8 +174,10 @@ If winter comes, spring will soon follow.
If you are happy, you are successful.
If you believe nobody loves you, think again.
If you don't do it excellently don't do it at all.
+If you don't love your job, you have the wrong job.
If you keep facing the light, darkness will only be behind you.
If you never experienced failure, you will never know success.
+If you think everything happens for a reason, you can spin anything life throws at you into an advantage.
If you want the rainbow, you gotta put up with the rain.
If you want to do something right, do it scared.
If you want to grow, you have to be willing to learn.
@@ -148,9 +185,11 @@ If you're not thankful about where you are, be thankful about not being where yo
Imagination creates reality.
Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.
Imperfections are beautiful.
+Improvise, adapt, overcome.
In the midst of chaos, there is also opportunity.
In the real world, playing fair is a fallacy. The only way to win is to give yourself every advantage you can.
In the worst of times, you need to remain optimistic.
+It doesn't matter how slow you go, as long as you don't stop.
It is better to be happy than to be wise.
It is better to die young with a bang, than die old with a fizzle.
It is better to outsmart an enemy than to outgun them.
@@ -168,6 +207,9 @@ Keep your face to the sunshine and you will never see shadows.
Keep your head held high.
Let the world be filled with tranquility and goodwill.
Let your plans be dark and impenetrable as night, and when you move, fall like a thunderbolt.
+Life is 10% what happens to you, and 90% what you make of it.
+Life is either a daring adventure or nothing at all.
+Life isn't about finding yourself. It's about making yourself.
Listen to yourself more often.
Live in the constant unexpected.
Live the unpredictable life.
@@ -191,14 +233,13 @@ Man’s mind, once stretched by a new idea, never regains its original dimension
Maybe the real fortune was the friends you made along the way. Genuinely.
Men do not fail. They give up trying.
Miles are covered one step at a time.
+Mind is everything. What you think, you become.
Mind over matter.
Never be complacent.
Never be cruel, never be cowardly. And never ever eat pears.
Never break a promise to yourself.
-Never break a promise to yourself.
Never forget who you are. The rest of the world will not. Wear it like armor and it can never be used to hurt you.
Never give away your power.
-Never give away your power.
Never give up.
Never judge your social life by the numbers. Judge it based on quality.
Never let anyone tell you what you can't do.
@@ -210,6 +251,7 @@ No man is good enough to govern another man without that other’s consent.
No one can make you feel inferior without your consent.
No snowflake in an avalanche ever feels responsible.
Nobody gets to tell you how big your dreams can be.
+Nobody in a marathon ever thinks of the obstacles. Only the goal.
Nobody will determine your story but you.
Normal is nothing more than a cycle on a washing machine.
Nothing can dim the light that shines from within.
@@ -227,11 +269,14 @@ Patience is a virtue, unless it is against a brick wall.
Pennies from heaven find their way to your doorstep this year!
People are attracted by your delicate features.
Perfect is boring. Human is beautiful.
+Perfect is the enemy of good.
Persistence can change failure into extraordinary achievement.
Pick battles big enough to matter, small enough to win.
Place special emphasis on old friendship.
Plan your work and work your plan.
Popularity is giving oneself attention and trading away privacy and discretion.
+Progress is progress, no matter how small.
+Prove to everyone that you can do what they think you can't.
Recognize yourself in others.
Remember what your ancestors died for.
Rest is a good thing, but boredom is its brother.
@@ -244,7 +289,9 @@ Share your happiness with someone else today.
Smile at someone, for you never know if it may be the last time you do so.
Some men dream of fortunes, others dream of cookies.
Some people can't believe in themselves until someone else believes in them first.
+Someone can't help everyone, but everyone can help someone.
Someone will invite you to a karaoke party.
+Someone will offer you a helping hand.
Sometimes good things fall apart so better things can fall together.
Sometimes it is better to die as a Legend, than to live as a Nobody.
Sometimes it would be best to take a break from the violence.
@@ -255,17 +302,23 @@ Squash any bugs you come across.
Stay hungry. Stay foolish.
Stop pretending to be someone you are not.
Stop procrastinating, starting tomorrow.
+Success comes to those too busy to be looking for it.
Success does not happen overnight.
Surviving is the least we can do.
Take it easy. Live a little.
+That thing you think you're not good enough to do? You can do it.
The best is yet to come.
+The best time to plant a tree was 20 years ago. The second best time is now.
+The best way out is through.
The best way to die is to be remembered by those you love.
+The best way to make your dreams come true is to wake up.
The closer you are to the summit of a mountain, the harder it is to climb.
The eyes believe themselves; the ears believe other people.
The eyes of the bitter search for flaws. The eyes of the faithful search for ways to fix them.
The finest people, like the finest steels, were tempered in hot furnaces; forged by fire.
The flame that burns twice as bright burns half as long.
The fortune you seek is in another cookie.
+The future belongs to those who prepare for it today.
The grass on your neighbor's lawn is only greener because it is but a plastic facade.
The harder you work, the luckier you get.
The hardest climbs yield the best views.
@@ -274,6 +327,7 @@ The man who is ambitious flies with wings made of wax. Fly too high, and your wi
The most beautiful thing anyone can wear is confidence.
The night is always darkest just before the dawn, but I assure you, the dawn is coming.
The night life is for you.
+The one born with the silver spoon doesn't know how to live without it.
The one that recognizes the illusion does not act as if it is real.
The only certainty is that nothing is certain.
The only impossible journey is one you never began.
@@ -281,17 +335,20 @@ The only limit to what you can do is what you're willing to become. So dream big
The past is history, the future is a mystery, and today is a gift. That's why it's called the Present.
The perfect opportunity for you will come very soon.
The present is just one chapter of your own novel.
+The road to success is paved with failures, and they are like potholes. They will slow you down, they will be painful. But they can't stop you.
+The secret to getting ahead is getting started.
The strong person understands how to withstand substantial loss.
The strongest chain breaks by the weakest link.
+The tallest mountains are climbed one step at a time.
The time is always right to do what is right.
The toughest war one can fight is not against an enemy but against themself.
The weirdest people happen to be the most successful.
The world is a sea of darkness with many beams of light.
The wound is the place where light enters you.
-The wound is the place where light enters you.
There are big chances ahead of you.
There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.
There is a time for caution, but not for fear.
+There is no elevator to success. Take the stairs, one step at a time.
There is no such thing as ugly.
There will always be someone who loves the way you look. You just might not have met them yet.
They may call you stubborn, but you call yourself persistent.
@@ -313,6 +370,7 @@ Treat your weapon well. It may just save your life.
True beauty can be found not in the face or the body; but in the heart.
True friends are few, far in-between, and last forever.
True success has no shortcuts.
+Trust the timing of your life.
Trust your instinct, even if logic says it's wrong.
Trust your instinct.
Turn wounds into wisdom.
@@ -328,12 +386,16 @@ What people call you weird for is in fact your greatest strength.
What you are seeking is also seeking you.
What you plant now, you will harvest later.
When in doubt, slay.
+When nothing goes right, go left.
When there's nothing left to lose, there's everything left to gain.
When you come to the end of your rope, tie a knot and hold on.
When you look through rose-colored glasses, all the red flags just look like flags.
When you've hit rock bottom, the only way left to go is up.
+When your dreams die, so do you.
While there's life, there's hope.
Why are you trying so hard to fit in when you were born to stand out?
+With every new day comes new strength, and new thoughts.
+With practice, you can become better than any prodigy.
Worrying means you suffer twice.
You are a person of culture.
You are admired by someone unexpected.
@@ -350,6 +412,7 @@ You can breathe now.
You can discover a whole new world by just adjusting how you see everything.
You cannot live your life to please others. The choice must be yours.
You didn't get this far to only get this far.
+You don't have to be great to start, but you have to start to be great.
You don’t lead by pointing and telling people some place to go. You lead by going to that place and making a case.
You get better and better every single day.
You got the short end of the stick, pal.
@@ -363,20 +426,39 @@ You miss every shot you don't take.
You never stop learning, even after you graduate.
You only treasure what you lost.
You should retire from your job and live comfortably.
+You want logistics? Join the Army. Marines make do.
+You will achieve something you’ve always dreamed of.
+You will achieve your goals with perseverance.
You will be blessed with longevity.
You will be one of the people who go places in life.
You will be pleasantly surprised tonight.
+You will discover something new about yourself.
You will have unexpected good luck in the future.
You will inherit a large sum of money.
+You will receive a gift that will surprise you.
+You will soon meet someone special.
You'll make it.
You'll never meet someone who isn't important.
You're hungry.
You're never alone in your struggles.
+You're never too old to set a new goal.
You're only human, after all.
+Your creativity will lead to success.
+Your efforts will not go unnoticed.
+Your future is as bright as the sun.
Your hard work will soon be rewarded.
+Your hard work will soon pay off.
+Your kindness will be returned to you tenfold.
+Your life is your masterpiece. Make it count.
+Your life is your message to the world. Make sure it means something.
+Your luck can be manipulated to your advantage. Turn a curse into a blessing.
+Your only limit is your mind.
+Your passion is waiting for your courage to catch up.
Your passions sweep you away.
+Your sense of humor will bring you closer to others.
Your shoes are dirty.
Your shoes are untied.
+Your talents will be recognized and rewarded.
Your talents will be recognized and suitably rewarded.
Your work interests can capture the highest status or prestige.
Your worst enemy has a crush on you.