diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm
index 82e91c5680b8..5f8f27a65711 100644
--- a/code/__DEFINES/equipment.dm
+++ b/code/__DEFINES/equipment.dm
@@ -551,3 +551,8 @@ var/global/list/uniform_categories = list(
#define PHONE_MARINE "Marine"
#define PHONE_UPP_SOLDIER "Soldier"
#define PHONE_IO "IO"
+
+#define PHONE_DND_FORCED 2
+#define PHONE_DND_ON 1
+#define PHONE_DND_OFF 0
+#define PHONE_DND_FORBIDDEN -1
diff --git a/code/datums/disease.dm b/code/datums/disease.dm
index e9c399c7b8bf..92986b668b47 100644
--- a/code/datums/disease.dm
+++ b/code/datums/disease.dm
@@ -121,10 +121,10 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
check_range = 1 // everything else, like infect-on-contact things, only infect things on top of it
if(isturf(source.loc))
- for(var/mob/living/carbon/M in oview(check_range, source))
- if(isturf(M.loc))
- if(AStar(source.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range))
- M.contract_disease(src, 0, 1, force_spread)
+ for(var/mob/living/carbon/victim in oview(check_range, source))
+ if(isturf(victim.loc))
+ if(AStar(source.loc, victim.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range))
+ victim.contract_disease(src, 0, 1, force_spread)
return
@@ -173,8 +173,6 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
var/mob/living/carbon/human/H = affected_mob
H.med_hud_set_status()
-
-
/datum/disease/New(process=TRUE)//process = 1 - adding the object to global list. List is processed by master controller.
cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New()
if(process) // Viruses in list are considered active.
diff --git a/code/datums/diseases/mob_procs.dm b/code/datums/diseases/mob_procs.dm
index 7f9704c46f47..c27efecdff84 100644
--- a/code/datums/diseases/mob_procs.dm
+++ b/code/datums/diseases/mob_procs.dm
@@ -80,9 +80,6 @@
passed = check_disease_pass_clothes(target_zone)
- if(!passed && spread_type == AIRBORNE && !internal)
- passed = (prob((50*virus.permeability_mod) - 1))
-
if(passed)
AddDisease(virus)
@@ -111,36 +108,39 @@
/mob/living/carbon/human/check_disease_pass_clothes(target_zone)
var/obj/item/clothing/Cl
+ var/protection = 0
switch(target_zone)
if(1)
if(isobj(head) && !istype(head, /obj/item/paper))
Cl = head
- . = prob((Cl.permeability_coefficient*100) - 1)
- if(. && wear_mask)
- . = prob((Cl.permeability_coefficient*100) - 1)
+ protection += (Cl.permeability_coefficient*100)-100
+ if(isobj(wear_mask))
+ Cl = wear_mask
+ protection += (Cl.permeability_coefficient*100)-100
if(2)//arms and legs included
if(isobj(wear_suit))
Cl = wear_suit
- . = prob((Cl.permeability_coefficient*100) - 1)
- if(. && isobj(WEAR_BODY))
+ protection += (Cl.permeability_coefficient*100)-100
+ if(isobj(WEAR_BODY))
Cl = WEAR_BODY
- . = prob((Cl.permeability_coefficient*100) - 1)
+ protection += (Cl.permeability_coefficient*100)-100
if(3)
if(isobj(wear_suit) && wear_suit.flags_armor_protection & BODY_FLAG_HANDS)
Cl = wear_suit
- . = prob((Cl.permeability_coefficient*100) - 1)
+ protection += (Cl.permeability_coefficient*100)-100
- if(. && isobj(gloves))
+ if(isobj(gloves))
Cl = gloves
- . = prob((Cl.permeability_coefficient*100) - 1)
+ protection += (Cl.permeability_coefficient*100)-100
if(4)
if(isobj(wear_suit) && wear_suit.flags_armor_protection & BODY_FLAG_FEET)
Cl = wear_suit
- . = prob((Cl.permeability_coefficient*100) - 1)
+ protection += (Cl.permeability_coefficient*100)-100
- if(. && isobj(shoes))
+ if(isobj(shoes))
Cl = shoes
- . = prob((Cl.permeability_coefficient*100) - 1)
+ protection += (Cl.permeability_coefficient*100)-100
else
to_chat(src, "Something bad happened with disease target zone code, tell a dev or admin ")
+ return prob(clamp(protection, 5, 90))
diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm
index c48a7f3de560..472db608c0f8 100644
--- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm
+++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm
@@ -188,9 +188,11 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list(
list("Medical Scrubs, White", 12, /obj/item/clothing/under/rank/medical, null, VENDOR_ITEM_REGULAR),
list("USCM Service Uniform", 12, /obj/item/clothing/under/marine/officer/bridge, null, VENDOR_ITEM_REGULAR),
list("USCM Flightsuit", 12, /obj/item/clothing/under/rank/synthetic/flight, null, VENDOR_ITEM_REGULAR),
- list("USCM Engineers Uniform", 12, /obj/item/clothing/under/marine/engineer, null, VENDOR_ITEM_REGULAR),
+ list("USCM Engineers Uniform", 12, /obj/item/clothing/under/marine/engineer/standard, null, VENDOR_ITEM_REGULAR),
+ list("USCM Engineers Uniform (Darker)", 12, /obj/item/clothing/under/marine/engineer/darker, null, VENDOR_ITEM_REGULAR),
list("USCM Engineering Officers Uniform", 12, /obj/item/clothing/under/marine/officer/engi, null, VENDOR_ITEM_REGULAR),
- list("USCM Military Police Uniform", 12, /obj/item/clothing/under/marine/mp, null, VENDOR_ITEM_REGULAR),
+ list("USCM Military Police Uniform", 12, /obj/item/clothing/under/marine/mp/standard, null, VENDOR_ITEM_REGULAR),
+ list("USCM Military Police Uniform (Darker)", 12, /obj/item/clothing/under/marine/mp/darker, null, VENDOR_ITEM_REGULAR),
list("NON-STANDARD UNIFORMS", 0, null, null, null),
list("White T-Shirt and Brown Jeans", 12, /obj/item/clothing/under/tshirt/w_br, null, VENDOR_ITEM_REGULAR),
@@ -235,6 +237,8 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list(
list("Beret, Red", 12, /obj/item/clothing/head/beret/cm/red, null, VENDOR_ITEM_REGULAR),
list("Beret, Standard", 12, /obj/item/clothing/head/beret/cm, null, VENDOR_ITEM_REGULAR),
list("Beret, Tan", 12, /obj/item/clothing/head/beret/cm/tan, null, VENDOR_ITEM_REGULAR),
+ list("Beret, Black", 12, /obj/item/clothing/head/beret/cm/black, null, VENDOR_ITEM_REGULAR),
+ list("Beret, White", 12, /obj/item/clothing/head/beret/cm/white, null, VENDOR_ITEM_REGULAR),
list("Surgical Cap, Blue", 12, /obj/item/clothing/head/surgery/blue, null, VENDOR_ITEM_REGULAR),
list("Surgical Cap, Blue", 12, /obj/item/clothing/head/surgery/purple, null, VENDOR_ITEM_REGULAR),
list("Surgical Cap, Green", 12, /obj/item/clothing/head/surgery/green, null, VENDOR_ITEM_REGULAR),
@@ -277,7 +281,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list(
list("Labcoat, Researcher", 12, /obj/item/clothing/suit/storage/labcoat/researcher, null, VENDOR_ITEM_REGULAR),
list("Quartermaster Jacket", 12, /obj/item/clothing/suit/storage/RO, null, VENDOR_ITEM_REGULAR),
list("Bio Suit", 12, /obj/item/clothing/suit/storage/synthbio, null, VENDOR_ITEM_REGULAR),
- list("USCM Poncho", 12, /obj/item/clothing/accessory/poncho, null, VENDOR_ITEM_REGULAR),
+ list("USCM Poncho (Mission-Specific Camo)", 12, /obj/item/clothing/accessory/poncho, null, VENDOR_ITEM_REGULAR),
+ list("USCM Poncho (Green)", 12, /obj/item/clothing/accessory/poncho/green, null, VENDOR_ITEM_REGULAR),
+ list("USCM Poncho (Brown)", 12, /obj/item/clothing/accessory/poncho/brown, null, VENDOR_ITEM_REGULAR),
+ list("USCM Poncho (Black)", 12, /obj/item/clothing/accessory/poncho/black, null, VENDOR_ITEM_REGULAR),
+ list("USCM Poncho (Blue)", 12, /obj/item/clothing/accessory/poncho/blue, null, VENDOR_ITEM_REGULAR),
+ list("USCM Poncho (Purple)", 12, /obj/item/clothing/accessory/poncho/purple, null, VENDOR_ITEM_REGULAR),
+
list("BACKPACK", 0, null, null, null),
list("Backpack, Industrial", 12, /obj/item/storage/backpack/industrial, null, VENDOR_ITEM_REGULAR),
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index 561994947dd0..c6c06a123b2e 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -209,6 +209,14 @@ var/global/list/gear_datums_by_name = list()
display_name = "USCM beret, tan"
path = /obj/item/clothing/head/beret/cm/tan
+/datum/gear/headwear/uscm/beret_black
+ display_name = "USCM beret, black"
+ path = /obj/item/clothing/head/beret/cm/black
+
+/datum/gear/headwear/uscm/beret_white
+ display_name = "USCM beret, white"
+ path = /obj/item/clothing/head/beret/cm/white
+
/datum/gear/headwear/uscm/boonie_olive
display_name = "USCM boonie hat, olive"
path = /obj/item/clothing/head/cmcap/boonie
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 9d18c44affe8..e6c8391ac0a1 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -46,7 +46,7 @@
icon_state = "latex"
item_state = "lgloves"
siemens_coefficient = 0.30
- permeability_coefficient = 0.01
+ permeability_coefficient = 0.35
/obj/item/clothing/gloves/botanic_leather
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm
index 76c08fb0d788..f16b6ff42c9d 100644
--- a/code/modules/clothing/head/head.dm
+++ b/code/modules/clothing/head/head.dm
@@ -75,6 +75,12 @@
/obj/item/clothing/head/beret/cm/red
icon_state = "beretred"
+/obj/item/clothing/head/beret/cm/white
+ icon_state = "s_beret"
+
+/obj/item/clothing/head/beret/cm/black
+ icon_state = "beret_black"
+
/obj/item/clothing/head/beret/cm/squadberet
name = "USCM Squad Beret"
desc = "For those who want to show pride and have nothing to lose (in their head, at least)."
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index d4b1d6f3dd84..b13fab0ae5a4 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -11,7 +11,7 @@
w_class = SIZE_SMALL
item_state = "gas_alt"
gas_transfer_coefficient = 0.01
- permeability_coefficient = 0.01
+ permeability_coefficient = 0.9
armor_melee = CLOTHING_ARMOR_NONE
armor_bullet = CLOTHING_ARMOR_NONE
armor_laser = CLOTHING_ARMOR_NONE
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 0d4572c7297f..c39e6a620833 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -17,7 +17,7 @@
flags_inventory = COVERMOUTH
flags_armor_protection = 0
gas_transfer_coefficient = 0.90
- permeability_coefficient = 0.01
+ permeability_coefficient = 0.3
armor_melee = CLOTHING_ARMOR_NONE
armor_bullet = CLOTHING_ARMOR_NONE
armor_laser = CLOTHING_ARMOR_NONE
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 963e4efa3ae6..59e0918550ed 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -3,7 +3,7 @@
name = "bio hood"
icon_state = "bio"
desc = "A hood that protects the head and face from biological contaminants."
- permeability_coefficient = 0.01
+ permeability_coefficient = 0.2
armor_melee = CLOTHING_ARMOR_NONE
armor_bullet = CLOTHING_ARMOR_NONE
armor_laser = CLOTHING_ARMOR_NONE
@@ -30,7 +30,7 @@
item_state = "bio_suit"
w_class = SIZE_LARGE//bulky item
gas_transfer_coefficient = 0.01
- permeability_coefficient = 0.01
+ permeability_coefficient = 0.2
flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS|BODY_FLAG_HANDS
slowdown = 1
armor_melee = CLOTHING_ARMOR_NONE
diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm
index 585f415f2b63..d9d8d7da45b7 100644
--- a/code/modules/clothing/under/marine_uniform.dm
+++ b/code/modules/clothing/under/marine_uniform.dm
@@ -62,6 +62,14 @@
worn_state = "marine_engineer"
specialty = "USCM Combat Technician"
+/obj/item/clothing/under/marine/engineer/standard
+ flags_atom = NO_SNOW_TYPE
+
+/obj/item/clothing/under/marine/engineer/darker
+ icon_state = "d_marine_engineer"
+ worn_state = "d_marine_engineer"
+ flags_atom = NO_SNOW_TYPE
+
/obj/item/clothing/under/marine/rto
name = "\improper USCM radio telephone operator uniform"
desc = "Standard-issue RTO fatigues. They have shards of light Kevlar to help protect against stabbing weapons and bullets."
@@ -105,6 +113,14 @@
flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_SLEEVE_CUTTABLE|UNIFORM_JACKET_REMOVABLE
specialty = "military police"
+/obj/item/clothing/under/marine/mp/standard
+ flags_atom = NO_SNOW_TYPE
+
+/obj/item/clothing/under/marine/mp/darker
+ icon_state = "d_MP_jumpsuit"
+ worn_state = "d_MP_jumpsuit"
+ flags_atom = NO_SNOW_TYPE
+
/obj/item/clothing/under/marine/warden
name = "military warden jumpsuit"
desc = "Standard-issue Military Warden uniform. It has shards of light Kevlar to help protect against stabbing weapons and bullets."
diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm
index cd413f4afdbe..24eec4f1e3a8 100644
--- a/code/modules/clothing/under/ties.dm
+++ b/code/modules/clothing/under/ties.dm
@@ -381,6 +381,22 @@
inv_overlay = image("icon" = 'icons/obj/items/clothing/ties_overlay.dmi', "icon_state" = "[icon_state]")
update_icon()
+/obj/item/clothing/accessory/poncho/green
+ icon_state = "poncho"
+
+/obj/item/clothing/accessory/poncho/brown
+ icon_state = "d_poncho"
+
+/obj/item/clothing/accessory/poncho/black
+ icon_state = "u_poncho"
+
+/obj/item/clothing/accessory/poncho/blue
+ icon_state = "c_poncho"
+
+/obj/item/clothing/accessory/poncho/purple
+ icon_state = "s_poncho"
+
+
//Ties that can store stuff
/obj/item/storage/internal/accessory
diff --git a/code/modules/cm_marines/dropship_ammo.dm b/code/modules/cm_marines/dropship_ammo.dm
index 264400caa0dd..ef59e643e4cf 100644
--- a/code/modules/cm_marines/dropship_ammo.dm
+++ b/code/modules/cm_marines/dropship_ammo.dm
@@ -18,10 +18,10 @@
var/ammo_count
/// Maximal ammunition count
var/max_ammo_count
- /// What to call the ammo in the ammo transfering message
+ /// What to call the ammo in the ammo transferring message
var/ammo_name = "round"
var/ammo_id
- /// Whether the ammo inside this magazine can be transfered to another magazine.
+ /// Whether the ammo inside this magazine can be transferred to another magazine.
var/transferable_ammo = FALSE
/// How many tiles the ammo can deviate from the laser target
var/accuracy_range = 3
@@ -136,7 +136,7 @@
/obj/structure/ship_ammo/heavygun
name = "\improper PGU-100 Multi-Purpose 30mm ammo crate"
icon_state = "30mm_crate"
- desc = "A crate full of PGU-100 30mm Multi-Purpose ammo designed to penetrate light (non reinforced) structures, as well as shred infantry, IAVs, LAVs, IMVs, and MRAPs. Works in large areas for use on Class 4 and superior alien insectoid infestations, as well as fitting within the armaments allowed for use against a tier 4 insurgency as well as higher tiers. However, it lacks armor penetrating capabilities, for which Anti-Tank 30mm ammo is needed."
+ desc = "A crate full of PGU-100 30mm Multi-Purpose ammo designed to penetrate light (non reinforced) structures, as well as shred infantry, IAVs, LAVs, IMVs, and MRAPs. Works in large areas for use on Class 4 and superior alien insectoid infestations, as well as fitting within the armaments allowed for use against a tier 4 insurgency as well as higher tiers. However, it lacks armor penetrating capabilities, for which Anti-Tank 30mm ammo is needed. Can be loaded into the GAU-21 30mm cannon."
equipment_type = /obj/structure/dropship_equipment/weapon/heavygun
ammo_count = 400
max_ammo_count = 400
@@ -146,7 +146,7 @@
fire_mission_delay = 2
var/bullet_spread_range = 4 //how far from the real impact turf can bullets land
var/shrapnel_type = /datum/ammo/bullet/shrapnel/gau //For siming 30mm bullet impacts.
- var/directhit_damage = 105 //how much damage is to be inficted to a mob, this is here so that we can hit resting mobs.
+ var/directhit_damage = 105 //how much damage is to be inflicted to a mob, this is here so that we can hit resting mobs.
var/penetration = 10 //AP value pretty much
/obj/structure/ship_ammo/heavygun/get_examine_text(mob/user)
@@ -193,9 +193,9 @@
/obj/structure/ship_ammo/heavygun/antitank
- name = "PGU-105 30mm Anti-tank ammo crate"
+ name = "\improper PGU-105 30mm Anti-tank ammo crate"
icon_state = "30mm_crate_hv"
- desc = "A crate full of PGU-105 Specialized 30mm APFSDS Titanium-Tungsten alloy penetrators, made for countering peer and near peer APCs, IFVs, and MBTs in CAS support. It's designed to penetrate up to the equivalent 1350mm of RHA when launched from a GAU-21. It is much less effective against soft targets however, in which case 30mm ball ammunition is recommended. WARNING: discarding petals from the ammunition can be harmful if the dropship does not pull out at the needed speeds. Please consult page 3574 of the manual, available for order at any ARMAT store."
+ desc = "A crate full of PGU-105 Specialized 30mm APFSDS Titanium-Tungsten alloy penetrators, made for countering peer and near peer APCs, IFVs, and MBTs in CAS support. It is designed to penetrate up to the equivalent 1350mm of RHA when launched from a GAU-21. It is much less effective against soft targets however, in which case 30mm ball ammunition is recommended. WARNING: discarding petals from the ammunition can be harmful if the dropship does not pull out at the needed speeds. Please consult page 3574 of the manual, available for order at any ARMAT store. Can be loaded into the GAU-21 30mm cannon."
travelling_time = 60
ammo_count = 400
max_ammo_count = 400
@@ -204,15 +204,15 @@
point_cost = 325
fire_mission_delay = 2
shrapnel_type = /datum/ammo/bullet/shrapnel/gau/at
- directhit_damage = 80 //how much damage is to be inficted to a mob, this is here so that we can hit resting mobs.
+ directhit_damage = 80 //how much damage is to be inflicted to a mob, this is here so that we can hit resting mobs.
penetration = 40 //AP value pretty much
//laser battery
/obj/structure/ship_ammo/laser_battery
- name = "high-capacity laser battery"
+ name = "\improper BTU-17/LW Hi-Cap Laser Battery"
icon_state = "laser_battery"
- desc = "A high-capacity laser battery used to power laser beam weapons."
+ desc = "A high-capacity laser battery used to power laser beam weapons. Can be loaded into the LWU-6B Laser Cannon."
travelling_time = 10
ammo_count = 100
max_ammo_count = 100
@@ -283,8 +283,8 @@
//this one is air-to-air only
/obj/structure/ship_ammo/rocket/widowmaker
- name = "\improper AIM-224/B 'Widowmaker'"
- desc = "The AIM-224/B missile is a retrofit of the latest in air-to-air missile technology. Earning the nickname of 'Widowmaker' from various dropship pilots after improvements to its guidance warhead prevents it from being jammed leading to its high kill rate. Not well suited for ground bombardment but its high velocity makes it reach its target quickly. This one has been modified to be a free-fall bomb as a result of dropship ammo shortages."
+ name = "\improper AIM-224B 'Widowmaker'"
+ desc = "The AIM-224B missile is a retrofit of the latest in air-to-air missile technology. Earning the nickname of 'Widowmaker' from various dropship pilots after improvements to its guidance warhead prevents it from being jammed leading to its high kill rate. Not well suited for ground bombardment but its high velocity makes it reach its target quickly. This one has been modified to be a free-fall bomb as a result of dropship ammo shortages. Can be loaded into the LAU-444 Guided Missile Launcher."
icon_state = "single"
travelling_time = 30 //not powerful, but reaches target fast
ammo_id = ""
@@ -298,7 +298,7 @@
/obj/structure/ship_ammo/rocket/banshee
name = "\improper AGM-227 'Banshee'"
- desc = "The AGM-227 missile is a mainstay of the overhauled dropship fleet against any mobile or armored ground targets. It's earned the nickname of 'Banshee' from the sudden wail that it emits right before hitting a target. Useful to clear out large areas."
+ desc = "The AGM-227 missile is a mainstay of the overhauled dropship fleet against any mobile or armored ground targets. It's earned the nickname of 'Banshee' from the sudden wail that it emits right before hitting a target. Useful to clear out large areas. Can be loaded into the LAU-444 Guided Missile Launcher."
icon_state = "banshee"
ammo_id = "b"
point_cost = 300
@@ -312,7 +312,7 @@
/obj/structure/ship_ammo/rocket/keeper
name = "\improper GBU-67 'Keeper II'"
- desc = "The GBU-67 'Keeper II' is the latest in a generation of laser guided weaponry that spans all the way back to the 20th century. Earning its nickname from a shortening of 'Peacekeeper' which comes from the program that developed its guidance system and the various uses of it during peacekeeping conflicts. Its payload is designed to devastate armored targets."
+ desc = "The GBU-67 'Keeper II' is the latest in a generation of laser guided weaponry that spans all the way back to the 20th century. Earning its nickname from a shortening of 'Peacekeeper' which comes from the program that developed its guidance system and the various uses of it during peacekeeping conflicts. Its payload is designed to devastate armored targets. Can be loaded into the LAU-444 Guided Missile Launcher."
icon_state = "paveway"
travelling_time = 20 //A fast payload due to its very tight blast zone
ammo_id = "k"
@@ -325,8 +325,8 @@
QDEL_IN(src, 0.5 SECONDS)
/obj/structure/ship_ammo/rocket/harpoon
- name = "\improper AGM-84 'Harpoon'"
- desc = "The AGM-84 Harpoon is an Anti-Ship Missile, designed and used to effectively take down enemy ships with a huge blast wave with low explosive power. This one is modified to use ground signals."
+ name = "\improper AGM-184 'Harpoon II'"
+ desc = "The AGM-184 Harpoon II is an Anti-Ship Missile, designed and used to effectively take down enemy ships with a huge blast wave with low explosive power. This one is modified to use ground signals. Can be loaded into the LAU-444 Guided Missile Launcher."
icon_state = "harpoon"
ammo_id = "s"
travelling_time = 50
@@ -340,8 +340,8 @@
QDEL_IN(src, 0.5 SECONDS)
/obj/structure/ship_ammo/rocket/napalm
- name = "\improper XN-99 'Napalm'"
- desc = "The XN-99 'Napalm' is an incendiary missile used to turn specific targeted areas into giant balls of fire for a long time."
+ name = "\improper AGM-99 'Napalm'"
+ desc = "The AGM-99 'Napalm' is an incendiary missile used to turn specific targeted areas into giant balls of fire for a long time. Can be loaded into the LAU-444 Guided Missile Launcher."
icon_state = "napalm"
ammo_id = "n"
point_cost = 500
@@ -355,7 +355,7 @@
/obj/structure/ship_ammo/rocket/thermobaric
name = "\improper BLU-200 'Dragons Breath'"
- desc = "The BLU-200 Dragons Breath a thermobaric fuel-air bomb. The aerosolized fuel mixture creates a vacuum when ignited causing serious damage to those in its way."
+ desc = "The BLU-200 Dragons Breath a thermobaric fuel-air bomb. The aerosolized fuel mixture creates a vacuum when ignited causing serious damage to those in its way. Can be loaded into the LAU-444 Guided Missile Launcher."
icon_state = "fatty"
ammo_id = "f"
travelling_time = 50
@@ -373,8 +373,8 @@
//minirockets
/obj/structure/ship_ammo/minirocket
- name = "mini rocket stack"
- desc = "A pack of laser guided mini rockets."
+ name = "\improper AGR-59 'Mini-Mike'"
+ desc = "The AGR-59 'Mini-Mike' minirocket is a cheap and efficient means of putting hate down range. Though rockets lack a guidance package, it makes up for it in ammunition count. Can be loaded into the LAU-229 Rocket Pod."
icon_state = "minirocket"
icon = 'icons/obj/structures/props/almayer_props.dmi'
equipment_type = /obj/structure/dropship_equipment/weapon/minirocket_pod
@@ -410,8 +410,8 @@
/obj/structure/ship_ammo/minirocket/incendiary
- name = "incendiary mini rocket stack"
- desc = "A pack of laser guided incendiary mini rockets."
+ name = "\improper AGR-59-I 'Mini-Mike'"
+ desc = "The AGR-59-I 'Mini-Mike' incendiary minirocket is a cheap and efficient means of putting hate down range AND setting them on fire! Though rockets lack a guidance package, it makes up for it in ammunition count. Can be loaded into the LAU-229 Rocket Pod."
icon_state = "minirocket_inc"
point_cost = 500
fire_mission_delay = 3 //high cooldown
@@ -422,8 +422,8 @@
fire_spread(impact, create_cause_data(initial(name), source_mob), 3, 25, 20, "#EE6515")
/obj/structure/ship_ammo/sentry
- name = "multi-purpose area denial sentry"
- desc = "An omni-directional sentry, capable of defending an area from lightly armored hostile incursion."
+ name = "\improper A/C-49-P Air Deployable Sentry"
+ desc = "An omni-directional sentry, capable of defending an area from lightly armored hostile incursion. Can be loaded into the LAG-14 Internal Sentry Launcher."
icon_state = "launchable_sentry"
equipment_type = /obj/structure/dropship_equipment/weapon/launch_bay
ammo_count = 1
diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm
index 707811e77ce1..223cb29a6ab8 100644
--- a/code/modules/cm_marines/dropship_equipment.dm
+++ b/code/modules/cm_marines/dropship_equipment.dm
@@ -1,5 +1,5 @@
-/// Dropship equipments, mainly weaponry but also utility implements
+/// Dropship equipment, mainly weaponry but also utility implements
/obj/structure/dropship_equipment
density = TRUE
anchored = TRUE
@@ -153,7 +153,7 @@
/// Turret holder for dropship automated sentries
/obj/structure/dropship_equipment/sentry_holder
equip_categories = list(DROPSHIP_WEAPON, DROPSHIP_CREW_WEAPON)
- name = "sentry deployment system"
+ name = "\improper A/A-32-P Sentry Defense System"
desc = "A box that deploys a sentry turret. Fits on both the external weapon and crew compartment attach points of dropships. You need a powerloader to lift it."
density = FALSE
health = null
@@ -284,7 +284,7 @@
/// Holder for the dropship mannable machinegun system
/obj/structure/dropship_equipment/mg_holder
- name = "machine gun deployment system"
+ name = "\improper MTU-4B Door Gunner Hardpoint System"
desc = "A box that deploys a crew-served scoped M56D heavy machine gun. Fits on both the external weapon and crew compartment attach points of dropships. You need a powerloader to lift it."
density = FALSE
equip_categories = list(DROPSHIP_WEAPON, DROPSHIP_CREW_WEAPON)
@@ -419,13 +419,13 @@
/obj/structure/dropship_equipment/fuel/fuel_enhancer
- name = "fuel enhancer"
+ name = "\improper fuel enhancer"
desc = "A fuel enhancement system for dropships. It improves the thrust produced by the fuel combustion for faster travels. Fits inside the engine attach points. You need a powerloader to lift it."
icon_state = "fuel_enhancer"
point_cost = 800
/obj/structure/dropship_equipment/fuel/cooling_system
- name = "cooling system"
+ name = "\improper cooling system"
desc = "A cooling system for dropships. It produces additional cooling reducing delays between launch. Fits inside the engine attach points. You need a powerloader to lift it."
icon_state = "cooling_system"
point_cost = 800
@@ -437,7 +437,7 @@
equip_categories = list(DROPSHIP_ELECTRONICS)
/obj/structure/dropship_equipment/electronics/chaff_launcher
- name = "chaff launcher"
+ name = "\improper AN/ALE-203 Chaff Launcher"
icon_state = "chaff_launcher"
point_cost = 0
@@ -445,7 +445,7 @@
#define LIGHTING_MAX_LUMINOSITY_SHIPLIGHTS 12
/obj/structure/dropship_equipment/electronics/spotlights
- name = "spotlight"
+ name = "\improper AN/LEN-15 Spotlight"
icon_state = "spotlights"
desc = "A set of high-powered spotlights to illuminate large areas. Fits on electronics attach points of dropships. Moving this will require a powerloader."
is_interactable = TRUE
@@ -490,12 +490,12 @@
/obj/structure/dropship_equipment/electronics/flare_launcher
- name = "flare launcher"
+ name = "\improper AN/ALE-557 Flare Launcher"
icon_state = "flare_launcher"
point_cost = 0
/obj/structure/dropship_equipment/electronics/targeting_system
- name = "targeting system"
+ name = "\improper AN/AAQ-178 Weapon Targeting System"
icon_state = "targeting_system"
desc = "A targeting system for dropships. It improves firing accuracy on laser targets. Fits on electronics attach points. You need a powerloader to lift this."
point_cost = 800
@@ -507,7 +507,7 @@
icon_state = initial(icon_state)
/obj/structure/dropship_equipment/electronics/landing_zone_detector
- name = "\improper LZ detector"
+ name = "\improper AN/AVD-60 LZ detector"
desc = "An electronic device linked to the dropship's camera system that lets you observe your landing zone mid-flight."
icon_state = "lz_detector"
point_cost = 50
@@ -559,7 +559,7 @@
/obj/structure/dropship_equipment/adv_comp/docking
- name = "docking computer"
+ name = "\improper AN/AKW-222 Docking Computer"
icon_state = "docking_comp"
point_cost = 0
@@ -686,7 +686,7 @@
/obj/structure/dropship_equipment/weapon/heavygun
name = "\improper GAU-21 30mm cannon"
- desc = "A dismounted GAU-21 'Rattler' 30mm rotary cannon. It seems to be missing its feed links and has exposed connection wires. Capable of firing 5200 rounds a minute, feared by many for its power. Earned the nickname 'Rattler' from the vibrations it would cause on dropships in its initial production run."
+ desc = "A dismounted GAU-21 'Rattler' 30mm rotary cannon. It seems to be missing its feed links and has exposed connection wires. Capable of firing 5200 rounds a minute, feared by many for its power. Earned the nickname 'Rattler' from the vibrations it would cause on dropships in its initial production run. Accepts PGU-100/PGU-105 ammo crates"
icon_state = "30mm_cannon"
firing_sound = 'sound/effects/gau_incockpit.ogg'
point_cost = 400
@@ -702,9 +702,9 @@
/obj/structure/dropship_equipment/weapon/rocket_pod
- name = "missile pod"
- icon_state = "rocket_pod"
- desc = "A missile pod weapon system capable of launching a single laser-guided missile. Moving this will require some sort of lifter."
+ name = "\improper LAU-444 Guided Missile Launcher"
+ icon_state = "rocket_pod" //I want to force whoever used rocket and missile interchangeably to come back and look at this god damn mess.
+ desc = "A missile pod weapon system capable of launching a single laser-guided missile. Moving this will require some sort of lifter. Accepts AGM, AIM, BLU, and GBU missile systems."
firing_sound = 'sound/effects/rocketpod_fire.ogg'
firing_delay = 5
point_cost = 600
@@ -722,9 +722,9 @@
/obj/structure/dropship_equipment/weapon/minirocket_pod
- name = "minirocket pod"
+ name = "\improper LAU-229 Rocket Pod"
icon_state = "minirocket_pod"
- desc = "A mini rocket pod capable of launching six laser-guided mini rockets. Moving this will require some sort of lifter."
+ desc = "A rocket pod capable of launching six laser-guided mini rockets. Moving this will require some sort of lifter. Accepts the AGR-59 series of minirockets."
icon = 'icons/obj/structures/props/almayer_props64.dmi'
firing_sound = 'sound/effects/rocketpod_fire.ogg'
firing_delay = 10 //1 seconds
@@ -743,9 +743,9 @@
ammo_equipped = null
/obj/structure/dropship_equipment/weapon/laser_beam_gun
- name = "laser beam gun"
+ name = "\improper LWU-6B Laser Cannon"
icon_state = "laser_beam"
- desc = "State of the art technology recently acquired by the USCM, it fires a battery-fed pulsed laser beam at near lightspeed setting on fire everything it touches. Moving this will require some sort of lifter."
+ desc = "State of the art technology recently acquired by the USCM, it fires a battery-fed pulsed laser beam at near lightspeed setting on fire everything it touches. Moving this will require some sort of lifter. Accepts the BTU-17/LW Hi-Cap Laser Batteries."
icon = 'icons/obj/structures/props/almayer_props64.dmi'
firing_sound = 'sound/effects/phasein.ogg'
firing_delay = 50 //5 seconds
@@ -761,9 +761,9 @@
else icon_state = "laser_beam"
/obj/structure/dropship_equipment/weapon/launch_bay
- name = "launch bay"
+ name = "\improper LAG-14 Internal Sentry Launcher"
icon_state = "launch_bay"
- desc = "A launch bay to drop special ordnance. Fits inside the dropship's crew weapon emplacement. Moving this will require some sort of lifter."
+ desc = "A launch bay to drop special ordnance. Fits inside the dropship's crew weapon emplacement. Moving this will require some sort of lifter. Accepts the A/C-49-P Air Deployable Sentry as ammunition."
icon = 'icons/obj/structures/props/almayer_props.dmi'
firing_sound = 'sound/weapons/gun_flare_explode.ogg'
firing_delay = 10 //1 seconds
@@ -782,7 +782,7 @@
/obj/structure/dropship_equipment/medevac_system
- name = "medevac system"
+ name = "\improper RMU-4M Medevac System"
desc = "A winch system to lift injured marines on medical stretchers onto the dropship. Acquire lift target through the dropship equipment console."
equip_categories = list(DROPSHIP_CREW_WEAPON)
icon_state = "medevac_system"
@@ -1014,7 +1014,7 @@
// Fulton extraction system
/obj/structure/dropship_equipment/fulton_system
- name = "fulton recovery system"
+ name = "\improper RMU-19 Fulton Recovery System"
desc = "A winch system to collect any fulton recovery balloons in high altitude. Make sure you turn it on!"
equip_categories = list(DROPSHIP_CREW_WEAPON)
icon_state = "fulton_system"
@@ -1131,7 +1131,7 @@
// Rappel deployment system
/obj/structure/dropship_equipment/rappel_system
- name = "rappel deployment system"
+ name = "\improper HPU-1 Rappel Deployment System"
equip_categories = list(DROPSHIP_CREW_WEAPON)
icon_state = "rappel_module_packaged"
point_cost = 50
diff --git a/code/modules/cm_phone/phone.dm b/code/modules/cm_phone/phone.dm
index a99bb5603dcb..fd9c8aa02d44 100644
--- a/code/modules/cm_phone/phone.dm
+++ b/code/modules/cm_phone/phone.dm
@@ -24,7 +24,8 @@ GLOBAL_LIST_EMPTY_TYPED(transmitters, /obj/structure/transmitter)
var/range = 7
var/enabled = TRUE
- var/callable = TRUE
+ /// Whether or not the phone is receiving calls or not. Varies between on/off or forcibly on/off.
+ var/do_not_disturb = PHONE_DND_OFF
var/base_icon_state
@@ -35,7 +36,7 @@ GLOBAL_LIST_EMPTY_TYPED(transmitters, /obj/structure/transmitter)
var/list/networks_transmit = list(FACTION_MARINE)
/obj/structure/transmitter/hidden
- callable = FALSE
+ do_not_disturb = PHONE_DND_FORCED
/obj/structure/transmitter/Initialize(mapload, ...)
. = ..()
@@ -80,7 +81,11 @@ GLOBAL_LIST_EMPTY_TYPED(transmitters, /obj/structure/transmitter)
for(var/possible_phone in GLOB.transmitters)
var/obj/structure/transmitter/target_phone = possible_phone
- if(TRANSMITTER_UNAVAILABLE(target_phone) || !target_phone.callable) // Phone not available
+ var/current_dnd = FALSE
+ switch(target_phone.do_not_disturb)
+ if(PHONE_DND_ON, PHONE_DND_FORCED)
+ current_dnd = TRUE
+ if(TRANSMITTER_UNAVAILABLE(target_phone) || current_dnd) // Phone not available
continue
var/net_link = FALSE
for(var/network in networks_transmit)
@@ -124,9 +129,18 @@ GLOBAL_LIST_EMPTY_TYPED(transmitters, /obj/structure/transmitter)
call_phone(user, params["phone_id"])
. = TRUE
SStgui.close_uis(src)
+ if("toggle_dnd")
+ toggle_dnd(user)
update_icon()
+/obj/structure/transmitter/ui_data(mob/user)
+ var/list/data = list()
+
+ data["availability"] = do_not_disturb
+
+ return data
+
/obj/structure/transmitter/ui_static_data(mob/user)
. = list()
@@ -172,6 +186,18 @@ GLOBAL_LIST_EMPTY_TYPED(transmitters, /obj/structure/transmitter)
user.put_in_hands(attached_to)
+/obj/structure/transmitter/proc/toggle_dnd(mob/living/carbon/human/user)
+ switch(do_not_disturb)
+ if(PHONE_DND_ON)
+ do_not_disturb = PHONE_DND_OFF
+ to_chat(user, SPAN_NOTICE("Do Not Disturb has been disabled. You can now receive calls."))
+ if(PHONE_DND_OFF)
+ do_not_disturb = PHONE_DND_ON
+ to_chat(user, SPAN_WARNING("Do Not Disturb has been enabled. No calls will be received."))
+ else
+ return FALSE
+ return TRUE
+
/obj/structure/transmitter/attack_hand(mob/user)
. = ..()
@@ -543,12 +569,18 @@ GLOBAL_LIST_EMPTY_TYPED(transmitters, /obj/structure/transmitter)
UnregisterSignal(attached_to, COMSIG_MOVABLE_MOVED)
reset_tether()
+/obj/structure/transmitter/no_dnd
+ do_not_disturb = PHONE_DND_FORBIDDEN
+
//rotary desk phones (need a touch tone handset at some point)
/obj/structure/transmitter/rotary
name = "rotary telephone"
icon_state = "rotary_phone"
desc = "The finger plate is a little stiff."
+/obj/structure/transmitter/rotary/no_dnd
+ do_not_disturb = PHONE_DND_FORBIDDEN
+
/obj/structure/transmitter/touchtone
name = "touch-tone telephone"
icon_state = "rotary_phone"//placeholder
diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm
index 24097e1f8e92..4d175c5a6f1f 100644
--- a/code/modules/hydroponics/hydro_tray.dm
+++ b/code/modules/hydroponics/hydro_tray.dm
@@ -1,4 +1,5 @@
#define HYDRO_SPEED_MULTIPLIER 1
+#define HYDRO_WATER_CONSUMPTION_MULTIPLIER 1.5
/obj/structure/machinery/portable_atmospherics/hydroponics
name = "hydroponics tray"
@@ -206,7 +207,7 @@
if(seed.nutrient_consumption > 0 && nutrilevel > 0 && prob(25))
nutrilevel -= max(0,seed.nutrient_consumption * HYDRO_SPEED_MULTIPLIER)
if(seed.water_consumption > 0 && waterlevel > 0 && prob(25))
- waterlevel -= max(0,seed.water_consumption * HYDRO_SPEED_MULTIPLIER)
+ waterlevel -= round(max(0,(seed.water_consumption * HYDRO_WATER_CONSUMPTION_MULTIPLIER) * HYDRO_SPEED_MULTIPLIER))
// Make sure the plant is not starving or thirsty. Adequate
// water and nutrients will cause a plant to become healthier.
@@ -219,17 +220,9 @@
if(nutrilevel < 1)
plant_health = 0
- // Check that pressure, heat and light are all within bounds.
+ // Check that pressure, heat are all within bounds.
// First, handle an open system or an unconnected closed system.
- var/turf/T = loc
-
- // Handle light requirements.
- if(T)
- var/light_available = T.get_lumcount(0, 10)
- if(abs(light_available - seed.ideal_light) > seed.light_tolerance)
- plant_health -= healthmod
-
// Toxin levels beyond the plant's tolerance cause damage, but
// toxins are sucked up each tick and slowly reduce over time.
if(toxins > 0)
@@ -606,6 +599,25 @@
else
to_chat(user, SPAN_DANGER("This plot is completely devoid of weeds. It doesn't need uprooting."))
+ else if (istype(O, /obj/item/tool/shovel/spade))
+ if(isnull(seed))
+ return
+ user.visible_message(SPAN_DANGER("[user] starts to uproot the plant."), SPAN_DANGER("You begin removing plant from [src]..."))
+ if(!do_after(user, 1 SECONDS, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_FRIENDLY, src, INTERRUPT_MOVED, BUSY_ICON_FRIENDLY))
+ return
+ to_chat(user, SPAN_NOTICE("You remove the plant from [src]."))
+ seed = null
+ dead = 0
+ sampled = 0
+ age = 0
+ harvest = 0
+ toxins = 0
+ yield_mod = 0
+ mutation_mod = 0
+
+ check_level_sanity()
+ update_icon()
+
else if (istype(O, /obj/item/storage/bag/plants))
attack_hand(user)
@@ -663,20 +675,9 @@
return info
-/obj/structure/machinery/portable_atmospherics/hydroponics/soil/show_hydro_info(mob/user as mob)
- var/info = ..()
- var/turf/T = loc
- var/area/A = T.loc
- var/light_available
- if(A)
- light_available = max(0,min(10,T.dynamic_lumcount)-5)
-
- info += "The tray's sensor suite is reporting a light level of [light_available] lumens.\n"
- return info
-
/obj/structure/machinery/portable_atmospherics/hydroponics/attack_hand(mob/user as mob)
- if(istype(usr,/mob/living/silicon))
+ if(istype(user, /mob/living/silicon))
return
if(harvest)
@@ -684,19 +685,7 @@
else if(dead)
remove_dead(user)
else
- to_chat(usr, show_hydro_info(user))
-
-/obj/structure/machinery/portable_atmospherics/hydroponics/verb/close_lid()
- set name = "Toggle Tray Lid"
- set category = "Object"
- set src in view(1)
-
- if(!usr || usr.stat || usr.is_mob_restrained())
- return
-
- closed_system = !closed_system
- to_chat(usr, "You [closed_system ? "close" : "open"] the tray's lid.")
- update_icon()
+ to_chat(user, show_hydro_info(user))
/obj/structure/machinery/portable_atmospherics/hydroponics/verb/flush() //used to reset the tray
set name = "Flush Tray"
@@ -716,7 +705,7 @@
toxins = 0
yield_mod = 0
mutation_mod = 0
- waterlevel = 100
+ waterlevel = 0
nutrilevel = 0
pestlevel = 0
weedlevel = 0
@@ -743,8 +732,5 @@
else
..()
-/obj/structure/machinery/portable_atmospherics/hydroponics/soil/Initialize()
- . = ..()
- verbs -= /obj/structure/machinery/portable_atmospherics/hydroponics/verb/close_lid
-
#undef HYDRO_SPEED_MULTIPLIER
+#undef HYDRO_WATER_CONSUMPTION_MULTIPLIER
diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm
index 9a4b1551736c..edecce85ccb4 100644
--- a/code/modules/projectiles/guns/shotguns.dm
+++ b/code/modules/projectiles/guns/shotguns.dm
@@ -266,14 +266,18 @@ can cause issues with ammo types getting mixed up during the burst.
/obj/item/weapon/gun/shotgun/combat/handle_starting_attachment()
..()
- var/obj/item/attachable/attached_gun/grenade/G = new(src)
- G.flags_attach_features &= ~ATTACH_REMOVABLE
- G.hidden = TRUE
- G.Attach(src)
- update_attachable(G.slot)
+ var/obj/item/attachable/attached_gun/grenade/ugl = new(src)
+ var/obj/item/attachable/stock/tactical/stock = new(src)
+ ugl.flags_attach_features &= ~ATTACH_REMOVABLE
+ ugl.hidden = TRUE
+ ugl.Attach(src)
+ update_attachable(ugl.slot)
+ stock.hidden = FALSE
+ stock.Attach(src)
+ update_attachable(stock.slot)
/obj/item/weapon/gun/shotgun/combat/set_gun_attachment_offsets()
- attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 14, "under_y" = 16, "stock_x" = 14, "stock_y" = 16)
+ attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 14, "under_y" = 16, "stock_x" = 11, "stock_y" = 13.)
diff --git a/html/changelogs/AutoChangeLog-pr-4444.yml b/html/changelogs/AutoChangeLog-pr-4444.yml
new file mode 100644
index 000000000000..2f878ed508c2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4444.yml
@@ -0,0 +1,5 @@
+author: "SpartanBobby, esselnek"
+delete-after: True
+changes:
+ - 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"
\ No newline at end of file
diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml
index 6ad54a92ecd5..d57c4ce90f60 100644
--- a/html/changelogs/archive/2023-10.yml
+++ b/html/changelogs/archive/2023-10.yml
@@ -81,3 +81,35 @@
to tell find out exactly what role's you are looking for. Also slightly expands
the default monitor screen size to accommodate the entire personnel text on
screen.
+2023-10-06:
+ blackdragonTOW:
+ - bugfix: fixed spider dead sprite to not have white space (is transparent instead)
+2023-10-08:
+ Kivts:
+ - rscadd: You can partially protect yourself from flu and other disease by wearing
+ a mask and other PPE. Doesnt affect Black Goo.
+ Steelpoint:
+ - rscadd: Black and white beret's have been added as loadout options for all characters
+ as headwear.
+ - rscadd: More cosmetic options are on offer for Synthetics. Includes white and
+ black berets, standard or darker engineering and mp uniforms and all camo options
+ for the poncho.
+ - rscadd: The Synth Councillor and Synth Utility uniforms can now roll their sleeves.
+ blackdragonTOW:
+ - spellcheck: Altered inconsistent dropship ammo names
+ irRegularGuy646:
+ - rscadd: Added new "M1A1" ballistic goggle reskin
+ kiVts:
+ - rscadd: Spades can now remove botany plants.
+ - rscadd: Plants now globally take more water to grow.
+ - code_imp: removed all mention of lighting in botany trays.
+ - bugfix: Research computer no longer shows "for" for every simulation result.
+ realforest2001:
+ - rscadd: Added a Do Not Disturb feature for MOST phones. (Overwatch and a couple
+ others excluded).
+ spartanbobby:
+ - maptweak: Fixes floating Cameras and Light in the maint tunnels north of south
+ of brig
+ - maptweak: Fixes incorrect Shower tiles in maint shower north of engineering
+ - maptweak: Fixes incorrect area in maint south of VC bunk
+ - maptweak: Removes Piano from USS Almayer upper lifeboat area
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 2fa8d673454f..8246bb4f70aa 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/icons/mob/humans/onmob/head_1.dmi b/icons/mob/humans/onmob/head_1.dmi
index b41eab22a229..dad985c1e11c 100644
Binary files a/icons/mob/humans/onmob/head_1.dmi and b/icons/mob/humans/onmob/head_1.dmi differ
diff --git a/icons/mob/humans/onmob/uniform_0.dmi b/icons/mob/humans/onmob/uniform_0.dmi
index 6d944f4fa649..873c325a560e 100644
Binary files a/icons/mob/humans/onmob/uniform_0.dmi and b/icons/mob/humans/onmob/uniform_0.dmi differ
diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi
index 9c4ed5bf4617..1595402fef50 100644
Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ
diff --git a/icons/obj/items/weapons/guns/attachments/stock.dmi b/icons/obj/items/weapons/guns/attachments/stock.dmi
index a15409b808ca..d3a95284a23f 100644
Binary files a/icons/obj/items/weapons/guns/attachments/stock.dmi and b/icons/obj/items/weapons/guns/attachments/stock.dmi differ
diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm
index b22a08e3f62d..b29802bd6548 100644
--- a/maps/map_files/BigRed/BigRed.dmm
+++ b/maps/map_files/BigRed/BigRed.dmm
@@ -29757,7 +29757,7 @@
/area/bigredv2/outside/filtration_plant)
"htp" = (
/obj/structure/transmitter/colony_net{
- callable = 0;
+ do_not_disturb = 1;
dir = 4;
phone_category = "Lambda Labs";
phone_color = "red";
diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm
index 5939075b1b5b..fb842c754dd9 100644
--- a/maps/map_files/USS_Almayer/USS_Almayer.dmm
+++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm
@@ -2371,11 +2371,18 @@
},
/area/almayer/living/offices/flight)
"ahX" = (
-/obj/structure/machinery/light/small{
- dir = 4
+/obj/effect/decal/warning_stripes{
+ icon_state = "SE-out"
},
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/hull/upper_hull/u_f_s)
+/obj/effect/decal/warning_stripes{
+ icon_state = "NE-out";
+ pixel_y = 1
+ },
+/obj/structure/machinery/door/airlock/almayer/maint,
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/hull/upper_hull/u_a_s)
"ahY" = (
/obj/structure/machinery/light,
/obj/structure/surface/table/woodentable/fancy,
@@ -3482,6 +3489,15 @@
/obj/item/device/radio,
/turf/open/floor/wood/ship,
/area/almayer/living/commandbunks)
+"alv" = (
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 8;
+ name = "ship-grade camera"
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/hull/upper_hull/u_f_p)
"alw" = (
/obj/structure/machinery/door/airlock/almayer/generic{
dir = 2;
@@ -7820,7 +7836,7 @@
pixel_y = 15
},
/obj/structure/machinery/light,
-/obj/structure/transmitter/rotary{
+/obj/structure/transmitter/rotary/no_dnd{
name = "Bravo Overwatch Telephone";
phone_category = "Command";
phone_id = "Bravo Overwatch"
@@ -8508,7 +8524,7 @@
pixel_y = -5;
req_one_access_txt = "1;4"
},
-/obj/structure/transmitter/rotary{
+/obj/structure/transmitter/rotary/no_dnd{
name = "Combat Information Center Telephone";
phone_category = "Command";
phone_id = "Combat Information Center";
@@ -8918,6 +8934,7 @@
/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{
name = "\improper Port Railguns and Viewing Room"
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/almayer{
icon_state = "test_floor4"
},
@@ -8959,7 +8976,7 @@
/obj/structure/machinery/light{
dir = 1
},
-/obj/structure/transmitter/rotary{
+/obj/structure/transmitter/rotary/no_dnd{
name = "Charlie Overwatch Telephone";
phone_category = "Command";
phone_id = "Charlie Overwatch"
@@ -9111,9 +9128,7 @@
/obj/structure/sink{
pixel_y = 24
},
-/turf/open/floor/almayer{
- icon_state = "sterile"
- },
+/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_a_s)
"aCv" = (
/obj/structure/machinery/door/poddoor/shutters/almayer{
@@ -9216,9 +9231,7 @@
pixel_y = 16
},
/obj/item/tool/soap,
-/turf/open/floor/almayer{
- icon_state = "sterile"
- },
+/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_a_s)
"aDg" = (
/obj/structure/machinery/light/small{
@@ -12149,8 +12162,15 @@
},
/area/almayer/medical/upper_medical)
"aQA" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S"
+ },
/turf/open/floor/almayer{
- icon_state = "sterile"
+ icon_state = "dark_sterile"
},
/area/almayer/hull/upper_hull/u_a_s)
"aQF" = (
@@ -12278,8 +12298,15 @@
/obj/structure/mirror{
pixel_x = 28
},
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S"
+ },
/turf/open/floor/almayer{
- icon_state = "sterile"
+ icon_state = "dark_sterile"
},
/area/almayer/hull/upper_hull/u_a_s)
"aRo" = (
@@ -17001,9 +17028,7 @@
/obj/structure/toilet{
dir = 1
},
-/turf/open/floor/almayer{
- icon_state = "sterile"
- },
+/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_a_s)
"bph" = (
/obj/structure/bed/chair/comfy/orange,
@@ -17466,9 +17491,7 @@
/area/almayer/living/bridgebunks)
"brT" = (
/obj/structure/machinery/light,
-/turf/open/floor/almayer{
- icon_state = "sterile"
- },
+/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_a_s)
"brW" = (
/obj/structure/disposalpipe/segment,
@@ -17520,11 +17543,11 @@
/turf/open/floor/wood/ship,
/area/almayer/command/corporateliason)
"bsf" = (
-/obj/structure/largecrate/random,
/obj/structure/machinery/camera/autoname/almayer{
dir = 8;
name = "ship-grade camera"
},
+/obj/structure/largecrate/random,
/turf/open/floor/almayer{
icon_state = "plate"
},
@@ -24088,6 +24111,13 @@
icon_state = "blue"
},
/area/almayer/squads/delta)
+"bVr" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/hull/upper_hull/u_f_p)
"bVt" = (
/obj/structure/machinery/door_control{
id = "laddersoutheast";
@@ -32527,7 +32557,7 @@
/turf/open/floor/almayer{
icon_state = "plate"
},
-/area/almayer/living/tankerbunks)
+/area/almayer/hull/lower_hull/l_f_p)
"eim" = (
/obj/structure/pipes/vents/pump{
dir = 1
@@ -32712,6 +32742,7 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/cic_hallway)
"elq" = (
@@ -33966,8 +33997,8 @@
pixel_y = -32
},
/obj/structure/sign/safety/rewire{
- pixel_y = -32;
- pixel_x = 14
+ pixel_x = 14;
+ pixel_y = -32
},
/turf/open/floor/almayer{
icon_state = "mono"
@@ -34208,7 +34239,7 @@
pixel_x = -17;
pixel_y = -17
},
-/obj/structure/transmitter/rotary{
+/obj/structure/transmitter/rotary/no_dnd{
name = "Delta Overwatch Telephone";
phone_category = "Command";
phone_id = "Delta Overwatch"
@@ -35567,15 +35598,13 @@
},
/area/almayer/living/starboard_garden)
"fwF" = (
-/obj/structure/largecrate/random/case/double,
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 8;
- name = "ship-grade camera"
+/obj/structure/machinery/light/small{
+ dir = 4
},
/turf/open/floor/almayer{
icon_state = "plate"
},
-/area/almayer/hull/upper_hull/u_f_p)
+/area/almayer/hull/upper_hull/u_f_s)
"fwY" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -36530,6 +36559,7 @@
/obj/structure/pipes/standard/manifold/hidden/supply{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/almayer{
icon_state = "plate"
},
@@ -37369,11 +37399,11 @@
"gjL" = (
/obj/structure/surface/table/almayer,
/obj/structure/machinery/computer/crew/alt,
-/obj/structure/transmitter/rotary{
+/obj/structure/transmitter/rotary/no_dnd{
name = "Brig Cells Telephone";
phone_category = "Almayer";
phone_id = "Brig Cells";
- pixel_x = 15
+ pixel_x = 15;
},
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/processing)
@@ -38381,7 +38411,7 @@
pixel_x = -17;
pixel_y = 16
},
-/obj/structure/transmitter/rotary{
+/obj/structure/transmitter/rotary/no_dnd{
name = "Alpha Overwatch Telephone";
phone_category = "Command";
phone_id = "Alpha Overwatch"
@@ -43558,12 +43588,14 @@
},
/area/almayer/hull/lower_hull/l_f_p)
"iVY" = (
-/obj/effect/decal/hefa_cult_decals/d32,
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "orange"
+/obj/structure/pipes/standard/manifold/hidden/supply{
+ dir = 8
},
-/area/almayer/engineering/upper_engineering/starboard)
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/cic_hallway)
"iVZ" = (
/obj/structure/surface/table/woodentable/fancy,
/obj/item/folder/black,
@@ -55713,6 +55745,16 @@
icon_state = "dark_sterile"
},
/area/almayer/engineering/laundry)
+"odM" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 8;
+ icon_state = "pipe-c"
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/cic_hallway)
"odN" = (
/obj/structure/window/framed/almayer,
/obj/structure/machinery/door/firedoor/border_only/almayer,
@@ -57123,6 +57165,7 @@
"oIm" = (
/obj/structure/prop/server_equipment/broken,
/turf/open/floor/almayer{
+ dir = 1;
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/starboard)
@@ -59313,9 +59356,9 @@
},
/area/almayer/medical/lower_medical_medbay)
"pLv" = (
-/obj/structure/device/broken_moog,
/obj/effect/decal/cleanable/blood/splatter,
/turf/open/floor/almayer{
+ dir = 1;
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/starboard)
@@ -60180,8 +60223,8 @@
pixel_y = 32
},
/obj/structure/sign/safety/rewire{
- pixel_y = 32;
- pixel_x = 14
+ pixel_x = 14;
+ pixel_y = 32
},
/turf/open/floor/almayer{
icon_state = "mono"
@@ -63503,6 +63546,7 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/cic_hallway)
"rzN" = (
@@ -64482,11 +64526,11 @@
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_f_s)
"rTY" = (
-/obj/structure/transmitter{
+/obj/structure/transmitter/no_dnd{
name = "Requisition Telephone";
phone_category = "Almayer";
phone_id = "Requisition";
- pixel_y = 30
+ pixel_y = 30;
},
/turf/open/floor/almayer{
dir = 5;
@@ -75687,11 +75731,15 @@
},
/area/almayer/command/airoom)
"wyK" = (
-/obj/structure/pipes/standard/simple/hidden/supply,
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
+ },
/turf/open/floor/almayer{
- icon_state = "orangecorner"
+ dir = 1;
+ icon_state = "silvercorner"
},
-/area/almayer/hallways/stern_hallway)
+/area/almayer/shipboard/brig/cic_hallway)
"wyO" = (
/obj/structure/largecrate/random/barrel/red,
/obj/structure/prop/invuln/overhead_pipe{
@@ -94544,7 +94592,7 @@ bdH
aad
aag
pCi
-nfI
+wcn
rPC
cQv
cQv
@@ -94747,8 +94795,8 @@ aaf
aag
aag
pCi
-bsf
-ahX
+hKi
+wcn
aFN
wcn
cXZ
@@ -94785,7 +94833,7 @@ kIV
hUc
wNU
mnm
-fwF
+sIk
xEF
aag
aag
@@ -94950,8 +94998,8 @@ adG
adG
adG
adG
-rPC
-rPC
+bsf
+fwF
dav
rPC
rPC
@@ -94988,7 +95036,7 @@ mnm
kIV
wNU
kIV
-kIV
+alv
tuA
tuA
tuA
@@ -96603,13 +96651,13 @@ vGA
uwN
pYX
xuZ
-jnD
+wyK
elh
rzM
aBN
fQS
-tJo
-tJo
+bVr
+bVr
bpd
bqT
vZv
@@ -96805,8 +96853,8 @@ awz
vSN
mPj
rWs
-mIy
-eEw
+iVY
+odM
lPC
mgy
wWT
@@ -104103,7 +104151,7 @@ yjM
qbO
aqw
hnI
-ayT
+bYe
amO
wZM
aPm
@@ -104712,7 +104760,7 @@ aiX
aKG
amb
aiX
-bYe
+ayT
amO
avj
qFl
@@ -105924,10 +105972,10 @@ bbL
bbL
kij
bbL
-bbL
-bbL
-yfv
bYe
+bYe
+yfv
+bbL
aWl
bbL
bbL
@@ -106356,8 +106404,8 @@ baw
baw
baw
mnA
-aJU
-aJU
+baw
+baw
qVM
iBt
iBt
@@ -106958,7 +107006,7 @@ coa
aoe
ahr
akU
-ajC
+bYe
xCX
csz
vGk
@@ -118527,7 +118575,7 @@ dxv
cnS
cnv
ajt
-anf
+bYe
xCX
csz
csz
@@ -123196,7 +123244,7 @@ fDG
alL
alG
aYD
-wyK
+aTS
qgK
tEB
uBM
@@ -126003,7 +126051,7 @@ pVZ
xlX
psm
psm
-jFX
+ahX
psm
psm
fnZ
@@ -133926,7 +133974,7 @@ aaa
aaa
uMc
iKc
-iVY
+uiG
cMN
trB
nVX
diff --git a/maps/templates/clf_ert_station.dmm b/maps/templates/clf_ert_station.dmm
index 9d6ccd92aaa0..7347be914da2 100644
--- a/maps/templates/clf_ert_station.dmm
+++ b/maps/templates/clf_ert_station.dmm
@@ -1658,7 +1658,7 @@
name = "CLF Outpost";
phone_category = "CLF";
phone_id = "CLF Outpost";
- callable = 0;
+ do_not_disturb = 2;
pixel_y = 10
},
/turf/open/floor/wood,
diff --git a/maps/templates/upp_ert_station.dmm b/maps/templates/upp_ert_station.dmm
index d78a900f2c59..ae2a8ad40c47 100644
--- a/maps/templates/upp_ert_station.dmm
+++ b/maps/templates/upp_ert_station.dmm
@@ -880,7 +880,7 @@
name = "UPP Station";
phone_category = "UPP";
phone_id = "UPP Station";
- callable = 0
+ do_not_disturb = 2
},
/turf/open/floor/strata{
icon_state = "floor2"
diff --git a/maps/templates/weyland_ert_station.dmm b/maps/templates/weyland_ert_station.dmm
index 414eee0bcbc7..1937aa6a61a9 100644
--- a/maps/templates/weyland_ert_station.dmm
+++ b/maps/templates/weyland_ert_station.dmm
@@ -2795,7 +2795,7 @@
"Js" = (
/obj/structure/surface/table/reinforced/black,
/obj/structure/transmitter/rotary{
- callable = 0;
+ do_not_disturb = 2;
name = "Weyland-Yutani Station CiC";
phone_category = "W-Y";
phone_id = "W-Y Station CiC"
@@ -3588,7 +3588,7 @@
"SE" = (
/obj/structure/surface/table/woodentable/fancy,
/obj/structure/transmitter/rotary{
- callable = 0;
+ do_not_disturb = 2;
name = "Weyland-Yutani Station Meeting Room";
phone_category = "W-Y";
phone_id = "W-Y Station Meeting Room"
diff --git a/tgui/packages/tgui/interfaces/PhoneMenu.js b/tgui/packages/tgui/interfaces/PhoneMenu.js
index 657757dd6781..9a2edf943767 100644
--- a/tgui/packages/tgui/interfaces/PhoneMenu.js
+++ b/tgui/packages/tgui/interfaces/PhoneMenu.js
@@ -15,6 +15,7 @@ export const PhoneMenu = (props, context) => {
const GeneralPanel = (props, context) => {
const { act, data } = useBackend(context);
+ const { availability } = data;
const available_transmitters = Object.keys(data.available_transmitters);
const transmitters = data.transmitters.filter((val1) =>
available_transmitters.includes(val1.phone_id)
@@ -46,6 +47,21 @@ const GeneralPanel = (props, context) => {
categories[0]
);
+ let dnd_tooltip = 'Do Not Disturb is DISABLED';
+ let dnd_locked = 'No';
+ let dnd_icon = 'volume-high';
+ if (availability === 1) {
+ dnd_tooltip = 'Do Not Disturb is ENABLED';
+ dnd_icon = 'volume-xmark';
+ } else if (availability >= 2) {
+ dnd_tooltip = 'Do Not Disturb is ENABLED (LOCKED)';
+ dnd_locked = 'Yes';
+ dnd_icon = 'volume-xmark';
+ } else if (availability < 0) {
+ dnd_tooltip = 'Do Not Disturb is DISABLED (LOCKED)';
+ dnd_locked = 'Yes';
+ }
+
return (
@@ -115,6 +131,18 @@ const GeneralPanel = (props, context) => {
/>
)}
+
+
);
diff --git a/tgui/packages/tgui/interfaces/ResearchTerminal.tsx b/tgui/packages/tgui/interfaces/ResearchTerminal.tsx
index c40af65ea44d..efa0724bf258 100644
--- a/tgui/packages/tgui/interfaces/ResearchTerminal.tsx
+++ b/tgui/packages/tgui/interfaces/ResearchTerminal.tsx
@@ -153,9 +153,15 @@ const CompoundRecord = (props: CompoundRecordProps, context) => {
-
- {compound.type.document.split(' ')[2]}
-
+ {compound.type.document.split(' ')[0] === 'Simulation' ? (
+
+ {compound.type.document.split(' ')[3]}
+
+ ) : (
+
+ {compound.type.document.split(' ')[2]}
+
+ )}