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]} + + )}