From 1c8faeb310304c71b42946696fea88ffc4834c89 Mon Sep 17 00:00:00 2001 From: MemeSnorfer <116136632+MemeSnorfer@users.noreply.github.com> Date: Tue, 7 Jan 2025 04:21:40 -0800 Subject: [PATCH 001/118] Cargo Security Tab Adjustments (#3955) ## About The Pull Request Removes some crufty items from the Security tab in cargo, as well as putting some new things in. Also adjusts some prices. ![image](https://github.com/user-attachments/assets/ac7a7452-1ff7-4720-b48f-6dc3efb69a01) ## Why It's Good For The Game Makes some of these crates more worth purchasing. This is really just a spite PR because I only want flashbangs from cargo and nothing else. ## Changelog :cl: del: Security Supplies crate del: Chemical Implants crate del: Tracking Implants crate del: Wall Mounted Flash crate del: Syringe Gun crate del: DRAGnet crate add: Flashbangs crate add: Teargas Grenades crate add: Camera Console crate add: Pepper Spray crate balance: Lowered Security Barrier Grenades crate cost to 500 (from 2000) balance: Lowered Stingbang Grenades crate cost to 1500 (from 7500) balance: Lowered Stun Baton crate cost to 2500 (from 3000) /:cl: --------- Signed-off-by: MemeSnorfer <116136632+MemeSnorfer@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/cargo/packs/sec_supply.dm | 87 +++++++++++--------------- 1 file changed, 35 insertions(+), 52 deletions(-) diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index 9e18adec4855..c2a71603db3e 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -12,28 +12,14 @@ contains = list(/obj/item/clothing/accessory/holster) crate_name = "holster crate" -/datum/supply_pack/sec_supply/chemimp - name = "Chemical Implants Crate" - desc = "Contains five remote chemical implants." - cost = 1000 - contains = list(/obj/item/storage/box/chemimp) - crate_name = "chemical implant crate" - -/datum/supply_pack/sec_supply/trackingimp - name = "Tracking Implants Crate" - desc = "Contains four tracking implants." - cost = 2000 - contains = list(/obj/item/storage/box/trackimp) - crate_name = "tracking implant crate" - /datum/supply_pack/sec_supply/securitybarriers name = "Security Barrier Grenades" - desc = "Stem the tide with four Security Barrier grenades." + desc = "Halt the opposition with four Security Barrier grenades." contains = list(/obj/item/grenade/barrier, /obj/item/grenade/barrier, /obj/item/grenade/barrier, /obj/item/grenade/barrier) - cost = 2000 + cost = 500 crate_name = "security barriers crate" /datum/supply_pack/sec_supply/empty_sandbags @@ -43,25 +29,26 @@ cost = 150 crate_name = "sandbag crate" -/datum/supply_pack/sec_supply/wall_flash - name = "Wall-Mounted Flash Crate" - desc = "Contains four wall-mounted flashes." - cost = 3000 - contains = list(/obj/item/storage/box/wall_flash, - /obj/item/storage/box/wall_flash, - /obj/item/storage/box/wall_flash, - /obj/item/storage/box/wall_flash) - crate_name = "wall-mounted flash crate" - -/datum/supply_pack/sec_supply/supplies - name = "Security Supplies Crate" - desc = "Contains seven flashbangs, seven teargas grenades, six flashes, and seven handcuffs." - cost = 5000 - contains = list(/obj/item/storage/box/flashbangs, - /obj/item/storage/box/teargas, - /obj/item/storage/box/flashes, - /obj/item/storage/box/handcuffs) - crate_name = "security supply crate" +/datum/supply_pack/sec_supply/flashbangs + name = "Flashbangs Crate" + desc = "Contains seven flashbangs for use in door breaching and riot control." + cost = 750 + contains = list(/obj/item/storage/box/flashbangs) + crate_name = "flashbangs crate" + +/datum/supply_pack/sec_supply/teargas + name = "Teargas Grenades Crate" + desc = "Contains seven teargas grenades for use in crowd dispersion and riot control." + cost = 750 + contains = list(/obj/item/storage/box/teargas) + crate_name = "teargas grenades crate" + +/datum/supply_pack/sec_supply/camera_console + name = "Camera Console Crate" + desc = "Contains a camera console circuit board, for a comprehensive surveillance system and peace of mind." + cost = 500 + contains = list(/obj/item/circuitboard/computer/security) + crate_name = "camera console crate" /* Misc. weapons / protection @@ -122,6 +109,16 @@ faction_discount = 0 faction_locked = TRUE +/datum/supply_pack/sec_supply/pepper_spray + name = "Pepper Spray Crate" + desc = "Contains four pepper spray cans, for self defense on a budget." + cost = 250 + contains = list(/obj/item/reagent_containers/spray/pepper, + /obj/item/reagent_containers/spray/pepper, + /obj/item/reagent_containers/spray/pepper, + /obj/item/reagent_containers/spray/pepper) + crate_name = "pepper spray crate" + /* Stamina / PVP weapons (intentionally overpriced due to odd balance position of stamina weapons) */ @@ -129,31 +126,17 @@ /datum/supply_pack/sec_supply/stingpack name = "Stingbang Grenade Pack" desc = "Contains five \"stingbang\" grenades, perfect for stopping riots and playing morally unthinkable pranks." - cost = 7500 + cost = 1500 contains = list(/obj/item/storage/box/stingbangs) crate_name = "stingbang grenade pack crate" -/datum/supply_pack/sec_supply/syringegun - name = "Syringe Gun Crate" - desc = "Contains a single syringe gun." - cost = 8000 - contains = list(/obj/item/gun/syringe) - crate_name = "syringe gun crate" - /datum/supply_pack/sec_supply/baton - name = "Stun Batons Crate" + name = "Stun Baton Crate" desc = "Arm your vessel security with a stun baton. Batteries included." - cost = 3000 + cost = 2500 contains = list(/obj/item/melee/baton/loaded) crate_name = "stun baton crate" -/datum/supply_pack/sec_supply/dragnet - name = "DRAGnet Crate" - desc = "Contains one \"Dynamic Rapid-Apprehension of the Guilty\" netting device, a recent breakthrough in law enforcement prisoner management technology." - cost = 2000 - contains = list(/obj/item/gun/energy/e_gun/dragnet) - crate_name = "\improper DRAGnet crate" - /datum/supply_pack/sec_supply/claymore name = "C-10 Claymore Crate" desc = "Four motion-activated directional mines, perfect for ambushing enemy infantry. Still debatably legal to sell!" From c335642b1a9294faae98b0b0cef1ddcf45295c58 Mon Sep 17 00:00:00 2001 From: Ical <86125936+Ical92@users.noreply.github.com> Date: Tue, 7 Jan 2025 07:25:00 -0500 Subject: [PATCH 002/118] Adds manufacturer field to ship config and Autowiki (#3930) ## About The Pull Request Adds manufacturer to `ship_config_schema.json` to note the manufacturer of the ship class, which is currently displayed in the autowiki template but no information is generated. Ships missing manufacturer information: - `independent_junker.json` Assistants made this in maints with a box of scraps - `solgov_inkwell.json` SolGov Lorema has no manufacturer lore - `solgov_paracelsus.json` - `srm_elder.json` They probably just built it themselves? - `syndicate_panacea.json` Who knows, it's purple The two other ungenerated fields for faction name and header color are added in #3815. ![image](https://github.com/user-attachments/assets/78dc6433-608f-4ba6-ad49-b8ec01436e1d) (Example with the Atoll-Class) ## Why It's Good For The Game Fills in a field on ship wikis that previously did not have information from the game. Mostly useful for mapping or lore reference, but still helpful. ## Changelog :cl: add: Wiki ship templates now show ship manufacturers /:cl: --- _maps/configs/independent_atoll.json | 1 + _maps/configs/independent_bubble.json | 1 + _maps/configs/independent_dwayne.json | 1 + _maps/configs/independent_kilo.json | 1 + _maps/configs/independent_mudskipper.json | 1 + _maps/configs/independent_raleigh.json | 1 + _maps/configs/independent_rigger.json | 1 + _maps/configs/independent_scarab.json | 1 + _maps/configs/independent_shetland.json | 1 + _maps/configs/independent_sunskipper.json | 1 + _maps/configs/inteq_colossus.json | 1 + _maps/configs/inteq_talos.json | 3 ++- _maps/configs/inteq_valor.json | 1 + _maps/configs/inteq_vaquero.json | 1 + _maps/configs/minutemen_atlas.json | 1 + _maps/configs/nanotrasen_delta.json | 1 + _maps/configs/nanotrasen_harrier.json | 1 + _maps/configs/nanotrasen_meta.json | 1 + _maps/configs/nanotrasen_ranger.json | 1 + _maps/configs/nanotrasen_tegu.json | 1 + _maps/configs/pgf_crying_sun.json | 1 + _maps/configs/pgf_elated_bolide.json | 1 + _maps/configs/pgf_woeful_cthonian.json | 1 + _maps/configs/pirate_libertatia.json | 1 + _maps/configs/pirate_tortuga.json | 1 + _maps/configs/syndicate_cybersun_litieguai.json | 1 + _maps/configs/syndicate_gorlex_komodo.json | 1 + _maps/configs/syndicate_ngr_derecho.json | 1 + _maps/configs/syndicate_ngr_kaliandhi.json | 1 + _maps/configs/syndicate_panacea.json | 1 + _maps/configs/syndicate_twinkleshine.json | 1 + _maps/example_ship_config.json | 1 + _maps/ship_config_schema.json | 5 +++++ code/controllers/subsystem/mapping.dm | 3 +++ code/datums/shuttles.dm | 2 ++ code/modules/autowiki/pages/ships.dm | 1 + 36 files changed, 44 insertions(+), 1 deletion(-) diff --git a/_maps/configs/independent_atoll.json b/_maps/configs/independent_atoll.json index 4d91d09694be..d0f32c9a8428 100644 --- a/_maps/configs/independent_atoll.json +++ b/_maps/configs/independent_atoll.json @@ -14,6 +14,7 @@ ], "faction": "/datum/faction/independent", "prefix": "IMV", + "manufacturer": "Ihejirika Civ. Manufacturing", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/independent/captain", diff --git a/_maps/configs/independent_bubble.json b/_maps/configs/independent_bubble.json index 33a8cf8c1815..c2b5221122ce 100644 --- a/_maps/configs/independent_bubble.json +++ b/_maps/configs/independent_bubble.json @@ -14,6 +14,7 @@ ], "faction": "/datum/faction/independent", "prefix": "ISV", + "manufacturer": "Nanotrasen Spaceworks", "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/independent_dwayne.json b/_maps/configs/independent_dwayne.json index e770c725fc14..b9f35dcc7322 100644 --- a/_maps/configs/independent_dwayne.json +++ b/_maps/configs/independent_dwayne.json @@ -3,6 +3,7 @@ "map_name": "Mark.II Dwayne-class Long Range Mining Transport", "faction": "/datum/faction/independent", "prefix": "SV", + "manufacturer": "Nanotrasen Spaceworks", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/independent_kilo.json b/_maps/configs/independent_kilo.json index 9ff4ccfbf191..da6683e9db22 100644 --- a/_maps/configs/independent_kilo.json +++ b/_maps/configs/independent_kilo.json @@ -7,6 +7,7 @@ ], "faction": "/datum/faction/independent", "prefix": "SV", + "manufacturer": "Miskilamo Spacefaring", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/independent_mudskipper.json b/_maps/configs/independent_mudskipper.json index 469230d752a3..15ca44b9096c 100644 --- a/_maps/configs/independent_mudskipper.json +++ b/_maps/configs/independent_mudskipper.json @@ -4,6 +4,7 @@ "map_short_name": "Mudskipper-class", "faction": "/datum/faction/independent", "prefix": "ISV", + "manufacturer": "Miskilamo Spacefaring", "description": "One of the cheapest (and yet, inexplicably popular) offerings from Miskilamo Spacefaring, the Mudskipper-class is a vessel purpose-built for enterprising scrappers and looters looking to salvage bombed-out ruins and harvest boatloads of materials. Featuring a diverse set of multipurpose rooms, a charitable supply of EVA/ruin raiding equipment, and a set of anti-radiation gear for dealing with industrial accidents, the Mudskipper-class just keeps on chuggin’!", "tags": [ "Combat", diff --git a/_maps/configs/independent_raleigh.json b/_maps/configs/independent_raleigh.json index 2f818addbd67..adf4cc36365d 100644 --- a/_maps/configs/independent_raleigh.json +++ b/_maps/configs/independent_raleigh.json @@ -3,6 +3,7 @@ "map_name": "Raleigh-class Corvette", "faction": "/datum/faction/independent", "prefix": "ISV", + "manufacturer": "Kasagi-Fischer Partnership", "namelists": [ "SPACE", "BEASTS", diff --git a/_maps/configs/independent_rigger.json b/_maps/configs/independent_rigger.json index 57f147867e29..0f981f395c41 100644 --- a/_maps/configs/independent_rigger.json +++ b/_maps/configs/independent_rigger.json @@ -3,6 +3,7 @@ "map_name": "Riggs-class Sloop", "faction": "/datum/faction/independent", "prefix": "SV", + "manufacturer": "Kasagi-Fischer Partnership", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/independent_scarab.json b/_maps/configs/independent_scarab.json index 8916043ea6a4..6c5721785335 100644 --- a/_maps/configs/independent_scarab.json +++ b/_maps/configs/independent_scarab.json @@ -3,6 +3,7 @@ "map_name": "Scarab-class Heavy Mining Ship", "faction": "/datum/faction/independent", "prefix": "SV", + "manufacturer": "Hardline Salvage and Mining", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/independent_shetland.json b/_maps/configs/independent_shetland.json index a44478e49c74..b9897788bd10 100644 --- a/_maps/configs/independent_shetland.json +++ b/_maps/configs/independent_shetland.json @@ -2,6 +2,7 @@ "map_name": "Shetland-class Multipurpose Frigate", "faction": "/datum/faction/independent", "prefix": "SV", + "manufacturer": "Miskilamo Spacefaring", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/independent_sunskipper.json b/_maps/configs/independent_sunskipper.json index a87d2582f097..792959d95b41 100644 --- a/_maps/configs/independent_sunskipper.json +++ b/_maps/configs/independent_sunskipper.json @@ -3,6 +3,7 @@ "map_name": "Sunskipper-class Culinary Vessel", "faction": "/datum/faction/independent", "prefix": "SV", + "manufacturer": "Ihejirika Civ. Manufacturing", "namelists": ["CRUISE", "NATURAL"], "map_short_name": "Sunskipper-class", "map_path": "_maps/shuttles/independent/independent_sunskipper.dmm", diff --git a/_maps/configs/inteq_colossus.json b/_maps/configs/inteq_colossus.json index 68bc1e2ec1b3..d4e930750607 100644 --- a/_maps/configs/inteq_colossus.json +++ b/_maps/configs/inteq_colossus.json @@ -3,6 +3,7 @@ "map_name": "Colossus-class Armored Frigate", "faction": "/datum/faction/inteq", "prefix": "IRMV", + "manufacturer": "Hardline Salvage and Mining", "description": "The mainstay of Inteq’s mercenary fleet, the Colossus is a professionally-militarized freighter like most of Inteq’s ships, and is designed to operate independently for some time, serving IRMG’s interests and providing vital mercenary services wherever they are needed. Key features include a secure and well-stocked armory and ample crew space, as well as a spacious cargo bay, which crews often refurbish into additional recreational or training space.", "tags": [ "Combat", diff --git a/_maps/configs/inteq_talos.json b/_maps/configs/inteq_talos.json index b2d39c10f443..9bbef06f0458 100644 --- a/_maps/configs/inteq_talos.json +++ b/_maps/configs/inteq_talos.json @@ -3,6 +3,7 @@ "map_name": "Talos-class Command Clipper", "faction": "/datum/faction/inteq", "prefix": "IRMV", + "manufacturer": "Hardline Salvage and Mining", "description": "The Talos is a command and support ship, and a rare example of a purpose-built Inteq ship. Outfitted with an abundance of construction and engineering equipment and a private bluespace communications suite capable of networking IRMG ships across any given system, Taloses are often the lynchpin of coordinated IRMG operations in a system, and offer construction and repair services as part of IRMG’s mercenary offerings. As Talos crews place a larger emphasis on support personnel, they tend to be less well-armed than other Inteq crews. One unusual feature of the Talos is its depressurized “wings” filled with redundant baffles, intended to provide extra durability in the case of impacts or weapons fire. They also double as auxiliary storage space and potential room for modification by their enterprising Artificer crews.", "tags": [ "Engineer", @@ -47,7 +48,7 @@ }, "Recruit": { "outfit": "/datum/outfit/job/inteq/assistant", - "slots": 4 + "slots": 4 } }, "enabled": true diff --git a/_maps/configs/inteq_valor.json b/_maps/configs/inteq_valor.json index 9c23544026ce..63252ef4d614 100644 --- a/_maps/configs/inteq_valor.json +++ b/_maps/configs/inteq_valor.json @@ -3,6 +3,7 @@ "map_name": "Valor-Class Field Care Cruiser", "faction": "/datum/faction/inteq", "prefix": "IRMV", + "manufacturer": "Hardline Salvage and Mining", "description": "The Valor is the dedicated medical vessel of the Inteq fleet, suitable for treatment both for Inteq combat casualties, or paid treatment of outsiders. It's equipped with high-end medical equipment and a small ambulance for patient transport for this purpose.", "tags": ["Medical", "Subshuttle"], "namelists": [ diff --git a/_maps/configs/inteq_vaquero.json b/_maps/configs/inteq_vaquero.json index 2b0bed8bfe98..42c0a1a374c8 100644 --- a/_maps/configs/inteq_vaquero.json +++ b/_maps/configs/inteq_vaquero.json @@ -3,6 +3,7 @@ "map_name": "Vaquero-class Light Frigate", "faction": "/datum/faction/inteq", "prefix": "IRMV", + "manufacturer": "Hardline Salvage and Mining", "description": "The Vaquero is a flexible and cheap military conversion of a light commercial freighter, widely used by Inteq Risk Management Group for picket, reconnaissance, and light escort duty, or for contracts that don't warrant a larger, more specialized ship. Unlike most Inteq ships, the Vaquero features basic medical, engineering, and military equipment all in one package, and its minimal crew requirements are an excellent fit for Vanguards with a smaller command and for training missions. Like its peers, it features a large cargo bay, which can be reconfigured as needed.", "tags": [ "Generalist" diff --git a/_maps/configs/minutemen_atlas.json b/_maps/configs/minutemen_atlas.json index 32f30caa5b75..894ef5dc50b0 100644 --- a/_maps/configs/minutemen_atlas.json +++ b/_maps/configs/minutemen_atlas.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Atlas-class Light Armored Crusier", "prefix": "CMSV", + "manufacturer": "Lanchester Shipyards", "namelists": ["GENERAL", "CLIP MINUTEMEN", "NATURAL_AGGRESSIVE"], "description": "The Atlas-Class is the designation for some of the oldest serving vessels in the Confederated League's military fleet. Originally the Atlantas-class, the design of the Atlantas was taken by the Colonial Militia just before the beginning of the war with the Old Frontiersmen, playing a pivotal role in multiple skirmishes. It is small in size and crew, well-rounded, and well-suited as an unexpensive hit-and-run vessel. Despite its age, the Atlas continues to serve the Confederated League for peacekeeping missions and driving off small crews of pirates from colonies.", "tags": [ diff --git a/_maps/configs/nanotrasen_delta.json b/_maps/configs/nanotrasen_delta.json index cf28abc50219..fe6345afbc0d 100644 --- a/_maps/configs/nanotrasen_delta.json +++ b/_maps/configs/nanotrasen_delta.json @@ -3,6 +3,7 @@ "map_name": "Delta-class Frigate", "faction": "/datum/faction/nt/ns_logi", "prefix": "NSSV", + "manufacturer": "Nanotrasen Spaceworks", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/nanotrasen_harrier.json b/_maps/configs/nanotrasen_harrier.json index 161a699c2783..e627c0ed2044 100644 --- a/_maps/configs/nanotrasen_harrier.json +++ b/_maps/configs/nanotrasen_harrier.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Harrier-class Exploration Cruiser", "prefix": "NTSV", + "manufacturer": "Nanotrasen Spaceworks", "faction": "/datum/faction/nt", "namelists": [ "NANOTRASEN", diff --git a/_maps/configs/nanotrasen_meta.json b/_maps/configs/nanotrasen_meta.json index 207a6a89864b..963c31a34adf 100644 --- a/_maps/configs/nanotrasen_meta.json +++ b/_maps/configs/nanotrasen_meta.json @@ -3,6 +3,7 @@ "map_name": "Meta-class Freighter", "faction": "/datum/faction/nt", "prefix": "NTSV", + "manufacturer": "Nanotrasen Spaceworks", "map_short_name": "Meta-class", "description": "The Meta-class is a medium freight vessel designed for comfort and sustainability over long journeys of delivering cargo. Most, if not all of these ships are no longer under the direct management of the Company, leaving regulation and professionalism at the behest of individual captains. They can be found running independent contracts, delivering cargo, smuggling illicit goods, and generally trying to stay afloat ever since the collapse of Nanotrasen's operations in the frontier.", "tags": [ diff --git a/_maps/configs/nanotrasen_ranger.json b/_maps/configs/nanotrasen_ranger.json index fedc351e03b0..f5568a0a0343 100644 --- a/_maps/configs/nanotrasen_ranger.json +++ b/_maps/configs/nanotrasen_ranger.json @@ -1,6 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "prefix": "VISV", + "manufacturer": "Nanotrasen Spaceworks", "map_name": "Ranger-class Aid Vessel", "faction": "/datum/faction/nt/vigilitas", "namelists": [ diff --git a/_maps/configs/nanotrasen_tegu.json b/_maps/configs/nanotrasen_tegu.json index 92b8ddfa5fc1..993536ac2722 100644 --- a/_maps/configs/nanotrasen_tegu.json +++ b/_maps/configs/nanotrasen_tegu.json @@ -3,6 +3,7 @@ "map_name": "Tegu-class Communications Freighter", "faction": "/datum/faction/nt", "prefix": "NTSV", + "manufacturer": "Nanotrasen Spaceworks", "namelists": [ "NANOTRASEN", "SPACE", diff --git a/_maps/configs/pgf_crying_sun.json b/_maps/configs/pgf_crying_sun.json index fd8bfa3347b4..d6932a6efcb8 100644 --- a/_maps/configs/pgf_crying_sun.json +++ b/_maps/configs/pgf_crying_sun.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "faction": "/datum/faction/pgf", "prefix": "PGFN", + "manufacturer": "Etherbor Lihmona Shipyards", "map_name": "Crying Sun-class Light Frigate", "namelists": [ "PGF" diff --git a/_maps/configs/pgf_elated_bolide.json b/_maps/configs/pgf_elated_bolide.json index 6c3fe8e153c0..9f1698b9585c 100644 --- a/_maps/configs/pgf_elated_bolide.json +++ b/_maps/configs/pgf_elated_bolide.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "faction": "/datum/faction/pgf", "prefix": "PGFN", + "manufacturer": "Etherbor Lihmona Shipyards", "map_name": "Elated Bolide-Class Assault Lander", "namelists": [ "PGF" diff --git a/_maps/configs/pgf_woeful_cthonian.json b/_maps/configs/pgf_woeful_cthonian.json index 442ebd2cc066..57ac133e3c71 100644 --- a/_maps/configs/pgf_woeful_cthonian.json +++ b/_maps/configs/pgf_woeful_cthonian.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "faction": "/datum/faction/pgf", "prefix": "PGFN", + "manufacturer": "Axilai Orbital Works", "map_name": "Woeful Cthonian-class Patrol Cutter", "namelists": [ "PGF" diff --git a/_maps/configs/pirate_libertatia.json b/_maps/configs/pirate_libertatia.json index 9a77cc2c5dec..5ba322f61f84 100644 --- a/_maps/configs/pirate_libertatia.json +++ b/_maps/configs/pirate_libertatia.json @@ -9,6 +9,7 @@ ], "faction": "/datum/faction/frontier", "prefix": "ISV", + "manufacturer": "Miskilamo Spacefaring", "namelists": [ "PIRATES", "NATURAL_AGGRESSIVE" diff --git a/_maps/configs/pirate_tortuga.json b/_maps/configs/pirate_tortuga.json index 6543d349bad9..e72dc3df25c9 100644 --- a/_maps/configs/pirate_tortuga.json +++ b/_maps/configs/pirate_tortuga.json @@ -3,6 +3,7 @@ "map_name": "Tortuga-class Converted Cargo Freighter", "faction": "/datum/faction/frontier", "prefix": "ISV", + "manufacturer": "Miskilamo Spacefaring", "namelists": [ "PIRATES", "BRITISH_NAVY" diff --git a/_maps/configs/syndicate_cybersun_litieguai.json b/_maps/configs/syndicate_cybersun_litieguai.json index 41fb97deb3ac..a79781362c3d 100644 --- a/_maps/configs/syndicate_cybersun_litieguai.json +++ b/_maps/configs/syndicate_cybersun_litieguai.json @@ -3,6 +3,7 @@ "map_name": "Li Tieguai-class Rescue Ship", "faction": "/datum/faction/syndicate/cybersun", "prefix": "CSSV", + "manufacturer": "ISF Spacecraft", "map_short_name": "Li Tieguai-class", "description": "A small, nimble, and exceptionally well-built medical response vessel, the Li Tieguai is a recent addition to Cybersun’s fleet, forming a critical component of their Frontier stabilization program. Li Tieguais come equipped with high-end medical equipment, including a selection of Cybersun augments and prosthetics, as well as weaponry and armor sufficient to protect its personnel in the often-dangerous Frontier sectors, so that they can offer premium healthcare (at premium prices) in even the most dangerous of scenarios.", "tags": [ diff --git a/_maps/configs/syndicate_gorlex_komodo.json b/_maps/configs/syndicate_gorlex_komodo.json index 5044590efb15..c6bb9d806f7c 100644 --- a/_maps/configs/syndicate_gorlex_komodo.json +++ b/_maps/configs/syndicate_gorlex_komodo.json @@ -1,6 +1,7 @@ { "faction": "/datum/faction/syndicate/hardliners", "prefix": "ISV", + "manufacturer": "Cybersun", "namelists": [ "GORLEX", "NATURAL_AGGRESSIVE", diff --git a/_maps/configs/syndicate_ngr_derecho.json b/_maps/configs/syndicate_ngr_derecho.json index e65ab90e3c7c..b607a903b482 100644 --- a/_maps/configs/syndicate_ngr_derecho.json +++ b/_maps/configs/syndicate_ngr_derecho.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "faction": "/datum/faction/syndicate/ngr", "prefix": "NGRV", + "manufacturer": "Hardline Salvage and Mining", "namelists": [ "GORLEX", "NATURAL_AGGRESSIVE", diff --git a/_maps/configs/syndicate_ngr_kaliandhi.json b/_maps/configs/syndicate_ngr_kaliandhi.json index 81b32af32741..e46133492841 100644 --- a/_maps/configs/syndicate_ngr_kaliandhi.json +++ b/_maps/configs/syndicate_ngr_kaliandhi.json @@ -1,6 +1,7 @@ { "faction": "/datum/faction/syndicate/ngr", "prefix": "NGRV", + "manufacturer": "Hardline Salvage and Mining", "namelists": [ "GORLEX", "NATURAL_AGGRESSIVE", diff --git a/_maps/configs/syndicate_panacea.json b/_maps/configs/syndicate_panacea.json index f56158d9d9df..f86e9c54439c 100644 --- a/_maps/configs/syndicate_panacea.json +++ b/_maps/configs/syndicate_panacea.json @@ -1,5 +1,6 @@ { "prefix": "SUNS", + "manufacturer": "Cybersun", "map_name": "Panacea-class Infirm Vessel", "map_short_name": "Panacea-class", "map_path": "_maps/shuttles/syndicate/syndicate_panacea.dmm", diff --git a/_maps/configs/syndicate_twinkleshine.json b/_maps/configs/syndicate_twinkleshine.json index b1be2eb333d8..258cc1cc9858 100644 --- a/_maps/configs/syndicate_twinkleshine.json +++ b/_maps/configs/syndicate_twinkleshine.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "faction": "/datum/faction/syndicate", "prefix": "SSV", + "manufacturer": "Cybersun", "namelists": [ "GORLEX", "SPACE", diff --git a/_maps/example_ship_config.json b/_maps/example_ship_config.json index e5dbd47d61e2..c94b171bfc80 100644 --- a/_maps/example_ship_config.json +++ b/_maps/example_ship_config.json @@ -4,6 +4,7 @@ "map_short_name": "Test-class", "faction": "/datum/faction/independent", "prefix": "STSV", + "manufacturer": "Ihejirika Civ. Manufacturing", "namelists": ["GENERAL", "SPACE", "MYTHOLOGICAL", "WEAPONS"], "map_path": "_maps/shuttles/shiptest/null.dmm", "limit": 1, diff --git a/_maps/ship_config_schema.json b/_maps/ship_config_schema.json index 1efa9eb95f2c..dba271025a1d 100644 --- a/_maps/ship_config_schema.json +++ b/_maps/ship_config_schema.json @@ -39,6 +39,11 @@ "description": "The prefix of the ship class, appended to randomly generated names when they're first purchased.", "maxLength": 5 }, + "manufacturer": { + "title": "Ship Manufacturer", + "type": [ "null", "string" ], + "description": "The manufacturer of the ship class, used in autowiki templates." + }, "namelists": { "title": "Namelists", "type": "array", diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 3fecc68fbfe4..ce076357c0ac 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -207,6 +207,9 @@ SUBSYSTEM_DEF(mapping) if(istext(data["prefix"])) S.prefix = data["prefix"] + if(istext(data["manufacturer"])) + S.manufacturer = data["manufacturer"] + if(istext(data["faction"])) S.faction_path = text2path(data["faction"]) if(S.faction_path) diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 9e0e8c125978..94dd2122c14d 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -19,6 +19,8 @@ var/list/name_categories = list("GENERAL") /// The prefix of the ship's name. var/prefix = "ISV" + /// The name of the ship's manufacturer. + var/manufacturer = "Unknown" /// The full name of the ship's faction. var/faction_name = "Independent" var/faction_path = /datum/faction/independent diff --git a/code/modules/autowiki/pages/ships.dm b/code/modules/autowiki/pages/ships.dm index c59a321942b6..56b59c8b6540 100644 --- a/code/modules/autowiki/pages/ships.dm +++ b/code/modules/autowiki/pages/ships.dm @@ -28,6 +28,7 @@ "name" = ship_name, "shortname" = escape_value(ship.short_name) || ship_name, "description" = escape_value(ship.description), + "manufacturer" = escape_value(ship.manufacturer), "prefix" = escape_value(ship.prefix), "tags" = escape_value(ship.tags?.Join(", ")), "limit" = ship.limit, From 39dcf086a925d8dcf7f272ef4e61e87ebb0fd195 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 7 Jan 2025 06:35:01 -0600 Subject: [PATCH 003/118] Automatic changelog generation for PR #3930 [ci skip] --- html/changelogs/AutoChangeLog-pr-3930.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3930.yml diff --git a/html/changelogs/AutoChangeLog-pr-3930.yml b/html/changelogs/AutoChangeLog-pr-3930.yml new file mode 100644 index 000000000000..0ffccccddd8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3930.yml @@ -0,0 +1,4 @@ +author: Ical92 +changes: + - {rscadd: Wiki ship templates now show ship manufacturers} +delete-after: true From 9e162aa6b6cc5da620e16f345a419a7b46aae2c8 Mon Sep 17 00:00:00 2001 From: Sun-Soaked <45698967+Sun-Soaked@users.noreply.github.com> Date: Tue, 7 Jan 2025 08:06:45 -0500 Subject: [PATCH 004/118] Soulifies Backpacks & Duffels (#3865) ## About The Pull Request Backpacks and Duffel bags can now carry bulky items, and Duffel bags now have more storage space. Backpacks cannot be opened while worn on your back. Duffels now cannot be opened unless placed on the ground. ## Why It's Good For The Game This gives satchel/messenger bag's low storage space an upside(access from back), while justifying putting bigger items in storage objects that really should be able to carry them. Duffel bags are now very well-storage spaced, and can be specialized as a kind of stash bag. Backpack and duffel bags may need to have even more storage space to compensate, but for now I've been pretty frugal in buffing it. It's soul. Soon you will understand my vision ## Changelog :cl: balance: Backpacks can now carry Bulky items, but can no longer be accessed while on your back. balance: Duffel bags can now carry more, but must be placed on the ground to be opened. /:cl: --------- Signed-off-by: Sun-Soaked <45698967+Sun-Soaked@users.noreply.github.com> Co-authored-by: Theos --- code/__DEFINES/storage.dm | 8 +-- code/datums/components/storage/storage.dm | 68 ++++++++++++++++--- code/game/objects/items.dm | 8 +++ code/game/objects/items/storage/backpack.dm | 20 +++++- code/game/objects/items/storage/ration.dm | 2 +- .../clothing/outfits/ert/roumain_ert.dm | 2 +- .../clothing/outfits/factions/minutemen.dm | 3 +- .../mob/living/carbon/human/species.dm | 2 +- code/modules/mob/living/carbon/inventory.dm | 2 +- 9 files changed, 96 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/storage.dm b/code/__DEFINES/storage.dm index 01d77e0df2f2..ac23c09538e6 100644 --- a/code/__DEFINES/storage.dm +++ b/code/__DEFINES/storage.dm @@ -76,16 +76,16 @@ GLOBAL_LIST_INIT(default_weight_class_to_volume, list( // #define MAX_WEIGHT_CLASS_S_CONTAINER WEIGHT_CLASS_SMALL #define MAX_WEIGHT_CLASS_M_CONTAINER WEIGHT_CLASS_NORMAL -#define MAX_WEIGHT_CLASS_BACKPACK WEIGHT_CLASS_NORMAL +#define MAX_WEIGHT_CLASS_BACKPACK WEIGHT_CLASS_BULKY #define MAX_WEIGHT_CLASS_DUFFEL WEIGHT_CLASS_BULKY // max_volume for storages #define STORAGE_VOLUME_CONTAINER_S DEFAULT_VOLUME_NORMAL //4 small items #define STORAGE_VOLUME_CONTAINER_M (DEFAULT_VOLUME_NORMAL * 2) //8 small items #define STORAGE_VOLUME_SATCHEL (DEFAULT_VOLUME_NORMAL * 4) //4 normal items -#define STORAGE_VOLUME_BACKPACK (DEFAULT_VOLUME_NORMAL * 6) //1.5x satchel, 3 bulky items -#define STORAGE_VOLUME_DUFFLEBAG (DEFAULT_VOLUME_NORMAL * 8) // 2 huge items, or 4 bulky items -#define STORAGE_VOLUME_BAG_OF_HOLDING (DEFAULT_VOLUME_NORMAL * 9) //1.5X backpack +#define STORAGE_VOLUME_BACKPACK (DEFAULT_VOLUME_NORMAL * 6) //3 bulky items +#define STORAGE_VOLUME_DUFFLEBAG (DEFAULT_VOLUME_NORMAL * 10) //~1.4X backpack, 5 bulky items +#define STORAGE_VOLUME_BAG_OF_HOLDING (DEFAULT_VOLUME_NORMAL * 10) //Whitelist for the suit storage slot on medical suits #define MEDICAL_SUIT_ALLOWED_ITEMS list( \ diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 6350d737d31b..268802e14dce 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -25,7 +25,12 @@ var/list/mob/is_using //lazy list of mobs looking at the contents of this storage. var/locked = FALSE //when locked nothing can see inside or use it. - var/locked_flavor = "locked" //prevents tochat messages related to locked from sending + var/locked_flavor = "seems to be locked!" //prevents tochat messages related to locked from sending + + /// If the storage object can be accessed while equipped to slot by mob(e.g. backpack in back slot) + var/worn_access = TRUE + /// If the storage object can be accessed while being held anywhere on a mob + var/carry_access = TRUE /// Storage flags, including what kinds of limiters we use for how many items we can hold var/storage_flags = STORAGE_FLAGS_LEGACY_DEFAULT @@ -110,6 +115,7 @@ RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, PROC_REF(preattack_intercept)) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(attack_self)) RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(signal_on_pickup)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(signal_on_equip)) RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, PROC_REF(close_all)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) @@ -222,7 +228,7 @@ SIGNAL_HANDLER if(locked) - to_chat(M, "[parent] seems to be [locked_flavor]!") + to_chat(M, "[parent] [locked_flavor]") return FALSE if((M.get_active_held_item() == parent) && allow_quick_empty) INVOKE_ASYNC(src, PROC_REF(quick_empty), M) @@ -233,8 +239,10 @@ if(!isitem(O) || !click_gather || SEND_SIGNAL(O, COMSIG_CONTAINS_STORAGE)) return FALSE . = COMPONENT_NO_ATTACK + if(!access_check()) + return FALSE if(locked) - to_chat(M, "[parent] seems to be [locked_flavor]!") + to_chat(M, "[parent] [locked_flavor]") return FALSE var/obj/item/I = O if(collection_mode == COLLECT_ONE) @@ -309,6 +317,8 @@ var/atom/A = parent if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated()) return + if(!access_check()) + return FALSE if(locked) to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE @@ -426,6 +436,8 @@ var/atom/A = parent var/atom/dump_destination = dest_object.get_dumping_location() if(M.CanReach(A) && dump_destination && M.CanReach(dump_destination)) + if(!access_check()) + return FALSE if(locked) to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE @@ -530,6 +542,8 @@ if(locked && !force) to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE + if(!access_check()) + return FALSE if(force || M.CanReach(parent, view_only = TRUE)) if(use_sound && !silent) playsound(A, use_sound, 50, TRUE, -5) @@ -548,7 +562,7 @@ //This proc return 1 if the item can be picked up and 0 if it can't. //Set the stop_messages to stop it from printing messages -/datum/component/storage/proc/can_be_inserted(obj/item/I, stop_messages = FALSE, mob/M) +/datum/component/storage/proc/can_be_inserted(obj/item/I, stop_messages = FALSE, mob/M, bypass_access = FALSE) if(!istype(I) || (I.item_flags & ABSTRACT)) return FALSE //Not an item if(I == parent) @@ -557,6 +571,9 @@ var/atom/host = parent if(real_location == I.loc) return FALSE //Means the item is already in the storage item + if(!bypass_access)//For stuff like setting up outfits, setting up roundstart backpacks, etc. + if(!access_check()) + return FALSE if(locked) if(M && !stop_messages) host.add_fingerprint(M) @@ -660,17 +677,17 @@ var/obj/O = parent O.update_appearance() -/datum/component/storage/proc/signal_insertion_attempt(datum/source, obj/item/I, mob/M, silent = FALSE, force = FALSE) +/datum/component/storage/proc/signal_insertion_attempt(datum/source, obj/item/I, mob/M, silent = FALSE, force = FALSE, bypass_access = FALSE) SIGNAL_HANDLER - if((!force && !can_be_inserted(I, TRUE, M)) || (I == parent)) + if((!force && !can_be_inserted(I, TRUE, M, bypass_access)) || (I == parent)) return FALSE return handle_item_insertion(I, silent, M) -/datum/component/storage/proc/signal_can_insert(datum/source, obj/item/I, mob/M, silent = FALSE) +/datum/component/storage/proc/signal_can_insert(datum/source, obj/item/I, mob/M, silent = FALSE, bypass_access = FALSE) SIGNAL_HANDLER - return can_be_inserted(I, silent, M) + return can_be_inserted(I, silent, M, bypass_access) /datum/component/storage/proc/show_to_ghost(datum/source, mob/dead/observer/M) SIGNAL_HANDLER @@ -755,6 +772,8 @@ if(A.loc == user) . = COMPONENT_NO_ATTACK_HAND + if(!access_check()) + return FALSE if(locked) to_chat(user, "[parent] seems to be [locked_flavor]!") else @@ -769,6 +788,12 @@ for(var/mob/M in can_see_contents() - user) close(M) +/datum/component/storage/proc/signal_on_equip(datum/source, mob/user) + SIGNAL_HANDLER + + if(!worn_access) + close(user) + /datum/component/storage/proc/signal_take_obj(datum/source, atom/movable/AM, new_loc, force = FALSE) SIGNAL_HANDLER @@ -794,6 +819,8 @@ /datum/component/storage/proc/on_alt_click_async(datum/source, mob/user) if(!isliving(user) || !user.CanReach(parent) || user.incapacitated()) return + if(!access_check()) + return FALSE if(locked) to_chat(user, "[parent] seems to be [locked_flavor]!") return @@ -833,3 +860,28 @@ //Gets our max volume /datum/component/storage/proc/get_max_volume() return max_volume || AUTO_SCALE_STORAGE_VOLUME(max_w_class, max_combined_w_class) + +//checks for mob-related storage access conditions +/datum/component/storage/proc/access_check(message = TRUE) + var/atom/ourparent = parent + var/datum/component/storage/otherstorage + + //if we are inside another storage object, let's move up and check access there instead + if(istype(ourparent.loc, /obj/item/storage)) + ourparent = ourparent.loc + //get our parent's storage component so we can check their access vars + otherstorage = ourparent.GetComponent(/datum/component/storage) + + if(ismob(ourparent.loc)) + var/mob/holder = ourparent.loc + + if(otherstorage? !otherstorage.carry_access : !carry_access) + if(message) + to_chat(holder, span_warning( "[ourparent] is too cumbersome to open inhand, you're going to have to set it down!")) + return FALSE + + if((otherstorage? !otherstorage.worn_access : !worn_access) && !holder.held_items.Find(ourparent)) + if(message) + to_chat(holder, span_warning( "Your arms aren't long enough to reach [ourparent] while it's on your back!")) + return FALSE + return TRUE diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c4358a71714d..23de618975a8 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -421,6 +421,14 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(anchored) return + //check if the item is inside another item's storage + if(istype(loc, /obj/item/storage)) + //if so, can we actually access it? + var/datum/component/storage/ourstorage = loc.GetComponent(/datum/component/storage) + if(!ourstorage.access_check()) + SEND_SIGNAL(loc, COMSIG_TRY_STORAGE_HIDE_FROM, user)//you're not supposed to be in here right now, punk! + return + if(resistance_flags & ON_FIRE) var/mob/living/carbon/C = user var/can_handle_hot = FALSE diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index d785eacd9c87..88dd8d3cb534 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -46,6 +46,15 @@ STR.max_volume = STORAGE_VOLUME_BACKPACK STR.max_w_class = MAX_WEIGHT_CLASS_BACKPACK STR.use_sound = 'sound/items/storage/unzip.ogg' + STR.worn_access = FALSE + +/obj/machinery/examine(mob/user) + . = ..() + var/datum/component/storage/bpack = GetComponent(/datum/component/storage) + if(bpack.worn_access == FALSE) + . += span_notice("You won't be able to open this once it's on your back.") + if(bpack.carry_access == FALSE) + . += span_notice("You'll have to set this down on the floor if you want to open it.") /* * Backpack Types @@ -192,8 +201,9 @@ /obj/item/storage/backpack/satchel/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_volume = STORAGE_VOLUME_BACKPACK + STR.max_volume = STORAGE_VOLUME_SATCHEL STR.max_w_class = MAX_WEIGHT_CLASS_M_CONTAINER + STR.worn_access = TRUE /obj/item/storage/backpack/satchel/leather name = "leather satchel" @@ -324,6 +334,13 @@ greyscale_icon_state = "satchel" greyscale_colors = list(list(15, 16), list(19, 13), list(13, 18)) +/obj/item/storage/backpack/messenger/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_volume = STORAGE_VOLUME_SATCHEL + STR.max_w_class = MAX_WEIGHT_CLASS_M_CONTAINER + STR.worn_access = TRUE + /obj/item/storage/backpack/messenger/chem name = "chemistry messenger bag" desc = "A sterile backpack worn over one shoulder. This one is in Chemistry colors." @@ -404,6 +421,7 @@ STR.max_w_class = MAX_WEIGHT_CLASS_DUFFEL LAZYINITLIST(STR.exception_hold) // This code allows you to fit one mob holder into a duffel bag STR.exception_hold += typecacheof(/obj/item/clothing/head/mob_holder) + STR.carry_access = FALSE /obj/item/storage/backpack/duffelbag/captain name = "captain's duffel bag" diff --git a/code/game/objects/items/storage/ration.dm b/code/game/objects/items/storage/ration.dm index 9a9e4a5a2617..9254e3014f7b 100644 --- a/code/game/objects/items/storage/ration.dm +++ b/code/game/objects/items/storage/ration.dm @@ -32,7 +32,7 @@ /obj/item/reagent_containers/food, /obj/item/ration_heater)) STR.locked = TRUE - STR.locked_flavor = "sealed closed" + STR.locked_flavor = "seems to be sealed closed!" /obj/item/storage/ration/proc/open_ration(mob/user) to_chat(user, "You tear open \the [src].") diff --git a/code/modules/clothing/outfits/ert/roumain_ert.dm b/code/modules/clothing/outfits/ert/roumain_ert.dm index efe7828173be..74802bdbba0b 100644 --- a/code/modules/clothing/outfits/ert/roumain_ert.dm +++ b/code/modules/clothing/outfits/ert/roumain_ert.dm @@ -32,7 +32,7 @@ l_pocket = /obj/item/ammo_box/a44roum_speedloader - backpack_contents = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/pan = 3, /obj/item/ammo_box/a44roum_speedloader = 2, /obj/item/storage/box/ammo/a44roum) + backpack_contents = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/pan = 2, /obj/item/ammo_box/a44roum_speedloader = 2, /obj/item/storage/box/ammo/a44roum) /datum/outfit/job/roumain/ert/vickland name = "ERT - Saint-Roumain Hunter (Vickland)" // vickland and candor diff --git a/code/modules/clothing/outfits/factions/minutemen.dm b/code/modules/clothing/outfits/factions/minutemen.dm index 3f99cc85087f..040acb06d7c4 100644 --- a/code/modules/clothing/outfits/factions/minutemen.dm +++ b/code/modules/clothing/outfits/factions/minutemen.dm @@ -224,8 +224,7 @@ l_hand = /obj/item/storage/briefcase - backpack = /obj/item/storage/backpack/satchel/leather - satchel = /obj/item/storage/backpack/satchel/leather + backpack = /obj/item/storage/backpack/industrial l_pocket = /obj/item/toy/crayon/white r_pocket = /obj/item/radio diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 53de44fcd934..911532299839 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1273,7 +1273,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) return TRUE if(ITEM_SLOT_BACKPACK) if(H.back) - if(SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE)) + if(SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE, TRUE)) return TRUE return FALSE return FALSE //Unsupported slot diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index f1cbd3156723..63032ceb1eca 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -106,7 +106,7 @@ put_in_hands(I) update_inv_hands() if(ITEM_SLOT_BACKPACK) - if(!back || !SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) + if(!back || !SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE, FALSE, TRUE)) not_handled = TRUE if(ITEM_SLOT_ID) if(!wear_id || !SEND_SIGNAL(wear_id, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) From 1e878dbe14ff2e86aabea269c296a2934ff3f664 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 7 Jan 2025 07:17:24 -0600 Subject: [PATCH 005/118] Automatic changelog generation for PR #3865 [ci skip] --- html/changelogs/AutoChangeLog-pr-3865.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3865.yml diff --git a/html/changelogs/AutoChangeLog-pr-3865.yml b/html/changelogs/AutoChangeLog-pr-3865.yml new file mode 100644 index 000000000000..9aa0027c2e74 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3865.yml @@ -0,0 +1,7 @@ +author: Sun-Soaked +changes: + - {balance: 'Backpacks can now carry Bulky items, but can no longer be accessed + while on your back.'} + - {balance: 'Duffel bags can now carry more, but must be placed on the ground to + be opened.'} +delete-after: true From 71ce1f6d61098e9a5a520f10c484dedf13b30385 Mon Sep 17 00:00:00 2001 From: Ical <86125936+Ical92@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:44:31 -0500 Subject: [PATCH 006/118] Crates load onto shelves when mapped (#3970) ## About The Pull Request Crates mapped on top of shelves now are loaded onto the shelf automatically, additionally, adds a new mapping helper to load crates onto nearby shelves. ![image](https://github.com/user-attachments/assets/84e3d443-e48a-45cb-8650-688be8b6661d) (Example on the Talos-class, loading crates onto shelves and nearby crates loaded using the mapping helper) ## Why It's Good For The Game Players wont need to load crates onto shelves at the start of each round, and mappers can be more creative with their use of shelves. ## Changelog :cl: add: Outpost staff have hired professional crate shelvers /:cl: --------- Signed-off-by: Ical <86125936+Ical92@users.noreply.github.com> --- .../independent/independent_shetland.dmm | 68 ++------ .../independent/independent_sunskipper.dmm | 138 ++++++--------- _maps/shuttles/inteq/inteq_talos.dmm | 88 +++------- .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 160 ++++++++---------- _maps/shuttles/pgf/pgf_elated_bolide.dmm | 100 +++++------ _maps/shuttles/pgf/pgf_woeful_cthonian.dmm | 59 ++++--- .../syndicate/syndicate_ngr_derecho.dmm | 103 ++++------- .../syndicate/syndicate_ngr_kaliandhi.dmm | 138 ++++++--------- .../structures/crates_lockers/crates.dm | 2 + code/game/objects/structures/crateshelf.dm | 22 ++- code/modules/mapping/mapping_helpers.dm | 19 +++ icons/effects/mapping/mapping_helpers.dmi | Bin 12739 -> 9938 bytes 12 files changed, 364 insertions(+), 533 deletions(-) diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 242f488d577e..846ae4e74e8d 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -117,9 +117,7 @@ /turf/open/floor/plating, /area/ship/hallway/aft) "bc" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -161,9 +159,7 @@ /area/ship/hallway/fore) "by" = ( /obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ship/engineering/engine) @@ -402,9 +398,7 @@ /turf/closed/wall/r_wall, /area/ship/maintenance/port) "dq" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fueled/plasma, /turf/open/floor/engine/hull, /area/ship/maintenance/port) "dB" = ( @@ -450,9 +444,7 @@ "ea" = ( /obj/structure/closet/emcloset, /obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/corner/opaque/black/half, /turf/open/floor/plasteel, @@ -554,9 +546,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engine) "eV" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -841,9 +831,7 @@ /turf/open/floor/plating, /area/ship/medical) "gS" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fueled/plasma, /turf/open/floor/engine/hull, /area/ship/maintenance/starboard) "gV" = ( @@ -1213,9 +1201,7 @@ id = "shetland_cargo"; locked = 1 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "jY" = ( @@ -2785,9 +2771,7 @@ /turf/open/floor/plating, /area/ship/hallway/central) "wT" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -3093,8 +3077,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/grimy, /area/ship/security) @@ -3386,7 +3369,6 @@ "BL" = ( /obj/machinery/door/airlock/external, /obj/docking_port/mobile{ - can_move_docking_ports = 1; dir = 2; launch_status = 0; port_direction = 8; @@ -4236,7 +4218,6 @@ name = "Nugget" }, /obj/structure/bed/dogbed{ - anchored = 1; can_be_unanchored = 1 }, /turf/open/floor/carpet/blue, @@ -4443,8 +4424,7 @@ /obj/effect/spawner/random/bedsheet, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) @@ -4497,9 +4477,7 @@ /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) "Lu" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -5078,9 +5056,7 @@ /turf/open/floor/plasteel, /area/ship/medical) "PP" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/machinery/door/poddoor{ dir = 4; id = "shetportthrusters" @@ -5250,9 +5226,7 @@ /turf/open/floor/plasteel, /area/ship/hallway/fore) "QV" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/machinery/door/poddoor{ dir = 4; id = "shetstarboardengine" @@ -5537,6 +5511,7 @@ /obj/structure/cable{ icon_state = "0-4" }, +/obj/effect/mapping_helpers/crate_shelve, /turf/open/floor/plasteel/patterned/grid, /area/ship/cargo) "Tk" = ( @@ -5861,9 +5836,7 @@ id = "shetland_cargo"; locked = 1 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "Ws" = ( @@ -6104,9 +6077,7 @@ /area/ship/crew/dorm) "YA" = ( /obj/machinery/power/smes/engineering, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plating, /area/ship/engineering/electrical) "YN" = ( @@ -6223,8 +6194,7 @@ }, /obj/structure/curtain, /obj/structure/sign/poster/random{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/white, /area/ship/medical) @@ -6264,9 +6234,7 @@ /turf/open/floor/plasteel/patterned, /area/ship/crew/cryo) "ZT" = ( -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/structure/cable{ icon_state = "8-9" }, diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm index 12f34a8991ac..767b578c8f22 100644 --- a/_maps/shuttles/independent/independent_sunskipper.dmm +++ b/_maps/shuttles/independent/independent_sunskipper.dmm @@ -112,7 +112,6 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#332521" }, /turf/open/floor/wood/ebony, @@ -121,9 +120,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -426,7 +423,6 @@ /area/ship/hallway/central) "eI" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/chair/wood{ @@ -558,7 +554,6 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /turf/open/floor/wood/walnut, @@ -571,9 +566,7 @@ /turf/open/floor/wood/walnut, /area/ship/crew/canteen) "hi" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -868,17 +861,6 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/structure/closet/crate/wooden{ - name = "mining gear crate" - }, -/obj/item/pickaxe, -/obj/item/pickaxe, -/obj/item/melee/knife/hunting, -/obj/item/melee/knife/hunting, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/head/hardhat/mining, -/obj/item/clothing/head/hardhat/mining, /obj/machinery/firealarm/directional/south{ pixel_x = -12 }, @@ -947,15 +929,32 @@ /area/ship/bridge) "lV" = ( /obj/structure/crate_shelf, +/obj/structure/closet/crate{ + name = "supplies crate" + }, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/peppermill, +/obj/item/reagent_containers/condiment/peppermill, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/plastic/five, /obj/structure/sign/poster/contraband/space_cube{ pixel_y = 32 }, /turf/open/floor/plasteel/tech, /area/ship/cargo) "mk" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, @@ -971,7 +970,6 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#332521" }, /turf/open/floor/wood/ebony, @@ -1027,7 +1025,6 @@ /area/ship/crew/canteen) "mW" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/railing/wood{ @@ -1161,7 +1158,6 @@ dir = 10 }, /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#332521" }, /turf/open/floor/wood/ebony, @@ -1293,9 +1289,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -1351,9 +1345,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -1587,8 +1579,7 @@ dir = 1 }, /obj/structure/bed/dogbed{ - name = "Remy's bed"; - anchored = 1 + name = "Remy's bed" }, /mob/living/simple_animal/mouse/gray{ name = "Remy" @@ -1649,9 +1640,7 @@ /obj/structure/cable/green{ icon_state = "4-9" }, -/obj/structure/chair/wood{ - dir = 2 - }, +/obj/structure/chair/wood, /turf/open/floor/wood/walnut, /area/ship/crew/canteen) "uP" = ( @@ -1679,7 +1668,6 @@ /obj/structure/fluff/hedge, /obj/structure/railing/wood{ layer = 3.1; - dir = 2; color = "#792f27" }, /turf/open/floor/plasteel/tech/grid, @@ -1924,7 +1912,6 @@ /area/ship/crew/canteen) "yH" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/chair/sofa/red/directional/north, @@ -1945,9 +1932,7 @@ color = "#543C30"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/wood/walnut, /area/ship/crew/canteen) "zc" = ( @@ -1991,6 +1976,18 @@ /obj/effect/turf_decal/dept/cargo{ dir = 4 }, +/obj/structure/closet/crate/wooden{ + name = "mining gear crate" + }, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/melee/knife/hunting, +/obj/item/melee/knife/hunting, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/hardhat/mining, +/obj/item/clothing/head/hardhat/mining, +/obj/effect/mapping_helpers/crate_shelve, /turf/open/floor/plasteel/tech, /area/ship/cargo) "zC" = ( @@ -2054,7 +2051,6 @@ }, /obj/structure/railing/wood{ layer = 3.1; - dir = 2; color = "#792f27" }, /obj/effect/turf_decal/borderfloorblack{ @@ -2722,9 +2718,7 @@ icon_state = "5-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/chair/wood{ - dir = 2 - }, +/obj/structure/chair/wood, /turf/open/floor/wood/walnut, /area/ship/crew/canteen) "Ju" = ( @@ -2873,22 +2867,11 @@ /turf/open/floor/plasteel/patterned, /area/ship/crew/toilet) "Ll" = ( -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/head/helmet/space/eva, -/obj/item/clothing/head/helmet/space/eva, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/eva, -/obj/item/clothing/suit/space/eva, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable/green{ icon_state = "0-4" }, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/internals{ - name = "EVA gear crate" - }, /obj/structure/reagent_dispensers/peppertank{ pixel_x = -32 }, @@ -3081,9 +3064,7 @@ /turf/open/floor/plating, /area/ship/maintenance/aft) "NI" = ( -/obj/structure/chair/wood{ - dir = 2 - }, +/obj/structure/chair/wood, /turf/open/floor/wood/walnut, /area/ship/crew/canteen) "NM" = ( @@ -3115,9 +3096,7 @@ /turf/open/floor/plasteel/mono/white, /area/ship/crew/canteen/kitchen) "OP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/wood/walnut, /area/ship/crew/canteen) "OS" = ( @@ -3453,7 +3432,6 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/effect/turf_decal/siding/wood{ @@ -3549,29 +3527,22 @@ /turf/open/floor/wood/ebony, /area/ship/crew/canteen) "UK" = ( -/obj/structure/closet/crate{ - name = "supplies crate" - }, -/obj/item/reagent_containers/condiment/saltshaker, -/obj/item/reagent_containers/condiment/saltshaker, -/obj/item/reagent_containers/condiment/peppermill, -/obj/item/reagent_containers/condiment/peppermill, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/stack/sheet/plastic/five, /obj/machinery/airalarm/directional/west, +/obj/structure/closet/crate/internals{ + name = "EVA gear crate" + }, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/head/helmet/space/eva, +/obj/item/clothing/head/helmet/space/eva, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/eva, +/obj/item/clothing/suit/space/eva, +/obj/effect/mapping_helpers/crate_shelve, /turf/open/floor/plasteel/tech, /area/ship/cargo) "Ve" = ( @@ -3579,7 +3550,6 @@ pixel_y = 4 }, /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/table/wood/fancy/red_gold, diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index 52342e6c8012..338864dbe56e 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -141,9 +141,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/machinery/door/window/eastright{ name = "Engine Access" }, @@ -235,8 +233,7 @@ anchored = 1; icon_state = "eng_secure"; name = "artificer's locker"; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/item/gear_pack/anglegrinder, /obj/item/radio/headset/alt, @@ -638,9 +635,7 @@ /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "ej" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, @@ -1251,9 +1246,7 @@ /turf/closed/wall/mineral/plastitanium, /area/ship/engineering/engine) "ii" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -1362,9 +1355,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -1445,8 +1436,7 @@ /obj/machinery/light/directional/north, /obj/structure/closet/secure_closet/engineering_welding{ req_access = null; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/effect/turf_decal/techfloor{ dir = 1 @@ -1523,8 +1513,7 @@ /obj/structure/table, /obj/item/paper_bin, /obj/item/folder/syndicate{ - desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'"; - name = "folder" + desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" }, /obj/item/pen, /obj/item/multitool{ @@ -2544,8 +2533,7 @@ /obj/structure/table/reinforced, /obj/item/paper_bin, /obj/item/folder/syndicate{ - desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'"; - name = "folder" + desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" }, /obj/item/pen/fountain, /obj/item/gps{ @@ -2810,6 +2798,7 @@ /obj/item/target{ pixel_x = 5 }, +/obj/effect/mapping_helpers/crate_shelve, /obj/structure/platform/ship_three, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) @@ -3156,9 +3145,7 @@ /turf/open/floor/plasteel/tech, /area/ship/crew/canteen) "sZ" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -3418,9 +3405,7 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "uC" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, @@ -4041,9 +4026,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/machinery/door/window/eastleft{ name = "Engine Access" }, @@ -4459,9 +4442,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -4576,12 +4557,10 @@ /obj/structure/crate_shelf, /obj/structure/closet/crate/medical, /obj/item/storage/firstaid/brute{ - pixel_x = -8; - pixel_y = 0 + pixel_x = -8 }, /obj/item/storage/firstaid/fire{ - pixel_x = 9; - pixel_y = 0 + pixel_x = 9 }, /obj/item/storage/box/bodybags, /obj/structure/platform/ship_three{ @@ -5260,8 +5239,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8; - filter_types = list("n2","co2","bz","water_vapor","miasma","freon","tritium","n20"); - id_tag = null + filter_types = list("n2","co2","bz","water_vapor","miasma","freon","tritium","n20") }, /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 6 @@ -5580,7 +5558,6 @@ req_access_txt = "56" }, /obj/machinery/button/door{ - color = null; dir = 8; id = "talos_tank_fuel"; name = "Access Door Control"; @@ -5816,8 +5793,7 @@ anchored = 1; icon_state = "eng_secure"; name = "artificer's locker"; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/structure/cable{ icon_state = "0-8" @@ -5872,8 +5848,7 @@ }, /obj/structure/table/reinforced, /obj/item/folder/syndicate{ - desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'"; - name = "folder" + desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" }, /obj/item/stamp/inteq/maa, /obj/item/table_bell{ @@ -6709,9 +6684,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /turf/open/floor/plating, /area/ship/engineering) "RC" = ( @@ -6812,9 +6785,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, @@ -6917,9 +6888,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/communications) "SL" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fueled/plasma, /turf/open/floor/plating, /area/ship/engineering) "SN" = ( @@ -7225,8 +7194,7 @@ }, /obj/structure/closet/secure_closet/engineering_electrical{ req_access = null; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/effect/turf_decal/techfloor{ dir = 1 @@ -7402,7 +7370,6 @@ id = "talos_tank_burn"; pixel_x = 4; pixel_y = 21; - req_access = null; req_access_txt = "56" }, /obj/effect/turf_decal/industrial/fire{ @@ -7571,8 +7538,7 @@ anchored = 1; icon_state = "eng_secure"; name = "artificer's locker"; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/item/gear_pack/anglegrinder, /obj/item/radio/headset/alt, @@ -7658,9 +7624,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "Xl" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fueled/plasma, /turf/open/floor/plating, /area/ship/engineering/engine) "Xn" = ( @@ -8002,9 +7966,7 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) "ZJ" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index c14594f0946d..c1e6179a8bfe 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -123,17 +123,52 @@ /turf/open/floor/pod/light, /area/ship/storage/equip) "aK" = ( -/obj/structure/sign/poster/official/ion_carbine{ - pixel_x = 32 - }, -/obj/structure/window/reinforced/spawner, /obj/structure/crate_shelf, +/obj/item/storage/box/ammo/c9mm{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/storage/box/ammo/c9mm{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/storage/box/ammo/c9mm{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/storage/box/ammo/c9mm{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/storage/box/ammo/c9mm_rubber{ + pixel_x = -9 + }, +/obj/structure/closet/crate/secure/gear{ + name = "Ammunition Crate" + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 11 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 11 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 11 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 11 + }, +/obj/item/ammo_box/magazine/co9mm, /obj/effect/turf_decal/industrial/fire{ dir = 8 }, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 5 }, +/obj/structure/window/reinforced/spawner, +/obj/structure/sign/poster/official/ion_carbine{ + pixel_x = 32 + }, /turf/open/floor/plasteel/tech, /area/ship/storage/equip) "aO" = ( @@ -190,9 +225,7 @@ /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "br" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/machinery/door/window/northright{ dir = 4 }, @@ -1315,9 +1348,7 @@ /turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "jb" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fueled/plasma, /turf/open/floor/plating, /area/ship/engineering/engines/port) "jd" = ( @@ -1946,7 +1977,6 @@ /area/ship/hallway/starboard) "nE" = ( /obj/machinery/button/door{ - dir = 2; id = "Ranger_AI_Core_Blasts"; name = "Access Blast Doors"; pixel_x = -2; @@ -1955,7 +1985,6 @@ req_ship_access = 1 }, /obj/machinery/button/shieldwallgen{ - dir = 2; id = "AI_Core_Field_Engi"; pixel_x = 6; pixel_y = 20 @@ -2076,9 +2105,7 @@ /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "oI" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/machinery/door/window/northleft{ dir = 4 }, @@ -2518,9 +2545,7 @@ /turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "rW" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/machinery/door/window/northright{ dir = 4 }, @@ -2756,9 +2781,7 @@ /turf/open/floor/plasteel/white, /area/ship/medical) "tr" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fueled/plasma, /turf/open/floor/plating, /area/ship/engineering/engines/starboard) "tK" = ( @@ -3192,9 +3215,7 @@ /turf/open/floor/plasteel/white, /area/ship/medical) "wc" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/machinery/door/window/northright{ dir = 4 }, @@ -3561,42 +3582,7 @@ /obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 4 }, -/obj/item/storage/box/ammo/c9mm{ - pixel_x = -9; - pixel_y = 9 - }, -/obj/item/storage/box/ammo/c9mm{ - pixel_x = -9; - pixel_y = 9 - }, -/obj/item/storage/box/ammo/c9mm{ - pixel_x = -9; - pixel_y = 9 - }, -/obj/item/storage/box/ammo/c9mm{ - pixel_x = -9; - pixel_y = 9 - }, -/obj/item/storage/box/ammo/c9mm_rubber{ - pixel_x = -9 - }, -/obj/structure/closet/crate/secure/gear{ - name = "Ammunition Crate" - }, /obj/effect/decal/cleanable/wrapping, -/obj/item/ammo_box/magazine/smgm9mm{ - pixel_x = 11 - }, -/obj/item/ammo_box/magazine/smgm9mm{ - pixel_x = 11 - }, -/obj/item/ammo_box/magazine/smgm9mm{ - pixel_x = 11 - }, -/obj/item/ammo_box/magazine/smgm9mm{ - pixel_x = 11 - }, -/obj/item/ammo_box/magazine/co9mm, /turf/open/floor/plasteel/lightgrey, /area/ship/storage/equip) "yZ" = ( @@ -3974,9 +3960,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "BO" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/machinery/door/window/northleft{ dir = 4 }, @@ -4066,6 +4050,28 @@ pixel_y = -1; req_ship_access = 1 }, +/obj/structure/closet/crate/hydroponics{ + name = "Sustenance Crate" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/storage/ration/assorted_salted_offal, +/obj/item/storage/ration/battered_fish_sticks, +/obj/item/storage/ration/beef_goulash, +/obj/item/storage/ration/beef_strips, +/obj/item/storage/ration/fried_fish, +/obj/item/reagent_containers/food/snacks/popcorn{ + desc = "Dehydrated, salted sunflower seeds, for snacking!"; + icon = 'icons/obj/hydroponics/seeds.dmi'; + icon_state = "seed-sunflower"; + list_reagents = list(/datum/reagent/consumable/nutriment = 4); + name = "Snacking Sunflower Seeds" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/tech, /area/ship/cargo) "Cq" = ( @@ -4209,7 +4215,6 @@ id = "AI_Core_Field_Engi" }, /obj/machinery/door/poddoor{ - dir = 2; id = "Ranger_AI_Core_Blasts"; name = "Communications Access" }, @@ -4411,32 +4416,8 @@ /turf/open/floor/plasteel/dark, /area/ship/hallway/central) "EA" = ( -/obj/structure/closet/crate/hydroponics{ - name = "Sustenance Crate" - }, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/storage/ration/assorted_salted_offal, -/obj/item/storage/ration/battered_fish_sticks, -/obj/item/storage/ration/beef_goulash, -/obj/item/storage/ration/beef_strips, -/obj/item/storage/ration/fried_fish, -/obj/item/reagent_containers/food/snacks/popcorn{ - desc = "Dehydrated, salted sunflower seeds, for snacking!"; - icon = 'icons/obj/hydroponics/seeds.dmi'; - icon_state = "seed-sunflower"; - list_reagents = list(/datum/reagent/consumable/nutriment = 4); - name = "Snacking Sunflower Seeds" - }, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/storage/ration/cheese_pizza_slice, -/obj/item/storage/ration/pepperoni_pizza_slice, /turf/open/floor/plasteel/tech, /area/ship/cargo) "EE" = ( @@ -6705,7 +6686,6 @@ /area/ship/crew/specialized/security) "Wp" = ( /obj/machinery/door/poddoor{ - dir = 2; id = "Ranger_AI_Core_Blasts"; name = "Communications Access" }, @@ -7123,9 +7103,7 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering) "Zj" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/machinery/door/window/northleft{ dir = 4 }, diff --git a/_maps/shuttles/pgf/pgf_elated_bolide.dmm b/_maps/shuttles/pgf/pgf_elated_bolide.dmm index 1239ee22bbbd..9d501fe9e7ba 100644 --- a/_maps/shuttles/pgf/pgf_elated_bolide.dmm +++ b/_maps/shuttles/pgf/pgf_elated_bolide.dmm @@ -977,6 +977,11 @@ /obj/structure/crate_shelf{ capacity = 2 }, +/obj/structure/closet/crate/rations, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/mono/white, /area/ship/crew/ccommons) "ha" = ( @@ -2199,7 +2204,6 @@ "nk" = ( /obj/structure/table/chem, /obj/item/storage/case/surgery{ - pixel_x = 0; pixel_y = 3 }, /obj/item/reagent_containers/glass/bottle/formaldehyde, @@ -3296,6 +3300,25 @@ /obj/effect/turf_decal/spline/fancy/transparent/bottlegreen{ dir = 1 }, +/obj/structure/closet/crate{ + name = "CLIP lend-lease" + }, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/clothing/mask/gas/clip, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "uN" = ( @@ -3857,6 +3880,19 @@ /obj/effect/turf_decal/spline/fancy/transparent/bottlegreen{ dir = 1 }, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/oxygen/red, +/obj/item/tank/internals/oxygen/red, +/obj/item/tank/internals/oxygen/red, +/obj/item/tank/internals/oxygen/red, +/obj/item/tank/internals/oxygen/red, +/obj/item/tank/internals/oxygen/red, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "yN" = ( @@ -5414,25 +5450,6 @@ }, /turf/open/floor/plating, /area/ship/storage/starboard) -"Ia" = ( -/obj/structure/closet/crate/internals, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/turf_decal/spline/fancy/opaque/grey{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "If" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6144,34 +6161,14 @@ /turf/open/floor/engine/hull/interior, /area/ship/bridge) "LL" = ( -/obj/structure/closet/crate{ - name = "CLIP lend-lease" - }, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, -/obj/item/clothing/mask/gas/clip, /obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 1 }, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, -/obj/item/storage/box/flares, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "LN" = ( /obj/item/radio/intercom/directional/west, -/obj/structure/closet/crate/freezer/blood, /obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 1 }, @@ -6249,6 +6246,7 @@ /obj/effect/turf_decal/spline/fancy/transparent/bottlegreen{ dir = 1 }, +/obj/structure/closet/crate/freezer/blood, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "MH" = ( @@ -6537,8 +6535,6 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/engineering) "Pc" = ( -/obj/structure/closet/crate/radiation, -/obj/item/stack/sheet/mineral/uranium/twenty, /obj/structure/sign/poster/contraband/missing_gloves{ pixel_x = -28 }, @@ -6955,6 +6951,8 @@ /obj/effect/turf_decal/techfloor{ dir = 1 }, +/obj/structure/closet/crate/radiation, +/obj/item/stack/sheet/mineral/uranium/twenty, /turf/open/floor/plasteel/tech, /area/ship/storage/starboard) "RJ" = ( @@ -7074,6 +7072,7 @@ /obj/effect/turf_decal/spline/fancy/transparent/bottlegreen{ dir = 1 }, +/obj/structure/closet/crate/freezer/surplus_limbs, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "SD" = ( @@ -7171,11 +7170,6 @@ /turf/open/floor/plasteel/tech, /area/ship/security/armory) "SY" = ( -/obj/structure/closet/crate/rations, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/mono/white, /area/ship/crew/ccommons) "Tf" = ( @@ -7602,13 +7596,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/telecomms_floor, /area/ship/crew/cryo) -"Vj" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/effect/turf_decal/spline/fancy/opaque/grey{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "Vo" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/bridge) @@ -8348,6 +8335,7 @@ /obj/item/storage/bag/construction, /obj/item/storage/bag/construction, /obj/item/storage/bag/construction, +/obj/effect/mapping_helpers/crate_shelve, /turf/open/floor/plasteel/tech, /area/ship/storage/starboard) "ZT" = ( @@ -8831,7 +8819,7 @@ BF ql Uu Su -Vj +zM vo gj dE @@ -8860,7 +8848,7 @@ NQ fg Uu yK -Ia +zM vo zM De diff --git a/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm b/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm index 0f4bc8b38709..194a2afd853b 100644 --- a/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm +++ b/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm @@ -786,25 +786,24 @@ /obj/structure/chair/handrail{ dir = 8 }, -/obj/structure/closet/crate{ - name = "ration crate" - }, -/obj/item/storage/ration/beef_strips, -/obj/item/storage/ration/blackened_calamari, -/obj/item/storage/ration/assorted_salted_offal, -/obj/item/storage/ration/assorted_salted_offal, -/obj/item/storage/ration/shredded_beef, -/obj/item/storage/ration/shredded_beef, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "iW" = ( /obj/effect/turf_decal/industrial/outline/yellow, /obj/structure/crate_shelf, /obj/machinery/light/small/directional/west, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/radiation, +/obj/item/reagent_containers/hypospray/medipen/anti_rad, +/obj/item/reagent_containers/hypospray/medipen/anti_rad, +/obj/item/reagent_containers/hypospray/medipen/anti_rad, +/obj/item/reagent_containers/hypospray/medipen/anti_rad, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "jg" = ( @@ -1370,7 +1369,6 @@ /obj/structure/table/reinforced, /obj/item/radio/intercom/wideband/table{ dir = 4; - pixel_y = 0; pixel_x = 1 }, /obj/item/desk_flag/gezena{ @@ -1497,6 +1495,19 @@ }, /obj/machinery/light/directional/south, /obj/machinery/firealarm/directional/east, +/obj/structure/closet/crate{ + name = "ration crate" + }, +/obj/item/storage/ration/beef_strips, +/obj/item/storage/ration/blackened_calamari, +/obj/item/storage/ration/assorted_salted_offal, +/obj/item/storage/ration/assorted_salted_offal, +/obj/item/storage/ration/shredded_beef, +/obj/item/storage/ration/shredded_beef, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "sT" = ( @@ -2655,6 +2666,10 @@ /obj/effect/turf_decal/industrial/outline/yellow, /obj/structure/crate_shelf, /obj/machinery/light/small/directional/east, +/obj/structure/closet/crate/engineering, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/mining_scanner, /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "Ig" = ( @@ -2871,10 +2886,6 @@ dir = 8 }, /obj/item/radio/intercom/directional/east, -/obj/structure/closet/crate/engineering, -/obj/item/pickaxe, -/obj/item/pickaxe, -/obj/item/mining_scanner, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "Kz" = ( @@ -3096,18 +3107,6 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/structure/closet/crate/medical, -/obj/item/storage/firstaid/radiation, -/obj/item/reagent_containers/hypospray/medipen/anti_rad, -/obj/item/reagent_containers/hypospray/medipen/anti_rad, -/obj/item/reagent_containers/hypospray/medipen/anti_rad, -/obj/item/reagent_containers/hypospray/medipen/anti_rad, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/regular, /obj/effect/turf_decal/steeldecal/steel_decals_central7, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) diff --git a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm index 4b67c1d4a0bc..82c820fbdb9f 100644 --- a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm +++ b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm @@ -407,6 +407,24 @@ /area/ship/cargo) "dZ" = ( /obj/structure/crate_shelf, +/obj/structure/closet/crate{ + name = "food crate" + }, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, /turf/open/floor/plasteel/tech, /area/ship/cargo) "ea" = ( @@ -495,24 +513,6 @@ dir = 4; layer = 2.04 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/structure/closet/crate{ - name = "food crate" - }, /obj/structure/chair/handrail, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech, @@ -702,9 +702,7 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "fQ" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -1002,9 +1000,7 @@ /obj/machinery/door/poddoor/shutters{ id = "derecho_bridge_shut" }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/structure/grille, /obj/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, @@ -1042,9 +1038,6 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "iK" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass/five, /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/pod/dark, /area/ship/science/workshop) @@ -1905,7 +1898,6 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Workshop"; - req_access = null; req_one_access = list(10, 48) }, /turf/open/floor/plasteel/tech/grid, @@ -2181,9 +2173,7 @@ }, /obj/effect/turf_decal/trimline/opaque/bar/line, /obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plasteel/tech, /area/ship/hallway/starboard) "sm" = ( @@ -2336,9 +2326,7 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plasteel/tech/grid, /area/ship/bridge) "sU" = ( @@ -2458,9 +2446,7 @@ /turf/open/floor/plasteel/tech, /area/ship/hallway/central) "uX" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/window/reinforced{ dir = 8 }, @@ -2981,9 +2967,7 @@ /turf/open/floor/pod/dark, /area/ship/engineering/atmospherics) "yO" = ( -/obj/machinery/power/shuttle/engine/fire{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fire, /obj/machinery/door/poddoor{ dir = 4; id = "derecho_engine_blast" @@ -2991,9 +2975,7 @@ /turf/open/floor/plating, /area/ship/engineering/engines) "yS" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -3210,6 +3192,9 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass/five, /turf/open/floor/pod/dark, /area/ship/science/workshop) "Ae" = ( @@ -3290,9 +3275,7 @@ /turf/open/floor/pod/dark, /area/ship/science/workshop) "AW" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/window/reinforced{ dir = 8 }, @@ -3397,8 +3380,7 @@ }, /obj/structure/closet/secure_closet/engineering_electrical{ req_access = null; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/pod/dark, @@ -3490,9 +3472,7 @@ /obj/effect/turf_decal/techfloor{ dir = 1 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/power/terminal{ dir = 8 }, @@ -3600,9 +3580,7 @@ /turf/open/floor/plasteel/tech, /area/ship/hallway/central) "DP" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/window/reinforced{ dir = 8 }, @@ -3976,9 +3954,7 @@ /obj/machinery/door/poddoor/shutters{ id = "derecho_office_shut" }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/structure/window/plasma/reinforced/plastitanium, /obj/structure/grille, /turf/open/floor/plating, @@ -4609,9 +4585,7 @@ dir = 1 }, /obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/photocopier, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/office) @@ -5249,8 +5223,7 @@ }, /obj/structure/closet/secure_closet/engineering_welding{ req_access = null; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -5647,9 +5620,7 @@ /turf/open/floor/plasteel/dark, /area/ship/hallway/fore) "WD" = ( -/obj/machinery/atmospherics/components/unary/shuttle/fire_heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/fire_heater, /obj/structure/window/reinforced{ dir = 8 }, @@ -5912,7 +5883,6 @@ id = "derecho_entrance_holo"; pixel_x = -20; pixel_y = 7; - req_one_access = null; req_ship_access = 1 }, /obj/machinery/button/door{ @@ -5921,7 +5891,6 @@ name = "Blast Door Control"; pixel_x = -21; pixel_y = -4; - req_one_access = null; req_ship_access = 1 }, /turf/open/floor/pod, diff --git a/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm b/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm index f2e6b8f6dd63..6e8c1d4d8879 100644 --- a/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm +++ b/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm @@ -422,9 +422,7 @@ /obj/machinery/power/terminal{ dir = 8 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/effect/turf_decal/techfloor, /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/tech, @@ -744,9 +742,7 @@ /obj/effect/turf_decal/techfloor{ dir = 1 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/light/dim/directional/west, /obj/machinery/power/smes/engineering, /turf/open/floor/plasteel/tech, @@ -858,9 +854,7 @@ pixel_y = 10 }, /obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/item/trash/can, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) @@ -1007,9 +1001,7 @@ /area/ship/medical) "hk" = ( /obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/effect/turf_decal/corner/opaque/red/half{ dir = 1 }, @@ -1302,9 +1294,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "jM" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -1313,8 +1303,7 @@ "jN" = ( /obj/structure/closet/secure_closet/engineering_electrical{ req_access = null; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /turf/open/floor/plasteel/tech, /area/ship/engineering/electrical) @@ -1991,9 +1980,7 @@ dir = 1 }, /obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "ne" = ( @@ -2008,9 +1995,7 @@ /obj/machinery/power/terminal{ dir = 8 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/effect/turf_decal/techfloor, /obj/machinery/button/door{ dir = 8; @@ -2497,9 +2482,7 @@ }, /obj/effect/turf_decal/techfloor, /obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /turf/open/floor/plasteel/tech, /area/ship/engineering/engines/starboard) "ql" = ( @@ -2827,9 +2810,7 @@ dir = 1 }, /obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/item/cigbutt, /turf/open/floor/pod/dark, /area/ship/engineering) @@ -2844,9 +2825,7 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering/electrical) "sF" = ( -/obj/machinery/power/shuttle/engine/fire{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fire, /turf/open/floor/plating, /area/ship/engineering/engines/port) "sJ" = ( @@ -2899,9 +2878,7 @@ dir = 4 }, /obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/light/dim/directional/south, /turf/open/floor/pod/dark, /area/ship/engineering/atmospherics) @@ -4396,6 +4373,11 @@ /obj/effect/turf_decal/trimline/opaque/bar/corner, /turf/open/floor/plasteel/tech, /area/ship/hallway/central) +"Ci" = ( +/obj/structure/crate_shelf, +/obj/structure/closet/crate, +/turf/open/floor/plasteel/dark, +/area/ship/cargo) "Co" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4508,9 +4490,7 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "Do" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -4663,9 +4643,7 @@ /obj/effect/turf_decal/techfloor{ dir = 1 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/power/smes/engineering, /turf/open/floor/plasteel/tech, /area/ship/engineering/electrical) @@ -4951,9 +4929,7 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering/engines/port) "Gn" = ( -/obj/machinery/power/shuttle/engine/fire{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/fire, /turf/open/floor/plating, /area/ship/engineering/engines/starboard) "Gv" = ( @@ -5260,9 +5236,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "Ig" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable{ icon_state = "0-4" }, @@ -5429,9 +5403,7 @@ /turf/open/floor/plating, /area/ship/crew/canteen) "JV" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ icon_state = "0-8" }, @@ -5686,8 +5658,7 @@ /obj/machinery/light/dim/directional/east, /obj/structure/closet/secure_closet/engineering_welding{ req_access = null; - req_access_txt = "11"; - req_one_access = null + req_access_txt = "11" }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -5826,9 +5797,7 @@ /area/ship/crew) "ME" = ( /obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/effect/turf_decal/corner/opaque/red/mono, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -6093,20 +6062,33 @@ /turf/open/floor/pod/dark, /area/ship/engineering/electrical) "NU" = ( -/obj/effect/turf_decal/techfloor{ - layer = 2.04 +/obj/structure/crate_shelf, +/obj/structure/closet/crate{ + name = "food crate" }, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/tech, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/turf/open/floor/plasteel/dark, /area/ship/cargo) "Oa" = ( /obj/structure/railing{ dir = 10; layer = 3.1 }, -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/pod/dark, /area/ship/engineering/electrical) @@ -6234,24 +6216,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/structure/closet/crate{ - name = "food crate" - }, /turf/open/floor/plasteel/tech, /area/ship/cargo) "OR" = ( @@ -6727,9 +6691,7 @@ }, /area/ship/engineering/electrical) "SU" = ( -/obj/machinery/atmospherics/components/unary/shuttle/fire_heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/fire_heater, /obj/structure/window/reinforced{ dir = 8 }, @@ -7190,9 +7152,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/hallway/fore) "VG" = ( -/obj/machinery/atmospherics/components/unary/shuttle/fire_heater{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/shuttle/fire_heater, /obj/structure/window/reinforced{ dir = 8 }, @@ -8855,7 +8815,7 @@ Zj Zs Rp ON -uN +NU Zj Kz Kz @@ -8908,8 +8868,8 @@ Kz Zj tO YC -NU -uN +rF +Ci Zj Kz Kz diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 3cd9cd13796e..a0ea04f8f99e 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -19,6 +19,8 @@ close_sound_volume = 50 drag_slowdown = 0 var/obj/item/paper/fluff/jobs/cargo/manifest/manifest + var/shelve = FALSE + var/shelve_range = 0 /obj/structure/closet/crate/Initialize() . = ..() diff --git a/code/game/objects/structures/crateshelf.dm b/code/game/objects/structures/crateshelf.dm index f5f31fb30e32..c7ef9c47abea 100644 --- a/code/game/objects/structures/crateshelf.dm +++ b/code/game/objects/structures/crateshelf.dm @@ -15,6 +15,7 @@ var/capacity = DEFAULT_SHELF_CAPACITY var/max_capacity = DEFAULT_SHELF_MAX_CAPACITY var/use_delay = DEFAULT_SHELF_USE_DELAY + var/pickup_crates = TRUE var/list/shelf_contents /obj/structure/crate_shelf/built @@ -23,8 +24,12 @@ /obj/structure/crate_shelf/debug capacity = 12 -/obj/structure/crate_shelf/Initialize() +/obj/structure/crate_shelf/Initialize(mapload) . = ..() + + if (mapload && pickup_crates) + . = INITIALIZE_HINT_LATELOAD + shelf_contents = new/list(capacity) // Initialize our shelf's contents list, this will be used later. var/stack_layer // This is used to generate the sprite layering of the shelf pieces. var/stack_offset // This is used to generate the vertical offset of the shelf pieces. @@ -37,6 +42,10 @@ overlays += image(icon = 'icons/obj/objects.dmi', icon_state = "shelf_stack", layer = stack_layer, pixel_y = stack_offset) return +/obj/structure/crate_shelf/LateInitialize() + load_crates(src) + return ..() + /obj/structure/crate_shelf/Destroy() QDEL_LIST(shelf_contents) return ..() @@ -112,9 +121,10 @@ /obj/structure/crate_shelf/proc/load(obj/structure/closet/crate/crate, mob/user) var/next_free = shelf_contents.Find(null) // Find the first empty slot in the shelf. if(!next_free) // If we don't find an empty slot, return early. - balloon_alert(user, "shelf full!") + if(ismob(user)) + balloon_alert(user, "shelf full!") return FALSE - if(do_after(user, use_delay, target = crate)) + if(!user || do_after(user, use_delay, target = crate)) // Skip do_after if called with no mob if(shelf_contents[next_free] != null) return FALSE // Something has been added to the shelf while we were waiting, abort! if(crate.opened) // If the crate is open, try to close it. @@ -179,6 +189,12 @@ transfer_fingerprints_to(new_parts) return ..() +/obj/structure/crate_shelf/proc/load_crates(atom/movable/holder) + for(var/obj/structure/closet/crate/crate in loc) + if(!load(crate)) + log_mapping("[src] failed to shelve a crate at [AREACOORD(src)]") + break + /obj/item/rack_parts/shelf name = "crate shelf parts" desc = "Parts of a shelf." diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 1e4e42757115..4912ccd0dba2 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -490,6 +490,25 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) icon_cache[url] = I return I +/obj/effect/mapping_helpers/crate_shelve + name = "crate shelver" + icon_state = "crate" + late = TRUE + var/range = 1 + +/obj/effect/mapping_helpers/crate_shelve/LateInitialize(mapload) + . = ..() + var/obj/structure/closet/crate/crate = locate(/obj/structure/closet/crate) in loc + if(!crate) + log_mapping("[src] failed to find a crate at [AREACOORD(src)]") + else + shelve(crate) + +/obj/effect/mapping_helpers/crate_shelve/proc/shelve(crate) + var/obj/structure/crate_shelf/shelf = locate(/obj/structure/crate_shelf) in range(range, crate) + if(!shelf.load(crate)) + log_mapping("[src] failed to shelve a crate at [AREACOORD(src)]") + /obj/effect/mapping_helpers/chair name = "chair helper" diff --git a/icons/effects/mapping/mapping_helpers.dmi b/icons/effects/mapping/mapping_helpers.dmi index 430ac86c6db5e438b430065bf257322175173f46..0ef83c7b1719c0bcf55c26f6d4597d84c1ee02a3 100644 GIT binary patch literal 9938 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 Date: Tue, 7 Jan 2025 12:01:20 -0500 Subject: [PATCH 007/118] Door Speed (#3883) ## About The Pull Request refactors some door code makes it so you can change how fast a door should close with airlock electronics ## Why It's Good For The Game engineering improvement + mapping stuff ## Changelog :cl: add: you can now change how fast a door should close with the door electronics /:cl: --------- Signed-off-by: Erika Fox <94164348+Erikafox@users.noreply.github.com> Co-authored-by: Mark Suckerberg Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../independent/independent_shetland.dmm | 14 +- _maps/shuttles/inteq/inteq_talos.dmm | 4 +- .../syndicate/syndicate_ngr_derecho.dmm | 16 +- .../syndicate/syndicate_ngr_kaliandhi.dmm | 14 +- code/datums/wires/airlock.dm | 4 +- code/game/machinery/doors/airlock.dm | 10 +- .../machinery/doors/airlock_electronics.dm | 15 ++ code/game/machinery/doors/door.dm | 7 +- code/game/objects/structures/door_assembly.dm | 242 +++++++++--------- .../tgui/interfaces/AirlockElectronics.js | 23 +- tgui/packages/tgui/interfaces/Radio.js | 2 +- 11 files changed, 199 insertions(+), 152 deletions(-) diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 846ae4e74e8d..85ffe0dfcdba 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -615,7 +615,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, @@ -641,7 +641,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/machinery/door/firedoor/border_only{ @@ -1735,7 +1735,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engine Room"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, @@ -2073,7 +2073,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, @@ -2338,7 +2338,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, @@ -3917,7 +3917,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engine Room"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, @@ -4438,7 +4438,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Electrical"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index 338864dbe56e..d838d4742f99 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -538,7 +538,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, @@ -1618,7 +1618,7 @@ /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/turf_decal/industrial/warning/fulltile, diff --git a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm index 82c820fbdb9f..586a592bb7c1 100644 --- a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm +++ b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm @@ -89,7 +89,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Command Deck"; - normalspeed = 0; + fast_close = 1; req_access_txt = "19" }, /turf/open/floor/plasteel/tech/grid, @@ -197,7 +197,7 @@ "bW" = ( /obj/machinery/door/airlock/hatch{ name = "Foreman's Office"; - normalspeed = 0; + fast_close = 1; req_access_txt = "56" }, /turf/open/floor/plasteel/tech/grid, @@ -824,7 +824,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Life Support"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/decal/cleanable/dirt, @@ -1527,7 +1527,7 @@ /obj/machinery/door/airlock/hatch{ dir = 1; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/effect/decal/cleanable/dirt, @@ -2162,7 +2162,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Control Room"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /turf/open/floor/plasteel/tech/grid, @@ -2823,7 +2823,7 @@ "xQ" = ( /obj/machinery/door/airlock/hatch{ name = "Foreman's Office"; - normalspeed = 0; + fast_close = 1; req_access_txt = "56" }, /obj/machinery/door/firedoor/border_only{ @@ -3237,7 +3237,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Bridge"; - normalspeed = 0; + fast_close = 1; req_access_txt = "19" }, /turf/open/floor/plasteel/tech/grid, @@ -5561,7 +5561,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Command Deck"; - normalspeed = 0; + fast_close = 1; req_access_txt = "19" }, /obj/structure/sign/directions/command{ diff --git a/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm b/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm index 6e8c1d4d8879..a8a712f55109 100644 --- a/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm +++ b/_maps/shuttles/syndicate/syndicate_ngr_kaliandhi.dmm @@ -1276,7 +1276,7 @@ /obj/machinery/door/airlock/hatch{ dir = 8; name = "Armory"; - normalspeed = 0; + fast_close = 1; req_access = list(3) }, /obj/machinery/door/firedoor/border_only{ @@ -2154,7 +2154,7 @@ "oc" = ( /obj/machinery/door/airlock/hatch{ name = "Bridge"; - normalspeed = 0; + fast_close = 1; req_access_txt = "19" }, /obj/machinery/door/firedoor/border_only{ @@ -3133,7 +3133,7 @@ /obj/machinery/door/airlock/hatch{ dir = 8; name = "Armory"; - normalspeed = 0; + fast_close = 1; req_access = list(3) }, /obj/structure/cable{ @@ -5508,7 +5508,7 @@ }, /obj/machinery/door/airlock/hatch{ name = "Control Room"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -5834,7 +5834,7 @@ "MS" = ( /obj/machinery/door/airlock/hatch{ name = "Command Deck"; - normalspeed = 0; + fast_close = 1; req_access_txt = "19" }, /obj/structure/cable{ @@ -5874,7 +5874,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Engineering"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/structure/cable{ @@ -7589,7 +7589,7 @@ }, /obj/machinery/door/airlock/hatch{ name = "Life Support"; - normalspeed = 0; + fast_close = 1; req_access_txt = "10" }, /obj/machinery/door/firedoor/border_only, diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 14e2d4f2ba1f..3b461ce8faf6 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -46,7 +46,7 @@ status += "The AI connection light is [A.aiControlDisabled || (A.obj_flags & EMAGGED) ? "off" : "on"]." status += "The check wiring light is [A.safe ? "off" : "on"]." status += "The timer is powered [A.autoclose ? "on" : "off"]." - status += "The speed light is [A.normalspeed ? "on" : "off"]." + status += "The speed light is [A.fast_close ? "on" : "off"]." status += "The emergency light is [A.emergency ? "on" : "off"]." return status @@ -94,7 +94,7 @@ if(!A.density) A.close() if(WIRE_TIMING) - A.normalspeed = !A.normalspeed + A.fast_close = !A.fast_close if(WIRE_LIGHT) A.lights = !A.lights A.update_appearance() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 594aeedbe43d..4f88daa0c164 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -50,11 +50,13 @@ autoclose = TRUE secondsElectrified = MACHINE_NOT_ELECTRIFIED //How many seconds remain until the door is no longer electrified. -1/MACHINE_ELECTRIFIED_PERMANENT = permanently electrified until someone fixes it. assemblytype = /obj/structure/door_assembly - normalspeed = 1 + fast_close = FALSE explosion_block = 1 hud_possible = list(DIAG_AIRLOCK_HUD) req_ship_access = TRUE + close_speed = 150 + smoothing_groups = list(SMOOTH_GROUP_AIRLOCK) FASTDMM_PROP(\ @@ -1260,7 +1262,7 @@ playsound(src, pry_open_sound, 30, TRUE, mono_adj = TRUE) if(autoclose) - autoclose_in(normalspeed ? 150 : 15) + autoclose_in(fast_close ? clamp(close_speed/10, 10, 300) : close_speed) if(!density) return TRUE @@ -1565,7 +1567,7 @@ data["locked"] = locked // bolted data["lights"] = lights // bolt lights data["safe"] = safe // safeties - data["speed"] = normalspeed // safe speed + data["operation speed"] = fast_close // safe speed data["welded"] = welded // welded data["opened"] = !density // opened @@ -1633,7 +1635,7 @@ safe = !safe . = TRUE if("speed-toggle") - normalspeed = !normalspeed + fast_close = !fast_close . = TRUE if("open-close") user_toggle_open(usr) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 79260dc975be..6987c8266daa 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -2,6 +2,8 @@ name = "airlock electronics" req_access = list(ACCESS_MAINT_TUNNELS) custom_price = 50 + ///how fast the constructed airlock will close + var/close_speed = 15 SECONDS /// A list of all granted accesses var/list/accesses = list() /// If the airlock should require ALL or only ONE of the listed accesses @@ -47,6 +49,7 @@ /obj/item/electronics/airlock/ui_data() var/list/data = list() + data["close_speed"] = close_speed data["accesses"] = accesses data["oneAccess"] = one_access data["unres_direction"] = unres_sides @@ -91,6 +94,18 @@ return accesses -= get_region_accesses(region) . = TRUE + if("close_speed") + var/tune = params["tune"] + var/adjust = text2num(params["adjust"]) + if(adjust) + tune = close_speed + adjust SECONDS + . = TRUE + else if(text2num(tune) != null) + tune = tune SECONDS + . = TRUE + if(.) + close_speed = clamp(tune, 0, 300) + . = TRUE /obj/item/electronics/airlock/ui_host() if(holder) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 7c8371809e81..7b5fc9f3af56 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -25,7 +25,10 @@ var/operating = FALSE var/glass = FALSE var/welded = FALSE - var/normalspeed = 1 + ///does this airlock close quickly + var/fast_close = 0 + ///how long this door takes to close, if it is autoclosing + var/close_speed = 6 SECONDS var/heat_proof = FALSE // For rglass-windowed airlocks and firedoors var/emergency = FALSE // Emergency access override var/sub_door = FALSE // true if it's meant to go under another door. @@ -353,7 +356,7 @@ for(var/atom/movable/M in get_turf(src)) if(M.density && M != src) //something is blocking the door if(autoclose) - autoclose_in(60) + autoclose_in(fast_close ? close_speed/10 : close_speed) return operating = TRUE diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 43052f1f0dbb..8030a43c3e93 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -49,81 +49,154 @@ else . += "There is a small paper placard on the assembly[doorname]." -/obj/structure/door_assembly/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/pen)) - var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN) - if(!t) - return - if(!in_range(src, usr) && loc != usr) - return - created_name = t +/obj/structure/door_assembly/wrench_act(mob/living/user, obj/item/I) + . = ..() + for(var/obj/machinery/door/D in loc) + if(!D.sub_door) + to_chat(user, "There is another door here!") + return FALSE - else if((W.tool_behaviour == TOOL_WELDER) && (mineral || glass || !anchored)) - if(!W.tool_start_check(user, amount=0)) + user.visible_message( + span_notice("[user] [anchored ? "unsecures" : "secures"] the airlock assembly to the floor."), + span_notice("You start to [anchored ? "unsecure" : "secure"] the airlock assembly to the floor..."), + span_hear("You hear wrenching.") + ) + + if(I.use_tool(src, user, 40, volume=100)) + if(anchored) return + to_chat(user, span_notice("You [anchored ? "unsecured" : "secured"] the airlock assembly.")) + name = "[anchored ? "secured " : ""]airlock assembly" + anchored = !anchored + return TRUE + return FALSE + +/obj/structure/door_assembly/welder_act(mob/living/user, obj/item/I) + . = ..() + if(mineral || glass || !anchored) + if(!I.tool_start_check(user, amount=0)) + return FALSE if(mineral) var/obj/item/stack/sheet/mineral/mineral_path = text2path("/obj/item/stack/sheet/mineral/[mineral]") - user.visible_message("[user] welds the [mineral] plating off the airlock assembly.", "You start to weld the [mineral] plating off the airlock assembly...") - if(W.use_tool(src, user, 40, volume=50)) + user.visible_message(\ + span_notice("[user] welds the [mineral] plating off the airlock assembly."), + span_notice("You start to weld the [mineral] plating off the airlock assembly...")) + if(I.use_tool(src, user, 40, volume=50)) to_chat(user, "You weld the [mineral] plating off.") new mineral_path(loc, 2) var/obj/structure/door_assembly/PA = new previous_assembly(loc) transfer_assembly_vars(src, PA) + return TRUE else if(glass) - user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly...") - if(W.use_tool(src, user, 40, volume=50)) - to_chat(user, "You weld the glass panel out.") + user.visible_message( + span_notice("[user] welds the glass panel out of the airlock assembly."), + span_notice("You start to weld the glass panel out of the airlock assembly")) + if(I.use_tool(src, user, 40, volume=50)) + to_chat(user, span_notice("You weld the glass panel out.")) if(heat_proof_finished) new /obj/item/stack/sheet/rglass(get_turf(src)) heat_proof_finished = 0 else new /obj/item/stack/sheet/glass(get_turf(src)) glass = 0 + return TRUE else if(!anchored) - user.visible_message("[user] disassembles the airlock assembly.", \ - "You start to disassemble the airlock assembly...") - if(W.use_tool(src, user, 40, volume=50)) - to_chat(user, "You disassemble the airlock assembly.") + user.visible_message( + span_notice("[user] disassembles the airlock assembly."), \ + span_notice("You start to disassemble the airlock assembly...")) + if(I.use_tool(src, user, 40, volume=50)) + to_chat(user, span_notice("You disassemble the airlock assembly.")) deconstruct(TRUE) + return TRUE + return FALSE - else if(W.tool_behaviour == TOOL_WRENCH) - if(!anchored) - var/door_check = 1 - for(var/obj/machinery/door/D in loc) - if(!D.sub_door) - door_check = 0 - break +/obj/structure/door_assembly/wirecutter_act(mob/living/user, obj/item/I) + . = ..() + if(state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) + user.visible_message( + span_notice("[user] cuts the wires from the airlock assembly."), \ + span_notice("You start to cut the wires from the airlock assembly...") + ) - if(door_check) - user.visible_message( - "[user] secures the airlock assembly to the floor.", - "You start to secure the airlock assembly to the floor...", - "You hear wrenching." - ) + if(I.use_tool(src, user, 40, volume=100)) + if(state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) + return + to_chat(user, span_notice("You cut the wires from the airlock assembly.")) + var/obj/item/cable = new /obj/item/stack/cable_coil(get_turf(src), 1) + user.put_in_hands(cable) + state = AIRLOCK_ASSEMBLY_NEEDS_WIRES + name = "secured airlock assembly" + +/obj/structure/door_assembly/crowbar_act(mob/living/user, obj/item/I) + . = ..() + if(state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + user.visible_message(span_notice("[user] removes the electronics from the airlock assembly."), \ + span_notice("You start to remove electronics from the airlock assembly...")) - if(W.use_tool(src, user, 40, volume=100)) - if(anchored) - return - to_chat(user, "You secure the airlock assembly.") - name = "secured airlock assembly" - set_anchored(TRUE) + if(I.use_tool(src, user, 40, volume=100)) + if(state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + return + to_chat(user, span_notice("You remove the airlock electronics.")) + state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS + name = "wired airlock assembly" + var/obj/item/electronics/airlock/ae + if (!electronics) + ae = new/obj/item/electronics/airlock(loc) else - to_chat(user, "There is another door here!") + ae = electronics + electronics = null + ae.forceMove(src.loc) - else - user.visible_message( - "[user] unsecures the airlock assembly from the floor.", - "You start to unsecure the airlock assembly from the floor...", - "You hear wrenching." - ) - if(W.use_tool(src, user, 40, volume=100)) - if(!anchored) - return - to_chat(user, "You unsecure the airlock assembly.") - name = "airlock assembly" - set_anchored(FALSE) +/obj/structure/door_assembly/screwdriver_act(mob/living/user, obj/item/I) + . = ..() + if(state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + user.visible_message( + span_notice("[user] finishes the airlock."), + span_notice("You start finishing the airlock...") + ) + + if(I.use_tool(src, user, 40, volume=100)) + if(loc && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + to_chat(user, span_notice("You finish the airlock.")) + new_door() + return TRUE + return FALSE + +/obj/structure/door_assembly/proc/new_door() + var/obj/machinery/door/airlock/door + if(glass) + door = new glass_type(loc) + else + door = new airlock_type(loc) + door.setDir(dir) + door.unres_sides = electronics.unres_sides + door.electronics = electronics + door.heat_proof = heat_proof_finished + door.security_level = 0 + if(electronics.one_access) + door.req_one_access = electronics.accesses + else + door.req_access = electronics.accesses + door.close_speed = electronics.close_speed + if(created_name) + door.name = created_name + else + door.name = base_name + door.previous_airlock = previous_assembly + electronics.forceMove(door) + door.update_appearance() + qdel(src) + +/obj/structure/door_assembly/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/pen)) + var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN) + if(!t) + return + if(!in_range(src, usr) && loc != usr) + return + created_name = t else if(istype(W, /obj/item/stack/cable_coil) && state == AIRLOCK_ASSEMBLY_NEEDS_WIRES && anchored) if(!W.tool_start_check(user, amount=1)) @@ -138,18 +211,6 @@ to_chat(user, "You wire the airlock assembly.") name = "wired airlock assembly" - else if((W.tool_behaviour == TOOL_WIRECUTTER) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) - user.visible_message("[user] cuts the wires from the airlock assembly.", \ - "You start to cut the wires from the airlock assembly...") - - if(W.use_tool(src, user, 40, volume=100)) - if(state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) - return - to_chat(user, "You cut the wires from the airlock assembly.") - new/obj/item/stack/cable_coil(get_turf(user), 1) - state = AIRLOCK_ASSEMBLY_NEEDS_WIRES - name = "secured airlock assembly" - else if(istype(W, /obj/item/electronics/airlock) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) W.play_tool_sound(src, 100) user.visible_message("[user] installs the electronics into the airlock assembly.", \ @@ -165,25 +226,6 @@ name = "near finished airlock assembly" electronics = W - - else if((W.tool_behaviour == TOOL_CROWBAR) && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) - user.visible_message("[user] removes the electronics from the airlock assembly.", \ - "You start to remove electronics from the airlock assembly...") - - if(W.use_tool(src, user, 40, volume=100)) - if(state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) - return - to_chat(user, "You remove the airlock electronics.") - state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS - name = "wired airlock assembly" - var/obj/item/electronics/airlock/ae - if (!electronics) - ae = new/obj/item/electronics/airlock(loc) - else - ae = electronics - electronics = null - ae.forceMove(src.loc) - else if(istype(W, /obj/item/stack/sheet) && (!glass || !mineral)) var/obj/item/stack/sheet/G = W if(G) @@ -240,41 +282,7 @@ to_chat(user, "You cannot add [G] to [src]!") else to_chat(user, "You cannot add [G] to [src]!") - - else if((W.tool_behaviour == TOOL_SCREWDRIVER) && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) - user.visible_message( - "[user] finishes the airlock.", - "You start finishing the airlock..." - ) - - if(W.use_tool(src, user, 40, volume=100)) - if(loc && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) - to_chat(user, "You finish the airlock.") - var/obj/machinery/door/airlock/door - if(glass) - door = new glass_type(loc) - else - door = new airlock_type(loc) - door.setDir(dir) - door.unres_sides = electronics.unres_sides - //door.req_access = req_access - door.electronics = electronics - door.heat_proof = heat_proof_finished - door.security_level = 0 - if(electronics.one_access) - door.req_one_access = electronics.accesses - else - door.req_access = electronics.accesses - if(created_name) - door.name = created_name - else - door.name = base_name - door.previous_airlock = previous_assembly - electronics.forceMove(door) - door.update_appearance() - qdel(src) - else - return ..() + ..() update_name() update_appearance() diff --git a/tgui/packages/tgui/interfaces/AirlockElectronics.js b/tgui/packages/tgui/interfaces/AirlockElectronics.js index 8eb0de72828d..bfd8daea6d1c 100644 --- a/tgui/packages/tgui/interfaces/AirlockElectronics.js +++ b/tgui/packages/tgui/interfaces/AirlockElectronics.js @@ -1,5 +1,5 @@ import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; +import { Button, LabeledList, Section, NumberInput } from '../components'; import { Window } from '../layouts'; import { AccessList } from './common/AccessList'; @@ -8,8 +8,9 @@ export const AirlockElectronics = (props, context) => { const { oneAccess, unres_direction } = data; const regions = data.regions || []; const accesses = data.accesses || []; + const close_speed = data.close_speed || []; return ( - +
@@ -85,6 +86,24 @@ export const AirlockElectronics = (props, context) => { }) } /> + + + + act('close_speed', { + adjust: value - close_speed / 10, + }) + } + /> + + ); diff --git a/tgui/packages/tgui/interfaces/Radio.js b/tgui/packages/tgui/interfaces/Radio.js index 1783933bf468..64d33e7505c8 100644 --- a/tgui/packages/tgui/interfaces/Radio.js +++ b/tgui/packages/tgui/interfaces/Radio.js @@ -64,7 +64,7 @@ export const Radio = (props, context) => { animate unit="kHz" step={0.2} - stepPixelSize={10} + stepPixelSize={15} minValue={minFrequency / 10} maxValue={maxFrequency / 10} value={frequency / 10} From a82d32805acf8f306d130d29728d79451f701c00 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 7 Jan 2025 11:11:55 -0600 Subject: [PATCH 008/118] Automatic changelog generation for PR #3883 [ci skip] --- html/changelogs/AutoChangeLog-pr-3883.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3883.yml diff --git a/html/changelogs/AutoChangeLog-pr-3883.yml b/html/changelogs/AutoChangeLog-pr-3883.yml new file mode 100644 index 000000000000..08b2f6451daa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3883.yml @@ -0,0 +1,4 @@ +author: Erikafox +changes: + - {rscadd: you can now change how fast a door should close with the door electronics} +delete-after: true From 49d261286387f83ef8dbc79d000eea555021bc09 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 8 Jan 2025 01:03:32 +0000 Subject: [PATCH 009/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3865.yml | 7 ------- html/changelogs/AutoChangeLog-pr-3883.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3930.yml | 4 ---- html/changelogs/archive/2025-01.yml | 10 ++++++++++ 4 files changed, 10 insertions(+), 15 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3865.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3883.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3930.yml diff --git a/html/changelogs/AutoChangeLog-pr-3865.yml b/html/changelogs/AutoChangeLog-pr-3865.yml deleted file mode 100644 index 9aa0027c2e74..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3865.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Sun-Soaked -changes: - - {balance: 'Backpacks can now carry Bulky items, but can no longer be accessed - while on your back.'} - - {balance: 'Duffel bags can now carry more, but must be placed on the ground to - be opened.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3883.yml b/html/changelogs/AutoChangeLog-pr-3883.yml deleted file mode 100644 index 08b2f6451daa..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3883.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Erikafox -changes: - - {rscadd: you can now change how fast a door should close with the door electronics} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3930.yml b/html/changelogs/AutoChangeLog-pr-3930.yml deleted file mode 100644 index 0ffccccddd8d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3930.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Ical92 -changes: - - {rscadd: Wiki ship templates now show ship manufacturers} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index 05d41336f67f..8557945cd532 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -63,3 +63,13 @@ - rscadd: adds ruin hazards kaylexis: - bugfix: changes flavor text on entertainment monitor +2025-01-08: + Erikafox: + - rscadd: you can now change how fast a door should close with the door electronics + Ical92: + - rscadd: Wiki ship templates now show ship manufacturers + Sun-Soaked: + - balance: Backpacks can now carry Bulky items, but can no longer be accessed while + on your back. + - balance: Duffel bags can now carry more, but must be placed on the ground to be + opened. From 7b1798dc69bae30010ed155da67050ec447d9157 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Tue, 7 Jan 2025 21:12:44 -0500 Subject: [PATCH 010/118] buff cm5 (#3922) ## About The Pull Request >Well-liked for its accuracy, stability, and ease of use compared to other submachineguns >statline is the same as every other smg ## Changelog :cl: balance: CM5 now lives up to its description /:cl: --- .../guns/manufacturer/clip_lanchester/ballistics.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm index ce679c604eb3..bd2f997c7cc1 100644 --- a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm @@ -174,6 +174,9 @@ NO_MAG_GUN_HELPER(automatic/pistol/cm357) fire_sound = 'sound/weapons/gun/smg/cm5.ogg' manufacturer = MANUFACTURER_MINUTEMAN + spread = 3 + spread_unwielded = 7 + valid_attachments = CLIP_ATTACHMENTS slot_available = list( ATTACHMENT_SLOT_MUZZLE = 1, From f54162bf568cd27b85754a3e67d940ead957b14e Mon Sep 17 00:00:00 2001 From: Burning02 <141873051+Burning02@users.noreply.github.com> Date: Tue, 7 Jan 2025 21:13:19 -0500 Subject: [PATCH 011/118] Allows Hardliner captains vest to hold firearms (#3920) ## About The Pull Request As is the title, allows the captains vest of Hardliners to holster firearms on the back ## Why It's Good For The Game Due to the evil and fucked up future the Hardliners captains vest comes from, ![image](https://github.com/user-attachments/assets/84594f54-78b3-4aaa-8c20-253a0193d06b) it couldn't hold firearms unlike literally every other captains vest ## Changelog :cl: balance: The Hardliners captain jacket can hold firearms now /:cl: --- code/modules/clothing/factions/hardliners.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/clothing/factions/hardliners.dm b/code/modules/clothing/factions/hardliners.dm index 83c00e64b89e..a1fe2fe6b2ce 100644 --- a/code/modules/clothing/factions/hardliners.dm +++ b/code/modules/clothing/factions/hardliners.dm @@ -102,6 +102,10 @@ armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) togglename = "buttons" +/obj/item/clothing/suit/toggle/armor/vest/hardliners/Initialize() + . = ..() + allowed = GLOB.security_vest_allowed + /////////////// //Spacesuits// ////////////// From 9bb966136a1e9febf500faa8a929df5a1da28990 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 7 Jan 2025 20:23:24 -0600 Subject: [PATCH 012/118] Automatic changelog generation for PR #3920 [ci skip] --- html/changelogs/AutoChangeLog-pr-3920.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3920.yml diff --git a/html/changelogs/AutoChangeLog-pr-3920.yml b/html/changelogs/AutoChangeLog-pr-3920.yml new file mode 100644 index 000000000000..7518b6d1de7a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3920.yml @@ -0,0 +1,4 @@ +author: Burning02 +changes: + - {balance: The Hardliners captain jacket can hold firearms now} +delete-after: true From b9cc7f5f6423f9690beffdb5ecbf30f2503198ae Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Tue, 7 Jan 2025 21:35:01 -0500 Subject: [PATCH 013/118] N+S Mine Change (#3959) ## About The Pull Request N+S Mine ruin now has a vein filled with hydrogen ice in place of minerals Mining scanners now tell you they detect ore rather than /obj/item/stack/ore ## Changelog :cl: add: N+S Mine ruin now has ice for mining fix: Mining Scanner feedback better /:cl: --- .../rockplanet_mining_installation.dmm | 20 ++++++++++--------- .../mining/equipment/mineral_scanner.dm | 20 +++++++++---------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/_maps/RandomRuins/RockRuins/rockplanet_mining_installation.dmm b/_maps/RandomRuins/RockRuins/rockplanet_mining_installation.dmm index b140787b25b7..886b7277432d 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_mining_installation.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_mining_installation.dmm @@ -273,9 +273,11 @@ /turf/open/floor/mineral/titanium/tiled/rockplanet, /area/overmap_encounter/planetoid/cave/explored) "bx" = ( -/obj/structure/vein/classtwo, /obj/effect/turf_decal/box, /obj/effect/decal/cleanable/dirt, +/obj/structure/vein/classtwo{ + mining_charges = 60 + }, /turf/open/floor/plating/asteroid/rockplanet/wet/cracked, /area/ruin/rockplanet/mining_base/rig_two) "bC" = ( @@ -3697,7 +3699,8 @@ /turf/open/floor/plating/asteroid/rockplanet/lit, /area/overmap_encounter/planetoid/rockplanet/explored) "tP" = ( -/obj/machinery/mineral/processing_unit, +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/railing, /turf/open/floor/plating, /area/ruin/rockplanet/mining_base/refinery) "tQ" = ( @@ -4091,7 +4094,6 @@ /area/overmap_encounter/planetoid/rockplanet/explored) "wz" = ( /obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/closet/crate, /turf/open/floor/plating, /area/ruin/rockplanet/mining_base/refinery) "wC" = ( @@ -5416,6 +5418,7 @@ /obj/structure/platform/corner{ dir = 1 }, +/obj/structure/closet/crate, /turf/open/floor/plating, /area/ruin/rockplanet/mining_base/refinery) "CZ" = ( @@ -9303,9 +9306,6 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/industrial/radiation{ - dir = 1 - }, /turf/open/floor/concrete/slab_4, /area/ruin/rockplanet/mining_base/engineering) "Yk" = ( @@ -9619,7 +9619,9 @@ /obj/structure/vein/classthree{ mining_charges = 80; max_mobs = 18; - spawn_distance_max = 7 + spawn_distance_max = 7; + ore_list = list(/obj/item/stack/ore/ice = 10); + vein_contents = list(/obj/item/stack/ore/ice) }, /obj/effect/turf_decal/box, /obj/effect/decal/cleanable/dirt, @@ -12074,11 +12076,11 @@ at Eq xj ew -MM +tP wI wz xc -tP +xc xc xc hu diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 4def7dbe5dde..e6f30cd41605 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -219,24 +219,24 @@ return located_vein //For scanning ore veins of their contents -/obj/item/pinpointer/mineral/afterattack(obj/structure/vein/O, mob/user, proximity) +/obj/item/pinpointer/mineral/afterattack(obj/structure/vein/our_vein, mob/user, proximity) . = ..() - if(!proximity || !istype(O,/obj/structure/vein)) + if(!proximity || !istype(our_vein,/obj/structure/vein)) return playsound(src, 'sound/effects/fastbeep.ogg', 10) if(user.a_intent == INTENT_HARM) - if(O.detectable == TRUE) + if(our_vein.detectable == TRUE) to_chat(user,span_notice("You blacklist the vein from the scanner's telemetry, and will no longer be detected as a site of interest to the scanner.")) - O.detectable = FALSE + our_vein.detectable = FALSE return else to_chat(user,span_notice("You mark vein into the scanner's telemetry, allowing it be located by underground scans.")) - O.detectable = TRUE + our_vein.detectable = TRUE return - if(O.vein_contents.len > 0) - to_chat(user, "Class [O.vein_class] ore vein with [O.mining_charges] possible ore lodes found.") - for(var/re in O.vein_contents) - to_chat(user, "\tExtractable amounts of [re].") + if(our_vein.vein_contents.len > 0) + to_chat(user, "Class [our_vein.vein_class] ore vein with [our_vein.mining_charges] possible ore lodes found.") + for(var/our_ore in our_vein.vein_contents) + to_chat(user, "\tExtractable amounts of [our_ore?:name].") else - to_chat(user, "No notable mineral deposits found in [O].") + to_chat(user, "No notable mineral deposits found in [our_vein].") From 59bc3157f4c931b006029175c821f69ef14e55f0 Mon Sep 17 00:00:00 2001 From: Mark Suckerberg Date: Tue, 7 Jan 2025 20:35:45 -0600 Subject: [PATCH 014/118] More minor fixes (#3916) ## About The Pull Request Fixes dumb compile warning that annoys me, and optimizes APC process since it was apparently wasting time logging every single APC process tick for feedback, which... no. Not necessary. ## Why It's Good For The Game Small improvements are good ## Changelog :cl: /:cl: --------- Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/mob/living/silicon/robot/life.dm | 2 +- .../computers/item/computer_power.dm | 4 +- code/modules/power/apc.dm | 41 +++++++++++------- code/modules/power/cell.dm | 4 +- code/modules/power/lighting.dm | 2 +- code/modules/recycling/disposal/bin.dm | 2 +- code/modules/surgery/organs/lungs.dm | 43 ------------------- 7 files changed, 32 insertions(+), 66 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 123726ce3c01..987b8b6c2a32 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -21,7 +21,7 @@ if(cell.charge <= 100) uneq_all() var/amt = clamp((lamp_enabled * lamp_intensity),1,cell.charge) //Lamp will use a max of 5 charge, depending on brightness of lamp. If lamp is off, borg systems consume 1 point of charge, or the rest of the cell if it's lower than that. - cell.use(amt) //Usage table: 1/tick if off/lowest setting, 4 = 4/tick, 6 = 8/tick, 8 = 12/tick, 10 = 16/tick + cell.use(amt, FALSE) //Usage table: 1/tick if off/lowest setting, 4 = 4/tick, 6 = 8/tick, 8 = 12/tick, 10 = 16/tick else uneq_all() low_power_mode = TRUE diff --git a/code/modules/modular_computers/computers/item/computer_power.dm b/code/modules/modular_computers/computers/item/computer_power.dm index d3c65f86ec35..8e5a8e2d0a21 100644 --- a/code/modules/modular_computers/computers/item/computer_power.dm +++ b/code/modules/modular_computers/computers/item/computer_power.dm @@ -13,10 +13,10 @@ if(battery_module && battery_module.battery && battery_module.battery.charge) var/obj/item/stock_parts/cell/cell = battery_module.battery - if(cell.use(amount * GLOB.CELLRATE)) + if(cell.use(amount * GLOB.CELLRATE, FALSE)) return TRUE else // Discharge the cell anyway. - cell.use(min(amount*GLOB.CELLRATE, cell.charge)) + cell.use(min(amount*GLOB.CELLRATE, cell.charge), FALSE) return FALSE return FALSE diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 48651a3146c4..a3cedcd401ea 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -286,7 +286,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) has_electronics = APC_ELECTRONICS_SECURED // is starting with a power cell installed, create it and set its charge level if(cell_type) - cell = new cell_type + cell = new cell_type(src) cell.charge = start_charge * cell.maxcharge / 100 // (convert percentage to actual value) var/area/A = loc.loc @@ -1310,7 +1310,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) if(cell && !shorted) // draw power from cell as before to power the area var/cellused = min(cell.charge, GLOB.CELLRATE * lastused_total) // clamp deduction to a max, amount left in cell - cell.use(cellused) + cell.use(cellused, FALSE) if(excess > lastused_total) // if power excess recharge the cell // by the same amount just used @@ -1345,23 +1345,33 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) lighting = autoset(lighting, AUTOSET_FORCE_OFF) environ = autoset(environ, AUTOSET_FORCE_OFF) area.poweralert(0, src) - else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment - equipment = autoset(equipment, AUTOSET_OFF) - lighting = autoset(lighting, AUTOSET_OFF) - environ = autoset(environ, AUTOSET_ON) - area.poweralert(0, src) - else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment + else if(longtermpower < 0) + switch(cell.percent()) + if(0 to 15) + equipment = autoset(equipment, AUTOSET_OFF) + lighting = autoset(lighting, AUTOSET_OFF) + environ = autoset(environ, AUTOSET_ON) + area.poweralert(0, src) + if(15 to 30) + equipment = autoset(equipment, AUTOSET_OFF) + lighting = autoset(lighting, AUTOSET_ON) + environ = autoset(environ, AUTOSET_ON) + area.poweralert(0, src) + if(30 to 75) + equipment = autoset(equipment, AUTOSET_ON) + lighting = autoset(lighting, AUTOSET_ON) + environ = autoset(environ, AUTOSET_ON) + area.poweralert(0, src) + if(75 to 100) + equipment = autoset(equipment, AUTOSET_ON) + lighting = autoset(lighting, AUTOSET_ON) + environ = autoset(environ, AUTOSET_ON) + area.poweralert(1, src) + else equipment = autoset(equipment, AUTOSET_ON) lighting = autoset(lighting, AUTOSET_ON) environ = autoset(environ, AUTOSET_ON) - area.poweralert(0, src) - else // otherwise all can be on - equipment = autoset(equipment, 1) - lighting = autoset(lighting, 1) - environ = autoset(environ, 1) area.poweralert(1, src) - if(cell.percent() > 75) - area.poweralert(1, src) // now trickle-charge the cell if(chargemode && charging == APC_CHARGING && operating) @@ -1397,7 +1407,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) chargecount = 0 else // no cell, switch everything off - charging = APC_NOT_CHARGING chargecount = 0 equipment = autoset(equipment, AUTOSET_FORCE_OFF) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 0e29e53da52e..d4a17523255d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -76,14 +76,14 @@ return 100*charge/maxcharge // use power from a cell -/obj/item/stock_parts/cell/use(amount) +/obj/item/stock_parts/cell/use(amount, log = TRUE) if(rigged && amount > 0) explode() return 0 if(charge < amount) return 0 charge = (charge - amount) - if(!istype(loc, /obj/machinery/power/apc)) + if(log) SSblackbox.record_feedback("tally", "cell_used", 1, type) return 1 diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 662bdbecc572..8b7ab2fa3b53 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -634,7 +634,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/built, 28) visible_message("[src] short-circuits from too powerful of a power cell!") burn_out() return FALSE - cell.use(pwr) + cell.use(pwr, FALSE) set_light(brightness * bulb_emergency_brightness_mul, max(bulb_emergency_pow_min, bulb_emergency_pow_mul * (cell.charge / cell.maxcharge)), bulb_emergency_colour) return TRUE diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 111428528242..793edb4a84da 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -432,7 +432,7 @@ if(air_contents.return_pressure() >= SEND_PRESSURE) full_pressure = TRUE pressure_charging = FALSE - update_appearance() + update_appearance(UPDATE_OVERLAYS) return /obj/machinery/disposal/bin/get_remote_view_fullscreens(mob/user) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 14fd951e0e9a..5a0d20e23ca3 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -461,22 +461,17 @@ if(!HAS_TRAIT(breather, TRAIT_RESISTCOLD)) // COLD DAMAGE var/cold_modifier = breather.dna.species.coldmod var/breath_effect_prob = 0 - var/part_count = 0 if(breath_temperature < cold_level_3_threshold) breather.apply_damage(cold_level_3_damage * cold_modifier, cold_damage_type, spread_damage = TRUE) breath_effect_prob = 100 - part_count = 8 if(breath_temperature > cold_level_3_threshold && breath_temperature < cold_level_2_threshold) breather.apply_damage(cold_level_2_damage * cold_modifier, cold_damage_type, spread_damage = TRUE) breath_effect_prob = 75 - part_count = 5 if(breath_temperature > cold_level_2_threshold && breath_temperature < cold_level_1_threshold) breather.apply_damage(cold_level_1_damage * cold_modifier, cold_damage_type, spread_damage = TRUE) breath_effect_prob = 50 - part_count = 3 if(breath_temperature > cold_level_1_threshold) breath_effect_prob = 25 - part_count = 2 if(breath_temperature < cold_level_1_threshold) if(prob(sqrt(breath_effect_prob) * 6)) @@ -484,7 +479,6 @@ else if(breath_temperature < chlly_threshold) if(!breath_effect_prob) breath_effect_prob = 20 - part_count = 1 if(prob(sqrt(breath_effect_prob) * 6)) to_chat(breather, "You feel [chilly_message] in your [name].") if(breath_temperature < chlly_threshold) @@ -525,43 +519,6 @@ // The air you breathe out should match your body temperature breath.set_temperature(breather.bodytemperature) -/// Creates a particle effect off the mouth of the passed mob. -/obj/item/organ/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type, part_count) - ASSERT(ispath(particle_type, /particles)) - - var/obj/effect/abstract/particle_holder/holder = new(breather, particle_type) - var/particles/breath_particle = holder.particles - var/breath_dir = breather.dir - - var/list/particle_grav = list(0, 0.1, 0) - var/list/particle_pos = list(0, 10, 0) - if(breath_dir & NORTH) - particle_grav[2] = 0.2 - breath_particle.rotation = pick(-45, 45) - // Layer it behind the mob since we're facing away from the camera - holder.pixel_w -= 4 - holder.pixel_y += 4 - if(breath_dir & WEST) - particle_grav[1] = -0.2 - particle_pos[1] = -5 - breath_particle.rotation = -45 - if(breath_dir & EAST) - particle_grav[1] = 0.2 - particle_pos[1] = 5 - breath_particle.rotation = 45 - if(breath_dir & SOUTH) - particle_grav[2] = 0.2 - breath_particle.rotation = pick(-45, 45) - // Shouldn't be necessary but just for parity - holder.pixel_w += 4 - holder.pixel_y -= 4 - - breath_particle.gravity = particle_grav - breath_particle.position = particle_pos - breath_particle.count = part_count - - QDEL_IN(holder, breath_particle.lifespan) - /obj/item/organ/lungs/on_life() . = ..() if(failed && !(organ_flags & ORGAN_FAILING)) From ea32747406d62ff35fcae7c08ca23ab9e2317515 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 7 Jan 2025 20:45:40 -0600 Subject: [PATCH 015/118] Automatic changelog generation for PR #3959 [ci skip] --- html/changelogs/AutoChangeLog-pr-3959.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3959.yml diff --git a/html/changelogs/AutoChangeLog-pr-3959.yml b/html/changelogs/AutoChangeLog-pr-3959.yml new file mode 100644 index 000000000000..f919a2a8eb42 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3959.yml @@ -0,0 +1,5 @@ +author: Erikafox +changes: + - {rscadd: N+S Mine ruin now has ice for mining} + - {bugfix: Mining Scanner feedback better} +delete-after: true From f77b347bbf4daa2695ad964541048f9270e421d8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 9 Jan 2025 01:02:56 +0000 Subject: [PATCH 016/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3920.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3959.yml | 5 ----- html/changelogs/archive/2025-01.yml | 6 ++++++ 3 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3920.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3959.yml diff --git a/html/changelogs/AutoChangeLog-pr-3920.yml b/html/changelogs/AutoChangeLog-pr-3920.yml deleted file mode 100644 index 7518b6d1de7a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3920.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Burning02 -changes: - - {balance: The Hardliners captain jacket can hold firearms now} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3959.yml b/html/changelogs/AutoChangeLog-pr-3959.yml deleted file mode 100644 index f919a2a8eb42..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3959.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Erikafox -changes: - - {rscadd: N+S Mine ruin now has ice for mining} - - {bugfix: Mining Scanner feedback better} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index 8557945cd532..0fc2d3b86d2d 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -73,3 +73,9 @@ on your back. - balance: Duffel bags can now carry more, but must be placed on the ground to be opened. +2025-01-09: + Burning02: + - balance: The Hardliners captain jacket can hold firearms now + Erikafox: + - rscadd: N+S Mine ruin now has ice for mining + - bugfix: Mining Scanner feedback better From 405e274f22beca254354b48c065b7271558b3256 Mon Sep 17 00:00:00 2001 From: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:08:26 -0600 Subject: [PATCH 017/118] Adds a .NET 9 SDK setup action to linters (#3979) ## About The Pull Request https://github.com/tgstation/tgstation/pull/88988 --------- Co-authored-by: Mark Suckerberg --- .github/workflows/autowiki.yml | 125 ++++++++++--------- .github/workflows/ci_suite.yml | 35 +++--- .github/workflows/docker_publish.yml | 2 +- .github/workflows/generate_documentation.yml | 4 +- .github/workflows/make_changelogs.yml | 2 +- .github/workflows/rerun_flaky_tests.yml | 4 +- .github/workflows/run_integration_tests.yml | 14 +-- .github/workflows/update_tgs_dmapi.yml | 2 +- .tgs.yml | 2 +- dependencies.sh | 2 +- 10 files changed, 100 insertions(+), 92 deletions(-) diff --git a/.github/workflows/autowiki.yml b/.github/workflows/autowiki.yml index 10d3cea1e676..baeb57421361 100644 --- a/.github/workflows/autowiki.yml +++ b/.github/workflows/autowiki.yml @@ -1,7 +1,7 @@ name: Autowiki on: schedule: - - cron: "5 4 * * *" + - cron: "5 4 * * *" workflow_dispatch: permissions: @@ -11,74 +11,75 @@ jobs: autowiki: runs-on: ubuntu-latest steps: - - name: "Check for AUTOWIKI_USERNAME" - id: secrets_set - env: - ENABLER_SECRET: ${{ secrets.AUTOWIKI_USERNAME }} - run: | - unset SECRET_EXISTS - if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi - echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT + - name: "Check for AUTOWIKI_USERNAME" + id: secrets_set + env: + ENABLER_SECRET: ${{ secrets.AUTOWIKI_USERNAME }} + run: | + unset SECRET_EXISTS + if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi + echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - - name: Checkout - if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/checkout@v3 + - name: Checkout + if: steps.secrets_set.outputs.SECRETS_ENABLED + uses: actions/checkout@v4 - - name: Setup BYOND cache - id: cache-byond - if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/cache@v3 - with: - path: ~/BYOND - key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} + - name: Setup BYOND cache + id: cache-byond + if: steps.secrets_set.outputs.SECRETS_ENABLED + uses: actions/cache@v4 + with: + path: ~/BYOND + key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }}-${{ hashFiles('.github/workflows/autowiki.yml') }} - - name: Install BYOND - if: steps.cache-byond.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED - run: bash tools/ci/install_byond.sh + - name: Install BYOND + if: steps.cache-byond.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED + run: bash tools/ci/install_byond.sh - - name: Install runtime dependencies - if: steps.secrets_set.outputs.SECRETS_ENABLED - run: | - sudo dpkg --add-architecture i386 - sudo apt update || true - sudo apt install -o APT::Immediate-configure=false libssl-dev:i386 - bash tools/ci/install_rust_g.sh + - name: Install runtime dependencies + if: steps.secrets_set.outputs.SECRETS_ENABLED + run: | + sudo dpkg --add-architecture i386 + sudo apt update || true + sudo apt install -o APT::Immediate-configure=false libssl-dev:i386 libgcc-s1:i386 + bash tools/ci/install_rust_g.sh - - name: Cache dependencies - if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/cache@v3 - with: - path: ~/.byond/bin - key: ${{ runner.os }}-deps-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} + - name: Cache dependencies + id: cache-deps + if: steps.secrets_set.outputs.SECRETS_ENABLED + uses: actions/cache@v4 + with: + path: ~/.byond/bin + key: ${{ runner.os }}-autowiki-deps-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }}-${{ hashFiles('.github/workflows/autowiki.yml') }} - - name: Install build dependencies - if: steps.cache-deps.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED - run: | - sudo apt install -o APT::Immediate-Configure=false libgcc-s1:i386 g++-multilib zlib1g-dev:i386 - rustup target add i686-unknown-linux-gnu + - name: Install build dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED + run: | + sudo apt install -o APT::Immediate-Configure=false g++-multilib zlib1g-dev:i386 + rustup target add i686-unknown-linux-gnu - - name: Build auxmos - if: steps.cache-deps.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED - run: bash tools/ci/build_auxmos.sh + - name: Build auxmos + if: steps.cache-deps.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED + run: bash tools/ci/build_auxmos.sh - - name: Build rust-g - if: steps.cache-deps.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED - run: bash tools/ci/build_rust_g.sh + - name: Build rust-g + if: steps.cache-deps.outputs.cache-hit != 'true' && steps.secrets_set.outputs.SECRETS_ENABLED + run: bash tools/ci/build_rust_g.sh - - name: Compile and generate Autowiki files - if: steps.secrets_set.outputs.SECRETS_ENABLED - run: | - bash tools/ci/install_byond.sh - source $HOME/BYOND/byond/bin/byondsetup - tools/build/build --ci autowiki + - name: Compile and generate Autowiki files + if: steps.secrets_set.outputs.SECRETS_ENABLED + run: | + bash tools/ci/install_byond.sh + source $HOME/BYOND/byond/bin/byondsetup + tools/build/build --ci autowiki - - name: Run Autowiki - if: steps.secrets_set.outputs.SECRETS_ENABLED - env: - USERNAME: ${{ secrets.AUTOWIKI_USERNAME }} - PASSWORD: ${{ secrets.AUTOWIKI_PASSWORD }} - run: | - cd tools/autowiki - npm install - cd ../.. - node tools/autowiki/autowiki.js data/autowiki_edits.txt data/autowiki_files/ + - name: Run Autowiki + if: steps.secrets_set.outputs.SECRETS_ENABLED + env: + USERNAME: ${{ secrets.AUTOWIKI_USERNAME }} + PASSWORD: ${{ secrets.AUTOWIKI_PASSWORD }} + run: | + cd tools/autowiki + npm install + cd ../.. + node tools/autowiki/autowiki.js data/autowiki_edits.txt data/autowiki_files/ diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 568e19a20a88..cfb850bd16fc 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -32,14 +32,13 @@ jobs: timeout-minutes: 20 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: master - - uses: actions/checkout@v3 - name: Restore SpacemanDMM cache id: cache-spacemandmm - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/dreamchecker key: ${{ runner.os }}-spacemandmm-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} @@ -48,22 +47,24 @@ jobs: - name: Restore BYOND cache id: cache-byond - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/BYOND - key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} + key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }}-${{ hashFiles('.github/workflows/ci_suite.yml') }} + - name: Install BYOND if: steps.cache-byond.outputs.cache-hit != 'true' run: bash tools/ci/install_byond.sh - name: Restore Yarn cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: tgui/.yarn/cache - key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }} + key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }}-${{ hashFiles('.github/workflows/ci_suite.yml') }} restore-keys: | - ${{ runner.os }}-build-${{ secrets.CACHE_PURGE_KEY }}- - ${{ runner.os }}-build- + ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }}- + ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}- + ${{ runner.os }}-yarn- ${{ runner.os }}- - name: Install Tools @@ -108,8 +109,13 @@ jobs: tools/bootstrap/python -m ci.check_regex --log-changes-only --github-actions cat check_regex_output.txt + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4.2.0 + with: + dotnet-version: 9.x + - name: Install OpenDream - uses: robinraju/release-downloader@v1.9 + uses: robinraju/release-downloader@v1.11 with: repository: "OpenDreamProject/OpenDream" tag: "latest" @@ -134,7 +140,7 @@ jobs: uses: actions/cache@v3 with: path: ~/BYOND - key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} + key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }}-${{ hashFiles('.github/workflows/ci_suite.yml') }} - name: Install BYOND if: steps.cache-byond.outputs.cache-hit != 'true' run: bash tools/ci/install_byond.sh @@ -187,10 +193,11 @@ jobs: uses: actions/cache@v3 with: path: tgui/.yarn/cache - key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }} + key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }}-${{ hashFiles('.github/workflows/ci_suite.yml') }} restore-keys: | - ${{ runner.os }}-build-${{ secrets.CACHE_PURGE_KEY }}- - ${{ runner.os }}-build- + ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }}- + ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}- + ${{ runner.os }}-yarn- ${{ runner.os }}- - name: Compile diff --git a/.github/workflows/docker_publish.yml b/.github/workflows/docker_publish.yml index 1d7c299831a2..65bccd871720 100644 --- a/.github/workflows/docker_publish.yml +++ b/.github/workflows/docker_publish.yml @@ -11,7 +11,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[ci skip]')" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build and Publish Docker Image to Registry uses: elgohr/Publish-Docker-Github-Action@master diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index e987d05ad2a9..57362bd74f6d 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -23,9 +23,9 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore SpacemanDMM cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/SpacemanDMM key: ${{ runner.os }}-spacemandmm-${{ secrets.CACHE_PURGE_KEY }} diff --git a/.github/workflows/make_changelogs.yml b/.github/workflows/make_changelogs.yml index 1a30c8183e35..2d79d1c85e45 100644 --- a/.github/workflows/make_changelogs.yml +++ b/.github/workflows/make_changelogs.yml @@ -11,7 +11,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 25 - name: Python setup diff --git a/.github/workflows/rerun_flaky_tests.yml b/.github/workflows/rerun_flaky_tests.yml index 317356dcee00..0e1b07ba33e1 100644 --- a/.github/workflows/rerun_flaky_tests.yml +++ b/.github/workflows/rerun_flaky_tests.yml @@ -16,7 +16,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.run_attempt == 1 }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Rerun flaky tests uses: actions/github-script@v6 with: @@ -28,7 +28,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.run_attempt == 2 }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Report flaky tests uses: actions/github-script@v6 with: diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml index 699151fe6f99..b9db5633076f 100644 --- a/.github/workflows/run_integration_tests.yml +++ b/.github/workflows/run_integration_tests.yml @@ -28,14 +28,14 @@ jobs: - 3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup BYOND cache id: cache-byond - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/BYOND - key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} + key: ${{ runner.os }}-byond-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }}-${{ hashFiles('.github/workflows/run_integration_tests.yml') }} - name: Install BYOND if: steps.cache-byond.outputs.cache-hit != 'true' @@ -45,19 +45,19 @@ jobs: run: | sudo dpkg --add-architecture i386 sudo apt update || true - sudo apt install -o APT::Immediate-Configure=false libssl-dev:i386 + sudo apt install -o APT::Immediate-Configure=false libssl-dev:i386 libgcc-s1:i386 - name: Setup dependencies cache id: cache-deps - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.byond/bin - key: ${{ runner.os }}-deps-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }} + key: ${{ runner.os }}-deps-cache-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('dependencies.sh') }}-${{ hashFiles('.github/workflows/run_integration_tests.yml') }} - name: Install build dependencies if: steps.cache-deps.outputs.cache-hit != 'true' run: | - sudo apt install -o APT::Immediate-Configure=false libgcc-s1:i386 g++-multilib zlib1g-dev:i386 + sudo apt install -o APT::Immediate-Configure=false g++-multilib zlib1g-dev:i386 rustup target add i686-unknown-linux-gnu - name: Build auxmos diff --git a/.github/workflows/update_tgs_dmapi.yml b/.github/workflows/update_tgs_dmapi.yml index 8aa77d0d6310..f014a93be9f1 100644 --- a/.github/workflows/update_tgs_dmapi.yml +++ b/.github/workflows/update_tgs_dmapi.yml @@ -11,7 +11,7 @@ jobs: name: Update the TGS DMAPI steps: - name: Clone - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Branch run: | diff --git a/.tgs.yml b/.tgs.yml index 76a53577b505..c29326d77603 100644 --- a/.tgs.yml +++ b/.tgs.yml @@ -3,7 +3,7 @@ version: 1 # The BYOND version to use (kept in sync with dependencies.sh by the "TGS Test Suite" CI job) # Must be interpreted as a string, keep quoted -byond: "515.1633" +byond: "515.1642" # Folders to create in "/Configuration/GameStaticFiles/" static_files: # Config directory should be static diff --git a/dependencies.sh b/dependencies.sh index b702df60dacd..88e2d7a6422d 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -5,7 +5,7 @@ # byond version export BYOND_MAJOR=515 -export BYOND_MINOR=1633 +export BYOND_MINOR=1642 #rust version export RUST_VERSION=1.73.0 From 74e1d9761dc5dc34784d31a4642e31cc30d4bcfd Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Tue, 14 Jan 2025 01:26:48 -0500 Subject: [PATCH 018/118] Fix Runtime (#3975) Every time someone examined a machine it runtimed because of a bad proc --- code/game/objects/items/storage/backpack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 88dd8d3cb534..3fcbd989206c 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -48,7 +48,7 @@ STR.use_sound = 'sound/items/storage/unzip.ogg' STR.worn_access = FALSE -/obj/machinery/examine(mob/user) +/obj/item/storage/backpack/examine(mob/user) . = ..() var/datum/component/storage/bpack = GetComponent(/datum/component/storage) if(bpack.worn_access == FALSE) From ad2840eac42d9bd4e24e7b065cf8f536d76166e7 Mon Sep 17 00:00:00 2001 From: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Date: Tue, 14 Jan 2025 16:59:53 -0600 Subject: [PATCH 019/118] attempting to fix our tests (#4011) bumping rust versions --- dependencies.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.sh b/dependencies.sh index 88e2d7a6422d..b9a4fcd40bdf 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -8,10 +8,10 @@ export BYOND_MAJOR=515 export BYOND_MINOR=1642 #rust version -export RUST_VERSION=1.73.0 +export RUST_VERSION=1.81.0 #rust_g git tag -export RUST_G_VERSION=3.0.0 +export RUST_G_VERSION=3.3.0 #node version export NODE_VERSION=16 From d166b40b2ce286d34415e2128cc87911b2296cbc Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:31:22 -0500 Subject: [PATCH 020/118] Fix glowing guns (#3982) :cl: fix: guns no longer glow in the dark /:cl: Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/projectiles/gun.dm | 3 ++- code/modules/projectiles/guns/ballistic/assault.dm | 2 ++ code/modules/projectiles/guns/ballistic/marksman.dm | 2 ++ code/modules/projectiles/guns/ballistic/pistol.dm | 2 ++ code/modules/projectiles/guns/ballistic/smg.dm | 2 ++ .../guns/manufacturer/solar_armories/ballistic.dm | 9 +++++++++ 6 files changed, 19 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 353630dfea74..f66dddfec9b5 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -34,6 +34,7 @@ light_range = 3 light_color = COLOR_VERY_SOFT_YELLOW + light_on = FALSE ///Icon state of the muzzle flash effect. var/muzzleflash_iconstate @@ -879,7 +880,7 @@ var/atom/movable/flash_loc = user if(!light_on) set_light_on(TRUE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light_on), FALSE), 1 SECONDS) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light_on), FALSE), 3) //Offset the pixels. switch(firing_angle) diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index 70125488ccbe..a3247cc3dcf0 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -20,6 +20,8 @@ gunslinger_recoil_bonus = 2 gunslinger_spread_bonus = 16 + light_range = 2 + /obj/item/gun/ballistic/automatic/assault/skm name = "\improper SKM-24" desc = "An obsolete model of assault rifle once used by CLIP. Legendary for its durability and low cost, surplus rifles are commonplace on the Frontier, and the design has been widely copied. Chambered in 7.62x40mm CLIP." diff --git a/code/modules/projectiles/guns/ballistic/marksman.dm b/code/modules/projectiles/guns/ballistic/marksman.dm index 71458e24f1d2..9c89c551b124 100644 --- a/code/modules/projectiles/guns/ballistic/marksman.dm +++ b/code/modules/projectiles/guns/ballistic/marksman.dm @@ -5,3 +5,5 @@ zoomable = TRUE //this var as true without setting anything else produces a 2x zoom wield_slowdown = DMR_SLOWDOWN wield_delay = 1 SECONDS + + light_range = 2 diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index a6bbed500dfc..bd7a4728b188 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -19,6 +19,8 @@ wield_slowdown = PISTOL_SLOWDOWN muzzleflash_iconstate = "muzzle_flash_light" + light_range = 1 + /obj/item/gun/ballistic/automatic/pistol/deagle name = "\improper Desert Eagle" diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index 74d0a3f50860..52fb375b9424 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -11,6 +11,8 @@ recoil_unwielded = 4 w_class = WEIGHT_CLASS_BULKY + light_range = 1 + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) default_firemode = FIREMODE_SEMIAUTO diff --git a/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm b/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm index ac0cad28c21f..a053a8146831 100644 --- a/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm +++ b/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm @@ -37,6 +37,9 @@ spread_unwielded = 12 fire_select_icon_state_prefix = "slug_" + //gauss doesn't explode so there's not light. + light_range = 0 + valid_attachments = list( /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, @@ -118,6 +121,9 @@ slot_flags = ITEM_SLOT_BACK + //gauss doesn't explode so there's not light. + light_range = 0 + valid_attachments = list( /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, @@ -160,6 +166,9 @@ slot_flags = ITEM_SLOT_BACK + //gauss doesn't explode so there's not light. + light_range = 0 + valid_attachments = list( /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, From feb25b0c980ca7bbbe74b3e2ad93f4b7d2eb534f Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 14 Jan 2025 18:41:47 -0600 Subject: [PATCH 021/118] Automatic changelog generation for PR #3982 [ci skip] --- html/changelogs/AutoChangeLog-pr-3982.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3982.yml diff --git a/html/changelogs/AutoChangeLog-pr-3982.yml b/html/changelogs/AutoChangeLog-pr-3982.yml new file mode 100644 index 000000000000..e9554341a0ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3982.yml @@ -0,0 +1,4 @@ +author: Erikafox +changes: + - {bugfix: guns no longer glow in the dark} +delete-after: true From c387ac263e5e3a3fe769490eaa648dd81ca64836 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 15 Jan 2025 01:01:55 +0000 Subject: [PATCH 022/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3982.yml | 4 ---- html/changelogs/archive/2025-01.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3982.yml diff --git a/html/changelogs/AutoChangeLog-pr-3982.yml b/html/changelogs/AutoChangeLog-pr-3982.yml deleted file mode 100644 index e9554341a0ef..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3982.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Erikafox -changes: - - {bugfix: guns no longer glow in the dark} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index 0fc2d3b86d2d..bf7662ab5761 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -79,3 +79,6 @@ Erikafox: - rscadd: N+S Mine ruin now has ice for mining - bugfix: Mining Scanner feedback better +2025-01-15: + Erikafox: + - bugfix: guns no longer glow in the dark From c9eb8a13b0ad4f7917925f18fefee595dc347846 Mon Sep 17 00:00:00 2001 From: Ical <86125936+Ical92@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:56:19 -0500 Subject: [PATCH 023/118] Properly marks merge conflicts in map editor (#3974) ## About The Pull Request Fixes #3965 (re)Adds a merge conflict marker to be used by mapmerge2, additionally adds an icon for it. ![image](https://github.com/user-attachments/assets/bcfc37e4-a50a-442b-96d0-d1c42419743c) ## Why It's Good For The Game Merge conflicts can be properly fixed in the map editor now ## Changelog :cl: fix: merge conflicts are now properly marked /:cl: --- code/game/objects/merge_conflict_marker.dm | 6 ++++++ icons/effects/mapping/mapping_helpers.dmi | Bin 9938 -> 13628 bytes shiptest.dme | 7 ++++--- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 code/game/objects/merge_conflict_marker.dm diff --git a/code/game/objects/merge_conflict_marker.dm b/code/game/objects/merge_conflict_marker.dm new file mode 100644 index 000000000000..4e10b8d8658a --- /dev/null +++ b/code/game/objects/merge_conflict_marker.dm @@ -0,0 +1,6 @@ +/obj/merge_conflict_marker + name = "Merge Conflict Marker" // name & desc are set by merge script + desc = "Marks a merge conflict that needs manually resolved. If you're reading this, something has gone very wrong." + icon = 'icons/effects/mapping/mapping_helpers.dmi' + icon_state = "mergeconflict" + layer = ABOVE_ALL_MOB_LAYER diff --git a/icons/effects/mapping/mapping_helpers.dmi b/icons/effects/mapping/mapping_helpers.dmi index 0ef83c7b1719c0bcf55c26f6d4597d84c1ee02a3..9b15aec3d0342ec7c25d9ff074a57605fe570e24 100644 GIT binary patch literal 13628 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 literal 9938 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 Date: Tue, 14 Jan 2025 19:12:39 -0600 Subject: [PATCH 024/118] Automatic changelog generation for PR #3974 [ci skip] --- html/changelogs/AutoChangeLog-pr-3974.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3974.yml diff --git a/html/changelogs/AutoChangeLog-pr-3974.yml b/html/changelogs/AutoChangeLog-pr-3974.yml new file mode 100644 index 000000000000..6f90f6c7a02c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3974.yml @@ -0,0 +1,4 @@ +author: Ical92 +changes: + - {bugfix: merge conflicts are now properly marked} +delete-after: true From 1e07a1aeb1a3530a3011db89be436579893b2435 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Tue, 14 Jan 2025 22:41:04 -0500 Subject: [PATCH 025/118] Fix Door Deconstruction (#3983) fixes #4001 :cl: fix: Doors are now bludgeoned by whatever you're holding less, and can actually be deconstructed. /:cl: Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/game/objects/structures/door_assembly.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 8030a43c3e93..675a135c493b 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -63,8 +63,6 @@ ) if(I.use_tool(src, user, 40, volume=100)) - if(anchored) - return to_chat(user, span_notice("You [anchored ? "unsecured" : "secured"] the airlock assembly.")) name = "[anchored ? "secured " : ""]airlock assembly" anchored = !anchored @@ -102,6 +100,7 @@ new /obj/item/stack/sheet/glass(get_turf(src)) glass = 0 return TRUE + else if(!anchored) user.visible_message( span_notice("[user] disassembles the airlock assembly."), \ @@ -128,6 +127,7 @@ user.put_in_hands(cable) state = AIRLOCK_ASSEMBLY_NEEDS_WIRES name = "secured airlock assembly" + return TRUE /obj/structure/door_assembly/crowbar_act(mob/living/user, obj/item/I) . = ..() @@ -210,6 +210,7 @@ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS to_chat(user, "You wire the airlock assembly.") name = "wired airlock assembly" + return TRUE else if(istype(W, /obj/item/electronics/airlock) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) W.play_tool_sound(src, 100) @@ -225,6 +226,7 @@ state = AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER name = "near finished airlock assembly" electronics = W + return TRUE else if(istype(W, /obj/item/stack/sheet) && (!glass || !mineral)) var/obj/item/stack/sheet/G = W @@ -282,9 +284,11 @@ to_chat(user, "You cannot add [G] to [src]!") else to_chat(user, "You cannot add [G] to [src]!") - ..() - update_name() - update_appearance() + update_name() + update_appearance() + else + return ..() + /obj/structure/door_assembly/update_overlays() . = ..() From 2c24fafd50a06a45b213390af2a85593b28abb78 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 14 Jan 2025 22:08:51 -0600 Subject: [PATCH 026/118] Automatic changelog generation for PR #3983 [ci skip] --- html/changelogs/AutoChangeLog-pr-3983.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3983.yml diff --git a/html/changelogs/AutoChangeLog-pr-3983.yml b/html/changelogs/AutoChangeLog-pr-3983.yml new file mode 100644 index 000000000000..c0d9bb8e61f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3983.yml @@ -0,0 +1,5 @@ +author: Erikafox +changes: + - {bugfix: "Doors are now bludgeoned by whatever you're holding less, and can actually + be deconstructed."} +delete-after: true From 363d847bbef0b2fba2630d732225a656ba5b120c Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:47:59 -0800 Subject: [PATCH 027/118] Minor Elder Changes (#3977) ## About The Pull Request A few small things like giving the elder another vent pump for their airlock, giving them a little bit of tobacco, some more eggs, replacing a belt with a toolbelt, and putting animals into a pen instead of free roaming. Oh, and also shuffled some areas and docking ports around. No more bridge crates. ## Why It's Good For The Game - Airlock is really big, second vent pump can help - Tobacco for flavour - Eggs for composting - Belt with toolbelt (fix) - Pen (No more Loud Mooing spamming chat constantly) - Cargo bay for no 3000 bridge crates ## Changelog :cl: add: Improved Elder airlock and added a few small things to the Elder (Animal pen, cargo bay area, more tobacco, eggs), and shifted docking ports around. /:cl: --------- Co-authored-by: github-actions --- _maps/shuttles/roumain/srm_elder.dmm | 294 +++++++++++++++------------ 1 file changed, 168 insertions(+), 126 deletions(-) diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index fdd49c8d696a..5f32bb05aff7 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -9,7 +9,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "af" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable{ @@ -112,7 +112,7 @@ dir = 4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "aY" = ( /obj/structure/flora/grass/jungle, /turf/open/floor/grass/ship/jungle, @@ -179,19 +179,18 @@ pixel_x = 8 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "bO" = ( /obj/machinery/door/firedoor/border_only, /obj/machinery/door/poddoor/shutters{ id = "elderbayshutters" }, /turf/open/floor/plasteel/dark, -/area/ship/hallway/starboard) +/area/ship/cargo) "bW" = ( /turf/open/floor/engine/hull, /area/ship/external/dark) "bY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/window/reinforced/fulltile, /obj/structure/grille, /obj/machinery/door/firedoor/border_only, @@ -224,7 +223,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "cj" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_containers/food/snacks/egg, @@ -251,6 +250,14 @@ pixel_y = -2; pixel_x = -9 }, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, +/obj/item/reagent_containers/food/snacks/egg, /turf/open/floor/grass/ship/jungle, /area/ship/roumain) "co" = ( @@ -300,6 +307,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/external, /obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/poddoor/shutters{ id = "elderemergencyairlockshuts" }, @@ -404,19 +412,14 @@ /turf/open/floor/wood/maple, /area/ship/storage) "dt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/structure/destructible/tribal_torch{ - pixel_x = -7; - pixel_y = 2 - }, /obj/effect/turf_decal/trimline/opaque/red/arrow_cw{ dir = 4 }, /obj/effect/turf_decal/industrial/warning{ dir = 1 }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "dL" = ( @@ -458,7 +461,7 @@ dir = 1 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "ei" = ( /turf/open/floor/wood/ebony, /area/ship/roumain) @@ -611,7 +614,7 @@ dir = 4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "gd" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -698,7 +701,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "hg" = ( /obj/structure/cable{ icon_state = "1-2" @@ -749,13 +752,16 @@ dir = 8; id = "elderengineshuts" }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/engineering/engine) "hT" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/siding/brown, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "hV" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ dir = 4; @@ -770,7 +776,7 @@ id = "elderbayshutters" }, /turf/open/floor/plasteel/dark, -/area/ship/hallway/starboard) +/area/ship/cargo) "hZ" = ( /obj/machinery/power/shuttle/engine/electric{ dir = 4 @@ -786,7 +792,7 @@ }, /obj/effect/turf_decal/siding/brown, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "ih" = ( /obj/structure/cable{ icon_state = "0-2" @@ -805,9 +811,6 @@ /turf/open/floor/wood/mahogany, /area/ship/bridge) "iB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, /obj/structure/closet/emcloset/wall/directional/east, /obj/effect/turf_decal/trimline/opaque/red/arrow_cw{ dir = 8 @@ -815,6 +818,7 @@ /obj/effect/turf_decal/industrial/warning{ dir = 1 }, +/obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "iP" = ( @@ -826,7 +830,7 @@ dir = 1 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "iR" = ( /obj/effect/turf_decal/siding/brown{ dir = 1 @@ -835,7 +839,7 @@ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 5 }, /turf/open/floor/wood/ebony, /area/ship/hallway/port) @@ -862,7 +866,7 @@ /obj/effect/turf_decal/industrial/warning, /obj/effect/turf_decal/trimline/opaque/syndiered/end, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "ji" = ( /obj/effect/turf_decal/siding/brown{ dir = 6 @@ -920,7 +924,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "jG" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 1; @@ -956,7 +960,7 @@ dir = 1 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "kD" = ( /obj/structure/destructible/tribal_torch{ pixel_x = -7; @@ -990,7 +994,7 @@ /obj/effect/turf_decal/stoneborder, /obj/item/towel, /turf/open/floor/plasteel/mono/dark, -/area/ship/hallway/starboard) +/area/ship/medical) "lf" = ( /obj/structure/chair/pew/right{ dir = 4 @@ -1041,7 +1045,7 @@ dir = 8 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "lk" = ( /obj/structure/chair/wood{ dir = 4 @@ -1126,7 +1130,7 @@ }, /obj/structure/tank_dispenser/oxygen, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "mD" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ @@ -1172,7 +1176,7 @@ "nj" = ( /obj/effect/turf_decal/siding/brown, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "nk" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -1227,7 +1231,7 @@ dir = 10 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "os" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, @@ -1499,7 +1503,7 @@ dir = 1 }, /turf/open/floor/plasteel/mono/dark, -/area/ship/hallway/starboard) +/area/ship/medical) "rE" = ( /obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 @@ -1508,6 +1512,9 @@ dir = 8; id = "elderengineshuts" }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/engineering/engine) "rK" = ( @@ -1537,6 +1544,10 @@ /area/ship/storage) "rW" = ( /obj/machinery/smartfridge/drying_rack, +/obj/item/reagent_containers/food/snacks/grown/tobacco, +/obj/item/reagent_containers/food/snacks/grown/tobacco, +/obj/item/reagent_containers/food/snacks/grown/tobacco, +/obj/item/reagent_containers/food/snacks/grown/tobacco, /turf/open/floor/ship/dirt/dark, /area/ship/roumain) "sb" = ( @@ -1544,7 +1555,7 @@ dir = 10 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "sc" = ( /obj/structure/railing{ dir = 4 @@ -1579,15 +1590,15 @@ pixel_y = 6 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "sm" = ( -/obj/docking_port/stationary{ - width = 30; - height = 15; - dwidth = 15 +/obj/structure/flora/grass/jungle, +/obj/structure/railing/wood{ + dir = 5 }, -/turf/template_noop, -/area/template_noop) +/mob/living/simple_animal/chicken, +/turf/open/floor/ship/dirt/dark, +/area/ship/roumain) "sr" = ( /obj/structure/table/wood, /obj/item/paper_bin/bundlenatural{ @@ -1625,7 +1636,7 @@ dir = 8 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "sH" = ( /turf/template_noop, /area/template_noop) @@ -1667,7 +1678,7 @@ pixel_x = 1 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "tF" = ( /obj/structure/table/optable, /obj/effect/turf_decal/corner/opaque/blue/diagonal, @@ -1726,10 +1737,6 @@ pixel_y = 16; pixel_x = 5 }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = 7; - pixel_y = -1 - }, /obj/item/storage/box/matches{ pixel_y = 8; pixel_x = -9 @@ -1738,6 +1745,9 @@ pixel_y = 16; pixel_x = -6 }, +/obj/item/clothing/mask/cigarette/pipe{ + pixel_x = 8 + }, /turf/open/floor/wood/mahogany, /area/ship/bridge) "uP" = ( @@ -1757,7 +1767,7 @@ "uY" = ( /obj/structure/ore_box, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "va" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -1774,7 +1784,7 @@ dir = 1 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "vm" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, @@ -1792,7 +1802,7 @@ }, /obj/effect/turf_decal/industrial/warning, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "vz" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -1833,7 +1843,7 @@ dir = 4 }, /turf/open/floor/wood/mahogany, -/area/ship/hallway/starboard) +/area/ship/medical) "vX" = ( /obj/structure/railing{ dir = 4 @@ -1887,11 +1897,21 @@ /turf/open/floor/grass/ship/jungle, /area/ship/roumain) "xe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/trimline/opaque/red/arrow_cw{ dir = 8 }, /obj/effect/turf_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = -12 + }, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "xv" = ( @@ -1907,8 +1927,11 @@ /turf/open/floor/ship/dirt/dark, /area/ship/bridge) "xD" = ( +/obj/structure/railing/wood{ + dir = 1 + }, /mob/living/simple_animal/cow, -/turf/open/floor/ship/dirt/dark, +/turf/open/floor/grass/ship/jungle, /area/ship/roumain) "xN" = ( /obj/structure/cable{ @@ -1938,7 +1961,7 @@ dir = 8 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "yq" = ( /obj/structure/railing{ dir = 1 @@ -1949,7 +1972,7 @@ /obj/item/storage/box/emptysandbags, /obj/item/storage/box/emptysandbags, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "yz" = ( /turf/closed/wall/r_wall, /area/ship/crew/cryo) @@ -1966,7 +1989,7 @@ pixel_x = -4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "yN" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/ship/dirt/dark, @@ -2081,7 +2104,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Ao" = ( /obj/item/toy/plush/snakeplushie, /obj/structure/flora/grass/jungle/b, @@ -2118,7 +2141,7 @@ }, /obj/effect/turf_decal/siding/brown, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "AM" = ( /obj/structure/chair/pew{ dir = 8 @@ -2155,7 +2178,7 @@ pixel_x = -4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "AX" = ( /obj/structure/flora/rock/jungle, /turf/open/floor/grass/ship/jungle, @@ -2222,7 +2245,7 @@ dir = 4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "Bu" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2254,7 +2277,7 @@ /area/ship/hallway/central) "BA" = ( /turf/closed/wall/r_wall, -/area/ship/hallway/starboard) +/area/ship/cargo) "BB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -2506,7 +2529,7 @@ dir = 5 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Fa" = ( /obj/structure/railing/corner, /obj/structure/flora/grass/jungle, @@ -2562,6 +2585,7 @@ /obj/effect/turf_decal/trimline/opaque/red/arrow_cw{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "FG" = ( @@ -2611,7 +2635,7 @@ dir = 6 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Hw" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -2625,7 +2649,7 @@ pixel_x = 10 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "HA" = ( /obj/item/clothing/under/suit/roumain, /obj/item/clothing/suit/armor/roumain, @@ -2668,7 +2692,7 @@ dir = 8 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "HO" = ( /obj/item/clothing/shoes/combat, /obj/item/clothing/under/suit/roumain, @@ -2722,7 +2746,7 @@ }, /obj/effect/turf_decal/spline/fancy/wood/cee, /turf/open/floor/wood/mahogany, -/area/ship/hallway/starboard) +/area/ship/medical) "In" = ( /obj/effect/turf_decal/siding/brown{ dir = 1 @@ -2734,7 +2758,7 @@ dir = 1 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Ir" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -2828,7 +2852,7 @@ }, /obj/machinery/airalarm/directional/west, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Jn" = ( /obj/structure/railing{ dir = 8 @@ -2844,7 +2868,7 @@ }, /obj/effect/turf_decal/siding/brown, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Ju" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2853,7 +2877,7 @@ dir = 1 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "Jx" = ( /obj/structure/cable{ icon_state = "1-8" @@ -2866,7 +2890,7 @@ dir = 9 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Jy" = ( /obj/effect/turf_decal/siding/brown{ dir = 10 @@ -2971,9 +2995,11 @@ /turf/open/floor/plasteel/dark, /area/ship/engineering/atmospherics) "Lk" = ( -/mob/living/simple_animal/chicken, -/obj/structure/flora/grass/jungle, -/turf/open/floor/grass/ship/jungle, +/obj/structure/railing/wood{ + dir = 1 + }, +/mob/living/simple_animal/cow, +/turf/open/floor/ship/dirt/dark, /area/ship/roumain) "LG" = ( /obj/structure/cable{ @@ -3009,10 +3035,13 @@ pixel_x = -25; pixel_y = 3 }, -/obj/machinery/atmospherics/pipe/layer_manifold, /obj/effect/turf_decal/trimline/opaque/red/arrow_cw{ dir = 4 }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "LX" = ( @@ -3140,7 +3169,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "MV" = ( /obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 @@ -3149,6 +3178,9 @@ dir = 8; id = "elderengineshuts" }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "MW" = ( @@ -3260,7 +3292,7 @@ dir = 4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "NL" = ( /turf/open/floor/ship/dirt/dark, /area/ship/roumain) @@ -3309,8 +3341,8 @@ /obj/item/clothing/head/cowboy/sec/roumain/machinist, /obj/item/clothing/under/suit/roumain, /obj/item/clothing/shoes/workboots/mining, -/obj/item/storage/belt, /obj/structure/closet/secure_closet/machinist, +/obj/item/storage/belt/utility/full, /turf/open/floor/plating, /area/ship/engineering/engine) "Oo" = ( @@ -3348,7 +3380,7 @@ dir = 4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "OV" = ( /obj/machinery/button/shieldwallgen{ dir = 8; @@ -3368,7 +3400,7 @@ }, /obj/effect/turf_decal/industrial/warning, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "Ph" = ( /obj/effect/turf_decal/siding/wood/end, /obj/machinery/door/airlock/maintenance{ @@ -3382,7 +3414,7 @@ dir = 5 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Py" = ( /obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 4 @@ -3403,7 +3435,7 @@ dir = 1 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "PI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3428,7 +3460,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Qi" = ( /obj/structure/chair/wood, /obj/structure/flora/grass/jungle/b, @@ -3487,7 +3519,7 @@ }, /obj/effect/turf_decal/stoneborder, /turf/open/floor/plasteel/mono/dark, -/area/ship/hallway/starboard) +/area/ship/medical) "QR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3515,6 +3547,9 @@ /turf/open/floor/wood/mahogany, /area/ship/bridge) "Ri" = ( +/obj/structure/railing/wood{ + dir = 4 + }, /mob/living/simple_animal/chicken, /turf/open/floor/grass/ship/jungle, /area/ship/roumain) @@ -3571,9 +3606,6 @@ /obj/effect/turf_decal/siding/brown{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, /obj/machinery/button/door{ id = "elderemergencyairlockshuts"; name = "Airlock Shutters"; @@ -3594,6 +3626,9 @@ dir = 8; id = "elderengineshuts" }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "RW" = ( @@ -3676,14 +3711,17 @@ /turf/open/floor/plating, /area/ship/engineering/engine) "Tx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/destructible/tribal_torch{ - pixel_x = -7 - }, /obj/effect/turf_decal/trimline/opaque/red/arrow_cw{ dir = 4 }, /obj/effect/turf_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "TO" = ( @@ -3700,7 +3738,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Ui" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -3750,7 +3788,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "UZ" = ( /obj/structure/chair/pew/left{ dir = 8 @@ -3825,7 +3863,7 @@ /obj/item/storage/bag/ore, /obj/item/storage/bag/ore, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "VI" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, @@ -3866,7 +3904,7 @@ id = "elderbayshutters" }, /turf/open/floor/plasteel/dark, -/area/ship/hallway/starboard) +/area/ship/cargo) "Wd" = ( /obj/structure/table/wood, /obj/item/radio/intercom/wideband/table{ @@ -3903,7 +3941,7 @@ "WJ" = ( /obj/effect/turf_decal/siding/brown, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "WS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3935,7 +3973,7 @@ dir = 4 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Xn" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -3992,9 +4030,13 @@ /turf/open/floor/wood/mahogany, /area/ship/bridge) "XW" = ( -/mob/living/simple_animal/cow, -/turf/open/floor/grass/ship/jungle, -/area/ship/roumain) +/obj/docking_port/stationary{ + width = 30; + height = 15; + dwidth = 15 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "XY" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -4047,7 +4089,7 @@ dir = 4 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "YM" = ( /obj/effect/turf_decal/siding/wood/end{ dir = 1 @@ -4092,7 +4134,7 @@ dir = 1 }, /turf/open/floor/wood/mahogany, -/area/ship/hallway/starboard) +/area/ship/medical) "Zi" = ( /obj/structure/table/wood, /obj/item/storage/fancy/cigarettes/cigpack_midori, @@ -4101,7 +4143,7 @@ pixel_x = 7 }, /turf/open/floor/wood/maple, -/area/ship/hallway/starboard) +/area/ship/cargo) "Zl" = ( /obj/effect/turf_decal/spline/fancy/wood{ dir = 6 @@ -4130,7 +4172,7 @@ dir = 10 }, /turf/open/floor/wood/ebony, -/area/ship/hallway/starboard) +/area/ship/cargo) "Zs" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4162,7 +4204,7 @@ dir = 5 }, /turf/open/floor/wood/mahogany, -/area/ship/hallway/starboard) +/area/ship/medical) "ZI" = ( /obj/structure/closet/emcloset/wall/directional/east, /obj/effect/turf_decal/spline/fancy/wood{ @@ -4669,7 +4711,7 @@ sH (14,1,1) = {" sH sH -bW +XW kL iB FF @@ -4704,7 +4746,7 @@ BA sH "} (15,1,1) = {" -sm +sH sH bW vC @@ -4849,7 +4891,7 @@ gb gb iY bO -bW +Uu "} (19,1,1) = {" sH @@ -4923,7 +4965,7 @@ BA BA BA BA -Uu +bW "} (21,1,1) = {" sH @@ -4950,7 +4992,7 @@ wp wp Xt qJ -uW +xD wp wp jv @@ -4958,7 +5000,7 @@ nj Zh vH Im -BA +fi sH sH "} @@ -4987,15 +5029,15 @@ Cr Xt QE KO -NL +Lk uV wp cg GP -BA +fi ZE lb -BA +fi sH sH "} @@ -5016,7 +5058,7 @@ uW uW NL aO -Ri +uW uW uV NL @@ -5024,15 +5066,15 @@ ei ei uW NL -YX -uW +sm +Ri fi cR fi -BA +fi rD QJ -BA +fi sH sH "} @@ -5066,10 +5108,10 @@ uW Mh ts kD -BA -BA -BA -BA +fi +fi +fi +fi sH sH "} @@ -5201,13 +5243,13 @@ aO uW aO aO -XW +uW Xt UD Xt NL uW -Lk +aO KO fs oC @@ -5314,7 +5356,7 @@ NL NL Xt Xt -xD +NL yV Jn Ma From 4013f30cac0434380877c7f13438055d224ec914 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 14 Jan 2025 22:21:01 -0600 Subject: [PATCH 028/118] Automatic changelog generation for PR #3977 [ci skip] --- html/changelogs/AutoChangeLog-pr-3977.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3977.yml diff --git a/html/changelogs/AutoChangeLog-pr-3977.yml b/html/changelogs/AutoChangeLog-pr-3977.yml new file mode 100644 index 000000000000..e938de47315b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3977.yml @@ -0,0 +1,5 @@ +author: generalthrax +changes: + - {rscadd: 'Improved Elder airlock and added a few small things to the Elder (Animal + pen, cargo bay area, more tobacco, eggs), and shifted docking ports around.'} +delete-after: true From f59417d37510366cb2cb0fc138f0ea06c4bca9f1 Mon Sep 17 00:00:00 2001 From: MemeSnorfer <116136632+MemeSnorfer@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:48:21 -0800 Subject: [PATCH 029/118] Atoll-Class Update (#3956) ## About The Pull Request Makes some various changes to the Atoll that I feel would be healthier for the ship. Namely: - Replaces the surgical duffel bag with a surgery case. - Adds health analyzers to each of the medical role's lockers, so they won't have to take from the medkits. - Buffs the contents of the food fridge to better compete with rations, and also to be more carnivore friendly. - Places a new subshuttle docking port outside the lobby's blast doors. - Vaporizes a decal under a wall that went under my nose. ## Why It's Good For The Game This ship's been tested and found wanting. ## Changelog :cl: fix: Makes some changes to the Atoll-Class's map file. It should feel slightly better to play on. /:cl: --- .../independent/independent_atoll.dmm | 88 ++++++++++++++++--- 1 file changed, 75 insertions(+), 13 deletions(-) diff --git a/_maps/shuttles/independent/independent_atoll.dmm b/_maps/shuttles/independent/independent_atoll.dmm index dccf3b7848fa..532b406c72a9 100644 --- a/_maps/shuttles/independent/independent_atoll.dmm +++ b/_maps/shuttles/independent/independent_atoll.dmm @@ -96,10 +96,6 @@ /area/ship/medical/morgue) "aG" = ( /obj/structure/table/chem, -/obj/item/storage/backpack/duffelbag/med/surgery{ - pixel_x = -4; - pixel_y = 10 - }, /obj/item/reagent_containers/medigel/sterilizine{ pixel_x = 9; pixel_y = 4 @@ -109,6 +105,10 @@ }, /obj/effect/turf_decal/corner/opaque/black/half, /obj/machinery/firealarm/directional/south, +/obj/item/storage/case/surgery{ + pixel_x = -4; + pixel_y = 10 + }, /turf/open/floor/plasteel/mono/dark, /area/ship/medical/surgery) "aM" = ( @@ -457,6 +457,7 @@ /obj/item/clothing/glasses/hud/health/sunglasses{ pixel_y = 5 }, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/mono/dark, /area/ship/storage/equip) "dZ" = ( @@ -626,14 +627,11 @@ /obj/effect/turf_decal/corner/transparent/grey/full, /obj/effect/turf_decal/corner/transparent/lightgrey/diagonal, /obj/effect/turf_decal/siding/thinplating, -/obj/item/reagent_containers/condiment/milk, /obj/item/reagent_containers/condiment/sugar, /obj/item/reagent_containers/food/drinks/bottle/orangejuice, /obj/item/reagent_containers/condiment/rice, /obj/item/storage/fancy/egg_box, /obj/item/reagent_containers/food/snacks/pie/applepie, -/obj/item/reagent_containers/food/snacks/meat/steak/chicken, -/obj/item/reagent_containers/food/snacks/meat/steak/chicken, /obj/item/reagent_containers/food/drinks/waterbottle, /obj/item/reagent_containers/food/drinks/waterbottle, /obj/structure/closet/secure_closet/freezer{ @@ -654,6 +652,13 @@ /obj/item/reagent_containers/food/snacks/grown/potato, /obj/item/reagent_containers/food/snacks/grown/oat, /obj/item/reagent_containers/food/snacks/grown/cocoapod, +/obj/item/reagent_containers/food/snacks/meat/slab/chicken, +/obj/item/reagent_containers/food/snacks/meat/slab/chicken, +/obj/item/reagent_containers/food/snacks/meat/slab/chicken, +/obj/item/reagent_containers/food/snacks/meat/slab/chicken, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/ccommons) "fj" = ( @@ -688,6 +693,7 @@ /obj/item/clothing/glasses/hud/health/prescription{ pixel_y = 5 }, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/mono/dark, /area/ship/storage/equip) "fm" = ( @@ -1248,6 +1254,14 @@ }, /turf/open/floor/plasteel/mono/white, /area/ship/hallway/port) +"jT" = ( +/obj/docking_port/stationary{ + dwidth = 15; + height = 15; + width = 30 + }, +/turf/template_noop, +/area/template_noop) "jY" = ( /obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 8 @@ -1945,6 +1959,8 @@ /obj/item/clothing/glasses/hud/health{ pixel_y = 5 }, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/mono/dark, /area/ship/storage/equip) "rd" = ( @@ -5626,11 +5642,6 @@ /obj/effect/turf_decal/steeldecal/steel_decals_central7, /turf/open/floor/plasteel, /area/ship/crew/cryo) -"YV" = ( -/obj/effect/turf_decal/borderfloorblack/full, -/obj/effect/turf_decal/borderfloorblack/corner, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/medical/morgue) "YY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -5755,6 +5766,7 @@ XT XT XT XT +XT Mu nz nz @@ -5773,6 +5785,7 @@ XT XT XT XT +XT IE wm gH @@ -5793,6 +5806,7 @@ XT "} (3,1,1) = {" XT +XT mD Rj Rj @@ -5815,6 +5829,7 @@ XT "} (4,1,1) = {" XT +XT mD uL uL @@ -5837,6 +5852,7 @@ XT "} (5,1,1) = {" XT +XT mD zA mZ @@ -5859,6 +5875,7 @@ XT "} (6,1,1) = {" XT +XT mD uR vP @@ -5880,6 +5897,7 @@ XT XT "} (7,1,1) = {" +XT SJ hK hK @@ -5902,6 +5920,7 @@ tP XT "} (8,1,1) = {" +XT hK aa Jt @@ -5924,6 +5943,7 @@ TR Wm "} (9,1,1) = {" +XT hK Bv SD @@ -5946,6 +5966,7 @@ Vl XT "} (10,1,1) = {" +XT cS Vs WC @@ -5968,6 +5989,7 @@ Rc XT "} (11,1,1) = {" +XT Ex rq ss @@ -5990,6 +6012,7 @@ Rc XT "} (12,1,1) = {" +jT cm pV Zi @@ -6012,6 +6035,7 @@ Rv XT "} (13,1,1) = {" +XT ku qM Yc @@ -6034,6 +6058,7 @@ Rv XT "} (14,1,1) = {" +XT AL aj lu @@ -6056,6 +6081,7 @@ Rv XT "} (15,1,1) = {" +XT Oe ma Ra @@ -6078,6 +6104,7 @@ Rc XT "} (16,1,1) = {" +XT Oe Zj kv @@ -6100,6 +6127,7 @@ Rc XT "} (17,1,1) = {" +XT xE xE lm @@ -6122,6 +6150,7 @@ TI XT "} (18,1,1) = {" +XT wS xE RJ @@ -6145,6 +6174,7 @@ XT "} (19,1,1) = {" XT +XT KO HN bM @@ -6167,6 +6197,7 @@ XT "} (20,1,1) = {" XT +XT KO HN bM @@ -6189,6 +6220,7 @@ XT "} (21,1,1) = {" XT +XT hE Rd RQ @@ -6211,6 +6243,7 @@ XT "} (22,1,1) = {" XT +XT KO Oi Ft @@ -6233,6 +6266,7 @@ XT "} (23,1,1) = {" XT +XT KO gW ZZ @@ -6255,6 +6289,7 @@ XT "} (24,1,1) = {" XT +XT wB wB es @@ -6277,6 +6312,7 @@ XT "} (25,1,1) = {" XT +XT fm Pv xX @@ -6299,6 +6335,7 @@ XT "} (26,1,1) = {" XT +XT fm je RP @@ -6321,6 +6358,7 @@ XT "} (27,1,1) = {" XT +XT Sq wB Qb @@ -6344,6 +6382,7 @@ XT (28,1,1) = {" XT XT +XT wB hG We @@ -6366,6 +6405,7 @@ XT (29,1,1) = {" XT XT +XT wB hC hC @@ -6388,6 +6428,7 @@ XT (30,1,1) = {" XT XT +XT TI hC ch @@ -6410,6 +6451,7 @@ XT (31,1,1) = {" XT XT +XT wS hC SI @@ -6433,6 +6475,7 @@ XT XT XT XT +XT hC nv NF @@ -6455,6 +6498,7 @@ XT XT XT XT +XT hC FF GC @@ -6477,6 +6521,7 @@ XT XT XT XT +XT hC hC hC @@ -6499,6 +6544,7 @@ XT XT XT XT +XT zG jK pY @@ -6521,6 +6567,7 @@ XT XT XT XT +XT zG SS VY @@ -6543,6 +6590,7 @@ XT XT XT XT +XT av zG fj @@ -6566,6 +6614,7 @@ XT XT XT XT +XT se se se @@ -6588,7 +6637,8 @@ XT XT XT XT -YV +XT +se aN Jp Qu @@ -6610,6 +6660,7 @@ XT XT XT XT +XT se FH KD @@ -6632,6 +6683,7 @@ XT XT XT XT +XT se gh uX @@ -6654,6 +6706,7 @@ XT XT XT XT +XT VO se Jc @@ -6677,6 +6730,7 @@ XT XT XT XT +XT TI Mc Nw @@ -6700,6 +6754,7 @@ XT XT XT XT +XT Mc ln xr @@ -6722,6 +6777,7 @@ XT XT XT XT +XT Jc Jc hB @@ -6744,6 +6800,7 @@ XT XT XT XT +XT wS Jc WT @@ -6767,6 +6824,7 @@ XT XT XT XT +XT Mc dh tU @@ -6789,6 +6847,7 @@ XT XT XT XT +XT Mc lw lw @@ -6824,6 +6883,7 @@ XT XT XT XT +XT "} (50,1,1) = {" XT @@ -6846,6 +6906,7 @@ XT XT XT XT +XT "} (51,1,1) = {" XT @@ -6868,4 +6929,5 @@ XT XT XT XT +XT "} From 4e615074e7d8301d8812e171c4bf5cf36570a56c Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 14 Jan 2025 22:43:24 -0600 Subject: [PATCH 030/118] Automatic changelog generation for PR #3956 [ci skip] --- html/changelogs/AutoChangeLog-pr-3956.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3956.yml diff --git a/html/changelogs/AutoChangeLog-pr-3956.yml b/html/changelogs/AutoChangeLog-pr-3956.yml new file mode 100644 index 000000000000..031d11c03674 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3956.yml @@ -0,0 +1,5 @@ +author: MemeSnorfer +changes: + - {bugfix: Makes some changes to the Atoll-Class's map file. It should feel slightly + better to play on.} +delete-after: true From 07a372f98f39d4c4c7b374c912196e2b9d2b1d06 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:59:33 -0500 Subject: [PATCH 031/118] Update Elated Bolite (#3953) ## About The Pull Request ![image](https://github.com/user-attachments/assets/bba00118-bf05-4636-a20e-76365e0bba32) ![StrongDMM_6GLpQy3e0D](https://github.com/user-attachments/assets/7ecf7713-4540-4aff-9dd6-2ad4c73104d7) Adds a defib and remaps the brief/mess on the bolide ## Why It's Good For The Game ship better :) ## Changelog :cl: add: The Bolide's brief has been remapped /:cl: --- _maps/shuttles/pgf/pgf_elated_bolide.dmm | 475 +++++++++-------------- 1 file changed, 182 insertions(+), 293 deletions(-) diff --git a/_maps/shuttles/pgf/pgf_elated_bolide.dmm b/_maps/shuttles/pgf/pgf_elated_bolide.dmm index 9d501fe9e7ba..b0b0e3a33a66 100644 --- a/_maps/shuttles/pgf/pgf_elated_bolide.dmm +++ b/_maps/shuttles/pgf/pgf_elated_bolide.dmm @@ -118,11 +118,15 @@ /turf/open/floor/plasteel/mono, /area/ship/hallway/central) "aI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "aK" = ( @@ -182,25 +186,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engines/port) -"bf" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 1 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/crew/ccommons) "bh" = ( /obj/structure/cable{ icon_state = "4-8" @@ -654,10 +639,6 @@ dir = 6 }, /obj/item/radio/intercom/directional/north, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 7 - }, /obj/item/clipboard{ pixel_x = -1; pixel_y = -7 @@ -666,6 +647,10 @@ pixel_x = -2; pixel_y = -5 }, +/obj/item/desk_flag/gezena{ + pixel_y = 16; + pixel_x = -8 + }, /turf/open/floor/plasteel/telecomms_floor, /area/ship/crew/ccommons) "eZ" = ( @@ -985,10 +970,15 @@ /turf/open/floor/plasteel/mono/white, /area/ship/crew/ccommons) "ha" = ( -/obj/structure/chair{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/etherbor/center, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "hd" = ( @@ -1311,6 +1301,9 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/structure/closet/wall/directional/east, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, /turf/open/floor/plasteel/mono, /area/ship/crew/dorm) "iO" = ( @@ -1329,17 +1322,6 @@ /area/ship/engineering) "iS" = ( /obj/structure/table/reinforced, -/obj/item/screwdriver{ - pixel_y = 3 - }, -/obj/item/screwdriver{ - pixel_y = 3; - pixel_x = -7 - }, -/obj/item/screwdriver{ - pixel_y = 3; - pixel_x = 8 - }, /obj/machinery/light/directional/north, /obj/effect/turf_decal/trimline/opaque/bottlegreen/filled/line{ dir = 1 @@ -1385,14 +1367,14 @@ /obj/effect/turf_decal/borderfloorblack{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, /obj/structure/sign/flag/gezena{ pixel_y = 32 @@ -1966,14 +1948,12 @@ /turf/open/floor/plasteel/mono/dark, /area/ship/crew/dorm) "lq" = ( +/obj/structure/table/reinforced, /obj/effect/turf_decal/corner_steel_grid{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 4 + dir = 6 }, -/obj/effect/turf_decal/spline/fancy/opaque/green/corner{ - dir = 1 +/obj/structure/railing{ + dir = 8 }, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -2103,38 +2083,22 @@ /turf/open/floor/mineral/titanium/tiled, /area/ship/medical) "mW" = ( -/obj/structure/mirror{ - pixel_x = -24; - pixel_y = 4 +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 8 }, -/obj/structure/sink{ - dir = 4; - pixel_y = 4; - pixel_x = -13 +/obj/effect/turf_decal/spline/fancy/opaque/green{ + dir = 9 }, -/obj/effect/turf_decal/steeldecal/steel_decals_central4, -/obj/machinery/button/door{ - name = "privacy lock"; - pixel_y = 22; - pixel_x = 10; - id = "bol_priv2"; - specialfunctions = 4; - normaldoorcontrol = 1 +/obj/structure/chair{ + dir = 4 }, -/turf/open/floor/plasteel/mono, +/turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "mZ" = ( /obj/structure/railing{ - dir = 6 - }, -/obj/effect/turf_decal/borderfloorblack/corner{ dir = 4 }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, -/turf/open/floor/plasteel/telecomms_floor, +/turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "nb" = ( /obj/effect/turf_decal/industrial/warning, @@ -2517,7 +2481,9 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engines/starboard) "po" = ( -/obj/structure/filingcabinet/double/grey, +/obj/structure/filingcabinet/double/grey{ + dir = 2 + }, /obj/machinery/newscaster/directional/east, /obj/effect/turf_decal/borderfloorblack{ dir = 8 @@ -2729,15 +2695,14 @@ /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) "rc" = ( -/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/corner_steel_grid{ - dir = 9 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 4 + dir = 5 }, /obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 8 + dir = 1 + }, +/obj/structure/chair{ + dir = 4 }, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -2892,14 +2857,7 @@ /turf/open/floor/plating, /area/ship/engineering) "rZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, -/obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "sb" = ( @@ -2976,26 +2934,25 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/storage/port) "sy" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/structure/railing{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/effect/turf_decal/borderfloorblack/corner{ + dir = 4 }, +/obj/structure/table/reinforced, /obj/effect/turf_decal/corner_steel_grid{ dir = 5 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/item/paper_bin{ + pixel_x = 3; + pixel_y = 7 }, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 1 +/obj/item/pen/fourcolor{ + pixel_x = -1; + pixel_y = 7 }, -/turf/open/floor/plasteel/mono/dark, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/crew/ccommons) "sE" = ( /obj/structure/rack, @@ -3015,11 +2972,11 @@ /turf/open/floor/plasteel/sepia, /area/ship/crew/dorm) "sO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/light/directional/east, /turf/open/floor/plasteel/stairs{ icon = 'icons/obj/stairs.dmi'; @@ -3053,18 +3010,7 @@ /turf/open/floor/engine/hull/interior, /area/ship/bridge) "th" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/structure/chair{ - dir = 4 - }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "tm" = ( @@ -3322,10 +3268,7 @@ /turf/open/floor/plasteel/patterned/ridged, /area/ship/cargo) "uN" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/etherbor/right, +/obj/machinery/holopad/secure, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "uR" = ( @@ -3944,19 +3887,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"za" = ( -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black/corner{ - dir = 4 - }, -/obj/effect/turf_decal/spline/fancy/opaque/green, -/turf/open/floor/plasteel/mono/dark, -/area/ship/crew/ccommons) "zc" = ( /obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 8 @@ -4402,9 +4332,11 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/engineering/engines/starboard) "Bq" = ( -/obj/machinery/light/directional/north, -/obj/structure/chair{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/obj/effect/turf_decal/spline/fancy/opaque/green{ + dir = 1 }, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -4438,41 +4370,29 @@ /turf/open/floor/plating, /area/ship/engineering/engines/starboard) "Bv" = ( -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 +/obj/effect/turf_decal/spline/fancy/opaque/green{ + dir = 4 }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 8 +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 1 }, /obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 4 + dir = 5 }, +/obj/structure/easel, +/obj/item/canvas/twentythreeXtwentythree, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Bz" = ( /obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black/corner{ - dir = 8 + icon_state = "1-2" }, -/obj/effect/turf_decal/spline/fancy/opaque/green{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; dir = 1 }, -/turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "BA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume, @@ -4724,9 +4644,6 @@ /obj/effect/turf_decal/spline/fancy/opaque/black/corner{ dir = 4 }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 1 - }, /obj/effect/turf_decal/spline/fancy/opaque/green, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -4953,21 +4870,21 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "Fa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/item/kirbyplants{ - icon_state = "plant-18"; - pixel_x = 11; - pixel_y = 21 - }, /obj/effect/turf_decal/corner_steel_grid{ dir = 6 }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 8 - }, /obj/effect/turf_decal/spline/fancy/opaque/green{ dir = 4 }, +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/pen/fourcolor{ + pixel_x = -2; + pixel_y = 2 + }, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Fg" = ( @@ -5019,16 +4936,7 @@ /turf/open/floor/engine/air, /area/ship/engineering) "Fr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 4 - }, -/obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 8 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Fs" = ( @@ -5043,6 +4951,7 @@ dir = 10 }, /obj/effect/turf_decal/spline/fancy/opaque/green, +/obj/machinery/light/directional/south, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Ft" = ( @@ -5246,14 +5155,10 @@ /obj/effect/turf_decal/corner_steel_grid{ dir = 10 }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 1 - }, /obj/effect/turf_decal/spline/fancy/opaque/green, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "GM" = ( -/obj/machinery/holopad/secure, /obj/structure/cable{ icon_state = "1-4" }, @@ -5328,10 +5233,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/effect/turf_decal/corner_steel_grid{ +/obj/effect/turf_decal/spline/fancy/opaque/green, +/obj/effect/turf_decal/corner_steel_grid/full, +/obj/effect/turf_decal/spline/fancy/opaque/green{ dir = 10 }, -/obj/effect/turf_decal/spline/fancy/opaque/green, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "GT" = ( @@ -5805,12 +5711,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 1 - }, /obj/effect/turf_decal/spline/fancy/opaque/green, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -6033,24 +5933,14 @@ /turf/open/floor/plasteel/tech, /area/ship/storage/port) "Lj" = ( -/obj/machinery/door/airlock{ - dir = 8; - name = "Head"; - id_tag = "bol_priv2" - }, -/obj/effect/turf_decal/techfloor/orange{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor/orange{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/spline/fancy/opaque/green{ + dir = 1 }, -/turf/open/floor/plasteel/tech/grid, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Ll" = ( /obj/structure/cable{ @@ -6082,9 +5972,6 @@ /obj/effect/turf_decal/corner_steel_grid{ dir = 10 }, -/obj/effect/turf_decal/spline/fancy/opaque/black/corner{ - dir = 1 - }, /obj/effect/turf_decal/spline/fancy/opaque/green, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -6539,6 +6426,7 @@ pixel_x = -28 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/etherbor/left, /turf/open/floor/plasteel/tech, /area/ship/storage/starboard) "Pr" = ( @@ -6575,17 +6463,17 @@ /turf/open/floor/plasteel/tech, /area/ship/storage/port) "PC" = ( -/obj/structure/toilet{ - dir = 8; - pixel_x = 5; - pixel_y = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/obj/structure/curtain, -/obj/effect/turf_decal/steeldecal/steel_decals_central4{ - dir = 1 +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/spline/fancy/opaque/green{ + dir = 8 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/mono, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "PD" = ( /turf/open/floor/plasteel/stairs{ @@ -6618,10 +6506,23 @@ /turf/open/floor/vault, /area/ship/security/armory) "PZ" = ( -/obj/effect/turf_decal/corner/transparent/bottlegreen/border{ - dir = 1 +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/turf/closed/wall/mineral/titanium/nodiagonal, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central7{ + dir = 8 + }, +/obj/effect/turf_decal/spline/fancy/opaque/green{ + dir = 8 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Qa" = ( /obj/structure/closet/secure_closet/wall/directional/east{ @@ -6812,6 +6713,7 @@ /area/ship/hallway/central) "Rk" = ( /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/etherbor/right, /turf/open/floor/plasteel/tech, /area/ship/storage/starboard) "Rm" = ( @@ -7091,22 +6993,6 @@ }, /turf/open/floor/engine/hull/interior, /area/ship/crew/office) -"SE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 4 - }, -/obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 8 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/crew/ccommons) "SH" = ( /obj/effect/turf_decal/industrial/warning, /obj/structure/rack, @@ -7354,33 +7240,42 @@ /turf/open/floor/plasteel/mono/dark, /area/ship/hallway/central) "Uc" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central7{ - dir = 8 - }, /obj/machinery/light_switch{ dir = 4; pixel_x = -21; pixel_y = -12 }, -/obj/structure/closet/crate/bin{ - pixel_y = 4 - }, /obj/effect/turf_decal/corner_steel_grid{ - dir = 5 + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/spline/fancy/opaque/green{ - dir = 1 + dir = 8 }, +/obj/structure/rack, +/obj/item/chair, +/obj/item/chair, +/obj/item/chair, +/obj/item/chair, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "Ud" = ( -/obj/effect/turf_decal/etherbor/left, -/obj/structure/chair{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-18"; + pixel_x = 11; + pixel_y = 21 + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -7444,9 +7339,9 @@ pixel_x = -4; pixel_y = -1 }, -/obj/item/storage/firstaid/medical{ +/obj/item/storage/firstaid/regular{ pixel_x = 9; - pixel_y = -2 + pixel_y = 1 }, /turf/open/floor/mineral/titanium/tiled, /area/ship/medical) @@ -7977,17 +7872,13 @@ /turf/open/floor/plasteel/mono, /area/ship/hallway/central) "Yi" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 + icon_state = "1-8" }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-4" }, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) @@ -8021,25 +7912,21 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/crew/office) "Yv" = ( -/obj/effect/turf_decal/spline/fancy/opaque/black/corner{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/corner_steel_grid{ - dir = 4 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 10 + dir = 6 }, -/obj/effect/turf_decal/spline/fancy/opaque/green/corner{ +/obj/effect/turf_decal/spline/fancy/opaque/green{ dir = 4 }, +/obj/structure/closet/crate{ + name = "visual aids" + }, +/obj/item/storage/crayons, +/obj/item/storage/crayons, +/obj/item/canvas/twentythreeXtwentythree, +/obj/item/canvas/twentythreeXtwentythree, +/obj/item/canvas/twentythreeXtwentythree, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/ccommons) "YM" = ( @@ -8090,6 +7977,7 @@ pixel_y = 3 }, /obj/effect/turf_decal/box, +/obj/item/defibrillator/loaded, /turf/open/floor/mineral/titanium/tiled, /area/ship/medical) "YN" = ( @@ -8335,6 +8223,7 @@ /obj/item/storage/bag/construction, /obj/item/storage/bag/construction, /obj/item/storage/bag/construction, +/obj/effect/turf_decal/etherbor/center, /obj/effect/mapping_helpers/crate_shelve, /turf/open/floor/plasteel/tech, /area/ship/storage/starboard) @@ -8999,8 +8888,8 @@ gB IV dg Lj -dg -dg +nV +Fr rZ Fs cZ @@ -9028,9 +8917,9 @@ wP Ve dg rc -Fr -SE -lq +AH +AH +nV eH WY Dy @@ -9057,7 +8946,7 @@ WN jE jE Bq -AH +nV th aI Kk @@ -9115,10 +9004,10 @@ MJ og jE eX +lq ar -bf ha -za +Ds Da er gC @@ -9144,9 +9033,9 @@ we up KC GM -xq -bf uN +xq +ha GG SY gg @@ -9175,7 +9064,7 @@ IH jc mZ sy -nV +ha GG in Vd From 4312de70cc7ac929dffe49d7a32d4a0c55d7d99c Mon Sep 17 00:00:00 2001 From: Sadhorizon <108196626+Sadhorizon@users.noreply.github.com> Date: Wed, 15 Jan 2025 06:00:04 +0100 Subject: [PATCH 032/118] Updates Talos and Scarab maints. (#3658) ## About The Pull Request **Talos:** - Makes them more similar style-wise to the Scarab. - Un-spaces them. - Makes them less boring by adding Stuff. ![obraz](https://github.com/user-attachments/assets/42d0a49c-90a6-475d-b47f-98273e3e21d7) **Scarab:** - Makes them less messy and broken. - Makes the airlock an actual airlock. ![obraz](https://github.com/user-attachments/assets/6dd1166b-1e11-4b95-ba17-23b16aea739a) ## Why It's Good For The Game People seem to love the Scarab maint, while hating on the Talos one, so Talos is now more similar. Scarab gets some stuff I missed during actual PR. ## Changelog :cl: tweak: Talos maints were remapped. They are also no longer spaced. tweak: Scarab maints were tweaked a little. /:cl: --- _maps/configs/inteq_talos.json | 2 +- .../independent/independent_scarab.dmm | 281 +- _maps/shuttles/inteq/inteq_talos.dmm | 4026 +++++++++-------- 3 files changed, 2312 insertions(+), 1997 deletions(-) diff --git a/_maps/configs/inteq_talos.json b/_maps/configs/inteq_talos.json index 9bbef06f0458..37eb0d456242 100644 --- a/_maps/configs/inteq_talos.json +++ b/_maps/configs/inteq_talos.json @@ -3,8 +3,8 @@ "map_name": "Talos-class Command Clipper", "faction": "/datum/faction/inteq", "prefix": "IRMV", + "description": "The Talos is a command and support ship, and a rare example of a purpose-built Inteq ship. Outfitted with an abundance of construction and engineering equipment and a private bluespace communications suite capable of networking IRMG ships across any given system, Taloses are often the lynchpin of coordinated IRMG operations in a system, and offer construction and repair services as part of IRMG’s mercenary offerings. As Talos crews place a larger emphasis on support personnel, they tend to be less well-armed than other Inteq crews. One unusual feature of the Talos is its “wings” filled with redundant baffles, intended to provide extra durability in the case of impacts or weapons fire. They also offer auxiliary storage space and potential room for modification by their enterprising Artificer crews.", "manufacturer": "Hardline Salvage and Mining", - "description": "The Talos is a command and support ship, and a rare example of a purpose-built Inteq ship. Outfitted with an abundance of construction and engineering equipment and a private bluespace communications suite capable of networking IRMG ships across any given system, Taloses are often the lynchpin of coordinated IRMG operations in a system, and offer construction and repair services as part of IRMG’s mercenary offerings. As Talos crews place a larger emphasis on support personnel, they tend to be less well-armed than other Inteq crews. One unusual feature of the Talos is its depressurized “wings” filled with redundant baffles, intended to provide extra durability in the case of impacts or weapons fire. They also double as auxiliary storage space and potential room for modification by their enterprising Artificer crews.", "tags": [ "Engineer", "Telecomms" diff --git a/_maps/shuttles/independent/independent_scarab.dmm b/_maps/shuttles/independent/independent_scarab.dmm index 99e4797077d2..ab9bb9a7426e 100644 --- a/_maps/shuttles/independent/independent_scarab.dmm +++ b/_maps/shuttles/independent/independent_scarab.dmm @@ -23,6 +23,12 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, /turf/open/floor/plasteel/dark/airless, /area/ship/maintenance/port) "as" = ( @@ -87,9 +93,6 @@ "aO" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/crew/cryo) -"aU" = ( -/turf/closed/wall/mineral/iron, -/area/ship/maintenance/port) "bb" = ( /obj/structure/catwalk/over/plated_catwalk/white, /obj/machinery/shower{ @@ -175,9 +178,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"bP" = ( -/turf/closed/wall/rust, -/area/ship/maintenance/fore) "ca" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -188,7 +188,7 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "ch" = ( -/obj/structure/closet/cardboard, +/obj/effect/spawner/random/trash/box, /obj/effect/spawner/random/maintenance, /obj/effect/spawner/random/entertainment/plushie, /obj/effect/spawner/random/entertainment/plushie, @@ -208,6 +208,12 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "ct" = ( @@ -271,9 +277,9 @@ /area/ship/engineering) "dJ" = ( /obj/structure/closet/crate/trashcart, -/obj/item/trash/chips, -/obj/item/trash/can, -/obj/item/trash/sosjerky, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/garbage, /obj/effect/spawner/random/maintenance, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) @@ -313,9 +319,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer2{ dir = 8 }, -/obj/machinery/advanced_airlock_controller{ - pixel_y = 23 - }, +/obj/machinery/advanced_airlock_controller/directional/north, /obj/structure/chair/handrail{ dir = 8 }, @@ -364,13 +368,13 @@ /turf/open/floor/plasteel, /area/ship/cargo) "ex" = ( -/obj/structure/cable/green{ - icon_state = "2-8" - }, /obj/structure/sign/warning/explosives/alt{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "eB" = ( @@ -397,9 +401,6 @@ /turf/open/floor/plating, /area/ship/bridge) "eM" = ( -/obj/structure/cable/green{ - icon_state = "8-9" - }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -494,10 +495,9 @@ /turf/open/floor/plasteel/tech, /area/ship/bridge) "gj" = ( -/obj/machinery/door/airlock/maintenance/external{ - req_ship_access = 0 - }, +/obj/machinery/door/airlock/maintenance/external, /obj/effect/mapping_helpers/airlock/locked, +/obj/effect/turf_decal/industrial/warning/fulltile, /turf/open/floor/plating, /area/ship/maintenance/fore) "gp" = ( @@ -549,9 +549,6 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "gR" = ( -/obj/structure/cable/green{ - icon_state = "2-6" - }, /obj/structure/table, /obj/item/storage/toolbox/emergency{ pixel_y = 4 @@ -585,9 +582,10 @@ /turf/open/floor/plasteel/dark, /area/ship/engineering) "he" = ( -/obj/structure/closet/crate/large, -/obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/decal/cleanable/dirt, +/obj/machinery/advanced_airlock_controller/directional/north, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/ship/maintenance/fore) "hn" = ( @@ -615,13 +613,10 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "hV" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/green{ - icon_state = "4-8" - }, -/obj/structure/cable/green{ - icon_state = "1-6" + icon_state = "6-8" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ship/maintenance/port) "io" = ( @@ -831,7 +826,7 @@ /obj/machinery/door/airlock/maintenance{ req_ship_access = 0 }, -/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/ship/maintenance/fore) "kf" = ( @@ -1011,6 +1006,12 @@ /obj/structure/rack, /obj/effect/spawner/random/maintenance, /obj/machinery/light/dim/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "lF" = ( @@ -1119,6 +1120,12 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "nb" = ( @@ -1154,7 +1161,7 @@ /obj/effect/turf_decal/corner/transparent/bar/diagonal, /obj/structure/closet/crate/bin, /obj/effect/spawner/random/maintenance, -/obj/item/trash/chips, +/obj/effect/spawner/random/trash/garbage, /obj/machinery/airalarm/directional/east, /turf/open/floor/plasteel, /area/ship/crew) @@ -1182,9 +1189,6 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/bridge) "oe" = ( -/obj/structure/cable/green{ - icon_state = "1-5" - }, /obj/structure/reagent_dispensers/foamtank, /turf/open/floor/plating, /area/ship/maintenance/fore) @@ -1312,6 +1316,12 @@ req_ship_access = 0 }, /obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "qg" = ( @@ -1328,10 +1338,10 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "qh" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk/over, +/obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/ship/maintenance/port) "qv" = ( @@ -1404,11 +1414,12 @@ /area/ship/maintenance/port) "rn" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, /obj/structure/sign/poster/random{ pixel_x = 32 }, +/obj/effect/spawner/random/salvage_machine{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "rt" = ( @@ -1474,6 +1485,15 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "sd" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "sk" = ( @@ -1554,6 +1574,10 @@ }, /obj/structure/railing, /obj/machinery/light/directional/west, +/obj/item/stamp/captain{ + pixel_x = -7; + pixel_y = 6 + }, /turf/open/floor/plasteel/tech, /area/ship/bridge) "sG" = ( @@ -1599,6 +1623,12 @@ /obj/structure/sign/poster/random{ pixel_y = 32 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "sX" = ( @@ -1647,6 +1677,12 @@ dir = 8; req_ship_access = 0 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "tA" = ( @@ -1723,8 +1759,12 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) "uo" = ( -/turf/closed/wall/rust, -/area/ship/maintenance/port) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plating, +/area/ship/maintenance/fore) "ut" = ( /obj/structure/grille, /obj/structure/window/plasma/reinforced/plastitanium, @@ -2045,6 +2085,12 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "yr" = ( @@ -2155,11 +2201,11 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/maintenance/port) "zr" = ( -/obj/structure/cable/green{ - icon_state = "2-10" - }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, +/obj/structure/cable/green{ + icon_state = "2-8" + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "zv" = ( @@ -2178,6 +2224,16 @@ "zE" = ( /obj/effect/decal/cleanable/dirt, /obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/spawner/random/trash/bucket{ + pixel_x = -7; + pixel_y = -4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "zS" = ( @@ -2241,14 +2297,17 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "AT" = ( -/obj/effect/spawner/random/salvage_machine, -/obj/effect/decal/cleanable/crayon{ - icon_state = "space"; - pixel_y = 29; - pixel_x = 1; - paint_colour = "#FF0000" - }, /obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/closet/emcloset/anchored{ + populate = 0 + }, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer4{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "AU" = ( @@ -2388,7 +2447,9 @@ dir = 1 }, /obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/bedsheet, +/obj/effect/spawner/random/bedsheet{ + dir = 4 + }, /turf/open/floor/carpet, /area/ship/crew/dorm) "Dt" = ( @@ -2554,7 +2615,7 @@ /area/ship/hallway/starboard) "FP" = ( /obj/structure/closet/crate/bin, -/obj/item/trash/boritos, +/obj/effect/spawner/random/trash/garbage, /obj/effect/spawner/random/maintenance, /turf/open/floor/plasteel/dark, /area/ship/bridge) @@ -2685,6 +2746,12 @@ dir = 1; pixel_y = -19 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/dark/airless, /area/ship/maintenance/port) "Hv" = ( @@ -2792,6 +2859,18 @@ /obj/effect/decal/cleanable/glass, /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "space"; + pixel_y = 29; + pixel_x = 1; + paint_colour = "#FF0000" + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "Ia" = ( @@ -2800,12 +2879,8 @@ icon_state = "0-1" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/ship/maintenance/fore) -"Ic" = ( -/turf/closed/wall/mineral/iron, -/area/ship/maintenance/fore) "Iu" = ( /obj/machinery/pipedispenser, /turf/open/floor/plasteel/dark, @@ -2916,9 +2991,6 @@ /turf/open/floor/plasteel, /area/ship/crew) "Je" = ( -/obj/structure/cable/green{ - icon_state = "6-10" - }, /obj/machinery/door/airlock/maintenance{ req_ship_access = 0 }, @@ -3224,15 +3296,24 @@ /turf/open/floor/plasteel/mono/dark, /area/ship/engineering) "LZ" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/green{ - icon_state = "5-8" + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ship/maintenance/port) "Md" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/structure/closet/crate/large, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer2{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/fore) "Me" = ( @@ -3246,7 +3327,9 @@ /obj/structure/cable/green{ icon_state = "4-5" }, -/obj/effect/spawner/random/salvage_machine, +/obj/effect/spawner/random/salvage_machine{ + dir = 1 + }, /obj/structure/railing{ dir = 4 }, @@ -3621,10 +3704,11 @@ /turf/open/floor/plasteel, /area/ship/hallway/starboard) "Rs" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/external{ req_ship_access = 0 }, -/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/ship/maintenance/fore) "Ry" = ( @@ -3792,11 +3876,21 @@ /obj/structure/sign/poster/contraband/hacking_guide{ pixel_y = -32 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "UZ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/ship/maintenance/fore) "Vc" = ( @@ -4003,7 +4097,8 @@ "Xd" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ - pixel_y = 7 + pixel_y = 7; + layer = 3.22 }, /turf/open/floor/carpet, /area/ship/crew/dorm) @@ -4091,11 +4186,17 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "Zc" = ( +/obj/effect/spawner/random/structure/grille, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/green{ - icon_state = "4-9" + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ship/maintenance/port) "Zj" = ( @@ -4359,8 +4460,8 @@ Ku Ku wW yX -aU -aU +QZ +QZ yX Lp NS @@ -4519,9 +4620,9 @@ UB "} (15,1,1) = {" yX -uo -uo -uo +QZ +QZ +QZ ty DN TN @@ -4548,7 +4649,7 @@ UB yX IY yx -uo +QZ LZ DN WU @@ -4686,7 +4787,7 @@ QZ QZ QZ pU -uo +QZ yX wW wW @@ -4736,7 +4837,7 @@ wW (23,1,1) = {" jt gj -Kt +uo UZ Rs yl @@ -4765,7 +4866,7 @@ wW qx AT rn -Ic +CT KP cx qx @@ -4791,8 +4892,8 @@ Ku wW PV qx -Ic -Ic +CT +CT Jj CT qx @@ -4819,7 +4920,7 @@ wW wW qx CU -Ic +CT ex oe qx @@ -4873,8 +4974,8 @@ wW wW qx tj -bP -bP +CT +CT lm qx wW @@ -4899,8 +5000,8 @@ DI wW wW qx -bP -bP +CT +CT zD Am qx @@ -4927,7 +5028,7 @@ wW wW PV qx -bP +CT nq as qx diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index d838d4742f99..5a853fdcc068 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -29,6 +29,18 @@ }, /turf/open/floor/plasteel/dark, /area/ship/storage) +"aj" = ( +/obj/structure/cable{ + icon_state = "6-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "ak" = ( /obj/structure/cable{ icon_state = "2-8" @@ -98,6 +110,24 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/ship/engineering/communications) +"az" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/entertainment/plushie{ + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/ship/crew/dorm/dormtwo) +"aA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/book/manual/srmlore, +/obj/structure/bookcase, +/obj/item/book/random, +/obj/item/book/random, +/obj/item/book/random, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) "aC" = ( /obj/machinery/porta_turret/ship/inteq{ dir = 5; @@ -131,26 +161,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"aI" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/power/smes/shuttle/precharged, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_starboard" - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) "aM" = ( /obj/effect/turf_decal/borderfloor{ dir = 4 @@ -186,11 +196,6 @@ /obj/structure/closet/emcloset/wall/directional/north, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"aV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "bb" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/airlock/grunge{ @@ -211,35 +216,17 @@ }, /turf/open/floor/plasteel/tech, /area/ship/cargo) -"br" = ( -/obj/item/storage/backpack/industrial, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/under/syndicate/inteq/artificer, -/obj/item/clothing/under/syndicate/inteq/artificer/skirt, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/hardhat, -/obj/item/clothing/shoes/combat, -/obj/item/storage/belt/utility/full, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/item/clothing/glasses/meson, -/obj/item/radio/intercom/directional/east, -/obj/structure/closet/secure_closet{ - anchored = 1; - icon_state = "eng_secure"; - name = "artificer's locker"; - req_access_txt = "11" - }, -/obj/item/gear_pack/anglegrinder, -/obj/item/radio/headset/alt, -/obj/item/clothing/mask/gas/inteq, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) +"bc" = ( +/turf/closed/wall, +/area/ship/maintenance/starboard) +"bj" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"bo" = ( +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/storage/port) "bx" = ( /obj/structure/cable{ icon_state = "2-8" @@ -301,12 +288,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"bK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/mopbucket, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "bM" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/machinery/door/poddoor{ @@ -377,14 +358,13 @@ /obj/effect/turf_decal/hardline_small, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"ck" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/hatch{ - dir = 4 +"cl" = ( +/obj/structure/cable{ + icon_state = "5-8" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/ship/storage/port) "cn" = ( /obj/machinery/light/directional/south, /obj/structure/railing{ @@ -400,6 +380,18 @@ /obj/machinery/space_heater, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"cp" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma, +/turf/open/floor/plating, +/area/ship/engineering) +"cq" = ( +/obj/structure/cable{ + icon_state = "1-10" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt, +/turf/open/floor/plating, +/area/ship/storage/port) "cz" = ( /obj/structure/cable{ icon_state = "5-10" @@ -525,31 +517,24 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"di" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering"; - fast_close = 1; - req_access_txt = "10" +"dj" = ( +/obj/machinery/button/shieldwallgen{ + id = "talos_tank_burn"; + pixel_x = -6; + pixel_y = 20; + req_access_txt = "56" }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/button/door{ + id = "talos_tank_burn"; + pixel_x = 4; + pixel_y = 21; + req_access_txt = "56" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/turf_decal/industrial/fire{ + dir = 1 }, /turf/open/floor/plasteel/tech, -/area/ship/engineering) +/area/ship/engineering/engine) "dk" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -567,15 +552,6 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"dv" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/hatch{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "dw" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable{ @@ -583,14 +559,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"dD" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "dE" = ( /obj/structure/chair/comfy/shuttle{ dir = 4; @@ -599,6 +567,16 @@ /obj/effect/landmark/start/head_of_security, /turf/open/floor/plasteel/dark, /area/ship/bridge) +"dN" = ( +/obj/structure/chair/comfy/grey/directional/north, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) +"dQ" = ( +/obj/effect/spawner/random/salvage_machine{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "dW" = ( /obj/machinery/power/terminal{ dir = 8 @@ -610,53 +588,38 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"dZ" = ( -/obj/structure/cable{ - icon_state = "4-8" +"dX" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/folder/syndicate{ + desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/item/pen/fountain, +/obj/item/gps{ + pixel_x = 12 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/turf_decal/corner/opaque/brown{ dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) -"ef" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 }, -/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/item/stamp/inteq/vanguard, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"dZ" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"ej" = ( -/obj/machinery/power/smes/shuttle/precharged, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_starboard" - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "ek" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -727,6 +690,25 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/ship/engineering/communications) +"eE" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet, +/area/ship/crew/dorm/dormtwo) +"eH" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "eK" = ( /obj/effect/turf_decal/trimline/opaque/yellow/corner{ dir = 4 @@ -739,6 +721,13 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"eM" = ( +/obj/structure/dresser{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/carpet/black, +/area/ship/crew/dorm) "eN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -794,42 +783,23 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) -"ff" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"fg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/trimline/opaque/yellow/line, -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 4 +"fe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/effect/turf_decal/siding/thinplating, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 9 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/effect/spawner/random/trash/bucket{ + pixel_x = 7; + pixel_y = -4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/central) -"fh" = ( +/turf/open/floor/plating, +/area/ship/storage/starboard) +"fh" = ( /obj/effect/turf_decal/industrial/traffic, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"fj" = ( -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "fo" = ( /obj/machinery/camera/autoname{ dir = 9 @@ -846,10 +816,6 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/ship/engineering/communications) -"fr" = ( -/obj/item/cigbutt, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "fs" = ( /obj/machinery/porta_turret/ship/inteq{ dir = 5; @@ -857,6 +823,26 @@ }, /turf/closed/wall/mineral/plastitanium, /area/ship/engineering/communications) +"fw" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/power/smes/shuttle/precharged, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_starboard" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) "fC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -886,19 +872,40 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/orange, /area/ship/bridge) +"fI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "fK" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/maintenance/starboard) -"fN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) -"fU" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, +"fO" = ( +/obj/structure/bed, +/obj/item/bedsheet/hos{ + name = "vanguard's spare bedsheet" + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) +"fS" = ( +/obj/machinery/light/dim/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, /area/ship/storage/port) +"fV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/storage/starboard) "fX" = ( /obj/structure/chair/stool{ dir = 1 @@ -951,19 +958,22 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"gm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"go" = ( +"gh" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage/port) "gp" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, @@ -1002,6 +1012,18 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"gB" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/ship/storage/port) +"gE" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "gG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1140,28 +1162,10 @@ /obj/machinery/air_sensor/atmos/mix_tank, /turf/open/floor/engine/fuel, /area/ship/engineering/engine) -"hm" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"hw" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"hz" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/cognac{ - pixel_x = 7; - pixel_y = 14 - }, -/obj/item/storage/fancy/cigarettes/cigars/havana, -/obj/item/lighter{ - pixel_x = -4; - pixel_y = 6 - }, +"hv" = ( +/obj/structure/closet/crate/secure/loot, /turf/open/floor/plating, -/area/ship/storage/starboard) +/area/ship/maintenance/port) "hG" = ( /obj/structure/railing{ dir = 6; @@ -1185,6 +1189,11 @@ }, /turf/open/floor/plasteel/elevatorshaft, /area/ship/hallway/central) +"hH" = ( +/obj/structure/closet, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/ship/storage/starboard) "hK" = ( /obj/structure/table/reinforced, /obj/machinery/fax/inteq, @@ -1232,9 +1241,29 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/plasteel/grimy, /area/ship/crew) +"hS" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage/starboard) "hT" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/hallway/central) +"hX" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "ia" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1245,36 +1274,24 @@ "ie" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/engineering/engine) -"ii" = ( -/obj/machinery/power/smes/shuttle/precharged, -/obj/structure/cable{ - icon_state = "0-8" - }, +"if" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, /obj/structure/window/reinforced{ dir = 8 }, +/obj/machinery/atmospherics/components/unary/shuttle/heater, /obj/machinery/door/window/eastleft{ name = "Engine Access" }, +/obj/structure/barricade/wooden/crude, /obj/machinery/door/poddoor{ dir = 4; - id = "talos_thrusters_port" + id = "talos_thrusters_starboard" }, /turf/open/floor/plating, -/area/ship/engineering) -"ik" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/cigbutt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) +/area/ship/engineering/engine) "im" = ( /obj/structure/railing{ dir = 4 @@ -1287,22 +1304,11 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"iu" = ( -/obj/machinery/door/airlock/hatch{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ship/storage/starboard) +"in" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plasteel/dark/airless, +/area/ship/storage/port) "iy" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 1 @@ -1348,26 +1354,18 @@ }, /turf/open/floor/plasteel/dark, /area/ship/engineering) -"iM" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/power/smes/shuttle/precharged, +"iG" = ( +/obj/effect/spawner/random/structure/grille, /obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_starboard" + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, -/area/ship/engineering/engine) +/area/ship/maintenance/port) +"iJ" = ( +/turf/closed/wall, +/area/ship/maintenance/port) "iN" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 1 @@ -1377,14 +1375,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"iO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/item/cigbutt, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "iW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -1414,6 +1404,22 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"ja" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "jc" = ( /obj/structure/cable{ icon_state = "2-8" @@ -1432,22 +1438,13 @@ }, /turf/template_noop, /area/template_noop) -"jf" = ( -/obj/machinery/light/directional/north, -/obj/structure/closet/secure_closet/engineering_welding{ - req_access = null; - req_access_txt = "11" - }, -/obj/effect/turf_decal/techfloor{ - dir = 1 +"jk" = ( +/obj/machinery/power/shuttle/engine/electric, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/plasteel/tech/grid, +/turf/open/floor/plating, /area/ship/engineering) -"jj" = ( -/obj/structure/sign/warning/vacuum, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/storage/port) "jl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1463,21 +1460,30 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"jo" = ( +/obj/structure/cable{ + icon_state = "4-9" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "jp" = ( /obj/structure/chair{ dir = 4 }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) -"jt" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +"jq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plasteel/dark, +/area/ship/maintenance/starboard) "jw" = ( /obj/structure/cable{ icon_state = "1-8" @@ -1509,29 +1515,16 @@ }, /turf/open/floor/plasteel/tech, /area/ship/storage) -"jJ" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/folder/syndicate{ - desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" +"jO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/item/pen, -/obj/item/multitool{ - pixel_x = 12; - pixel_y = 8 +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/machinery/light/directional/south, -/obj/item/radio/intercom/directional/north{ - dir = 4; - freerange = 1; - freqlock = 1; - frequency = 1347; - name = "IRMG shortwave intercom"; - pixel_x = 31; - pixel_y = 0 - }, -/turf/open/floor/plasteel/telecomms_floor, -/area/ship/engineering/communications) +/turf/open/floor/plating, +/area/ship/maintenance/port) "jP" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -1605,60 +1598,61 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/engineering) -"jZ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, +"kc" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering"; - fast_close = 1; - req_access_txt = "10" + dir = 9 }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/advanced_airlock_controller/directional/south, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/structure/chair/handrail{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/central) "kg" = ( /obj/effect/turf_decal/box/corners, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"kh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/secure/loot, -/turf/open/floor/plating/airless, +"kn" = ( +/obj/structure/closet/crate/science, +/obj/effect/spawner/random/maintenance, +/obj/item/circuitboard/computer/crew, +/turf/open/floor/plating, /area/ship/maintenance/starboard) -"ks" = ( -/obj/structure/cable{ - icon_state = "4-8" +"kq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"kv" = ( +/obj/effect/decal/cleanable/oil, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/sink{ + pixel_y = 21 + }, +/turf/open/floor/plating, /area/ship/maintenance/starboard) +"kA" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/ship/storage/port) "kD" = ( /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) -"kJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "kM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1675,6 +1669,37 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) +"kQ" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/structure/closet/crate{ + name = "target crate" + }, +/obj/item/target/syndicate{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/target/syndicate{ + pixel_y = 5 + }, +/obj/item/target/alien{ + pixel_x = 5 + }, +/obj/item/target/clown{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/target{ + pixel_y = 5 + }, +/obj/item/target{ + pixel_x = 5 + }, +/obj/effect/mapping_helpers/crate_shelve, +/obj/structure/platform/ship_three, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "kU" = ( /obj/machinery/door/poddoor{ id = "talos_tank_burn" @@ -1698,9 +1723,56 @@ dir = 8 }, /area/ship/hallway/central) +"kY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "la" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew/toilet) +"lc" = ( +/obj/structure/closet, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"ld" = ( +/obj/machinery/door/airlock/maintenance/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"lj" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "lq" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/atmospherics/pipe/layer_manifold{ @@ -1789,30 +1861,41 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"lI" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"lM" = ( +"lH" = ( +/obj/machinery/button/door{ + dir = 4; + id = "talos_thrusters_port"; + name = "Blast Door Control"; + pixel_x = -21; + pixel_y = 3 + }, +/obj/structure/closet/secure_closet/engineering_electrical{ + req_access = null; + req_access_txt = "11" + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"lK" = ( +/obj/effect/spawner/random/decoration/paint{ + pixel_y = 11; + pixel_x = 5 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/advanced_airlock_controller{ - pixel_y = -24 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/chair/handrail{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plating, /area/ship/storage/port) "lO" = ( /obj/structure/cable{ @@ -1830,6 +1913,44 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"lP" = ( +/obj/item/storage/backpack/industrial, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/under/syndicate/inteq/artificer, +/obj/item/clothing/under/syndicate/inteq/artificer/skirt, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/hardhat, +/obj/item/clothing/shoes/combat, +/obj/structure/closet/secure_closet{ + anchored = 1; + icon_state = "eng_secure"; + name = "artificer's locker"; + req_access_txt = "11" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/light/directional/north, +/obj/item/storage/belt/utility/full, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/item/clothing/glasses/meson, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 11 + }, +/obj/item/gear_pack/anglegrinder, +/obj/item/radio/headset/alt, +/obj/item/clothing/mask/gas/inteq, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) "lQ" = ( /obj/machinery/modular_computer/console/preset/command{ dir = 8 @@ -1857,14 +1978,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"mh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "mi" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 4 @@ -1907,6 +2020,22 @@ /obj/item/clothing/suit/armor/vest/security/warden/inteq, /turf/open/floor/plasteel/dark, /area/ship/security) +"mq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "ms" = ( /obj/machinery/light/directional/west, /obj/structure/cable{ @@ -1943,6 +2072,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/ship/bridge) +"mx" = ( +/obj/machinery/advanced_airlock_controller/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "mz" = ( /obj/structure/cable{ icon_state = "2-4" @@ -1967,18 +2101,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"mI" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "mJ" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/atmospherics/pipe/layer_manifold{ @@ -2023,6 +2145,13 @@ }, /turf/open/floor/carpet/black, /area/ship/crew/dorm) +"mR" = ( +/obj/structure/cable{ + icon_state = "2-9" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/storage/port) "mU" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/structure/cable{ @@ -2060,15 +2189,47 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"mX" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/bridge) +"mW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) +"mX" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/bridge) "ne" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) +"nk" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "nl" = ( /turf/open/floor/plasteel/grimy, /area/ship/crew) @@ -2092,6 +2253,21 @@ }, /turf/open/floor/plasteel/dark, /area/ship/bridge) +"nv" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "ny" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2130,33 +2306,11 @@ /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"nD" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "nE" = ( /obj/structure/grille, /obj/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, /area/ship/storage) -"nF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/storage/port) -"nH" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "nJ" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 4 @@ -2193,6 +2347,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/grimy, /area/ship/crew) +"nU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/maintenance/starboard) "nY" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 1 @@ -2237,10 +2398,6 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"od" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/maintenance/port) "og" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/engineering/communications) @@ -2349,21 +2506,6 @@ }, /turf/open/floor/carpet/black, /area/ship/crew/dorm) -"oD" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/item/trash/popcorn, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"oG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "oR" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -2374,12 +2516,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"oS" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "oT" = ( /obj/structure/cable{ icon_state = "2-4" @@ -2419,18 +2555,15 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"oY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/port) -"pb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/jukebox/boombox{ - pixel_x = -7; - pixel_y = -11 +"pc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, /turf/open/floor/plating, -/area/ship/storage/starboard) +/area/ship/maintenance/starboard) "pf" = ( /obj/structure/cable{ icon_state = "0-4" @@ -2481,13 +2614,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"pq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/portable_atmospherics/canister/bz{ - valve_open = 1 - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "pu" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -2524,31 +2650,6 @@ /obj/machinery/computer/helm/viewscreen/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) -"pG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"pL" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/folder/syndicate{ - desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" - }, -/obj/item/pen/fountain, -/obj/item/gps{ - pixel_x = 12 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/item/stamp/inteq/vanguard, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) "pU" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/engineering/engine) @@ -2562,6 +2663,13 @@ /obj/machinery/air_sensor/atmos/air_tank, /turf/open/floor/engine/air, /area/ship/engineering/engine) +"pY" = ( +/mob/living/simple_animal/mouse{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/maintenance/port) "pZ" = ( /obj/structure/cable{ icon_state = "1-8" @@ -2649,12 +2757,6 @@ /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) -"qp" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "qr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2726,19 +2828,6 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"qD" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/ship/engineering) "qF" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2765,43 +2854,26 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) +"qI" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/cognac{ + pixel_x = 7; + pixel_y = 14 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana, +/obj/item/lighter{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) "qM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/ship/bridge) -"qP" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/structure/closet/crate{ - name = "target crate" - }, -/obj/item/target/syndicate{ - pixel_x = -5; - pixel_y = 10 - }, -/obj/item/target/syndicate{ - pixel_y = 5 - }, -/obj/item/target/alien{ - pixel_x = 5 - }, -/obj/item/target/clown{ - pixel_x = -5; - pixel_y = 10 - }, -/obj/item/target{ - pixel_y = 5 - }, -/obj/item/target{ - pixel_x = 5 - }, -/obj/effect/mapping_helpers/crate_shelve, -/obj/structure/platform/ship_three, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "qT" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -2851,6 +2923,16 @@ /obj/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, /area/ship/engineering/engine) +"rr" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/maintenance/port) "rv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2870,10 +2952,24 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"rw" = ( -/obj/structure/chair/comfy/grey/directional/north, +"ry" = ( +/obj/structure/catwalk/over, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/plating, -/area/ship/storage/starboard) +/area/ship/maintenance/starboard) +"rA" = ( +/obj/structure/closet/crate/large, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating, +/area/ship/maintenance/port) "rB" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning, /turf/open/floor/engine/hull/reinforced, @@ -2893,11 +2989,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"rN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "rP" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2917,6 +3008,16 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"rR" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "rV" = ( /obj/machinery/button/door{ dir = 4; @@ -2944,6 +3045,19 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) +"rZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-6" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ship/maintenance/starboard) "sa" = ( /obj/effect/turf_decal/box/corners, /obj/structure/cable{ @@ -2956,22 +3070,6 @@ /obj/machinery/rnd/server, /turf/open/floor/plasteel/tech/grid, /area/ship/storage) -"si" = ( -/obj/structure/sign/warning/vacuum, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/storage/starboard) -"sl" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "sn" = ( /obj/structure/chair/stool{ dir = 1 @@ -2998,15 +3096,30 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"su" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"st" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-10" }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) +"su" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -3031,25 +3144,6 @@ /obj/item/pen, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) -"sC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/warning/gasmask{ - pixel_y = -32 - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) -"sD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "sF" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -3064,6 +3158,20 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"sH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/table/reinforced, +/obj/item/folder/syndicate{ + desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" + }, +/obj/item/stamp/inteq/maa, +/obj/item/table_bell{ + pixel_x = -15 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) "sJ" = ( /obj/structure/cable{ icon_state = "1-4" @@ -3113,6 +3221,13 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"sU" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/shuttle/engine/electric, +/turf/open/floor/plating, +/area/ship/engineering) "sV" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/storage) @@ -3144,13 +3259,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew/canteen) -"sZ" = ( -/obj/machinery/power/shuttle/engine/electric, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/ship/engineering) "ta" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/trimline/opaque/yellow/line, @@ -3168,16 +3276,6 @@ }, /turf/open/floor/engine/air, /area/ship/engineering/engine) -"tf" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/ship/storage/port) -"ti" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "tp" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -3236,6 +3334,9 @@ }, /turf/open/floor/plasteel/dark, /area/ship/storage) +"tw" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/crew/dorm/dormtwo) "tA" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/engineering) @@ -3261,17 +3362,6 @@ /obj/structure/catwalk/over, /turf/open/floor/plating, /area/ship/engineering) -"tK" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "tM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3292,6 +3382,19 @@ }, /turf/open/floor/plasteel/dark, /area/ship/storage) +"tS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "tT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3307,6 +3410,13 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"tX" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/plating, +/area/ship/maintenance/port) "ua" = ( /obj/effect/turf_decal/industrial/traffic, /obj/structure/cable{ @@ -3317,23 +3427,6 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"ub" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"uc" = ( -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 - }, -/turf/open/floor/carpet, -/area/ship/storage/starboard) "ud" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -3355,6 +3448,28 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/grimy, /area/ship/crew) +"uj" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -19 + }, +/obj/structure/crate_shelf, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/brute{ + pixel_x = -8 + }, +/obj/item/storage/firstaid/fire{ + pixel_x = 9 + }, +/obj/item/storage/box/bodybags, +/obj/structure/platform/ship_three{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "ul" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -3365,12 +3480,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) -"uo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "up" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 1 @@ -3404,27 +3513,6 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"uC" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/structure/barricade/wooden/crude, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_port" - }, -/turf/open/floor/plating, -/area/ship/engineering) "uE" = ( /turf/open/floor/plasteel/tech, /area/ship/engineering/communications) @@ -3477,6 +3565,9 @@ "vp" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/engineering/communications) +"vr" = ( +/turf/closed/wall, +/area/ship/storage/starboard) "vv" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3626,6 +3717,42 @@ /obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) +"wq" = ( +/obj/structure/cable{ + icon_state = "2-5" + }, +/obj/structure/cable{ + icon_state = "5-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/obj/machinery/computer/atmos_control/tank/mix_tank{ + dir = 8 + }, +/obj/machinery/button/shieldwallgen{ + dir = 8; + id = "talos_tank_fuel"; + pixel_x = 19; + pixel_y = 4; + req_access_txt = "56" + }, +/obj/machinery/button/door{ + dir = 8; + id = "talos_tank_fuel"; + name = "Access Door Control"; + pixel_x = 21; + pixel_y = -6; + req_access_txt = "56" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) "wu" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -3727,10 +3854,6 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"wU" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "wY" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/trimline/opaque/yellow/line{ @@ -3808,6 +3931,19 @@ dir = 4 }, /area/ship/cargo) +"xi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "xj" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew/cryo) @@ -3887,14 +4023,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"xG" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "xI" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew/canteen) @@ -3917,27 +4045,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"xT" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/filingcabinet/chestdrawer, -/obj/item/radio/intercom/directional/west{ - freerange = 1; - freqlock = 1; - frequency = 1347; - name = "IRMG shortwave intercom" - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) "xV" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ dir = 1 @@ -3978,6 +4085,24 @@ }, /turf/open/floor/plasteel/dark, /area/ship/storage) +"yd" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -19; + pixel_x = -8 + }, +/obj/structure/cable{ + icon_state = "5-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage/starboard) "yj" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -4019,31 +4144,25 @@ "yp" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/storage/port) -"yq" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/shuttle/heater, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/structure/barricade/wooden/crude, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_starboard" - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"yr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"yr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/rnd/production/circuit_imprinter/department/engi, /turf/open/floor/plasteel/tech/grid, /area/ship/storage) +"yu" = ( +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/storage/starboard) +"yv" = ( +/obj/effect/spawner/random/trash/box, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/ship/storage/port) "yx" = ( /obj/structure/table/reinforced, /obj/machinery/computer/secure_data/laptop, @@ -4060,6 +4179,16 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"yB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer2{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "yL" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4080,12 +4209,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"yP" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "yS" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4100,23 +4223,31 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/ship/security) -"yU" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 +"yX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) +"yY" = ( +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"zf" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) -"zg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage/port) "zh" = ( /obj/machinery/holopad/emergency/command, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -4142,6 +4273,21 @@ }, /turf/open/floor/plasteel/tech, /area/ship/hallway/central) +"zp" = ( +/obj/effect/spawner/random/salvage_machine{ + dir = 8 + }, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"zq" = ( +/obj/structure/catwalk/over, +/obj/structure/closet/crate/large, +/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/plating, +/area/ship/storage/starboard) "zt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -4194,12 +4340,16 @@ }, /turf/open/floor/plasteel/dark, /area/ship/engineering/communications) -"zB" = ( +"zC" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/airlock/maintenance/external{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "zE" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/structure/cable{ @@ -4219,6 +4369,20 @@ /obj/effect/spawner/bunk_bed, /turf/open/floor/carpet/black, /area/ship/crew/dorm) +"zH" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/storage/port) +"zI" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/ship/maintenance/port) "zK" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 @@ -4232,12 +4396,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering) -"zL" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "zR" = ( /obj/machinery/firealarm/directional/south, /obj/structure/extinguisher_cabinet/directional/east, @@ -4274,11 +4432,11 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"Aa" = ( +"zX" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/ship/storage/port) "Ag" = ( /obj/structure/chair/stool{ @@ -4311,6 +4469,13 @@ }, /turf/open/floor/plating, /area/ship/engineering/engine) +"Aj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/storage/port) "An" = ( /obj/machinery/shower{ dir = 1 @@ -4385,22 +4550,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"AD" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/advanced_airlock_controller/internal{ - pixel_y = -24 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering) "AK" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/effect/decal/cleanable/dirt, @@ -4411,15 +4560,6 @@ }, /turf/open/floor/engine/hull/reinforced, /area/ship/cargo) -"AL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb, -/obj/structure/closet/crate/large, -/obj/item/mop, -/obj/item/pushbroom, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "AO" = ( /obj/machinery/suit_storage_unit/inherit/industrial, /obj/item/clothing/suit/space/hardsuit/engine, @@ -4432,29 +4572,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering) -"AY" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/power/smes/shuttle/precharged, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_port" - }, -/turf/open/floor/plating, -/area/ship/engineering) "AZ" = ( /obj/effect/landmark/start/station_engineer, /obj/structure/chair/office{ @@ -4496,22 +4613,13 @@ }, /turf/open/floor/plating, /area/ship/engineering) +"Bn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/storage/port) "Bv" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew) -"Bz" = ( -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/safety_internals{ - pixel_y = 32 - }, -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/inteq, -/obj/item/clothing/head/helmet/space/inteq, -/turf/open/floor/plasteel/tech/grid, -/area/ship/storage/port) "BJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4535,39 +4643,18 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) -"BN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"BP" = ( +"BW" = ( +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-2" }, -/turf/open/floor/plating/airless, +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, /area/ship/maintenance/port) -"BS" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -19 - }, -/obj/structure/crate_shelf, -/obj/structure/closet/crate/medical, -/obj/item/storage/firstaid/brute{ - pixel_x = -8 - }, -/obj/item/storage/firstaid/fire{ - pixel_x = 9 - }, -/obj/item/storage/box/bodybags, -/obj/structure/platform/ship_three{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "BY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4583,6 +4670,20 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"BZ" = ( +/obj/machinery/power/shuttle/engine/electric, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"Cm" = ( +/obj/structure/catwalk/over, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "Cp" = ( /obj/effect/spawner/random/vending/cola, /obj/structure/sign/poster/contraband/inteq{ @@ -4636,16 +4737,6 @@ "CF" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/cargo) -"CJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/book/manual/srmlore, -/obj/structure/bookcase, -/obj/item/book/random, -/obj/item/book/random, -/obj/item/book/random, -/turf/open/floor/plating, -/area/ship/storage/starboard) "CK" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -4655,11 +4746,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) -"CN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "CP" = ( /obj/effect/turf_decal/borderfloor, /obj/structure/cable{ @@ -4823,9 +4909,18 @@ /obj/structure/platform/ship_three, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"DO" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/storage/starboard) +"DG" = ( +/turf/open/floor/plating, +/area/ship/maintenance/port) +"DJ" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/airlock/maintenance/external{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plating, +/area/ship/maintenance/port) "DQ" = ( /obj/effect/turf_decal/borderfloor{ dir = 1 @@ -4844,6 +4939,18 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security) +"DR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "DY" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 1 @@ -4856,32 +4963,54 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"Eg" = ( -/obj/machinery/telecomms/bus/preset_four{ - autolinkers = list("hub","processor4","bus"); - network = "irmg_commnet" +"Eh" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/engineering/communications) -"Ep" = ( -/obj/item/trash/can, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"Ev" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/cigbutt, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"Ex" = ( +/obj/machinery/power/smes/shuttle/precharged, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "0-8" }, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +/obj/machinery/door/window/eastleft{ + name = "Engine Access" + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_starboard" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"Ep" = ( +/obj/item/trash/can, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"Ew" = ( +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/eastleft{ + name = "Engine Access" + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_port" + }, +/turf/open/floor/plating, +/area/ship/engineering) "EC" = ( /obj/structure/window/reinforced/survival_pod, /obj/structure/window/reinforced/survival_pod{ @@ -4899,6 +5028,38 @@ }, /turf/closed/wall/mineral/plastitanium, /area/ship/storage) +"EG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/trimline/opaque/yellow/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/port) +"EJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -22 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "EL" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4908,6 +5069,33 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"ET" = ( +/obj/structure/catwalk/over, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"Fb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "Fe" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ dir = 8 @@ -4923,14 +5111,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/hallway/central) -"Fh" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/item/cigbutt, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "Fi" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -4939,6 +5119,29 @@ }, /turf/open/floor/plating/airless, /area/ship/external/dark) +"Fj" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes/shuttle/precharged, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/door/window/eastleft{ + name = "Engine Access" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_port" + }, +/turf/open/floor/plating, +/area/ship/engineering) "Fk" = ( /obj/structure/marker_beacon{ picked_color = "Burgundy" @@ -4946,14 +5149,6 @@ /obj/structure/catwalk, /turf/open/floor/plating/airless, /area/ship/external/dark) -"Fl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/handrail{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "Fm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5006,6 +5201,21 @@ /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"Fq" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ship/storage/port) +"Fs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "Fx" = ( /obj/structure/chair{ dir = 8 @@ -5046,28 +5256,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) -"FO" = ( -/obj/structure/closet/emcloset/empty{ - anchored = 1; - can_be_unanchored = 1; - name = "oxygen closet" - }, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/tech/grid, -/area/ship/storage/starboard) "FV" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/structure/railing, @@ -5076,42 +5264,19 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) -"Ga" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/trimline/opaque/yellow/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/corner, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/port) -"Gl" = ( -/obj/machinery/door/airlock/hatch{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, +"Gb" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/ship/storage/port) +/turf/open/floor/plating, +/area/ship/storage/starboard) "Gm" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/airlock/external, @@ -5119,12 +5284,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/tech, /area/ship/hallway/central) -"Gq" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) +"Gn" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "Gr" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ dir = 8 @@ -5150,19 +5321,6 @@ /obj/item/clothing/gloves/combat, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) -"Gu" = ( -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/safety_internals{ - pixel_y = 32 - }, -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/inteq, -/obj/item/clothing/head/helmet/space/inteq, -/turf/open/floor/plasteel/tech/grid, -/area/ship/storage/starboard) "Gv" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 1 @@ -5217,14 +5375,12 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"GQ" = ( -/obj/structure/cable{ - icon_state = "1-8" +"GP" = ( +/obj/effect/spawner/random/salvage_machine{ + dir = 8 }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) +/turf/open/floor/plating, +/area/ship/storage/port) "GR" = ( /obj/structure/curtain/bounty, /obj/structure/sign/poster/contraband/d_day_promo{ @@ -5233,22 +5389,9 @@ /obj/effect/spawner/bunk_bed, /turf/open/floor/carpet/black, /area/ship/crew/dorm) -"GU" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8; - filter_types = list("n2","co2","bz","water_vapor","miasma","freon","tritium","n20") - }, -/obj/machinery/atmospherics/pipe/simple/purple/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ - dir = 10 - }, -/turf/open/floor/engine/vacuum, -/area/ship/engineering/engine) +"GW" = ( +/turf/closed/wall, +/area/ship/storage/port) "GY" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -5265,12 +5408,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"Hc" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "He" = ( /obj/effect/turf_decal/techfloor{ dir = 4 @@ -5291,12 +5428,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"Hj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/robot_debris, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "Hl" = ( /obj/machinery/computer/telecomms/server{ network = "irmg_commnet" @@ -5308,12 +5439,6 @@ }, /turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) -"Ho" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "Hp" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5326,6 +5451,13 @@ "Hq" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/security/armory) +"Ht" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ship/maintenance/port) "Hv" = ( /obj/structure/rack, /obj/effect/turf_decal/siding/thinplating/dark, @@ -5352,6 +5484,12 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) +"Hw" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/ship/storage/port) "HB" = ( /obj/machinery/suit_storage_unit/inherit/industrial, /obj/item/clothing/suit/space/hardsuit/engine, @@ -5359,6 +5497,32 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering) +"HC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engineering"; + fast_close = 1; + req_access_txt = "10" + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plating, +/area/ship/engineering) "HD" = ( /obj/machinery/firealarm/directional/south, /obj/structure/reagent_dispensers/fueltank, @@ -5373,6 +5537,9 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/external/dark) +"HM" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/crew/dorm/dormtwo) "HN" = ( /obj/structure/sink{ dir = 1; @@ -5386,16 +5553,44 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) +"HT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-9" + }, +/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"Ia" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/advanced_airlock_controller/internal/directional/south, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) "Ic" = ( /obj/effect/turf_decal/box/corners{ dir = 8 }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"If" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) +"Ij" = ( +/obj/structure/closet/crate/secure/weapon, +/obj/item/ammo_box/magazine/toy/pistol, +/obj/item/gun/ballistic/automatic/toy/pistol, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "Io" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -5457,21 +5652,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"IB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/critter, -/mob/living/simple_animal/hostile/hivebot/mechanic{ - desc = "A very rusty maintenance hivebot. Judging by the wires looping haphazardly from its panels and the Inteq shield spray painted on its chassis, somebody, somehow, has hacked it into complacency."; - environment_smash = 0; - faction = list("neutral"); - name = "Heph" - }, -/obj/item/circuitboard/computer/message_monitor, -/obj/item/circuitboard/machine/telecomms/message_server, -/obj/item/circuitboard/machine/pacman, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "ID" = ( /obj/machinery/door/airlock/public/glass{ name = "Cryogenic Storage" @@ -5490,11 +5670,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) -"IF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "IJ" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -5508,6 +5683,29 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"IO" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_port" + }, +/turf/open/floor/plating, +/area/ship/engineering) "IR" = ( /obj/structure/cable{ icon_state = "0-8" @@ -5530,46 +5728,18 @@ /obj/effect/turf_decal/siding/thinplating, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"Jk" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"Jo" = ( -/obj/structure/cable{ - icon_state = "2-5" - }, -/obj/structure/cable{ - icon_state = "5-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/machinery/computer/atmos_control/tank/mix_tank{ - dir = 8 - }, -/obj/machinery/button/shieldwallgen{ - dir = 8; - id = "talos_tank_fuel"; - pixel_x = 19; - pixel_y = 4; - req_access_txt = "56" - }, -/obj/machinery/button/door{ - dir = 8; - id = "talos_tank_fuel"; - name = "Access Door Control"; - pixel_x = 21; - pixel_y = -6; - req_access_txt = "56" +"Jd" = ( +/obj/machinery/light/directional/north, +/obj/structure/closet/secure_closet/engineering_welding{ + req_access = null; + req_access_txt = "11" }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/effect/turf_decal/techfloor{ + dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/engine) +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) "Jq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -5579,6 +5749,25 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) +"Jt" = ( +/obj/structure/cable{ + icon_state = "8-9" + }, +/obj/structure/catwalk/over, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"Ju" = ( +/obj/structure/catwalk/over, +/obj/effect/spawner/random/trash/box, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"Jw" = ( +/obj/machinery/advanced_airlock_controller/directional/south, +/turf/open/floor/plating, +/area/ship/maintenance/port) "Jz" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, @@ -5597,13 +5786,31 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"JI" = ( +"JF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engineering"; + fast_close = 1; + req_access_txt = "10" + }, /obj/effect/turf_decal/industrial/warning/fulltile, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) "JP" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -5650,6 +5857,14 @@ }, /turf/open/floor/engine/hull/reinforced/interior, /area/ship/engineering/engine) +"JV" = ( +/obj/structure/closet/crate/large, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "JZ" = ( /obj/effect/turf_decal/box/corners, /obj/structure/cable{ @@ -5659,6 +5874,11 @@ /obj/structure/platform/ship_three, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) +"Ka" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/ship/storage/starboard) "Kd" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -5694,6 +5914,13 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/tech, /area/ship/engineering/communications) +"Kg" = ( +/obj/structure/catwalk/over, +/obj/structure/cable{ + icon_state = "2-6" + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "Ks" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5710,8 +5937,24 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/port) +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/port) +"Kt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"Kw" = ( +/obj/machinery/telecomms/bus/preset_four{ + autolinkers = list("hub","processor4","bus"); + network = "irmg_commnet" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/ship/engineering/communications) "Kz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5728,16 +5971,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"KB" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "KF" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -5747,19 +5980,27 @@ dir = 4 }, /area/ship/cargo) -"KQ" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/hatch{ - dir = 4 - }, +"KH" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/effect/turf_decal/trimline/opaque/yellow/line, +/obj/effect/turf_decal/siding/thinplating/corner{ dir = 4 }, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/siding/thinplating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/central) +"KP" = ( +/obj/structure/reagent_dispensers/foamtank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/ship/storage/starboard) "KR" = ( /obj/structure/cable{ @@ -5774,50 +6015,12 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"KT" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"KW" = ( -/obj/item/storage/backpack/industrial, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/under/syndicate/inteq/artificer, -/obj/item/clothing/under/syndicate/inteq/artificer/skirt, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/hardhat, -/obj/item/clothing/shoes/combat, -/obj/structure/closet/secure_closet{ - anchored = 1; - icon_state = "eng_secure"; - name = "artificer's locker"; - req_access_txt = "11" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/light/directional/north, -/obj/item/storage/belt/utility/full, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/item/clothing/glasses/meson, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 20; - pixel_y = 11 - }, -/obj/item/gear_pack/anglegrinder, -/obj/item/radio/headset/alt, -/obj/item/clothing/mask/gas/inteq, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) +"KS" = ( +/obj/structure/catwalk/over, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/plastic/twenty, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "KY" = ( /obj/effect/turf_decal/borderfloor, /obj/machinery/door/airlock/public/glass{ @@ -5842,20 +6045,16 @@ }, /turf/open/floor/plating, /area/ship/bridge) -"Lm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/table/reinforced, -/obj/item/folder/syndicate{ - desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" +"Lf" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 }, -/obj/item/stamp/inteq/maa, -/obj/item/table_bell{ - pixel_x = -15 +/obj/structure/chair/handrail, +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer4{ + dir = 8 }, /turf/open/floor/plasteel/dark, -/area/ship/security) +/area/ship/maintenance/port) "Lo" = ( /obj/machinery/power/terminal, /obj/structure/table, @@ -5879,20 +6078,41 @@ }, /turf/open/floor/plasteel/dark, /area/ship/engineering) +"Ls" = ( +/obj/item/storage/backpack/industrial, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/under/syndicate/inteq/artificer, +/obj/item/clothing/under/syndicate/inteq/artificer/skirt, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/hardhat, +/obj/item/clothing/shoes/combat, +/obj/item/storage/belt/utility/full, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/item/clothing/glasses/meson, +/obj/item/radio/intercom/directional/east, +/obj/structure/closet/secure_closet{ + anchored = 1; + icon_state = "eng_secure"; + name = "artificer's locker"; + req_access_txt = "11" + }, +/obj/item/gear_pack/anglegrinder, +/obj/item/radio/headset/alt, +/obj/item/clothing/mask/gas/inteq, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) "Lu" = ( /obj/machinery/atmospherics/components/binary/circulator/cold{ dir = 1 }, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engine) -"LF" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - welded = 1 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "LJ" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -6002,6 +6222,27 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"Mg" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/obj/structure/barricade/wooden/crude, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_port" + }, +/turf/open/floor/plating, +/area/ship/engineering) "Mh" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -6020,25 +6261,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"Mn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/chair/handrail{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/storage/starboard) "Mx" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -6081,18 +6303,41 @@ }, /turf/open/floor/plasteel/dark, /area/ship/engineering/communications) +"MD" = ( +/obj/structure/closet/crate/chem, +/obj/item/reagent_containers/glass/bottle/potass_iodide, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/storage/port) +"MF" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ship/storage/port) "MK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/ship/security) -"MR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/secure/loot, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +"MQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/oil, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "MS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6104,6 +6349,16 @@ /obj/effect/turf_decal/hardline_small/right, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"MU" = ( +/obj/structure/closet/crate/critter, +/mob/living/simple_animal/hostile/hivebot/mechanic{ + desc = "A very rusty maintenance hivebot. Judging by the wires looping haphazardly from its panels and the Inteq shield spray painted on its chassis, somebody, somehow, has hacked it into complacency."; + environment_smash = 0; + faction = list("neutral"); + name = "Heph" + }, +/turf/open/floor/plating, +/area/ship/storage/starboard) "MV" = ( /obj/structure/catwalk, /turf/open/floor/plating/airless, @@ -6154,22 +6409,6 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"Nf" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"Ng" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, -/area/ship/storage/starboard) -"Ni" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "Nj" = ( /obj/effect/turf_decal/box/corners, /obj/machinery/button/shieldwallgen{ @@ -6198,35 +6437,12 @@ /obj/effect/turf_decal/trimline/opaque/yellow/warning, /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) -"NC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/advanced_airlock_controller{ - pixel_y = -21 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 4 - }, -/obj/structure/chair/handrail{ +"Nu" = ( +/obj/effect/spawner/random/salvage_machine{ dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/ship/hallway/central) -"NF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "NK" = ( /turf/open/floor/engine/air, /area/ship/engineering/engine) @@ -6244,6 +6460,9 @@ /obj/item/trash/can, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"NU" = ( +/turf/closed/wall/rust, +/area/ship/storage/port) "NW" = ( /obj/structure/cable{ icon_state = "0-8" @@ -6283,11 +6502,40 @@ dir = 10 }, /obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10; - layer = 2.030 + dir = 10; + layer = 2.030 + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"Om" = ( +/obj/item/storage/backpack/industrial, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/under/syndicate/inteq/artificer, +/obj/item/clothing/under/syndicate/inteq/artificer/skirt, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/hardhat, +/obj/item/clothing/shoes/combat, +/obj/structure/railing, +/obj/item/storage/belt/utility/full, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ship/storage) +/obj/item/clothing/glasses/meson, +/obj/structure/closet/secure_closet{ + anchored = 1; + icon_state = "eng_secure"; + name = "artificer's locker"; + req_access_txt = "11" + }, +/obj/item/gear_pack/anglegrinder, +/obj/item/radio/headset/alt, +/obj/item/clothing/mask/gas/inteq, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) "Oq" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -6299,6 +6547,13 @@ /obj/machinery/light/directional/north, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"OC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) "OD" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -6317,6 +6572,16 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"OI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "OK" = ( /obj/machinery/cryopod{ dir = 8 @@ -6340,12 +6605,22 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"OP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) +"OU" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8; + filter_types = list("n2","co2","bz","water_vapor","miasma","freon","tritium","n20") + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1{ + dir = 10 + }, +/turf/open/floor/engine/vacuum, +/area/ship/engineering/engine) "Pf" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -6366,6 +6641,20 @@ /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, /area/ship/engineering/engine) +"Pl" = ( +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/engineering) "Pm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1; @@ -6376,6 +6665,19 @@ }, /turf/open/floor/engine/hull/reinforced, /area/ship/engineering/engine) +"Pn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/port) "Pp" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/maintenance/port) @@ -6391,14 +6693,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/carpet/black, /area/ship/crew/dorm) -"Pt" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/three, -/obj/structure/closet/crate, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "Py" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6449,6 +6743,11 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plating, /area/ship/engineering/engine) +"PM" = ( +/obj/structure/catwalk/over, +/obj/structure/closet/crate/secure/loot, +/turf/open/floor/plating, +/area/ship/storage/starboard) "PN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6469,6 +6768,19 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"PT" = ( +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/structure/closet/emcloset/wall/directional/south{ + populate = 0 + }, +/turf/open/floor/plating, +/area/ship/maintenance/starboard) +"PV" = ( +/turf/open/floor/plating, +/area/ship/storage/port) "PX" = ( /obj/structure/marker_beacon{ picked_color = "Yellow" @@ -6498,6 +6810,23 @@ /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel/tech, /area/ship/security/armory) +"Qb" = ( +/obj/structure/closet/crate/large, +/obj/item/mop, +/obj/item/pushbroom, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"Qf" = ( +/obj/structure/filingcabinet/chestdrawer/wheeled{ + dir = 8 + }, +/obj/item/folder, +/obj/item/folder/yellow, +/obj/item/folder/red, +/obj/item/pen/fountain, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/storage/port) "Qg" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -6510,6 +6839,16 @@ }, /turf/open/floor/engine/fuel, /area/ship/engineering/engine) +"Qp" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/catwalk/over, +/obj/structure/table, +/obj/effect/spawner/random/clothing/gloves, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ship/storage/port) "Qq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6542,18 +6881,6 @@ /obj/structure/table, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) -"Qy" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/door_assembly/door_assembly_mhatch{ - anchored = 1; - can_be_unanchored = 1; - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "QC" = ( /obj/structure/chair/stool{ dir = 1 @@ -6569,6 +6896,14 @@ }, /turf/open/floor/engine/air, /area/ship/engineering/engine) +"QE" = ( +/obj/structure/falsewall/plastitanium, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) +"QH" = ( +/obj/item/radio/intercom/directional/west, +/turf/open/floor/plating, +/area/ship/storage/starboard) "QR" = ( /obj/effect/turf_decal/corner/opaque/yellow, /obj/effect/turf_decal/corner/opaque/brown{ @@ -6579,12 +6914,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"QS" = ( -/obj/structure/sign/number/random{ - pixel_y = -8 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/storage/starboard) "QU" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ @@ -6597,23 +6926,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"QV" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"QW" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) "QZ" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ dir = 8; @@ -6655,38 +6967,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"Ri" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) -"Rp" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"Rs" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/door_assembly/door_assembly_mhatch{ - anchored = 1; - can_be_unanchored = 1; - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"Ry" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/shuttle/engine/electric, -/turf/open/floor/plating, -/area/ship/engineering) "RC" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -6730,29 +7010,14 @@ }, /turf/open/floor/carpet/black, /area/ship/crew/dorm) -"RT" = ( -/turf/open/floor/plating/airless, -/area/ship/storage/port) -"RV" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/plasma, -/obj/effect/spawner/random/maintenance, +"RZ" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, -/area/ship/maintenance/port) -"RY" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/airlock/hatch{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ship/storage/port) +/area/ship/storage/starboard) +"Sc" = ( +/turf/closed/wall/yesdiag, +/area/ship/maintenance/starboard) "Si" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 1 @@ -6781,29 +7046,14 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering) -"So" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/smes/shuttle/precharged, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "talos_thrusters_port" +"St" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/obj/structure/sign/poster/random{ + pixel_x = -32 }, /turf/open/floor/plating, -/area/ship/engineering) +/area/ship/storage/starboard) "Su" = ( /obj/machinery/telecomms/processor/preset_four{ autolinkers = list("processor4","bus"); @@ -6811,6 +7061,14 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/ship/engineering/communications) +"Sv" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/random/trash/crushed_can, +/obj/effect/spawner/random/maintenance, +/obj/structure/catwalk/over, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/ship/maintenance/port) "SB" = ( /obj/structure/cable{ icon_state = "1-8" @@ -6851,11 +7109,6 @@ /obj/structure/catwalk/over, /turf/open/floor/plating, /area/ship/engineering/engine) -"SH" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "SI" = ( /obj/structure/cable{ icon_state = "2-8" @@ -6887,10 +7140,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/communications) -"SL" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma, -/turf/open/floor/plating, -/area/ship/engineering) "SN" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 1 @@ -6931,6 +7180,22 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) +"Td" = ( +/obj/structure/closet/emcloset/anchored{ + populate = 0 + }, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/ship/maintenance/port) +"Te" = ( +/obj/structure/catwalk/over, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/ship/storage/starboard) "Tg" = ( /obj/structure/window/reinforced/survival_pod, /obj/structure/window/reinforced/survival_pod{ @@ -6941,6 +7206,12 @@ }, /turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) +"Ti" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/storage/starboard) "Tj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6983,29 +7254,18 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"TE" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "4-8" + dir = 8 }, -/turf/open/floor/plating/airless, -/area/ship/storage/port) -"TH" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"TI" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance/two, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) +/turf/open/floor/plating, +/area/ship/maintenance/port) "TK" = ( /obj/structure/window/reinforced{ dir = 4 @@ -7036,15 +7296,12 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) -"TN" = ( -/obj/structure/falsewall/plastitanium, -/turf/open/floor/plating, -/area/ship/storage/starboard) -"TO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) +"TR" = ( +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/closed/wall, +/area/ship/maintenance/starboard) "TS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7072,11 +7329,6 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"Ub" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/secure/loot, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "Uc" = ( /obj/structure/cable{ icon_state = "1-4" @@ -7088,6 +7340,12 @@ /obj/effect/turf_decal/hardline_small/left, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"Ue" = ( +/obj/structure/sign/number/random{ + pixel_y = -8 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/crew/dorm/dormtwo) "Ug" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -7134,6 +7392,14 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"Uj" = ( +/obj/machinery/jukebox/boombox{ + pixel_x = -7; + pixel_y = -11 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/crew/dorm/dormtwo) "Ul" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -7154,55 +7420,19 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"Uq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/advanced_airlock_controller{ - pixel_y = -24 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/chair/handrail{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/storage/starboard) -"Uy" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/storage/port) +"Up" = ( +/obj/structure/table, +/obj/effect/spawner/random/entertainment/musical_instrument, +/turf/open/floor/plating, +/area/ship/maintenance/port) "UD" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/storage/port) -"UG" = ( -/obj/machinery/button/door{ - dir = 4; - id = "talos_thrusters_port"; - name = "Blast Door Control"; - pixel_x = -21; - pixel_y = 3 - }, -/obj/structure/closet/secure_closet/engineering_electrical{ - req_access = null; - req_access_txt = "11" - }, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) +"UK" = ( +/obj/structure/catwalk/over, +/obj/structure/mopbucket, +/turf/open/floor/plating, +/area/ship/storage/port) "UM" = ( /obj/machinery/power/terminal{ dir = 8 @@ -7213,6 +7443,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"UN" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ship/maintenance/port) "UO" = ( /obj/machinery/light/directional/south, /turf/template_noop, @@ -7236,11 +7473,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"UQ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "Ve" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -7292,22 +7524,10 @@ /obj/structure/chair/handrail, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"Vp" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/port) "Vr" = ( /obj/item/trash/boritos, /turf/open/floor/plasteel/grimy, /area/ship/crew) -"Vs" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "Vz" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, @@ -7359,24 +7579,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"VL" = ( -/obj/machinery/button/shieldwallgen{ - id = "talos_tank_burn"; - pixel_x = -6; - pixel_y = 20; - req_access_txt = "56" - }, -/obj/machinery/button/door{ - id = "talos_tank_burn"; - pixel_x = 4; - pixel_y = 21; - req_access_txt = "56" - }, -/obj/effect/turf_decal/industrial/fire{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/engine) "VO" = ( /obj/effect/turf_decal/corner/opaque/yellow, /obj/effect/turf_decal/corner/opaque/brown{ @@ -7416,10 +7618,6 @@ /obj/machinery/photocopier, /turf/open/floor/plasteel/dark, /area/ship/security) -"Wd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "We" = ( /obj/structure/cable{ icon_state = "1-2" @@ -7445,30 +7643,18 @@ }, /turf/open/floor/plating, /area/ship/security) -"Wg" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/maintenance/starboard) -"Wh" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +"Wl" = ( +/obj/machinery/door/airlock/maintenance/external{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/chair/handrail{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/ship/storage/port) +/turf/open/floor/plating, +/area/ship/maintenance/port) "Wp" = ( /obj/structure/window/reinforced{ dir = 4 @@ -7482,11 +7668,22 @@ /obj/item/ammo_box/magazine/co9mm, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) -"Wr" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/carpet, -/area/ship/storage/starboard) +"Ws" = ( +/obj/structure/cable{ + icon_state = "6-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "Wy" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 4 @@ -7511,40 +7708,6 @@ /obj/item/radio/intercom/wideband/directional/east, /turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) -"WC" = ( -/obj/structure/dresser, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/black, -/area/ship/crew/dorm) -"WE" = ( -/obj/item/storage/backpack/industrial, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/under/syndicate/inteq/artificer, -/obj/item/clothing/under/syndicate/inteq/artificer/skirt, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/hardhat, -/obj/item/clothing/shoes/combat, -/obj/structure/railing, -/obj/item/storage/belt/utility/full, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/item/clothing/glasses/meson, -/obj/structure/closet/secure_closet{ - anchored = 1; - icon_state = "eng_secure"; - name = "artificer's locker"; - req_access_txt = "11" - }, -/obj/item/gear_pack/anglegrinder, -/obj/item/radio/headset/alt, -/obj/item/clothing/mask/gas/inteq, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) "WF" = ( /obj/effect/turf_decal/corner/opaque/yellow, /obj/effect/turf_decal/corner/opaque/brown{ @@ -7584,27 +7747,114 @@ /obj/machinery/power/generator{ dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"WN" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 6; + id = "talos_grid" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"WP" = ( +/obj/machinery/light_switch{ + pixel_y = 22 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage/port) +"WR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/navbeacon/wayfinding{ + location = "talos_bridge" + }, +/turf/open/floor/carpet/orange, +/area/ship/bridge) +"WS" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet/chestdrawer{ + dir = 4; + pixel_x = 7 + }, +/obj/item/radio/intercom/directional/west{ + freerange = 1; + freqlock = 1; + frequency = 1347; + name = "IRMG shortwave intercom" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"WX" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/syndicate{ + desc = "A slick black folder stamped 'Property of Inteq Risk Management Group.'" + }, +/obj/item/pen, +/obj/item/multitool{ + pixel_x = 12; + pixel_y = 8 }, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"WN" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 6; - id = "talos_grid" +/obj/machinery/light/directional/south, +/obj/item/radio/intercom/directional/north{ + dir = 4; + freerange = 1; + freqlock = 1; + frequency = 1347; + name = "IRMG shortwave intercom"; + pixel_x = 31; + pixel_y = 0 }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/storage) -"WR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) +"Xb" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_y = -32 }, -/obj/machinery/navbeacon/wayfinding{ - location = "talos_bridge" +/turf/open/floor/plating, +/area/ship/storage/starboard) +"Xe" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" }, -/turf/open/floor/carpet/orange, -/area/ship/bridge) +/turf/open/floor/plating, +/area/ship/storage/starboard) +"Xf" = ( +/obj/structure/catwalk/over, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/ship/storage/starboard) "Xg" = ( /turf/open/floor/carpet/black, /area/ship/crew/dorm) @@ -7623,10 +7873,6 @@ /obj/item/attachment/rail_light, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) -"Xl" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma, -/turf/open/floor/plating, -/area/ship/engineering/engine) "Xn" = ( /obj/structure/cable{ icon_state = "2-9" @@ -7672,6 +7918,16 @@ "XJ" = ( /turf/open/floor/engine/hull/reinforced, /area/ship/external/dark) +"XN" = ( +/obj/item/cigbutt, +/turf/open/floor/plasteel/dark, +/area/ship/maintenance/starboard) +"XS" = ( +/obj/structure/closet, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/maintenance/starboard) "XV" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/trimline/opaque/yellow/line, @@ -7713,12 +7969,6 @@ }, /turf/open/floor/engine/hull/reinforced/interior, /area/ship/engineering/engine) -"Yq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/handrail, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "Yt" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -7736,6 +7986,29 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"Yw" = ( +/obj/machinery/power/smes/shuttle/precharged, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "talos_thrusters_starboard" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) "Yz" = ( /obj/item/clothing/glasses/hud/security/sunglasses/inteq, /obj/item/clothing/mask/balaclava/inteq, @@ -7777,10 +8050,6 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/carpet/black, /area/ship/crew/dorm) -"YI" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) "YK" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7796,33 +8065,6 @@ /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"YU" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) -"YX" = ( -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"YZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) -"Zb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/plating/airless, -/area/ship/maintenance/port) "Zc" = ( /obj/machinery/status_display/shuttle{ pixel_y = 32 @@ -7856,11 +8098,21 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) -"Ze" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/firecloset, -/turf/open/floor/plating/airless, -/area/ship/maintenance/starboard) +"Zg" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/port) "Zj" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, @@ -7869,36 +8121,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"Zk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/bed, -/obj/item/bedsheet/hos{ - name = "vanguard's spare bedsheet" - }, -/turf/open/floor/plating, -/area/ship/storage/starboard) -"Zn" = ( -/obj/structure/closet/emcloset/empty{ - anchored = 1; - can_be_unanchored = 1; - name = "oxygen closet" - }, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/grid, -/area/ship/storage/port) "Zo" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ @@ -7924,6 +8146,10 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"Zs" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma, +/turf/open/floor/plating, +/area/ship/engineering/engine) "Zu" = ( /obj/structure/cable, /obj/machinery/power/smes/engineering, @@ -7942,6 +8168,11 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) +"ZC" = ( +/obj/effect/spawner/random/maintenance/three, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/storage/starboard) "ZE" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible, /obj/effect/turf_decal/industrial/fire{ @@ -7965,13 +8196,10 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) -"ZJ" = ( -/obj/machinery/power/shuttle/engine/electric, -/obj/structure/cable{ - icon_state = "0-4" - }, +"ZG" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, -/area/ship/engineering/engine) +/area/ship/storage/port) "ZU" = ( /obj/machinery/light/directional/west, /obj/machinery/telecomms/server/presets/inteq{ @@ -7981,20 +8209,6 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/ship/engineering/communications) -"ZV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plating/airless, -/area/ship/storage/port) -"ZY" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/ship/storage/starboard) (1,1,1) = {" sw @@ -8005,10 +8219,10 @@ sw sw tA OF -Ry -sZ -sZ -SL +sU +jk +jk +cp OF tA sw @@ -8017,10 +8231,10 @@ sw sw ie pU -Xl -ZJ -ZJ -ZJ +Zs +BZ +BZ +BZ pU ie sw @@ -8039,10 +8253,10 @@ sw hL OF OF -So -AY -ii -uC +Fj +IO +Ew +Mg OF OF sw @@ -8051,10 +8265,10 @@ sw sw pU pU -yq -aI -iM -ej +if +fw +Eh +Yw pU pU Ar @@ -8072,7 +8286,7 @@ MV sw ia bM -UG +lH UM lO dW @@ -8106,7 +8320,7 @@ MV sw vE OF -jf +Jd ak Uc OG @@ -8114,7 +8328,7 @@ iD Lo dw ge -GU +OU Yp ZE rV @@ -8143,7 +8357,7 @@ vp vp AO cj -qD +Pl jS AZ gV @@ -8186,7 +8400,7 @@ Gr QZ lS RC -Jo +wq Qu su qr @@ -8202,7 +8416,7 @@ cV "} (7,1,1) = {" vp -Eg +Kw mz EC My @@ -8218,7 +8432,7 @@ pU pU Pk pU -VL +dj cz pU JU @@ -8277,9 +8491,9 @@ aD MC zR vp -KW -br -WE +lP +Ls +Om Xn gP qh @@ -8308,7 +8522,7 @@ vp au fo Hl -jJ +WX vp vp sW @@ -8349,7 +8563,7 @@ YC yb sW OF -jZ +HC xI Yt IJ @@ -8413,11 +8627,11 @@ sW mL RL ow -WC +eM GR sW PJ -AD +Ia xI pu kD @@ -8451,7 +8665,7 @@ sW sW sW jX -di +JF xI sF kD @@ -8601,7 +8815,7 @@ Ui Fp Gm zo -NC +kc hT sw sw @@ -8694,7 +8908,7 @@ uv lB xf KF -BS +uj bX hT sq @@ -8856,7 +9070,7 @@ lC qF Zj mX -pL +dX dE Ax Lc @@ -8865,7 +9079,7 @@ Ic Gv fh Mh -qP +kQ bN LM Rg @@ -8976,7 +9190,7 @@ cR rJ PY Ir -xT +WS Wf sw sw @@ -9008,7 +9222,7 @@ Rg oV Hh pk -Lm +sH eN Dd mK @@ -9057,7 +9271,7 @@ sw lC Ds lt -Ga +EG ta xj Cu @@ -9072,7 +9286,7 @@ VX sw hT oW -fg +KH mK kM Jq @@ -9090,8 +9304,8 @@ sw sw qz yp -jj -Gl +yp +gh yp xj gT @@ -9105,8 +9319,8 @@ AB sw sw uI -si -iu +uI +hS uI gY as @@ -9124,9 +9338,9 @@ sw sw sw yp -Bz -lM -yp +GW +WP +gB yp yp yp @@ -9139,14 +9353,14 @@ sw sw sw uI -Gu -Uq -uI -uI -uI -TN +QH +yd uI uI +tw +QE +tw +tw sw sw sw @@ -9158,13 +9372,13 @@ sw sw sw vi -Zn -Wh -yp -AL -Aa -oY -zB +in +zf +fS +GW +UK +Qp +GW yp sw sw @@ -9173,14 +9387,14 @@ sw sw sw uI -FO -Mn -uI -Pt -uI -Ng -CJ -QS +st +fe +vr +ZC +tw +yX +aA +Ue sw sw sw @@ -9192,13 +9406,13 @@ sw sw sw Dw -yp -RY -yp -yp -yp -jt -yp +in +tS +PV +kA +bo +zH +NU yp sw sw @@ -9207,14 +9421,14 @@ sw sw sw uI -uI -KQ -uI -TO -uI -uc -rw -QS +nv +vr +vr +vr +tw +eE +dN +Ue sw sw sw @@ -9226,13 +9440,13 @@ sw sw sw PF -fU -nD -nH -Ex -RT -fr -Vp +GW +kY +GP +GW +Qf +Aj +GW yp sw sw @@ -9241,14 +9455,14 @@ sw sw sw uI -aV -Nf -oD -oS -uI -Wr -pb -QS +Gb +vr +Te +PM +tw +az +Uj +Ue sw sw sw @@ -9260,13 +9474,13 @@ sw sw Pf wv -uo -Uy -yp -kJ -RT -Uy -ZV +GW +Zg +GW +GW +GW +MF +GW yp sw sw @@ -9275,14 +9489,14 @@ sw sw sw uI -ik -hm -YI -Rp -uI -Zk -hz -QS +Gb +RZ +yu +Cm +tw +fO +qI +Ue sw sw sw @@ -9295,12 +9509,12 @@ sw Pf UD yp -yp -yp -Qy -yp -yp -yp +Ws +ZG +GW +MD +cl +dQ yp sw sw @@ -9309,14 +9523,14 @@ sw sw sw uI -uI -uI -uI -YU -uI -uI -uI -DO +MQ +vr +Xf +zq +tw +tw +tw +HM sw sw sw @@ -9329,12 +9543,12 @@ sw HI sw yp -MR -yp -tf -Ex -nF -bK +lK +mR +Fq +cq +Bn +Bn yp sw sw @@ -9343,12 +9557,12 @@ sw sw sw uI -Ub -lI -ZY -KT -YI -gm +nv +vr +vr +vr +vr +vr uI sw sw @@ -9363,12 +9577,12 @@ sw sw sw yp -Uy -yp -nF -NF -RT -Hj +DR +Hw +GW +yv +gE +zX yp sw sw @@ -9377,12 +9591,12 @@ sw sw sw uI -uI -uI -ub -uI -uI -uI +aj +Fb +fV +RZ +fV +St uI sw sw @@ -9397,12 +9611,12 @@ sw sw sw yp -uo -JI -Fh -TE -wU -UQ +nk +GW +GW +GW +GW +GW yp sw sw @@ -9411,12 +9625,12 @@ sw sw sw uI -pG -BN -QV -SH -Ho -hm +KP +jo +Ti +vr +Ka +fV uI sw sw @@ -9431,12 +9645,12 @@ sw sw sw Pp -Pp -Pp -Pp -tK -Pp -Pp +eH +BW +yY +iG +Gn +zI Pp sw sw @@ -9444,14 +9658,14 @@ sw sw sw sw -fK -fK -fK -mI -fK -fK -fK -fK +uI +Xe +mW +Xb +vr +hH +MU +uI sw sw sw @@ -9465,12 +9679,12 @@ sw sw sw Pp -Ri -zL -Vs -Hc -Ri -IF +iJ +tX +iJ +iJ +fI +rA Pp sw sw @@ -9479,12 +9693,12 @@ sw sw sw fK -YZ -hw -ff -fK -ti -Ni +bc +ja +bc +bc +bc +bc fK sw sw @@ -9499,12 +9713,12 @@ sw sw sw Pp -Pp -sl -Pp -Pp -Pp -Pp +hv +pY +Ij +iJ +lj +iJ Pp sw sw @@ -9513,12 +9727,12 @@ sw sw sw fK -If -Jk -yP -TH -If -Jk +Ju +ry +bc +Sc +nU +XS fK sw sw @@ -9533,12 +9747,12 @@ sw sw Pf Pp -qp -xG -BP -Wd -fj -Zb +Qb +DG +TI +iJ +mq +Up Pp sw sw @@ -9547,12 +9761,12 @@ sw sw sw fK -oG -If -ks -fK -IB -YZ +Kg +ET +rR +rZ +XN +jq fK sw sw @@ -9568,11 +9782,11 @@ sw Pf Ap Pp -Pp -yU -Pp -Pp -Pp +iJ +iJ +iJ +Pn +Ht Pp sw sw @@ -9581,11 +9795,11 @@ sw sw sw fK -fK -fK -Rs -fK -fK +KS +Jt +bc +kv +HT fK sy sw @@ -9602,11 +9816,11 @@ sw Pf sw Pp -zg -go -Pp -pq -zg +rr +jO +UN +OI +kq Pp sw sw @@ -9615,11 +9829,11 @@ sw sw sw fK -rN -QW -Ev -YX -Ze +TR +hX +bc +xi +kn fK sw sw @@ -9636,11 +9850,11 @@ sw Pf sw Pp -Wd -sC -Pp -RV -CN +Sv +EJ +iJ +zp +lc Pp sw sw @@ -9649,11 +9863,11 @@ sw sw sw fK -fK -ef -fK -fK -fK +bc +bc +bc +ld +bc fK sw sw @@ -9670,11 +9884,11 @@ sw Fi sw Pp -KB -iO -LF -Wd -OP +iJ +Wl +iJ +iJ +iJ Pp sw sw @@ -9683,11 +9897,11 @@ sw sw sw fK -dD -GQ -Jk -If -kh +bc +bj +Fs +pc +Nu fK sw sw @@ -9705,9 +9919,9 @@ sw sw aC Pp -fN -Pp -Pp +Kt +Td +iJ Pp Ap sw @@ -9718,9 +9932,9 @@ sw sw sy fK -Gq -If -YZ +JV +OC +yB fK qt sw @@ -9739,8 +9953,8 @@ sw sw sw Pp -Yq -sD +Lf +Jw Pp Ap sw @@ -9753,8 +9967,8 @@ sw sw sy fK -mh -Fl +mx +PT fK sw sw @@ -9773,8 +9987,8 @@ sw sw sw Ap -od -ck +Pp +DJ Pp sw sw @@ -9787,8 +10001,8 @@ sw sw sw fK -dv -Wg +zC +fK sy sw sw From 28dbb4cb73c607c86ad1e2c20662ed2e6de47f3c Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 14 Jan 2025 23:10:07 -0600 Subject: [PATCH 033/118] Automatic changelog generation for PR #3658 [ci skip] --- html/changelogs/AutoChangeLog-pr-3658.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3658.yml diff --git a/html/changelogs/AutoChangeLog-pr-3658.yml b/html/changelogs/AutoChangeLog-pr-3658.yml new file mode 100644 index 000000000000..714dd64c66b2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3658.yml @@ -0,0 +1,5 @@ +author: Sadhorizon +changes: + - {tweak: Talos maints were remapped. They are also no longer spaced.} + - {tweak: Scarab maints were tweaked a little.} +delete-after: true From 78417e09ac50e85e83e4c871c895ac18ac001473 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 16 Jan 2025 01:01:16 +0000 Subject: [PATCH 034/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3658.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3956.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3974.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3977.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3983.yml | 5 ----- html/changelogs/archive/2025-01.yml | 15 +++++++++++++++ 6 files changed, 15 insertions(+), 24 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3658.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3956.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3974.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3977.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3983.yml diff --git a/html/changelogs/AutoChangeLog-pr-3658.yml b/html/changelogs/AutoChangeLog-pr-3658.yml deleted file mode 100644 index 714dd64c66b2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3658.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Sadhorizon -changes: - - {tweak: Talos maints were remapped. They are also no longer spaced.} - - {tweak: Scarab maints were tweaked a little.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3956.yml b/html/changelogs/AutoChangeLog-pr-3956.yml deleted file mode 100644 index 031d11c03674..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3956.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: MemeSnorfer -changes: - - {bugfix: Makes some changes to the Atoll-Class's map file. It should feel slightly - better to play on.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3974.yml b/html/changelogs/AutoChangeLog-pr-3974.yml deleted file mode 100644 index 6f90f6c7a02c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3974.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Ical92 -changes: - - {bugfix: merge conflicts are now properly marked} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3977.yml b/html/changelogs/AutoChangeLog-pr-3977.yml deleted file mode 100644 index e938de47315b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3977.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: generalthrax -changes: - - {rscadd: 'Improved Elder airlock and added a few small things to the Elder (Animal - pen, cargo bay area, more tobacco, eggs), and shifted docking ports around.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3983.yml b/html/changelogs/AutoChangeLog-pr-3983.yml deleted file mode 100644 index c0d9bb8e61f5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3983.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Erikafox -changes: - - {bugfix: "Doors are now bludgeoned by whatever you're holding less, and can actually - be deconstructed."} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index bf7662ab5761..4a24f6db40db 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -82,3 +82,18 @@ 2025-01-15: Erikafox: - bugfix: guns no longer glow in the dark +2025-01-16: + Erikafox: + - bugfix: Doors are now bludgeoned by whatever you're holding less, and can actually + be deconstructed. + Ical92: + - bugfix: merge conflicts are now properly marked + MemeSnorfer: + - bugfix: Makes some changes to the Atoll-Class's map file. It should feel slightly + better to play on. + Sadhorizon: + - tweak: Talos maints were remapped. They are also no longer spaced. + - tweak: Scarab maints were tweaked a little. + generalthrax: + - rscadd: Improved Elder airlock and added a few small things to the Elder (Animal + pen, cargo bay area, more tobacco, eggs), and shifted docking ports around. From 7a17ccee94723e9a38f1e0c5218eacc9a0c626e8 Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Fri, 17 Jan 2025 00:58:58 -0500 Subject: [PATCH 035/118] Adds a CE access requirement to the wrecker's equipment room on the Derecho (#3998) ## About The Pull Request This PR tweaks the wrecker's equipment storage room's airlock so that it requires either CE access or mining access in order to open. ## Why It's Good For The Game This would allow for the Foreman aboard the Derecho to access the wrecker's equipment, which I feel makes sense. @Apogee-dev , the developer of the Derecho, is also fine with this change. ## Changelog :cl: code: modifies the access requirements to the wrecker's equipment room aboard the Derecho so that the Foreman can access it /:cl: --- _maps/shuttles/syndicate/syndicate_ngr_derecho.dmm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm index 586a592bb7c1..2fefe2a23261 100644 --- a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm +++ b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm @@ -2587,6 +2587,12 @@ pixel_y = 7 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/hatch{ + dir = 4; + name = "Locker Room"; + req_access_txt = null; + req_one_access_txt = "48,56" + }, /turf/open/floor/plasteel/dark, /area/ship/cargo) "vF" = ( @@ -5645,7 +5651,7 @@ /obj/machinery/door/airlock/hatch{ dir = 4; name = "Locker Room"; - req_access_txt = "48" + req_one_access = list(48, 56) }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/grid, From e311d58da101e6ba192ec6dd4de6fe80a903e25b Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 00:09:16 -0600 Subject: [PATCH 036/118] Automatic changelog generation for PR #3998 [ci skip] --- html/changelogs/AutoChangeLog-pr-3998.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3998.yml diff --git a/html/changelogs/AutoChangeLog-pr-3998.yml b/html/changelogs/AutoChangeLog-pr-3998.yml new file mode 100644 index 000000000000..3359b5b3b70a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3998.yml @@ -0,0 +1,5 @@ +author: zimon9 +changes: + - {code_imp: modifies the access requirements to the wrecker's equipment room aboard + the Derecho so that the Foreman can access it} +delete-after: true From d9074f1440fef7afea63ae5c78661a7475682bdb Mon Sep 17 00:00:00 2001 From: Theos Date: Fri, 17 Jan 2025 14:27:15 -0500 Subject: [PATCH 037/118] fix #3990 (#4022) ## About The Pull Request fixes #3990 ## Why It's Good For The Game old sprites were copied into the new hazard icons instead of the new ones ## Changelog :cl: fix: radioactive barrels are now 4k HD again /:cl: --- icons/obj/hazard/generic.dmi | Bin 8455 -> 9367 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/hazard/generic.dmi b/icons/obj/hazard/generic.dmi index 80e89e6fcbc02fb97cb245769458060ace4f5ffd..19e85f5fcb6e08e27b4b58f4dc10d93ac8559080 100644 GIT binary patch delta 9114 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 G75qPMhrv1k delta 8194 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 I@>Ze$1J>E8PXGV_ From 8162369dfa051213d19b523925cd8d0e08e937cf Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 13:38:17 -0600 Subject: [PATCH 038/118] Automatic changelog generation for PR #4022 [ci skip] --- html/changelogs/AutoChangeLog-pr-4022.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4022.yml diff --git a/html/changelogs/AutoChangeLog-pr-4022.yml b/html/changelogs/AutoChangeLog-pr-4022.yml new file mode 100644 index 000000000000..1ce5bdf8d2d3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4022.yml @@ -0,0 +1,4 @@ +author: SomeguyManperson +changes: + - {bugfix: radioactive barrels are now 4k HD again} +delete-after: true From 8d95284c344058ffbfd57f3623adf5d897fabf45 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:59:19 -0500 Subject: [PATCH 039/118] Removes Bullet Absorbtion From Mobs (#3985) this feature is dumb nothing is 'immune' to bullets :cl: balance: goldgrubs, fugu, and basilisks are now marginally less immune to bullets. /:cl: Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../living/simple_animal/hostile/mining_mobs/basilisk.dm | 8 ++------ .../living/simple_animal/hostile/mining_mobs/goldgrub.dm | 6 ++++-- .../simple_animal/hostile/mining_mobs/mining_mobs.dm | 5 +---- .../mob/living/simple_animal/hostile/wumborian_fugu.dm | 7 ++----- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index c2a09fb80b65..2a3886db5b98 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -1,5 +1,3 @@ -#define BULLET_SHELL_DAMAGE 1 - //A beast that fire freezing blasts. /mob/living/simple_animal/hostile/asteroid/basilisk name = "basilisk" @@ -158,7 +156,7 @@ return ..() /mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/bullet_act(obj/projectile/P) - shell_damage(BULLET_SHELL_DAMAGE) + shell_damage(P.damage/4) if(has_shell) playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 85, TRUE) visible_message("The [P] is absorbed by the [src]'s shell, dealing minimal damage!") //make it less confusing when bullets do no damage @@ -166,7 +164,7 @@ /mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) - shell_damage(BULLET_SHELL_DAMAGE) + shell_damage(AM.throwforce/4) ..() /mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/drop_loot() @@ -201,8 +199,6 @@ name = "glowing basilisk" projectiletype = /obj/projectile/temp/basilisk/heated -#undef BULLET_SHELL_DAMAGE - //Watcher /mob/living/simple_animal/hostile/asteroid/basilisk/watcher name = "watcher" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm index 3377165ea3ea..a873ddc27545 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm @@ -36,6 +36,8 @@ /obj/item/stack/ore/silver, /obj/item/stack/ore/uranium) + armor = list(melee = 25, bullet = 60, laser = 40, energy = 80, bomb = 80, bio = 80, rad = 80, fire = 80, acid = 80, magic = 80) + var/chase_time = 100 var/will_burrow = TRUE var/datum/action/innate/goldgrub/spitore/spit @@ -157,8 +159,8 @@ qdel(src) /mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/projectile/P) - visible_message("The [P.name] is repelled by [name]'s girth!") - return BULLET_ACT_BLOCK + visible_message("The [P.name] is absorbed by [name]'s girth!") + . = ..() /mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth(amount, updating_health = TRUE, forced = FALSE) vision_range = 9 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 18be354c2652..a3d1ba5fb01d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -37,12 +37,9 @@ return icon_state = icon_living -/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/projectile/P)//Reduces damage from most projectiles to curb off-screen kills +/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/projectile/P) if(!stat) Aggro() - /* if(P.damage < 30 && P.damage_type != BRUTE) //WS Edit Begin - Whitesands - P.damage = (P.damage / 3) - visible_message("[P] has a reduced effect on [src]!") */ //WS Edit End ..() /mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) //No floor tiling them to death, wiseguy diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index be3242ed5252..50f23b334919 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -32,6 +32,7 @@ aggro_vision_range = 9 mob_size = MOB_SIZE_SMALL environment_smash = ENVIRONMENT_SMASH_NONE + armor = list(melee = 20, bullet = 10, laser = 30, energy = 80, bomb = 80, bio = 80, rad = 80, fire = 80, acid = 80, magic = 80) var/wumbo = 0 var/inflate_cooldown = 0 var/datum/action/innate/fugu/expand/E @@ -57,11 +58,6 @@ E.Activate() ..() -/mob/living/simple_animal/hostile/asteroid/fugu/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - if(!forced && wumbo) - return FALSE - . = ..() - /mob/living/simple_animal/hostile/asteroid/fugu/Aggro() ..() E.Activate() @@ -99,6 +95,7 @@ F.environment_smash = ENVIRONMENT_SMASH_WALLS F.mob_size = MOB_SIZE_LARGE F.speed = 1 + F.armor = list(melee = 80, bullet = 60, laser = 80, energy = 80, bomb = 80, bio = 80, rad = 80, fire = 80, acid = 80, magic = 80) addtimer(CALLBACK(F, TYPE_PROC_REF(/mob/living/simple_animal/hostile/asteroid/fugu, Deflate)), 100) /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate() From f88afad47cef822c043faf1a4816bef2bb2e0ddc Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:00:28 -0500 Subject: [PATCH 040/118] Outpost Medical (#3939) ## About The Pull Request Yes I know it looks unatomic it kinda is Adds some new medpens + reflavors the wallmed vendor + adds small medical areas to both outposts + remaps indie_space to accommodate a medical area new medpens: diphenhydramine antihol synaptizine tricordrazine psicodine wallmed vendor now has all those medpens + atropine, as well as some splints and gauze. outpost map changes: ![image](https://github.com/user-attachments/assets/244458f6-b15f-4d9b-a73e-ccf7cd33f22a) ![image](https://github.com/user-attachments/assets/1bcf8987-49bc-4224-bf8e-0c7e29685642) ## Why It's Good For The Game I want to see more people going into the outpost for their own medical needs. I think this'll encourage it ## Changelog :cl: add: The asteroid outpost in the region has been somewhat renovated. add: Outposts now stock a variety of medpens in a small medical area. /:cl: --- _maps/outpost/elevator_indie.dmm | 70 +- _maps/outpost/hangar/indie_space_20x20.dmm | 679 +- _maps/outpost/hangar/indie_space_40x20.dmm | 700 +- _maps/outpost/hangar/indie_space_40x40.dmm | 564 +- _maps/outpost/hangar/indie_space_56x20.dmm | 550 +- _maps/outpost/hangar/indie_space_56x40.dmm | 691 +- _maps/outpost/indie_space.dmm | 10721 +++++++++------- _maps/outpost/nanotrasen_ice.dmm | 187 +- code/game/objects/items/stacks/medical.dm | 3 +- .../structures/crates_lockers/crates.dm | 3 + code/game/turfs/closed/indestructible.dm | 6 + .../reagents/reagent_containers/hypospray.dm | 88 +- code/modules/uplink/uplink_items.dm | 8 - code/modules/vending/medical.dm | 7 + code/modules/vending/medical_wall.dm | 36 +- 15 files changed, 8307 insertions(+), 6006 deletions(-) diff --git a/_maps/outpost/elevator_indie.dmm b/_maps/outpost/elevator_indie.dmm index f692a2918a5b..d67f501a074e 100644 --- a/_maps/outpost/elevator_indie.dmm +++ b/_maps/outpost/elevator_indie.dmm @@ -1,19 +1,46 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /obj/structure/elevator_platform, -/obj/machinery/status_display/elevator{ - pixel_x = -32 +/obj/machinery/elevator_floor_button{ + pixel_y = 22 }, /turf/template_noop, /area/template_noop) "e" = ( /obj/structure/elevator_platform, -/obj/machinery/light/small/directional/east, +/obj/structure/crate_shelf{ + capacity = 2 + }, /turf/template_noop, /area/template_noop) "k" = ( /obj/structure/elevator_platform, -/obj/machinery/light/small/directional/west, +/obj/machinery/status_display/elevator{ + pixel_x = -32 + }, +/obj/machinery/light/dim/directional/south, +/turf/template_noop, +/area/template_noop) +"r" = ( +/obj/structure/elevator_platform, +/obj/machinery/status_display/elevator{ + pixel_x = 32 + }, +/obj/machinery/light/dim/directional/south, +/turf/template_noop, +/area/template_noop) +"s" = ( +/obj/structure/elevator_platform, +/obj/machinery/status_display/elevator{ + pixel_x = 32 + }, +/obj/machinery/light/dim/directional/north, +/turf/template_noop, +/area/template_noop) +"x" = ( +/obj/structure/elevator_platform, +/obj/item/radio/intercom/table, +/obj/structure/table, /turf/template_noop, /area/template_noop) "A" = ( @@ -22,26 +49,45 @@ /area/template_noop) "S" = ( /obj/structure/elevator_platform, -/obj/machinery/elevator_floor_button{ - pixel_y = 0; - dir = 8; - pixel_x = 24 +/obj/machinery/status_display/elevator{ + pixel_x = -32 }, +/obj/machinery/light/dim/directional/north, /turf/template_noop, /area/template_noop) (1,1,1) = {" -k -a +S +A +A +A k "} (2,1,1) = {" A A +e +A A "} (3,1,1) = {" +a +A +x +A +A +"} +(4,1,1) = {" +A +A e -S -e +A +A +"} +(5,1,1) = {" +s +A +A +A +r "} diff --git a/_maps/outpost/hangar/indie_space_20x20.dmm b/_maps/outpost/hangar/indie_space_20x20.dmm index 24c00395b2f6..8e8c6f2fb2e2 100644 --- a/_maps/outpost/hangar/indie_space_20x20.dmm +++ b/_maps/outpost/hangar/indie_space_20x20.dmm @@ -13,45 +13,28 @@ }, /area/hangar) "al" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/arrows{ + dir = 4 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "am" = ( /turf/closed/indestructible/reinforced, /area/hangar) "ao" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/hangar, /area/hangar) "ap" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" - }, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/hangar/plasteel, /area/hangar) "aq" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/plasteel/grimy, /area/hangar) "av" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ +/turf/open/floor/plasteel/tech{ planetary_atmos = 1 }, /area/hangar) @@ -66,27 +49,17 @@ /turf/closed/indestructible/reinforced, /area/hangar) "az" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aA" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, /area/hangar) "aB" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/closed/indestructible/reinforced/rust, /area/hangar) "aC" = ( /obj/effect/turf_decal/arrows{ @@ -97,18 +70,17 @@ }, /area/hangar) "aE" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/hangar/plasteel, /area/hangar) "aH" = ( /turf/template_noop, /area/template_noop) "aJ" = ( -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aL" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -119,53 +91,44 @@ }, /area/hangar) "aM" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/hangar, /area/hangar) "aN" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aO" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, +/turf/open/floor/plasteel/grimy, /area/hangar) "aP" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aT" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/structure/table, +/turf/open/floor/plasteel/grimy, /area/hangar) "aY" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 9 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aZ" = ( -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, +/area/hangar) +"gQ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/hangar/plasteel, /area/hangar) "jk" = ( /obj/effect/landmark/outpost/elevator, @@ -173,23 +136,87 @@ planetary_atmos = 1 }, /area/hangar) +"jL" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) +"kI" = ( +/obj/effect/landmark/outpost/elevator_machine, +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) "qz" = ( /turf/open/floor/plasteel/elevatorshaft{ planetary_atmos = 1 }, /area/hangar) +"rC" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) "rQ" = ( -/obj/machinery/atmospherics/pipe/simple/general, /turf/closed/indestructible/reinforced, +/area/template_noop) +"ud" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/hangar) +"yo" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/hangar) +"Co" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) +"Kl" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 10 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) +"LV" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/hangar/plasteel, +/area/hangar) +"Qc" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/hangar, +/area/hangar) +"Rz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/plasteel/grimy, +/area/hangar) +"WI" = ( +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/hangar/plasteel, /area/hangar) (1,1,1) = {" aH aH aH -am -am -am +aH +aH +aB +aB +aB am am am @@ -212,18 +239,19 @@ am am ay am -am -am +aB am "} (2,1,1) = {" aH aH aH -am -aZ -aZ -aM +aH +aH +aB +aP +aP +Kl aL aL aL @@ -244,52 +272,54 @@ aL aL aL aL -ao -aZ -aZ -am +aY +aP +aB "} (3,1,1) = {" aH aH aH -am -aZ +aH +aH +aB aZ aM +ap ac ac aC ac -ac +av ac ac aC ac -ac +av ac ac aC ac -ac +av ac ac aC ac ac -ao -aZ -aZ -am +az +aM +aB "} (4,1,1) = {" aH aH aH -am -aZ +aH +aH +aB aZ aM +ap ad ad ad @@ -310,19 +340,20 @@ ad ad ad ad -ao -aZ -aZ -am +az +aM +aB "} (5,1,1) = {" aH aH aH +aH +aH am aZ -aZ aM +ap aJ aJ aJ @@ -342,20 +373,21 @@ aJ aJ aJ aJ -aB ao -aZ -aZ -am +az +aM +aB "} (6,1,1) = {" aH aH aH +aH +aH am aZ -aZ aM +ap aJ aJ aJ @@ -376,20 +408,21 @@ aJ aJ aJ aJ -ao -aZ -aZ -am +az +aM +aB "} (7,1,1) = {" aH aH aH -am +aH +aH +aB aZ -az -aM +al ap +Qc aJ aJ aJ @@ -408,20 +441,21 @@ aJ aJ aJ aJ -ap -ao +Qc az -aZ +al am "} (8,1,1) = {" aH aH aH -am -aZ +aH +aH +aB aZ aM +ap aJ aJ aJ @@ -442,19 +476,20 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (9,1,1) = {" aH aH aH -am -aZ +aH +aH +aB aZ -av +aM +gQ aJ aJ aJ @@ -475,19 +510,20 @@ aJ aJ aJ aJ -aq -aZ -aZ +aE +aM am "} (10,1,1) = {" aH aH aH -am -aZ +aH +aH +aB aZ aM +ap aJ aJ aJ @@ -508,19 +544,20 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (11,1,1) = {" -aH -aH -aH am -aZ -aZ +am +am +am +am +aB +am aM +ap aJ aJ aJ @@ -541,20 +578,21 @@ aJ aJ aJ aJ -ao -aZ -aZ -am +az +aM +am "} (12,1,1) = {" -aH -aH -aH am -aZ -az -aM +qz +qz +qz +qz +jk +am +kI ap +Qc aJ aJ aJ @@ -573,20 +611,21 @@ aJ aJ aJ aJ -ap -ao +Qc az -aZ +al am "} (13,1,1) = {" -aH -aH -aH am +qz +qz +qz +qz +qz +ax aZ -aZ -aM +ap aJ aJ aJ @@ -607,19 +646,20 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (14,1,1) = {" -aH -aH -aH am -aZ -aZ -aM +qz +qz +qz +qz +qz +ax +WI +ap aJ aJ aJ @@ -640,19 +680,20 @@ aJ aJ aJ aJ -ao -aZ -aZ -am +az +aM +aB "} (15,1,1) = {" -aH -aH -aH am +qz +qz +qz +qz +qz +ax aZ -aZ -aM +ap aJ aJ aJ @@ -673,19 +714,20 @@ aJ aJ aJ aJ -ao -aZ -aZ -am +az +aM +aB "} (16,1,1) = {" -aH -aH -aH +am +qz +qz +qz +qz +qz am aZ -aZ -aM +ap aJ aJ aJ @@ -706,20 +748,21 @@ aJ aJ aJ aJ -ao -aZ -aZ -am +az +aM +aB "} (17,1,1) = {" -aH -aH -aH am -aZ -az +am +am +am +am +am +am aM ap +Qc aJ aJ aJ @@ -738,20 +781,21 @@ aJ aJ aJ aJ -ap -ao +Qc az -aZ -am +al +aB "} (18,1,1) = {" aH aH aH +aH +aH am aZ -aZ aM +ap aJ aJ aJ @@ -772,19 +816,20 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (19,1,1) = {" aH aH aH +aH +aH am aZ -aZ -av +aM +gQ aJ aJ aJ @@ -805,19 +850,20 @@ aJ aJ aJ aJ -aq -aZ -aZ +aE +aM am "} (20,1,1) = {" aH aH aH +aH +aH am aZ -aZ aM +ap aJ aJ aJ @@ -838,19 +884,20 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (21,1,1) = {" aH aH aH +aH +aH am aZ -aZ aM +ap aJ aJ aJ @@ -871,20 +918,21 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (22,1,1) = {" aH aH aH +aH +rQ am aZ -az -aM +Co ap +Qc aJ aJ aJ @@ -903,20 +951,21 @@ aJ aJ aJ aJ -ap -ao +Qc az -aZ +al am "} (23,1,1) = {" aH aH aH +aH rQ aO -aZ +Rz aM +ap aJ aJ aJ @@ -937,19 +986,20 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (24,1,1) = {" -am -am -am -am -am +aH +aH +aH +aH +rQ +yo aA aM +ap aJ aJ aJ @@ -970,88 +1020,90 @@ aJ aJ aJ aJ -ao -aZ -aZ +az +aM am "} (25,1,1) = {" -am -qz -qz -jk -ax -aZ -al -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +aH +aH +aH +aH +rQ +aT +aA +aM aN aP -aZ -aZ +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +aP +jL +aM am "} (26,1,1) = {" -am -qz -qz -qz -ax -aY -aZ -aZ -aZ -aT -aZ -aZ -aZ -aZ -aT -aZ -aZ -aZ -aZ -aT -aZ -aZ -aZ -aZ -aT -aZ -aZ -aZ -aZ -aZ +aH +aH +aH +aH +rQ +ud +aA +aM +aM +aM +aM +rC +aM +aM +aM +aM +rC +aM +aM +aM +aM +rC +aM +aM +aM +aM +rC +aM +aM +aM +aM am "} (27,1,1) = {" -am -qz -qz -qz -ax -aZ +aH +aH +aH +aH +rQ +aq +aA aZ aZ -aE aZ +LV aZ aZ aZ @@ -1067,14 +1119,19 @@ aZ aZ aZ aZ -aE aZ +LV aZ aZ aZ -am +aB "} (28,1,1) = {" +aH +aH +aH +aH +rQ am am am @@ -1090,20 +1147,16 @@ am am am am +aB +aB +aB am am am am am +aB am -am -am -am -am -am -am -am -am -am -am +aB +aB "} diff --git a/_maps/outpost/hangar/indie_space_40x20.dmm b/_maps/outpost/hangar/indie_space_40x20.dmm index b3d80e6103bc..25546aedbdc3 100644 --- a/_maps/outpost/hangar/indie_space_40x20.dmm +++ b/_maps/outpost/hangar/indie_space_40x20.dmm @@ -6,25 +6,20 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "af" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/hangar, /area/hangar) "ai" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aj" = ( -/turf/open/floor/plasteel{ +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/tech{ planetary_atmos = 1 }, /area/hangar) @@ -32,9 +27,7 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "am" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -46,25 +39,16 @@ /area/hangar) "ap" = ( /obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "as" = ( /obj/effect/turf_decal/arrows{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "av" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aw" = ( /obj/effect/turf_decal/arrows{ @@ -76,14 +60,10 @@ /area/hangar) "aA" = ( /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aD" = ( -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aF" = ( /obj/machinery/door/airlock, @@ -95,9 +75,7 @@ /obj/structure/marker_beacon{ picked_color = "Teal" }, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aH" = ( /turf/open/floor/plasteel/tech{ @@ -106,17 +84,13 @@ /area/hangar) "aL" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aM" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aO" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -130,13 +104,10 @@ /turf/template_noop, /area/template_noop) "aR" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/arrows{ + dir = 4 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aT" = ( /obj/machinery/door/poddoor/multi_tile/four_tile_ver, @@ -146,32 +117,33 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aX" = ( /obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 + dir = 8 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aY" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "JT" = ( /turf/open/floor/plasteel/elevatorshaft{ planetary_atmos = 1 }, /area/hangar) +"Ny" = ( +/obj/effect/landmark/outpost/elevator_machine, +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) "OP" = ( /obj/effect/landmark/outpost/elevator, /turf/open/floor/plasteel/elevatorshaft{ @@ -179,14 +151,16 @@ }, /area/hangar) "TX" = ( -/obj/machinery/atmospherics/pipe/simple/general, -/turf/closed/indestructible/reinforced, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/hangar/plasteel, /area/hangar) (1,1,1) = {" aP aP aP +aP +aP ab ab ab @@ -220,9 +194,11 @@ ab aP aP aP +aP +aP ab -aj -aj +av +av aL aO aO @@ -245,50 +221,54 @@ aO aO aO al -aj -aj +av +av ab "} (3,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aH aH aw aH -aH +aj aH aH aw aH -aH +aj aH aH aw aH -aH +aj aH aH aw aH aH al -aj -aj +af +av ab "} (4,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL am am @@ -311,17 +291,19 @@ am am am al -aj -aj +af +av ab "} (5,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -344,17 +326,19 @@ aD aD ap al -aj -aj +af +av ab "} (6,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -377,17 +361,19 @@ aD aD aD al -aj -aj +af +av ab "} (7,1,1) = {" aP aP aP +aP +aP ab -aj -aX +av +aR aL aG aD @@ -410,17 +396,19 @@ aD aD aG al -aX -aj +aR +av ab "} (8,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -443,17 +431,19 @@ aD aD aD al -aj -aj +af +av ab "} (9,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af ai aD aD @@ -476,17 +466,19 @@ aD aD aD aY -aj -aj +af +av ab "} (10,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -509,17 +501,19 @@ aD aD aD al -aj -aj +af +av ab "} (11,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -542,17 +536,19 @@ aD aD aD al -aj -aj +af +av ab "} (12,1,1) = {" aP aP aP +aP +aP ab -aj -aX +av +aR aL aG aD @@ -575,17 +571,19 @@ aD aD aG al -aX -aj +aR +av ab "} (13,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -608,17 +606,19 @@ aD aD aD al -aj -aj +af +av ab "} (14,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -641,17 +641,19 @@ aD aD aD al -aj -aj +af +av ab "} (15,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -674,17 +676,19 @@ aD aD aD al -aj -aj +af +av ab "} (16,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -707,17 +711,19 @@ aD aD aD al -aj -aj +af +av ab "} (17,1,1) = {" aP aP aP +aP +aP ab -aj -aX +av +aR aL aG aD @@ -740,17 +746,19 @@ aD aD aG al -aX -aj +aR +av ab "} (18,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -773,17 +781,19 @@ aD aD aD al -aj -aj +af +av ab "} (19,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af ai aD aD @@ -806,17 +816,19 @@ aD aD aD aY -aj -aj +af +av ab "} (20,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -839,17 +851,19 @@ aD aD aD al -aj -aj +af +av ab "} (21,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -872,17 +886,19 @@ aD aD aD al -aj -aj +af +av ab "} (22,1,1) = {" aP aP aP +aP +aP ab -aj -aX +av +aR aL aG aD @@ -905,17 +921,19 @@ aD aD aG al -aX -aj +aR +av ab "} (23,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -938,17 +956,19 @@ aD aD aD al -aj -aj +af +av ab "} (24,1,1) = {" -aP -aP -aP ab -aj -aj +ab +ab +ab +ab +ab +ab +av aL aD aD @@ -971,17 +991,19 @@ aD aD aD al -aj -aj +af +av ab "} (25,1,1) = {" -aP -aP -aP ab -aj -aj +JT +JT +JT +JT +OP +ab +Ny aL aD aD @@ -1004,17 +1026,19 @@ aD aD aD al -aj -aj +af +av ab "} (26,1,1) = {" -aP -aP -aP ab -aj -aj +JT +JT +JT +JT +JT +aF +av aL aD aD @@ -1037,17 +1061,19 @@ aD aD aD al -aj -aj +af +av ab "} (27,1,1) = {" -aP -aP -aP ab -aj -aX +JT +JT +JT +JT +JT +aF +TX aL aG aD @@ -1070,17 +1096,19 @@ aD aD aG al -aX -aj +aR +av ab "} (28,1,1) = {" -aP -aP -aP ab -aj -aj +JT +JT +JT +JT +JT +aF +av aL aD aD @@ -1103,17 +1131,19 @@ aD aD aD al -aj -aj +af +av ab "} (29,1,1) = {" -aP -aP -aP ab -aj -aj +JT +JT +JT +JT +JT +ab +av ai aD aD @@ -1136,17 +1166,19 @@ aD aD aD aY -aj -aj +af +av ab "} (30,1,1) = {" -aP -aP -aP ab -aj -aj +ab +ab +ab +ab +ab +ab +av aL aD aD @@ -1169,17 +1201,19 @@ aD aD aD al -aj -aj +af +av ab "} (31,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1202,16 +1236,18 @@ aD aD aD al -aj -aj +af +av ab "} (32,1,1) = {" aP aP aP +aP +aP ab -aj +av aX aL aG @@ -1235,17 +1271,19 @@ aD aD aG al -aX -aj +aR +av ab "} (33,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1268,17 +1306,19 @@ aD aD aD al -aj -aj +af +av ab "} (34,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1301,17 +1341,19 @@ aD aD aD al -aj -aj +af +av ab "} (35,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1334,17 +1376,19 @@ aD aD aD al -aj -aj +af +av ab "} (36,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1367,16 +1411,18 @@ aD aD aD al -aj -aj +af +av ab "} (37,1,1) = {" aP aP aP +aP +aP ab -aj +av aX aL aG @@ -1400,17 +1446,19 @@ aD aD aG al -aX -aj +aR +av ab "} (38,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1433,17 +1481,19 @@ aD aD aD al -aj -aj +af +av ab "} (39,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af ai aD aD @@ -1466,17 +1516,19 @@ aD aD aD aY -aj -aj +af +av ab "} (40,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1499,17 +1551,19 @@ aD aD aD al -aj -aj +af +av ab "} (41,1,1) = {" aP aP aP +aP +aP ab -aj -aj +av +af aL aD aD @@ -1532,16 +1586,18 @@ aD aD aD al -aj -aj +af +av ab "} (42,1,1) = {" aP aP aP +aP +aP ab -aj +av aX aL aG @@ -1565,17 +1621,19 @@ aD aD aG al -aX -aj +aR +av ab "} (43,1,1) = {" aP aP aP -TX +aP +aP +ab av -aj +af aL aD aD @@ -1598,17 +1656,19 @@ aD aD aD al -aj -aj +af +av ab "} (44,1,1) = {" +aP +aP +aP +aP +aP ab -ab -ab -ab -ab -aR +av +af aL aD aD @@ -1631,17 +1691,19 @@ aD aD aD al -aj -aj +af +av ab "} (45,1,1) = {" +aP +aP +aP +aP +aP ab -JT -JT -OP -aF -aj +av +af aM aU aU @@ -1664,80 +1726,86 @@ aU aU aU ae -aj -aj +af +av ab "} (46,1,1) = {" +aP +aP +aP +aP +aP ab -JT -JT -JT -aF +av +af +af +af af -aj -aj -aj as -aj -aj -aj -aj +af +af +af +af as -aj -aj -aj -aj +af +af +af +af as -aj -aj -aj -aj +af +af +af +af as -aj -aj -aj -aj -aj +af +af +af +af +av ab "} (47,1,1) = {" +aP +aP +aP +aP +aP ab -JT -JT -JT -aF -aj -aj -aj +av +av +av +av aA -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj -aj +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av +av aA -aj -aj -aj -aj +av +av +av +av ab "} (48,1,1) = {" -ab -ab -ab +aP +aP +aP +aP +aP ab ab ab diff --git a/_maps/outpost/hangar/indie_space_40x40.dmm b/_maps/outpost/hangar/indie_space_40x40.dmm index 9818aa943330..4f126292695f 100644 --- a/_maps/outpost/hangar/indie_space_40x40.dmm +++ b/_maps/outpost/hangar/indie_space_40x40.dmm @@ -6,49 +6,37 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ac" = ( /obj/structure/marker_beacon{ picked_color = "Teal" }, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "ag" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ah" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ak" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "am" = ( /obj/machinery/elevator_call_button{ pixel_y = 25 }, /obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "an" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -82,49 +70,37 @@ /obj/effect/turf_decal/arrows{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ax" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ay" = ( /obj/effect/turf_decal/arrows{ dir = 4 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aC" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aF" = ( -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aH" = ( /obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aP" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/arrows{ + dir = 8 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aQ" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -136,30 +112,20 @@ /area/hangar) "aS" = ( /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aT" = ( -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/hangar, /area/hangar) "aX" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aY" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aZ" = ( /obj/machinery/door/airlock, @@ -172,9 +138,15 @@ planetary_atmos = 1 }, /area/hangar) +"vh" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) "BE" = ( -/obj/machinery/atmospherics/pipe/simple/general, -/turf/closed/indestructible/reinforced, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/hangar/plasteel, /area/hangar) "JI" = ( /obj/effect/landmark/outpost/elevator, @@ -187,6 +159,8 @@ au au au +au +au aa aa aa @@ -240,9 +214,11 @@ aa au au au +au +au aa -aT -aT +aY +aY ah an an @@ -285,69 +261,73 @@ an an an ab -aT -aT +aY +aY aa "} (3,1,1) = {" au au au +au +au aa -aT +aY aT ah at at as at -at +vh at at as at -at +vh at at as at -at +vh at at as at -at +vh at at as at -at +vh at at as at -at +vh at at as at -at +vh at at as at at ab -aT -aT +aY +aY aa "} (4,1,1) = {" au au au +au +au aa -aT +aY aT ah aQ @@ -391,16 +371,18 @@ aQ aQ aQ ab -aT -aT +aY +aY aa "} (5,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -444,16 +426,18 @@ aF aF aH ab -aT -aT +aY +aY aa "} (6,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -497,16 +481,18 @@ aF aF aF ab -aT -aT +aY +aY aa "} (7,1,1) = {" au au au +au +au aa -aT +aY ay ah ac @@ -551,15 +537,17 @@ aF ac ab ay -aT +aY aa "} (8,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -604,15 +592,17 @@ aF aF ab aT -aT +aY aa "} (9,1,1) = {" au au au +au +au aa -aT +aY aT ax aF @@ -657,15 +647,17 @@ aF aF ak aT -aT +aY aa "} (10,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -710,15 +702,17 @@ aF aF ab aT -aT +aY aa "} (11,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -763,15 +757,17 @@ aF aF ab aT -aT +aY aa "} (12,1,1) = {" au au au +au +au aa -aT +aY ay ah ac @@ -816,15 +812,17 @@ aF ac ab ay -aT +aY aa "} (13,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -869,15 +867,17 @@ aF aF ab aT -aT +aY aa "} (14,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -922,15 +922,17 @@ aF aF ab aT -aT +aY aa "} (15,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -975,15 +977,17 @@ aF aF ab aT -aT +aY aa "} (16,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1028,15 +1032,17 @@ aF aF ab aT -aT +aY aa "} (17,1,1) = {" au au au +au +au aa -aT +aY ay ah ac @@ -1081,15 +1087,17 @@ aF ac ab ay -aT +aY aa "} (18,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1134,16 +1142,18 @@ aF aF ab aT -aT +aY aa "} (19,1,1) = {" -au -au -au aa -aT -aT +aa +aa +aa +aa +aa +aa +aY ax aF aF @@ -1187,16 +1197,18 @@ aF aF ak aT -aT +aY aa "} (20,1,1) = {" -au -au -au aa -aT -aT +jY +jY +jY +jY +JI +aa +am ah aF aF @@ -1240,16 +1252,18 @@ aF aF ab aT -aT +aY aa "} (21,1,1) = {" -au -au -au aa -aT -aT +jY +jY +jY +jY +jY +aZ +aY ah aF aF @@ -1293,16 +1307,18 @@ aF aF ab aT -aT +aY aa "} (22,1,1) = {" -au -au -au aa -aT -ay +jY +jY +jY +jY +jY +aZ +BE ah ac aF @@ -1346,16 +1362,18 @@ aF ac ab ay -aT +aY aa "} (23,1,1) = {" -au -au -au aa -aT -aT +jY +jY +jY +jY +jY +aZ +aY ah aF aF @@ -1399,16 +1417,18 @@ aF aF ab aT -aT +aY aa "} (24,1,1) = {" -au -au -au aa -aT -aT +jY +jY +jY +jY +jY +aa +aY ah aF aF @@ -1452,16 +1472,18 @@ aF aF ab aT -aT +aY aa "} (25,1,1) = {" -au -au -au aa -aT -aT +aa +aa +aa +aa +aa +aa +aY ah aF aF @@ -1505,15 +1527,17 @@ aF aF ab aT -aT +aY aa "} (26,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1558,16 +1582,18 @@ aF aF ab aT -aT +aY aa "} (27,1,1) = {" au au au +au +au aa -aT -ay +aY +aP ah ac aF @@ -1611,15 +1637,17 @@ aF ac ab ay -aT +aY aa "} (28,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1664,15 +1692,17 @@ aF aF ab aT -aT +aY aa "} (29,1,1) = {" au au au +au +au aa -aT +aY aT ax aF @@ -1717,15 +1747,17 @@ aF aF ak aT -aT +aY aa "} (30,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1770,15 +1802,17 @@ aF aF ab aT -aT +aY aa "} (31,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1823,16 +1857,18 @@ aF aF ab aT -aT +aY aa "} (32,1,1) = {" au au au +au +au aa -aT -ay +aY +aP ah ac aF @@ -1876,15 +1912,17 @@ aF ac ab ay -aT +aY aa "} (33,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1929,15 +1967,17 @@ aF aF ab aT -aT +aY aa "} (34,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -1982,15 +2022,17 @@ aF aF ab aT -aT +aY aa "} (35,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -2035,15 +2077,17 @@ aF aF ab aT -aT +aY aa "} (36,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -2088,16 +2132,18 @@ aF aF ab aT -aT +aY aa "} (37,1,1) = {" au au au +au +au aa -aT -ay +aY +aP ah ac aF @@ -2141,15 +2187,17 @@ aF ac ab ay -aT +aY aa "} (38,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -2194,15 +2242,17 @@ aF aF ab aT -aT +aY aa "} (39,1,1) = {" au au au +au +au aa -aT +aY aT ax aF @@ -2247,15 +2297,17 @@ aF aF ak aT -aT +aY aa "} (40,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -2300,15 +2352,17 @@ aF aF ab aT -aT +aY aa "} (41,1,1) = {" au au au +au +au aa -aT +aY aT ah aF @@ -2353,16 +2407,18 @@ aF aF ab aT -aT +aY aa "} (42,1,1) = {" au au au +au +au aa -aT -ay +aY +aP ah ac aF @@ -2406,14 +2462,16 @@ aF ac ab ay -aT +aY aa "} (43,1,1) = {" au au au -BE +au +au +aa aY aT ah @@ -2459,16 +2517,18 @@ aF aF ab aT -aT +aY aa "} (44,1,1) = {" +au +au +au +au +au aa -aa -aa -aa -aa -am +aY +aT ah aF aF @@ -2512,15 +2572,17 @@ aF aF ab aT -aT +aY aa "} (45,1,1) = {" +au +au +au +au +au aa -jY -jY -JI -aZ +aY aT aC ag @@ -2565,16 +2627,18 @@ ag ag aX aT -aT +aY aa "} (46,1,1) = {" +au +au +au +au +au aa -jY -jY -jY -aZ -aP +aY +aT aT aT aT @@ -2618,66 +2682,70 @@ aT aT aT aT -aT +aY aa "} (47,1,1) = {" +au +au +au +au +au aa -jY -jY -jY -aZ -aT -aT +aY +aY +aY aS -aT -aT -aT -aT -aT -aT -aT -aT -aT +aY +aY +aY +aY +aY +aY +aY +aY +aY aS -aT -aT -aT -aT -aT -aT -aT -aT +aY +aY +aY +aY +aY +aY +aY +aY aS aS -aT -aT -aT -aT -aT -aT -aT -aT +aY +aY +aY +aY +aY +aY +aY +aY aS -aT -aT -aT -aT -aT -aT -aT -aT -aT +aY +aY +aY +aY +aY +aY +aY +aY +aY aS -aT -aT -aT +aY +aY +aY aa "} (48,1,1) = {" -aa -aa -aa +au +au +au +au +au aa aa aa diff --git a/_maps/outpost/hangar/indie_space_56x20.dmm b/_maps/outpost/hangar/indie_space_56x20.dmm index 93842d2587a5..93e20f60ed9e 100644 --- a/_maps/outpost/hangar/indie_space_56x20.dmm +++ b/_maps/outpost/hangar/indie_space_56x20.dmm @@ -10,9 +10,7 @@ /area/hangar) "af" = ( /obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "ag" = ( /turf/closed/indestructible/reinforced, @@ -35,37 +33,26 @@ /obj/structure/marker_beacon{ picked_color = "Teal" }, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "am" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "an" = ( -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ap" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "as" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/tech{ planetary_atmos = 1 }, /area/hangar) @@ -78,83 +65,59 @@ }, /area/hangar) "ay" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/hangar/plasteel, /area/hangar) "aB" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/hangar, /area/hangar) "aC" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aD" = ( /obj/effect/turf_decal/arrows{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aE" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aG" = ( /obj/effect/turf_decal/arrows{ dir = 4 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aI" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aJ" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aK" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aN" = ( -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aP" = ( /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aX" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -178,15 +141,26 @@ planetary_atmos = 1 }, /area/hangar) +"rY" = ( +/obj/effect/landmark/outpost/elevator_machine, +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/turf/open/floor/hangar/plasteel, +/area/hangar) "vM" = ( -/obj/machinery/atmospherics/pipe/simple/general, -/turf/closed/indestructible/reinforced, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/open/floor/hangar/plasteel, /area/hangar) (1,1,1) = {" aZ aZ aZ +aZ +aZ ag ag ag @@ -220,6 +194,8 @@ ag aZ aZ aZ +aZ +aZ ag an an @@ -253,32 +229,34 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ ae ae ai ae -ae +as ae ae ai ae -ae +as ae ae ai ae -ae +as ae ae ai ae ae aC -an +aB an ag "} @@ -286,9 +264,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ ax ax @@ -311,7 +291,7 @@ ax ax ax aC -an +aB an ag "} @@ -319,9 +299,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -344,7 +326,7 @@ aN aN af aC -an +aB an ag "} @@ -352,9 +334,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -377,7 +361,7 @@ aN aN aN aC -an +aB an ag "} @@ -385,6 +369,8 @@ ag aZ aZ aZ +aZ +aZ ag an aG @@ -418,9 +404,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -443,7 +431,7 @@ aN aN aN aC -an +aB an ag "} @@ -451,9 +439,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aI aN aN @@ -476,7 +466,7 @@ aN aN aN aK -an +aB an ag "} @@ -484,9 +474,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -509,7 +501,7 @@ aN aN aN aC -an +aB an ag "} @@ -517,9 +509,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -542,7 +536,7 @@ aN aN aN aC -an +aB an ag "} @@ -550,6 +544,8 @@ ag aZ aZ aZ +aZ +aZ ag an aG @@ -583,9 +579,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -608,7 +606,7 @@ aN aN aN aC -an +aB an ag "} @@ -616,9 +614,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -641,7 +641,7 @@ aN aN aN aC -an +aB an ag "} @@ -649,9 +649,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -674,7 +676,7 @@ aN aN aN aC -an +aB an ag "} @@ -682,9 +684,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -707,7 +711,7 @@ aN aN aN aC -an +aB an ag "} @@ -715,6 +719,8 @@ ag aZ aZ aZ +aZ +aZ ag an aG @@ -748,9 +754,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -773,7 +781,7 @@ aN aN aN aC -an +aB an ag "} @@ -781,9 +789,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aI aN aN @@ -806,7 +816,7 @@ aN aN aN aK -an +aB an ag "} @@ -814,9 +824,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -839,7 +851,7 @@ aN aN aN aC -an +aB an ag "} @@ -847,9 +859,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -872,7 +886,7 @@ aN aN aN aC -an +aB an ag "} @@ -880,6 +894,8 @@ ag aZ aZ aZ +aZ +aZ ag an aG @@ -913,9 +929,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -938,7 +956,7 @@ aN aN aN aC -an +aB an ag "} @@ -946,9 +964,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -971,7 +991,7 @@ aN aN aN aC -an +aB an ag "} @@ -979,9 +999,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1004,7 +1026,7 @@ aN aN aN aC -an +aB an ag "} @@ -1012,9 +1034,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1037,7 +1061,7 @@ aN aN aN aC -an +aB an ag "} @@ -1045,6 +1069,8 @@ ag aZ aZ aZ +aZ +aZ ag an aG @@ -1078,9 +1104,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1103,16 +1131,18 @@ aN aN aN aC -an +aB an ag "} (29,1,1) = {" -aZ -aZ -aZ ag -an +ag +ag +ag +ag +ag +ag an aI aN @@ -1136,17 +1166,19 @@ aN aN aN aK -an +aB an ag "} (30,1,1) = {" -aZ -aZ -aZ ag -an -an +mX +mX +mX +mX +jJ +ag +rY aJ aN aN @@ -1169,16 +1201,18 @@ aN aN aN aC -an +aB an ag "} (31,1,1) = {" -aZ -aZ -aZ ag -an +mX +mX +mX +mX +mX +aj an aJ aN @@ -1202,17 +1236,19 @@ aN aN aN aC -an +aB an ag "} (32,1,1) = {" -aZ -aZ -aZ ag -an -aG +mX +mX +mX +mX +mX +aj +ay aJ al aN @@ -1240,11 +1276,13 @@ an ag "} (33,1,1) = {" -aZ -aZ -aZ ag -an +mX +mX +mX +mX +mX +aj an aJ aN @@ -1268,16 +1306,18 @@ aN aN aN aC -an +aB an ag "} (34,1,1) = {" -aZ -aZ -aZ ag -an +mX +mX +mX +mX +mX +ag an aJ aN @@ -1301,16 +1341,18 @@ aN aN aN aC -an +aB an ag "} (35,1,1) = {" -aZ -aZ -aZ ag -an +ag +ag +ag +ag +ag +ag an aJ aN @@ -1334,7 +1376,7 @@ aN aN aN aC -an +aB an ag "} @@ -1342,9 +1384,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1367,7 +1411,7 @@ aN aN aN aC -an +aB an ag "} @@ -1375,9 +1419,11 @@ ag aZ aZ aZ +aZ +aZ ag an -aG +vM aJ al aN @@ -1408,9 +1454,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1433,7 +1481,7 @@ aN aN aN aC -an +aB an ag "} @@ -1441,9 +1489,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aI aN aN @@ -1466,7 +1516,7 @@ aN aN aN aK -an +aB an ag "} @@ -1474,9 +1524,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1499,7 +1551,7 @@ aN aN aN aC -an +aB an ag "} @@ -1507,9 +1559,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1532,7 +1586,7 @@ aN aN aN aC -an +aB an ag "} @@ -1540,9 +1594,11 @@ ag aZ aZ aZ +aZ +aZ ag an -aG +vM aJ al aN @@ -1573,9 +1629,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1598,7 +1656,7 @@ aN aN aN aC -an +aB an ag "} @@ -1606,9 +1664,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1631,7 +1691,7 @@ aN aN aN aC -an +aB an ag "} @@ -1639,9 +1699,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1664,7 +1726,7 @@ aN aN aN aC -an +aB an ag "} @@ -1672,9 +1734,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1697,7 +1761,7 @@ aN aN aN aC -an +aB an ag "} @@ -1705,9 +1769,11 @@ ag aZ aZ aZ +aZ +aZ ag an -aG +vM aJ al aN @@ -1738,9 +1804,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1763,7 +1831,7 @@ aN aN aN aC -an +aB an ag "} @@ -1771,9 +1839,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aI aN aN @@ -1796,7 +1866,7 @@ aN aN aN aK -an +aB an ag "} @@ -1804,9 +1874,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1829,7 +1901,7 @@ aN aN aN aC -an +aB an ag "} @@ -1837,9 +1909,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1862,7 +1936,7 @@ aN aN aN aC -an +aB an ag "} @@ -1870,9 +1944,11 @@ ag aZ aZ aZ +aZ +aZ ag an -aG +vM aJ al aN @@ -1903,9 +1979,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1928,7 +2006,7 @@ aN aN aN aC -an +aB an ag "} @@ -1936,9 +2014,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1961,7 +2041,7 @@ aN aN aN aC -an +aB an ag "} @@ -1969,9 +2049,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -1994,7 +2076,7 @@ aN aN aN aC -an +aB an ag "} @@ -2002,9 +2084,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -2027,7 +2111,7 @@ aN aN aN aC -an +aB an ag "} @@ -2035,9 +2119,11 @@ ag aZ aZ aZ +aZ +aZ ag an -aG +vM aJ al aN @@ -2068,9 +2154,11 @@ ag aZ aZ aZ +aZ +aZ ag an -an +aB aJ aN aN @@ -2093,7 +2181,7 @@ aN aN aN aC -an +aB an ag "} @@ -2101,9 +2189,11 @@ ag aZ aZ aZ -vM -ay +aZ +aZ +ag an +aB aI aN aN @@ -2126,17 +2216,19 @@ aN aN aN aK -an +aB an ag "} (60,1,1) = {" +aZ +aZ +aZ +aZ +aZ ag -ag -ag -ag -ag -as +an +aB aJ aN aN @@ -2159,17 +2251,19 @@ aN aN aN aC -an +aB an ag "} (61,1,1) = {" +aZ +aZ +aZ +aZ +aZ ag -mX -mX -jJ -aj an +aB ap aE aE @@ -2192,49 +2286,53 @@ aE aE aE am -an +aB an ag "} (62,1,1) = {" +aZ +aZ +aZ +aZ +aZ ag -mX -mX -mX -aj -aB -an -an an +aB +aB +aB +aB aD -an -an -an -an +aB +aB +aB +aB aD -an -an -an -an +aB +aB +aB +aB aD -an -an -an -an +aB +aB +aB +aB aD -an -an -an -an +aB +aB +aB +aB an ag "} (63,1,1) = {" +aZ +aZ +aZ +aZ +aZ ag -mX -mX -mX -aj +an an an an @@ -2263,9 +2361,11 @@ an ag "} (64,1,1) = {" -ag -ag -ag +aZ +aZ +aZ +aZ +aZ ag ag ag diff --git a/_maps/outpost/hangar/indie_space_56x40.dmm b/_maps/outpost/hangar/indie_space_56x40.dmm index 4adf317b8435..c06806acc362 100644 --- a/_maps/outpost/hangar/indie_space_56x40.dmm +++ b/_maps/outpost/hangar/indie_space_56x40.dmm @@ -4,9 +4,7 @@ pixel_y = 25 }, /obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ad" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -26,45 +24,29 @@ /area/hangar) "aj" = ( /obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "am" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ao" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, -/area/hangar) -"ar" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "at" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 +/obj/effect/turf_decal/arrows{ + dir = 4 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "au" = ( /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aw" = ( /obj/effect/turf_decal/arrows{ @@ -75,27 +57,19 @@ }, /area/hangar) "aA" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aD" = ( /obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 + dir = 8 }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aE" = ( /obj/structure/marker_beacon{ picked_color = "Teal" }, -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aG" = ( /turf/open/floor/plasteel/tech{ @@ -109,49 +83,36 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aK" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aM" = ( -/turf/open/floor/plating{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar, /area/hangar) "aN" = ( -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/hangar, /area/hangar) "aO" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aP" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aT" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "aU" = ( /obj/machinery/door/poddoor/multi_tile/four_tile_ver, @@ -164,9 +125,7 @@ /obj/effect/turf_decal/arrows{ dir = 1 }, -/turf/open/floor/plasteel{ - planetary_atmos = 1 - }, +/turf/open/floor/hangar/plasteel, /area/hangar) "ck" = ( /turf/open/floor/plasteel/elevatorshaft{ @@ -174,8 +133,10 @@ }, /area/hangar) "MN" = ( -/obj/machinery/atmospherics/pipe/simple/general, -/turf/closed/indestructible/reinforced, +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, /area/hangar) "Qi" = ( /obj/effect/landmark/outpost/elevator, @@ -183,11 +144,19 @@ planetary_atmos = 1 }, /area/hangar) +"Yz" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) (1,1,1) = {" aV aV aV +aV +aV aH aH aH @@ -241,9 +210,11 @@ aH aV aV aV +aV +aV aH -aN -aN +aA +aA aP ad ad @@ -286,53 +257,55 @@ ad ad ad aT -aN -aN +aA +aA aH "} (3,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aG aG aw aG -aG +Yz aG aG aw aG -aG +Yz aG aG aw aG -aG +Yz aG aG aw aG -aG +Yz aG aG aw aG -aG +Yz aG aG aw aG -aG +Yz aG aG aw aG -aG +Yz aG aG aw @@ -340,15 +313,17 @@ aG aG aT aN -aN +aA aH "} (4,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP ai @@ -393,15 +368,17 @@ ai ai aT aN -aN +aA aH "} (5,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -446,15 +423,17 @@ aM aj aT aN -aN +aA aH "} (6,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -499,16 +478,18 @@ aM aM aT aN -aN +aA aH "} (7,1,1) = {" aV aV aV +aV +aV aH -aN -aD +aA +at aP aE aM @@ -551,16 +532,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (8,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -605,15 +588,17 @@ aM aM aT aN -aN +aA aH "} (9,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN am aM @@ -658,15 +643,17 @@ aM aM ao aN -aN +aA aH "} (10,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -711,15 +698,17 @@ aM aM aT aN -aN +aA aH "} (11,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -764,16 +753,18 @@ aM aM aT aN -aN +aA aH "} (12,1,1) = {" aV aV aV +aV +aV aH -aN -aD +aA +at aP aE aM @@ -816,16 +807,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (13,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -870,15 +863,17 @@ aM aM aT aN -aN +aA aH "} (14,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -923,15 +918,17 @@ aM aM aT aN -aN +aA aH "} (15,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -976,15 +973,17 @@ aM aM aT aN -aN +aA aH "} (16,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1029,16 +1028,18 @@ aM aM aT aN -aN +aA aH "} (17,1,1) = {" aV aV aV +aV +aV aH -aN -aD +aA +at aP aE aM @@ -1081,16 +1082,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (18,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1135,15 +1138,17 @@ aM aM aT aN -aN +aA aH "} (19,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN am aM @@ -1188,15 +1193,17 @@ aM aM ao aN -aN +aA aH "} (20,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1241,15 +1248,17 @@ aM aM aT aN -aN +aA aH "} (21,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1294,16 +1303,18 @@ aM aM aT aN -aN +aA aH "} (22,1,1) = {" aV aV aV +aV +aV aH -aN -aD +aA +at aP aE aM @@ -1346,16 +1357,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (23,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1400,15 +1413,17 @@ aM aM aT aN -aN +aA aH "} (24,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1453,15 +1468,17 @@ aM aM aT aN -aN +aA aH "} (25,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1506,15 +1523,17 @@ aM aM aT aN -aN +aA aH "} (26,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1559,16 +1578,18 @@ aM aM aT aN -aN +aA aH "} (27,1,1) = {" aV aV aV +aV +aV aH -aN -aD +aA +at aP aE aM @@ -1611,16 +1632,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (28,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -1665,20 +1688,22 @@ aM aM aT aN -aN +aA aH "} (29,1,1) = {" -aV -aV -aV aH -aN -aN -am -aM -aM -aM +aH +aH +aH +aH +aH +aH +aA +am +aM +aM +aM aM aM aM @@ -1718,16 +1743,18 @@ aM aM ao aN -aN +aA aH "} (30,1,1) = {" -aV -aV -aV aH -aN -aN +ck +ck +ck +ck +Qi +aH +ab aP aM aM @@ -1771,16 +1798,18 @@ aM aM aT aN -aN +aA aH "} (31,1,1) = {" -aV -aV -aV aH -aN -aN +ck +ck +ck +ck +ck +MN +aA aP aM aM @@ -1824,16 +1853,18 @@ aM aM aT aN -aN +aA aH "} (32,1,1) = {" -aV -aV -aV aH -aN -aD +ck +ck +ck +ck +ck +MN +aA aP aE aM @@ -1876,17 +1907,19 @@ aM aM aE aT -aD -aN +at +aA aH "} (33,1,1) = {" -aV -aV -aV aH -aN -aN +ck +ck +ck +ck +ck +MN +aA aP aM aM @@ -1930,16 +1963,18 @@ aM aM aT aN -aN +aA aH "} (34,1,1) = {" -aV -aV -aV aH -aN -aN +ck +ck +ck +ck +ck +aH +aA aP aM aM @@ -1983,16 +2018,18 @@ aM aM aT aN -aN +aA aH "} (35,1,1) = {" -aV -aV -aV aH -aN -aN +aH +aH +aH +aH +aH +aH +aA aP aM aM @@ -2036,15 +2073,17 @@ aM aM aT aN -aN +aA aH "} (36,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2089,15 +2128,17 @@ aM aM aT aN -aN +aA aH "} (37,1,1) = {" aV aV aV +aV +aV aH -aN +aA aD aP aE @@ -2141,16 +2182,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (38,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2195,15 +2238,17 @@ aM aM aT aN -aN +aA aH "} (39,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN am aM @@ -2248,15 +2293,17 @@ aM aM ao aN -aN +aA aH "} (40,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2301,15 +2348,17 @@ aM aM aT aN -aN +aA aH "} (41,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2354,15 +2403,17 @@ aM aM aT aN -aN +aA aH "} (42,1,1) = {" aV aV aV +aV +aV aH -aN +aA aD aP aE @@ -2406,16 +2457,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (43,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2460,15 +2513,17 @@ aM aM aT aN -aN +aA aH "} (44,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2513,15 +2568,17 @@ aM aM aT aN -aN +aA aH "} (45,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2566,15 +2623,17 @@ aM aM aT aN -aN +aA aH "} (46,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2619,15 +2678,17 @@ aM aM aT aN -aN +aA aH "} (47,1,1) = {" aV aV aV +aV +aV aH -aN +aA aD aP aE @@ -2671,16 +2732,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (48,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2725,15 +2788,17 @@ aM aM aT aN -aN +aA aH "} (49,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN am aM @@ -2778,15 +2843,17 @@ aM aM ao aN -aN +aA aH "} (50,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2831,15 +2898,17 @@ aM aM aT aN -aN +aA aH "} (51,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2884,15 +2953,17 @@ aM aM aT aN -aN +aA aH "} (52,1,1) = {" aV aV aV +aV +aV aH -aN +aA aD aP aE @@ -2936,16 +3007,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (53,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -2990,15 +3063,17 @@ aM aM aT aN -aN +aA aH "} (54,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -3043,15 +3118,17 @@ aM aM aT aN -aN +aA aH "} (55,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -3096,15 +3173,17 @@ aM aM aT aN -aN +aA aH "} (56,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -3149,15 +3228,17 @@ aM aM aT aN -aN +aA aH "} (57,1,1) = {" aV aV aV +aV +aV aH -aN +aA aD aP aE @@ -3201,16 +3282,18 @@ aM aM aE aT -aD -aN +at +aA aH "} (58,1,1) = {" aV aV aV +aV +aV aH -aN +aA aN aP aM @@ -3255,15 +3338,17 @@ aM aM aT aN -aN +aA aH "} (59,1,1) = {" aV aV aV -MN -at +aV +aV +aH +aA aN am aM @@ -3308,16 +3393,18 @@ aM aM ao aN -aN +aA aH "} (60,1,1) = {" +aV +aV +aV +aV +aV aH -aH -aH -aH -aH -ab +aA +aN aP aM aM @@ -3361,14 +3448,16 @@ aM aM aT aN -aN +aA aH "} (61,1,1) = {" +aV +aV +aV +aV +aV aH -ck -ck -Qi aA aN aK @@ -3414,16 +3503,18 @@ aO aO aI aN -aN +aA aH "} (62,1,1) = {" +aV +aV +aV +aV +aV aH -ck -ck -ck aA -ar +aN aN aN aN @@ -3467,66 +3558,70 @@ aN aN aN aN -aN +aA aH "} (63,1,1) = {" +aV +aV +aV +aV +aV aH -ck -ck -ck aA -aN -aN +aA +aA au -aN -aN -aN -aN -aN -aN -aN -aN -aN +aA +aA +aA +aA +aA +aA +aA +aA +aA au -aN -aN -aN -aN -aN -aN -aN -aN +aA +aA +aA +aA +aA +aA +aA +aA au au -aN -aN -aN -aN -aN -aN -aN -aN +aA +aA +aA +aA +aA +aA +aA +aA au -aN -aN -aN -aN -aN -aN -aN -aN -aN +aA +aA +aA +aA +aA +aA +aA +aA +aA au -aN -aN -aN +aA +aA +aA aH "} (64,1,1) = {" -aH -aH -aH +aV +aV +aV +aV +aV aH aH aH diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm index 4da00eb4c972..897d24333cb1 100644 --- a/_maps/outpost/indie_space.dmm +++ b/_maps/outpost/indie_space.dmm @@ -1,4 +1,21 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 9 + }, +/mob/living/simple_animal/hostile/cockroach, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"ad" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "ag" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -27,19 +44,19 @@ /turf/open/floor/plasteel/tech, /area/outpost/cargo/office) "ai" = ( -/obj/structure/flora/grass/jungle, -/turf/open/floor/grass/ship/jungle, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "aq" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 10 +/obj/structure/table, +/obj/machinery/light/small/directional/west, +/obj/item/clothing/under/shorts/cookjorts{ + pixel_y = 12; + pixel_x = 9 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "ar" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -61,25 +78,19 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "au" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/modglass{ - pixel_y = 1; - pixel_x = -6 - }, -/obj/item/reagent_containers/food/drinks/modglass{ - pixel_y = 5; - pixel_x = 5 +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "aw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/machinery/camera/autoname{ + dir = 1 + }, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 8 }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "aB" = ( @@ -108,75 +119,74 @@ /turf/closed/indestructible/reinforced, /area/outpost/crew/library) "aM" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/structure/table, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 - }, -/obj/effect/spawner/random/entertainment/plushie{ - pixel_x = 16; - pixel_y = 4 +/obj/machinery/cryopod, +/obj/effect/turf_decal/techfloor{ + dir = 1 }, -/obj/machinery/computer/cryopod/directional/north, -/obj/item/folder{ - pixel_x = -5; - pixel_y = 2 +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/crew/cryo) +"aP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ - icon_state = "2-4" + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/outpost/crew/cryo) -"aP" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 6 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"aS" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"aQ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"aR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"aS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-4" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "aU" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"aX" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/black, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"aX" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) "aZ" = ( /obj/structure/chair{ dir = 8 @@ -187,43 +197,88 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) -"bc" = ( -/obj/structure/rack, -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/glass/rag, -/obj/item/razor, -/obj/item/plunger, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) -"bi" = ( -/obj/structure/railing{ - dir = 1 +"bb" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 10 }, -/obj/machinery/computer/electrolyzer_console{ - pixel_y = -18; - density = 0; - dir = 1 +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"bc" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -14 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/structure/mirror{ + pixel_x = -25 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/button/door{ + pixel_y = -21; + dir = 1; + pixel_x = 9; + name = "door lock"; + id = "b1"; + specialfunctions = 4; + normaldoorcontrol = 1 + }, +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) +"be" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"bh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"bi" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/vacant_rooms) "bn" = ( /obj/structure/closet/crate/trashcart, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/outpost/maintenance/fore) "bq" = ( -/obj/structure/chair/pew/left{ +/obj/structure/urinal{ + dir = 8; + pixel_x = 18 + }, +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 6 + }, +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) +"br" = ( +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 9 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/hallway/port) "bs" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -240,6 +295,25 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) +"bt" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"bv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/syringe/contraband/morphine{ + pixel_y = 6; + pixel_x = -3 + }, +/obj/item/reagent_containers/pill/floorpill{ + pixel_x = 4; + pixel_y = 3 + }, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "bz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -263,6 +337,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) +"bI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "bJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -274,18 +354,27 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/central) "bL" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/structure/sign/poster/random{ - pixel_x = -28 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"bN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"bP" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "bS" = ( /obj/effect/spawner/random/trash/grille_or_waste, /obj/effect/turf_decal/corner_techfloor_grid{ @@ -301,6 +390,12 @@ /area/outpost/maintenance/fore) "bW" = ( /obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 10 + }, /turf/open/floor/plasteel, /area/outpost/security) "bY" = ( @@ -310,40 +405,32 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) "ca" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "outpost1" +/obj/structure/crate_shelf, +/obj/effect/turf_decal/borderfloor, +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/cargo) "cc" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/machinery/mineral/processing_unit{ + output_dir = 4; + input_dir = 2 }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/platform/ship_two/corner, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"cg" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/black{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"cg" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "ci" = ( /obj/effect/spawner/random/trash/decal, @@ -352,64 +439,74 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "cl" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/effect/turf_decal/corner/opaque/black{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/outpost/hallway/central) "cm" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/effect/turf_decal/box, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "cq" = ( /turf/closed/indestructible/reinforced, /area/outpost/maintenance/central) "cr" = ( -/obj/structure/railing/corner{ - dir = 1 - }, /obj/effect/turf_decal/industrial/loading, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "cs" = ( -/obj/structure/flora/junglebush, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/central) +/obj/structure/crate_shelf, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, +/area/outpost/cargo) "cu" = ( /obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/corner/opaque/red{ +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/security) -"cG" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +"cA" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"cB" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/siding/thinplating/dark/corner, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 1 +/obj/structure/sign/directions/supply{ + dir = 1; + pixel_y = 0; + pixel_x = 28 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/structure/sign/directions/security{ + pixel_y = -6; + pixel_x = 28; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"cG" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/closet/crate/trashcart, /turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/area/outpost/hallway/central) "cI" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -417,10 +514,23 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "cK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/closed/indestructible/reinforced, -/area/outpost/maintenance/central) +/obj/effect/turf_decal/borderfloor{ + dir = 9 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, +/area/outpost/cargo) +"cL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "cO" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -454,12 +564,31 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "cV" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 8 + }, /turf/open/floor/plating, -/area/outpost/cargo/office) +/area/outpost/engineering/atmospherics) "cX" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 10 + }, /turf/open/floor/plasteel, /area/outpost/security) +"dc" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) +"de" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "dg" = ( /obj/structure/railing{ dir = 4 @@ -473,13 +602,29 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "di" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 6 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/machinery/firealarm/directional/south, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"dj" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "dl" = ( /obj/effect/spawner/random/trash/decal, /obj/effect/turf_decal/steeldecal/steel_decals7{ @@ -520,9 +665,9 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "dD" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/outpost/crew/janitor) "dK" = ( @@ -548,9 +693,19 @@ /area/outpost/maintenance/central) "dL" = ( /obj/structure/closet/secure_closet/armory3, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, /area/outpost/security) +"dM" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "dN" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -559,18 +714,13 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "dO" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/light/dim/directional/west, -/obj/machinery/camera/autoname{ - dir = 6 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/structure/railing/thin{ dir = 6 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "dP" = ( /obj/structure/chair, /obj/item/radio/intercom/directional/north, @@ -590,49 +740,67 @@ /obj/effect/decal/cleanable/chem_pile, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"dS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "dT" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, /turf/closed/indestructible/reinforced, /area/outpost/maintenance/fore) -"dU" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/light/dim/directional/east, -/obj/machinery/camera/autoname, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 10 - }, -/obj/item/reagent_containers/food/drinks/dry_ramen, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/central) "dW" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/steeldecal/steel_decals9, -/obj/effect/turf_decal/steeldecal/steel_decals9{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) "dZ" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 +/obj/structure/platform/ship_two{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 6 }, -/turf/open/floor/plasteel/patterned, +/obj/effect/turf_decal/industrial/caution{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) +"ed" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/syringe/contraband/morphine{ + pixel_y = 3; + pixel_x = 3 + }, +/obj/item/reagent_containers/pill/floorpill{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/flashlight/lamp/green{ + pixel_x = 8; + pixel_y = -10 + }, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "ee" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -643,30 +811,33 @@ icon_state = "wood-broken4" }, /area/outpost/crew/bar) +"eg" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "ei" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 + dir = 6 }, -/obj/effect/turf_decal/industrial/stand_clear{ +/obj/effect/turf_decal/corner_steel_grid/full{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "em" = ( /turf/closed/indestructible/reinforced, /area/outpost/external) "eq" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/sign/poster/random{ + pixel_x = 28 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, +/obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, /area/outpost/hallway/port) "et" = ( @@ -678,10 +849,20 @@ /turf/open/floor/wood, /area/outpost/crew/library) "ev" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"ex" = ( +/obj/item/reagent_containers/syringe{ + pixel_y = 7; + pixel_x = 4 + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "ey" = ( /obj/machinery/door/firedoor/closed, /obj/structure/barricade/wooden/crude, @@ -709,30 +890,30 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "eE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 4 +/obj/effect/mob_spawn/human/corpse/charredskeleton{ + name = "Marv"; + mob_name = "Marv" }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/obj/item/stack/cable_coil/cut/yellow, +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/plating/asteroid, +/area/outpost/external) "eG" = ( /obj/structure/cable/yellow{ - icon_state = "2-4" + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/brown/full, -/turf/open/floor/plasteel/patterned, /area/outpost/cargo) "eQ" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "1-8" }, -/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "eU" = ( @@ -742,13 +923,22 @@ /obj/effect/turf_decal/corner_techfloor_grid/diagonal, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"fd" = ( -/obj/machinery/conveyor/inverted{ - id = "outpost1"; - dir = 10 +"eX" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"eY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"fd" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ + dir = 8 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/cargo) +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "fh" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -775,14 +965,21 @@ /turf/open/floor/plasteel/tech, /area/outpost/security) "fi" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/storage) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"fj" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/hallway/central) "fk" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -808,6 +1005,11 @@ /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"fs" = ( +/obj/structure/chair/bench/beige/directional/south, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "fw" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -822,21 +1024,12 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "fE" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/structure/closet/secure_closet/freezer/gulag_fridge, +/obj/item/reagent_containers/pill/floorpill, +/obj/item/reagent_containers/pill/floorpill, +/obj/item/reagent_containers/pill/floorpill, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "fG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -847,29 +1040,60 @@ /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) "fI" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/glass/rag{ + pixel_y = 12; + pixel_x = -5 + }, +/obj/item/reagent_containers/glass/rag{ + pixel_y = 6; + pixel_x = 4 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/plasteel, +/area/outpost/medical) "fK" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/outpost/crew/bar) -"fN" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"fM" = ( +/obj/structure/disposalpipe/segment{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"fN" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/vacant_rooms) "fP" = ( /obj/structure/sign/poster/random{ pixel_x = 28 @@ -886,84 +1110,113 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) +"fS" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/outpost/maintenance/starboard) +"fT" = ( +/obj/item/stack/tile/carpet{ + pixel_x = -7; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor5" + }, +/mob/living/simple_animal/mouse/white, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"fY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "fZ" = ( /obj/structure/chair, /obj/effect/landmark/ert_outpost_spawn, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "ga" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/structure/closet/crate/trashcart/laundry, +/turf/open/floor/plasteel/patterned, +/area/outpost/maintenance/central) +"gc" = ( +/obj/structure/railing/wood{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"gb" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/large, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) "gf" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/west, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "gg" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, /obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 8 + }, /turf/open/floor/plasteel, /area/outpost/security) +"gn" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/cargo/office) "go" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, -/obj/machinery/newscaster/directional/north, /turf/open/floor/plasteel, /area/outpost/hallway/port) "gq" = ( /turf/closed/indestructible/reinforced, /area/outpost/crew/janitor) -"gr" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) "gt" = ( /obj/structure/rack, /obj/item/skub, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters, +/turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) +"gu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/sign/directions/medical{ + pixel_x = 28; + dir = 2; + pixel_y = -10 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "gz" = ( -/obj/effect/spawner/random/vending/cola, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 +/obj/effect/decal/cleanable/crayon{ + icon_state = "danger" }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel, /area/outpost/hallway/central) "gA" = ( /obj/structure/cable/yellow{ @@ -977,8 +1230,49 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "gC" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/crayon{ + icon_state = "!"; + pixel_x = 9 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -25; + pixel_x = -7 + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = 11; + pixel_x = -14 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "f"; + pixel_y = 0; + pixel_x = -19 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "n" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "u"; + pixel_y = -5; + pixel_x = -10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) "gE" = ( /obj/item/radio/intercom/directional/east, @@ -990,7 +1284,7 @@ dir = 4; id = "outpost1" }, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) "gP" = ( /obj/structure/filingcabinet/double, @@ -1005,35 +1299,19 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "gT" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/platform/ship_two{ + dir = 1 }, -/turf/open/floor/plasteel/patterned, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) "gU" = ( /obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) -"gW" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) "gZ" = ( -/obj/effect/turf_decal/industrial/caution, -/obj/machinery/light/dim/directional/south, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 10 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "hb" = ( /obj/effect/turf_decal/industrial/caution, /obj/structure/cable/yellow{ @@ -1044,11 +1322,27 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"hg" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 +"hd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/structure/disposaloutlet{ +/turf/open/floor/plating, +/area/outpost/hallway/central) +"hf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"hg" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/disposaloutlet{ dir = 1 }, /obj/machinery/conveyor/auto{ @@ -1059,18 +1353,19 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "hj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "hk" = ( /obj/structure/frame, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"ho" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "hq" = ( /turf/open/floor/plating/asteroid, /area/outpost/external) @@ -1079,8 +1374,17 @@ dir = 8 }, /obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/central) +"hw" = ( +/obj/item/reagent_containers/syringe{ + pixel_y = -2; + pixel_x = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "hz" = ( /obj/structure/cable/yellow{ icon_state = "0-2" @@ -1089,21 +1393,15 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "hA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable/yellow, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/camera/autoname{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 +/obj/machinery/light/dim/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) "hD" = ( /obj/structure/disposalpipe/trunk/multiz{ @@ -1111,17 +1409,34 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"hJ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +"hI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"hJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/sign/poster/random{ + pixel_x = -28 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, /turf/open/floor/plasteel, /area/outpost/hallway/port) "hK" = ( @@ -1131,22 +1446,14 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "hM" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/light/dim/directional/north, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 6 - }, -/obj/machinery/camera/autoname{ - dir = 9 +/obj/structure/closet/crate, +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"hO" = ( -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/central) +"hP" = ( +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "hS" = ( /obj/item/radio/intercom/directional/east, /obj/structure/table/wood, @@ -1161,27 +1468,24 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "hW" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"hX" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 4 +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom Stall"; + id_tag = "b1" }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"hX" = ( +/obj/structure/chair/sofa/brown/old/right/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "hY" = ( /obj/structure/closet/crate/trashcart, /turf/open/floor/plating, @@ -1192,20 +1496,25 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "ib" = ( -/obj/structure/reagent_dispensers/beerkeg, -/obj/effect/turf_decal/corner/transparent/brown/full, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, /area/outpost/crew/bar) "ic" = ( -/obj/structure/flora/grass/jungle, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = 6; + pixel_x = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/item/pen, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) "id" = ( /obj/machinery/holopad/emergency/bar, /obj/effect/decal/cleanable/dirt/dust, @@ -1230,26 +1539,27 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) +"il" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "ip" = ( /turf/open/floor/plating, /area/outpost/maintenance/fore) -"iq" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/wood, -/area/outpost/crew/bar) "ir" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals9, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"is" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "it" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1273,11 +1583,8 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "iG" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/closed/indestructible/rock, +/area/outpost/maintenance/starboard) "iH" = ( /obj/machinery/light/dim/directional/east, /obj/effect/decal/cleanable/dirt/dust, @@ -1299,6 +1606,35 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) +"iK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"iL" = ( +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"iN" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "iQ" = ( /obj/item/trash/can/food/beans{ pixel_x = 5; @@ -1322,27 +1658,66 @@ /area/outpost/maintenance/central) "iV" = ( /obj/machinery/door/firedoor/heavy, -/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, /turf/open/floor/plating, /area/outpost/vacant_rooms/office) "iY" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/modglass{ + pixel_y = 1; + pixel_x = -6 + }, +/obj/item/reagent_containers/food/drinks/modglass{ + pixel_y = 5; + pixel_x = 5 + }, /turf/open/floor/wood, /area/outpost/crew/bar) +"jb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "jd" = ( -/obj/effect/turf_decal/ihejirika_small/right, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/obj/structure/chair/bench/beige/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "je" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, -/turf/open/floor/plating, +/obj/structure/chair/comfy/orange/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) +"jf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/firealarm/directional/north, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "jg" = ( /obj/structure/rack, /obj/machinery/light/dim/directional/west, /obj/item/reagent_containers/food/drinks/waterbottle, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "jj" = ( /obj/machinery/light/dim/directional/east, @@ -1363,10 +1738,7 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "js" = ( -/obj/effect/turf_decal/box/corners, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/patterned, /area/outpost/cargo) "jx" = ( /obj/item/trash/can/food/beans{ @@ -1377,29 +1749,45 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"jC" = ( -/obj/structure/disposalpipe/segment{ +"jz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/central) -"jH" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/item/radio/intercom/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 +/turf/open/floor/plating, +/area/outpost/hallway/central) +"jC" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"jD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/newscaster/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"jE" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "jI" = ( /obj/machinery/door/airlock{ @@ -1413,11 +1801,20 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/crew/bar) -"jK" = ( -/obj/structure/railing{ +"jJ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"jK" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/railing/thin{ + dir = 8 + }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "jL" = ( @@ -1428,23 +1825,42 @@ /obj/effect/turf_decal/industrial/warning{ dir = 8 }, +/obj/structure/sign/directions/supply{ + pixel_y = 26; + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = 32 + }, +/obj/structure/sign/directions/medical{ + pixel_y = 38; + dir = 2 + }, +/obj/structure/sign/directions/service{ + pixel_y = 20; + dir = 8 + }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "jM" = ( -/obj/effect/spawner/random/chicken, -/turf/open/floor/ship/dirt, -/area/outpost/hallway/port) -"jO" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) +"jO" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) "jR" = ( /obj/structure/chair/stool/bar{ @@ -1456,6 +1872,14 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) +"jS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"jT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/maintenance/central) "jU" = ( /obj/structure/table/wood, /obj/machinery/computer/bookmanagement, @@ -1463,14 +1887,20 @@ /turf/open/floor/wood, /area/outpost/crew/library) "kb" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/camera/autoname{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "kd" = ( /obj/structure/cable/yellow{ @@ -1479,17 +1909,26 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "kh" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 }, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey, +/obj/machinery/computer/cryopod/retro/directional/west, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"kl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, /turf/open/floor/plasteel, -/area/outpost/crew/cryo) +/area/outpost/hallway/central) "km" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/confetti, @@ -1499,11 +1938,13 @@ /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/central) "kx" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/airalarm/directional/west, /turf/open/floor/plating, -/area/outpost/maintenance/central) +/area/outpost/engineering/atmospherics) "ky" = ( /obj/structure/sign/painting/library{ pixel_y = -26 @@ -1513,21 +1954,24 @@ /turf/open/floor/wood, /area/outpost/crew/library) "kA" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/industrial/caution, +/obj/structure/noticeboard{ + name = "refinery notice board"; + dir = 8; + pixel_y = 0; + pixel_x = 26 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "kE" = ( /obj/machinery/light/small/directional/south, /obj/structure/disposalpipe/segment{ @@ -1540,38 +1984,56 @@ /obj/item/shovel/spoon, /turf/open/floor/plating/asteroid, /area/outpost/external) -"kM" = ( +"kK" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "0-8" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"kQ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/south, +/obj/structure/cable/yellow, +/obj/structure/grille/indestructable, +/obj/effect/turf_decal/corner_techfloor_gray/full{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) +"kL" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"kM" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"kN" = ( +/obj/structure/chair/stool/bar{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"kQ" = ( +/obj/machinery/light/dim/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) "kR" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "kT" = ( /obj/machinery/mineral/processing_unit_console{ pixel_y = 20; @@ -1594,28 +2056,46 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"kV" = ( +/obj/item/stack/tile/carpet, +/obj/structure/railing/thin/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "la" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/holopad/emergency/janitor, -/obj/effect/turf_decal/trimline/opaque/purple/filled, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/outpost/crew/janitor) "lb" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) "lh" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/structure/barricade/wooden/crude, +/turf/closed/indestructible/rock, +/area/outpost/external) +"li" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/turf_decal/floordetail/tiled, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, /turf/open/floor/plasteel, /area/outpost/hallway/central) "lk" = ( @@ -1630,6 +2110,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"ll" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 8 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "lo" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -1658,43 +2144,32 @@ /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) "ls" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/structure/railing/thin{ + dir = 9 }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel, +/obj/machinery/conveyor_switch{ + id = "outpost3"; + layer = 3.11; + pixel_y = 8; + pixel_x = -9 + }, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "lt" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/door/window{ - req_access = list("101") - }, -/obj/machinery/door/window{ - req_access = list("101"); - dir = 1 - }, -/obj/effect/turf_decal/floordetail/tiled, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/tech, +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, /area/outpost/security) "lw" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "lx" = ( /obj/machinery/light/small/directional/north, @@ -1702,15 +2177,22 @@ /obj/effect/turf_decal/steeldecal/steel_decals_central2, /turf/open/floor/plating, /area/outpost/maintenance/central) -"lA" = ( -/obj/structure/flora/grass/jungle, -/obj/effect/spawner/random/chicken, -/turf/open/floor/grass/ship/jungle, +"ly" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, /area/outpost/hallway/central) +"lA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "lB" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/central) "lE" = ( /obj/structure/cable/yellow{ @@ -1738,19 +2220,63 @@ /turf/open/floor/wood, /area/outpost/crew/library) "lJ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/wood/corner, +/obj/item/kirbyplants{ + icon_state = "plant-02"; + pixel_y = 18; + pixel_x = -11 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "lM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/steeldecal/steel_decals9, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/maintenance{ + req_access = list("101") + }, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/plating, -/area/outpost/maintenance/fore) +/area/outpost/engineering/atmospherics) +"lO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/sign/directions/service{ + dir = 8; + pixel_x = -28 + }, +/obj/structure/sign/directions/supply{ + pixel_y = -6; + pixel_x = -28; + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = 6; + pixel_x = -28 + }, +/obj/structure/sign/directions/medical{ + pixel_y = -12; + pixel_x = -28; + dir = 2 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "lX" = ( /obj/structure/rack, /obj/effect/turf_decal/steeldecal/steel_decals_central2{ @@ -1763,11 +2289,12 @@ dir = 4 }, /obj/machinery/camera/autoname, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, /obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, /area/outpost/security) "mb" = ( /obj/structure/cable/yellow{ @@ -1794,12 +2321,13 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "mf" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) +"mg" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/crew/cryo) "mk" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -1814,29 +2342,31 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/storage) +"mo" = ( +/obj/machinery/washing_machine, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "mp" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, +/obj/effect/decal/cleanable/glass/strange, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "1-10" }, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) +"mq" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/structure/disposalpipe/junction{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/hallway/port) "mr" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/disposalpipe/segment, @@ -1847,34 +2377,40 @@ /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) "ms" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/sign/directions/supply{ - pixel_y = 21; +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 - }, /turf/open/floor/plasteel, /area/outpost/hallway/central) "mv" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/kittyears_or_rabbitears, /obj/effect/decal/cleanable/wrapping, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) -"mA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" +"mx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/sign/number/random, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/obj/item/radio/intercom/directional/north, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) +"mA" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "mB" = ( /obj/machinery/door/firedoor/closed, /obj/structure/barricade/wooden/crude, @@ -1894,6 +2430,25 @@ "mC" = ( /turf/open/space/basic, /area/space) +"mG" = ( +/obj/structure/closet/crate/bin{ + pixel_y = 0 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/insectguts, +/obj/item/reagent_containers/syringe{ + pixel_y = -7; + pixel_x = -1 + }, +/obj/item/reagent_containers/syringe{ + pixel_y = 1 + }, +/obj/item/reagent_containers/syringe{ + pixel_y = -6; + pixel_x = 9 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "mJ" = ( /obj/structure/chair/wood, /obj/structure/cable/yellow{ @@ -1925,11 +2480,13 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "mN" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/railing/thin, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "mP" = ( @@ -1960,11 +2517,31 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 +/obj/effect/turf_decal/corner/opaque/black{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 9 }, /turf/open/floor/plasteel, /area/outpost/security) +"mZ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "nb" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1975,11 +2552,20 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "nc" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/machinery/shower{ + dir = 8; + desc = "An old shower. It looks rusted." + }, +/obj/structure/toilet{ + pixel_y = 13; + pixel_x = -9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/hallway/central) "nd" = ( /obj/structure/chair/office{ dir = 1 @@ -2006,24 +2592,29 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "nq" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, -/turf/open/floor/plating, -/area/outpost/vacant_rooms) +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "nt" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/black, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "ny" = ( /obj/structure/railing{ @@ -2036,43 +2627,29 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "nz" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/cryopod{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, /area/outpost/crew/cryo) "nK" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel, +/area/outpost/medical) "nL" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/effect/spawner/random/vending/snack, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/turf/open/floor/plasteel/dark, +/area/outpost/crew/library) "nM" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -2098,9 +2675,14 @@ /turf/open/floor/wood, /area/outpost/crew/library) "nU" = ( -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/structure/railing/thin{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "nY" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -2119,32 +2701,23 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "oa" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/siding/wood/corner, -/obj/item/kirbyplants{ - icon_state = "plant-02"; - pixel_y = 18; - pixel_x = -11 +/obj/structure/chair/comfy/orange/directional/south, +/obj/effect/turf_decal/siding/wood, +/obj/structure/sign/poster/random{ + pixel_y = 30 }, -/turf/open/floor/wood, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "ob" = ( -/obj/effect/turf_decal/corner/opaque/red{ +/obj/effect/turf_decal/spline/fancy/opaque/grey, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 4 }, -/obj/effect/turf_decal/spline/fancy/opaque/grey, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/security) "od" = ( -/obj/machinery/shower{ - pixel_y = 17 - }, -/obj/effect/decal/cleanable/food/pie_smudge, -/obj/effect/turf_decal/borderfloor/full, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/floordetail/pryhole, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "og" = ( /obj/machinery/atmospherics/pipe/simple/multiz{ pixel_y = 1; @@ -2160,7 +2733,24 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"om" = ( +"oh" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"ol" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/outpost/maintenance/starboard) +"om" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -2168,13 +2758,14 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "on" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "op" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -2185,13 +2776,33 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "or" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/rilena/tali{ + pixel_y = -30 + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"ou" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"ov" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) "ow" = ( /obj/structure/cable/yellow{ @@ -2202,6 +2813,11 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) +"oy" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "oK" = ( /obj/machinery/door/airlock/public{ id_tag = "out1" @@ -2219,33 +2835,58 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/storage) -"oN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +"oL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"oM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plating, -/area/outpost/maintenance/fore) -"oQ" = ( -/obj/effect/turf_decal/corner/opaque/red{ +/area/outpost/hallway/central) +"oN" = ( +/obj/structure/chair/bench/beige/directional/south, +/obj/effect/turf_decal/siding/wood{ dir = 8 }, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"oQ" = ( /obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/outpost/security) "oS" = ( +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 5 + }, /obj/effect/turf_decal/industrial/hatch/yellow, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) "oT" = ( -/obj/structure/chair/pew/right{ - dir = 4 +/obj/effect/turf_decal/industrial/warning{ + dir = 5 }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 9 +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" }, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/cargo) "oU" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -2268,6 +2909,25 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/security) +"oY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/crowbar{ + pixel_y = 7; + pixel_x = 6 + }, +/obj/item/cigbutt/roach, +/obj/effect/decal/cleanable/ash, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"oZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "pb" = ( /obj/structure/chair/stool/bar{ dir = 1; @@ -2283,59 +2943,80 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) "ph" = ( -/turf/open/floor/ship/dirt/dark, -/area/outpost/hallway/port) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/outpost/hallway/central) "pj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 4 }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "pl" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 5 + dir = 4 }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "pm" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/decal/cleanable/crayon{ + icon_state = "danger" }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/crayon{ + icon_state = "!"; + pixel_x = 14; + pixel_y = 5 + }, +/turf/open/floor/plating, /area/outpost/hallway/central) "pn" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 }, /obj/structure/holosign/barrier/infinite{ max_integrity = 500 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) +"po" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "pp" = ( /obj/item/reagent_containers/pill/floorpill, /turf/open/floor/plating, /area/outpost/maintenance/fore) "pr" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) "pt" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -2349,6 +3030,15 @@ }, /turf/open/floor/wood, /area/outpost/crew/library) +"py" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "pA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2359,22 +3049,14 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) +"pB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) "pC" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/maintenance{ - req_access = list("101") - }, -/turf/open/floor/plasteel/tech, +/obj/structure/chair/bench/beige/directional/north, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "pF" = ( /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ @@ -2392,6 +3074,23 @@ /obj/item/canvas/twentythreeXtwentythree, /turf/open/floor/wood, /area/outpost/crew/library) +"pL" = ( +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"pM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) +"pO" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/security) "pQ" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -2405,10 +3104,10 @@ /obj/item/kirbyplants{ icon_state = "plant-22" }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "qb" = ( /obj/structure/cable/yellow{ @@ -2427,11 +3126,39 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"qe" = ( +/obj/structure/railing/thin{ + dir = 4 + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "qg" = ( /obj/structure/chair/sofa/brown/left/directional/east, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) +"qh" = ( +/obj/structure/table, +/obj/item/pizzabox/vegetable{ + pixel_y = 10 + }, +/obj/item/flashlight/lamp/green{ + pixel_x = -19; + pixel_y = 13 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"qk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "qp" = ( /obj/structure/flora/rock, /turf/open/floor/plating/asteroid, @@ -2446,35 +3173,49 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) +"qs" = ( +/obj/structure/platform/wood_two{ + dir = 4 + }, +/obj/structure/chair/stool/bar, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "qv" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/carpet/green, -/area/outpost/crew/bar) +/obj/structure/railing/thin, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"qw" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen/full, +/turf/open/floor/plasteel, +/area/outpost/security) "qx" = ( /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/generic, /turf/open/floor/plating, /area/outpost/maintenance/fore) "qA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/neutral, -/obj/effect/turf_decal/industrial/caution, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) -"qD" = ( -/obj/structure/chair/pew{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 6 +"qC" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 1 }, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/security) +"qD" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "qG" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -2487,57 +3228,58 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"qN" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/cargo) -"qR" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"qJ" = ( +/obj/machinery/vending/boozeomat{ + pixel_y = 1; + dir = 8; + pixel_x = 7 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"qM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"qT" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 + icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"qN" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 8 }, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/disposalpipe/trunk, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) +"qR" = ( +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"qT" = ( +/obj/structure/grille/indestructable, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"qW" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, /turf/open/floor/plating, -/area/outpost/security) +/area/outpost/engineering/atmospherics) +"qW" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "outpost2" + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/structure/platform/ship_two, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "qX" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -2548,49 +3290,51 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "rb" = ( -/obj/machinery/newscaster/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/turf/open/floor/plating, +/area/outpost/maintenance/central) "rg" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/wrapping, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"rj" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "rk" = ( /obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/mineral/electrolyzer{ output_dir = 4 }, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) "rm" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/structure/sink{ + dir = 8; + pixel_y = 0; + pixel_x = 14 }, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/structure/mirror{ + pixel_x = 25 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/button/door{ + pixel_y = -21; + dir = 1; + pixel_x = -9; + name = "door lock"; + id = "b2"; + specialfunctions = 4; + normaldoorcontrol = 1 + }, +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) "ro" = ( /obj/machinery/power/terminal{ dir = 4 @@ -2601,14 +3345,16 @@ /obj/structure/rack, /obj/effect/spawner/random/food_or_drink/donkpockets, /obj/effect/spawner/random/maintenance/seven, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) "rr" = ( -/obj/structure/flora/grass/jungle, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/grass/ship/jungle, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "rs" = ( /obj/structure/table/wood, @@ -2625,45 +3371,41 @@ /turf/open/space/basic, /area/space) "rv" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ +/turf/closed/indestructible/reinforced, +/area/outpost/medical) +"ry" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"ry" = ( -/obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/machinery/door/window{ + req_access = list("101"); + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/door/window{ + req_access = list("101"); dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, /turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/area/outpost/security) "rz" = ( /obj/structure/flora/rock, /obj/structure/flora/rock, /turf/open/floor/plating/asteroid, /area/outpost/external) +"rB" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "rC" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -2678,51 +3420,49 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "rG" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 5 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/central) +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "rK" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/structure/chair/plastic{ dir = 1 }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, /area/outpost/hallway/central) "rM" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "rN" = ( -/obj/machinery/mineral/unloading_machine{ - input_dir = 2; - output_dir = 1 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/cargo) +/obj/structure/chair/sofa/brown/left/directional/south, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "rP" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "rQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -2738,7 +3478,7 @@ /obj/effect/turf_decal/steeldecal/steel_decals6{ dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) "rR" = ( /obj/structure/table, @@ -2777,31 +3517,37 @@ /obj/effect/turf_decal/box, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) +"rV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "rW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-9" + }, /obj/effect/turf_decal/corner_techfloor_gray{ - dir = 6 + dir = 10 }, /obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "5-9" }, -/obj/effect/spawner/random/trash/decal, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "rZ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "sb" = ( /obj/item/kirbyplants{ @@ -2828,6 +3574,12 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) +"sc" = ( +/obj/machinery/washing_machine, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "sf" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -2836,68 +3588,102 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "sj" = ( -/obj/structure/reagent_dispensers/beerkeg, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/corner/transparent/brown/full, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/wood, /area/outpost/crew/bar) "sk" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/brown/right/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"sl" = ( +/obj/structure/railing/wood{ + dir = 2; + color = "#792f27" + }, +/turf/open/floor/plasteel/stairs/wood{ + dir = 4; + color = "#792f27" + }, +/area/outpost/crew/bar) +"sm" = ( +/obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 + dir = 6 }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"sl" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"sn" = ( +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"sq" = ( +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "1" + }, +/obj/machinery/elevator_call_button{ + dir = 4; + pixel_y = 0; + pixel_x = -22 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/brown/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"sr" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"sm" = ( -/obj/structure/flippedtable{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/box, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"su" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/junction/flip{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 1 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"sw" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"sn" = ( -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"sz" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/closet/emcloset/wall/directional/west, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"sz" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 4 + }, +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "sB" = ( /obj/structure/disposalpipe/segment, /obj/structure/chair/office{ @@ -2918,18 +3704,11 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "sG" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 0; - pixel_x = 8 +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 5 }, -/obj/effect/turf_decal/borderfloor/full, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/turf_decal/floordetail/pryhole, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "sH" = ( /obj/machinery/door/firedoor, @@ -2941,6 +3720,17 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) +"sL" = ( +/obj/structure/sink/kitchen{ + dir = 1; + name = "big sink" + }, +/obj/structure/mirror{ + pixel_y = -25 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "sO" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -2981,6 +3771,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/outpost/maintenance/central) +"sS" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "sV" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -2988,14 +3785,26 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"sW" = ( +/obj/effect/spawner/random/trash/decal, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/maintenance/central) "ta" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/twentyfive_percent_cyborg_mask, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/clothing/gloves, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/mono, +/turf/open/floor/plasteel/dark, /area/outpost/storage) +"te" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "th" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -3005,6 +3814,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) +"ti" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "tj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -3016,36 +3832,31 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "tl" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"tm" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel, -/area/outpost/hallway/central) -"tm" = ( -/obj/effect/decal/cleanable/glass/strange, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/central) +/area/outpost/hallway/port) "to" = ( -/obj/structure/flora/junglebush/large, -/turf/open/floor/grass/ship/jungle, +/obj/machinery/elevator_call_button{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/chair/bench/beige/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "tr" = ( /obj/structure/bookcase/random, @@ -3054,18 +3865,10 @@ /turf/open/floor/wood, /area/outpost/crew/library) "tt" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/vacant_rooms) "tu" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 @@ -3079,6 +3882,7 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/plating, /area/outpost/maintenance/central) "tw" = ( @@ -3089,21 +3893,47 @@ }, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) -"tA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +"ty" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel, +/area/outpost/medical) +"tz" = ( +/obj/item/stack/tile/carpet, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"tA" = ( +/obj/machinery/mineral/unloading_machine{ + input_dir = 2; + output_dir = 1 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/platform/ship_two{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "tC" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/disposalpipe/junction/yjunction, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) "tE" = ( /obj/structure/railing{ @@ -3121,41 +3951,39 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) "tH" = ( -/obj/structure/sink/greyscale{ - dir = 8; - pixel_x = 13 - }, -/obj/structure/mirror{ - pixel_x = 26; - pixel_y = -4 +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/borderfloor/full, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/steeldecal/steel_decals9{ +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/floordetail/pryhole, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom Stall"; + id_tag = "b2" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "tI" = ( -/obj/structure/railing{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/computer/electrolyzer_console{ + pixel_y = -5; + density = 0; + dir = 8; + pixel_x = -2 + }, +/obj/structure/railing/thin{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "tN" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "tS" = ( @@ -3164,38 +3992,37 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "tT" = ( -/obj/structure/railing{ +/obj/structure/railing/thin{ dir = 8 }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "tU" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 + dir = 4 }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"tZ" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"tZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "0-8" }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "ua" = ( /obj/item/radio/intercom/directional/east, /obj/structure/chair{ @@ -3229,14 +4056,12 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "ug" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "uj" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning, @@ -3246,15 +4071,25 @@ /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) "uk" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"um" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/random{ + pixel_y = 30 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, -/area/outpost/storage) +/area/outpost/hallway/port) +"um" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/structure/chair/bench/olive/directional/east{ + dir = 2 + }, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "un" = ( /obj/structure/chair/wood{ dir = 8 @@ -3280,49 +4115,48 @@ /turf/open/floor/wood, /area/outpost/crew/library) "uw" = ( -/obj/effect/turf_decal/box/corners{ +/turf/open/floor/plasteel/mono{ dir = 1 }, -/obj/machinery/light/dim/directional/north, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/cargo) "uy" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/newscaster/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/light/dim/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) "uz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/brown/full, -/turf/open/floor/plasteel/patterned, /area/outpost/cargo) "uA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"uD" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, -/area/outpost/hallway/port) -"uD" = ( -/turf/open/floor/ship/dirt, -/area/outpost/hallway/central) +/area/outpost/medical) "uE" = ( /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt/dust, @@ -3332,10 +4166,13 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, /obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 9 + }, /turf/open/floor/plasteel, /area/outpost/security) "uJ" = ( @@ -3343,33 +4180,36 @@ dir = 4 }, /obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, /area/outpost/security) "uL" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/structure/toilet{ + dir = 4; + pixel_y = 0; + pixel_x = -6 }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 +/obj/structure/mirror{ + pixel_y = 30 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/sink{ + pixel_y = 24 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/crew/bar) "uN" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/structure/festivus{ + pixel_x = -17; + pixel_y = -7; + name = "normal pole"; + desc = "A fairly normal pole in a fairly normal position." }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) "uQ" = ( /obj/structure/table, /obj/item/clipboard{ @@ -3380,11 +4220,12 @@ /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) "uU" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral, -/obj/structure/sign/poster/random{ - pixel_x = 28 +/obj/machinery/newscaster/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, +/obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, /area/outpost/hallway/port) "uV" = ( @@ -3395,28 +4236,16 @@ /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) "uW" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/north, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "uX" = ( -/obj/machinery/disposal/bin, -/obj/machinery/newscaster/directional/west, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/central) +/obj/structure/chair/sofa/brown/old/left/directional/east, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "va" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt/dust, @@ -3432,54 +4261,90 @@ /turf/open/floor/plating/asteroid, /area/outpost/external) "vd" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/structure/chair{ +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/east{ - pixel_y = -7 - }, -/obj/machinery/firealarm/directional/east{ - pixel_y = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, /area/outpost/crew/cryo) +"ve" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "vp" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"vr" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/door/firedoor, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "2-8" + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"vB" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ - icon_state = "2-4" + icon_state = "1-8" }, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/corner_steel_grid{ + dir = 8 }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"vq" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"vr" = ( +/obj/structure/dresser{ + dir = 8 + }, +/obj/item/clothing/under/dress/skirt/color{ + pixel_x = -2; + pixel_y = 12 + }, +/obj/item/clothing/under/dress/skirt/color/blue{ + pixel_y = 5; + pixel_x = 3 + }, +/obj/machinery/light/dim/directional/south, +/obj/item/clothing/shoes/sandal{ + pixel_x = -6; + pixel_y = 2 + }, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"vz" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/platform/wood_two/corner{ dir = 8 }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_y = 5; + pixel_x = -7 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"vB" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/hallway/central) "vH" = ( @@ -3498,11 +4363,32 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) +"vK" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "vR" = ( -/obj/structure/flora/grass/jungle, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) +"vS" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/stack/tile/carpet{ + pixel_y = 3; + pixel_x = -8 + }, +/obj/item/cigbutt/roach{ + pixel_y = 4; + pixel_x = 9 + }, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "vT" = ( /obj/structure/rack, /mob/living/simple_animal/pet/mothroach{ @@ -3515,30 +4401,38 @@ /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) "vV" = ( -/obj/machinery/door/airlock/public{ - id_tag = "out2" +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"vX" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/steeldecal/steel_decals_central7, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "6-8" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) +"vX" = ( +/obj/item/decal_painter, +/obj/item/floor_painter{ + pixel_y = 6; + pixel_x = 5 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/structure/rack, +/obj/item/stack/tile/carpet{ + pixel_x = 6; + pixel_y = -4; + amount = 27 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "vZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -3556,21 +4450,10 @@ /turf/open/floor/wood, /area/outpost/crew/library) "we" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/south, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "wi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 @@ -3592,42 +4475,41 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"wn" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +"wp" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/hallway/central) "wq" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"wr" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "wu" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) "wv" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/turf/open/floor/plating, +/area/outpost/crew/bar) "ww" = ( /obj/machinery/door/airlock/glass{ name = "Cryogenics" @@ -3652,29 +4534,41 @@ /turf/open/floor/wood/mahogany, /area/outpost/crew/bar) "wC" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/industrial/stand_clear, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/outpost/hallway/port) "wE" = ( /obj/structure/closet/secure_closet/armory1, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, /area/outpost/security) "wF" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/c, -/turf/open/floor/grass/ship/jungle, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"wI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "wK" = ( /turf/closed/indestructible/reinforced, @@ -3685,13 +4579,36 @@ "wN" = ( /obj/machinery/vending/coffee, /obj/machinery/light/dim/directional/south, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"wO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"wP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "wR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/central) +"wS" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "wT" = ( /obj/machinery/jukebox{ pixel_y = 16; @@ -3712,53 +4629,76 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"wV" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "wW" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 + }, /turf/open/floor/plasteel, /area/outpost/security) "wX" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "wY" = ( -/obj/machinery/cryopod, -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 5 +/obj/machinery/firealarm/directional/north, +/obj/structure/crate_shelf, +/obj/effect/turf_decal/borderfloor{ + dir = 1 }, -/obj/structure/sign/poster/random{ - pixel_y = 30 +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/crew/cryo) +/area/outpost/cargo) +"wZ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "xc" = ( -/obj/effect/turf_decal/corner/opaque/red{ +/obj/effect/turf_decal/corner/opaque/black{ dir = 4 }, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 1 + }, /turf/open/floor/plasteel, /area/outpost/security) "xf" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/brown/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/patterned, +/obj/effect/turf_decal/borderfloor{ + dir = 6 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, /area/outpost/cargo) "xk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) "xm" = ( @@ -3767,67 +4707,58 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"xo" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/north, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "xr" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/camera/autoname{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/structure/chair/sofa/brown/old/directional/east, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "xu" = ( /obj/effect/spawner/random/trash/grille_or_waste, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) "xy" = ( -/obj/effect/decal/cleanable/glass/strange, +/obj/structure/falsewall/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/tech/techmaint, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, /area/outpost/maintenance/central) "xI" = ( /obj/machinery/cryopod, -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 5 +/obj/structure/sign/poster/random{ + pixel_y = 30 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, /area/outpost/crew/cryo) "xJ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/door/window{ + req_access = list("101") }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/machinery/door/window{ + req_access = list("101"); + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech, +/area/outpost/security) "xK" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3842,24 +4773,26 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "xM" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/table, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/kitchen/fork{ + pixel_y = 0; + pixel_x = -7 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/item/kitchen/fork{ + pixel_x = 8; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/item/reagent_containers/syringe, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"xN" = ( +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = 5; + pixel_y = 6 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) "xQ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3868,6 +4801,11 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"xU" = ( +/obj/structure/chair/bench/beige/directional/south, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "xW" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -3888,22 +4826,34 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "xZ" = ( -/obj/structure/chair/pew/left{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 10 }, +/obj/structure/closet/l3closet/janitor, +/obj/effect/turf_decal/steeldecal/steel_decals3, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/crew/janitor) "yc" = ( /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/central) +"yf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "yh" = ( -/obj/structure/chair/sofa/brown/corner/directional/east, -/obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/green, +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/crew/bar) "yj" = ( /obj/machinery/door/firedoor, @@ -3922,23 +4872,12 @@ /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) "yk" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"yq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/structure/table, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"yq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, /obj/effect/turf_decal/steeldecal/steel_decals6{ dir = 5 @@ -3946,30 +4885,35 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "yv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/structure/table/reinforced, +/obj/structure/railing/thin, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "yB" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "yE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/wood, /area/outpost/crew/bar) +"yL" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "yN" = ( /obj/structure/rack, /obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) "yQ" = ( /obj/structure/chair{ @@ -3983,14 +4927,11 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "yR" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "yS" = ( /obj/structure/cable/yellow{ @@ -3999,55 +4940,93 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) +"yU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "yV" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral, -/obj/structure/closet/firecloset/wall/directional/east, -/turf/open/floor/plasteel, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) -"za" = ( -/obj/structure/falsewall/reinforced, +"yX" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"yY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"yZ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/structure/falsewall/reinforced, /turf/open/floor/plating, -/area/outpost/maintenance/fore) +/area/outpost/hallway/central) +"za" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/crew/bar) "zb" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/machinery/newscaster/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) "zg" = ( -/obj/effect/landmark/outpost/elevator_machine{ - shaft = "1" +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"zo" = ( +/obj/effect/decal/cleanable/glass/strange, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/door/airlock/hatch, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"zo" = ( -/obj/machinery/mineral/processing_unit{ - output_dir = 4; - input_dir = 2 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "5-8" }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/cargo) +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) +"zp" = ( +/obj/structure/flora/rock, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) "zq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -4057,41 +5036,29 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "zr" = ( -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 + dir = 5 }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "zv" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/sign/directions/service{ - pixel_y = 22; - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel, /area/outpost/hallway/central) "zC" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "outpost2" +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/cargo) +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "zD" = ( /obj/machinery/camera/autoname{ dir = 4 }, /obj/machinery/light/directional/north, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/security) "zE" = ( /obj/structure/cable/yellow{ @@ -4099,27 +5066,28 @@ }, /turf/open/floor/plating/asteroid, /area/outpost/external) -"zI" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/cable/yellow{ - icon_state = "1-2" +"zG" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"zI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/comfy/orange/directional/north, /turf/open/floor/plating, -/area/outpost/maintenance/central) +/area/outpost/crew/bar) "zL" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/corner/opaque/black{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/outpost/hallway/central) "zM" = ( @@ -4147,13 +5115,18 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "zR" = ( -/obj/effect/mob_spawn/human/corpse/charredskeleton{ - name = "Marv" +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 }, -/obj/item/stack/cable_coil/cut/yellow, -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/asteroid, -/area/outpost/external) +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/fore) "zS" = ( /obj/effect/spawner/random/trash/decal, /turf/open/floor/plating, @@ -4176,22 +5149,22 @@ /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Ai" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/camera/autoname{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ - dir = 4 +"Ac" = ( +/obj/structure/railing/wood{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) +"Ai" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"Aj" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/structure/chair/bench/olive/directional/north, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "Ak" = ( /obj/machinery/door/airlock/maintenance{ dir = 4 @@ -4209,10 +5182,10 @@ /area/outpost/maintenance/fore) "Am" = ( /obj/effect/spawner/random/vending/cola, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "Ao" = ( /obj/item/radio/intercom/directional/north, @@ -4239,6 +5212,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) +"As" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "Au" = ( /obj/effect/turf_decal/steeldecal/steel_decals3{ dir = 1 @@ -4247,28 +5230,46 @@ /area/outpost/maintenance/fore) "Aw" = ( /obj/machinery/vending/coffee, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "Ay" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/sign/poster/official/miners{ - pixel_x = 26 +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/crew/bar) +"AB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"AH" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plating/asteroid, -/area/outpost/external) -"AI" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"AH" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/asteroid, +/area/outpost/external) +"AI" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, /obj/structure/cable/yellow{ @@ -4297,22 +5298,12 @@ /turf/open/floor/plasteel/tech, /area/outpost/maintenance/central) "AL" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 5 +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) "AM" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -4324,34 +5315,21 @@ /turf/open/floor/wood, /area/outpost/crew/library) "AN" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/steeldecal/steel_decals4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"AO" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/camera/autoname{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, +/obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, +/area/outpost/hallway/port) +"AO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "AP" = ( /obj/structure/table/wood, @@ -4368,29 +5346,22 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "AS" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner_steel_grid/full, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "AT" = ( -/obj/structure/railing/wood{ - dir = 2; - color = "#792f27" - }, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/stairs/wood{ - dir = 4; - color = "#792f27" - }, -/area/outpost/crew/bar) +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "AU" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/machinery/light/dim/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, /turf/open/floor/plasteel, @@ -4404,21 +5375,29 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) +"Ba" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "Bc" = ( /obj/item/radio/intercom/directional/west, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, /obj/effect/landmark/ert_outpost_spawn, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 9 + }, /turf/open/floor/plasteel, /area/outpost/security) "Bd" = ( /obj/machinery/computer/cryopod/directional/north, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 }, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/security) @@ -4434,39 +5413,44 @@ }, /turf/open/floor/carpet/green, /area/outpost/crew/bar) -"Bj" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ +"Bh" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Bj" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 5 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 5 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) "Bo" = ( /obj/item/bedsheet, /obj/structure/bed/pod, /obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Bp" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/sign/number/random, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "Bq" = ( /obj/structure/cable/yellow{ @@ -4489,32 +5473,23 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Bt" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "Bu" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/beer/light{ - pixel_x = -8 - }, -/obj/item/newspaper{ - pixel_x = 7; - pixel_y = 7 + pixel_y = -2; + pixel_x = 5 }, -/turf/open/floor/carpet/green, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "By" = ( /obj/structure/closet/secure_closet/contraband, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, /area/outpost/security) "Bz" = ( /obj/machinery/power/floodlight, @@ -4532,26 +5507,10 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"BE" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 9 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/central) "BJ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) "BM" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning{ @@ -4581,15 +5540,30 @@ }, /obj/machinery/light/small/directional/north, /obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) +"BP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "BR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/crayon{ + icon_state = "f"; + pixel_y = 0; + pixel_x = -19 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/obj/effect/decal/cleanable/crayon{ + icon_state = "f"; + pixel_y = 0; + pixel_x = -19 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "BX" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/mug{ @@ -4605,25 +5579,26 @@ /turf/closed/indestructible/reinforced, /area/outpost/maintenance/fore) "BZ" = ( -/obj/structure/railing{ +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 10 +/obj/item/kirbyplants{ + icon_state = "plant-21"; + name = "oxygen reclaimation system" }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "Ca" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 6 +/obj/machinery/light/small/directional/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) "Cc" = ( /turf/closed/indestructible/reinforced, /area/outpost/crew/bar) @@ -4654,79 +5629,51 @@ /turf/open/floor/carpet/green, /area/outpost/crew/bar) "Ch" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/crew/bar) "Ci" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/landmark/outpost/elevator_machine{ - shaft = "1" - }, -/obj/machinery/elevator_call_button{ - dir = 1; - pixel_y = -24 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) +"Ck" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/medical) "Cl" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/structure/platform/wood_two, +/turf/open/floor/plasteel/stairs/wood{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/maintenance/starboard) "Cm" = ( /obj/item/toy/sprayoncan, /turf/open/floor/plating/asteroid, /area/outpost/external) "Cn" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Cp" = ( /obj/machinery/camera/autoname, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) +"Cr" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/structure/chair/bench/olive/directional/east{ + dir = 2 + }, +/obj/machinery/camera/autoname, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "Ct" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -4746,68 +5693,137 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) +"CB" = ( +/obj/machinery/newscaster/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"CF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 9 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "CI" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/cloth/fancy{ + dir = 8; + open = 0 + }, +/turf/open/floor/plasteel/stairs{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/hallway/central) "CK" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable/yellow, -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +/turf/open/floor/wood, +/area/outpost/crew/bar) "CL" = ( -/obj/structure/flora/junglebush, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) -"CU" = ( -/obj/machinery/button/door{ - id = "out2"; - normaldoorcontrol = 1; - specialfunctions = 4; - dir = 1; - pixel_y = -22; - pixel_x = -9 +/obj/machinery/conveyor{ + id = "outpost3"; + dir = 5 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) +"CM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) -"CV" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"CN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, /obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"CP" = ( +/obj/machinery/microwave, +/obj/structure/table, +/obj/effect/decal/cleanable/sprayweb, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"CS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"CU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"CX" = ( -/obj/structure/railing{ - dir = 8 +"CV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 10 }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"Df" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +"CX" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random{ - pixel_x = 28 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Df" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/structure/chair/bench/olive/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"Dg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) "Di" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/structure/table/reinforced, +/obj/machinery/conveyor_switch{ + id = "outpost1"; + layer = 3.11; + pixel_y = 4; + pixel_x = 5 }, -/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/structure/railing/thin, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "Dm" = ( @@ -4817,18 +5833,17 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "Do" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/black{ + dir = 9 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 6 }, /turf/open/floor/plasteel, /area/outpost/security) "Dp" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) "Dq" = ( /obj/structure/falsewall/reinforced, /obj/structure/cable/yellow{ @@ -4837,15 +5852,15 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "DA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/structure/barricade/wooden/crude, +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"DD" = ( +/turf/open/floor/plasteel/stairs, +/area/outpost/maintenance/starboard) "DF" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -4853,16 +5868,24 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "DH" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/bowler_or_that, /obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "DI" = ( /obj/structure/railing{ @@ -4878,6 +5901,20 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) +"DO" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock{ + name = "Laundry Room" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/maintenance/central) "DP" = ( /obj/structure/railing/corner, /obj/machinery/light/dim/directional/north, @@ -4891,7 +5928,8 @@ /area/outpost/cargo) "DS" = ( /obj/machinery/power/smes/magical{ - name = "power relay" + name = "power relay"; + output_level = 200000 }, /obj/structure/cable/yellow{ icon_state = "0-4" @@ -4910,6 +5948,10 @@ /obj/effect/decal/cleanable/generic, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) +"DZ" = ( +/obj/machinery/light/dim/directional/east, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "Ef" = ( /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 @@ -4919,12 +5961,9 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "Eg" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/item/radio/intercom/directional/east, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ - dir = 8 - }, +/obj/machinery/holopad/emergency/janitor, +/obj/effect/turf_decal/trimline/opaque/purple/filled, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/outpost/crew/janitor) "Ei" = ( @@ -4932,11 +5971,33 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Ej" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Eo" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"Eq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "Et" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -4946,12 +6007,42 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) "Ez" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Recycling" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"EB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, /turf/open/floor/plating, -/area/outpost/hallway/port) +/area/outpost/hallway/central) "EC" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/ship/dirt, +/obj/structure/closet/firecloset/wall/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/outpost/hallway/port) "ED" = ( /obj/structure/table/wood, @@ -4963,24 +6054,34 @@ /turf/open/floor/carpet/green, /area/outpost/crew/bar) "EG" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, -/obj/structure/closet/l3closet/janitor, -/obj/effect/turf_decal/steeldecal/steel_decals3, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/outpost/crew/janitor) "EH" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/outpost/hallway/port) +"EI" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"EK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "EP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -4989,17 +6090,39 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/outpost/maintenance/central) +"EU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/grille/indestructable, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "EV" = ( -/obj/structure/chair/comfy/orange/directional/south, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) +"EW" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/vacant_rooms) "EX" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"EZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/mouse, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "Fa" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable/yellow{ @@ -5018,21 +6141,31 @@ /turf/open/floor/plasteel, /area/outpost/vacant_rooms/office) "Ff" = ( -/obj/effect/turf_decal/corner/opaque/red{ +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 4 }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/security) +"Fh" = ( +/obj/machinery/door/firedoor/heavy, +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/outpost/vacant_rooms/office) "Fi" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/structure/disposalpipe/segment{ dir = 1 }, -/obj/structure/sign/poster/random{ - pixel_y = 30 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "Fl" = ( /obj/structure/cable/yellow{ @@ -5045,39 +6178,20 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Fn" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/window{ - req_access = list("101"); - dir = 8 - }, -/obj/machinery/door/window{ - req_access = list("101"); - dir = 4 - }, -/obj/effect/turf_decal/floordetail/tiled, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/outpost/security) +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "Fq" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/crew/library) "Fr" = ( -/obj/machinery/vending/boozeomat{ - pixel_y = 32; - density = 0 - }, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/boozeomat, /turf/open/floor/carpet/green, /area/outpost/crew/bar) "Fs" = ( @@ -5091,6 +6205,36 @@ icon_state = "wood-broken4" }, /area/outpost/crew/bar) +"Ft" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"Fu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/grille/indestructable, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "Fv" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -5107,42 +6251,49 @@ }, /obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms/office) "FB" = ( -/turf/open/floor/carpet/green, -/area/outpost/crew/bar) -"FD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/outpost/crew/bar) +/obj/structure/platform/wood_two/corner, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "FE" = ( -/obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/mineral/electrolyzer_unloader, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) "FF" = ( -/obj/effect/turf_decal/ihejirika_small/left, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"FH" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/sign/poster/rilena/ri{ + pixel_x = -26 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/crayon{ + icon_state = "guy"; + pixel_y = 20 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/decal/cleanable/garbage{ + pixel_x = -7; + pixel_y = -3 }, -/turf/open/floor/plasteel, +/obj/item/paper/crumpled{ + pixel_y = -2; + pixel_x = 5 + }, +/obj/item/paper/crumpled{ + pixel_y = 5; + pixel_x = -4 + }, +/turf/open/floor/plating, /area/outpost/hallway/central) +"FH" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "FI" = ( /obj/structure/railing, /obj/item/radio/intercom/directional/north, @@ -5155,26 +6306,30 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"FM" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/cigbutt/roach, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "FN" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/urinal{ + dir = 8; + pixel_x = 18 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 9 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/steeldecal/steel_decals_central7, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/central) +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) "FQ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "FS" = ( /obj/structure/reagent_dispensers/fueltank, @@ -5225,7 +6380,7 @@ /obj/structure/bed/pod, /obj/item/bedsheet, /obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Gm" = ( /obj/structure/cable/yellow{ @@ -5238,12 +6393,27 @@ /obj/effect/spawner/random/clothing/bowler_or_that, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Gu" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +"Gr" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Gt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) +"Gu" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/janitorialcart, +/obj/item/mop, +/obj/item/clothing/gloves/color/purple, +/obj/item/clothing/head/beanie/purple, +/obj/item/clothing/neck/tie/purple, /turf/open/floor/plasteel, /area/outpost/crew/janitor) "Gv" = ( @@ -5252,44 +6422,26 @@ /obj/machinery/fax/admin/outpost{ pixel_y = 5 }, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) -"GB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/maintenance{ - dir = 4; - req_access = list("101") - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/port) +"GC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "GE" = ( /obj/structure/chair/comfy/orange/directional/south, +/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/siding/wood, -/obj/structure/sign/poster/random{ - pixel_y = 30 - }, -/turf/open/floor/wood, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "GK" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "GL" = ( /obj/effect/landmark/outpost/elevator{ shaft = "1" @@ -5297,52 +6449,55 @@ /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/central) "GM" = ( -/obj/structure/sign/poster/official/no_erp{ - pixel_y = 30 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) -"GQ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 6 + }, +/obj/effect/turf_decal/industrial/caution{ dir = 8 }, +/obj/structure/railing/thin, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"GO" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, /turf/open/floor/plasteel, /area/outpost/hallway/port) +"GQ" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/cargo/office) "GS" = ( /obj/machinery/modular_computer/console/preset/civilian, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) "GT" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "GU" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "6-8" }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 10 }, +/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 + dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) "GW" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -5373,49 +6528,105 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid, /area/outpost/external) +"Hc" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "He" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ - dir = 1 - }, /turf/open/floor/plasteel, /area/outpost/hallway/port) "Hh" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "Hi" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/machinery/door/airlock{ + dir = 4; + name = "Bar" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/bar) "Hk" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/beret_or_rabbitears, /obj/machinery/light/dim/directional/west, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "Hl" = ( /mob/living/simple_animal/mouse/brown, /obj/effect/turf_decal/steeldecal/steel_decals6, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Hn" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/mob/living/simple_animal/hostile/cockroach, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Hp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt/roach{ + pixel_x = -5; + pixel_y = -4 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Hs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Ht" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -5450,31 +6661,44 @@ /obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Hz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "HB" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, /obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 6; - pixel_x = 6 +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 + }, +/obj/effect/spawner/random/entertainment/plushie{ + pixel_x = 16; + pixel_y = 4 + }, +/obj/item/folder{ + pixel_x = -5; + pixel_y = 2 }, -/obj/item/pen, -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "2-4" }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/patterned, /area/outpost/crew/cryo) +"HC" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/external) "HD" = ( /turf/closed/indestructible/rock, /area/outpost/external) "HF" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/beer/light{ - pixel_y = -2; - pixel_x = 5 - }, -/turf/open/floor/carpet/green, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "HG" = ( /obj/machinery/door/firedoor, @@ -5494,33 +6718,55 @@ /turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "HJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/ore_box, +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/area/outpost/cargo) "HL" = ( /obj/structure/easel, /obj/effect/decal/cleanable/dirt/dust, /obj/item/canvas/nineteenXnineteen, /turf/open/floor/wood, /area/outpost/crew/library) +"HO" = ( +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "1" + }, +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "HQ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/east, -/obj/structure/holosign/barrier/infinite{ - max_integrity = 500 +/obj/structure/disposalpipe/junction/flip{ + dir = 1 }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "HR" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/tech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, /area/outpost/hallway/central) "HX" = ( /obj/machinery/door/airlock{ @@ -5541,23 +6787,24 @@ /turf/open/floor/plating, /area/outpost/crew/bar) "HZ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-8" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 6 +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "Ia" = ( /obj/item/radio/intercom/wideband/table{ @@ -5572,7 +6819,7 @@ pixel_x = -5 }, /obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Ic" = ( /obj/effect/decal/cleanable/dirt, @@ -5586,39 +6833,28 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "Ip" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/decal/cleanable/ash{ + pixel_y = 14; + pixel_x = -7 }, -/obj/effect/turf_decal/industrial/caution, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) "Is" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "It" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/structure/flora/rock, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) "Iu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -5633,18 +6869,10 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Ix" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/crew/bar) "Iz" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5659,9 +6887,25 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "IB" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/corner/opaque/neutral, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"ID" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, /turf/open/floor/plasteel, /area/outpost/hallway/port) "IE" = ( @@ -5669,73 +6913,71 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "IH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-4" }, +/obj/machinery/light/small/directional/west, /turf/open/floor/plating, -/area/outpost/maintenance/central) +/area/outpost/engineering/atmospherics) "IJ" = ( /obj/structure/table, /obj/item/trash/can/food/beans, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) -"IM" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +"IL" = ( +/obj/effect/turf_decal/corner/opaque/black, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, -/area/outpost/hallway/port) -"IN" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "!"; - pixel_x = 9 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "f"; - pixel_y = 0; - pixel_x = -19 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "u"; - pixel_y = -5; - pixel_x = -10 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "n" - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -19; - pixel_x = 2 +/area/outpost/hallway/central) +"IM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-10" }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"IN" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "arrow"; pixel_y = -25; pixel_x = -7 }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plating, /area/outpost/maintenance/fore) "IS" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/machinery/light/dim/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ dir = 8 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, /area/outpost/crew/cryo) "IT" = ( /obj/machinery/camera/autoname, -/obj/effect/turf_decal/corner/opaque/red{ +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/security) "IU" = ( /obj/structure/cable/yellow{ @@ -5755,33 +6997,36 @@ "IW" = ( /turf/closed/indestructible/rock, /area/outpost/maintenance/central) -"IY" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "antilizard"; - pixel_x = -30 - }, +"Ja" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) -"Ji" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/machinery/firealarm/directional/west, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/steeldecal/steel_decals9, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/outpost/hallway/central) +"Jh" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "Jo" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/crayon{ + icon_state = "peace"; + pixel_y = -26 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ +/turf/open/floor/plasteel/stairs{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/hallway/central) "Jp" = ( /obj/machinery/door/airlock/public, /obj/effect/turf_decal/industrial/warning, @@ -5803,25 +7048,38 @@ /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms) "Jq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/obj/structure/chair/sofa/brown/corner/directional/east, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "Jr" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/south, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"Jt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/firealarm/directional/south, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, /area/outpost/hallway/central) +"Jx" = ( +/obj/item/stack/tile/carpet, +/obj/structure/rack, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "JA" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/disposal/bin, @@ -5832,12 +7090,19 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "JE" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/machinery/shower{ + dir = 4; + desc = "An old shower. It looks rusted." }, -/turf/open/floor/plasteel, +/obj/structure/toilet{ + pixel_y = 13; + pixel_x = 9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals6, +/turf/open/floor/plasteel/showroomfloor, /area/outpost/hallway/central) "JF" = ( /obj/effect/decal/cleanable/crayon{ @@ -5848,8 +7113,15 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "JM" = ( -/obj/structure/chair/sofa/brown/right/directional/east, -/turf/open/floor/carpet/green, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer/light{ + pixel_x = -8 + }, +/obj/item/newspaper{ + pixel_x = 7; + pixel_y = 7 + }, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) "JS" = ( /obj/structure/disposalpipe/segment{ @@ -5875,7 +7147,7 @@ /obj/effect/spawner/random/clothing/pirate_or_bandana, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/mono, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "JW" = ( /obj/machinery/vending/games, @@ -5883,10 +7155,22 @@ /turf/open/floor/wood, /area/outpost/crew/library) "JX" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/b, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/machinery/conveyor{ + id = "outpost3"; + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) +"Kb" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_y = 11; + pixel_x = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "Kd" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -5902,36 +7186,35 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Kh" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/newscaster/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Kl" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 +/obj/machinery/light/dim/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) -"Ko" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/camera/autoname{ - dir = 5 +"Kl" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 22 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/structure/table, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/medical) +"Ko" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "Kr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -5939,17 +7222,18 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Ks" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/structure/chair/bench/beige/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"Kv" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Kx" = ( /turf/closed/indestructible/reinforced, /area/outpost/storage) @@ -5977,7 +7261,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plating, +/turf/closed/indestructible/reinforced/rust, /area/outpost/maintenance/central) "KC" = ( /obj/structure/disposalpipe/segment{ @@ -6017,6 +7301,15 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/crew/janitor) +"KG" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "KI" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -6032,22 +7325,18 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "KK" = ( -/obj/structure/toilet{ - dir = 4; - pixel_y = 0; - pixel_x = -6 - }, -/obj/structure/mirror{ - pixel_y = 30 +/obj/machinery/button/door{ + dir = 8; + pixel_x = 22; + pixel_y = 9; + id = "out3"; + normaldoorcontrol = 1; + specialfunctions = 4 }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/effect/turf_decal/corner/transparent/brown/full, /turf/open/floor/plasteel, /area/outpost/crew/bar) "KS" = ( -/obj/structure/railing{ +/obj/structure/railing/thin{ dir = 1 }, /turf/open/floor/plasteel/patterned, @@ -6063,31 +7352,24 @@ /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) "KW" = ( -/obj/structure/cable/yellow{ - icon_state = "6-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/spawner/random/vending/cola, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/turf/open/floor/plasteel/dark, +/area/outpost/crew/library) +"KY" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/effect/turf_decal/borderfloor{ + dir = 5 }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"KY" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/steeldecal/steel_decals9{ - dir = 4 +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/cargo) "KZ" = ( /obj/machinery/door/airlock/maintenance{ dir = 4; @@ -6118,25 +7400,18 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/effect/turf_decal/corner/opaque/red{ +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/corner/opaque/black, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ dir = 4 }, -/obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, /area/outpost/security) "Lg" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) "Lh" = ( /turf/closed/indestructible/reinforced, @@ -6145,6 +7420,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/green, /area/outpost/crew/bar) +"Lm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) "Ls" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -6167,40 +7447,17 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Lu" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/yjunction{ +/obj/machinery/light/dim/directional/north, +/obj/structure/ore_box, +/turf/open/floor/plasteel/mono{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/black/full, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/cargo) "LB" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/storage) -"LD" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "LE" = ( /obj/item/radio/intercom/directional/west, /obj/effect/decal/cleanable/dirt/dust, @@ -6212,15 +7469,19 @@ /area/outpost/maintenance/fore) "LJ" = ( /obj/machinery/computer/helm/viewscreen/directional/north, -/obj/structure/chair/comfy{ +/obj/structure/chair/comfy/olive{ dir = 8 }, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/corner/opaque/black/border{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "LK" = ( -/obj/structure/flora/junglebush/c, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/medical) "LL" = ( /turf/closed/indestructible/reinforced, /area/outpost/hallway/port) @@ -6235,11 +7496,15 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "LS" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 }, -/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel, /area/outpost/hallway/port) "LU" = ( @@ -6247,35 +7512,23 @@ /turf/open/floor/plating, /area/outpost/storage) "LX" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "LY" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/bed, +/obj/item/bedsheet/black, +/obj/item/toy/plush/rilena, +/obj/item/toy/plush/tali{ + pixel_x = 10; + pixel_y = -6 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/steeldecal/steel_decals_central2, +/turf/open/floor/plating, +/area/outpost/hallway/central) "Md" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -6290,17 +7543,21 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Me" = ( -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Mk" = ( /obj/machinery/newscaster/directional/south, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/corner/opaque/black/border{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Ml" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 9 + dir = 8 }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "Mm" = ( @@ -6382,21 +7639,16 @@ /turf/open/floor/wood, /area/outpost/crew/library) "MI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 1 + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) "MK" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -6420,29 +7672,61 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "MO" = ( -/obj/structure/chair/pew/right{ - dir = 8 +/obj/structure/sign/poster/rilena/run{ + pixel_y = 30 }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 6 +/obj/structure/table, +/obj/item/modular_computer/laptop/preset/civilian/rilena{ + pixel_y = 9 }, -/turf/open/floor/plasteel, +/obj/item/reagent_containers/food/drinks/rilenacup{ + pixel_y = -2; + pixel_x = 7 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"MP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "MQ" = ( /obj/machinery/cryopod{ dir = 1 }, -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 10 +/obj/machinery/camera/autoname{ + dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, /area/outpost/crew/cryo) +"MU" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/vacant_rooms/office) +"MW" = ( +/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"MZ" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Nc" = ( -/turf/closed/indestructible/rock, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/turf/open/floor/plasteel, /area/outpost/hallway/central) "Nd" = ( /obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Ne" = ( /obj/item/radio/intercom/directional/north, @@ -6453,6 +7737,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"Nf" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Ng" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -6468,36 +7758,62 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) +"Nn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "No" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/donut/jelly, /obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "Nu" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/camera/autoname{ + dir = 5 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) "Nv" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/storage) +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/airlock/medical/glass{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/medical) "NF" = ( /obj/structure/cable/yellow{ icon_state = "6-8" @@ -6513,9 +7829,13 @@ /turf/open/space/basic, /area/space) "NI" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable/yellow, +/turf/open/floor/plasteel, /area/outpost/cargo) "NK" = ( /turf/closed/indestructible/reinforced, @@ -6533,16 +7853,6 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"NT" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) "NU" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -6556,22 +7866,29 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) "Oa" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/c, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) -"Oh" = ( -/obj/structure/chair/sofa/brown/directional/north, -/turf/open/floor/carpet/royalblack, -/area/outpost/crew/bar) -"Oi" = ( -/obj/structure/railing/corner, +/obj/structure/sink/kitchen{ + dir = 1; + name = "big sink" + }, +/obj/structure/mirror{ + pixel_y = -25 + }, /turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"Om" = ( -/obj/structure/flora/junglebush/b, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/area/outpost/hallway/central) +"Oh" = ( +/obj/structure/chair/sofa/brown/directional/north, +/turf/open/floor/carpet/royalblack, +/area/outpost/crew/bar) +"Oi" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "On" = ( /obj/machinery/conveyor/auto{ id = "outpost3"; @@ -6579,6 +7896,16 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Op" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Or" = ( /obj/structure/chair/sofa/brown/corner/directional/north, /obj/effect/decal/cleanable/dirt/dust, @@ -6600,21 +7927,25 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "OC" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 1; - piping_layer = 2 - }, +/obj/structure/falsewall/reinforced, /turf/open/floor/plating, -/area/outpost/maintenance/central) -"OG" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ +/area/outpost/engineering/atmospherics) +"OF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"OG" = ( +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "OH" = ( /obj/machinery/door/firedoor, @@ -6641,69 +7972,108 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "OK" = ( -/obj/structure/falsewall/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plating, -/area/outpost/crew/bar) -"OM" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"OO" = ( -/obj/structure/railing, /turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"OP" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/area/outpost/maintenance/central) +"OM" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) +"OO" = ( +/obj/structure/platform/wood_two{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"OP" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/black{ +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"OS" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/hallway/central) +"OT" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/maintenance/central) "OY" = ( /obj/structure/grille/indestructable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/central) +"OZ" = ( +/obj/item/reagent_containers/syringe{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Pc" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Pe" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Ph" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/cargo) +"Pi" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) +"Pl" = ( +/obj/structure/rack, +/obj/item/storage/cans/sixbeer{ + pixel_x = -2; + pixel_y = -3 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "Pm" = ( /obj/structure/chair{ dir = 8 @@ -6712,26 +8082,32 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Po" = ( -/obj/structure/chair/pew{ +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "1" + }, +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 6 +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/outpost/hallway/central) "Pt" = ( -/obj/machinery/cryopod{ - dir = 1 - }, -/obj/effect/turf_decal/corner_techfloor_grid{ +/obj/effect/turf_decal/corner_techfloor_gray{ dir = 10 }, -/obj/machinery/camera/autoname{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/crew/cryo) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "Pw" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/industrial/outline/yellow, @@ -6747,14 +8123,29 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Py" = ( +/obj/structure/falsewall/reinforced, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/closed/indestructible/reinforced/rust, +/area/outpost/maintenance/fore) "PA" = ( -/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/crew/cryo) "PD" = ( /obj/structure/chair/sofa/brown/right/directional/west, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) +"PE" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21"; + name = "oxygen reclaimation system" + }, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "PF" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -6772,36 +8163,32 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "PG" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, -/obj/structure/holosign/barrier/infinite{ - max_integrity = 500 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/structure/sign/warning/nosmoking/burnt{ + pixel_y = -28 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) "PI" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/cargo) +/turf/closed/indestructible/reinforced, +/area/outpost/maintenance/starboard) "PO" = ( /obj/structure/chair/wood{ dir = 1 @@ -6809,24 +8196,14 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "PQ" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/patterned, /area/outpost/crew/cryo) "PS" = ( /obj/structure/falsewall/reinforced, @@ -6844,9 +8221,20 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "PV" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/carpet/green, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) +"PW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "PY" = ( /obj/machinery/door/airlock/security/brig{ req_access = list("101") @@ -6861,61 +8249,47 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/security) -"Qa" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +"Qg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Qc" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Qg" = ( -/obj/structure/cable/yellow{ - icon_state = "4-9" - }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "1-9" - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 + icon_state = "2-9" }, /turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) +/area/outpost/maintenance/central) +"Qi" = ( +/obj/structure/chair/sofa/brown/old/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "Qk" = ( -/obj/machinery/button/door{ - dir = 8; - pixel_x = 22; - pixel_y = 9; - id = "out3"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/effect/turf_decal/corner/transparent/brown/full, -/turf/open/floor/plasteel, -/area/outpost/crew/bar) +/turf/open/floor/engine/air, +/area/outpost/engineering/atmospherics) "Qn" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/holosign/barrier/infinite{ + max_integrity = 500 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/hallway/port) "Qp" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -6924,34 +8298,59 @@ /turf/open/floor/plating/asteroid, /area/outpost/external) "Qr" = ( -/obj/effect/turf_decal/corner/opaque/red{ +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 8 }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, /area/outpost/security) "Qv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Qx" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/bowler_or_that, /obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "QA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/firealarm/directional/south, -/obj/structure/janitorialcart, -/obj/item/mop, -/obj/item/clothing/gloves/color/purple, -/obj/item/clothing/head/beanie/purple, -/obj/item/clothing/neck/tie/purple, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/welded, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/port) +"QF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/outpost/hallway/central) "QL" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -6972,38 +8371,43 @@ /obj/structure/filingcabinet/double, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) +"QS" = ( +/obj/structure/table, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "QT" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/item/radio/intercom/directional/south, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) "QY" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/outpost/hallway/port) "QZ" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = 11; - pixel_x = -14 +/obj/structure/chair{ + dir = 8 }, -/turf/closed/indestructible/reinforced, -/area/outpost/maintenance/fore) +/obj/structure/extinguisher_cabinet/directional/east{ + pixel_y = -7 + }, +/obj/machinery/firealarm/directional/east{ + pixel_y = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) "Ra" = ( /obj/machinery/door/airlock{ dir = 4; @@ -7022,28 +8426,16 @@ /area/outpost/crew/bar) "Rb" = ( /obj/structure/falsewall/reinforced, -/turf/open/floor/plating, +/turf/closed/indestructible/reinforced/rust, /area/outpost/vacant_rooms/office) "Rc" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 1 - }, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) "Rf" = ( /obj/machinery/power/apc/auto_name/directional/south, @@ -7083,17 +8475,29 @@ /obj/item/trash/semki, /turf/open/floor/plating/asteroid, /area/outpost/external) +"Rn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Ro" = ( -/obj/structure/falsewall/reinforced, -/turf/closed/indestructible/reinforced, +/turf/closed/indestructible/reinforced/rust, /area/outpost/maintenance/fore) "Rr" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) "Rs" = ( @@ -7113,10 +8517,10 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Rt" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ - dir = 1 - }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable/yellow, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel, /area/outpost/crew/janitor) "Ru" = ( @@ -7129,18 +8533,17 @@ /turf/open/floor/wood, /area/outpost/crew/library) "Rv" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/obj/effect/turf_decal/corner/opaque/black{ +/area/outpost/maintenance/central) +"Rw" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "RA" = ( /obj/structure/railing/wood{ @@ -7162,6 +8565,20 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) +"RD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plating, +/area/outpost/hallway/central) "RG" = ( /obj/structure/barricade/wooden/crude, /obj/machinery/door/firedoor/closed, @@ -7194,40 +8611,74 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "RJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/button/door{ + specialfunctions = 4; + normaldoorcontrol = 1; + id = "out1"; + dir = 1; + pixel_y = -21; + pixel_x = -8 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, /area/outpost/storage) +"RL" = ( +/obj/structure/grille/indestructable, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "RM" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, /obj/effect/landmark/ert_outpost_spawn, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 9 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 6 + }, /turf/open/floor/plasteel, /area/outpost/security) "RO" = ( -/obj/structure/railing{ - dir = 6 +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch{ - id = "outpost1"; - layer = 3.11; - pixel_y = 4; - pixel_x = 5 +/obj/structure/rack, +/obj/item/toy/balloon, +/obj/item/toy/balloon, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"RR" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/effect/turf_decal/corner_techfloor_gray, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"RS" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"RT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/grille, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "RU" = ( /obj/item/kirbyplants/random, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, /area/outpost/storage) "RV" = ( /obj/effect/decal/cleanable/crayon{ @@ -7261,14 +8712,22 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "RY" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral, /turf/open/floor/plasteel, /area/outpost/hallway/port) +"Sb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/item/radio/intercom/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "Sd" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7277,31 +8736,31 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Si" = ( -/obj/effect/turf_decal/borderfloor/full, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/floordetail/pryhole, -/turf/open/floor/plasteel, -/area/outpost/maintenance/fore) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "Sk" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "Sl" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/obj/structure/sign/poster/official/miners{ + pixel_x = 26 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Sn" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7324,17 +8783,13 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Sq" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) @@ -7347,26 +8802,30 @@ /turf/open/floor/wood, /area/outpost/crew/library) "Ss" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/structure/closet/emcloset/wall/directional/north, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/crew/bar) "SC" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 +/obj/machinery/light/dim/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 1 }, -/obj/effect/decal/cleanable/insectguts, -/obj/effect/turf_decal/floordetail/tiled, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/vacant_rooms) "SE" = ( -/turf/open/floor/ship/dirt, -/area/outpost/hallway/port) +/obj/structure/chair/bench/beige/directional/south, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "SG" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7398,25 +8857,32 @@ /obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/outpost/security) "SS" = ( /obj/structure/chair{ dir = 1 }, /obj/effect/landmark/ert_outpost_spawn, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/grimy, /area/outpost/security) "SV" = ( -/obj/structure/flora/grass/jungle, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "SW" = ( /obj/structure/rack, /obj/effect/spawner/random/food_or_drink/donkpockets, /obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) "SY" = ( /obj/machinery/light/small/directional/east, @@ -7430,12 +8896,11 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Tb" = ( -/obj/structure/flora/junglebush, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer2{ dir = 8 }, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/central) +/turf/open/floor/engine/air, +/area/outpost/engineering/atmospherics) "Td" = ( /obj/structure/bookcase/random, /obj/effect/decal/cleanable/dirt/dust, @@ -7446,78 +8911,126 @@ /obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/security) "Tg" = ( -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/plasteel, -/area/outpost/crew/cryo) +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "Th" = ( /turf/closed/indestructible/reinforced, /area/outpost/cargo/office) -"Tr" = ( -/obj/structure/railing{ +"Tk" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/effect/turf_decal/corner_steel_grid{ dir = 9 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Tp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"Tq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"Tr" = ( /obj/machinery/conveyor_switch{ id = "outpost2"; layer = 3.11; pixel_y = 9; pixel_x = -2 }, +/obj/structure/railing/thin{ + dir = 9 + }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "Ts" = ( -/obj/structure/chair/pew{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 9 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Tw" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/storage) "Tx" = ( -/obj/machinery/button/door{ - specialfunctions = 4; - normaldoorcontrol = 1; - id = "out1"; - dir = 1; - pixel_y = -21; - pixel_x = -8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/storage) -"TA" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/machinery/newscaster/directional/south, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"TA" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom" }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 9 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/effect/turf_decal/industrial/stand_clear{ +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "TD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7533,28 +9046,32 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "TE" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "TG" = ( -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) +"TL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "TM" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -7569,13 +9086,18 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "TU" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/engineering/atmospherics) +"TY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/item/radio/intercom/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, /turf/open/floor/plating, -/area/outpost/maintenance/central) +/area/outpost/hallway/central) "TZ" = ( /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 @@ -7585,25 +9107,8 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "Ua" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Uf" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "Ui" = ( /obj/machinery/disposal/deliveryChute{ name = "fun chute"; @@ -7619,8 +9124,16 @@ dir = 5 }, /obj/effect/turf_decal/steeldecal/steel_decals_central2, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) +"Ul" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/cockroach, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/outpost/maintenance/starboard) "Um" = ( /obj/structure/chair{ dir = 1 @@ -7633,7 +9146,10 @@ /area/outpost/maintenance/central) "Uq" = ( /obj/effect/spawner/random/vending/snack, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "Us" = ( /obj/structure/cable/yellow{ @@ -7653,30 +9169,24 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Ut" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Bar" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/bar) +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "Uv" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/plating, @@ -7685,7 +9195,8 @@ /turf/closed/indestructible/reinforced, /area/outpost/cargo) "UB" = ( -/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "UC" = ( @@ -7694,7 +9205,10 @@ id = "outpost2" }, /obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/structure/platform/ship_two{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) "UE" = ( /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ @@ -7705,7 +9219,8 @@ /obj/machinery/computer/hydrogen_exchange{ dir = 8 }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms/office) "UG" = ( /obj/structure/cable/yellow{ @@ -7720,11 +9235,11 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "UI" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, -/obj/effect/turf_decal/floordetail/tiled, /turf/open/floor/plasteel, /area/outpost/hallway/central) "UO" = ( @@ -7750,6 +9265,14 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"UR" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "UT" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7769,6 +9292,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"UV" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "UZ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7802,21 +9331,23 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Vg" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 +"Vm" = ( +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 1 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plasteel, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "Vp" = ( -/obj/structure/flora/grass/jungle, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Vq" = ( /obj/structure/bed/double/maint{ dir = 4 @@ -7832,76 +9363,90 @@ /area/outpost/maintenance/central) "Vr" = ( /obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) -"Vv" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"Vt" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Vx" = ( /obj/structure/railing{ dir = 9 }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"VG" = ( -/obj/structure/noticeboard{ - pixel_y = 26 +"Vy" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"VC" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"VM" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/newscaster/directional/south, +"VG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"VH" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"VJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 }, /turf/open/floor/plasteel, /area/outpost/hallway/central) "VN" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/crew/bar) +"VO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"VO" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/holosign/barrier/infinite{ - max_integrity = 500 +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/outpost/hallway/central) "VP" = ( /obj/structure/grille/indestructable, @@ -7911,9 +9456,9 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "VQ" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "VT" = ( @@ -7928,14 +9473,32 @@ "VW" = ( /obj/structure/chair/sofa/brown/directional/south, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/carpet/green, +/turf/open/floor/plasteel/grimy, /area/outpost/crew/bar) +"VZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Wa" = ( /obj/effect/spawner/random/trash/decal, /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/mouse/brown, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Wb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Wc" = ( /obj/machinery/recycler, /obj/machinery/conveyor/auto{ @@ -7952,9 +9515,10 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "Wf" = ( -/obj/machinery/light/dim/directional/north, -/turf/open/floor/ship/dirt/dark, -/area/outpost/hallway/port) +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "Wl" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -7967,42 +9531,33 @@ /obj/effect/turf_decal/steeldecal/steel_decals_central7, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Wm" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/industrial/stand_clear, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "Wt" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/neutral, /turf/open/floor/plasteel, /area/outpost/hallway/port) -"Wv" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 +"Ww" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/turf_decal/corner/opaque/white, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Wz" = ( +/obj/structure/sign/poster/random{ + pixel_x = 28 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) -"Wz" = ( -/obj/structure/barricade/wooden/crude, -/obj/effect/spawner/structure/window/reinforced/indestructable, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +"WB" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/crew/library) "WC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/binary/volume_pump, @@ -8030,29 +9585,18 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/security) -"WM" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "WO" = ( /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/outpost/maintenance/fore) "WR" = ( -/obj/structure/noticeboard{ - name = "refinery notice board"; - dir = 8; - pixel_y = 0; - pixel_x = 26 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/caution, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "WS" = ( @@ -8063,36 +9607,72 @@ /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"WU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "WV" = ( -/obj/effect/spawner/random/vending/snack, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, /area/outpost/hallway/central) "WW" = ( -/obj/effect/turf_decal/ihejirika_small, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/item/kirbyplants/random, +/obj/item/radio/intercom/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "WZ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/hooch{ + pixel_y = 8; + pixel_x = -3 }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/projectile/bullet/dart/syringe{ + pixel_y = 12; + pixel_x = 4 }, +/turf/open/floor/plating, +/area/outpost/crew/bar) +"Xb" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/medical) "Xd" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/plating/asteroid, @@ -8107,45 +9687,31 @@ "Xg" = ( /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) "Xl" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/neutral, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Xm" = ( -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/central) -"Xn" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/structure/sign/warning/nosmoking/burnt{ - pixel_y = -28 +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"Xm" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 9 }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/storage) "Xq" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -8176,19 +9742,17 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "Xy" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/disposal/bin, +/obj/machinery/newscaster/directional/west, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/turf/open/floor/plasteel/dark, +/area/outpost/crew/library) "Xz" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning, @@ -8206,39 +9770,65 @@ "XA" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/five, -/turf/open/floor/plasteel/mono, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) "XD" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/structure/sign/poster/random{ - pixel_x = 28 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "XE" = ( -/obj/structure/flora/grass/jungle, -/turf/open/floor/grass/ship/jungle, -/area/outpost/hallway/port) +/obj/machinery/conveyor{ + id = "outpost3"; + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) "XF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) "XI" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, /turf/open/floor/plasteel, /area/outpost/crew/janitor) +"XM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "XP" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -8256,25 +9846,38 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "XQ" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/structure/sign/poster/official/no_erp{ + pixel_y = 30 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) +"XR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "XS" = ( -/obj/structure/falsewall/reinforced, +/obj/structure/flippedtable{ + dir = 4 + }, +/obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/outpost/maintenance/central) "XV" = ( @@ -8285,13 +9888,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/security) -"XW" = ( -/obj/structure/chair/comfy/orange/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/outpost/crew/bar) "XZ" = ( /obj/structure/sign/painting/library{ pixel_y = -26 @@ -8304,46 +9900,71 @@ "Yd" = ( /turf/closed/indestructible/reinforced, /area/outpost/hallway/central) +"Yh" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Yj" = ( /obj/machinery/vending/cigarette, /obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "Yl" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Yn" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Yq" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "4-8" }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/black/three_quarters{ - dir = 8 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 8 +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"Ys" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "1-4" }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/open/floor/plating, +/area/outpost/hallway/central) "Yt" = ( /obj/structure/railing{ dir = 4 @@ -8363,17 +9984,18 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "Yv" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/neutral, /turf/open/floor/plasteel, /area/outpost/hallway/port) "Yw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/brown/full, -/turf/open/floor/plasteel/patterned, +/obj/effect/turf_decal/borderfloor{ + dir = 10 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, /area/outpost/cargo) "YC" = ( /obj/effect/spawner/random/trash/decal, @@ -8384,28 +10006,22 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "YD" = ( -/obj/structure/chair/sofa/brown/left/directional/south, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/green, -/area/outpost/crew/bar) +/obj/item/reagent_containers/pill/floorpill, +/obj/structure/chair/sofa/brown/old/directional/east, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "YE" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, +/obj/machinery/newscaster/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 - }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/vacant_rooms) "YF" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -8417,56 +10033,90 @@ /obj/effect/decal/cleanable/insectguts, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"YK" = ( +/obj/item/kirbyplants/random, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "YL" = ( /obj/structure/falsewall/reinforced, /turf/open/floor/plating, /area/outpost/maintenance/fore) "YN" = ( -/obj/structure/flora/grass/jungle, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 +/obj/structure/chair/sofa/brown/old/corner/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"YP" = ( +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"YQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/grass/ship/jungle, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"YX" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +"YV" = ( +/obj/machinery/camera/autoname{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Ze" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-8" }, /turf/open/floor/plasteel, +/area/outpost/hallway/central) +"YX" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable/yellow, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/camera/autoname{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) -"Zh" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/disposalpipe/segment{ +"YY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"Ze" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"Zh" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "Zk" = ( /obj/structure/disposalpipe/trunk{ @@ -8482,12 +10132,26 @@ icon_state = "4-8" }, /obj/machinery/light/directional/north, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 + }, /turf/open/floor/plasteel, /area/outpost/security) "Zm" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/neutral, -/turf/open/floor/plasteel, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/steeldecal/steel_decals9, +/obj/effect/turf_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "Zo" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -8499,6 +10163,22 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Zt" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "Zu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -8520,23 +10200,41 @@ /area/outpost/storage) "Zx" = ( /obj/structure/falsewall/reinforced, -/turf/open/floor/plating, +/turf/closed/indestructible/reinforced/rust, /area/outpost/cargo/office) "ZE" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/effect/turf_decal/corner/opaque/black{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"ZF" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/security) "ZG" = ( /obj/structure/cable/yellow{ icon_state = "6-9" }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/maintenance/fore) +"ZI" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "ZJ" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -8559,167 +10257,41 @@ /turf/open/floor/carpet/green, /area/outpost/crew/bar) "ZM" = ( -/turf/closed/indestructible/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/outpost/crew/bar) "ZN" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "ZP" = ( /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) "ZU" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"ZY" = ( -/obj/effect/turf_decal/corner/opaque/grey/full, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/sign/poster/random{ - pixel_y = 30 - }, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) - -(1,1,1) = {" -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -mC -"} -(2,1,1) = {" +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"ZW" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"ZY" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) + +(1,1,1) = {" mC mC mC @@ -8842,7 +10414,7 @@ mC mC mC "} -(3,1,1) = {" +(2,1,1) = {" mC mC mC @@ -8965,7 +10537,7 @@ mC mC mC "} -(4,1,1) = {" +(3,1,1) = {" mC mC mC @@ -9088,7 +10660,7 @@ mC mC mC "} -(5,1,1) = {" +(4,1,1) = {" mC mC mC @@ -9211,7 +10783,7 @@ mC mC mC "} -(6,1,1) = {" +(5,1,1) = {" mC mC mC @@ -9334,7 +10906,7 @@ mC mC mC "} -(7,1,1) = {" +(6,1,1) = {" mC mC mC @@ -9457,7 +11029,7 @@ mC mC mC "} -(8,1,1) = {" +(7,1,1) = {" mC mC mC @@ -9580,7 +11152,7 @@ mC mC mC "} -(9,1,1) = {" +(8,1,1) = {" mC mC mC @@ -9703,7 +11275,7 @@ mC mC mC "} -(10,1,1) = {" +(9,1,1) = {" mC mC mC @@ -9826,7 +11398,7 @@ mC mC mC "} -(11,1,1) = {" +(10,1,1) = {" mC mC mC @@ -9949,7 +11521,7 @@ mC mC mC "} -(12,1,1) = {" +(11,1,1) = {" mC mC mC @@ -10072,7 +11644,7 @@ mC mC mC "} -(13,1,1) = {" +(12,1,1) = {" mC mC mC @@ -10195,7 +11767,7 @@ mC mC mC "} -(14,1,1) = {" +(13,1,1) = {" mC mC mC @@ -10318,7 +11890,7 @@ mC mC mC "} -(15,1,1) = {" +(14,1,1) = {" mC mC mC @@ -10441,7 +12013,7 @@ mC mC mC "} -(16,1,1) = {" +(15,1,1) = {" mC mC mC @@ -10564,7 +12136,7 @@ mC mC mC "} -(17,1,1) = {" +(16,1,1) = {" mC mC mC @@ -10687,7 +12259,7 @@ mC mC mC "} -(18,1,1) = {" +(17,1,1) = {" mC mC mC @@ -10810,7 +12382,7 @@ mC mC mC "} -(19,1,1) = {" +(18,1,1) = {" mC mC mC @@ -10933,7 +12505,7 @@ mC mC mC "} -(20,1,1) = {" +(19,1,1) = {" mC mC mC @@ -11056,7 +12628,7 @@ mC mC mC "} -(21,1,1) = {" +(20,1,1) = {" mC mC mC @@ -11179,7 +12751,7 @@ mC mC mC "} -(22,1,1) = {" +(21,1,1) = {" mC mC mC @@ -11302,7 +12874,7 @@ mC mC mC "} -(23,1,1) = {" +(22,1,1) = {" mC mC mC @@ -11425,7 +12997,7 @@ mC mC mC "} -(24,1,1) = {" +(23,1,1) = {" mC mC mC @@ -11548,7 +13120,7 @@ mC mC mC "} -(25,1,1) = {" +(24,1,1) = {" mC mC mC @@ -11671,9 +13243,7 @@ mC mC mC "} -(26,1,1) = {" -mC -mC +(25,1,1) = {" mC mC mC @@ -11726,6 +13296,10 @@ mC mC mC mC +NH +NH +NH +NH mC mC mC @@ -11791,10 +13365,10 @@ mC mC mC mC +"} +(26,1,1) = {" mC mC -"} -(27,1,1) = {" mC mC mC @@ -11840,17 +13414,15 @@ mC mC mC mC +HD mC mC mC mC mC mC +rt mC -NH -NH -NH -NH mC mC mC @@ -11917,14 +13489,7 @@ mC mC mC "} -(28,1,1) = {" -mC -mC -mC -mC -mC -mC -mC +(27,1,1) = {" mC mC mC @@ -11966,7 +13531,14 @@ mC mC mC mC +HD +HD +HD +HD mC +HD +HD +HD mC mC mC @@ -12040,9 +13612,7 @@ mC mC mC "} -(29,1,1) = {" -mC -mC +(28,1,1) = {" mC mC mC @@ -12083,20 +13653,22 @@ mC mC mC mC +HD mC HD HD +HD +HD +HD +HD +HD +HD +HD +HD mC -mC -mC -mC -mC -mC -mC -mC -mC +HD rt -mC +HD mC mC mC @@ -12163,7 +13735,7 @@ mC mC mC "} -(30,1,1) = {" +(29,1,1) = {" mC mC mC @@ -12204,22 +13776,22 @@ HD HD HD mC -mC -mC -mC HD HD HD -mC -mC -mC -mC HD HD -mC -mC -rt -mC +HD +HD +HD +HD +HD +HD +HD +HD +HD +em +HD mC mC mC @@ -12286,7 +13858,7 @@ mC mC mC "} -(31,1,1) = {" +(30,1,1) = {" mC mC mC @@ -12328,22 +13900,22 @@ HD HD HD mC -mC -mC -mC HD HD HD HD -mC HD HD HD -mC -mC -rt -mC -mC +HD +HD +WZ +zI +HD +HD +HD +HD +HD mC mC mC @@ -12409,7 +13981,7 @@ mC mC mC "} -(32,1,1) = {" +(31,1,1) = {" mC mC mC @@ -12452,28 +14024,28 @@ HD HD HD HD -mC -mC -mC -HD -HD HD HD HD HD HD HD +ZM +wv +wv +wv +wv +wv HD -em HD Cc -je -je -je -je +Ay +Ay +Ay +Ay Cc HD -em +Cc mC mC mC @@ -12532,7 +14104,7 @@ mC mC mC "} -(33,1,1) = {" +(32,1,1) = {" mC mC mC @@ -12577,26 +14149,26 @@ HD HD HD HD -mC -HD -HD -HD HD -ZM -ZM -ZM -ZM HD HD HD ZM -oa -XW -XW -lw -ZM +Cc +Cc +Cc +Cc ZM ZM +wv +Cc +lJ +je +je +ZY +Cc +Cc +Cc HD mC mC @@ -12655,7 +14227,7 @@ mC mC mC "} -(34,1,1) = {" +(33,1,1) = {" mC mC mC @@ -12703,23 +14275,23 @@ HD HD HD HD -HD -HD -ZM -ib -sj -ZM -ZM -HD -HD +NK +YL +Cc +yh +Ss +Cc +Cc ZM -GE +wv +VN +oa tw BX -Hh +lw qg Or -ZM +Cc HD HD mC @@ -12778,7 +14350,7 @@ mC mC mC "} -(35,1,1) = {" +(34,1,1) = {" mC mC mC @@ -12826,25 +14398,25 @@ HD HD HD HD -HD +NK yq -OK -FD -HJ -Rf -ZM -ZM -ZM -ZM -EV +Ch +ib +sj +Rf +Cc +Cc +Cc +Cc +GE GY GW -Hh +lw rs Oh +VN ZM HD -HD em rt rt @@ -12901,7 +14473,7 @@ mC mC mC "} -(36,1,1) = {" +(35,1,1) = {" mC mC mC @@ -12949,26 +14521,26 @@ HD HD HD HD -HD -Jq -ZM -ZM +NK +hj +za +za gE Fs -ZM +Cc nn LE -ZM -iq -Yn -BR -ir +Cc +EV +bL +ug +Hh PD ur +Cc ZM HD HD -HD mC mC mC @@ -13024,7 +14596,7 @@ mC mC mC "} -(37,1,1) = {" +(36,1,1) = {" mC mC mC @@ -13074,25 +14646,25 @@ mP Zs Iu NN -lM -ZM -ZM +ir +za +za HX -ZM +Cc Xe wA -ZM -ZM +Cc +Cc Ra -ZM -ZM -ZM -ZM -ZM +Cc +Cc +Cc +Cc +Cc +wv +HD HD HD -mC -mC mC mC NH @@ -13147,7 +14719,7 @@ mC mC mC "} -(38,1,1) = {" +(37,1,1) = {" mC mC mC @@ -13180,7 +14752,7 @@ HD HD HD Cm -zR +eE Xd Gm SL @@ -13196,22 +14768,23 @@ NK NK NK cS -EP +gZ VT -ZM +Cc JA zO uf RA -AT +sl OI SM no th +Cc +uL +Cc ZM -KK -ZM -HD +Ix HD HD mC @@ -13268,9 +14841,8 @@ mC mC mC mC -mC "} -(39,1,1) = {" +(38,1,1) = {" mC mC mC @@ -13321,7 +14893,7 @@ NK MK dR Ng -ZM +Cc ZK Li ED @@ -13332,11 +14904,11 @@ GX tu zq xW -Qk -ZM -ZM -ZM -ZM +KK +Cc +VN +Cc +Cc Cc mC mC @@ -13393,7 +14965,7 @@ mC mC mC "} -(40,1,1) = {" +(39,1,1) = {" mC mC mC @@ -13434,7 +15006,7 @@ hq HD NK rQ -kd +wV Fl Ab bV @@ -13444,7 +15016,7 @@ NK NU ue AP -ZM +Cc wT Li cO @@ -13454,13 +15026,13 @@ mJ hZ PO UO -ZM -ZM -ZM -PV -yh -JM -je +Cc +Cc +Cc +zC +Jq +sk +Ay mC mC mC @@ -13516,7 +15088,7 @@ mC mC mC "} -(41,1,1) = {" +(40,1,1) = {" mC mC mC @@ -13577,13 +15149,13 @@ Iz un ii bz -ZM +Cc sb -iY -Li +CK +PV VW -Bu -je +JM +Ay mC mC mC @@ -13639,7 +15211,7 @@ mC mC mC "} -(42,1,1) = {" +(41,1,1) = {" mC mC mC @@ -13678,7 +15250,7 @@ HD HD hq HD -NK +Ro YF NK NK @@ -13691,22 +15263,145 @@ ZJ PT hD Cc -Cg -Li -nR -jR -yE -TD -ee -dw -sF -jI -Wd +Cg +Li +nR +jR +yE +TD +ee +dw +sF +jI +Wd +CK +PV +VW +Bu +Ay +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +"} +(42,1,1) = {" +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +mC +HD +HD +HD +HD +hq +hq +hq +hq +HD +HD +Ro +YL +NK +NK +ow +DW +NK +Rs +LH +bn +Ro +bS +eU +VP +NQ +Cc +MD +jj +Bf +dn +fP +mb +IE +hS +PO +Cc +Oy iY -Li -VW +GK +rN HF -je +Ay mC mC mC @@ -13792,46 +15487,46 @@ HD HD HD HD -hq +HD hq hq hq HD -HD -NK -YL -NK +Ro +Ro +BR +ho NK -ow -DW +eD +Mq NK -Rs -LH -bn +fw +ZG +Xg +Ro +Ro +Ak NK -bS -eU -VP -NQ +Ro +za +za +za Cc -MD -jj -Bf -dn -fP -mb -IE -hS -PO -ZM -Oy -au -FB -YD -qv -je -mC -mC +Cc +Cc +Hi +Cc +Cc +Cc +Cc +Cc +za +za +za +Cc +Cc +HD +HD mC mC mC @@ -13919,43 +15614,43 @@ HD hq hq hq -HD -NK -NK +Ro +Ro +Ui gC -wq -NK -eD -Mq -NK -fw -ZG -Xg +ho NK +zY +rW NK -Ak +qb +Qv +tG +aE +gA +cR +zR NK NK -Cc -ZM -ZM -ZM -ZM -ZM +Tp +TL +TY +py +yf Ut -ZM -ZM -ZM -ZM -ZM -ZM -Cc -Cc -Cc -Cc -mC -mC -mC +lO +Ja +As +jD +rV +py +Sb +be +Ys +em +HD +HD +HD mC mC mC @@ -14038,44 +15733,44 @@ HD HD HD HD -HD +NK NK YL +Ro +Ro +Ro +RO +IN +ip NK +IM NK NK -Ui -IN -mf +Pt +ZE NK -zY -Qg NK -qb -Qv -tG -aE -gA -cR +NK +sG TG -rW NK -Uf -yB -Ji -AU -UI -WZ -lh -pm -pm -pm -ga -ga +au +CM +ei +wZ +VC +OF +pL +VZ +fM +Hc +Hc +vq rZ -ZN -Yd -HD +rZ +AS +RD +em HD HD HD @@ -14157,7 +15852,6 @@ mC mC mC mC -mC HD HD HD @@ -14168,14 +15862,14 @@ LR LR NK NK -QZ +NK kE NK NK YF hz -nL -oN +Xl +kR xu NK Ef @@ -14183,25 +15877,27 @@ TZ If at lq -Wm -tA +aX +dS +cL vB -rj -rj -xM -XQ -Hi -BJ -AN -Hi -BJ +oh +iK +Ww +Pc +Pc +Pc +li +Nn +Bh zL -sk -Yd -aI -aI +Hs +Tx +WB aI aI +WB +em HD HD mC @@ -14212,7 +15908,6 @@ mC mC mC mC -mC HD HD mC @@ -14280,7 +15975,6 @@ mC mC mC mC -mC HD HD HD @@ -14301,30 +15995,32 @@ UG NK NK NK +Tw +Tw +Tw Kx Kx Kx -Kx -Kx -Kx -OG -Cn +YY +kL +aQ +Yd +Yd Yd -dU -xZ -qD -qD Po -MO -BE +Po +Po Yd -tZ -ry Yd +Yd +zv +Hs +Jt +WB uv wa tr -aI +em HD HD HD @@ -14334,7 +16030,6 @@ mC mC mC mC -mC HD HD HD @@ -14404,7 +16099,6 @@ mC mC mC mC -mC HD HD HD @@ -14415,48 +16109,49 @@ xm NK NK NK -NK +Ro Yl Hv FS -NK +Ro ZU -Sd +te oU Hv -Kx +Tw jg DH Qx Hk -Kx -JE +Tw +CB +cL AO +Ks Yd +ks +ks +ks +ks +GL Yd -fI -fI -fI -fI -fI -Yd -Yd +oN GT -Cl -Yd +Hs +YY +WB JW km Td +WB +WB aI aI -aI -em mC mC mC HD HD -mC HD HD HD @@ -14527,7 +16222,6 @@ mC mC mC mC -mC HD HD HD @@ -14538,36 +16232,38 @@ uE NK EX tS +Ro +Ro +Ro NK -NK -NK -NK -NK -ip -xu +Ro +hP +MW Rg Kx -Kx +Tw +Xm +Ml Ml aw -aw -zr -Kx -Ch -VM -Yd -rr -lA -wF +Tw +mx +cL +tl ai -hO -uD -cs Yd -ZY -FH +ks +ks +ks +ks +ks Yd -aI +YK +TE +Hs +bh +WB +WB AM sB iw @@ -14576,8 +16272,7 @@ Zu aI Fq Fq -aI -HD +em HD HD HD @@ -14650,7 +16345,6 @@ mC mC mC mC -mC HD HD HD @@ -14671,26 +16365,28 @@ fq WS LU RU -Nv +jM ta JV -um +AT Kx -Ss +jf +cL tl pC -YN -uD -hO -to -ai -uD -uD Yd -xo -xJ -uX -aI +ks +ks +ks +ks +ks +Yd +fs +TE +dj +Ft +Xy +WB Ne pt et @@ -14699,8 +16395,7 @@ UU aI pG ky -aI -HD +em HD HD HD @@ -14774,46 +16469,47 @@ mC mC mC mC -mC HD HD HD -NK +Ro it JF NK Rg NK -NK -NK Ro -za +Ro +Ro +PS NK NK NK WS Kx cm +FH Is Rr wX -fi oK -AS -we -Yd -Tb -uD -uD -ai +wF +Vp +tl ai -Xm -lA Yd +ks +ks +ks +ks +ks +Yd +ai TE -Zh +Hs WV -aI +nL +WB lk rg jU @@ -14822,8 +16518,7 @@ nT aI HL Sr -aI -HD +HC HD HD HD @@ -14897,11 +16592,10 @@ mC mC mC mC -mC HD HD HD -NK +Ro aB KI PF @@ -14909,33 +16603,35 @@ TT NK mU Gn -NK +Ro Rg Hv hk -NK +Ro Rg Kx Kx +zr pl pj RJ -Tx Kx -on +Oi +iL LX +jd Yd +ks +ks +ks +ks +ks Yd -fI -fI -fI -fI -fI -Yd -Yd +to uW Zh -gz +hI +KW aI fk SG @@ -14945,8 +16641,7 @@ sV LP ar XZ -aI -HD +HC HD HD mC @@ -15020,7 +16715,6 @@ mC mC mC mC -mC HD HD HD @@ -15045,34 +16739,35 @@ Zv LB LB Kx -tt -Ph +dM +BP +UV Yd -dO -oT -Ts -Ts -Ts -bq -rG +fj +fj +HO +HO +HO Yd -rK -kQ Yd -aI -sO -aI -aI -aI +Yd +MZ +wI +oM aI aI +sO aI aI +WB +WB +WB aI +WB +em +HD HD HD -mC -mC mC mC mC @@ -15143,7 +16838,6 @@ mC mC mC mC -mC HD HD HD @@ -15162,36 +16856,39 @@ kM NK wq LH -Kx +Tw mm Ic ua iH Kx -KY +Vm +iL cl -LD -LD -rj -aU -cc -YE -uN -LD -GK -mp -yk -vr -sz -GU +jJ +WU +sw +Ej +OS +OS +sq +kl +zG +IL +Rn +mZ +qM +oZ VO -NT -Nc -HD -HD -HD -HD -HD +sS +UR +ZW +il +sS +jC +EI +pm +lh HD HD mC @@ -15235,8 +16932,6 @@ mC mC mC mC -mC -mC "} (55,1,1) = {" mC @@ -15265,7 +16960,6 @@ mC mC mC mC -mC HD HD HD @@ -15279,42 +16973,45 @@ NK ds ci NK -PS -NK -NK -NK +Py +Ro +Ro +Ro NK NK Kx +Tw +Tw Kx Kx -Kx -Kx -Kx -or -WM -Df -Kh -OM -ZE -ei -Rv +Tw +Kv +jE +Wb +Wb +Hz +Wb +Wb +YQ yR -Vg -nK -qT -Ua +yR +qk +yR +PW +HQ HR -FQ +yX cg -HQ -NT -Nc -HD -HD -HD -HD -HD +Yh +Gr +Vt +Vt +wr +CN +Tk +OG +OG +lh HD HD HD @@ -15358,8 +17055,6 @@ mC mC mC mC -mC -mC "} (56,1,1) = {" mC @@ -15388,7 +17083,6 @@ mC mC mC mC -mC HD HD HD @@ -15410,36 +17104,38 @@ EP Mw NK Yl -NK +Yd +JE bc -IY -vV +fj +fj tC -LL -LL -LL -LL -jL -HG -Bj -Yd -cq -cq -AI -cq -cq -cq -KF -gq -gq -gq -HD -HD -HD -HD -HD -HD -HD +fY +jb +Dg +yY +yY +EB +Eq +py +jz +py +yZ +hd +gu +Rw +XM +YV +wp +YP +Nf +Op +ad +AB +ly +ly +gz +lh HD HD mC @@ -15482,7 +17178,6 @@ mC mC mC mC -mC "} (57,1,1) = {" mC @@ -15510,7 +17205,6 @@ mC mC mC mC -mC HD HD HD @@ -15530,39 +17224,40 @@ NK nb Vr XF -rC -NK -Au -NK -GM -CU -LL -LL -LL -XE -XE -Ez -SC -uL -Xl -wN +rC +NK +Au +fj +Yd +hW +Yd +fj +TA +Yd +fj +fj +Yd +jL +HG +Zt +Yd cq -yc -bs cq -dl +AI cq -Ix -Ai -CK +cq +OT +KF gq gq -HD -HD -HD -HD -HD -HD +gq +rv +LK +LK +Nv +LK +LK +rv HD HD HD @@ -15632,7 +17327,6 @@ mC mC mC mC -mC HD HD HD @@ -15652,40 +17346,41 @@ cI NK xK NK -LH -LH +ve +ve LH YI -NK +fj +ZN od Si -LL -XE -Oa -XE -Om -Ez -kR -vX -ug -Yj +FQ +Pi +sL +fj +xU +TE +Nc +Bp +Tq +wN cq -zS -kA -zI -Ls +yc +bs cq +dl +OT XI la Rt -QA gq -HD -HD -HD -HD -HD -HD +gq +Cr +is +Xb +Ko +Df +rv HD HD HD @@ -15755,7 +17450,6 @@ mC mC mC mC -mC HD HD HD @@ -15779,36 +17473,37 @@ NK LH NK nZ -NK +fj +Yd tH -sG -LL +Yd +XQ vR -SE -XE -XE -Ez +Oa +Yd +yk +Ba Eo -jH +ZI Ci -Yd -cq -cq -cq -sP -Mu -DV +Yj +OT +zS +OM +Ca +Ls +OT EG Eg dD Gu gq -HD -HD -HD -HD -HD -HD +SV +vK +ty +VH +WW +Ck HD HD HD @@ -15877,7 +17572,6 @@ mC mC mC mC -mC HD HD HD @@ -15891,7 +17585,7 @@ hq qp NK NK -NK +YL NK NK Hv @@ -15900,38 +17594,39 @@ NF WO NK NK -Th -Th -Th -Th -Zx -Th -CL -XE -LK +NK +NK +fj +nc +rm +Yd +AL +FN +bq +Yd SE -LL +TE zv -mA -Qn -zg -ks -ks -GL -cq -IU -cq -cq -cq -cq +VG +QF +OT +OT cq cq -IW -HD -HD -HD -HD -HD +sP +Mu +DV +xZ +fd +Wf +Fn +gq +um +Tg +uD +ti +Aj +Ck HD HD HD @@ -15999,7 +17694,6 @@ mC mC mC mC -mC HD HD HD @@ -16024,37 +17718,38 @@ Vf Gb sf Th -gP -qH -Fv -rU Th -XE -gb -nU -EC -LL +Th +gn +Zx +Th +Ai +Yd +Yd +Yd +Yd +Yd +bt VG -Bp -fE -zg -ks -ks -ks +QT +OT +sc +mo +aq cq -KW -Ks -zS +IU cq -iQ -jx -vT -IW -HD -HD -HD -HD -HD +cq +cq +cq +cq +OT +OT +nK +Kl +fI +rv +Ck HD HD HD @@ -16121,7 +17816,6 @@ mC mC mC mC -mC HD HD HD @@ -16147,37 +17841,39 @@ Px MM Md Th -QR -MB -KV -Th +gP +qH +Fv +rU Th -XE +Jo +Yd CL XE -XE -LL +cG +Yd ms -Bp -QT -zg -ks -ks -ks +VG +ov +DO +OK +sW +jT cq -Mt -Us -So +GU +Bj +zS cq -RV -dK -uV -IW -HD -HD -HD -HD -HD +iQ +jx +vT +cq +rv +rv +rv +rv +hq +qp HD HD HD @@ -16220,7 +17916,6 @@ mC mC mC mC -mC "} (63,1,1) = {" mC @@ -16244,7 +17939,6 @@ mC mC mC mC -mC HD HD mC @@ -16257,9 +17951,9 @@ HD HD HD HD -HD -HD -hq +PI +PI +BJ Uw Uw Uw @@ -16270,40 +17964,41 @@ Uw Uw KZ Th -uQ +QR MB -Xr +KV Th -SE -SE -XE -SE -CL +Th +CI +Yd +JX +ls +po Ez -It -wn +VJ +su Jr cq +ga +sW +QS cq +Mt +Us +So cq -cq -cq -ER -XP -cq -cq -Ao -Vq -IW +RV +dK +uV IW +Ha +hq +hq +hq +Ha +hq HD HD -HD -mC -mC -HD -HD -mC mC mC mC @@ -16376,13 +18071,12 @@ mC mC mC mC -mC -HD -HD -HD HD HD HD +PI +cA +Dp Uw DP dg @@ -16392,35 +18086,39 @@ Yt vI Xv QL -cV -GS -nd -ie Th -Wf -jM +uQ +MB +Xr +Th +FF +ph +Yd JX nU -JX -Ez +XR +Yd AU -ls +VG uy cq -gR -sn -lB -om -sR -Rh -gR cq -DV -IW -IW +OT +OT cq +ER +XP cq cq +Ao +Vq +cq +IW +hq +hq +qp +hq +hq HD HD mC @@ -16464,9 +18162,6 @@ mC mC mC mC -mC -mC -mC "} (65,1,1) = {" mC @@ -16500,54 +18195,54 @@ mC mC mC mC -mC -HD -HD HD HD HD +It +eX Uw kT -zo +cc UC UC UC -rN +tA oS hb -cV -rR -Ni -JU +GQ +GS +nd +ie Th -ph -SE -SV -ic -Vp -Ez +LY +or +Yd +JX +nU +MP +Yd UI Sk zb cq +gR sn -wR -OY -hs -FY -XP -Mt +lB +om +sR +Rh +gR cq -tU -hj -cK +DV +cq +TU TU OC -cq -HD -HD -mC -mC +TU +TU +TU +TU +TU mC mC mC @@ -16621,56 +18316,56 @@ mC mC mC mC -mC -HD -HD HD HD HD HD HD +Dp +Dp Uw FI -zC +qW Tr tT tT jK qq md -cV -cV -Th -ag +GQ +rR +Ni +JU Th -LL -LL -LL -GB -LL -LL -sH -iI -OH -cq -FF -cq -cq -cq -cq -Ct -cq -cq +MO +rK +Yd +qN +rr +od +Yd +wS +Bp +MI +OT +sn +wR +OY +hs +FY +XP +Mt +OT sm -tv -cq +rb +lM IH kx -cq -HD -HD -HD -mC +lA +Bt +BZ +PE +TU mC mC mC @@ -16747,53 +18442,53 @@ mC mC mC HD -HD -HD -HD -HD -HD +CP +xM +bN +Dp Uw fR -zC +qW KS +cK +uz uz -UB -Yw Yw UT -TM -vZ -uj -Ip -IM -bL -CI -xr -uA GQ GQ -eq -TA -He -cq -WW -cq -lX -YC -cq -Sn -nM +Th +ag +Th +Yd +Yd +Yd +Yd +fj +fj +fj +sH +iI +OH +OT +sn cq +OT +OT +OT +Ct +OT +OT XS -cq -cq -cq -cq -cq -HD -HD -HD -mC +tv +TU +tZ +cV +Ua +we +PE +PE +TU mC mC mC @@ -16870,54 +18565,54 @@ mC mC HD HD -HD -HD -HD -HD -HD +qh +EZ +aR +zg Uw jo -zC +qW KS +KY +eG eG -sl -xf xf -Vv -op -cG -Xz -wC +nq +TM +vZ +uj +tU +mq dW hJ QY EH -gr -QY -QY -AL -Lu +br +mq +ID +eg +nt hA +OT +sn cq -jd +lX +YC cq -lx -Mt +Sn +nM cq -FN -rD -Mm xy -np -sn cq +TU +TU +qT +we +TU +TU +TU +TU HD -HD -HD -HD -HD -mC -mC mC mC mC @@ -16993,48 +18688,50 @@ mC mC HD HD -HD -HD -HD -HD -HD +fE +jS +de +zg Uw Ms -oS +yB cr yS +on tN VQ CV -wv +op WR -gW -uj +Xz +fi qA Zm yV rM -nc +Ze IB -uU -Zm -Qc +rM +rM +Ze HZ YX cq -sn -ER -zS +Rv +cq +lx Mt cq -bJ -jC -tm -wi +vV +rD +Mm +zo np -hY -cq -HD +sn +TU +Tb +Qk +TU HD HD HD @@ -17080,8 +18777,6 @@ mC mC mC mC -mC -mC "} (70,1,1) = {" mC @@ -17117,49 +18812,49 @@ mC mC HD HD -HD -HD -HD -HD +aU +bI +zg Uw Yu Dm +Dm eQ mN dZ -oS -gZ -Uw -Uw -Uw -LL -Uq -Aw -LL -lG -lG -lG -lG -lG -BM -Ky -yj -wK -wK -wK -wK -Rb -cq -cq -Kz -cq -cq -cq -cq +GM +DZ +gf +CU +uj +kA +sr +sr +EC +Kh +He +tm +Wz +cB +eg +nt +hA cq -HD -HD -HD +sn +ER +zS +Mt +OT +bJ +Qg +mp +wi +np +hY +TU +Qk +Qk +TU HD HD mC @@ -17240,48 +18935,49 @@ mC mC mC HD -HD -HD -HD -HD +vX +Lm +yU Uw +Lu uw -qN -UB +js UB +qv gT FE -VN Uw -HD -HD -LL +oT +NI LL LL +Uq +Aw LL lG -wY -Tg -Pt -PA -rm -Kl -hW -iV -Gi -WC -Fx -Zk +mg +mg +lG +lG +BM +Ky +yj wK -KJ -pA -Mt -Mt -tk -Ap +wK +MU +MU +Rb +OT cq -HD -HD +Kz +OT +OT +cq +cq +TU +TU +TU +TU HD HD mC @@ -17327,7 +19023,6 @@ mC mC mC mC -mC "} (72,1,1) = {" mC @@ -17364,49 +19059,49 @@ mC mC HD HD -HD -HD -HD +pM +yU Uw -PI +cs +hM js -UB -yv -Sl -gO -aq -Uw -HD -HD -HD -HD -HD -HD -lG +EK +yv +gT +gO +Uw +QA +LL +LL +LL +LL +LL +LL +mg xI kh MQ PA -Qa -LY +GO +nt wu iV -ZP -tj -pF -Fa +Gi +WC +Fx +Zk wK -Kd -KC -IJ -jn -yQ -bC +KJ +pA +Mt +Mt +tk +Ap cq HD HD HD -mC +HD mC mC mC @@ -17483,53 +19178,53 @@ mC mC mC mC -mC -mC -mC -HD HD +mC HD HD +pM +pM Uw -NI -CV -Yw +wY +hM +EK +EK Di -uk +gT gO -rP Uw -HD -HD -HD -HD -HD -HD -lG +CX +ou +LL +Pl +PI +rB +dc +mg aM PQ nz -ww -Wv -qR -lJ +PA +wC +nt +wu iV -Pw -AW -UE -UZ +ZP +tj +pF +Fa wK -RW -Iv -Ke -mT -Um -va +Kd +KC +IJ +jn +yQ +bC cq HD HD HD -HD +mC mC mC mC @@ -17603,51 +19298,51 @@ mC mC mC mC -mC -mC -mC -mC -mC -mC -mC +rG +rG +em HD HD HD +PI +yU +yU Uw -Oi -Dp -tI +HJ +uw +EK tI -RO +dO +gT rk -bi Uw -HD -HD -HD -HD -HD -HD -lG +CX +hf +LL +Ip +RL +pB +pB +mg HB IS vd -lG +ww LS DF Lg -wK iV -iV -wK -Ht +Pw +AW +UE +UZ wK -DL -sn -aZ -Pm -sn -tk +RW +Iv +Ke +mT +Um +va cq HD HD @@ -17726,51 +19421,51 @@ mC mC mC mC -mC -mC -mC -mC -mC -mC -mC -mC -HD +rG +uX +xr +YD +YN HD +PI +mG +zg Uw -OO -oS -ca -ca +cs +hM +js +hM ca -fd -BZ Uw -HD -HD -HD -HD -HD -wL -wL -wL -wL -wL -wL +Uw +Uw +Jh +RR +KG +Ts +RL +wP +EW +lG +ic +kQ +QZ +lG go nt jO -gf -GQ -GQ -Ko -Xn -cq -cq -Wz -Wz -Wz -Wz -cq +wK +Fh +iV +wK +Ht +wK +DL +sn +aZ +Pm +sn +tk cq HD HD @@ -17848,54 +19543,53 @@ mC mC mC mC -mC -mC -mC -mC -mC -HD -HD -HD -HD -HD -HD +rG +rG +FM +ed +bv +Qi +vr +PI +PI +zg Uw +cs hM -CX -CX -Ca -aP -CX -aX +js +hM +ca Uw -HD -HD -HD +iN +Fu +wO +CS +PI +PI +wL +bi +EW +EW +wL wL wL wL -rv -rb -Bt -Xy -Jp Sq Yq Rc OP -QY -EH +RS +RS Nu PG -ey -Jo +cq +cq DA DA DA DA -fN -RG -HD +cq +cq HD HD HD @@ -17943,6 +19637,7 @@ mC mC mC mC +mC "} (77,1,1) = {" mC @@ -17971,50 +19666,50 @@ mC mC mC mC -mC -mC -mC -mC -HD -HD -HD -HD -HD -HD -HD -Uw -Uw -Uw +rG +RT +vS +fT +oY +hX +kV +qe +PI +qD Uw Uw Uw +Ph Uw Uw Uw -HD -HD -HD +EU +kK +kN +ll +CF +ab wL dP bA -fG -yN -XA +fN +YE +SC di -wL +Jp Fi vp kb XD -pr +Ze Ze aS pn -mB +ey RY Wt -Ay -iG +Wt +Wt Wt Yv RG @@ -18094,54 +19789,53 @@ mC mC mC mC -mC -mC -mC -mC -mC -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -mC -nq +rG +RT +ex +Hp +qR +qR +qR +DD +qD +yU +eY +yU +yU +eY +zp +zg +qD +Hn +yU +yU +bP +Kb +oL +wL Cp NV fG -mv -SW +yN +XA xk wL -pS -Am -Lh -Lh -Lh -Lh -fh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -HD +uk +yL +AN +eq +uU +Yn +aP +Qn +mB +RY +Cn +Sl +Wt +Cn +Yv +RG HD HD HD @@ -18189,6 +19883,7 @@ mC mC mC mC +mC "} (79,1,1) = {" mC @@ -18217,52 +19912,52 @@ mC mC mC mC -mC -mC -mC -mC -mC -mC -mC -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD -HD +rG +mA +hw +tz +oy +Jx HD HD +em HD -mC -nq +Dp +iG +iG +xN +eY +zg +PI +FB +OO +OO +qs +vz +oL +wL pg pg fG -rp -gt +mv +SW ev wL +pS +Am +pO +Lh +Lh +Lh +fh +Lh +Lh +Lh Lh Lh Lh -Le -uI -Bc -mW -xc Lh -BO -Ia Lh -zD -Ff -By Lh HD HD @@ -18340,51 +20035,51 @@ mC mC mC mC -mC -mC -mC -mC -mC -mC -mC -HD -HD +rG +rG +rG +OZ +GC HD HD HD HD HD HD -em HD HD HD +em HD -mC -mC -mC -nq -nq +PI +Cl +gc +Ac +ol +PI +qJ wL -MI -eE -hX +wL +wL +fG +rp +gt lb wL -lY -uJ -Lh -Zl -fZ -Gv -SS -bW +pO +pO +pO +Le +uI +Bc +mW +xc Lh -LJ -Mk +BO +Ia Lh -cu -xc +zD +Ff By Lh HD @@ -18392,7 +20087,7 @@ HD HD HD HD -mC +HD mC mC mC @@ -18465,52 +20160,52 @@ mC mC mC mC -mC -mC -mC -mC -mC +rG +rG +rG +em HD HD -mC HD mC +HD mC mC mC rt mC -mC -mC -mC -mC -NH -mC -mC -mC -wL -Et -bY -wL +PI +fS +pr +uN +Gt +PI +PI +PI +HD wL +rP +uA +sz +tt wL -Bd -Me -PY -wW +lY +uJ +Lh +Zl fZ -No +Gv SS -cX -WJ -cX -cX -oW -Qr -xc +bW +Lh +LJ +Mk Lh +cu +Vy +By Lh -em +HD HD HD HD @@ -18591,10 +20286,9 @@ mC mC mC mC -mC HD HD -mC +HD mC mC mC @@ -18603,38 +20297,38 @@ NH NH NH NH -NH -mC -mC -mC -NH -mC -mC +PI +PI +Ul +mf +Gt +PI +HD +HD HD wL +Et +bY wL wL wL -HD -wL -DI -XV -Lh -gg -Do -RM -Do -Do -Lh -dL -wE +Bd +ZF +PY +wW +fZ +No +SS +cX +WJ +qw +qw +oW +Qr +bb Lh -oQ -ob -qW -Bo Lh -HD +em HD HD HD @@ -18681,6 +20375,7 @@ mC mC mC mC +mC "} (83,1,1) = {" mC @@ -18713,7 +20408,7 @@ mC mC mC mC -mC +HD HD HD mC @@ -18726,40 +20421,40 @@ mC mC mC mC -mC -mC -mC -mC -NH -rt -em -HD -HD +PI +PI +PI +PI +PI HD HD HD +wL +wL +wL +wL HD wL +DI +XV Lh +gg +Do +RM +Do +qC +pO +dL +wE Lh -Lh -Lh -qW -qW -qW -Lh -Lh -Lh -Lh -Lh -IT +oQ ob -qW -Me -qW -mC -mC -mC +lt +Bo +Lh +HD +HD +HD HD HD mC @@ -18853,7 +20548,6 @@ mC mC mC mC -NH mC HD HD @@ -18863,24 +20557,24 @@ HD HD HD HD -HD -HD -HD -HD -mC -mC -mC -HD -HD -HD -HD +wL +Lh +Lh +Lh Lh -SO -Te lt -Nd -qW -mC +lt +lt +pO +pO +pO +Lh +Lh +IT +ob +lt +Me +lt mC mC mC @@ -18927,6 +20621,7 @@ mC mC mC mC +mC "} (85,1,1) = {" mC @@ -18989,21 +20684,21 @@ HD HD HD HD -mC -mC +HD mC mC mC HD HD HD -Lh -Fn -qW -Lh -Lh -Lh HD +Lh +SO +Te +xJ +Nd +lt +mC mC mC mC @@ -19095,7 +20790,7 @@ mC mC mC mC -mC +NH mC mC mC @@ -19121,16 +20816,16 @@ HD HD HD Lh -gU -Gl +ry +lt +Lh +Lh Lh -HD -HD HD mC mC mC -mC +HD HD mC mC @@ -19218,7 +20913,7 @@ mC mC mC mC -mC +NH mC mC HD @@ -19227,8 +20922,6 @@ HD HD HD mC -mC -mC HD HD HD @@ -19236,6 +20929,8 @@ HD HD HD HD +HD +mC mC mC mC @@ -19244,17 +20939,17 @@ HD HD HD Lh -qW -qW +gU +Gl Lh HD HD HD -HD mC mC mC mC +HD mC mC mC @@ -19341,9 +21036,9 @@ mC mC mC mC -mC -mC -HD +NH +rt +em HD HD HD @@ -19352,8 +21047,8 @@ HD mC mC mC -mC -mC +HD +HD HD HD HD @@ -19366,10 +21061,10 @@ mC HD HD HD -mC -mC -mC -HD +Lh +lt +lt +Lh HD HD HD @@ -19464,7 +21159,7 @@ mC mC mC mC -mC +NH mC mC mC @@ -19476,7 +21171,7 @@ mC mC mC mC -HD +mC HD HD HD @@ -19485,14 +21180,14 @@ HD mC mC mC -HD +mC HD HD HD mC mC mC -mC +HD HD HD HD @@ -19598,28 +21293,28 @@ mC mC mC mC +mC HD HD HD HD HD HD -HD -HD -mC mC mC mC HD HD HD +HD mC mC mC mC -mC -mC -mC +HD +HD +HD +HD mC mC mC @@ -19726,10 +21421,9 @@ HD HD HD HD -mC -mC -mC -mC +HD +HD +HD mC mC mC @@ -19788,6 +21482,7 @@ mC mC mC mC +mC "} (92,1,1) = {" mC @@ -19848,6 +21543,7 @@ HD HD HD HD +HD mC mC mC @@ -19856,8 +21552,7 @@ mC mC mC mC -mC -mC +HD HD HD mC @@ -19981,8 +21676,8 @@ mC mC mC mC -mC -mC +HD +HD mC mC mC @@ -20093,7 +21788,7 @@ mC HD HD HD -mC +HD mC mC mC @@ -20212,7 +21907,7 @@ mC mC mC mC -HD +mC HD HD HD @@ -20461,7 +22156,7 @@ mC HD HD HD -mC +HD mC mC mC @@ -20705,8 +22400,8 @@ mC mC mC HD -mC -mC +HD +HD mC mC mC diff --git a/_maps/outpost/nanotrasen_ice.dmm b/_maps/outpost/nanotrasen_ice.dmm index 7e39abd0d9d7..1a8857ee7a8f 100644 --- a/_maps/outpost/nanotrasen_ice.dmm +++ b/_maps/outpost/nanotrasen_ice.dmm @@ -95,10 +95,12 @@ /obj/structure/sign/nanotrasen{ pixel_x = -32 }, -/obj/structure/flora/grass/both{ - layer = 3.1 +/obj/structure/chair/bench/blue/directional/north, +/obj/effect/turf_decal/borderfloor, +/obj/effect/turf_decal/corner/opaque/blue/border{ + dir = 1 }, -/turf/open/floor/plating/asteroid/snow/temperatre{ +/turf/open/floor/plasteel/patterned/brushed{ light_color = "#1B1D2E"; light_range = 2 }, @@ -895,6 +897,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood/walnut, /area/outpost/crew/lounge) +"gi" = ( +/obj/structure/chair/bench/blue/directional/north, +/obj/effect/turf_decal/borderfloor, +/obj/effect/turf_decal/corner/opaque/blue/border{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "gs" = ( /obj/effect/spawner/structure/window/reinforced/indestructable, /obj/machinery/door/poddoor/shutters/preopen{ @@ -1461,14 +1474,28 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/crew/cryo) -"li" = ( +"lf" = ( +/obj/machinery/vending/wallmed{ + pixel_x = -23 + }, /obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/blue/border{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) +"li" = ( /obj/structure/railing{ dir = 4 }, +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, /turf/open/floor/plasteel/patterned/brushed{ light_color = "#1B1D2E"; light_range = 2 @@ -2560,7 +2587,6 @@ /obj/effect/turf_decal/borderfloor{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/brushed{ light_color = "#1B1D2E"; light_range = 2 @@ -2854,6 +2880,18 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/outpost/vacant_rooms/shop) +"sE" = ( +/obj/structure/railing, +/obj/structure/table, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/blue/border, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "sG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/white{ @@ -3331,6 +3369,18 @@ icon_state = "panelscorched" }, /area/outpost/maintenance/fore) +"vs" = ( +/obj/structure/railing/corner, +/obj/structure/chair/bench/blue/directional/north, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/blue/border, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "vu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/white, @@ -3441,6 +3491,21 @@ }, /turf/open/floor/concrete/tiles, /area/outpost/crew/bar) +"wb" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "wd" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -3516,6 +3581,21 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/crew/bar) +"ww" = ( +/obj/structure/table, +/obj/effect/turf_decal/borderfloor, +/obj/effect/turf_decal/corner/opaque/blue/border{ + dir = 1 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = 7; + name = "Space Cleaner FOR OUTPOST USE ONLY" + }, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "wC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -3688,13 +3768,12 @@ /turf/open/floor/plasteel/tech, /area/outpost/maintenance/starboard) "xB" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, /obj/structure/railing/corner{ layer = 4.1 }, +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, /turf/open/floor/plasteel/patterned/brushed{ light_color = "#1B1D2E"; light_range = 2 @@ -4119,6 +4198,21 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) +"AR" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 5 + }, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "AS" = ( /turf/closed/indestructible/reinforced, /area/outpost/vacant_rooms/shop) @@ -4572,6 +4666,18 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Eo" = ( +/obj/structure/railing, +/obj/structure/chair/bench/blue/directional/north, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/blue/border, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "Eq" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/firedoor/border_only, @@ -5085,6 +5191,19 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/vacant_rooms/shop) +"HH" = ( +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/blue/border{ + dir = 10 + }, +/turf/open/floor/plasteel/patterned/brushed{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "HI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/techfloor{ @@ -7095,6 +7214,19 @@ }, /turf/open/floor/plating, /area/outpost/crew/bar) +"VN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "VQ" = ( /obj/effect/turf_decal/siding/wood{ color = "#543C30"; @@ -7230,6 +7362,13 @@ light_range = 2 }, /area/outpost/exterior) +"Wx" = ( +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + light_color = "#1B1D2E"; + light_range = 2 + }, +/area/outpost/exterior) "Wy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk/over/plated_catwalk, @@ -12547,8 +12686,8 @@ yR qY yR yR -NG -Yj +lf +HH AS tI PN @@ -12631,8 +12770,8 @@ TP Bd fx aQ -NG -NG +Wx +vs AS Bj Bj @@ -12714,9 +12853,9 @@ NG dq Bd KO -NG -NG -BC +ww +Wx +sE NG NG IH @@ -12798,9 +12937,9 @@ Ho nW Bd KO -NG -NG -IH +gi +Wx +Eo NG vC NG @@ -12882,9 +13021,9 @@ Ay do Ti kn -au -Ja -dk +wb +Wx +AR Ja au Ja @@ -12967,7 +13106,7 @@ rL xs rL rL -ly +VN ly ly rL diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 8335a2d82737..fbda78c0ab6c 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -144,7 +144,7 @@ self_delay = 20 max_amount = 12 grind_results = list(/datum/reagent/cellulose = 2) - custom_price = 100 + custom_price = 50 /obj/item/stack/medical/gauze/twelve amount = 12 @@ -373,6 +373,7 @@ self_delay = 40 other_delay = 15 splint_fracture = TRUE + custom_price = 50 /obj/item/stack/medical/splint/heal(mob/living/target, mob/user) . = ..() diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index a0ea04f8f99e..c5427a87201e 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -66,6 +66,9 @@ if(istype(drop_atom, /turf/open) && istype(loc, /obj/structure/crate_shelf) && user.Adjacent(drop_atom)) var/obj/structure/crate_shelf/shelf = loc return shelf.unload(src, user, drop_atom) // If we're being dropped onto a turf, and we're inside of a crate shelf, unload. + if(istype(drop_atom, /obj/structure) && istype(loc, /obj/structure/crate_shelf) && user.Adjacent(drop_atom) && !drop_atom.density) + var/obj/structure/crate_shelf/shelf = loc + return shelf.unload(src, user, drop_atom.loc) // If we're being dropped onto a turf, and we're inside of a crate shelf, unload. if(istype(drop_atom, /obj/structure/crate_shelf) && isturf(loc) && user.Adjacent(src)) var/obj/structure/crate_shelf/shelf = drop_atom return shelf.load(src, user) // If we're being dropped onto a crate shelf, and we're in a turf, load. diff --git a/code/game/turfs/closed/indestructible.dm b/code/game/turfs/closed/indestructible.dm index 9d186868cf54..9e55858970d2 100644 --- a/code/game/turfs/closed/indestructible.dm +++ b/code/game/turfs/closed/indestructible.dm @@ -100,6 +100,12 @@ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) +/turf/closed/indestructible/reinforced/rust + name = "rusted reinforced wall" + icon = 'icons/turf/walls/rusty_reinforced_wall.dmi' + icon_state = "rusty_reinforced_wall-0" + base_icon_state = "rusty_reinforced_wall" + /turf/closed/indestructible/titanium name = "wall" desc = "A light-weight titanium wall used in shuttles. Effectively impervious to conventional methods of destruction." diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 8415c98e41e5..32dd2b760e88 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -179,10 +179,8 @@ /obj/item/reagent_containers/hypospray/medipen/morphine name = "morphine medipen" desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though." - icon_state = "morphen" - base_icon_state = "morphen" - item_state = "morphen" list_reagents = list(/datum/reagent/medicine/morphine = 10) + custom_price = 75 /obj/item/reagent_containers/hypospray/medipen/oxandrolone name = "oxandrolone medipen" @@ -233,16 +231,6 @@ return icon_state = "[base_icon_state][(reagents.total_volume > 0) ? 1 : 0]" -/* Replaced with variant in whitesands/code/modules/reagents/reagent_containers/hypospray.dm -/obj/item/reagent_containers/hypospray/medipen/survival - name = "survival medipen" - desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. WARNING: Do not inject more than one pen in quick succession." - icon_state = "stimpen" - item_state = "stimpen" - volume = 57 - amount_per_transfer_from_this = 58 - list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/bicaridinep = 8, /datum/reagent/medicine/dermaline = 8, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2, /datum/reagent/medicine/omnizine = 5) -*/ /obj/item/reagent_containers/hypospray/medipen/atropine name = "atropine autoinjector" desc = "A rapid way to save a person from a critical injury state!" @@ -250,25 +238,7 @@ item_state = "atropen" base_icon_state = "atropen" list_reagents = list(/datum/reagent/medicine/atropine = 10) - -/obj/item/reagent_containers/hypospray/medipen/snail - name = "snail shot" - desc = "All-purpose snail medicine! Do not use on non-snails!" - icon_state = "snail" - item_state = "snail" - base_icon_state = "gorillapen" - list_reagents = list(/datum/reagent/snail = 10) - -/obj/item/reagent_containers/hypospray/medipen/magillitis - name = "experimental autoinjector" - desc = "A custom-frame needle injector with a small single-use reservoir, containing an experimental serum. Unlike the more common medipen frame, it cannot pierce through protective armor or hardsuits, nor can the chemical inside be extracted." - icon_state = "gorillapen" - item_state = "gorillapen" - base_icon_state = "gorillapen" - volume = 5 - ignore_flags = 0 - reagent_flags = NONE - list_reagents = list(/datum/reagent/magillitis = 5) + custom_price = 100 /obj/item/reagent_containers/hypospray/medipen/pumpup name = "maintenance pump-up" @@ -285,6 +255,7 @@ volume = 15 amount_per_transfer_from_this = 15 list_reagents = list(/datum/reagent/medicine/anti_rad = 15) + custom_price = 25 /obj/item/reagent_containers/hypospray/medipen/bonefixingjuice name = "rejuvenating agent injector" @@ -295,6 +266,59 @@ list_reagents = list(/datum/reagent/medicine/bonefixingjuice = 10) icon_state = "syndipen" +/obj/item/reagent_containers/hypospray/medipen/diphen + name = "diphenhydramine injector" + desc = "An effective way to stop an allergic reaction." + list_reagents = list(/datum/reagent/medicine/diphenhydramine = 10) + volume = 10 + amount_per_transfer_from_this = 10 + +/obj/item/reagent_containers/hypospray/medipen/psicodine + name = "psicodine injector" + desc = "An injector filled with psicodine, which rapidly stabilizes the mind." + list_reagents = list(/datum/reagent/medicine/psicodine = 10) + volume = 10 + amount_per_transfer_from_this = 10 + custom_price = 50 + +/obj/item/reagent_containers/hypospray/medipen/synap + name = "synaptizine injector" + desc = "A stimulating injector with a shot of synaptizine inside." + list_reagents = list(/datum/reagent/medicine/synaptizine = 5) + custom_price = 75 + volume = 5 + amount_per_transfer_from_this = 5 + icon_state = "stimpen" + item_state = "stimpen" + +/obj/item/reagent_containers/hypospray/medipen/antihol + name = "antihol injector" + desc = "An injector filled with antihol, essential for the binge drinker." + list_reagents = list(/datum/reagent/medicine/antihol = 10) + volume = 10 + amount_per_transfer_from_this = 10 + custom_price = 25 + +/obj/item/reagent_containers/hypospray/medipen/tricord + name = "tricordrazine injector" + desc = "An injector filled with tricordrazine, a mildly effective healing agent." + list_reagents = list(/datum/reagent/medicine/tricordrazine = 15) + volume = 15 + amount_per_transfer_from_this = 15 + icon_state = "morphen" + base_icon_state = "morphen" + item_state = "morphen" + +/obj/item/reagent_containers/hypospray/medipen/mannitol + name = "tricordrazine injector" + desc = "An injector filled with mannitol, a restorative compound that targets the brain." + list_reagents = list(/datum/reagent/medicine/mannitol = 15) + volume = 15 + amount_per_transfer_from_this = 15 + icon_state = "morphen" + base_icon_state = "morphen" + item_state = "morphen" + //A vial-loaded hypospray. Cartridge-based! /obj/item/hypospray/mkii name = "hypospray mk.II" diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 0cf5a1258964..ad51348128be 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1807,14 +1807,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) limited_stock = 2 //you can't use more than two! restricted_roles = list("Shaft Miner") -/datum/uplink_item/role_restricted/magillitis_serum - name = "Magillitis Serum Autoinjector" - desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. \ - Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." - item = /obj/item/reagent_containers/hypospray/medipen/magillitis - cost = 15 - restricted_roles = list("Geneticist", "Chief Medical Officer") - /datum/uplink_item/role_restricted/modified_syringe_gun name = "Modified Syringe Gun" desc = "A syringe gun that fires DNA injectors instead of normal syringes." diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index ec96150e92df..26fe1f2c5899 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -47,3 +47,10 @@ /obj/machinery/vending/medical/syndicate_access name = "\improper SyndiMed Plus" req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/vending/medical + name = "\improper NanoMed Plus" + desc = "Medical drug dispenser." + icon_state = "med" + icon_deny = "med-deny" + product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index 41f97ab888a4..c8f62eb0c75d 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -1,28 +1,32 @@ /obj/machinery/vending/wallmed - name = "\improper NanoMed" - desc = "Wall-mounted Medical Equipment dispenser." + name = "\improper OutpostMed" + desc = "A vending machine filled with medical supplies, provided to you free of charge by the Outpost Authority." icon_state = "wallmed" icon_deny = "wallmed-deny" density = FALSE + product_ads = "Dr. Pills approved!;Only the finest for the frontier.;Need a pick-me-up?.;Lanchester sourced equipment.;Don't be a fool. Plus yourself up.;Don't you want some?;Ping!" products = list( - /obj/item/reagent_containers/syringe = 1, - /obj/item/reagent_containers/pill/patch/styptic = 3, - /obj/item/reagent_containers/pill/patch/silver_sulf = 3, - /obj/item/reagent_containers/pill/charcoal = 1, - /obj/item/reagent_containers/medigel/styptic = 1, - /obj/item/reagent_containers/medigel/silver_sulf = 1, - /obj/item/reagent_containers/medigel/sterilizine = 1, - /obj/item/reagent_containers/pill/morphine = 1 - ) - contraband = list( - /obj/item/reagent_containers/pill/tox = 1, - /obj/item/storage/box/gum/happiness = 1 + /obj/item/stack/medical/gauze = 8, + /obj/item/stack/medical/splint = 8, + /obj/item/reagent_containers/hypospray/medipen/atropine = 4, + /obj/item/reagent_containers/hypospray/medipen/diphen = 5, + /obj/item/reagent_containers/hypospray/medipen/psicodine = 6, + /obj/item/reagent_containers/hypospray/medipen/synap = 6, + /obj/item/reagent_containers/hypospray/medipen/mannitol = 10, + /obj/item/reagent_containers/hypospray/medipen/tricord = 6, + /obj/item/reagent_containers/hypospray/medipen/morphine = 6, + /obj/item/reagent_containers/hypospray/medipen/antihol = 10, + /obj/item/reagent_containers/hypospray/medipen/anti_rad = 10, ) + premium = list( + /obj/item/reagent_containers/medigel/styptic = 3, + /obj/item/reagent_containers/medigel/silver_sulf = 3, + ) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/wallmed - default_price = 200 - extra_price = 400 + default_price = 75 + extra_price = 200 tiltable = FALSE light_mask = "wallmed-light-mask" From c87852aa0ff4629c02eb41c9719896c41e530b27 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 14:13:12 -0600 Subject: [PATCH 041/118] Automatic changelog generation for PR #3985 [ci skip] --- html/changelogs/AutoChangeLog-pr-3985.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3985.yml diff --git a/html/changelogs/AutoChangeLog-pr-3985.yml b/html/changelogs/AutoChangeLog-pr-3985.yml new file mode 100644 index 000000000000..d336be0598c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3985.yml @@ -0,0 +1,4 @@ +author: Erikafox +changes: + - {balance: 'goldgrubs, fugu, and basilisks are now marginally less immune to bullets.'} +delete-after: true From ab5affb90455bf7203e71fd2c322eb2eb0afaf11 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 14:17:33 -0600 Subject: [PATCH 042/118] Automatic changelog generation for PR #3939 [ci skip] --- html/changelogs/AutoChangeLog-pr-3939.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3939.yml diff --git a/html/changelogs/AutoChangeLog-pr-3939.yml b/html/changelogs/AutoChangeLog-pr-3939.yml new file mode 100644 index 000000000000..e29c0feb2043 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3939.yml @@ -0,0 +1,5 @@ +author: Erikafox +changes: + - {rscadd: The asteroid outpost in the region has been somewhat renovated.} + - {rscadd: Outposts now stock a variety of medpens in a small medical area.} +delete-after: true From 7f54394beb8aac953985df941233fdab23ef160e Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:00:54 -0500 Subject: [PATCH 043/118] Gun Zoom Changes (#3736) ## About The Pull Request Makes zooming something every gun can do. Reflavors it to be aiming down the sights of the weapon. Adds scopes that make you slower while aiming, but also let you aim further. ports 3 fixes to make this less painful https://github.com/tgstation/tgstation/pull/64015 https://github.com/tgstation/tgstation/pull/57345 https://github.com/tgstation/tgstation/pull/63654 ## Why It's Good For The Game experimentation ## Changelog :cl: add: Scopes!!! add: All guns now have an implicit ability to aim down sights. add: aiming now slows you down. fix: fixes ported from /tg/: projectiles no longer sail into the ether when you fire them at a distance fix: aiming is now less jank /:cl: --------- Signed-off-by: Erika Fox <94164348+Erikafox@users.noreply.github.com> Co-authored-by: Bjarl <94164348+Bjarl@users.noreply.github.com> --- code/__DEFINES/guns.dm | 15 ++ code/__DEFINES/traits.dm | 2 + code/__HELPERS/unsorted.dm | 30 ++-- code/_globalvars/traits.dm | 3 +- code/_onclick/click.dm | 10 +- code/datums/components/fullauto.dm | 6 +- code/datums/components/fullauto_mecha.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 5 +- .../objects/items/attachments/long_scope.dm | 29 ++++ .../objects/items/attachments/short_scope.dm | 26 ++++ code/modules/cargo/packs/gun.dm | 84 ------------ .../modules/cargo/packs/weapon_attachments.dm | 102 ++++++++++++++ .../mining/equipment/kinetic_crusher.dm | 3 +- .../carbon/alien/humanoid/alien_powers.dm | 4 +- code/modules/movespeed/modifiers/items.dm | 4 + .../modules/projectiles/ammunition/_firing.dm | 5 +- code/modules/projectiles/gun.dm | 17 ++- .../projectiles/guns/ballistic/assault.dm | 19 +++ .../projectiles/guns/ballistic/marksman.dm | 4 + .../projectiles/guns/ballistic/pistol.dm | 4 + .../projectiles/guns/ballistic/revolver.dm | 2 + .../projectiles/guns/ballistic/rifle.dm | 3 + .../projectiles/guns/ballistic/shotgun.dm | 5 + .../modules/projectiles/guns/ballistic/smg.dm | 2 + .../clip_lanchester/ballistics.dm | 31 ++--- .../manufacturer/hunter_pride/ballistics.dm | 60 ++++++++ .../manufacturer/scarborough/ballistics.dm | 2 +- .../serene_sporting/ballistics.dm | 16 ++- .../manufacturer/solar_armories/ballistic.dm | 22 ++- .../projectiles/guns/misc/beam_rifle.dm | 6 +- .../projectiles/guns/misc/blastcannon.dm | 3 +- code/modules/projectiles/projectile.dm | 129 +++++++++++------- icons/obj/guns/attachments.dmi | Bin 5803 -> 6061 bytes .../manufacturer/clip_lanchester/48x32.dmi | Bin 4673 -> 4640 bytes icons/obj/guns/manufacturer/inteq/48x32.dmi | Bin 2032 -> 2007 bytes shiptest.dme | 3 + 36 files changed, 460 insertions(+), 200 deletions(-) create mode 100644 code/game/objects/items/attachments/long_scope.dm create mode 100644 code/game/objects/items/attachments/short_scope.dm create mode 100644 code/modules/cargo/packs/weapon_attachments.dm diff --git a/code/__DEFINES/guns.dm b/code/__DEFINES/guns.dm index 9581fb506361..3cabcfa617ce 100644 --- a/code/__DEFINES/guns.dm +++ b/code/__DEFINES/guns.dm @@ -76,6 +76,21 @@ #define GUN_NO_SAFETY_MALFUNCTION_CHANCE_MEDIUM 10 #define GUN_NO_SAFETY_MALFUNCTION_CHANCE_HIGH 15 +//aiming down sights values +#define PISTOL_ZOOM 2 +#define SHOTGUN_ZOOM 2 +#define SMG_ZOOM 2 +#define RIFLE_ZOOM 2 +#define DMR_ZOOM 4 + +//ads slowdown +#define PISTOL_AIM_SLOWDOWN 0.1 +#define SHOTGUN_AIM_SLOWDOWN 0.3 +#define SMG_AIM_SLOWDOWN 0.2 +#define RIFLE_AIM_SLOWDOWN 0.3 +#define LONG_RIFLE_AIM_SLOWDOWN 0.4 +#define HEAVY_AIM_SLOWDOWN 0.6 + //slowdown defines #define NO_SLOWDOWN 0.0 #define LIGHT_PISTOL_SLOWDOWN 0.05 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ddd2bc5b0df6..3dce892eb868 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -277,6 +277,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_KISS_OF_DEATH "kiss_of_death" /// We can handle 'dangerous' plants in botany safely #define TRAIT_PLANT_SAFE "plant_safe" +///This person is aiming and should not face atoms in different directions +#define TRAIT_AIMING "aiming" /// This mob overrides certian SSlag_switch measures with this special trait #define TRAIT_BYPASS_MEASURES "bypass_lagswitch_measures" //non-mob traits diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 7bd6f72771cc..a21147e7860e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -765,19 +765,25 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list( else return "white" -/proc/params2turf(scr_loc, turf/origin, client/C) - if(!scr_loc) +/proc/parse_caught_click_modifiers(list/modifiers, turf/origin, client/viewing_client) + if(!modifiers) return null - var/tX = splittext(scr_loc, ",") - var/tY = splittext(tX[2], ":") - var/tZ = origin.z - tY = tY[1] - tX = splittext(tX[1], ":") - tX = tX[1] - var/list/actual_view = getviewsize(C ? C.view : world.view) - tX = clamp(origin.x + text2num(tX) - round(actual_view[1] / 2) - 1, 1, world.maxx) - tY = clamp(origin.y + text2num(tY) - round(actual_view[2] / 2) - 1, 1, world.maxy) - return locate(tX, tY, tZ) + + var/screen_loc = splittext(LAZYACCESS(modifiers, SCREEN_LOC), ",") + var/list/actual_view = getviewsize(viewing_client ? viewing_client.view : world.view) + var/click_turf_x = splittext(screen_loc[1], ":") + var/click_turf_y = splittext(screen_loc[2], ":") + var/click_turf_z = origin.z + + var/click_turf_px = text2num(click_turf_x[2]) + var/click_turf_py = text2num(click_turf_y[2]) + click_turf_x = origin.x + text2num(click_turf_x[1]) - round(actual_view[1] / 2) - 1 + click_turf_y = origin.y + text2num(click_turf_y[1]) - round(actual_view[2] / 2) - 1 + + var/turf/click_turf = locate(clamp(click_turf_x, 1, world.maxx), clamp(click_turf_y, 1, world.maxy), click_turf_z) + LAZYSET(modifiers, ICON_X, "[(click_turf_px - click_turf.pixel_x) + ((click_turf_x - click_turf.x) * world.icon_size)]") + LAZYSET(modifiers, ICON_Y, "[(click_turf_py - click_turf.pixel_y) + ((click_turf_y - click_turf.y) * world.icon_size)]") + return click_turf /proc/screen_loc2turf(text, turf/origin, client/C) if(!text) diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index d87596cf828c..9b007b60352c 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -149,7 +149,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SCOOPABLE" = TRAIT_SCOOPABLE, "TRAIT_ANXIOUS" = TRAIT_ANXIOUS, "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, - "TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE + "TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE, + "TRAIT_AIMING" = TRAIT_AIMING ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index cfd08960cd55..c387afaace70 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -382,7 +382,7 @@ /// Simple helper to face what you clicked on, in case it should be needed in more than one place /mob/proc/face_atom(atom/A) - if(buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y) + if(buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y || HAS_TRAIT(src, TRAIT_AIMING)) return var/dx = A.x - x var/dy = A.y - y @@ -447,10 +447,10 @@ var/mob/living/carbon/C = usr C.swap_hand() else - var/turf/T = params2turf(LAZYACCESS(modifiers, SCREEN_LOC), get_turf(usr.client ? usr.client.eye : usr), usr.client) - params += "&catcher=1" - if(T) - T.Click(location, control, params) + var/turf/click_turf = parse_caught_click_modifiers(modifiers, get_turf(usr.client ? usr.client.eye : usr), usr.client) + if (click_turf) + modifiers["catcher"] = TRUE + click_turf.Click(click_turf, control, list2params(modifiers)) . = 1 /// MouseWheelOn diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm index f3050c7ab76c..a768b3a804fd 100644 --- a/code/datums/components/fullauto.dm +++ b/code/datums/components/fullauto.dm @@ -125,7 +125,8 @@ if(isnull(location)) //Clicking on a screen object. if(_target.plane != CLICKCATCHER_PLANE) //The clickcatcher is a special case. We want the click to trigger then, under it. return //If we click and drag on our worn backpack, for example, we want it to open instead. - _target = params2turf(modifiers["screen-loc"], get_turf(source.eye), source) + _target = parse_caught_click_modifiers(modifiers, get_turf(source.eye), source) + params = list2params(modifiers) if(!_target) CRASH("Failed to get the turf under clickcatcher") @@ -204,7 +205,8 @@ SIGNAL_HANDLER if(isnull(over_location)) //This happens when the mouse is over an inventory or screen object, or on entering deep darkness, for example. var/list/modifiers = params2list(params) - var/new_target = params2turf(modifiers["screen-loc"], get_turf(source.eye), source) + var/new_target = parse_caught_click_modifiers(modifiers, get_turf(source.eye), source) + params = list2params(modifiers) mouse_parameters = params if(!new_target) if(QDELETED(target)) //No new target acquired, and old one was deleted, get us out of here. diff --git a/code/datums/components/fullauto_mecha.dm b/code/datums/components/fullauto_mecha.dm index 27e7fcf80df6..2db27a06e5b8 100644 --- a/code/datums/components/fullauto_mecha.dm +++ b/code/datums/components/fullauto_mecha.dm @@ -124,7 +124,7 @@ if(isnull(location)) //Clicking on a screen object. if(_target.plane != CLICKCATCHER_PLANE) //The clickcatcher is a special case. We want the click to trigger then, under it. return //If we click and drag on our worn backpack, for example, we want it to open instead. - _target = params2turf(modifiers["screen-loc"], get_turf(source.eye), source) + _target = parse_caught_click_modifiers(modifiers["screen-loc"], get_turf(source.eye), source) if(!_target) CRASH("Failed to get the turf under clickcatcher") @@ -203,7 +203,7 @@ SIGNAL_HANDLER if(isnull(over_location)) //This happens when the mouse is over an inventory or screen object, or on entering deep darkness, for example. var/list/modifiers = params2list(params) - var/new_target = params2turf(modifiers["screen-loc"], get_turf(source.eye), source) + var/new_target = parse_caught_click_modifiers(modifiers["screen-loc"], get_turf(source.eye), source) mouse_parameters = params if(!new_target) if(QDELETED(target)) //No new target acquired, and old one was deleted, get us out of here. diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 216db9656c00..d36cab972fde 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -34,6 +34,9 @@ var/turf/curloc = get_turf(chassis) var/turf/targloc = get_turf(target) + + var/modifiers = params2list(params) + if (!targloc || !istype(targloc) || !curloc) return 0 if (targloc == curloc) @@ -53,7 +56,7 @@ spread = round((rand() - 0.5) * variance) else spread = round((i / projectiles_per_shot - 0.5) * variance) - A.preparePixelProjectile(target, chassis.occupant, params, spread) + A.preparePixelProjectile(target, chassis.occupant, modifiers, spread) A.fire() playsound(chassis, fire_sound, 50, TRUE) diff --git a/code/game/objects/items/attachments/long_scope.dm b/code/game/objects/items/attachments/long_scope.dm new file mode 100644 index 000000000000..47d3399df809 --- /dev/null +++ b/code/game/objects/items/attachments/long_scope.dm @@ -0,0 +1,29 @@ +/obj/item/attachment/long_scope + name = "long range scope" + desc = "An attachment for the scope of a weapon. Allows one to aim down the sight." + icon_state = "silencer" + + slot = ATTACHMENT_SLOT_SCOPE + pixel_shift_x = 1 + pixel_shift_y = 2 + size_mod = 1 + var/zoom_mod = 10 + var/zoom_out_mod = 3 + var/min_recoil_mod = 0.1 + var/aim_slowdown_mod = 0.4 + + +/obj/item/attachment/long_scope/apply_attachment(obj/item/gun/gun, mob/user) + . = ..() + gun.zoom_amt = zoom_mod + gun.zoom_out_amt = zoom_out_mod + gun.min_recoil_aimed = min_recoil_mod + gun.aimed_wield_slowdown += aim_slowdown_mod + +/obj/item/attachment/long_scope/remove_attachment(obj/item/gun/gun, mob/user) + . = ..() + gun.zoom_amt = initial(gun.zoom_amt) + gun.zoom_out_amt = initial(gun.zoom_out_amt) + gun.min_recoil_aimed = initial(gun.min_recoil_aimed) + gun.aimed_wield_slowdown = initial(gun.aimed_wield_slowdown) + return TRUE diff --git a/code/game/objects/items/attachments/short_scope.dm b/code/game/objects/items/attachments/short_scope.dm new file mode 100644 index 000000000000..34c8c1fb185b --- /dev/null +++ b/code/game/objects/items/attachments/short_scope.dm @@ -0,0 +1,26 @@ +/obj/item/attachment/scope + name = "scope" + desc = "An attachment for the scope of a weapon. Allows one to aim down the sight." + icon_state = "small_scope" + + slot = ATTACHMENT_SLOT_SCOPE + pixel_shift_x = 1 + pixel_shift_y = 2 + size_mod = 0 + var/zoom_mod = 6 + var/zoom_out_mod = 2 + var/aim_slowdown_mod = 0.2 + + +/obj/item/attachment/scope/apply_attachment(obj/item/gun/gun, mob/user) + . = ..() + gun.zoom_amt = zoom_mod + gun.zoom_out_amt = zoom_out_mod + gun.aimed_wield_slowdown += aim_slowdown_mod + +/obj/item/attachment/scope/remove_attachment(obj/item/gun/gun, mob/user) + . = ..() + gun.zoom_amt = initial(gun.zoom_amt) + gun.zoom_out_amt = initial(gun.zoom_out_amt) + gun.aimed_wield_slowdown = initial(gun.aimed_wield_slowdown) + return TRUE diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index e89eb64ccb2c..2f1e19daab6e 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -693,87 +693,3 @@ faction = /datum/faction/solgov faction_discount = 0 faction_locked = TRUE - -/* Attachments */ - -/datum/supply_pack/gun/attachment/rail_light - name = "Tactical Rail Light Crate" - desc = "Contains a single rail light to be mounted on a firearm." - cost = 100 - contains = list(/obj/item/attachment/rail_light) - crate_name = "rail light crate" - -/datum/supply_pack/gun/attachment/laser_sight - name = "Laser Sight Crate" - desc = "Contains a single laser sight to be mounted on a firearm." - cost = 250 - contains = list(/obj/item/attachment/laser_sight) - crate_name = "laser sight crate" - -/datum/supply_pack/gun/attachment/bayonet - name = "Bayonet Crate" - desc = "Contains a single bayonet to be mounted on a firearm." - cost = 250 - contains = list(/obj/item/attachment/bayonet) - crate_name = "bayonet crate" - -/datum/supply_pack/gun/attachment/ebayonet - name = "Energy Bayonet Crate" - desc = "Contains a single energy bayonet to be mounted on a firearm, exclusive for Scarborough Firearms." - cost = 500 - contains = list(/obj/item/attachment/energy_bayonet) - crate_name = "bayonet crate" - faction = /datum/faction/syndicate/scarborough_arms - faction_discount = 0 - faction_locked = TRUE - -/datum/supply_pack/gun/attachment/silencer - name = "Suppressor Crate" - desc = "Contains a single suppressor to be mounted on a firearm." - cost = 250 - contains = list(/obj/item/attachment/silencer) - crate_name = "suppressor crate" - -/datum/supply_pack/gun/attachment/shotgun - name = "Underbarrel Shotgun Crate" - desc = "Contains a single shot underbarrel shotgun to be mounted on a firearm." - cost = 750 - contains = list(/obj/item/attachment/gun/ballistic/shotgun) - crate_name = "underbarrel shotgun crate" - -/datum/supply_pack/gun/attachment/flamethrower - name = "Underbarrel Flamethrower Crate" - desc = "Contains a compact underbarrel flamethrower to be mounted on a firearm." - cost = 750 - contains = list(/obj/item/attachment/gun/flamethrower) - crate_name = "underbarrel flamethrower crate" - -/datum/supply_pack/gun/attachment/e_gun - name = "Underbarrel Energy Gun Crate" - desc = "Contains an underbarrel energy gun to be mounted on a firearm." - cost = 750 - contains = list(/obj/item/attachment/gun/energy/e_gun) - crate_name = "underbarrel energy gun crate" - -/datum/supply_pack/gun/attachment/sling - name = "Shoulder Sling Crate" - desc = "Contains a single shoulder sling to be mounted on a firearm for easy carrying without armor holsters. Only compatible with longarms." - cost = 250 - contains = list(/obj/item/attachment/sling) - crate_name = "shoulder sling crate" - -/datum/supply_pack/gun/attachment/riot_launcher - name = "Underbarrel Riot Grenade Launcher Crate" - desc = "Contains a single shot underbarrel riot grenade launcher to be mounted on a firearm." - cost = 750 - contains = list(/obj/item/attachment/gun/riot) - crate_name = "underbarrel riot grenade launcher crate" - -/datum/supply_pack/gun/attachment/flare - name = "Underbarrel Flare Gun Crate" - desc = "Contains a single shot underbarrel flare gun to be mounted on a firearm. One box of flares included." - cost = 200 - contains = list(/obj/item/attachment/gun/flare) - crate_name = "underbarrel flare gun crate" - - diff --git a/code/modules/cargo/packs/weapon_attachments.dm b/code/modules/cargo/packs/weapon_attachments.dm new file mode 100644 index 000000000000..0fee8efdd8ca --- /dev/null +++ b/code/modules/cargo/packs/weapon_attachments.dm @@ -0,0 +1,102 @@ +// the ever continuing guncode growth. if only we had this passion for engineering. + +/* Attachments */ + +/datum/supply_pack/attachment + group = "Gun Attachments" + crate_type = /obj/structure/closet/crate/secure/weapon + faction_discount = 10 + +/datum/supply_pack/attachment/rail_light + name = "Tactical Rail Light Crate" + desc = "Contains a single rail light to be mounted on a firearm." + cost = 100 + contains = list(/obj/item/attachment/rail_light) + crate_name = "rail light crate" + +/datum/supply_pack/attachment/laser_sight + name = "Laser Sight Crate" + desc = "Contains a single rail light to be mounted on a firearm." + cost = 250 + contains = list(/obj/item/attachment/laser_sight) + crate_name = "laser sight crate" + +/datum/supply_pack/attachment/bayonet + name = "Bayonet Crate" + desc = "Contains a single bayonet to be mounted on a firearm." + cost = 250 + contains = list(/obj/item/attachment/bayonet) + crate_name = "bayonet crate" + +/datum/supply_pack/attachment/ebayonet + name = "Energy Bayonet Crate" + desc = "Contains a single energy bayonet to be mounted on a firearm, exclusive for Scarborough Firearms." + cost = 500 + contains = list(/obj/item/attachment/energy_bayonet) + crate_name = "bayonet crate" + faction = /datum/faction/syndicate/scarborough_arms + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/attachment/silencer + name = "Suppressor Crate" + desc = "Contains a single suppressor to be mounted on a firearm." + cost = 250 + contains = list(/obj/item/attachment/silencer) + crate_name = "suppressor crate" + +/datum/supply_pack/attachment/sling + name = "Shoulder Sling Crate" + desc = "Contains a single shoulder sling to be mounted on a firearm for easy carrying without armor holsters. Only compatible with longarms." + cost = 250 + contains = list(/obj/item/attachment/sling) + crate_name = "shoulder sling crate" + +/datum/supply_pack/attachment/scope + name = "Scope Crate" + desc = "Contains a single scope to be mounted on a firearm." + cost = 400 + contains = list(/obj/item/attachment/scope) + crate_name = "scope crate" + +/datum/supply_pack/attachment/rail_light + name = "Long Scope Crate" + desc = "Contains a single high powered scope to be mounted on a firearm." + cost = 800 + contains = list(/obj/item/attachment/long_scope) + crate_name = "scope crate" + +/datum/supply_pack/attachment/shotgun + name = "Underbarrel Shotgun Crate" + desc = "Contains a single shot underbarrel shotgun to be mounted on a firearm." + cost = 750 + contains = list(/obj/item/attachment/gun/ballistic/shotgun) + crate_name = "underbarrel shotgun crate" + +/datum/supply_pack/attachment/flamethrower + name = "Underbarrel Flamethrower Crate" + desc = "Contains a compact underbarrel flamethrower to be mounted on a firearm." + cost = 750 + contains = list(/obj/item/attachment/gun/flamethrower) + crate_name = "underbarrel flamethrower crate" + +/datum/supply_pack/attachment/e_gun + name = "Underbarrel Energy Gun Crate" + desc = "Contains an underbarrel energy gun to be mounted on a firearm." + cost = 750 + contains = list(/obj/item/attachment/gun/energy/e_gun) + crate_name = "underbarrel energy gun crate" + +/datum/supply_pack/attachment/riot_launcher + name = "Underbarrel Riot Grenade Launcher Crate" + desc = "Contains a single shot underbarrel riot grenade launcher to be mounted on a firearm." + cost = 750 + contains = list(/obj/item/attachment/gun/riot) + crate_name = "underbarrel riot grenade launcher crate" + +/datum/supply_pack/attachment/flare + name = "Underbarrel Flare Gun Crate" + desc = "Contains a single shot underbarrel flare gun to be mounted on a firearm. One box of flares included." + cost = 200 + contains = list(/obj/item/attachment/gun/flare) + crate_name = "underbarrel flare gun crate" diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 27f71dfa9359..2ffda7d05996 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -54,6 +54,7 @@ /obj/item/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) . = ..() + var/modifiers = params2list(clickparams) if(!HAS_TRAIT(src, TRAIT_WIELDED)) return if(!proximity_flag && charged)//Mark a target, or mine a tile. @@ -61,7 +62,7 @@ if(!isturf(proj_turf)) return var/obj/projectile/destabilizer/D = new /obj/projectile/destabilizer(proj_turf) - D.preparePixelProjectile(target, user, clickparams) + D.preparePixelProjectile(target, user, modifiers) D.firer = user D.hammer_synced = src playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, TRUE) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index ccd6540ffca1..19bff4af3c39 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -224,9 +224,11 @@ Doesn't work on other aliens/AI.*/ if(!isturf(U) || !isturf(T)) return FALSE + var/modifiers = params2list(params) user.visible_message("[user] spits neurotoxin!", "You spit neurotoxin.") var/obj/projectile/bullet/neurotoxin/A = new /obj/projectile/bullet/neurotoxin(user.loc) - A.preparePixelProjectile(target, user, params) + + A.preparePixelProjectile(target, user, modifiers) A.fire() user.newtonian_move(get_dir(U, T)) user.adjustPlasma(-p_cost) diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm index 6759b8a47f46..387d458e28cc 100644 --- a/code/modules/movespeed/modifiers/items.dm +++ b/code/modules/movespeed/modifiers/items.dm @@ -15,6 +15,10 @@ multiplicative_slowdown = 1 variable = TRUE +/datum/movespeed_modifier/aiming + multiplicative_slowdown = 0 + variable = TRUE + /datum/movespeed_modifier/berserk multiplicative_slowdown = -0.2 diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm index cfa4e91e645c..5ed202107770 100644 --- a/code/modules/projectiles/ammunition/_firing.dm +++ b/code/modules/projectiles/ammunition/_firing.dm @@ -46,6 +46,7 @@ qdel(reagents) /obj/item/ammo_casing/proc/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread, atom/fired_from) + var/modifiers = params2list(params) var/turf/curloc if(user) curloc = get_turf(user) @@ -66,9 +67,9 @@ direct_target = target if(!direct_target) if(user) - BB.preparePixelProjectile(target, user, params, spread) + BB.preparePixelProjectile(target, user, modifiers, spread) else - BB.preparePixelProjectile(target, curloc, params, spread) + BB.preparePixelProjectile(target, curloc, modifiers, spread) BB.fire(null, direct_target) BB = null return TRUE diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f66dddfec9b5..faf596a7d42e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -137,6 +137,8 @@ var/wielded_fully = FALSE ///Slowdown for wielding var/wield_slowdown = 0.1 + ///slowdown for aiming whilst wielding + var/aimed_wield_slowdown = 0.1 ///How long between wielding and firing in tenths of seconds var/wield_delay = 0.4 SECONDS ///Storing value for above @@ -216,6 +218,8 @@ ///Used if the guns recoil is lower then the min, it clamps the highest recoil var/min_recoil = 0 + ///if we want a min recoil (or lack of it) whilst aiming + var/min_recoil_aimed = 0 var/gunslinger_recoil_bonus = 0 var/gunslinger_spread_bonus = 0 @@ -276,7 +280,7 @@ * Zooming */ ///Whether the gun generates a Zoom action on creation - var/zoomable = FALSE + var/zoomable = TRUE //Zoom toggle var/zoomed = FALSE ///Distance in TURFs to move the user's screen forward (the "zoom" effect) @@ -1006,7 +1010,7 @@ //I need to refactor this into an attachment /datum/action/toggle_scope_zoom - name = "Toggle Scope" + name = "Aim Down Sights" check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_LYING icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "sniper_zoom" @@ -1017,6 +1021,7 @@ var/obj/item/gun/gun = target gun.zoom(owner, owner.dir) + gun.min_recoil = gun.min_recoil_aimed /datum/action/toggle_scope_zoom/Remove(mob/user) if(!istype(target, /obj/item/gun)) @@ -1042,17 +1047,23 @@ if((!zoomed && wielded_fully) || zoomed) zoomed = !zoomed else - to_chat(user, "You can't look down the scope without wielding [src]!") + to_chat(user, span_danger("You can't look down the sights without wielding [src]!")) zoomed = FALSE else zoomed = forced_zoom if(zoomed) RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate)) + ADD_TRAIT(user, TRAIT_AIMING, ref(src)) user.client.view_size.zoomOut(zoom_out_amt, zoom_amt, direc) + min_recoil = min_recoil_aimed + user.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/aiming, multiplicative_slowdown = aimed_wield_slowdown) else UnregisterSignal(user, COMSIG_ATOM_DIR_CHANGE) + REMOVE_TRAIT(user, TRAIT_AIMING, ref(src)) user.client.view_size.zoomIn() + min_recoil = initial(min_recoil) + user.remove_movespeed_modifier(/datum/movespeed_modifier/aiming) return zoomed //Proc, so that gun accessories/scopes/etc. can easily add zooming. diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index a3247cc3dcf0..8a933179de2a 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -6,6 +6,9 @@ default_firemode = FIREMODE_SEMIAUTO wield_delay = 0.8 SECONDS wield_slowdown = RIFLE_SLOWDOWN + aimed_wield_slowdown = RIFLE_AIM_SLOWDOWN + + zoom_amt = RIFLE_ZOOM fire_delay = 0.2 SECONDS @@ -50,6 +53,22 @@ /obj/item/ammo_box/magazine/skm_762_40, ) + //truly a doohickey for every occasion + valid_attachments = list( + /obj/item/attachment/silencer, + /obj/item/attachment/laser_sight, + /obj/item/attachment/rail_light, + /obj/item/attachment/bayonet, + /obj/item/attachment/scope, + /obj/item/attachment/long_scope, + /obj/item/attachment/energy_bayonet, + ) + slot_available = list( + ATTACHMENT_SLOT_MUZZLE = 1, + ATTACHMENT_SLOT_RAIL = 1, + ATTACHMENT_SLOT_SCOPE = 1 + ) + spread = 1 wield_delay = 0.7 SECONDS diff --git a/code/modules/projectiles/guns/ballistic/marksman.dm b/code/modules/projectiles/guns/ballistic/marksman.dm index 9c89c551b124..557ccc5ca21b 100644 --- a/code/modules/projectiles/guns/ballistic/marksman.dm +++ b/code/modules/projectiles/guns/ballistic/marksman.dm @@ -4,6 +4,10 @@ burst_size = 1 zoomable = TRUE //this var as true without setting anything else produces a 2x zoom wield_slowdown = DMR_SLOWDOWN + aimed_wield_slowdown = LONG_RIFLE_AIM_SLOWDOWN + zoom_amt = DMR_ZOOM wield_delay = 1 SECONDS + min_recoil = 0.1 + light_range = 2 diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index bd7a4728b188..a1b319692467 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -12,11 +12,15 @@ recoil_unwielded = 3 recoil_backtime_multiplier = 1 + zoom_amt = PISTOL_ZOOM + wield_delay = 0.2 SECONDS fire_delay = 0.2 SECONDS spread = 5 spread_unwielded = 7 + wield_slowdown = PISTOL_SLOWDOWN + aimed_wield_slowdown = PISTOL_AIM_SLOWDOWN muzzleflash_iconstate = "muzzle_flash_light" light_range = 1 diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 36fece5f8c31..2375b56e5930 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -39,7 +39,9 @@ bolt_wording = "hammer" dry_fire_sound = 'sound/weapons/gun/general/bolt_drop.ogg' dry_fire_text = "snap" + wield_slowdown = REVOLVER_SLOWDOWN + aimed_wield_slowdown = PISTOL_AIM_SLOWDOWN gun_firemodes = list(FIREMODE_SEMIAUTO) default_firemode = FIREMODE_SEMIAUTO diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index b60ab788ba80..819c32b888c1 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -27,6 +27,9 @@ gun_firemodes = list(FIREMODE_SEMIAUTO) default_firemode = FIREMODE_SEMIAUTO + zoom_amt = RIFLE_ZOOM + aimed_wield_slowdown = RIFLE_AIM_SLOWDOWN + spread = -1 spread_unwielded = 48 recoil = -3 diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 551856a088b1..c05b9a63eb40 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -31,8 +31,11 @@ fire_select_icon_state_prefix = "sg_" wield_slowdown = SHOTGUN_SLOWDOWN + aimed_wield_slowdown = SHOTGUN_AIM_SLOWDOWN wield_delay = 0.8 SECONDS + zoom_amt = SHOTGUN_ZOOM + spread = 4 spread_unwielded = 10 recoil = 1 @@ -40,6 +43,8 @@ gunslinger_recoil_bonus = -1 + min_recoil = 0.1 + /obj/item/gun/ballistic/shotgun/blow_up(mob/user) if(chambered && chambered.BB) process_fire(user, user, FALSE) diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index 52fb375b9424..faa52c29f268 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -8,6 +8,8 @@ spread = 6 spread_unwielded = 10 wield_slowdown = SMG_SLOWDOWN + aimed_wield_slowdown = SMG_AIM_SLOWDOWN + zoom_amt = SMG_ZOOM recoil_unwielded = 4 w_class = WEIGHT_CLASS_BULKY diff --git a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm index bd2f997c7cc1..4d93fca00c47 100644 --- a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm @@ -1,5 +1,5 @@ -#define CLIP_ATTACHMENTS list(list(/obj/item/attachment/silencer, /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, /obj/item/attachment/bayonet, /obj/item/attachment/sling, /obj/item/attachment/gun)) -#define CLIP_ATTACHMNENT_POINTS list() +#define CLIP_ATTACHMENTS list(/obj/item/attachment/silencer, /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, /obj/item/attachment/bayonet, /obj/item/attachment/scope, /obj/item/attachment/long_scope, /obj/item/attachment/sling, /obj/item/attachment/gun) +#define CLIP_ATTACHMENT_POINTS list(ATTACHMENT_SLOT_MUZZLE = 1,ATTACHMENT_SLOT_RAIL = 1,ATTACHMENT_SLOT_SCOPE=1) //########### PISTOLS ###########// @@ -178,10 +178,8 @@ NO_MAG_GUN_HELPER(automatic/pistol/cm357) spread_unwielded = 7 valid_attachments = CLIP_ATTACHMENTS - slot_available = list( - ATTACHMENT_SLOT_MUZZLE = 1, - ATTACHMENT_SLOT_RAIL = 1 - ) + slot_available = CLIP_ATTACHMENT_POINTS + slot_offsets = list( ATTACHMENT_SLOT_MUZZLE = list( "x" = 37, @@ -326,16 +324,8 @@ NO_MAG_GUN_HELPER(automatic/smg/cm5) actions_types = list() manufacturer = MANUFACTURER_MINUTEMAN - valid_attachments = list( - /obj/item/attachment/silencer, - /obj/item/attachment/laser_sight, - /obj/item/attachment/rail_light, - /obj/item/attachment/bayonet - ) - slot_available = list( - ATTACHMENT_SLOT_MUZZLE = 1, - ATTACHMENT_SLOT_RAIL = 1 - ) + valid_attachments = CLIP_ATTACHMENTS + slot_available = CLIP_ATTACHMENT_POINTS slot_offsets = list( ATTACHMENT_SLOT_MUZZLE = list( "x" = 48, @@ -344,9 +334,15 @@ NO_MAG_GUN_HELPER(automatic/smg/cm5) ATTACHMENT_SLOT_RAIL = list( "x" = 35, "y" = 16, + ), + ATTACHMENT_SLOT_SCOPE = list( + "x" = 18, + "y" = 22, ) ) + default_attachments = list(/obj/item/attachment/scope) + wield_slowdown = DMR_SLOWDOWN spread = -4 fire_select_icon_state_prefix = "clip_" @@ -435,6 +431,9 @@ NO_MAG_GUN_HELPER(automatic/smg/cm5) fire_delay = 0.18 SECONDS + valid_attachments = CLIP_ATTACHMENTS + slot_available = CLIP_ATTACHMENT_POINTS + load_sound = 'sound/weapons/gun/rifle/cm82_reload.ogg' load_empty_sound = 'sound/weapons/gun/rifle/cm82_reload.ogg' eject_sound = 'sound/weapons/gun/rifle/cm82_unload.ogg' diff --git a/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm b/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm index 90e385c11142..2eadfe016180 100644 --- a/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm @@ -611,6 +611,22 @@ EMPTY_GUN_HELPER(shotgun/flamingarrow/conflagration) allowed_ammo_types = list( /obj/item/ammo_box/magazine/illestren_a850r, ) + + valid_attachments = list( + /obj/item/attachment/silencer, + /obj/item/attachment/laser_sight, + /obj/item/attachment/rail_light, + /obj/item/attachment/bayonet, + /obj/item/attachment/sling, + /obj/item/attachment/scope, + /obj/item/attachment/long_scope, + ) + slot_available = list( + ATTACHMENT_SLOT_MUZZLE = 1, + ATTACHMENT_SLOT_RAIL = 1, + ATTACHMENT_SLOT_SCOPE = 1 + ) + empty_autoeject = TRUE eject_sound_vary = FALSE can_be_sawn_off = TRUE @@ -677,6 +693,20 @@ EMPTY_GUN_HELPER(shotgun/flamingarrow/conflagration) wield_slowdown = RIFLE_SLOWDOWN wield_delay = 0.65 SECONDS + valid_attachments = list( + /obj/item/attachment/silencer, + /obj/item/attachment/laser_sight, + /obj/item/attachment/rail_light, + /obj/item/attachment/bayonet, + /obj/item/attachment/scope, + /obj/item/attachment/long_scope, + ) + slot_available = list( + ATTACHMENT_SLOT_MUZZLE = 1, + ATTACHMENT_SLOT_RAIL = 1, + ATTACHMENT_SLOT_SCOPE = 1 + ) + spread = -5 spread_unwielded = 7 @@ -819,6 +849,20 @@ EMPTY_GUN_HELPER(shotgun/flamingarrow) gun_firemodes = list(FIREMODE_SEMIAUTO) default_firemode = FIREMODE_SEMIAUTO + valid_attachments = list( + /obj/item/attachment/silencer, + /obj/item/attachment/laser_sight, + /obj/item/attachment/rail_light, + /obj/item/attachment/bayonet, + /obj/item/attachment/scope, + /obj/item/attachment/long_scope, + ) + slot_available = list( + ATTACHMENT_SLOT_MUZZLE = 1, + ATTACHMENT_SLOT_RAIL = 1, + ATTACHMENT_SLOT_SCOPE = 1 + ) + /obj/item/gun/ballistic/shotgun/doublebarrel/beacon/sawoff(forced = FALSE) . = ..() if(.) @@ -902,6 +946,22 @@ EMPTY_GUN_HELPER(shotgun/doublebarrel/beacon) recoil_unwielded = 4 wield_slowdown = DMR_SLOWDOWN + valid_attachments = list( + /obj/item/attachment/silencer, + /obj/item/attachment/laser_sight, + /obj/item/attachment/rail_light, + /obj/item/attachment/bayonet, + /obj/item/attachment/scope, + /obj/item/attachment/long_scope, + ) + slot_available = list( + ATTACHMENT_SLOT_MUZZLE = 1, + ATTACHMENT_SLOT_RAIL = 1, + ATTACHMENT_SLOT_SCOPE = 1 + ) + + default_attachments = list(/obj/item/attachment/scope) + /obj/item/gun/ballistic/rifle/scout name = "HP Scout" desc = "A powerful bolt-action rifle usually given to mercenary hunters of the Saint-Roumain Militia, equally suited for taking down big game or two-legged game. Chambered in .300 Magnum." diff --git a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm index bc0bfb4c72be..d639f7a5f8c5 100644 --- a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm @@ -1,4 +1,4 @@ -#define SCARBOROUGH_ATTACHMENTS list(/obj/item/attachment/silencer, /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, /obj/item/attachment/bayonet, /obj/item/attachment/energy_bayonet, /obj/item/attachment/gun) +#define SCARBOROUGH_ATTACHMENTS list(/obj/item/attachment/silencer, /obj/item/attachment/laser_sight, /obj/item/attachment/rail_light, /obj/item/attachment/bayonet, /obj/item/attachment/energy_bayonet, /obj/item/attachment/scope, /obj/item/attachment/gun) #define SCARBOROUGH_ATTACH_SLOTS list(ATTACHMENT_SLOT_MUZZLE = 1, ATTACHMENT_SLOT_SCOPE = 1, ATTACHMENT_SLOT_RAIL = 1) //########### PISTOLS ###########// diff --git a/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm b/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm index 04a0bb7f7b22..ff36ffcd2292 100644 --- a/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm @@ -1,5 +1,5 @@ -#define SERENE_ATTACHMENTS list(/obj/item/attachment/rail_light, /obj/item/attachment/bayonet, /obj/item/attachment/sling, /obj/item/attachment/gun) -#define SERENE_ATTACH_SLOTS list(ATTACHMENT_SLOT_MUZZLE = 1, ATTACHMENT_SLOT_RAIL = 1) +#define SERENE_ATTACHMENTS list(/obj/item/attachment/rail_light, /obj/item/attachment/bayonet,/obj/item/attachment/scope,/obj/item/attachment/long_scope, /obj/item/attachment/sling, /obj/item/attachment/gun) +#define SERENE_ATTACH_SLOTS list(ATTACHMENT_SLOT_MUZZLE = 1, ATTACHMENT_SLOT_RAIL = 1, ATTACHMENT_SLOT_SCOPE = 1) /* Micro Target */ @@ -109,9 +109,13 @@ EMPTY_GUN_HELPER(automatic/pistol/m17) "x" = 44, "y" = 18, ), - ATTACHMENT_SLOT_RAIL = list( + ATTACHMENT_SLOT_SCOPE = list( "x" = 17, "y" = 20, + ), + ATTACHMENT_SLOT_RAIL = list( + "x" = 28, + "y" = 17, ) ) @@ -193,9 +197,13 @@ EMPTY_GUN_HELPER(automatic/m12_sporter/mod) "x" = 47, "y" = 21, ), - ATTACHMENT_SLOT_RAIL = list( + ATTACHMENT_SLOT_SCOPE = list( "x" = 13, "y" = 23, + ), + ATTACHMENT_SLOT_RAIL = list( + "x" = 24, + "y" = 19, ) ) diff --git a/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm b/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm index a053a8146831..5224183f6a34 100644 --- a/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm +++ b/code/modules/projectiles/guns/manufacturer/solar_armories/ballistic.dm @@ -1,3 +1,6 @@ +#define SOLAR_ATTACHMENTS list(/obj/item/attachment/laser_sight,/obj/item/attachment/rail_light,/obj/item/attachment/bayonet,/obj/item/attachment/energy_bayonet,/obj/item/attachment/scope,/obj/item/attachment/long_scope) +#define SOLAR_ATTACH_SLOTS list(ATTACHMENT_SLOT_MUZZLE = 1, ATTACHMENT_SLOT_SCOPE = 1, ATTACHMENT_SLOT_RAIL = 1) + ///SOLAR ARMORIES //fuck you im not typing the full name out //solarwaffledesuckenmydickengeschutzenweaponmanufacturinglocation @@ -121,16 +124,11 @@ slot_flags = ITEM_SLOT_BACK + valid_attachments = SOLAR_ATTACHMENTS + slot_available = SOLAR_ATTACH_SLOTS //gauss doesn't explode so there's not light. light_range = 0 - valid_attachments = list( - /obj/item/attachment/laser_sight, - /obj/item/attachment/rail_light, - /obj/item/attachment/bayonet, - /obj/item/attachment/energy_bayonet - ) - /obj/item/gun/ballistic/automatic/powered/gauss/claris/suns desc = "An antiquated Solarian rifle. Chambered in ferromagnetic pellets, just as the founding Solarians intended. Evidently, SUNS' founders echo the sentiment, as it appears to be painted in their colors." @@ -166,16 +164,12 @@ slot_flags = ITEM_SLOT_BACK + valid_attachments = SOLAR_ATTACHMENTS + slot_available = SOLAR_ATTACH_SLOTS + //gauss doesn't explode so there's not light. light_range = 0 - valid_attachments = list( - /obj/item/attachment/laser_sight, - /obj/item/attachment/rail_light, - /obj/item/attachment/bayonet, - /obj/item/attachment/energy_bayonet - ) - gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) default_firemode = FIREMODE_SEMIAUTO diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 3d1c407a7e56..3e74ee826550 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -206,7 +206,8 @@ if(!istype(curloc)) return targloc = get_turf_in_angle(lastangle, curloc, 10) - P.preparePixelProjectile(targloc, current_user, current_user.client.mouseParams, 0) + var/mouse_modifiers = params2list(current_user.client.mouseParams) + P.preparePixelProjectile(targloc, current_user, mouse_modifiers, 0) P.fire(lastangle) /obj/item/gun/energy/beam_rifle/process() @@ -399,7 +400,8 @@ firing_dir = BB.firer.dir if(!BB.suppressed && firing_effect_type) new firing_effect_type(get_turf(src), firing_dir) - BB.preparePixelProjectile(target, user, params, spread) + var/modifiers = params2list(params) + BB.preparePixelProjectile(target, user, modifiers, spread) BB.fire(gun? gun.lastangle : null, null) BB = null return TRUE diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 161aa216b866..b8dbdba987af 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -83,6 +83,7 @@ /obj/item/gun/blastcannon/afterattack(atom/target, mob/user, flag, params) if((!bomb && bombcheck) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2)) return ..() + var/modifiers = params2list(params) var/power = bomb? calculate_bomb() : debug_power power = min(power, max_power) QDEL_NULL(bomb) @@ -98,7 +99,7 @@ log_game("Blast wave fired from [AREACOORD(starting)] at [AREACOORD(targturf)] ([target.name]) by [key_name(user)] with power [heavy]/[medium]/[light].") var/obj/projectile/blastwave/BW = new(loc, heavy, medium, light) BW.hugbox = hugbox - BW.preparePixelProjectile(target, get_turf(src), params, 0) + BW.preparePixelProjectile(target, get_turf(src), modifiers, 0) BW.fire() name = initial(name) desc = initial(desc) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 968c3f85ebbc..3a82e7d8df1b 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -837,63 +837,96 @@ if(prob(50)) homing_offset_y = -homing_offset_y -//Spread is FORCED! -/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0) - var/turf/curloc = get_turf(source) - var/turf/targloc = get_turf(target) +/** + * Aims the projectile at a target. + * + * Must be passed at least one of a target or a list of click parameters. + * If only passed the click modifiers the source atom must be a mob with a client. + * + * Arguments: + * - [target][/atom]: (Optional) The thing that the projectile will be aimed at. + * - [source][/atom]: The initial location of the projectile or the thing firing it. + * - [modifiers][/list]: (Optional) A list of click parameters to apply to this operation. + * - deviation: (Optional) How the trajectory should deviate from the target in degrees. + * - //Spread is FORCED! + */ +/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, list/modifiers = null, spread = 0) + if(!(isnull(modifiers) || islist(modifiers))) + stack_trace("WARNING: Projectile [type] fired with non-list modifiers, likely was passed click params.") + modifiers = null + + var/turf/source_loc = get_turf(source) + var/turf/target_loc = get_turf(target) + if(isnull(source_loc)) + stack_trace("WARNING: Projectile [type] fired from nullspace.") + qdel(src) + return FALSE + trajectory_ignore_forcemove = TRUE - forceMove(get_turf(source)) + forceMove(source_loc) trajectory_ignore_forcemove = FALSE - starting = get_turf(source) + + starting = source_loc + pixel_x = source.pixel_x + pixel_y = source.pixel_y original = target - if(targloc || !params) - yo = targloc.y - curloc.y - xo = targloc.x - curloc.x - setAngle(Get_Angle(src, targloc) + spread) + if(length(modifiers)) + var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, target_loc && target, modifiers) - if(isliving(source) && params) - var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, params) p_x = calculated[2] p_y = calculated[3] - setAngle(calculated[1] + spread) - else if(targloc) - yo = targloc.y - curloc.y - xo = targloc.x - curloc.x - setAngle(Get_Angle(src, targloc) + spread) - else - stack_trace("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!") - qdel(src) + return TRUE + + if(target_loc) + yo = target_loc.y - source_loc.y + xo = target_loc.x - source_loc.x + setAngle(get_angle(src, target_loc) + spread) + return TRUE + + stack_trace("WARNING: Projectile [type] fired without a target or mouse parameters to aim with.") + qdel(src) + return FALSE -/proc/calculate_projectile_angle_and_pixel_offsets(mob/user, params) - var/list/modifiers = params2list(params) - var/p_x = 0 - var/p_y = 0 +/proc/calculate_projectile_angle_and_pixel_offsets(atom/source, atom/target, modifiers) var/angle = 0 - if(LAZYACCESS(modifiers, ICON_X)) - p_x = text2num(LAZYACCESS(modifiers, ICON_X)) - if(LAZYACCESS(modifiers, ICON_Y)) - p_y = text2num(LAZYACCESS(modifiers, ICON_Y)) - if(LAZYACCESS(modifiers, SCREEN_LOC)) - //Split screen-loc up into X+Pixel_X and Y+Pixel_Y - var/list/screen_loc_params = splittext(LAZYACCESS(modifiers, SCREEN_LOC), ",") - - //Split X+Pixel_X up into list(X, Pixel_X) - var/list/screen_loc_X = splittext(screen_loc_params[1],":") - - //Split Y+Pixel_Y up into list(Y, Pixel_Y) - var/list/screen_loc_Y = splittext(screen_loc_params[2],":") - var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32 - var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32 - - //Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average. - var/list/screenview = getviewsize(user.client.view) - var/screenviewX = screenview[1] * world.icon_size - var/screenviewY = screenview[2] * world.icon_size - - var/ox = round(screenviewX/2) - user.client.pixel_x //"origin" x - var/oy = round(screenviewY/2) - user.client.pixel_y //"origin" y - angle = ATAN2(y - oy, x - ox) + var/p_x = LAZYACCESS(modifiers, ICON_X) ? text2num(LAZYACCESS(modifiers, ICON_X)) : world.icon_size / 2 // ICON_(X|Y) are measured from the bottom left corner of the icon. + var/p_y = LAZYACCESS(modifiers, ICON_Y) ? text2num(LAZYACCESS(modifiers, ICON_Y)) : world.icon_size / 2 // This centers the target if modifiers aren't passed. + + if(target) + var/turf/source_loc = get_turf(source) + var/turf/target_loc = get_turf(target) + var/dx = ((target_loc.x - source_loc.x) * world.icon_size) + (target.pixel_x - source.pixel_x) + (p_x - (world.icon_size / 2)) + var/dy = ((target_loc.y - source_loc.y) * world.icon_size) + (target.pixel_y - source.pixel_y) + (p_y - (world.icon_size / 2)) + + angle = ATAN2(dy, dx) + return list(angle, p_x, p_y) + + if(!ismob(source) || !LAZYACCESS(modifiers, SCREEN_LOC)) + CRASH("Can't make trajectory calculations without a target or click modifiers and a client.") + + var/mob/user = source + if(!user.client) + CRASH("Can't make trajectory calculations without a target or click modifiers and a client.") + + //Split screen-loc up into X+Pixel_X and Y+Pixel_Y + var/list/screen_loc_params = splittext(LAZYACCESS(modifiers, SCREEN_LOC), ",") + //Split X+Pixel_X up into list(X, Pixel_X) + var/list/screen_loc_X = splittext(screen_loc_params[1],":") + //Split Y+Pixel_Y up into list(Y, Pixel_Y) + var/list/screen_loc_Y = splittext(screen_loc_params[2],":") + + var/tx = (text2num(screen_loc_X[1]) - 1) * world.icon_size + text2num(screen_loc_X[2]) + var/ty = (text2num(screen_loc_Y[1]) - 1) * world.icon_size + text2num(screen_loc_Y[2]) + + //Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average. + var/list/screenview = getviewsize(user.client.view) + var/screenviewX = screenview[1] * world.icon_size + var/screenviewY = screenview[2] * world.icon_size + + var/ox = round(screenviewX/2) - user.client.pixel_x //"origin" x + var/oy = round(screenviewY/2) - user.client.pixel_y //"origin" y + angle = ATAN2(tx - oy, ty - ox) return list(angle, p_x, p_y) /obj/projectile/Destroy() diff --git a/icons/obj/guns/attachments.dmi b/icons/obj/guns/attachments.dmi index 30c7f7e0391b4f2e1e2b4c8dd8868d2296157512..6a396d74c98ecca15939485241dced7a04f4bdad 100644 GIT binary patch literal 6061 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 R6(Ils002ovPDHLkV1j^?pv3?H delta 4044 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 delta 1614 zcmV-U2C@0q5AYALwgG=7Nkl42HG*iOzNx+jH*!Qcr?bQBjCu^*qbh zot;jL@Jb>=8d?+qm7xOPRt5?w1BH}lLWTmP~_EITLMzoXy4iEwffUCN{cF})$fOh#Z_6+op=p^kU z6;KaF1d>3bM1e*Uaxcm{P!Hws1n2}h4R(r#=f`*=ZXMzNQnhS4ivid{o&ZpsN2$6- zpra@;Ks{6dNHle4vF`x&P#YZthDz2!DW)IYHFhf?xW;x5gmb01XDWqvjsz8<{(m#Z zZz}_Zlz~FZKv{oTSznUY=ak(o{&@UMU-{8%OI=FYbxB-S`{&u3{oeiTu)>J>a1kd;S4EHHv|J^kdoQGf>v2S&YH4zSHZP$LVe5_k38!D zMB7;ZwJT|+2N`elN`dJWAGe-y|%DKK%<|_O}+WKoZ?Q!5O@mqRk+X z=(<2u@&!bkaqy#F0^?U*OiiHqzX1db`>sh?zrHwnf_-ocWMgXGPqL+C7^vz8K%ri9 z8Ku%KYU6)^MANtfGA#7LEU)5x+pGe$t-}NEBw)mO75hT4Nr+VI{DmU`Sn4vGxkOc^ z3S6a;ycv&JopD?waWfwDaCI}HtgNi8tgNi8tgNi8tXNUA5vb*bY+6#RN)gw+N{Wh9 zzN%|U0+N!}000p(V1%lwnv|=DK$H|41gaVWkgR{|hH}PWu{yqfdw{43M<}YzM1$c| z0+5nz15HHNk6lEvSxa=HqHWry3xmf2K^Ku4u+eM^5E9wQeB4n8)KF};BevAqk60p) zvo<4L_&cO*PG?+M0GFo&*`Qr)8%kjU=&3X`35@bz4dDubu4c%}%E}7sZH#$e4KeD? z-<*H*w|U=%$$r9*pYxvrw6Y!O$M+&iqrt4nmOQHmQFvylI>YO$2Ov?W#d`@pX7{A( z*dznRR**O|{nj{cvx3Z!S;H7hkO${Y)u~}xJAlEjjFn7?VI<-FrTb*Byc&9-OZ=4zpZN>0P>~kEEg!_ zCL*}F_&>Tk4V&iHf|929^r<@CSXbBxj(&)d8SBtIvNI zz!`yrd^@7Hros!FAyvn``ivcTWxXQghaS~9a*{noiSYihF;!=%-W%{y!<%ruL0N5o zs6Y|>GCip}TOlqSHnFq#t_uk_iUv&POVtq@ff98n_X&elfkmG$WVsp7z+H0tf$Am% zL{HT@GT;Ett-=PyBsDNAE9>vkT{eHmm9yVhsw^Cy>wwD1lYUow9M36VSTgdI;|tp@ zecl~6<)zwdxe2K*H-ttKzB$sQ>c>&N^EJa-s{ zZpAY)oZ<{*O-JaDqh5wHb>QJzy9lP3@|2?&#hQ-tMM1F@x;$i?r3RXR@lb#8LYudq zyoa3ews38>QF;P!3Xsba@}6?kZlLY&1e@RO11^-JN6hAK>?uzXa_JQI;agkSXEUr> zf1M*^LP50A4By}>IMW+}w2AKww^%~;JLt^@(A0P4v$aShDiGh;Mm@~SCN*#Hlzx$b z)aI99`EI768SFtOxs|v@wmm35U8&()7=-+g;W{jm+43{-lb z#sHnhGd2*@#_;W{g=g|n(kGD~9^Z2x$M7sd2Y{ToLAkxiil#XXG+K;0KVE_)0_uOl zKz_J{e*R&I=%IBu=cNwrI8YhkL(8-903Fr Date: Fri, 17 Jan 2025 14:57:18 -0600 Subject: [PATCH 044/118] Automatic changelog generation for PR #3736 [ci skip] --- html/changelogs/AutoChangeLog-pr-3736.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3736.yml diff --git a/html/changelogs/AutoChangeLog-pr-3736.yml b/html/changelogs/AutoChangeLog-pr-3736.yml new file mode 100644 index 000000000000..cfe5dfef845e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3736.yml @@ -0,0 +1,9 @@ +author: Erikafox +changes: + - {rscadd: Scopes!!!} + - {rscadd: All guns now have an implicit ability to aim down sights.} + - {rscadd: aiming now slows you down.} + - {bugfix: 'fixes ported from /tg/: projectiles no longer sail into the ether when + you fire them at a distance'} + - {bugfix: aiming is now less jank} +delete-after: true From d05fce8bc75d2e154edc033cd3755cfa6ba05f5a Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:02:45 -0500 Subject: [PATCH 045/118] Faction Cargo: Armor (#3887) ## About The Pull Request Adds a bunch of the stupid armor variations and not stupid hardsuits to cargo for factions to buy. Removes a bunch of armor cruft like wizard hardsuits. or chronosuits. yeah. chronosuits. those are really in the vogue now. Adjusts some values on armor / spacesuits to make them a little more unique. ## Why It's Good For The Game buy faction gear good yes yes? ## Changelog :cl: add: You can now purchase most faction's special armor at the outpost. del: a bunch of wizard bullshit, and also chrono troopers from red alert 2 code: spacesuit_armor has been split into 2 files /:cl: --------- Signed-off-by: Erika Fox <94164348+Erikafox@users.noreply.github.com> Co-authored-by: Mark Suckerberg Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/controllers/subsystem/traumas.dm | 1 - .../antagonists/wizard/equipment/spellbook.dm | 13 - code/modules/cargo/packs.dm | 2 + code/modules/cargo/packs/armor.dm | 182 +++++++++ code/modules/cargo/packs/spacesuit_armor.dm | 144 -------- code/modules/cargo/packs/spacesuits.dm | 321 ++++++++++++++++ code/modules/clothing/factions/clip.dm | 8 +- code/modules/clothing/factions/hardliners.dm | 2 + code/modules/clothing/factions/ngr.dm | 1 + code/modules/clothing/factions/srm.dm | 2 +- code/modules/clothing/outfits/standard.dm | 9 - .../clothing/spacesuits/_spacesuits.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 346 ------------------ code/modules/clothing/spacesuits/hardsuit.dm | 136 ++----- .../clothing/spacesuits/miscellaneous.dm | 1 + code/modules/clothing/spacesuits/syndi.dm | 4 +- code/modules/faction/faction_datum.dm | 5 + code/modules/holiday/holidays.dm | 1 - code/modules/mob/living/carbon/human/human.dm | 4 - code/modules/spells/spell.dm | 2 - shiptest.dme | 4 +- 21 files changed, 553 insertions(+), 637 deletions(-) create mode 100644 code/modules/cargo/packs/armor.dm delete mode 100644 code/modules/cargo/packs/spacesuit_armor.dm create mode 100644 code/modules/cargo/packs/spacesuits.dm delete mode 100644 code/modules/clothing/spacesuits/chronosuit.dm diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 1b31fc270700..3a046a9aa020 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -123,7 +123,6 @@ SUBSYSTEM_DEF(traumas) "the supernatural" = typecacheof(list( /obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff, - /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/clothing/under/rank/civilian/chaplain)), "aliens" = typecacheof(list( diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 378aa7dbe14a..261614424abc 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -287,19 +287,6 @@ item_path = /obj/item/necromantic_stone category = "Assistance" -/datum/spellbook_entry/item/armor - name = "Mastercrafted Armor Set" - desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." - item_path = /obj/item/clothing/suit/space/hardsuit/wizard - category = "Defensive" - -/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . = ..() - if(.) - new /obj/item/tank/internals/oxygen(get_turf(user)) //i need to BREATHE - new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. - new /obj/item/clothing/gloves/combat/wizard(get_turf(user))//To complete the outfit - /datum/spellbook_entry/item/contract name = "Contract of Apprenticeship" desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 4e26a713a6b2..dfba09b7ea9b 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -11,7 +11,9 @@ var/small_item = FALSE //Small items can be grouped into a single crate. var/datum/faction/faction + //what's the discount for buyers in our faction. var/faction_discount = 15 + //are we locked to one faction and its subgroups var/faction_locked = FALSE /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) diff --git a/code/modules/cargo/packs/armor.dm b/code/modules/cargo/packs/armor.dm new file mode 100644 index 000000000000..e0013468e50f --- /dev/null +++ b/code/modules/cargo/packs/armor.dm @@ -0,0 +1,182 @@ +/datum/supply_pack/armor + group = "Armor" + crate_type = /obj/structure/closet/crate/secure + + +/* + Non-spaceworthy (armor) +*/ + +/datum/supply_pack/armor/basic_armor + name = "Armor Crate" + desc = "One set of well-rounded body armor. The set includes a helmet and vest." + cost = 750 + contains = list(/obj/item/clothing/suit/armor/vest, + /obj/item/clothing/head/helmet/sec) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/armor/riot_armor + name = "Riot Armor Crate" + desc = "Contains one full set of riot armor. Although heavily padded to deal with close-quarters threats, they perform poorly against most firearms." + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/riot, + /obj/item/clothing/head/helmet/riot) + crate_name = "riot armor crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/armor/bullet_armor + name = "Bulletproof Armor Crate" + desc = "Contains one full set of bulletproof armor, guaranteed to reduce a bullet's stopping power by half but with limited protection against melee weaponry." + cost = 1750 + contains = list(/obj/item/clothing/suit/armor/vest/bulletproof, + /obj/item/clothing/head/helmet/bulletproof, + /obj/item/clothing/glasses/sunglasses/ballistic) + crate_name = "bulletproof armor crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/armor/laser_armor + name = "Reflector Vest Crate" + desc = "Contains one vest made of highly reflective material. The armor piece diffuses a laser's energy by over half, as well as offering a good chance to reflect the laser entirely." + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/laserproof) + crate_name = "reflector vest crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/armor/marine_armor + name = "Tactical Armor Crate" + desc = "One set of well-rounded tactical armor. While it does not protect the limbs, the vest is fairly durable. The set includes a helmet and vest." + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/vest/marine, + /obj/item/clothing/head/helmet/bulletproof/x11) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/armor/medium_marine_armor + name = "Medium Tactical Armor Crate" + desc = "One set of well-rounded medium tactical body armor. Plates are attached to the vest and cover the limbs. The set includes a helmet and chestpiece." + cost = 3000 + contains = list(/obj/item/clothing/suit/armor/vest/marine/medium, + /obj/item/clothing/head/helmet/bulletproof/x11) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +//clip + +/datum/supply_pack/armor/clip_armor + name = "X-11 Armor Crate" + desc = "One set of Lanchester Manufacturing-manufactured X-11 armor, sold at a discount to the Confederated League due to a recent contract." + cost = 1250 + contains = list(/obj/item/clothing/suit/armor/vest/bulletproof, + /obj/item/clothing/head/helmet/bulletproof/x11/clip, + /obj/item/clothing/mask/gas/clip) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/clip + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/armor/clip_riot + name = "CLIP Riot Armor Crate" + desc = "One set of Clover Corp-manufactured Riot armor, traditionally issued to BARD for xenofauna removal, but available to League vessels deployed in the Frontier due to high Xenofauna density." + cost = 1000 + contains = list(/obj/item/clothing/suit/armor/riot/clip, + /obj/item/clothing/head/helmet/riot/clip, + /obj/item/clothing/mask/gas/clip) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/clip + faction_discount = 0 + faction_locked = TRUE + +//gezena +/datum/supply_pack/armor/pgf_armor + name = "Raksha-plate Crate" + desc = "One set of standard issue Raksha-plate armor, highly protective and very mobile. The helmet is adjustable for horns." + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/gezena/marine, + /obj/item/clothing/head/helmet/gezena) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/pgf + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/armor/pgf_armor + name = "Navywear Coat Crate" + desc = "One replacement navywear coat. The pricing is unfortunately high to discourage distribution to marines, and encourage servicemen to keep track of their jacket." + cost = 1000 + contains = list(/obj/item/clothing/suit/armor/gezena) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/pgf + faction_discount = 0 + faction_locked = TRUE + +//jardliner + +/datum/supply_pack/armor/hardliner_armor + name = "Hardliner Armor Crate" + desc = "One set of well-rounded hardliner body armor. Well. Rounded aside from the painfully obvious white. Subsidized by Cybersun Biodynamics." + cost = 500 + contains = list(/obj/item/clothing/suit/armor/hardliners, + /obj/item/clothing/head/helmet/hardliners) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/hardliners + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/armor/hardliner_mecha_armor + name = "Hardliner Pilot Armor Crate" + desc = "One set of armor manufactured for Hardliner exosuit pilots. The jacket is often sought out by those outside of it as a keepsake." + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/hardliners/jacket, + /obj/item/clothing/head/helmet/hardliners/swat) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/hardliners + faction_discount = 0 + faction_locked = TRUE + +//ngr +/datum/supply_pack/armor/ngr_armor + name = "NGR Armor Crate" + desc = "One fairly durable, well manufactured type-1 armor vest and associated helmet, painted in the proud reds of the New Gorlex Republic." + cost = 1000 + contains = list(/obj/item/clothing/suit/armor/ngr, + /obj/item/clothing/head/helmet/ngr) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/ngr + faction_discount = 0 + faction_locked = TRUE + +//srm + +/datum/supply_pack/armor/srm_duster + name = "SRM Duster Crate" + desc = "One hand-stitched duster for a proud Roumainian to wear into the Hunt." + cost = 500 + contains = list(/obj/item/clothing/suit/armor/roumain) + crate_name = "duster crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/srm + faction_discount = 0 + faction_locked = TRUE + +//coalition + +/datum/supply_pack/armor/coalition_armor + name = "Coalition Armor Crate" + desc = "An surplus plate carrier left over from the ICW. Its still painted in Coalition colors and likely to trigger IFF on turrets around the Frontier." + cost = 750 + contains = list(/obj/item/clothing/suit/armor/vest/syndie, + /obj/item/clothing/head/helmet/syndie) + crate_name = "armor crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate + faction_discount = 0 + faction_locked = TRUE + + diff --git a/code/modules/cargo/packs/spacesuit_armor.dm b/code/modules/cargo/packs/spacesuit_armor.dm deleted file mode 100644 index d0b1da6be6d2..000000000000 --- a/code/modules/cargo/packs/spacesuit_armor.dm +++ /dev/null @@ -1,144 +0,0 @@ -/datum/supply_pack/spacesuit_armor - group = "Spacesuits & Armor" - crate_type = /obj/structure/closet/crate/secure - -/* - Spacesuits (two parts, helm and suit) -*/ - -/datum/supply_pack/spacesuit_armor/spacesuit - name = "Space Suit Crate" - desc = "Contains one basic space suit. Although the technology is centuries old, it should protect you from the vacuum of space." - cost = 500 - contains = list(/obj/item/clothing/suit/space, - /obj/item/clothing/head/helmet/space) - crate_name = "space suit crate" - -/datum/supply_pack/spacesuit_armor/pilot_spacesuit - name = "Pilot Space Suit Crate" - desc = "One pilot space suit, for improved mobility in exosuits." - cost = 750 - contains = list(/obj/item/clothing/suit/space/pilot, - /obj/item/clothing/head/helmet/space/pilot/random) - crate_name = "pilot space suit crate" - -/datum/supply_pack/spacesuit_armor/mining_hardsuits_indie - name = "Mining Hardsuit Crate" - desc = "One independent-manufactured mining hardsuit, for when explorer suits just dont cut it." - cost = 1500 - contains = list(/obj/item/clothing/suit/space/hardsuit/mining/independent) - crate_name = "mining hardsuit crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/spacesuit_armor/med_hardsuit - name = "Medical Hardsuit Crate" - desc = "One medical hardsuit, resistant to diseases and useful for retrieving patients in space." - cost = 1500 - contains = list(/obj/item/clothing/suit/space/hardsuit/medical) - crate_name = "medical hardsuit crate" - crate_type = /obj/structure/closet/crate/medical - faction = /datum/faction/nt - -/datum/supply_pack/spacesuit_armor/mining_hardsuit_heavy - name = "Heavy Mining Hardsuit Crate" - desc = "One deluxe heavy mining hardsuit for dangerous frontier operations. Comes with a pair of EXOCOM jet boots." - cost = 3500 - contains = list(/obj/item/clothing/suit/space/hardsuit/mining/heavy, - /obj/item/clothing/shoes/bhop) - crate_name = "heavy mining hardsuit crate" - crate_type = /obj/structure/closet/crate/secure/plasma - faction = /datum/faction/nt - -/datum/supply_pack/spacesuit_armor/sec_hardsuit_bundle - name = "Security Hardsuit Crate" - desc = "Contains one security hardsuit for light combat duty." - cost = 2500 - contains = list(/obj/item/clothing/suit/space/hardsuit/security/independent) - crate_name = "security hardsuit crate" - crate_type = /obj/structure/closet/crate/secure/gear - faction = /datum/faction/nt - -/datum/supply_pack/spacesuit_armor/sci_hardsuit - name = "Science Hardsuit Crate" - desc = "Contains one science hardsuit, designed to provide safety under advanced experimental conditions." - cost = 2000 - contains = list(/obj/item/clothing/suit/space/hardsuit/rd) - crate_name = "science hardsuit crate" - crate_type = /obj/structure/closet/crate/secure/science - faction = /datum/faction/nt - -/datum/supply_pack/spacesuit_armor/engi_spacesuit_bundle - name = "Engineering Space Suit Crate" - desc = "Need to turn your ship into a safety hazard? Not a problem! This engineering space suit will help get the job done." - cost = 1500 - contains = list(/obj/item/clothing/suit/space/engineer, - /obj/item/clothing/head/helmet/space/light/engineer) - crate_name = "engineering space suit crate" - crate_type = /obj/structure/closet/crate/secure/engineering - -/datum/supply_pack/spacesuit_armor/atmos_hardsuit - name = "Atmospherics Hardsuit Crate" - desc = "The iconic hardsuit of Nanotrasen's Atmosphere Corps, this hardsuit is known across space as a symbol of defiance in the face of sudden decompression. Smells faintly of plasma." - cost = 2500 - contains = list(/obj/item/clothing/suit/space/hardsuit/engine/atmos) - crate_name = "atmospherics hardsuit crate" - crate_type = /obj/structure/closet/crate/secure/engineering - faction = /datum/faction/nt - -/* - Non-spaceworthy (armor) -*/ - -/datum/supply_pack/spacesuit_armor/basic_armor - name = "Armor Crate" - desc = "One set of well-rounded body armor. The set includes a helmet and vest." - cost = 750 - contains = list(/obj/item/clothing/suit/armor/vest, - /obj/item/clothing/head/helmet/sec) - crate_name = "armor crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/spacesuit_armor/riot_armor - name = "Riot Armor Crate" - desc = "Contains one full set of riot armor. Although heavily padded to deal with close-quarters threats, they perform poorly against most firearms." - cost = 1500 - contains = list(/obj/item/clothing/suit/armor/riot, - /obj/item/clothing/head/helmet/riot) - crate_name = "riot armor crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/spacesuit_armor/bullet_armor - name = "Bulletproof Armor Crate" - desc = "Contains one full set of bulletproof armor, guaranteed to reduce a bullet's stopping power by half but with limited protection against melee weaponry." - cost = 1750 - contains = list(/obj/item/clothing/suit/armor/vest/bulletproof, - /obj/item/clothing/head/helmet/bulletproof, - /obj/item/clothing/glasses/sunglasses/ballistic) - crate_name = "bulletproof armor crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/spacesuit_armor/laser_armor - name = "Reflector Vest Crate" - desc = "Contains one vest made of highly reflective material. The armor piece diffuses a laser's energy by over half, as well as offering a good chance to reflect the laser entirely." - cost = 1500 - contains = list(/obj/item/clothing/suit/armor/laserproof) - crate_name = "reflector vest crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/spacesuit_armor/marine_armor - name = "Tactical Armor Crate" - desc = "One set of well-rounded tactical armor. While it does not protect the limbs, the vest is fairly durable. The set includes a helmet and vest." - cost = 1500 - contains = list(/obj/item/clothing/suit/armor/vest/marine, - /obj/item/clothing/head/helmet/bulletproof/x11) - crate_name = "armor crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/spacesuit_armor/medium_marine_armor - name = "Medium Tactical Armor Crate" - desc = "One set of well-rounded medium tactical body armor. Plates are attached to the vest and cover the limbs. The set includes a helmet and chestpiece." - cost = 3000 - contains = list(/obj/item/clothing/suit/armor/vest/marine/medium, - /obj/item/clothing/head/helmet/bulletproof/x11) - crate_name = "armor crate" - crate_type = /obj/structure/closet/crate/secure/plasma diff --git a/code/modules/cargo/packs/spacesuits.dm b/code/modules/cargo/packs/spacesuits.dm new file mode 100644 index 000000000000..6c02599c7ee2 --- /dev/null +++ b/code/modules/cargo/packs/spacesuits.dm @@ -0,0 +1,321 @@ +/datum/supply_pack/spacesuits + group = "Spacesuits" + crate_type = /obj/structure/closet/crate/secure + +/* + Spacesuits (two parts, helm and suit) +*/ + +/datum/supply_pack/spacesuits/spacesuit + name = "Space Suit Crate" + desc = "Contains one basic space suit. Although the technology is centuries old, it should protect you from the vacuum of space." + cost = 500 + contains = list(/obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space) + crate_name = "space suit crate" + +/datum/supply_pack/spacesuits/pilot_spacesuit + name = "Pilot Space Suit Crate" + desc = "One pilot space suit, for improved mobility in exosuits." + cost = 750 + contains = list(/obj/item/clothing/suit/space/pilot, + /obj/item/clothing/head/helmet/space/pilot/random) + crate_name = "pilot space suit crate" + +/datum/supply_pack/spacesuits/engi_spacesuit + name = "Engineering Space Suit Crate" + desc = "Need to turn your ship into a safety hazard? Not a problem! This engineering space suit will help get the job done." + cost = 1500 + contains = list(/obj/item/clothing/suit/space/engineer, + /obj/item/clothing/head/helmet/space/light/engineer) + crate_name = "engineering space suit crate" + crate_type = /obj/structure/closet/crate/secure/engineering + +//syndicate + +/datum/supply_pack/spacesuits/armored_spacesuit + name = "Armored Space Suit Crate" + desc = "Contains one armored spacesuit. Generic enough to be manufactured and distributed by most ex-Coalition groups." + cost = 1500 + contains = list(/obj/item/clothing/suit/space/syndicate/black, + /obj/item/clothing/head/helmet/space/syndicate/black) + faction = /datum/faction/syndicate + faction_discount = 30 + +/datum/supply_pack/spacesuits/armored_engi_spacesuit + name = "Coalition Engineering Space Suit Crate" + desc = "Contains one lightly armored engineering spacesuit. Generic enough to be manufactured by most ex-Coalition groups." + cost = 1000 + contains = list(/obj/item/clothing/suit/space/syndicate/black/engie, + /obj/item/clothing/head/helmet/space/syndicate/black/engie) + faction = /datum/faction/syndicate + faction_locked = TRUE + faction_discount = 0 + +//inteq + +/datum/supply_pack/spacesuits/spacesuit/inteq + name = "Inteq Space Suit Crate" + desc = "Contains one IRMG Space Suit, manufactured aboard the Mothership and widely distributed among Inteq. Most of the cost is logistical in nature." + cost = 500 + contains = list(/obj/item/clothing/suit/space/inteq, + /obj/item/clothing/head/helmet/space/inteq) + crate_name = "space suit crate" + faction = /datum/faction/inteq + faction_discount = 0 + faction_locked = TRUE + +//solgov + +/datum/supply_pack/spacesuits/spacesuit/solgov + name = "Solarian Vacsuit Crate" + desc = "Contains one Tortoise Microlite Armored Suit, the pride and joy of many Solarian explorers." + cost = 600 + contains = list(/obj/item/clothing/suit/space/solgov, + /obj/item/clothing/head/helmet/space/solgov) + crate_name = "space suit crate" + faction = /datum/faction/solgov + faction_discount = 0 + faction_locked = TRUE + +//fucking gezena + +/datum/supply_pack/spacesuits/spacesuit/pgf + name = "Rakalla Crate" + desc = "Contains one Rakalla Suit. It provides robust-enough protection from the elements while being quite flexible." + cost = 600 + contains = list(/obj/item/clothing/suit/space/gezena, + /obj/item/clothing/head/helmet/space/gezena) + crate_name = "rakalla suit crate" + faction = /datum/faction/pgf + faction_discount = 0 + faction_locked = TRUE + + +/* + Hardsuits +*/ + +/datum/supply_pack/spacesuits/mining_hardsuits_indie + name = "Mining Hardsuit Crate" + desc = "One independent-manufactured mining hardsuit, for when explorer suits just dont cut it." + cost = 1500 + contains = list(/obj/item/clothing/suit/space/hardsuit/mining/independent) + crate_name = "mining hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/spacesuits/sec_hardsuit_bundle + name = "Security Hardsuit Crate" + desc = "Contains one security hardsuit for light combat duty." + cost = 2000 + contains = list(/obj/item/clothing/suit/space/hardsuit/security/independent) + crate_name = "security hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + + +//nt hardsuit breaker + +/datum/supply_pack/spacesuits/med_hardsuit + name = "Medical Hardsuit Crate" + desc = "One medical hardsuit, resistant to diseases and useful for retrieving patients in space." + cost = 1500 + contains = list(/obj/item/clothing/suit/space/hardsuit/medical) + crate_name = "medical hardsuit crate" + crate_type = /obj/structure/closet/crate/medical + faction = /datum/faction/nt + +/datum/supply_pack/spacesuits/engineering_hardsuit + name = "Engineering Hardsuit Crate" + desc = "One engineering hardsuit, resistant to fire, radiation, and other engineering hazards. Nanotrasen reminds you that Resistant does not mean Immune." + cost = 2500 + contains = list(/obj/item/clothing/suit/space/hardsuit/engine) + crate_name = "engineering hardsuit crate" + crate_type = /obj/structure/closet/crate/medical + faction = /datum/faction/nt + +/datum/supply_pack/spacesuits/mining_hardsuit_heavy + name = "Heavy Mining Hardsuit Crate" + desc = "One heavy-duty mining hardsuit for dangerous frontier operations. Comes with a pair of EXOCOM jet boots." + cost = 3500 + contains = list(/obj/item/clothing/suit/space/hardsuit/mining/heavy, + /obj/item/clothing/shoes/bhop) + crate_name = "heavy mining hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/plasma + faction = /datum/faction/nt + +/datum/supply_pack/spacesuits/sci_hardsuit + name = "Scientific Hardsuit Crate" + desc = "Contains one science hardsuit, designed to provide safety under advanced experimental conditions, or while handling explosives." + cost = 2000 + contains = list(/obj/item/clothing/suit/space/hardsuit/rd) + crate_name = "scientific hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/science + faction = /datum/faction/nt + +/datum/supply_pack/spacesuits/atmos_hardsuit + name = "Atmospherics Hardsuit Crate" + desc = "The iconic hardsuit of Nanotrasen's Atmosphere Corps, this hardsuit is known across space as a symbol of defiance in the face of sudden decompression. Smells faintly of plasma." + cost = 2500 + contains = list(/obj/item/clothing/suit/space/hardsuit/engine/atmos) + crate_name = "atmospherics hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/engineering + faction = /datum/faction/nt + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/spacesuits/advanced_hardsuit + name = "Advanced Hardsuit Crate" + desc = "The culimination of research into robust engineering equipment. This hardsuit makes the wearer near immune to the natural hazards the Frontier can throw." + cost = 4000 + contains = list(/obj/item/clothing/suit/space/hardsuit/engine/elite) + crate_name = "advanced hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/engineering + faction = /datum/faction/nt + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/spacesuits/heavy_sec_hardsuit + name = "Heavy Security Hardsuit Crate" + desc = "Nanotrasen's premier solution to security hazards in low pressure environments, a well armored, highly mobile combat suit. The wearer is advised to have their zero-g training completed before utilizing the jetpack module." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/security/hos) + crate_name = "advanced hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/nt + faction_discount = 0 + faction_locked = TRUE + +//general syndicate + +/datum/supply_pack/spacesuits/op_hardsuit //pls nerf + name = "Blood Red Hardsuit Crate" + desc = "The terrifying visage of a Blood-red Hardsuit has heralded the end of many corporate rats. This is most likely due to favorable survivablity onion ratings in its design." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/syndi) + crate_name = "blood-red hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate + faction_locked = TRUE + +//cybersun breaker + +/datum/supply_pack/spacesuits/neutron_hardsuit + name = "Neutron Star Hardsuit Crate" + desc = "Cybersuns premier offering in the field of combat hardsuits, the Neutron Star is incredibly effective against lasers, but lacks against ballistic weaponry. " + cost = 3000 + contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/cybersun) + crate_name = "neutron star hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/cybersun + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/spacesuits/cmt_hardsuit + name = "CMT Hardsuit Crate" + desc = "A reconfiguring of the Neutron Star hardsuit resulted in the CMT, or Cybersun Medical Technician hardsuit. The CMT protects against biological hazards, light weaponsfire, and the usual hazards of space." + cost = 2000 + contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/cybersun/paramed) + crate_name = "neutron star hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/cybersun + faction_discount = 0 + faction_locked = TRUE + +//inteq hardsuits + +/datum/supply_pack/spacesuits/pointman_hardsuit + name = "Pointman Hardsuit Crate" + desc = "The heaviest armor fielded by Inteq, the Pointman is a modification of surplus Blood-Red hardsuits retrofitted to fit the IRMG's mission profile." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/inteq) + crate_name = "pointman hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/inteq + faction_locked = TRUE + +/datum/supply_pack/spacesuits/inteq_hardsuit + name = "Inteq Hardsuit Crate" + desc = "A bulky Mothership-native design with a monocular viewport. The Inteq Hardsuit provides decent protection and combat manueverability for members of IRMG." + cost = 3000 + contains = list(/obj/item/clothing/suit/space/hardsuit/security/independent/inteq) + crate_name = "inteq hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/inteq + faction_discount = 0 + faction_locked = TRUE + +//solarian hardsuit + +/datum/supply_pack/spacesuits/solar_hardsuit + name = "Solarian Hardsuit Crate" + desc = "A heavy duty hardsuit manufactured for the Solarian Confederation. It provides decent protection while making use of an exoskeleton to stay mobile." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/solgov) + crate_name = "solarian hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/solgov + faction_discount = 0 + faction_locked = TRUE + +//clip jardsuits + +/datum/supply_pack/spacesuits/patroller_hardsuit + name = "Patroller Hardsuit Crate" + desc = "A lightly armored but highly manueverable suit utilized by the Confederated League. It allows the user to maintain a near full range of motion during usage." + cost = 2000 + contains = list(/obj/item/clothing/suit/space/hardsuit/clip_patroller) + crate_name = "patroller hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/clip + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/spacesuits/spotter_hardsuit + name = "Spotter Hardsuit Crate" + desc = "A well armored hardsuit used as the counterpart to the Patroller, the Spotter lacks in mobility and makes up for it with bulky armor capable of protecting the user." + cost = 4000 + contains = list(/obj/item/clothing/suit/space/hardsuit/clip_spotter) + crate_name = "patroller hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/clip + faction_discount = 0 + faction_locked = TRUE + +//jardline + +/datum/supply_pack/spacesuits/white_red_hardsuit + name = "White-Red Hardsuit Crate" + desc = "Cybersun Biodynamics's proudly manufactured modification to the original production of Blood Red Hardsuits. Excellent protect, excellent mobility, and only a questionable sense in coloration." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/hl) + crate_name = "white-red hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/hardliners + faction_discount = 0 + faction_locked = TRUE + +//ngr + +/datum/supply_pack/spacesuits/beige_red_hardsuit + name = "Beige-Red Hardsuit Crate" + desc = "A widely producted variation on the classic Blood-Red hardsuit produced by factories with in the New Gorlex Republic. This suit protects the wearer with thick plates and stylish colors." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/ngr) + crate_name = "beige-red hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/syndicate/ngr + faction_discount = 0 + faction_locked = TRUE + +//srm + +/datum/supply_pack/spacesuits/roumain_hardsuit + name = "Roumain Hardsuit Crate" + desc = "A hardsuit hand-crafted to resemble plate armor of yore, the Roumain Hardsuit allows the wearer to swiftly move whilst on the hunt, while protecting them from the beasts around them." + cost = 5000 + contains = list(/obj/item/clothing/suit/space/hardsuit/solgov/roumain) + crate_name = "roumain hardsuit crate" + crate_type = /obj/structure/closet/crate/secure/gear + faction = /datum/faction/srm + faction_discount = 0 + faction_locked = TRUE diff --git a/code/modules/clothing/factions/clip.dm b/code/modules/clothing/factions/clip.dm index cdb3dcfce757..41019a0e62ab 100644 --- a/code/modules/clothing/factions/clip.dm +++ b/code/modules/clothing/factions/clip.dm @@ -181,6 +181,8 @@ icon = 'icons/obj/clothing/faction/clip/suits.dmi' mob_overlay_icon = 'icons/mob/clothing/faction/clip/suits.dmi' + slowdown = 0.2 + icon_state = "hardsuit-clip-patrol" hardsuit_type = "hardsuit-clip-patrol" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clip_patroller @@ -213,12 +215,12 @@ icon_state = "clip_spotter" hardsuit_type = "clip_spotter" - armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80) + armor = list("melee" = 50, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clip_spotter allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) resistance_flags = null - slowdown = 1 + slowdown = 1.25 supports_variations = DIGITIGRADE_VARIATION_SAME_ICON_FILE @@ -232,7 +234,7 @@ icon_state = "hardsuit0-clip_spotter" hardsuit_type = "clip_spotter" - armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80) + armor = list("melee" = 50, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80) resistance_flags = null supports_variations = SNOUTED_VARIATION diff --git a/code/modules/clothing/factions/hardliners.dm b/code/modules/clothing/factions/hardliners.dm index a1fe2fe6b2ce..3f9f0f2871cb 100644 --- a/code/modules/clothing/factions/hardliners.dm +++ b/code/modules/clothing/factions/hardliners.dm @@ -71,6 +71,7 @@ icon = 'icons/obj/clothing/faction/hardliners/suits.dmi' mob_overlay_icon = 'icons/mob/clothing/faction/hardliners/suits.dmi' blood_overlay_type = "armor" + armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) //ngr armor reskin - same statline /obj/item/clothing/suit/armor/hardliners/jacket name = "hardliners armored kutte" @@ -80,6 +81,7 @@ icon = 'icons/obj/clothing/faction/hardliners/suits.dmi' mob_overlay_icon = 'icons/mob/clothing/faction/hardliners/suits.dmi' blood_overlay_type = "armor" + armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) //its not like they cover your arms. /obj/item/clothing/suit/armor/hardliners/sergeant name = "hardliners sergeant jacket" diff --git a/code/modules/clothing/factions/ngr.dm b/code/modules/clothing/factions/ngr.dm index 366fa3b37cfe..81feb19e02c4 100644 --- a/code/modules/clothing/factions/ngr.dm +++ b/code/modules/clothing/factions/ngr.dm @@ -95,6 +95,7 @@ icon = 'icons/obj/clothing/faction/ngr/suits.dmi' mob_overlay_icon = 'icons/mob/clothing/faction/ngr/suits.dmi' blood_overlay_type = "armor" + armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) // 5. additional. bullet armor. /obj/item/clothing/suit/armor/ngr/lieutenant name = "\improper 2nd Battlegroup overcoat" diff --git a/code/modules/clothing/factions/srm.dm b/code/modules/clothing/factions/srm.dm index 34e6b4218fe4..481e9f1b0f52 100644 --- a/code/modules/clothing/factions/srm.dm +++ b/code/modules/clothing/factions/srm.dm @@ -95,7 +95,7 @@ worn_y_offset = 4 supports_variations = KEPORI_VARIATION -/obj/item/clothing/suit/space/hardsuit/solgov/roumain +/obj/item/clothing/suit/space/hardsuit/solgov/roumain //i swear to fuck whoever is subtyping these. you will face my wrath. name = "\improper roumain hardsuit" desc = "A hand-crafted suit of armor either modified from a set of normal plate armor or designed to resemble one. A powered exoskeleton has been cleverly integrated into the design and, surprisingly, it is completely vacuum-proof. Suits like this are a testament to what the master craftsmen of Hunter's Pride are capable of." icon = 'icons/obj/clothing/faction/srm/suits.dmi' diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 3687ff2c166f..9a862d182129 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -88,15 +88,6 @@ mask = /obj/item/clothing/mask/breath gloves = /obj/item/clothing/gloves/color/plasmaman -/datum/outfit/chrono_agent - name = "Timeline Eradication Agent" - uniform = /obj/item/clothing/under/color/white - suit = /obj/item/clothing/suit/space/chronos - back = /obj/item/chrono_eraser - head = /obj/item/clothing/head/helmet/space/chronos - mask = /obj/item/clothing/mask/breath - suit_store = /obj/item/tank/internals/oxygen - /datum/outfit/debug //Debug objs plus hardsuit name = "Debug outfit" uniform = /obj/item/clothing/under/misc/patriotsuit diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index f540c175df5a..832f655051de 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -6,7 +6,7 @@ mob_overlay_icon = 'icons/mob/clothing/head/spacesuits.dmi' icon_state = "spaceold" desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." - clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS //WS Port - Cit Internals + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS item_state = "spaceold" permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm deleted file mode 100644 index 6bbde7b4a4dc..000000000000 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ /dev/null @@ -1,346 +0,0 @@ -/obj/item/clothing/head/helmet/space/chronos - name = "Chronosuit Helmet" - desc = "A white helmet with an opaque blue visor." - icon_state = "chronohelmet" - item_state = "chronohelmet" - slowdown = 1 - armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 100) - resistance_flags = FIRE_PROOF | ACID_PROOF - var/obj/item/clothing/suit/space/chronos/suit - -/obj/item/clothing/head/helmet/space/chronos/dropped() - if(suit) - suit.deactivate(1, 1) - ..() - -/obj/item/clothing/head/helmet/space/chronos/Destroy() - dropped() - return ..() - - -/obj/item/clothing/suit/space/chronos - name = "Chronosuit" - desc = "An advanced spacesuit equipped with time-bluespace teleportation and anti-compression technology." - icon_state = "chronosuit" - item_state = "chronosuit" - actions_types = list(/datum/action/item_action/toggle) - armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 1000) - resistance_flags = FIRE_PROOF | ACID_PROOF - var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun) - var/obj/item/clothing/head/helmet/space/chronos/helmet - var/obj/effect/chronos_cam/camera - var/datum/action/innate/chrono_teleport/teleport_now = new - var/activating = 0 - var/activated = 0 - var/cooldowntime = 50 //deciseconds - var/teleporting = 0 - var/phase_timer_id - -/obj/item/clothing/suit/space/chronos/Initialize() - teleport_now.chronosuit = src - teleport_now.target = src - return ..() - -/obj/item/clothing/suit/space/chronos/proc/new_camera(mob/user) - if(camera) - qdel(camera) - camera = new /obj/effect/chronos_cam(user) - camera.holder = user - camera.chronosuit = src - user.reset_perspective(camera) - user.set_machine(camera) - user.remote_control = camera - -/obj/item/clothing/suit/space/chronos/ui_action_click() - if((cooldown <= world.time) && !teleporting && !activating) - if(!activated) - activate() - else - deactivate() - -/obj/item/clothing/suit/space/chronos/dropped() - if(activated) - deactivate() - ..() - -/obj/item/clothing/suit/space/chronos/Destroy() - dropped() - QDEL_NULL(teleport_now) - return ..() - -/obj/item/clothing/suit/space/chronos/emp_act(severity) - . = ..() - if(. & EMP_PROTECT_SELF) - return - var/mob/living/carbon/human/user = src.loc - switch(severity) - if(1) - if(activated && user && ishuman(user) && (user.wear_suit == src)) - to_chat(user, "E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD") - to_chat(user, "An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!") - user.emote("scream") - deactivate(1, 1) - -/obj/item/clothing/suit/space/chronos/proc/finish_chronowalk(mob/living/carbon/human/user, turf/to_turf) - if(!user) - user = src.loc - if(phase_timer_id) - deltimer(phase_timer_id) - phase_timer_id = 0 - if(istype(user)) - if(to_turf) - user.forceMove(to_turf) - user.SetStun(0) - user.next_move = 1 - user.alpha = 255 - user.update_atom_colour() - user.animate_movement = FORWARD_STEPS - user.notransform = 0 - user.set_anchored(FALSE) - teleporting = 0 - for(var/obj/item/I in user.held_items) - REMOVE_TRAIT(I, TRAIT_NODROP, CHRONOSUIT_TRAIT) - if(camera) - camera.remove_target_ui() - camera.forceMove(user) - user.reset_perspective(camera) - teleport_now.UpdateButtonIcon() - -/obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location) - var/mob/living/carbon/human/user = src.loc - if(activated && !teleporting && user && istype(user) && location && user.loc && location.loc && user.wear_suit == src && user.stat == CONSCIOUS) - teleporting = 1 - var/turf/from_turf = get_turf(user) - var/turf/to_turf = get_turf(location) - var/distance = cheap_hypotenuse(from_turf.x, from_turf.y, to_turf.x, to_turf.y) - var/phase_in_ds = distance*2 - - if(camera) - camera.remove_target_ui() - - teleport_now.UpdateButtonIcon() - - var/list/nonsafe_slots = list(ITEM_SLOT_BELT, ITEM_SLOT_BACK) - var/list/exposed = list() - for(var/slot in nonsafe_slots) - var/obj/item/slot_item = user.get_item_by_slot(slot) - exposed += slot_item - exposed += user.held_items - for(var/exposed_item in exposed) - var/obj/item/exposed_I = exposed_item - if(exposed_I && !(exposed_I.type in chronosafe_items) && user.dropItemToGround(exposed_I)) - to_chat(user, "Your [exposed_I.name] got left behind.") - - user.ExtinguishMob() - - for(var/obj/item/I in user.held_items) - ADD_TRAIT(I, TRAIT_NODROP, CHRONOSUIT_TRAIT) - user.animate_movement = NO_STEPS - user.changeNext_move(8 + phase_in_ds) - user.notransform = 1 - user.set_anchored(TRUE) - user.Stun(INFINITY) - - animate(user, color = "#00ccee", time = 3) - phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_2), user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE) - -/obj/item/clothing/suit/space/chronos/proc/phase_2(mob/living/carbon/human/user, turf/to_turf, phase_in_ds) - if(teleporting && activated && user) - animate(user, color = list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0), time = 2) - phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_3), user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE) - else - finish_chronowalk(user, to_turf) - -/obj/item/clothing/suit/space/chronos/proc/phase_3(mob/living/carbon/human/user, turf/to_turf, phase_in_ds) - if(teleporting && activated && user) - user.forceMove(to_turf) - animate(user, color = "#00ccee", time = phase_in_ds) - phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_4), user, to_turf), phase_in_ds, TIMER_STOPPABLE) - else - finish_chronowalk(user, to_turf) - -/obj/item/clothing/suit/space/chronos/proc/phase_4(mob/living/carbon/human/user, turf/to_turf) - if(teleporting && activated && user) - animate(user, color = "#ffffff", time = 3) - phase_timer_id = addtimer(CALLBACK(src, PROC_REF(finish_chronowalk), user, to_turf), 3, TIMER_STOPPABLE) - else - finish_chronowalk(user, to_turf) - -/obj/item/clothing/suit/space/chronos/process() - if(activated) - var/mob/living/carbon/human/user = src.loc - if(user && ishuman(user) && (user.wear_suit == src)) - if(camera && (user.remote_control == camera)) - if(!teleporting) - if(camera.loc != user && ((camera.x != user.x) || (camera.y != user.y) || (camera.virtual_z() != user.virtual_z()))) - if(camera.phase_time <= world.time) - chronowalk(camera) - else - camera.remove_target_ui() - else - new_camera(user) - else - STOP_PROCESSING(SSobj, src) - -/obj/item/clothing/suit/space/chronos/proc/activate() - if(!activating && !activated && !teleporting) - activating = 1 - var/mob/living/carbon/human/user = src.loc - if(user && ishuman(user) && user.wear_suit == src) - to_chat(user, "\nChronosuitMK4 login: root") - to_chat(user, "Password:\n") - to_chat(user, "root@ChronosuitMK4# chronowalk4 --start\n") - if(user.head && istype(user.head, /obj/item/clothing/head/helmet/space/chronos)) - to_chat(user, "\[ ok \] Mounting /dev/helm") - helmet = user.head - ADD_TRAIT(helmet, TRAIT_NODROP, CHRONOSUIT_TRAIT) - helmet.suit = src - ADD_TRAIT(src, TRAIT_NODROP, CHRONOSUIT_TRAIT) - to_chat(user, "\[ ok \] Starting brainwave scanner") - to_chat(user, "\[ ok \] Starting ui display driver") - to_chat(user, "\[ ok \] Initializing chronowalk4-view") - new_camera(user) - START_PROCESSING(SSobj, src) - activated = 1 - else - to_chat(user, "\[ fail \] Mounting /dev/helm") - to_chat(user, "FATAL: Unable to locate /dev/helm. Aborting...") - teleport_now.Grant(user) - cooldown = world.time + cooldowntime - activating = 0 - -/obj/item/clothing/suit/space/chronos/proc/deactivate(force = 0, silent = FALSE) - if(activated && (!teleporting || force)) - activating = 1 - var/mob/living/carbon/human/user = src.loc - var/hard_landing = teleporting && force - REMOVE_TRAIT(src, TRAIT_NODROP, CHRONOSUIT_TRAIT) - cooldown = world.time + cooldowntime * 1.5 - activated = 0 - activating = 0 - finish_chronowalk() - if(user && ishuman(user)) - teleport_now.Remove(user) - if(user.wear_suit == src) - if(hard_landing) - user.electrocute_act(35, src, flags = SHOCK_NOGLOVES) - user.Paralyze(200) - if(!silent) - to_chat(user, "\nroot@ChronosuitMK4# chronowalk4 --stop\n") - if(camera) - to_chat(user, "\[ ok \] Sending TERM signal to chronowalk4-view") - if(helmet) - to_chat(user, "\[ ok \] Stopping ui display driver") - to_chat(user, "\[ ok \] Stopping brainwave scanner") - to_chat(user, "\[ ok \] Unmounting /dev/helmet") - to_chat(user, "logout") - if(helmet) - REMOVE_TRAIT(helmet, TRAIT_NODROP, CHRONOSUIT_TRAIT) - helmet.suit = null - helmet = null - user.reset_perspective() - user.set_machine() - user.remote_control = null - if(camera) - QDEL_NULL(camera) - -/obj/effect/chronos_cam - name = "Chronosuit View" - density = FALSE - anchored = TRUE - invisibility = INVISIBILITY_ABSTRACT - opacity = FALSE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/mob/holder - var/phase_time = 0 - var/phase_time_length = 3 - var/atom/movable/screen/chronos_target/target_ui - var/obj/item/clothing/suit/space/chronos/chronosuit - -/obj/effect/chronos_cam/singularity_act() - return - -/obj/effect/chronos_cam/singularity_pull() - return - -/obj/effect/chronos_cam/proc/create_target_ui() - if(holder && holder.client && chronosuit) - if(target_ui) - remove_target_ui() - target_ui = new(src, holder) - holder.client.screen += target_ui - -/obj/effect/chronos_cam/proc/remove_target_ui() - if(target_ui) - QDEL_NULL(target_ui) - -/obj/effect/chronos_cam/relaymove(mob/living/user, direction) - if(!holder) - qdel(src) - return - if(user == holder) - if(loc == user || (user.client && user.client.eye != src)) - forceMove(user.drop_location()) - user.set_machine(src) - user.reset_perspective(src) - var/atom/step = get_step(src, direction) - if(step) - if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1))) - if(!Move(step)) - forceMove(step) - else - forceMove(step) - if((x == holder.x) && (y == holder.y) && (z == holder.z)) - forceMove(user) - user.reset_perspective(user) - remove_target_ui() - else if(!target_ui) - create_target_ui() - phase_time = world.time + phase_time_length - -/obj/effect/chronos_cam/check_eye(mob/user) - if(user != holder) - qdel(src) - -/obj/effect/chronos_cam/on_unset_machine(mob/user) - user.reset_perspective(null) - -/obj/effect/chronos_cam/Destroy() - if(holder) - if(holder.remote_control == src) - holder.remote_control = null - if(holder.client && (holder.machine == src)) - holder.unset_machine() - return ..() - -/atom/movable/screen/chronos_target - name = "target display" - screen_loc = "CENTER,CENTER" - color = list(1,0,0,0, 0,1,0,0.8, 0,0,1,0.933, 0,0,0,0, 0,0,0,0) - appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE - -/atom/movable/screen/chronos_target/Initialize(mapload, mob/living/carbon/human/user) - if(user) - vis_contents += user - else - qdel(src) - return ..() - -/datum/action/innate/chrono_teleport - name = "Teleport Now" - icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' - button_icon_state = "chrono_phase" - check_flags = AB_CHECK_CONSCIOUS //|AB_CHECK_INSIDE - var/obj/item/clothing/suit/space/chronos/chronosuit = null - -/datum/action/innate/chrono_teleport/Destroy() - chronosuit = null - return ..() - -/datum/action/innate/chrono_teleport/IsAvailable() - return (chronosuit && chronosuit.activated && chronosuit.camera && !chronosuit.teleporting) - -/datum/action/innate/chrono_teleport/Activate() - if(IsAvailable()) - if(chronosuit.camera) - chronosuit.chronowalk(chronosuit.camera) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 6542baf36c16..23b6017a94dc 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -226,7 +226,7 @@ item_state = "atmo_helm" hardsuit_type = "atmospherics" armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75) - heat_protection = HEAD //Uncomment to enable firesuit protection + heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT /obj/item/clothing/suit/space/hardsuit/engine/atmos @@ -234,8 +234,8 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has thermal shielding." icon_state = "hardsuit-atmospherics" item_state = "atmo_hardsuit" - armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75) - heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection + armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75) + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -540,31 +540,6 @@ hardsuit_type = "pointman" full_retraction = TRUE - //Wizard hardsuit -/obj/item/clothing/head/helmet/space/hardsuit/wizard - name = "gem-encrusted hardsuit helmet" - desc = "A bizarre gem-encrusted helmet that radiates magical energies." - icon_state = "hardsuit0-wiz" - item_state = "wiz_helm" - hardsuit_type = "wiz" - resistance_flags = FIRE_PROOF | ACID_PROOF //No longer shall our kind be foiled by lone chemists with spray bottles! - armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100) - heat_protection = HEAD //Uncomment to enable firesuit protection - max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - -/obj/item/clothing/suit/space/hardsuit/wizard - name = "gem-encrusted hardsuit" - desc = "A bizarre gem-encrusted suit that radiates magical energies." - icon_state = "hardsuit-wiz" - item_state = "wiz_hardsuit" - w_class = WEIGHT_CLASS_NORMAL - resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100) - allowed = list(/obj/item/teleportation_scroll, /obj/item/tank/internals) - heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection - max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard - //Medical hardsuit /obj/item/clothing/head/helmet/space/hardsuit/medical name = "medical hardsuit helmet" @@ -584,7 +559,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical - slowdown = 0.5 + slowdown = 0.3 supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/medical/cmo @@ -598,13 +573,13 @@ //Research Director hardsuit /obj/item/clothing/head/helmet/space/hardsuit/rd - name = "prototype hardsuit helmet" + name = "scientific hardsuit helmet" desc = "A prototype helmet designed for research in a hazardous, low pressure environment. Scientific data flashes across the visor." icon_state = "hardsuit0-rd" hardsuit_type = "rd" resistance_flags = ACID_PROOF | FIRE_PROOF max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) + armor = list("melee" = 30, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) var/explosion_detection_dist = 21 clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SCAN_REAGENTS | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS //WS Port - Cit Internals actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_research_scanner) @@ -635,7 +610,7 @@ display_visor_message("Explosion detected! Epicenter: [devastation_range], Outer: [heavy_impact_range], Shock: [light_impact_range]") /obj/item/clothing/suit/space/hardsuit/rd - name = "prototype hardsuit" + name = "scientific hardsuit" desc = "A prototype suit that protects against hazardous, low pressure environments. Fitted with extensive plating for handling explosives and dangerous research materials." icon_state = "hardsuit-rd" item_state = "hardsuit-rd" @@ -646,7 +621,8 @@ /obj/item/gun/energy/wormhole_projector, /obj/item/hand_tele, /obj/item/aicard) - armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) + slowdown = 1.5 + armor = list("melee" = 30, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION @@ -657,7 +633,7 @@ icon_state = "hardsuit0-sec" item_state = "sec_helm" hardsuit_type = "sec" - armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) + armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) /obj/item/clothing/suit/space/hardsuit/security @@ -665,7 +641,7 @@ name = "security hardsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." item_state = "sec_hardsuit" - armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) + armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security slowdown = 0.5 supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION @@ -676,20 +652,21 @@ //Head of Security hardsuit /obj/item/clothing/head/helmet/space/hardsuit/security/hos - name = "head of security's hardsuit helmet" + name = "heavy security hardsuit helmet" desc = "A special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." icon_state = "hardsuit0-hos" hardsuit_type = "hos" - armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) + armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) /obj/item/clothing/suit/space/hardsuit/security/hos icon_state = "hardsuit-hos" - name = "head of security's hardsuit" + name = "heavy security hardsuit" desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor." - armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) + armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit + slowdown = 0.7 supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION //SWAT MKII @@ -982,6 +959,8 @@ ///////////////Shiptest Additions//////////////////// +//this 'shiptest' server really needs to just add new files + //Softsuit helmet light framework /obj/item/clothing/head/helmet/space/light actions_types = list(/datum/action/item_action/toggle_helmet_light) @@ -1068,7 +1047,7 @@ item_state = "space-independent-eng" desc = "A civilian space suit designed for construction and salvage in hazardous, low-pressure environments. Has shielding against radiation and heat and abundant storage.
Though they lack the physical protection of more expensive hardsuits, this type of suit is extremely common wherever construction and salvage work must be done in open space." siemens_coefficient = 0 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 20, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75) + armor = list("melee" = 15, "bullet" = 5, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75) pocket_storage_component_path = /datum/component/storage/concrete/pockets/exo/large resistance_flags = FIRE_PROOF @@ -1172,21 +1151,26 @@ A.UpdateButtonIcon() //Inteq Hardsuit -/obj/item/clothing/head/helmet/space/hardsuit/security/independent/inteq +/obj/item/clothing/head/helmet/space/hardsuit/security/independent/inteq //i fucking hate this typepath name = "inteq hardsuit helmet" desc = "A somewhat boxy, monocular visored helmet designed for hazardous, low pressure environments. It has the letters 'IRMG' imprinted onto the earpad." icon_state = "hardsuit0-inteq" item_state = "hardsuit-inteq" hardsuit_type = "inteq" + armor = list("melee" = 40, "bullet" = 35, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) -/obj/item/clothing/suit/space/hardsuit/security/independent/inteq +/obj/item/clothing/suit/space/hardsuit/security/independent/inteq //this one too. you know you can just redeclare variables and have shorter paths right? Fucking hardsuit/security/indepentent/inteq how about just /hardsuit/inteq did you ever think about that huh??? name = "inteq hardsuit" desc = "A heavy-duty looking suit that protects against hazardous, low pressure environments. It's bulk provides ample protection, if not a bit cumbersome to wear." icon_state = "hardsuit-inteq" item_state = "hardsuit-inteq" hardsuit_type = "inteq" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/independent/inteq supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION + armor = list("melee" = 40, "bullet" = 35, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) + +//solarian /obj/item/clothing/head/helmet/space/hardsuit/solgov name = "\improper SolGov hardsuit helmet" @@ -1196,7 +1180,7 @@ hardsuit_type = "solgov" armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 60, "bio" = 100, "rad" = 60, "fire" = 90, "acid" = 75) -/obj/item/clothing/suit/space/hardsuit/solgov +/obj/item/clothing/suit/space/hardsuit/solgov //see this is a good path. not fucking /security/independant/inteq. its just /hardsuit/solgov icon_state = "hardsuit_solgov" name = "\improper SolGov hardsuit" desc = "An armored spaceproof suit. A powered exoskeleton keeps the suit light and mobile." @@ -1204,69 +1188,5 @@ armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 60, "bio" = 100, "rad" = 60, "fire" = 90, "acid" = 75) //intentionally the fucking strong, this is master chief-tier armor //is this really what you call the strong?? is this the best solgov has to offer?????? helmettype = /obj/item/clothing/head/helmet/space/hardsuit/solgov allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) - slowdown = 0.5 + slowdown = 0.2 supports_variations = DIGITIGRADE_VARIATION - -/obj/item/clothing/head/helmet/space/hardsuit/quixote - name = "\improper Quixote mobility hardsuit helmet" - desc = "The integrated helmet of a Quixote mobility hardsuit." - icon_state = "hardsuit0-quixote" - item_state = "quixote-helm" - max_integrity = 300 - armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 100) - hardsuit_type = "quixote" - max_heat_protection_temperature = 20000 - -/obj/item/clothing/suit/space/hardsuit/quixote - name = "\improper Quixote mobility hardsuit" - desc = "The Quixote mobility suit is the magnum opus of Phorsman equipment, combining durable composite armor with high mobility thrusters." - icon_state = "quixotesuit" - item_state = "quixotesuit" - max_integrity = 300 - armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 100) - allowed = list(/obj/item/gun, /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box) - actions_types = list(/datum/action/item_action/toggle_helmet) - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/quixote - jetpack = /obj/item/tank/jetpack/suit - slowdown = 0.3 - max_heat_protection_temperature = 20000 - var/datum/action/innate/quixotejump/jump - -/obj/item/clothing/suit/space/hardsuit/quixote/Initialize() - . = ..() - jump = new(src) - -/obj/item/clothing/suit/space/hardsuit/quixote/Destroy() - QDEL_NULL(jump) - return ..() - -/obj/item/clothing/suit/space/hardsuit/quixote/equipped(mob/user, slot) - . = ..() - if(slot == ITEM_SLOT_OCLOTHING) - jump.Grant(user) - user.update_icons() - else //If it is equipped in any slot except for our outer clothing, we can't dash - jump.Remove(user) - user.update_icons() - -/obj/item/clothing/suit/space/hardsuit/quixote/dropped(mob/user) - . = ..() - jump.Remove(user) - user.update_icons() - -/obj/item/clothing/suit/space/hardsuit/quixote/ui_action_click(mob/user, action) - if(action == /datum/action/innate/quixotejump) - jump.Activate() - else - return ..() - -/obj/item/clothing/head/helmet/space/hardsuit/quixote/dimensional - name = "\improper Quixote metaspacial hardsuit helmet" - desc = "The integrated helmet of a Quixote metaspace navigation hardsuit." - armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - -/obj/item/clothing/suit/space/hardsuit/quixote/dimensional - name = "\improper Quixote metaspacial hardsuit" - armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - desc = "The Quixote metaspacial mobility suit is the magnum opus of dimensional navigation equipment, combining durable composite armor with high mobility thrusters and defensive plating rated for all manner of exotic particles." - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/quixote/dimensional diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 8cf3da8547cd..f739afcf8219 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -536,6 +536,7 @@ Contains: desc = "A lightly armored space suit for IRMG personnel for EVA operations, it seems more flexible than most space suits." item_state = "space-inteq" icon_state = "space-inteq" + slowdown = 0.8 armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 2b2660af4f9c..aba5c3a18ba8 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -4,7 +4,7 @@ icon_state = "syndicate" item_state = "syndicate" desc = "An advanced, lightweight space helmet made of durable composites. Almost matches integrated hardsuit helmets for protection. Almost." - armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75) + armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75) supports_variations = VOX_VARIATION /obj/item/clothing/suit/space/syndicate @@ -13,7 +13,7 @@ item_state = "space_suit_syndicate" desc = "A space suit made of high-grade ballistic fabric with integrated armor plates. More compact than a normal space suit while almost matching powered hardsuits for protection. Almost." w_class = WEIGHT_CLASS_NORMAL - armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75) + armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75) /obj/item/clothing/suit/space/syndicate/Initialize() . = ..() diff --git a/code/modules/faction/faction_datum.dm b/code/modules/faction/faction_datum.dm index 487d4f9c7810..cc1595e55c2f 100644 --- a/code/modules/faction/faction_datum.dm +++ b/code/modules/faction/faction_datum.dm @@ -36,19 +36,24 @@ name = FACTION_NGR short_name = "NGR" prefixes = PREFIX_NGR + parent_faction = null /datum/faction/syndicate/cybersun name = FACTION_CYBERSUN prefixes = PREFIX_CYBERSUN + parent_faction = null /datum/faction/syndicate/hardliners name = FACTION_HARDLINERS prefixes = PREFIX_HARDLINERS + //holy fucking shit this system sucks + parent_faction = null /datum/faction/syndicate/suns name = FACTION_SUNS short_name = "SUNS" prefixes = PREFIX_SUNS + parent_faction = null /datum/faction/solgov name = FACTION_SOLGOV diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index ac946eee3847..a4319f4a1b5f 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -79,7 +79,6 @@ name = "Groundhog Day" begin_day = 2 begin_month = FEBRUARY - drone_hat = /obj/item/clothing/head/helmet/space/chronos /datum/holiday/groundhog/getStationPrefix() return pick("Deja Vu") //I have been to this place before diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 58f726aa508e..5aa11efd6a6d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -569,10 +569,6 @@ if("Paroled") threatcount += 2 - //Check for dresscode violations - if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard)) - threatcount += 2 - //Check for nonhuman scum if(dna && dna.species.id && dna.species.id != SPECIES_HUMAN) threatcount += 1 diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index bc453eecd3d1..78a4d08b0fe6 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -195,9 +195,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th var/mob/living/carbon/human/H = user var/list/casting_clothes = typecacheof(list(/obj/item/clothing/suit/wizrobe, - /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/clothing/head/wizard, - /obj/item/clothing/head/helmet/space/hardsuit/wizard, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard)) diff --git a/shiptest.dme b/shiptest.dme index 7be2c3a79893..29f325abe2d6 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1962,6 +1962,7 @@ #include "code\modules\cargo\exports\weapons.dm" #include "code\modules\cargo\packs\ammo.dm" #include "code\modules\cargo\packs\animal.dm" +#include "code\modules\cargo\packs\armor.dm" #include "code\modules\cargo\packs\canister.dm" #include "code\modules\cargo\packs\chemistry.dm" #include "code\modules\cargo\packs\civilian.dm" @@ -1977,7 +1978,7 @@ #include "code\modules\cargo\packs\mechs.dm" #include "code\modules\cargo\packs\medical.dm" #include "code\modules\cargo\packs\sec_supply.dm" -#include "code\modules\cargo\packs\spacesuit_armor.dm" +#include "code\modules\cargo\packs\spacesuits.dm" #include "code\modules\cargo\packs\tools.dm" #include "code\modules\cargo\packs\vendor_refill.dm" #include "code\modules\cargo\packs\weapon_attachments.dm" @@ -2068,7 +2069,6 @@ #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" #include "code\modules\clothing\spacesuits\_spacesuits.dm" -#include "code\modules\clothing\spacesuits\chronosuit.dm" #include "code\modules\clothing\spacesuits\hardsuit.dm" #include "code\modules\clothing\spacesuits\miscellaneous.dm" #include "code\modules\clothing\spacesuits\plasmamen.dm" From 90c0c9291104939f7c4a641cd90bd4c7b08d70ad Mon Sep 17 00:00:00 2001 From: Martinpachu <86135885+Martinpachu@users.noreply.github.com> Date: Fri, 17 Jan 2025 17:03:27 -0300 Subject: [PATCH 046/118] The Great Screwdriver Reckoning (#3890) ## About The Pull Request removes screwdrivers tahts should not be there ## Why It's Good For The Game For he said let there be easy latch pr ## Changelog :cl: del: Removed certain screwdrivers, as they are no longer needed for reloading energy weapons. /:cl: --- .../independent/independent_shetland.dmm | 1 - .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 8 -------- _maps/shuttles/pgf/pgf_crying_sun.dmm | 19 ------------------- _maps/shuttles/pgf/pgf_woeful_cthonian.dmm | 13 ------------- 4 files changed, 41 deletions(-) diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 85ffe0dfcdba..f6110b2c76f9 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -5651,7 +5651,6 @@ /obj/machinery/recharger, /obj/structure/table/reinforced, /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/screwdriver, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ship/security) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index c1e6179a8bfe..ff2f7eaa8f80 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -2851,13 +2851,6 @@ /area/ship/hallway/starboard) "up" = ( /obj/structure/table/reinforced, -/obj/item/screwdriver{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/item/screwdriver{ - pixel_x = -7 - }, /obj/item/hand_labeler{ pixel_x = 8; pixel_y = 13 @@ -5733,7 +5726,6 @@ /obj/item/melee/classic_baton/telescopic, /obj/item/melee/knife/survival, /obj/item/gps, -/obj/item/screwdriver, /obj/machinery/light_switch{ dir = 1; pixel_x = 7; diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm index 5af2fca45919..a0b72a07ef38 100644 --- a/_maps/shuttles/pgf/pgf_crying_sun.dmm +++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm @@ -233,22 +233,6 @@ pixel_y = -1; pixel_x = -7 }, -/obj/item/screwdriver{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/screwdriver{ - pixel_x = -2; - pixel_y = -5 - }, -/obj/item/screwdriver{ - pixel_x = 1; - pixel_y = -5 - }, -/obj/item/screwdriver{ - pixel_x = 4; - pixel_y = -5 - }, /obj/structure/closet/secure_closet/wall/directional/west{ icon_state = "sec_wall"; name = "equipment locker" @@ -5992,9 +5976,6 @@ pixel_y = -9; pixel_x = -4 }, -/obj/item/screwdriver{ - pixel_y = -12 - }, /obj/item/clothing/under/gezena/captain{ pixel_y = 3 }, diff --git a/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm b/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm index 194a2afd853b..1dd47ed61705 100644 --- a/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm +++ b/_maps/shuttles/pgf/pgf_woeful_cthonian.dmm @@ -2898,18 +2898,6 @@ pixel_y = 5; pixel_x = -1 }, -/obj/item/screwdriver{ - pixel_x = -1; - pixel_y = 4 - }, -/obj/item/screwdriver{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/screwdriver{ - pixel_x = 9; - pixel_y = 4 - }, /turf/open/floor/plasteel/mono/dark, /area/ship/security/armory) "KF" = ( @@ -3492,7 +3480,6 @@ pixel_x = 6; pixel_y = -5 }, -/obj/item/screwdriver, /obj/item/radio/headset/pgf/alt/captain, /obj/item/storage/lockbox/medal, /obj/item/radio/headset/pgf/captain, From aa4891bc86343f7e511d793ea399c9e3ad2e9063 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 15:18:57 -0600 Subject: [PATCH 047/118] Automatic changelog generation for PR #3890 [ci skip] --- html/changelogs/AutoChangeLog-pr-3890.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3890.yml diff --git a/html/changelogs/AutoChangeLog-pr-3890.yml b/html/changelogs/AutoChangeLog-pr-3890.yml new file mode 100644 index 000000000000..1667f04d4e8e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3890.yml @@ -0,0 +1,5 @@ +author: Martinpachu +changes: + - {rscdel: 'Removed certain screwdrivers, as they are no longer needed for reloading + energy weapons.'} +delete-after: true From a92ecf30f17b6d8701051c9bd3b28f03d521eb27 Mon Sep 17 00:00:00 2001 From: Apogee-dev <60533805+Apogee-dev@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:04:30 -0800 Subject: [PATCH 048/118] Renames and rewrites the Odysseus and Gygax (#3946) ## About The Pull Request Changes the Odysseus and Gygax to be manufactured by Cybersun. Finally, the company that specializes in robotics and cybernetics actually has a presence in the exosuit market. - Gygax is now the 500 Series, represented by the 501p (Gygax) and 515 EX (Dark Gygax). - Odysseus is now the 200 Series, represented by the 202r, and potentially more in the future. - 515 EX has better power efficiency when running in overcharge mode. The armor is still the same as the 501p, but you can run around like 30% more without zapping your batteries to dust. Originally, this was going to be packaged with a resprite/redesign of the exosuits in question and some tweaks to their performance, but that will have to wait until later because spriting exosuits is hell on earth. ....I'll change the wide variety of paths associated with them Later(tm) ## Why It's Good For The Game cybersun actually gets a presence in the exosuit market and we can finally clean up some of the old outdated scraps of lore that were still hanging around in relation to these two exosuits ## Changelog :cl: code: Renamed the Gygax and Odysseus and updated their lore add: Dark Gygax (now 515 EX) has better efficiency when overloading its legs. /:cl: --- .../wasteplanet_abandoned_mechbay.dmm | 2 +- code/game/mecha/combat/gygax.dm | 11 ++-- code/game/mecha/equipment/tools/work_tools.dm | 2 +- code/game/mecha/mech_fabricator.dm | 4 +- code/game/mecha/mecha_construction_paths.dm | 8 +-- code/game/mecha/mecha_parts.dm | 66 +++++++++---------- code/game/mecha/mecha_wreckage.dm | 7 +- code/game/mecha/medical/odysseus.dm | 4 +- code/game/objects/items/toy_mechs.dm | 4 +- .../blackmarket/blackmarket_items/weapons.dm | 4 +- code/modules/cargo/bounties/mech.dm | 4 +- code/modules/cargo/packs/mechs.dm | 12 ++-- .../modules/research/designs/mecha_designs.dm | 16 ++--- .../designs/mechfabricator_designs.dm | 60 ++++++++--------- code/modules/research/techweb/all_nodes.dm | 8 +-- code/modules/uplink/uplink_items.dm | 4 +- 16 files changed, 108 insertions(+), 108 deletions(-) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm index 82d6afbf66d9..edaccec73ef1 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm @@ -3508,7 +3508,7 @@ "PW" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/mecha/combat/gygax{ - name = "\improper Gygax #2" + name = "\improper 501p #2" }, /obj/effect/decal/cleanable/blood/innards, /turf/open/floor/mech_bay_recharge_floor, diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index a22a8dd4706d..8a3203c00645 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -1,6 +1,6 @@ /obj/mecha/combat/gygax - desc = "A lightweight, security exosuit. Popular among private and corporate security." - name = "\improper Gygax" + desc = "A light security exosuit manufactured by Cybersun Biodynamics. The basic version of the 500 Series combat exosuits, the 501p can overload its leg actuators to further enhance mobility." + name = "\improper 501p Security Exosuit" icon_state = "gygax" step_in = 3 dir_in = 1 //Facing North. @@ -22,10 +22,11 @@ mechstep(direction) //agile mechs get to move and turn in the same step /obj/mecha/combat/gygax/dark - desc = "A lightweight exosuit, painted in a dark scheme." - name = "\improper Dark Gygax" + desc = "A light combat exosuit manufactured by Cybersun Biodynamics. An exclusive variant of the 500 Series meant for use by Cybersun's own personnel and trusted parties, the 515 EX operates more efficiently in overload mode." + name = "\improper 515 EX Combat Exosuit" icon_state = "darkgygax" wreckage = /obj/structure/mecha_wreckage/gygax/dark + leg_overload_coeff = 50 /obj/mecha/combat/gygax/dark/loaded/Initialize() . = ..() @@ -50,7 +51,7 @@ /obj/mecha/combat/gygax/inteq name = "\improper Basenji" - desc = "A lightweight security exosuit, modified to IRMG standards. The leg actuators have been maxed out, allowing for powerful short ranged charges." + desc = "A light security exosuit originally manufactured by Cybersun Biodynamics, extensively modified by IRMG artificers. The leg actuators have been maxed out, allowing for powerful short ranged charges." icon_state = "inteqgygax" charge_break_walls = TRUE charge_toss_structures = TRUE diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index d3a52483feb7..de06c5c6742d 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -662,7 +662,7 @@ /obj/item/mecha_parts/mecha_equipment/conversion_kit/inteq_gygax name = "IRMG Basenji Conversion Kit" - desc = "An IRMG-custom conversion kit for a Gygax combat exosuit, to convert it to the specialized Pyrnese breaching exosuit." + desc = "An IRMG-custom conversion kit for a 500 Series combat exosuit, to convert it to the specialized Basenji breaching exosuit." source_mech = list(/obj/mecha/combat/gygax,/obj/mecha/combat/gygax/dark) result_mech = /obj/mecha/combat/gygax/inteq diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 83a2c4861c90..9f74db334182 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -26,8 +26,8 @@ "Cyborg", "Ripley", "Firefighter", - "Odysseus", - "Gygax", + "200 Series", + "500 Series", "Durand", "H.O.N.K", "Phazon", diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 7a3c67140b5e..8cfeda9e30d2 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -527,14 +527,14 @@ user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") if(21) if(diff==FORWARD) - user.visible_message("[user] secures Gygax Armor Plates.", "You secure Gygax Armor Plates.") + user.visible_message("[user] secures the armor plates.", "You secure the armor plates.") else - user.visible_message("[user] pries Gygax Armor Plates from [parent].", "You pry Gygax Armor Plates from [parent].") + user.visible_message("[user] pries the armor plates from [parent].", "You pry the armor plates from [parent].") if(22) if(diff==FORWARD) - user.visible_message("[user] welds Gygax Armor Plates to [parent].", "You weld Gygax Armor Plates to [parent].") + user.visible_message("[user] welds the armor plates to [parent].", "You weld the armor plates to [parent].") else - user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.") + user.visible_message("[user] unfastens the armor plates.", "You unfasten the armor plates.") return TRUE /datum/component/construction/unordered/mecha_chassis/firefighter diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 5a0e457e42c9..43dc8431c809 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -64,79 +64,79 @@ ///////// Odysseus /obj/item/mecha_parts/chassis/odysseus - name = "\improper Odysseus chassis" + name = "\improper 200 Series chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/odysseus /obj/item/mecha_parts/part/odysseus_head - name = "\improper Odysseus head" - desc = "An Odysseus head. Contains an integrated medical HUD scanner." + name = "\improper 200 Series head" + desc = "A 200 Series head. Contains an integrated medical HUD scanner." icon_state = "odysseus_head" /obj/item/mecha_parts/part/odysseus_torso - name = "\improper Odysseus torso" - desc="A torso part of Odysseus. Contains power unit, processing core and life support systems along with an attachment port for a mounted sleeper." + name = "\improper 200 Series torso" + desc="The torso of a 200 Series exosuit. Contains power unit, processing core and life support systems along with an attachment port for a mounted sleeper." icon_state = "odysseus_torso" /obj/item/mecha_parts/part/odysseus_left_arm - name = "\improper Odysseus left arm" - desc = "An Odysseus left arm. Data and power sockets are compatible with specialized medical equipment." + name = "\improper 200 Series left arm" + desc = "A 200 Series left arm. Data and power sockets are compatible with specialized medical equipment." icon_state = "odysseus_l_arm" /obj/item/mecha_parts/part/odysseus_right_arm - name = "\improper Odysseus right arm" - desc = "An Odysseus right arm. Data and power sockets are compatible with specialized medical equipment." + name = "\improper 200 Series right arm" + desc = "A 200 Series right arm. Data and power sockets are compatible with specialized medical equipment." icon_state = "odysseus_r_arm" /obj/item/mecha_parts/part/odysseus_left_leg - name = "\improper Odysseus left leg" - desc = "An Odysseus left leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients." + name = "\improper 200 Series left leg" + desc = "A 200 Series left leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients." icon_state = "odysseus_l_leg" /obj/item/mecha_parts/part/odysseus_right_leg - name = "\improper Odysseus right leg" - desc = "An odysseus right leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients." + name = "\improper 200 Series right leg" + desc = "A 200 Series right leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients." icon_state = "odysseus_r_leg" ///////// Gygax /obj/item/mecha_parts/chassis/gygax - name = "\improper Gygax chassis" + name = "\improper 500 Series chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/gygax /obj/item/mecha_parts/part/gygax_torso - name = "\improper Gygax torso" - desc = "A torso part of Gygax. Contains power unit, processing core and life support systems." + name = "\improper 500 Series torso" + desc = "The torso of a 500 Series exosuit. Contains power unit, processing core and life support systems." icon_state = "gygax_harness" /obj/item/mecha_parts/part/gygax_head - name = "\improper Gygax head" - desc = "A Gygax head. Houses advanced surveillance and targeting sensors." + name = "\improper 500 Series head" + desc = "A 500 Series head. Houses advanced surveillance and targeting sensors." icon_state = "gygax_head" /obj/item/mecha_parts/part/gygax_left_arm - name = "\improper Gygax left arm" - desc = "A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons." + name = "\improper 500 Series left arm" + desc = "A 500 Series left arm. Data and power sockets are compatible with most exosuit tools and weapons." icon_state = "gygax_l_arm" /obj/item/mecha_parts/part/gygax_right_arm - name = "\improper Gygax right arm" - desc = "A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons." + name = "\improper 500 Series right arm" + desc = "A 500 Series right arm. Data and power sockets are compatible with most exosuit tools and weapons." icon_state = "gygax_r_arm" /obj/item/mecha_parts/part/gygax_left_leg - name = "\improper Gygax left leg" - desc = "A Gygax left leg. Constructed with advanced servomechanisms and actuators to enable faster speed." + name = "\improper 500 Series left leg" + desc = "A 500 Series left leg. Constructed with advanced servomechanisms and actuators to enable faster speed." icon_state = "gygax_l_leg" /obj/item/mecha_parts/part/gygax_right_leg - name = "\improper Gygax right leg" - desc = "A Gygax right leg. Constructed with advanced servomechanisms and actuators to enable faster speed." + name = "\improper 500 Series right leg" + desc = "A 500 Series right leg. Constructed with advanced servomechanisms and actuators to enable faster speed." icon_state = "gygax_r_leg" /obj/item/mecha_parts/part/gygax_armor gender = PLURAL - name = "\improper Gygax armor plates" - desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction." + name = "\improper 500 Series armor plates" + desc = "A set of armor plates designed for the 500 Series. Designed to effectively deflect damage with a lightweight construction." icon_state = "gygax_armor" @@ -294,15 +294,15 @@ /obj/item/circuitboard/mecha/gygax/peripherals - name = "Gygax Peripherals Control module (Exosuit Board)" + name = "500 Series Peripherals Control module (Exosuit Board)" icon_state = "mcontroller" /obj/item/circuitboard/mecha/gygax/targeting - name = "Gygax Weapon Control and Targeting module (Exosuit Board)" + name = "500 Series Weapon Control and Targeting module (Exosuit Board)" icon_state = "mcontroller" /obj/item/circuitboard/mecha/gygax/main - name = "Gygax Central Control module (Exosuit Board)" + name = "500 Series Central Control module (Exosuit Board)" icon_state = "mainboard" /obj/item/circuitboard/mecha/durand/peripherals @@ -330,11 +330,11 @@ icon_state = "mainboard" /obj/item/circuitboard/mecha/odysseus/peripherals - name = "Odysseus Peripherals Control module (Exosuit Board)" + name = "200 Series Peripherals Control module (Exosuit Board)" icon_state = "mcontroller" /obj/item/circuitboard/mecha/odysseus/main - name = "Odysseus Central Control module (Exosuit Board)" + name = "200 Series Central Control module (Exosuit Board)" icon_state = "mainboard" /obj/item/circuitboard/mecha/phazon/peripherals diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index b8808944b5bd..b9a964cd5d55 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -110,7 +110,7 @@ AI = null /obj/structure/mecha_wreckage/gygax - name = "\improper Gygax wreckage" + name = "\improper 501p wreckage" icon_state = "gygax-broken" parts = list( /obj/item/mecha_parts/part/gygax_torso, @@ -122,7 +122,7 @@ ) /obj/structure/mecha_wreckage/gygax/dark - name = "\improper Dark Gygax wreckage" + name = "\improper 515 EX wreckage" icon_state = "darkgygax-broken" /obj/structure/mecha_wreckage/marauder @@ -132,7 +132,6 @@ /obj/structure/mecha_wreckage/touro name = "\improper Touro wreckage" icon_state = "touro-broken" - desc = "The syndicate won't be very happy about this..." /obj/structure/mecha_wreckage/seraph name = "\improper Seraph wreckage" @@ -210,7 +209,7 @@ /obj/structure/mecha_wreckage/odysseus - name = "\improper Odysseus wreckage" + name = "\improper 202r wreckage" icon_state = "odysseus-broken" parts = list( /obj/item/mecha_parts/part/odysseus_torso, diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 4874ab142647..2a10a29230c8 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -1,6 +1,6 @@ /obj/mecha/medical/odysseus - desc = "These exosuits are developed and produced by Vey-Med. (© All rights reserved)." - name = "\improper Odysseus" + desc = "A high-end utility exosuit manufactured by Cybersun Biodynamics. The general medical variant of the 200 Series, the 202r features a high-speed leg design and advanced stabilization system to move patients safely over rough terrain." + name = "\improper 202r Medical exosuit" icon_state = "odysseus" step_in = 2 max_temperature = 15000 diff --git a/code/game/objects/items/toy_mechs.dm b/code/game/objects/items/toy_mechs.dm index 738cfa83c0f5..0824632c6e91 100644 --- a/code/game/objects/items/toy_mechs.dm +++ b/code/game/objects/items/toy_mechs.dm @@ -490,7 +490,7 @@ victim.combat_health-- /obj/item/toy/prize/gygax - name = "toy Gygax" + name = "toy 515p" desc = "4/13" icon_state = "gygaxtoy" max_combat_health = 5 //250 integrity @@ -544,7 +544,7 @@ special_attack_cry = "BULLET STORM" /obj/item/toy/prize/odysseus - name = "toy Odysseus" + name = "toy 202r" desc = "10/13" icon_state = "odysseustoy" max_combat_health = 4 //120 integrity diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index 6eae1c1a1484..4e11d41df908 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -257,7 +257,7 @@ /datum/blackmarket_item/weapon/mecha_weapon_bay name = "Concealed Weapons Bay" - desc = "Ripley with a laser cannon? Odysseus with a missile rack? Sky's the limit with this omni-compatible weapons bay! (Missiles and lasers not included)" + desc = "Ripley with a laser cannon? 200 Series with a missile rack? Sky's the limit with this omni-compatible weapons bay! (Missiles and lasers not included)" item = /obj/item/mecha_parts/concealed_weapon_bay price_min = 1000 @@ -268,7 +268,7 @@ /datum/blackmarket_item/weapon/mecha_syringe_gun name = "Mounted Syringe Gun" - desc = "We ripped this off an old Nanotrasen exosuit. It's a real advanced piece of equipment. Exosuit not included." + desc = "We ripped this off an old Cybersun exosuit. It's a real advanced piece of equipment. Exosuit not included." item = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun price_min = 5000 diff --git a/code/modules/cargo/bounties/mech.dm b/code/modules/cargo/bounties/mech.dm index 62c846ea96a3..03538e05de10 100644 --- a/code/modules/cargo/bounties/mech.dm +++ b/code/modules/cargo/bounties/mech.dm @@ -24,12 +24,12 @@ wanted_types = list(/obj/mecha/working/ripley/firefighter) /datum/bounty/item/mech/odysseus - name = "Odysseus" + name = "200 Series" reward = 11000 wanted_types = list(/obj/mecha/medical/odysseus) /datum/bounty/item/mech/gygax - name = "Gygax" + name = "500 Series" reward = 28000 wanted_types = list(/obj/mecha/combat/gygax) diff --git a/code/modules/cargo/packs/mechs.dm b/code/modules/cargo/packs/mechs.dm index 38e300d556fd..d12c9e4096e8 100644 --- a/code/modules/cargo/packs/mechs.dm +++ b/code/modules/cargo/packs/mechs.dm @@ -37,8 +37,8 @@ Build Your Own Suit crate_name = "APLU construction kit" /datum/supply_pack/mech/odysseus_parts - name = "Odysseus construction kit" - desc = "DeForest Medical's premier solution to on the go medical treatment. Some assembly required." + name = "202r construction kit" + desc = "Cybersun Biodynamics' premier solution to on-the-go medical treatment. Some assembly required." cost = 5000 contains = list( /obj/item/mecha_parts/chassis/odysseus, @@ -52,11 +52,11 @@ Build Your Own Suit /obj/item/circuitboard/mecha/odysseus/peripherals, /obj/item/circuitboard/mecha/odysseus/main ) - crate_name = "Odysseus Construction Kit" + crate_name = "202r Construction Kit" /datum/supply_pack/mech/gygax_parts - name = "Gygax construction kit" - desc = "An agile exosuit made famous by Nanotrasen security personnel during the ICW. Or at least the parts to it." + name = "501p construction kit" + desc = "An agile combat exosuit sold across the galaxy by Cybersun. Or at least the parts to it." cost = 12000 contains = list( /obj/item/mecha_parts/chassis/gygax, @@ -71,7 +71,7 @@ Build Your Own Suit /obj/item/circuitboard/mecha/gygax/main, /obj/item/circuitboard/mecha/gygax/targeting ) - crate_name = "Gygax Construction Kit" + crate_name = "501p Construction Kit" /datum/supply_pack/mech/durand_parts name = "Durand construction kit" diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 4ac230f59537..e4b3179ee081 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -17,7 +17,7 @@ category = list("Exosuit Modules") /datum/design/board/odysseus_main - name = "\"Odysseus\" Central Control module" + name = "200 Series Central Control module" desc = "Allows for the construction of a \"Odysseus\" Central Control module." id = "odysseus_main" build_path = /obj/item/circuitboard/mecha/odysseus/main @@ -25,7 +25,7 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/board/odysseus_peri - name = "\"Odysseus\" Peripherals Control module" + name = "200 Series Peripherals Control module" desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module." id = "odysseus_peri" build_path = /obj/item/circuitboard/mecha/odysseus/peripherals @@ -33,24 +33,24 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL /datum/design/board/gygax_main - name = "\"Gygax\" Central Control module" - desc = "Allows for the construction of a \"Gygax\" Central Control module." + name = "500 Series Central Control module" + desc = "Allows for the construction of a 500 Series Central Control module." id = "gygax_main" build_path = /obj/item/circuitboard/mecha/gygax/main category = list("Exosuit Modules") departmental_flags = DEPARTMENTAL_FLAG_SECURITY /datum/design/board/gygax_peri - name = "\"Gygax\" Peripherals Control module" - desc = "Allows for the construction of a \"Gygax\" Peripheral Control module." + name = "500 Series Peripherals Control module" + desc = "Allows for the construction of a 500 Series Peripheral Control module." id = "gygax_peri" build_path = /obj/item/circuitboard/mecha/gygax/peripherals category = list("Exosuit Modules") departmental_flags = DEPARTMENTAL_FLAG_SECURITY /datum/design/board/gygax_targ - name = "\"Gygax\" Weapons & Targeting Control module" - desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module." + name = "500 Series Weapons & Targeting Control module" + desc = "Allows for the construction of a 500 Series Weapons & Targeting Control module." id = "gygax_targ" build_path = /obj/item/circuitboard/mecha/gygax/targeting category = list("Exosuit Modules") diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index cc45dd179877..6112b3b0f9f7 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -222,140 +222,140 @@ //Odysseus /datum/design/odysseus_chassis - name = "Exosuit Chassis (\"Odysseus\")" + name = "Exosuit Chassis (200 Series)" id = "odysseus_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/odysseus materials = list(/datum/material/iron=20000) construction_time = 100 - category = list("Odysseus") + category = list("200 Series") /datum/design/odysseus_torso - name = "Exosuit Torso (\"Odysseus\")" + name = "Exosuit Torso (200 Series)" id = "odysseus_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_torso materials = list(/datum/material/iron=12000) construction_time = 180 - category = list("Odysseus") + category = list("200 Series") /datum/design/odysseus_head - name = "Exosuit Head (\"Odysseus\")" + name = "Exosuit Head (200 Series)" id = "odysseus_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_head materials = list(/datum/material/iron=6000,/datum/material/glass = 10000) construction_time = 100 - category = list("Odysseus") + category = list("200 Series") /datum/design/odysseus_left_arm - name = "Exosuit Left Arm (\"Odysseus\")" + name = "Exosuit Left Arm (200 Series)" id = "odysseus_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_left_arm materials = list(/datum/material/iron=6000) construction_time = 120 - category = list("Odysseus") + category = list("200 Series") /datum/design/odysseus_right_arm - name = "Exosuit Right Arm (\"Odysseus\")" + name = "Exosuit Right Arm (200 Series)" id = "odysseus_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_right_arm materials = list(/datum/material/iron=6000) construction_time = 120 - category = list("Odysseus") + category = list("200 Series") /datum/design/odysseus_left_leg - name = "Exosuit Left Leg (\"Odysseus\")" + name = "Exosuit Left Leg (200 Series)" id = "odysseus_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_left_leg materials = list(/datum/material/iron=7000) construction_time = 130 - category = list("Odysseus") + category = list("200 Series") /datum/design/odysseus_right_leg - name = "Exosuit Right Leg (\"Odysseus\")" + name = "Exosuit Right Leg (200 Series)" id = "odysseus_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_right_leg materials = list(/datum/material/iron=7000) construction_time = 130 - category = list("Odysseus") + category = list("200 Series") //Gygax /datum/design/gygax_chassis - name = "Exosuit Chassis (\"Gygax\")" + name = "Exosuit Chassis (500 Series)" id = "gygax_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/gygax materials = list(/datum/material/iron=20000) construction_time = 100 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_torso - name = "Exosuit Torso (\"Gygax\")" + name = "Exosuit Torso (500 Series)" id = "gygax_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_torso materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/gold=2000, /datum/material/silver=2000) construction_time = 300 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_head - name = "Exosuit Head (\"Gygax\")" + name = "Exosuit Head (500 Series)" id = "gygax_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_head materials = list(/datum/material/iron=10000,/datum/material/glass = 5000, /datum/material/gold=2000, /datum/material/silver=2000) construction_time = 200 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_left_arm - name = "Exosuit Left Arm (\"Gygax\")" + name = "Exosuit Left Arm (500 Series)" id = "gygax_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_left_arm materials = list(/datum/material/iron=15000, /datum/material/gold=1000, /datum/material/silver=1000) construction_time = 200 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_right_arm - name = "Exosuit Right Arm (\"Gygax\")" + name = "Exosuit Right Arm (500 Series)" id = "gygax_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_right_arm materials = list(/datum/material/iron=15000, /datum/material/gold=1000, /datum/material/silver=1000) construction_time = 200 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_left_leg - name = "Exosuit Left Leg (\"Gygax\")" + name = "Exosuit Left Leg (500 Series)" id = "gygax_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_left_leg materials = list(/datum/material/iron=15000, /datum/material/gold=2000, /datum/material/silver=2000) construction_time = 200 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_right_leg - name = "Exosuit Right Leg (\"Gygax\")" + name = "Exosuit Right Leg (500 Series)" id = "gygax_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_right_leg materials = list(/datum/material/iron=15000, /datum/material/gold=2000, /datum/material/silver=2000) construction_time = 200 - category = list("Gygax") + category = list("500 Series") /datum/design/gygax_armor - name = "Exosuit Armor (\"Gygax\")" + name = "Exosuit Armor (500 Series)" id = "gygax_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_armor materials = list(/datum/material/iron=15000,/datum/material/gold=10000, /datum/material/silver=10000, /datum/material/titanium=10000) construction_time = 600 - category = list("Gygax") + category = list("500 Series") //Durand /datum/design/durand_chassis diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 6492998c1e6b..8583cf9bcbfd 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -771,8 +771,8 @@ /datum/techweb_node/odysseus id = "mecha_odysseus" - display_name = "EXOSUIT: Odysseus" - description = "Odysseus exosuit designs" + display_name = "EXOSUIT: 200 Series" + description = "200 Series exosuit designs" prereq_ids = list("base") design_ids = list("odysseus_chassis", "odysseus_torso", "odysseus_head", "odysseus_left_arm", "odysseus_right_arm" ,"odysseus_left_leg", "odysseus_right_leg", "odysseus_main", "odysseus_peri") @@ -781,8 +781,8 @@ /datum/techweb_node/gygax id = "mech_gygax" - display_name = "EXOSUIT: Gygax" - description = "Gygax exosuit designs" + display_name = "EXOSUIT: 500 Series" + description = "500 Series exosuit designs" prereq_ids = list("adv_mecha", "weaponry") design_ids = list("gygax_chassis", "gygax_torso", "gygax_head", "gygax_left_arm", "gygax_right_arm", "gygax_left_leg", "gygax_right_leg", "gygax_main", "gygax_peri", "gygax_targ", "gygax_armor") diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index ad51348128be..91c96289c6d9 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -881,7 +881,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/ammo/mech/bag name = "Exosuit Support Kit Bag" - desc = "A duffel bag containing ammo for four full reloads of the scattershot which is equipped on standard Dark Gygax and Touro exosuits. Also comes with some support equipment for maintaining the exosuit, including tools and an inducer." + desc = "A duffel bag containing ammo for four full reloads of the scattershot which is equipped on standard 515 EX and Touro exosuits. Also comes with some support equipment for maintaining the exosuit, including tools and an inducer." item = /obj/item/storage/backpack/duffelbag/syndie/ammo/mech cost = 4 include_modes = list(/datum/game_mode/nuclear) @@ -1125,7 +1125,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) restricted = TRUE /datum/uplink_item/support/gygax - name = "Dark Gygax Exosuit" + name = "515 EX Exosuit" desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent \ for hit-and-run style attacks. Features an incendiary carbine, flash bang launcher, teleporter, ion thrusters and a Tesla energy array." item = /obj/mecha/combat/gygax/dark/loaded From cab15a8764cfbd0df0fbbc282e4d99dabe3d3c1d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 15:47:18 -0600 Subject: [PATCH 049/118] Automatic changelog generation for PR #3946 [ci skip] --- html/changelogs/AutoChangeLog-pr-3946.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3946.yml diff --git a/html/changelogs/AutoChangeLog-pr-3946.yml b/html/changelogs/AutoChangeLog-pr-3946.yml new file mode 100644 index 000000000000..7ff33cce4085 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3946.yml @@ -0,0 +1,5 @@ +author: Apogee-dev +changes: + - {code_imp: Renamed the Gygax and Odysseus and updated their lore} + - {rscadd: Dark Gygax (now 515 EX) has better efficiency when overloading its legs.} +delete-after: true From 8f8acf0ddebb10d20d76561b356d5b07f427c8d0 Mon Sep 17 00:00:00 2001 From: Ratvar <61395690+Ratvarr@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:25:58 -0800 Subject: [PATCH 050/118] Removes every "Hurr Durr" from code. (#4018) ## About The Pull Request I got rid of bigotism. In our code. I hate TG oh also I'm not fucking up merges ## Why It's Good For The Game Why is it *not* good for the game? ## Changelog :cl: del: Changed the brain-damage moodlet's text. (and other NUFC) /:cl: --- code/datums/mood_events/generic_negative_events.dm | 5 +---- code/modules/food_and_drinks/food/snacks/meat.dm | 2 +- code/modules/power/singularity/field_generator.dm | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 067807d7a6b4..557eb44ea304 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -93,10 +93,7 @@ /datum/mood_event/brain_damage mood_change = -3 - -/datum/mood_event/brain_damage/add_effects() - var/damage_message = pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage") - description = span_warning("Hurr durr... [damage_message]") + description = span_warning("It's so... Hard to think...") /datum/mood_event/hulk //Entire duration of having the hulk mutation description = span_warning("HULK SMASH!") diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 6cc7413cbfdd..60290b827c5b 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -145,7 +145,7 @@ desc = "A synthetic slab of meat." icon_state = "meat_old" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/synth - foodtype = RAW | MEAT //hurr durr chemicals we're harmed in the production of this meat thus its non-vegan. + foodtype = RAW | MEAT /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct name = "meat product" diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 9a965e4f85e3..ce99b9560c7d 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -339,7 +339,7 @@ field_generator power level display clean_up = 0 update_appearance() - //This is here to help fight the "hurr durr, release singulo cos nobody will notice before the + //This is here to help fight the "release singulo cos nobody will notice before the //singulo eats the evidence". It's not fool-proof but better than nothing. //I want to avoid using global variables. INVOKE_ASYNC(src, PROC_REF(notify_admins)) From 03cfc29c420ade17bd12f6e53b7e396d765b748d Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:26:03 -0500 Subject: [PATCH 051/118] Partial Tempchanges Revert (#3895) ## About The Pull Request Partial revert of the temp changes introduced in #3512. Temperature is an unfortunately horrific system that needs more work than value fudging to produce a good effect, and I am of the opinion that dealing with all the edge cases introduced by #3512 outweights the benefits it's produced ## Changelog :cl: balance: Temperature Mechanics have been partially reverted. Please report any weirdness balance: Temperature now defaults to respecting insulation instead of ignoring it. /:cl: --------- Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/__DEFINES/species.dm | 12 ++--- code/_onclick/hud/alert.dm | 2 +- .../datums/weather/weather_types/hailstorm.dm | 2 +- code/datums/weather/weather_types/snowfall.dm | 2 +- code/game/objects/structures/shower.dm | 27 ++++++----- .../mob/living/carbon/human/species.dm | 13 ++---- .../carbon/human/species_types/kepori.dm | 4 +- .../carbon/human/species_types/mothmen.dm | 4 +- .../living/carbon/human/species_types/vox.dm | 2 +- code/modules/mob/living/carbon/life.dm | 4 +- .../hostile/mining_mobs/basilisk.dm | 4 +- .../hostile/mining_mobs/ice_demon.dm | 2 +- .../reagents/alcohol_reagents/mixed_drinks.dm | 22 +++------ .../chemistry/reagents/drink_reagents.dm | 46 +++++++++---------- .../chemistry/reagents/food_reagents.dm | 4 +- .../chemistry/reagents/medicine_reagents.dm | 2 +- .../chemistry/reagents/toxin_reagents.dm | 2 +- .../chemistry/reagents/trickwine_reagents.dm | 4 +- code/modules/surgery/organs/lungs.dm | 10 ++-- 19 files changed, 78 insertions(+), 90 deletions(-) diff --git a/code/__DEFINES/species.dm b/code/__DEFINES/species.dm index d3cf27ac546e..2965611961ba 100644 --- a/code/__DEFINES/species.dm +++ b/code/__DEFINES/species.dm @@ -14,25 +14,25 @@ /// The natural temperature for a body #define HUMAN_BODYTEMP_NORMAL 310.15 /// This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. -#define HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR 22 +#define HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR 11 /// Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50. #define HUMAN_BODYTEMP_AUTORECOVERY_MINIMUM 12 ///Similar to the HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. -#define HUMAN_BODYTEMP_COLD_DIVISOR 20 +#define HUMAN_BODYTEMP_COLD_DIVISOR 10 /// Similar to the HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. #define HUMAN_BODYTEMP_HEAT_DIVISOR 10 /// The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area. -#define HUMAN_BODYTEMP_COOLING_MAX -100 +#define HUMAN_BODYTEMP_COOLING_MAX -20 /// The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area. -#define HUMAN_BODYTEMP_HEATING_MAX 30 +#define HUMAN_BODYTEMP_HEATING_MAX 10 /// The body temperature limit the human body can take before it starts taking damage from heat. /// This also affects how fast the body normalises it's temperature when hot. /// 340k is about 66c, and rather high for a human. -#define HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL + 3) +#define HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL + 30) /// The body temperature limit the human body can take before it starts taking damage from cold. /// This also affects how fast the body normalises it's temperature when cold. /// 270k is about -3c, that is below freezing and would hurt over time. -#define HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL - 8) +#define HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT (HUMAN_BODYTEMP_NORMAL - 40) //VOX DEFINES diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 61d2a44d20b1..d3014184505a 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -211,7 +211,7 @@ Override makes it so the alert is not replaced until cleared by a clear_alert wi /atom/movable/screen/alert/sweat name = "Sweating" - desc = "You're sweating and the heat is starting to hurt. Stay hydrated, get somewhere cooler, and take off any insulating clothing like a fire suit." + desc = "You're sweating and the heat is starting to hurt. Get somewhere cooler, and take off any insulating clothing like a fire suit." icon_state = "sweat" /atom/movable/screen/alert/shiver diff --git a/code/datums/weather/weather_types/hailstorm.dm b/code/datums/weather/weather_types/hailstorm.dm index ef0cd70b2dba..e9fc50cc964b 100644 --- a/code/datums/weather/weather_types/hailstorm.dm +++ b/code/datums/weather/weather_types/hailstorm.dm @@ -32,5 +32,5 @@ /// Think of some good solution of how weather should affect monsters and how they should be resistant to things like this if(isanimal(living_mob)) return - living_mob.adjust_bodytemperature(-rand(1,2)) + living_mob.adjust_bodytemperature(-rand(3,6), 243) living_mob.adjustBruteLoss(rand(2,4)) diff --git a/code/datums/weather/weather_types/snowfall.dm b/code/datums/weather/weather_types/snowfall.dm index d3eab8b1099a..949eb9c44d1c 100644 --- a/code/datums/weather/weather_types/snowfall.dm +++ b/code/datums/weather/weather_types/snowfall.dm @@ -43,4 +43,4 @@ thunder_chance = 2 /datum/weather/snowfall/heavy/weather_act(mob/living/living_mob) - living_mob.adjust_bodytemperature(-rand(1,2)) + living_mob.adjust_bodytemperature(-rand(2,4), 243) diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index b7c6285d7962..75c67eadd814 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -111,7 +111,7 @@ if(isliving(A)) check_heat(A) - if(iscarbon(A)) //WS edit - moth dust from hugging + if(iscarbon(A)) var/mob/living/carbon/C = A C.mothdust -= 10; @@ -130,18 +130,21 @@ qdel(src) /obj/machinery/shower/proc/check_heat(mob/living/L) - var/mob/living/carbon/C = L - - if(current_temperature == SHOWER_FREEZING) - if(iscarbon(L)) - C.adjust_bodytemperature(-5, 280) - to_chat(L, "[src] is freezing!") - else if(current_temperature == SHOWER_BOILING) - if(iscarbon(L)) - C.adjust_bodytemperature(5, 0, 350) - L.adjustFireLoss(5) - to_chat(L, "[src] is searing!") + if(iscarbon(L)) + var/mob/living/carbon/C = L + switch(current_temperature) + if(SHOWER_FREEZING) + C.adjust_bodytemperature(-3, 280) + to_chat(L, "[src] is cold!") + if(SHOWER_BOILING) + C.adjust_bodytemperature(3, 0, 330) + to_chat(L, "[src] is hot!") + if(SHOWER_NORMAL) + if(C.bodytemperature >= HUMAN_BODYTEMP_NORMAL) + C.adjust_bodytemperature(-2, HUMAN_BODYTEMP_NORMAL) + else + C.adjust_bodytemperature(2, HUMAN_BODYTEMP_NORMAL) /obj/effect/mist name = "mist" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 911532299839..e9503f7e7225 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -149,9 +149,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) /// Minimum amount of kelvin moved toward normal body temperature per tick. var/bodytemp_autorecovery_min = HUMAN_BODYTEMP_AUTORECOVERY_MINIMUM /// The maximum temperature the species is comfortable at. Going above this does not apply any effects, but warns players that the temperture is hot - var/max_temp_comfortable = (HUMAN_BODYTEMP_NORMAL) //20 c will always be below human bodytemp, this just makes it so when it can sustain that its higher + var/max_temp_comfortable = (HUMAN_BODYTEMP_NORMAL + 7) //20 c will always be below human bodytemp, this just makes it so when it can sustain that its higher /// The minimum temperature the species is comfortable at. Going below this does not apply any effects, but warns players that the temperture is chilly - var/min_temp_comfortable = (HUMAN_BODYTEMP_NORMAL - 1) + var/min_temp_comfortable = (HUMAN_BODYTEMP_NORMAL - 5) /// This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. var/bodytemp_autorecovery_divisor = HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR ///Similar to the autorecovery_divsor, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to lose bodytemp faster. @@ -1955,13 +1955,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) else H.throw_alert("temp", /atom/movable/screen/alert/sweat, 3) - //Stay hydrated. - if(!(H.mob_biotypes & MOB_ROBOTIC) && H.reagents.has_reagent(/datum/reagent/water) && H.stat != DEAD) - burn_damage -= clamp(H.reagents.get_reagent_amount(/datum/reagent/water) /10, 0, 2) - // if youre dead, no need to sweat? - if(H.stat != DEAD) - burn_damage -= (max(burn_damage - 2.5, 0)) - // Apply species and physiology modifiers to heat damage burn_damage = burn_damage * heatmod * H.physiology.heat_mod @@ -2016,7 +2009,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) firemodifier = min(firemodifier, 0) // this can go below 5 at log 2.5 - burn_damage = max(log(2 - firemodifier, (current_human.bodytemperature - current_human.get_body_temp_normal(apply_change=FALSE))) - 2,0) + burn_damage = max(log(2 - firemodifier, (current_human.bodytemperature - current_human.get_body_temp_normal(apply_change=FALSE))) - 5,0) return burn_damage /// Handle the air pressure of the environment diff --git a/code/modules/mob/living/carbon/human/species_types/kepori.dm b/code/modules/mob/living/carbon/human/species_types/kepori.dm index c79ac3aaf68e..0836083f2daa 100644 --- a/code/modules/mob/living/carbon/human/species_types/kepori.dm +++ b/code/modules/mob/living/carbon/human/species_types/kepori.dm @@ -25,8 +25,8 @@ bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 35 bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT + 3 - max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 15 - min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 1 + max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 40 + min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 3 bodytemp_autorecovery_divisor = HUMAN_BODYTEMP_AUTORECOVERY_DIVISOR - 4 diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index e612b3bbe2fc..54933f028982 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -30,8 +30,8 @@ species_l_leg = /obj/item/bodypart/leg/left/moth species_r_leg = /obj/item/bodypart/leg/right/moth - min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 2 - bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT - 2 + min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 5 + bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT - 5 /datum/species/moth/regenerate_organs(mob/living/carbon/C, datum/species/old_species,replace_current=TRUE, list/excluded_zones, robotic = FALSE) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/vox.dm b/code/modules/mob/living/carbon/human/species_types/vox.dm index 4f63158cb29f..c2aeee2b87db 100644 --- a/code/modules/mob/living/carbon/human/species_types/vox.dm +++ b/code/modules/mob/living/carbon/human/species_types/vox.dm @@ -26,7 +26,7 @@ bodytemp_cold_divisor = VOX_BODYTEMP_COLD_DIVISOR bodytemp_autorecovery_min = VOX_BODYTEMP_AUTORECOVERY_MIN - max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 1 + max_temp_comfortable = HUMAN_BODYTEMP_NORMAL + 10 min_temp_comfortable = HUMAN_BODYTEMP_NORMAL - 20 bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 10 diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 9ab3bd9cd98a..93630c60821b 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -583,7 +583,7 @@ All effects don't start immediately, but rather get worse over time; the rate is natural_change = (1 / (thermal_protection + 1)) * natural_change // Apply the natural stabilization changes - adjust_bodytemperature(natural_change) + adjust_bodytemperature(natural_change, use_insulation=FALSE) /** * Get the insulation that is appropriate to the temperature you're being exposed to. @@ -635,7 +635,7 @@ All effects don't start immediately, but rather get worse over time; the rate is * * use_steps (optional) Use the body temp divisors and max change rates * * hardsuit_fix (optional) num HUMAN_BODYTEMP_NORMAL - H.bodytemperature Use hardsuit override until hardsuits fix is done... */ -/mob/living/carbon/adjust_bodytemperature(amount, min_temp=0, max_temp=INFINITY, use_insulation=FALSE, use_steps=FALSE, \ +/mob/living/carbon/adjust_bodytemperature(amount, min_temp=0, max_temp=INFINITY, use_insulation=TRUE, use_steps=FALSE, \ hardsuit_fix=FALSE) // apply insulation to the amount of change if(use_insulation) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index 2a3886db5b98..ca1e4bd0b77b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -42,10 +42,10 @@ damage_type = BURN nodamage = TRUE flag = "energy" - temperature = -5 // Cools you down! per hit! + temperature = -25 // Cools you down! per hit! /obj/projectile/temp/basilisk/super - temperature = -20 + temperature = -50 damage = 5 nodamage = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm index 17f189080d75..6a3b203a8981 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm @@ -45,7 +45,7 @@ name = "ice blast" damage = 5 nodamage = FALSE - temperature = -2 + temperature = -40 /mob/living/simple_animal/hostile/asteroid/ice_demon/OpenFire() // Sentient ice demons teleporting has been linked to server crashes diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents/mixed_drinks.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents/mixed_drinks.dm index 1f25ef513cf7..55be0f69f84b 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents/mixed_drinks.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents/mixed_drinks.dm @@ -48,7 +48,7 @@ /datum/reagent/consumable/ethanol/vimukti/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) M.AdjustSleeping(-40) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) if(!HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE)) M.adjust_jitter(5, max = 100) return ..() @@ -332,7 +332,7 @@ shot_glass_icon_state = "toxinsspecialglass" /datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp. + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20, FALSE) //310.15 is the normal bodytemp. return ..() /datum/reagent/consumable/ethanol/beepsky_smash @@ -523,7 +523,7 @@ glass_desc = "Vodka, cream, and ice. No actual antifreeze included, of course." /datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp. + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20, FALSE) //310.15 is the normal bodytemp. return ..() /datum/reagent/consumable/ethanol/barefoot @@ -634,7 +634,7 @@ glass_desc = "Vodka with capsaicin for the extra feeling of intense warmth. Difficult to take large swallows." /datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 , M.dna.species.bodytemp_heat_damage_limit) //310.15 is the normal bodytemp. + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 , M.dna.species.bodytemp_heat_damage_limit, FALSE) //310.15 is the normal bodytemp. return ..() /datum/reagent/consumable/ethanol/red_mead @@ -671,7 +671,7 @@ glass_desc = "Iced beer, served in a chilled glass. It's cold enough to leave a trail in the air." /datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp. + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C, FALSE) //310.15 is the normal bodytemp. return ..() /datum/reagent/consumable/ethanol/grog @@ -1226,7 +1226,7 @@ /datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M) M.apply_status_effect(/datum/status_effect/throat_soothed) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/ethanol/alexander @@ -1402,7 +1402,7 @@ /datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C, FALSE) return ..() /datum/reagent/consumable/ethanol/branca_menta/on_mob_metabolize(mob/living/M) @@ -1565,14 +1565,6 @@ glass_name = "Inner Fire" glass_desc = "Not at all made by the Saint Roumain, this drink still bases itself as a test of will used by the hunters to test their endurance to intense heat... and alcohol." -/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/M) - // Heats the user up while the reagent is in the body. Occasionally makes you burst into flames. - M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT) - if (prob(5)) - M.adjust_fire_stacks(1) - M.IgniteMob() - ..() - /datum/reagent/consumable/ethanol/painkiller name = "Painkiller" description = "Dulls your pain. Your emotional pain, that is." diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 1bcd05798a03..fd8c8d47d451 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -257,7 +257,7 @@ M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40) //310.15 is the normal bodytemp. - M.adjust_bodytemperature(3 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(3 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) if(holder.has_reagent(/datum/reagent/consumable/frostoil)) holder.remove_reagent(/datum/reagent/consumable/frostoil, 5) ..() @@ -280,7 +280,7 @@ M.AdjustSleeping(-20) if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1, 0) - M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) ..() . = 1 @@ -330,7 +330,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() . = 1 @@ -354,7 +354,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-60) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) M.adjustToxLoss(1*REM, 0) ..() . = TRUE @@ -375,7 +375,7 @@ M.AdjustSleeping(-40) if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1, 0) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() . = 1 @@ -390,7 +390,7 @@ /datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-5) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/crosstalk @@ -431,7 +431,7 @@ /datum/reagent/consumable/comet_trail/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-7) M.AdjustSleeping(-20) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) M.adjust_jitter(5, max = 100) ..() . = 1 @@ -447,7 +447,7 @@ /datum/reagent/consumable/tadrixx/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-6) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/space_up @@ -461,7 +461,7 @@ /datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/molten @@ -476,9 +476,9 @@ /datum/reagent/consumable/molten/on_mob_life(mob/living/carbon/M) M.heal_bodypart_damage(1,1,0) if(M.bodytemperature > M.get_body_temp_normal(apply_change=FALSE)) - M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE)) + M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE), FALSE) else if(M.bodytemperature < (M.get_body_temp_normal(apply_change=FALSE) + 1)) - M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE)) + M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE), FALSE) ..() /datum/reagent/consumable/molten/plasma_fizz @@ -509,7 +509,7 @@ /datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() @@ -530,7 +530,7 @@ You feel as though a great secret of the universe has been made known to you...") /datum/reagent/consumable/pacfuel/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) if(prob(10)) M?.mind.adjust_experience(/datum/skill/gaming, 5) ..() @@ -545,7 +545,7 @@ glass_desc = "It's hard to imagine all those fruits getting condensed into a cup like this." /datum/reagent/consumable/shoal_punch/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/sodawater name = "Soda Water" @@ -559,7 +559,7 @@ /datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/tonic @@ -575,7 +575,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() . = 1 @@ -594,7 +594,7 @@ M.dizziness +=1 M.drowsyness = 0 M.AdjustSleeping(-40) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/xeno_energy/on_mob_metabolize(mob/living/L) @@ -617,7 +617,7 @@ glass_desc = "Generally, you're supposed to put something else in there, too..." /datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/soy_latte @@ -639,7 +639,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.SetSleeping(0) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) ..() @@ -664,7 +664,7 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.SetSleeping(0) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) ..() @@ -788,7 +788,7 @@ glass_desc = "It's grape soda!" /datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/milk/chocolate_milk @@ -817,7 +817,7 @@ glass_desc = "A favorite winter drink from the Solar Confederation. Good for warming yourself up." /datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M) @@ -884,7 +884,7 @@ glass_desc = "A classic vanilla flavored soft drink." /datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-1 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/sol_dry diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index b72d8f2e4fc2..3dbe92098319 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -428,7 +428,7 @@ taste_description = "your imprisonment" /datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) + M.adjust_bodytemperature(1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) ..() /datum/reagent/consumable/hell_ramen @@ -776,7 +776,7 @@ ..() /datum/reagent/consumable/pyre_elementum/on_mob_life(mob/living/carbon/M) - M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) // Doesn't kill you like capsaicin + M.adjust_bodytemperature(2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(), FALSE) // Doesn't kill you like capsaicin if(!ingested) // Unless you didn't eat it M.adjustFireLoss(0.25*REM, 0) ..() diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index e952526bb94c..d8656cb47c99 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1822,7 +1822,7 @@ /datum/reagent/medicine/rhigoxane/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(-2*REM, 0.) - M.adjust_bodytemperature(-0.2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.dna.species.bodytemp_normal) + M.adjust_bodytemperature(-0.6 * TEMPERATURE_DAMAGE_COEFFICIENT, M.dna.species.bodytemp_normal) ..() . = 1 diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index e1553a6dffcf..01326e6d1fb6 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -132,7 +132,7 @@ if(holder.has_reagent(/datum/reagent/medicine/epinephrine)) holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM) M.adjustPlasma(20) - M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-2 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) return ..() /datum/reagent/toxin/lexorin diff --git a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm index b48aefddcc62..6fb03cd2a71e 100644 --- a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm @@ -44,7 +44,7 @@ breakaway_flask_icon_state = "baflaskicewine" /datum/reagent/consumable/ethanol/trickwine/ice_wine/on_mob_life(mob/living/M) - M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) M.adjustFireLoss(-0.25) if(prob(10)) to_chat(M, span_notice("Sweat runs down your body.")) @@ -109,7 +109,7 @@ breakaway_flask_icon_state = "baflaskhearthwine" /datum/reagent/consumable/ethanol/trickwine/hearth_wine/on_mob_life(mob/living/M) - M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal()) + M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(), FALSE) if(ishuman(M)) var/mob/living/carbon/human/H = M H.heal_bleeding(0.25) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 5a0d20e23ca3..738605d22832 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -54,7 +54,7 @@ var/cold_message = "your face freezing and an icicle forming" var/chilly_message = "chilly air" - var/chlly_threshold = T20C-7 + var/chlly_threshold = T20C-20 var/cold_level_1_threshold = 240 var/cold_level_2_threshold = 220 var/cold_level_3_threshold = 200 @@ -65,10 +65,10 @@ var/hot_message = "your face burning and a searing heat" var/warm_message = "warm air" - var/warm_threshold = T20C+10 - var/heat_level_1_threshold = 316 - var/heat_level_2_threshold = 323 - var/heat_level_3_threshold = 343 + var/warm_threshold = T20C+20 + var/heat_level_1_threshold = 323 + var/heat_level_2_threshold = 335 + var/heat_level_3_threshold = 350 var/heat_level_1_damage = HEAT_GAS_DAMAGE_LEVEL_1 var/heat_level_2_damage = HEAT_GAS_DAMAGE_LEVEL_2 var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 From 8f75c315846e551a55eb745251ba31b8047abaf7 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:35:52 -0800 Subject: [PATCH 052/118] Removal of Mutations from Radiation (#3978) ## About The Pull Request Removes mutations from the consequences of radiation poisoning. Nothing else is changed, you just won't gain cruft mutations anymore. ## Why It's Good For The Game ![image](https://github.com/user-attachments/assets/21901a0b-2e50-4f16-812b-a395a8d67d06) Look. We've all experienced this or seen it. Someone gets a little too irradiated and then while your medical crewmember tries to treat them they have some unholy mutation cause them to teleport, or worse- recursively gain radiation to the point the ship is chernobyl'd. There's no way this is good for the gameplay in it's current state. If you need any further reasons, ask around about the Vox Elephant's Foot incident or any other number of stories involving mutations and radiation. ## Changelog :cl: balance: Radiation no longer horribly mutates your DNA to make you Swedish. It still causes cancer. /:cl: Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/mob/living/carbon/human/species.dm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e9503f7e7225..e715e2c7e4ca 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1431,13 +1431,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) H.vomit(10, TRUE) - if(radiation > RAD_MOB_MUTATE) - if(prob(1)) - to_chat(H, "You mutate!") - H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) - H.emote("gasp") - H.domutcheck() - if(radiation > RAD_MOB_HAIRLOSS) if(prob(15) && !(H.hairstyle == "Bald") && (HAIR in species_traits)) to_chat(H, "Your hair starts to fall out in clumps...") From e58607e730a25baf531a8fafc366fb08af3b3277 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 16:10:53 -0600 Subject: [PATCH 053/118] Automatic changelog generation for PR #3895 [ci skip] --- html/changelogs/AutoChangeLog-pr-3895.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3895.yml diff --git a/html/changelogs/AutoChangeLog-pr-3895.yml b/html/changelogs/AutoChangeLog-pr-3895.yml new file mode 100644 index 000000000000..685278277f54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3895.yml @@ -0,0 +1,7 @@ +author: Erikafox +changes: + - {balance: Temperature Mechanics have been partially reverted. Please report any + weirdness} + - {balance: Temperature now defaults to respecting insulation instead of ignoring + it.} +delete-after: true From dd1c317383aa8918521f32cdf5e8077a0bacdb19 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 16:11:47 -0600 Subject: [PATCH 054/118] Automatic changelog generation for PR #3978 [ci skip] --- html/changelogs/AutoChangeLog-pr-3978.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3978.yml diff --git a/html/changelogs/AutoChangeLog-pr-3978.yml b/html/changelogs/AutoChangeLog-pr-3978.yml new file mode 100644 index 000000000000..85280b4e985d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3978.yml @@ -0,0 +1,5 @@ +author: firebudgy +changes: + - {balance: Radiation no longer horribly mutates your DNA to make you Swedish. It + still causes cancer.} +delete-after: true From 19366fc4f66a6dee49b97e01ea76acc1ee2ab1b1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 21:28:21 +0000 Subject: [PATCH 055/118] Automatic TGS DMAPI Update (#3928) This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging. Co-authored-by: github-actions Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/__DEFINES/tgs.dm | 29 ++++++++++++++++++++++++++++- code/modules/tgs/v5/undefs.dm | 1 + 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 42f2d5fc31fe..7e1ba820dd8b 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,7 +1,7 @@ // tgstation-server DMAPI // The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119. -#define TGS_DMAPI_VERSION "7.3.0" +#define TGS_DMAPI_VERSION "7.3.1" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -58,6 +58,11 @@ #define TGS_FILE2TEXT_NATIVE file2text #endif +// SpacemanDMM compatibility +#ifndef CAN_BE_REDEFINED +#define CAN_BE_REDEFINED(X) +#endif + // EVENT CODES /// Before a reboot mode change, extras parameters are the current and new reboot mode enums. @@ -160,6 +165,7 @@ * * http_handler - Optional user defined [/datum/tgs_http_handler]. */ /world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE, datum/tgs_http_handler/http_handler) + CAN_BE_REDEFINED(TRUE) return /** @@ -170,6 +176,7 @@ * This function should not be called before ..() in [/world/proc/New]. */ /world/proc/TgsInitializationComplete() + CAN_BE_REDEFINED(TRUE) return /// Consumers MUST run this macro at the start of [/world/proc/Topic]. @@ -177,6 +184,7 @@ /// Consumers MUST call this as late as possible in [world/proc/Reboot] (BEFORE ..()). /world/proc/TgsReboot() + CAN_BE_REDEFINED(TRUE) return // DATUM DEFINITIONS @@ -214,6 +222,7 @@ * Returns [TRUE]/[FALSE] based on if the [/datum/tgs_version] contains wildcards. */ /datum/tgs_version/proc/Wildcard() + CAN_BE_REDEFINED(TRUE) return /** @@ -222,6 +231,7 @@ * other_version - The [/datum/tgs_version] to compare against. */ /datum/tgs_version/proc/Equals(datum/tgs_version/other_version) + CAN_BE_REDEFINED(TRUE) return /// Represents a merge of a GitHub pull request. @@ -459,16 +469,19 @@ /// Returns the maximum supported [/datum/tgs_version] of the DMAPI. /world/proc/TgsMaximumApiVersion() + CAN_BE_REDEFINED(TRUE) return /// Returns the minimum supported [/datum/tgs_version] of the DMAPI. /world/proc/TgsMinimumApiVersion() + CAN_BE_REDEFINED(TRUE) return /** * Returns [TRUE] if DreamDaemon was launched under TGS, the API matches, and was properly initialized. [FALSE] will be returned otherwise. */ /world/proc/TgsAvailable() + CAN_BE_REDEFINED(TRUE) return // No function below this succeeds if it TgsAvailable() returns FALSE or if TgsNew() has yet to be called. @@ -480,6 +493,7 @@ * If TGS has not requested a [TGS_REBOOT_MODE_SHUTDOWN] DreamDaemon will be launched again. */ /world/proc/TgsEndProcess() + CAN_BE_REDEFINED(TRUE) return /** @@ -490,6 +504,7 @@ * admin_only: If [TRUE], message will be sent to admin connected chats. Vice-versa applies. */ /world/proc/TgsTargetedChatBroadcast(datum/tgs_message_content/message, admin_only = FALSE) + CAN_BE_REDEFINED(TRUE) return /** @@ -500,6 +515,7 @@ * user: The [/datum/tgs_chat_user] to PM. */ /world/proc/TgsChatPrivateMessage(datum/tgs_message_content/message, datum/tgs_chat_user/user) + CAN_BE_REDEFINED(TRUE) return /** @@ -510,42 +526,52 @@ * channels - Optional list of [/datum/tgs_chat_channel]s to restrict the message to. */ /world/proc/TgsChatBroadcast(datum/tgs_message_content/message, list/channels = null) + CAN_BE_REDEFINED(TRUE) return /// Returns the current [/datum/tgs_version] of TGS if it is running the server, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsVersion() + CAN_BE_REDEFINED(TRUE) return /// Returns the running engine type /world/proc/TgsEngine() + CAN_BE_REDEFINED(TRUE) return /// Returns the current [/datum/tgs_version] of the DMAPI being used if it was activated, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsApiVersion() + CAN_BE_REDEFINED(TRUE) return /// Returns the name of the TGS instance running the game if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsInstanceName() + CAN_BE_REDEFINED(TRUE) return /// Return the current [/datum/tgs_revision_information] of the running server if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsRevision() + CAN_BE_REDEFINED(TRUE) return /// Returns the current BYOND security level as a TGS_SECURITY_ define if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsSecurityLevel() + CAN_BE_REDEFINED(TRUE) return /// Returns the current BYOND visibility level as a TGS_VISIBILITY_ define if TGS is present, null otherwise. Requires TGS to be using interop API version 5 or higher otherwise the string "___unimplemented" wil be returned. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsVisibility() + CAN_BE_REDEFINED(TRUE) return /// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsTestMerges() + CAN_BE_REDEFINED(TRUE) return /// Returns a list of connected [/datum/tgs_chat_channel]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsChatChannelInfo() + CAN_BE_REDEFINED(TRUE) return /** @@ -556,6 +582,7 @@ * wait_for_completion - If set, this function will not return until the event has run to completion. */ /world/proc/TgsTriggerEvent(event_name, list/parameters, wait_for_completion = FALSE) + CAN_BE_REDEFINED(TRUE) return /* diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index acd19dfa6411..ca49e46cdffa 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -18,6 +18,7 @@ #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS +#undef DMAPI5_PARAMETER_TOPIC_PORT #undef DMAPI5_CHUNK #undef DMAPI5_CHUNK_PAYLOAD From 11483f29a219075c15c7a796735ae0cee5693eeb Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:06:32 -0800 Subject: [PATCH 056/118] Scrap Audit - Circuit Board Removals and Additions + Mech Wreck Chassis Additions (#4003) ## About The Pull Request Does what it says on the tin. - Removes Communications, Launchpads, broken-ass EXPERIMENTOR machines, and cloning from circuit board drops. - Adds engines (for use in emergency repairs) and SMES as circuit drops. - Removes HONK mechs from potential exosuit part loot drops. - Adds Chassis to potential mech part drops. Why salvage otherwise? - Adds power cells to hivebot loot drops, to complete the stock parts list. - Makes various exosuit boards somewhat more common, to make gambling for them worthwhile. ## Why It's Good For The Game Waste loot has been left... untouched for a fair while. With Cloning and Sellpads (major things we don't want in players' hands), Communications (requesting nuclear codes) and others still available I decided to cull those. This also makes going and spending time on a waste (or multiple wastes) to salvage mech parts and potentially build a scrap mech actually possible now. You just couldn't before. Also, adds a way to get better power cells (non-weapon cells). You have to kick the hell out of Hivebots though to get the chance to get one. ## Changelog :cl: balance: Loot adjustments on waste planets. /:cl: Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/game/mecha/mecha_wreckage.dm | 6 ++++ .../objects/effects/spawners/random/boards.dm | 29 +++++++------------ .../effects/spawners/random/waste_planet.dm | 3 ++ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index b9a964cd5d55..845d06ad154f 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -114,6 +114,7 @@ icon_state = "gygax-broken" parts = list( /obj/item/mecha_parts/part/gygax_torso, + /obj/item/mecha_parts/chassis/gygax, /obj/item/mecha_parts/part/gygax_head, /obj/item/mecha_parts/part/gygax_left_arm, /obj/item/mecha_parts/part/gygax_right_arm, @@ -147,6 +148,7 @@ name = "\improper Ripley wreckage" icon_state = "ripley-broken" parts = list(/obj/item/mecha_parts/part/ripley_torso, + /obj/item/mecha_parts/chassis/ripley, /obj/item/mecha_parts/part/ripley_left_arm, /obj/item/mecha_parts/part/ripley_right_arm, /obj/item/mecha_parts/part/ripley_left_leg, @@ -156,6 +158,7 @@ name = "\improper Rogue wreckage" icon_state = "clipripley-broken" + /obj/structure/mecha_wreckage/ripley/mkii name = "\improper Ripley MK-II wreckage" icon_state = "ripleymkii-broken" @@ -165,6 +168,7 @@ icon_state = "firefighter-broken" parts = list(/obj/item/mecha_parts/part/ripley_torso, /obj/item/mecha_parts/part/ripley_left_arm, + /obj/item/mecha_parts/chassis/ripley, /obj/item/mecha_parts/part/ripley_right_arm, /obj/item/mecha_parts/part/ripley_left_leg, /obj/item/mecha_parts/part/ripley_right_leg, @@ -193,6 +197,7 @@ icon_state = "durand-broken" parts = list( /obj/item/mecha_parts/part/durand_torso, + /obj/item/mecha_parts/chassis/durand, /obj/item/mecha_parts/part/durand_head, /obj/item/mecha_parts/part/durand_left_arm, /obj/item/mecha_parts/part/durand_right_arm, @@ -213,6 +218,7 @@ icon_state = "odysseus-broken" parts = list( /obj/item/mecha_parts/part/odysseus_torso, + /obj/item/mecha_parts/chassis/odysseus, /obj/item/mecha_parts/part/odysseus_head, /obj/item/mecha_parts/part/odysseus_left_arm, /obj/item/mecha_parts/part/odysseus_right_arm, diff --git a/code/game/objects/effects/spawners/random/boards.dm b/code/game/objects/effects/spawners/random/boards.dm index 0104d17326d7..b66ce29ca53f 100644 --- a/code/game/objects/effects/spawners/random/boards.dm +++ b/code/game/objects/effects/spawners/random/boards.dm @@ -160,11 +160,9 @@ /obj/item/circuitboard/machine/cell_charger = 5, /obj/item/circuitboard/machine/chem_heater = 5, /obj/item/circuitboard/machine/chem_master = 5, - /obj/item/circuitboard/machine/clonescanner = 5, /obj/item/circuitboard/machine/cryo_tube = 5, /obj/item/circuitboard/machine/cyborgrecharger = 5, /obj/item/circuitboard/machine/deep_fryer = 5, - /obj/item/circuitboard/machine/experimentor = 5, /obj/item/circuitboard/machine/holopad = 5, /obj/item/circuitboard/machine/hydroponics = 5, /obj/item/circuitboard/machine/limbgrower = 5, @@ -179,8 +177,8 @@ /obj/item/circuitboard/machine/reagentgrinder = 5, /obj/item/circuitboard/machine/recharger = 5, /obj/item/circuitboard/machine/seed_extractor = 5, - /obj/item/circuitboard/machine/selling_pad = 5, /obj/item/circuitboard/machine/emitter = 5, + /obj/item/circuitboard/machine/smes = 5, ) /obj/effect/spawner/random/circuit @@ -192,25 +190,24 @@ /obj/item/circuitboard/machine/chem_dispenser = 5, /obj/item/circuitboard/machine/circuit_imprinter = 5, /obj/item/circuitboard/machine/protolathe = 5, - /obj/item/circuitboard/machine/clonepod/experimental = 5, /obj/item/circuitboard/machine/rad_collector = 5, /obj/item/circuitboard/machine/launchpad = 5, + /obj/item/circuitboard/machine/shuttle/engine/electric = 5, + /obj/item/circuitboard/machine/shuttle/smes = 5, ) /obj/effect/spawner/random/circuit/machine/mech loot = list( /obj/item/circuitboard/mecha/ripley/main = 100, /obj/item/circuitboard/mecha/ripley/peripherals = 100, - /obj/item/circuitboard/mecha/honker/main = 5, - /obj/item/circuitboard/mecha/honker/peripherals = 5, - /obj/item/circuitboard/mecha/odysseus/main = 5, - /obj/item/circuitboard/mecha/odysseus/peripherals = 5, - /obj/item/circuitboard/mecha/gygax/main = 1, - /obj/item/circuitboard/mecha/gygax/peripherals = 1, - /obj/item/circuitboard/mecha/gygax/targeting = 1, - /obj/item/circuitboard/mecha/durand/main = 1, - /obj/item/circuitboard/mecha/durand/peripherals = 1, - /obj/item/circuitboard/mecha/durand/targeting = 1, + /obj/item/circuitboard/mecha/odysseus/main = 25, + /obj/item/circuitboard/mecha/odysseus/peripherals = 25, + /obj/item/circuitboard/mecha/gygax/main = 20, + /obj/item/circuitboard/mecha/gygax/peripherals = 20, + /obj/item/circuitboard/mecha/gygax/targeting = 20, + /obj/item/circuitboard/mecha/durand/main = 20, + /obj/item/circuitboard/mecha/durand/peripherals = 20, + /obj/item/circuitboard/mecha/durand/targeting = 20, ) //COMPUTER @@ -222,13 +219,10 @@ /obj/item/circuitboard/computer/arcade/orion_trail = 5, /obj/item/circuitboard/computer/atmos_alert = 5, /obj/item/circuitboard/computer/card = 5, - /obj/item/circuitboard/computer/cloning = 5, - /obj/item/circuitboard/computer/communications = 5, /obj/item/circuitboard/computer/launchpad_console = 5, /obj/item/circuitboard/computer/mech_bay_power_console = 5, /obj/item/circuitboard/computer/pandemic = 5, /obj/item/circuitboard/computer/powermonitor/secret = 5, - /obj/item/circuitboard/computer/prototype_cloning = 5, /obj/item/circuitboard/computer/stationalert = 5, /obj/item/circuitboard/computer/teleporter = 5, /obj/item/circuitboard/computer/operating = 5, @@ -239,7 +233,6 @@ /obj/effect/spawner/random/circuit/computer/rare loot = list( /obj/item/circuitboard/computer/cargo = 5, - /obj/item/circuitboard/computer/communications = 5, /obj/item/circuitboard/computer/shuttle/helm = 5, /obj/item/circuitboard/computer/med_data = 5, ) diff --git a/code/game/objects/effects/spawners/random/waste_planet.dm b/code/game/objects/effects/spawners/random/waste_planet.dm index 1f416ed02007..ec4b40e35ab0 100644 --- a/code/game/objects/effects/spawners/random/waste_planet.dm +++ b/code/game/objects/effects/spawners/random/waste_planet.dm @@ -116,6 +116,7 @@ /obj/item/stock_parts/manipulator/nano, /obj/item/stock_parts/micro_laser/high, /obj/item/stock_parts/matter_bin/adv, + /obj/item/stock_parts/cell/super/empty, ) spawn_loot_count = 1 spawn_loot_chance = 100 @@ -127,6 +128,7 @@ /obj/item/stock_parts/manipulator/pico, /obj/item/stock_parts/micro_laser/ultra, /obj/item/stock_parts/matter_bin/super, + /obj/item/stock_parts/cell/hyper/empty, ) @@ -137,6 +139,7 @@ /obj/item/stock_parts/manipulator/femto, /obj/item/stock_parts/micro_laser/quadultra, /obj/item/stock_parts/matter_bin/bluespace, + /obj/item/stock_parts/cell/bluespace/empty, ) From fc94ac544f542a8b6d729409a486dea4bd26b4d6 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 17:17:09 -0600 Subject: [PATCH 057/118] Automatic changelog generation for PR #4003 [ci skip] --- html/changelogs/AutoChangeLog-pr-4003.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4003.yml diff --git a/html/changelogs/AutoChangeLog-pr-4003.yml b/html/changelogs/AutoChangeLog-pr-4003.yml new file mode 100644 index 000000000000..94801ea995a8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4003.yml @@ -0,0 +1,4 @@ +author: firebudgy +changes: + - {balance: Loot adjustments on waste planets.} +delete-after: true From 0d0998c30d5cf993d843f356eff4218b8358b045 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 00:59:35 +0000 Subject: [PATCH 058/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3736.yml | 9 ------- html/changelogs/AutoChangeLog-pr-3890.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3895.yml | 7 ------ html/changelogs/AutoChangeLog-pr-3939.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3946.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3978.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3985.yml | 4 --- html/changelogs/AutoChangeLog-pr-3998.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4003.yml | 4 --- html/changelogs/AutoChangeLog-pr-4022.yml | 4 --- html/changelogs/archive/2025-01.yml | 30 +++++++++++++++++++++++ 11 files changed, 30 insertions(+), 53 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3736.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3890.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3895.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3939.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3946.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3978.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3985.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3998.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4003.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4022.yml diff --git a/html/changelogs/AutoChangeLog-pr-3736.yml b/html/changelogs/AutoChangeLog-pr-3736.yml deleted file mode 100644 index cfe5dfef845e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3736.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: Erikafox -changes: - - {rscadd: Scopes!!!} - - {rscadd: All guns now have an implicit ability to aim down sights.} - - {rscadd: aiming now slows you down.} - - {bugfix: 'fixes ported from /tg/: projectiles no longer sail into the ether when - you fire them at a distance'} - - {bugfix: aiming is now less jank} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3890.yml b/html/changelogs/AutoChangeLog-pr-3890.yml deleted file mode 100644 index 1667f04d4e8e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3890.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Martinpachu -changes: - - {rscdel: 'Removed certain screwdrivers, as they are no longer needed for reloading - energy weapons.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3895.yml b/html/changelogs/AutoChangeLog-pr-3895.yml deleted file mode 100644 index 685278277f54..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3895.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Erikafox -changes: - - {balance: Temperature Mechanics have been partially reverted. Please report any - weirdness} - - {balance: Temperature now defaults to respecting insulation instead of ignoring - it.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3939.yml b/html/changelogs/AutoChangeLog-pr-3939.yml deleted file mode 100644 index e29c0feb2043..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3939.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Erikafox -changes: - - {rscadd: The asteroid outpost in the region has been somewhat renovated.} - - {rscadd: Outposts now stock a variety of medpens in a small medical area.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3946.yml b/html/changelogs/AutoChangeLog-pr-3946.yml deleted file mode 100644 index 7ff33cce4085..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3946.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Apogee-dev -changes: - - {code_imp: Renamed the Gygax and Odysseus and updated their lore} - - {rscadd: Dark Gygax (now 515 EX) has better efficiency when overloading its legs.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3978.yml b/html/changelogs/AutoChangeLog-pr-3978.yml deleted file mode 100644 index 85280b4e985d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3978.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: firebudgy -changes: - - {balance: Radiation no longer horribly mutates your DNA to make you Swedish. It - still causes cancer.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3985.yml b/html/changelogs/AutoChangeLog-pr-3985.yml deleted file mode 100644 index d336be0598c1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3985.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Erikafox -changes: - - {balance: 'goldgrubs, fugu, and basilisks are now marginally less immune to bullets.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3998.yml b/html/changelogs/AutoChangeLog-pr-3998.yml deleted file mode 100644 index 3359b5b3b70a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3998.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: zimon9 -changes: - - {code_imp: modifies the access requirements to the wrecker's equipment room aboard - the Derecho so that the Foreman can access it} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4003.yml b/html/changelogs/AutoChangeLog-pr-4003.yml deleted file mode 100644 index 94801ea995a8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4003.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: firebudgy -changes: - - {balance: Loot adjustments on waste planets.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4022.yml b/html/changelogs/AutoChangeLog-pr-4022.yml deleted file mode 100644 index 1ce5bdf8d2d3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4022.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: SomeguyManperson -changes: - - {bugfix: radioactive barrels are now 4k HD again} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index 4a24f6db40db..f92e9909176c 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -97,3 +97,33 @@ generalthrax: - rscadd: Improved Elder airlock and added a few small things to the Elder (Animal pen, cargo bay area, more tobacco, eggs), and shifted docking ports around. +2025-01-18: + Apogee-dev: + - code_imp: Renamed the Gygax and Odysseus and updated their lore + - rscadd: Dark Gygax (now 515 EX) has better efficiency when overloading its legs. + Erikafox: + - balance: Temperature Mechanics have been partially reverted. Please report any + weirdness + - balance: Temperature now defaults to respecting insulation instead of ignoring + it. + - balance: goldgrubs, fugu, and basilisks are now marginally less immune to bullets. + - rscadd: Scopes!!! + - rscadd: All guns now have an implicit ability to aim down sights. + - rscadd: aiming now slows you down. + - bugfix: 'fixes ported from /tg/: projectiles no longer sail into the ether when + you fire them at a distance' + - bugfix: aiming is now less jank + - rscadd: The asteroid outpost in the region has been somewhat renovated. + - rscadd: Outposts now stock a variety of medpens in a small medical area. + Martinpachu: + - rscdel: Removed certain screwdrivers, as they are no longer needed for reloading + energy weapons. + SomeguyManperson: + - bugfix: radioactive barrels are now 4k HD again + firebudgy: + - balance: Loot adjustments on waste planets. + - balance: Radiation no longer horribly mutates your DNA to make you Swedish. It + still causes cancer. + zimon9: + - code_imp: modifies the access requirements to the wrecker's equipment room aboard + the Derecho so that the Foreman can access it From cfa5b14e8a50790c9ee8cb706966d1ce62ce7df9 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Fri, 17 Jan 2025 20:00:55 -0800 Subject: [PATCH 059/118] Factional Cargo: Magazines, I Love War Edition (#3989) ## About The Pull Request Adds the Firestorm Pan Magazine (apogee request), Bulldog Drum Magazine (12 rounds over 8), Boomslang 10rnd Magazine and SKM Extended Magazine (effectively two magazines in one) to factional cargo. ## Why It's Good For The Game Adds another way to upgrade without totally breaking the balance, as most of these are only small increases in ammo or the equivalent of two magazines in one, and have been priced appropriately. This also accounts for the cost it would take to refill these magazines, which effectively doubles the cost in some cases. Most of these being as expensive as they are should also make sure they're thought about before purchasing. ## Changelog :cl: add: SKM Extended Magazine, Bulldog Drum Magazine, Boomslang 10rnd Magazine and Firestorm Pan Magazine to factional cargo. /:cl: --- code/modules/cargo/packs/gun.dm | 2 +- code/modules/cargo/packs/magazines.dm | 34 +++++++++++++++++-- .../boxes_magazines/external/rifle.dm | 3 ++ .../boxes_magazines/external/smg.dm | 3 ++ .../manufacturer/scarborough/ballistics.dm | 3 ++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 2f1e19daab6e..7681a92e286a 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -657,7 +657,7 @@ faction = /datum/faction/syndicate/scarborough_arms /datum/supply_pack/gun/boomslang10 - name = "Boomslang-10 Sniper Rifle Crate" + name = "MSR-90 'Boomslang' Sniper Rifle Crate" desc = "Contains a military variant of the Boomslang Sniper rifle equipped with an 8x sniper scope, for licenesed buyers only. Chambered in the powerful 6.5x57mm CLIP." cost = 4500 contains = list(/obj/item/storage/guncase/boomslangmilitary) diff --git a/code/modules/cargo/packs/magazines.dm b/code/modules/cargo/packs/magazines.dm index 301f771f79b4..062d1efe8101 100644 --- a/code/modules/cargo/packs/magazines.dm +++ b/code/modules/cargo/packs/magazines.dm @@ -49,12 +49,19 @@ faction = /datum/faction/srm /datum/supply_pack/magazine/firestorm_mag - name = "Firestorm Magazine Crate" + name = "Firestorm Stick Magazine Crate" desc = "Contains a 28-round magazine for the Hunter's Pride Firestorm SMG." contains = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/empty) cost = 300 faction = /datum/faction/srm +/datum/supply_pack/magazine/firestorm_mag + name = "Firestorm Pan Magazine Crate" + desc = "Contains a 50-round pan magazine for the Hunter's Pride Firestorm SMG." + contains = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/pan/empty) + cost = 1000 + faction = /datum/faction/srm + /* Serene Sporting */ @@ -158,6 +165,14 @@ cost = 750 faction = /datum/faction/syndicate/scarborough_arms +/datum/supply_pack/magazine/boomslang_mag_extended + name = "MSR-90 'Boomslang' Magazine Crate" + desc = "Contains a 6.5 CLIP magazine for the Boomslang rifle platform, with a capacity of ten rounds." + contains = list(/obj/item/ammo_box/magazine/boomslang/empty) + cost = 1500 + faction = /datum/faction/syndicate/scarborough_arms + + /* CM Lancaster */ /datum/supply_pack/magazine/cm23_mag @@ -203,6 +218,15 @@ contains = list(/obj/item/ammo_box/magazine/skm_762_40/empty) cost = 500 +/datum/supply_pack/magazine/skm_ammo_extended + name = "SKM Extended Magazine Crate" + desc = "Contains a 7.62x40mm magazine for the SKM rifles, with a capacity of fourty rounds." + contains = list(/obj/item/ammo_box/magazine/skm_762_40/extended/empty) + cost = 1250 + faction = /datum/faction/inteq + faction_discount = 0 + faction_locked = TRUE + /datum/supply_pack/magazine/f4_mag name = "F4 Magazine Crate" desc = "Contains a .308 magazine for SsG-04 and CM-F4 platform rifles, with a capacity of ten rounds." @@ -282,12 +306,18 @@ /* Shotguns */ /datum/supply_pack/magazine/bulldog - name = "Bulldog Magazine Crate" + name = "Bulldog Box Magazine Crate" desc = "Contains an 8-round 12ga box magazine for the Bulldog weapons platform." contains = list(/obj/item/ammo_box/magazine/m12g_bulldog/empty) cost = 750 faction = /datum/faction/syndicate/scarborough_arms +/datum/supply_pack/magazine/bulldog_12 + name = "Bulldog Drum Magazine Crate" + desc = "Contains a 12-round 12ga drum magazine for the Bulldog weapons platform." + contains = list(/obj/item/ammo_box/magazine/m12g_bulldog/drum/empty) + cost = 1500 + faction = /datum/faction/syndicate/scarborough_arms /* energy weapons */ diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 02633e88f975..533f5d171a3f 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -45,6 +45,9 @@ icon_state = "skm_extended_mag-1" max_ammo = 40 +/obj/item/ammo_box/magazine/skm_762_40/extended/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/skm_762_40/drum name = "assault rifle drum (7.62x40mm CLIP)" desc = "A 75-round drum for the 7.62x40mm CLIP variants of the SKM assault rifle family. These rounds do good damage with good armor penetration." diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index ef6568b6ef90..6840f1d98eef 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -111,3 +111,6 @@ /obj/item/ammo_box/magazine/c45_firestorm_mag/pan/update_icon_state() //Causes the mag to NOT inherit the parent's update_icon oooh the misery . = ..() icon_state = "firestorm_pan" + +/obj/item/ammo_box/magazine/c45_firestorm_mag/pan/empty + start_empty = TRUE diff --git a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm index d639f7a5f8c5..bbf37bfa9d00 100644 --- a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm @@ -594,6 +594,9 @@ NO_MAG_GUN_HELPER(automatic/marksman/boomslang/indie) max_ammo = 10 multiple_sprites = AMMO_BOX_PER_BULLET +/obj/item/ammo_box/magazine/boomslang/empty + start_empty = TRUE + /obj/item/ammo_box/magazine/boomslang/short name = "\improper Boomslang Magazine (6.5x57mm CLIP)" desc = "A 5-round box magazine for Boomslang sniper rifles. These rounds deal amazing damage and can pierce protective equipment, excluding armored vehicles." From e37549c95176f8435c38a502ed8cbdf880d26e48 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Jan 2025 22:11:24 -0600 Subject: [PATCH 060/118] Automatic changelog generation for PR #3989 [ci skip] --- html/changelogs/AutoChangeLog-pr-3989.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3989.yml diff --git a/html/changelogs/AutoChangeLog-pr-3989.yml b/html/changelogs/AutoChangeLog-pr-3989.yml new file mode 100644 index 000000000000..1c5b90d8dd59 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3989.yml @@ -0,0 +1,5 @@ +author: firebudgy +changes: + - {rscadd: 'SKM Extended Magazine, Bulldog Drum Magazine, Boomslang 10rnd Magazine + and Firestorm Pan Magazine to factional cargo.'} +delete-after: true From 29a3c99a4f7fee684db3c2b926e59f0bea4defa1 Mon Sep 17 00:00:00 2001 From: Burning02 <141873051+Burning02@users.noreply.github.com> Date: Sat, 18 Jan 2025 04:44:37 -0500 Subject: [PATCH 061/118] Adds the Banshee-class Salvage Clipper [Hardliner] (#3761) ## About The Pull Request Adds the Banshee-class Salvage Clipper to the game for the Hardliner faction in-game as pictured below: ![Screenshot 2024-11-28 141823](https://github.com/user-attachments/assets/5d568ade-287e-4fdc-9aba-7beb2d9d4aba)
StrongDMM screenshots Screenshot with areas ![2024-11-28 14 09 05](https://github.com/user-attachments/assets/37f2b4eb-cc52-48d1-ae34-d140e335ce13) Screenshot without areas ![2024-11-28 14 09 03](https://github.com/user-attachments/assets/5a02c7f4-11a4-48bc-bb46-f7da2b026fa5)
_A drastic refit of an ICW-era Cybersun yacht into a salvage vessel. While the Banshee retains most of the original exterior, its interior houses an exosuit-based Hardliner salvage team and all the facilities they could need. Though somewhat dated, it functions well as a sleeper ship that could easily be mistaken for any other civilian vessel._ Description revised by @Apogee-dev ## Why It's Good For The Game This adds a new vessel for a faction lacking in not only player spawnable vessels, but also small ships. The only currently available Hardliner vessel (Komodo) was too large for the average Komodo crew of 4, with either semi-important roles missing crew (Engineer, medic, or in some cases 2IC's), or the majority of the crew being one role (Deckhand, trooper). ## Changelog :cl: add: Adds the Banshee-class Salvage Clipper as a playable Hardliner vessel /:cl: --- .../configs/syndicate_hardliners_banshee.json | 43 + .../syndicate_hardliners_banshee.dmm | 3659 +++++++++++++++++ 2 files changed, 3702 insertions(+) create mode 100644 _maps/configs/syndicate_hardliners_banshee.json create mode 100644 _maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm diff --git a/_maps/configs/syndicate_hardliners_banshee.json b/_maps/configs/syndicate_hardliners_banshee.json new file mode 100644 index 000000000000..e5b3a529fe60 --- /dev/null +++ b/_maps/configs/syndicate_hardliners_banshee.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", + "faction": "/datum/faction/syndicate/hardliners", + "prefix": "ISV", + "map_name": "Y450-H Banshee-class Salvage Clipper", + "namelists": [ + "GORLEX", + "NATURAL_AGGRESSIVE", + "BEASTS", + "WEAPONS" + ], + "map_short_name": "Banshee-Class", + "description": "A drastic refit of an ICW-era Cybersun yacht into a salvage vessel. While the Banshee retains most of the original exterior, its interior houses an exosuit-based Hardliner salvage team and all the facilities they could need. Though somewhat dated, it functions well as a sleeper ship that could easily be mistaken for any other civilian vessel.", + "tags": [ + "Salvage", + "Combat", + "Engineering", + "Generalist" + ], + "map_path": "_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm", + "map_id": "syndicate_hardliners_banshee", + "limit": 1, + "job_slots": { + "Captain": { + "outfit": "/datum/outfit/job/syndicate/captain/gorlex", + "officer": true, + "slots": 1 + }, + "Mechanic": { + "outfit": "/datum/outfit/job/syndicate/engineer/gorlex", + "slots": 1 + }, + "Wrecker": { + "outfit": "/datum/outfit/job/syndicate/miner/gorlex", + "slots": 2 + }, + "Junior Wrecker": { + "outfit": "/datum/outfit/job/syndicate/assistant/gorlex", + "slots": 1 + } + }, + "enabled": true +} diff --git a/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm b/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm new file mode 100644 index 000000000000..64ef8e0fd1e9 --- /dev/null +++ b/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm @@ -0,0 +1,3659 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aY" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"bo" = ( +/obj/machinery/atmospherics/components/unary/shuttle/fire_heater, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Bansheeenginebay" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"br" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 1; + id = "Bansheecargofield"; + locked = 1 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Bansheecargodoor" + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"bu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"bv" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_target, +/obj/machinery/door/airlock/external, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"bI" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + id = "Bansheecargofield"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/oil/slippery, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Bansheecargodoor" + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"bO" = ( +/obj/machinery/door/airlock/public/glass{ + dir = 4; + name = "Canteen"; + req_ship_access = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"bT" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/bridge) +"cZ" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"dk" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/transparent/black/corner{ + dir = 1 + }, +/obj/machinery/button/shieldwallgen{ + id = "Bansheecargofield"; + dir = 2; + pixel_y = 19; + pixel_x = 1 + }, +/obj/machinery/button/door{ + id = "Bansheecargodoor"; + name = "Cargo bay doors"; + dir = 2; + pixel_y = 20; + pixel_x = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"dG" = ( +/obj/machinery/door/airlock/freezer{ + name = "Custodial Closet" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"ef" = ( +/obj/structure/table, +/obj/machinery/computer/helm/viewscreen/directional/south, +/obj/item/paper_bin{ + pixel_y = 5; + pixel_x = 8 + }, +/obj/item/flashlight/lamp{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/machinery/jukebox/boombox{ + pixel_x = -10; + pixel_y = -7; + layer = 3.1 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = 18; + pixel_y = 8 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 18; + pixel_y = 2 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/canteen) +"eh" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -19; + pixel_y = -7 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/cryo) +"ek" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"eu" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"eE" = ( +/obj/structure/catwalk, +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/obj/docking_port/mobile{ + callTime = 250; + dir = 2; + launch_status = 0; + name = "Salvage Clipper"; + port_direction = 8; + preferred_direction = 4 + }, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"eK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew) +"eV" = ( +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/bench/grey/directional/south{ + color = "#ABB0B8" + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"fz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east, +/obj/item/radio/intercom/directional/south, +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/item/trash/can, +/obj/item/trash/candy, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"fA" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/cryo) +"fW" = ( +/obj/machinery/porta_turret/ship/syndicate/weak{ + id = "Bansheeturrets" + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/external/dark) +"gf" = ( +/obj/machinery/power/terminal, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-9" + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"gN" = ( +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/machinery/light/small/directional/east, +/obj/structure/closet/crate/bin, +/obj/item/trash/candy, +/obj/item/trash/popcorn, +/obj/effect/spawner/random/trash/cigbutt, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/garbage, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/corner/opaque/syndiered/border{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"hC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"hK" = ( +/obj/machinery/computer/helm{ + dir = 8 + }, +/obj/item/radio/intercom/wideband/directional/east, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"hT" = ( +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/structure/chair/handrail{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/red{ + pixel_y = 17; + pixel_x = 6 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"id" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/white, +/turf/open/floor/plating, +/area/ship/hallway/central) +"ir" = ( +/obj/structure/noticeboard{ + pixel_y = 25 + }, +/obj/effect/turf_decal/spline/plain/opaque/syndiered{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/cryo) +"iz" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/canteen) +"iG" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered, +/obj/effect/turf_decal/corner/opaque/syndiered/half{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"iH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 8 + }, +/area/ship/engineering) +"iT" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/central) +"iU" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 10 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"iY" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew) +"jp" = ( +/obj/structure/railing{ + dir = 1; + layer = 3.09 + }, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-6" + }, +/obj/effect/decal/cleanable/plasma, +/obj/machinery/power/port_gen/pacman/super, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"jq" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"jr" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 19; + pixel_y = -7 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/closet/firecloset/wall/directional/east{ + pixel_y = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"kj" = ( +/obj/machinery/door/airlock/external/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"ko" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering) +"kw" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/item/wrench/crescent{ + pixel_x = -16; + pixel_y = 17 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"kF" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ship/cargo) +"kP" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/half, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"lh" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/cargo) +"lA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/number/random{ + pixel_y = 32 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/item/toy/plush/tali{ + pixel_y = 3; + pixel_x = 3 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"lD" = ( +/obj/structure/table, +/obj/item/storage/fancy/cigarettes/cigpack_cannabis{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/item/storage/toolbox/syndicate{ + pixel_y = 8 + }, +/obj/machinery/cell_charger, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/analyzer{ + pixel_x = 8 + }, +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"lP" = ( +/obj/effect/turf_decal/industrial/traffic/cee{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/item/radio/intercom/directional/north, +/obj/structure/closet/crate/engineering{ + name = "Materials crate" + }, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass/twenty, +/obj/item/stack/sheet/plastic/five, +/obj/item/stack/sheet/mineral/wood{ + name = "Emergency Ore-box planks"; + desc = "Emergency planks for when you did get assigned with an Ore-box." + }, +/obj/item/stack/sheet/mineral/wood{ + name = "Emergency Ore-box planks"; + desc = "Emergency planks for when you did get assigned with an Ore-box." + }, +/obj/item/stack/sheet/mineral/wood{ + name = "Emergency Ore-box planks"; + desc = "Emergency planks for when you did get assigned with an Ore-box." + }, +/obj/item/stack/sheet/mineral/wood{ + name = "Emergency Ore-box planks"; + desc = "Emergency planks for when you did get assigned with an Ore-box." + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"lS" = ( +/obj/machinery/advanced_airlock_controller{ + pixel_y = 24 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/chair/handrail{ + dir = 4 + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -28; + pixel_y = 10 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"lV" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/clothing/suit/space/syndicate/black/engie, +/obj/item/clothing/head/helmet/space/syndicate/black/engie, +/obj/item/clothing/shoes/magboots/syndie, +/obj/item/clothing/mask/gas/syndicate, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"mk" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/effect/turf_decal/industrial/fire/cee{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 1 + }, +/obj/item/clothing/suit/space/syndicate/black/green, +/obj/item/clothing/head/helmet/space/syndicate/black/green, +/obj/item/clothing/mask/gas/syndicate, +/obj/structure/platform/industrial{ + dir = 8 + }, +/obj/structure/sign/poster/syndicate/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/cargo) +"mn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"mV" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"mX" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/effect/turf_decal/spline/fancy/transparent/black/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"ny" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/button/door{ + id = "Bansheeenginebay"; + name = "Engine shutters"; + dir = 1; + pixel_x = -10; + pixel_y = -20 + }, +/obj/machinery/button/door{ + dir = 1; + id = "Bansheeenginewindow"; + name = "Exhaust window"; + pixel_x = 9; + pixel_y = -20 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"nD" = ( +/obj/structure/mirror{ + pixel_y = 30 + }, +/obj/structure/sink{ + pixel_y = 20 + }, +/obj/machinery/shower{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/hole, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"nK" = ( +/obj/structure/closet/secure_closet/armorycage{ + anchored = 1; + can_be_unanchored = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/industrial/fire/cee{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 1 + }, +/obj/item/ammo_box/magazine/m57_39_asp, +/obj/item/ammo_box/magazine/m57_39_asp, +/obj/item/ammo_box/magazine/m57_39_asp, +/obj/item/ammo_box/magazine/m57_39_asp, +/obj/item/ammo_box/magazine/m57_39_asp, +/obj/item/ammo_box/magazine/m57_39_asp, +/obj/item/clothing/suit/armor/hardliners, +/obj/item/clothing/suit/armor/hardliners, +/obj/item/clothing/head/helmet/hardliners, +/obj/item/clothing/head/helmet/hardliners, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"or" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/item/paper_bin, +/obj/item/flashlight/lamp{ + pixel_x = -7; + pixel_y = 16 + }, +/obj/item/pen/fourcolor, +/obj/item/folder{ + pixel_y = 6; + pixel_x = 12 + }, +/obj/item/folder/syndicate{ + pixel_x = 12 + }, +/obj/machinery/button/door{ + id = "Bansheeprivacyshutters"; + name = "Privacy shutters"; + dir = 1; + pixel_x = 1; + pixel_y = -20; + req_access_txt = "20" + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -9; + pixel_y = -19 + }, +/obj/item/pen/fountain/captain{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/stamp/captain{ + pixel_y = 3; + pixel_x = -9 + }, +/obj/item/stamp/cybersun{ + pixel_x = -9; + pixel_y = -3 + }, +/obj/structure/table, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"os" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"oF" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Privacy Shutters"; + id = "Bansheeprivacyshutters" + }, +/turf/open/floor/plating, +/area/ship/bridge) +"oR" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/cargo) +"oT" = ( +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"oZ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 9 + }, +/obj/item/clothing/suit/hazardvest/hardliners, +/obj/item/clothing/head/hardhat/hardliners, +/obj/item/clothing/accessory/armband/cargo, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/gloves/explorer, +/obj/item/radio/headset/alt, +/obj/structure/closet/secure_closet/wall/directional/west{ + icon_state = "cargo_wall"; + name = "Wreckers closet"; + req_access_txt = "48" + }, +/obj/item/clothing/under/syndicate/hardliners/jumpsuit, +/obj/effect/decal/cleanable/dirt, +/obj/item/melee/axe/sledgehammer, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"pf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/floor{ + pixel_x = -8 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"ph" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/opaque/syndiered/border, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"pk" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/isf_small/right{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"pM" = ( +/turf/template_noop, +/area/template_noop) +"qa" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/obj/structure/chair, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"qd" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer4{ + dir = 5 + }, +/obj/structure/platform/industrial{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"qk" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 6 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/syndi/hl, +/obj/item/clothing/mask/gas/syndicate/voicechanger, +/obj/machinery/light/small/directional/east, +/obj/item/tank/jetpack/carbondioxide, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"qq" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 6 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"qF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"qM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/floor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"rb" = ( +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/structure/chair/handrail, +/obj/effect/turf_decal/corner/opaque/syndiered/border{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"rc" = ( +/obj/machinery/portable_atmospherics/canister/hydrogen, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"rd" = ( +/obj/structure/closet/secure_closet/freezer/fridge{ + populate = 0 + }, +/obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/milk, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/item/reagent_containers/food/snacks/meat/slab, +/obj/item/reagent_containers/food/snacks/meat/slab, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/canteen) +"rj" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered, +/obj/machinery/light/floor{ + pixel_y = -5 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/half{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/half{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"rq" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/landmark/start/shaft_miner, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"ru" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories"; + req_ship_access = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew) +"rv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/food/egg_smudge, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"rG" = ( +/obj/machinery/computer/helm/viewscreen/directional/south, +/obj/structure/platform/industrial{ + dir = 8 + }, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"sd" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/obj/structure/chair, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"sV" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/structure/chair/handrail{ + dir = 1 + }, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/border, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"sY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/white, +/turf/open/floor/plating, +/area/ship/hallway/central) +"tO" = ( +/obj/machinery/door/airlock/freezer{ + name = "Bathroom"; + id_tag = "Bansheebathroomdoor" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock_note_placer{ + text = "Some bastard threw up all over the toilet. I'd be careful if I was you" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"tR" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/layer4, +/obj/structure/platform/industrial/corner{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/sign/poster/contraband/gec{ + pixel_y = 32 + }, +/obj/structure/extinguisher_cabinet/directional/west{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"uv" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"uG" = ( +/obj/structure/catwalk, +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"uH" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/button/door{ + id = "Bansheeairlockwindow"; + name = "Airlock shutters"; + pixel_x = -5; + pixel_y = -20; + dir = 8 + }, +/obj/item/clothing/suit/space/syndicate/surplus, +/obj/item/clothing/head/helmet/space/syndicate/surplus, +/obj/item/tank/internals/oxygen/red, +/obj/item/clothing/mask/breath, +/obj/structure/closet/emcloset/wall/directional/east, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"vb" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters{ + id = "Bansheeenginewindow" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/engineering) +"vg" = ( +/obj/structure/catwalk, +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/obj/structure/chair/handrail, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"vQ" = ( +/obj/machinery/autolathe, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"vU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"vV" = ( +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/chair/handrail, +/obj/structure/sign/poster/rilena/random{ + pixel_y = 32 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/border{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"wP" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"wR" = ( +/obj/machinery/power/ship_gravity, +/obj/structure/platform/industrial/corner{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"xe" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/ship/engineering) +"xF" = ( +/obj/structure/guncloset, +/obj/effect/turf_decal/industrial/fire/cee, +/obj/effect/turf_decal/siding/thinplating/dark/end, +/obj/machinery/airalarm/directional/west, +/obj/item/gun/ballistic/automatic/pistol/asp/no_mag, +/obj/item/gun/ballistic/automatic/pistol/asp/no_mag, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"xS" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/industrial/caution/red{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"yo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"yE" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/button/door{ + id = "Bansheebathroomdoor"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 20; + specialfunctions = 4; + pixel_x = -7 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"yF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/number/random{ + pixel_y = 32 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"yV" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/machinery/airalarm/directional/south, +/obj/structure/chair/bench/grey/directional/north{ + color = "#ABB0B8" + }, +/obj/effect/turf_decal/corner/opaque/syndiered/border, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"ze" = ( +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"zm" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 9 + }, +/obj/machinery/computer/crew{ + icon_state = "computer-left" + }, +/obj/machinery/button/door{ + id = "Bansheebridgewindow"; + name = "Bridge windows"; + pixel_y = 20 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"zr" = ( +/obj/structure/catwalk, +/obj/structure/chair/handrail, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"Ae" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"An" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered{ + dir = 1 + }, +/obj/machinery/light/floor{ + pixel_y = 5 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/half, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Ao" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/cargo) +"At" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/food/flour, +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"Bb" = ( +/obj/machinery/porta_turret/ship/syndicate/weak{ + dir = 9; + id = "Bansheeturrets" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Bi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Privacy Shutters"; + id = "Bansheeprivacyshutters" + }, +/obj/machinery/door/airlock/command/glass{ + req_access_txt = "20"; + name = "Bridge" + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"Bn" = ( +/obj/effect/turf_decal/spline/fancy/transparent/black{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"BV" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters{ + id = "Bansheeenginewindow" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/engineering) +"Cd" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"CC" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering) +"CN" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"CV" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/crew/cryo) +"CZ" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/hallway/central) +"Ds" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/bench/grey/directional/south{ + color = "#ABB0B8" + }, +/obj/effect/turf_decal/corner/opaque/syndiered/border{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"Du" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 5 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"DU" = ( +/obj/effect/turf_decal/techfloor, +/obj/structure/chair/handrail{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"DY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) +"Ee" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"EG" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + piping_layer = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"Fv" = ( +/obj/structure/platform/industrial{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/effect/turf_decal/industrial/fire/cee, +/obj/effect/turf_decal/siding/thinplating/dark/end, +/obj/item/clothing/suit/space/syndicate/black/green, +/obj/item/clothing/head/helmet/space/syndicate/black/green, +/obj/item/clothing/mask/gas/syndicate, +/obj/structure/railing{ + layer = 3.09 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/cargo) +"FE" = ( +/obj/item/clothing/under/syndicate/hardliners, +/obj/item/clothing/under/syndicate/hardliners, +/obj/item/clothing/shoes/jackboots{ + pixel_y = -10; + pixel_x = -2 + }, +/obj/item/clothing/shoes/jackboots{ + pixel_y = -10; + pixel_x = -2 + }, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/head/beret/black{ + pixel_y = 9; + pixel_x = 8 + }, +/obj/item/clothing/head/soft/black{ + pixel_x = -11; + pixel_y = 9 + }, +/obj/item/clothing/head/soft/black{ + pixel_x = -11; + pixel_y = 9 + }, +/obj/item/storage/backpack/messenger, +/obj/item/storage/backpack/messenger, +/obj/item/storage/backpack/satchel, +/obj/item/storage/backpack/satchel, +/obj/machinery/light/small/directional/west, +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/security/hardliners, +/obj/item/clothing/suit/hooded/wintercoat/security/hardliners, +/obj/item/clothing/suit/hooded/wintercoat/security/hardliners, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew) +"FP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"FX" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 7; + height = 15; + name = "Banshee airlock dock"; + width = 30 + }, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"Ga" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"Gc" = ( +/obj/structure/sign/number/random{ + pixel_y = 32 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/mug/tea{ + pixel_y = 6; + pixel_x = 9 + }, +/obj/item/food/butterbiscuit{ + pixel_y = -2; + pixel_x = 5 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Gi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew) +"Go" = ( +/obj/structure/bed/bunk, +/obj/structure/bed/bunk/top, +/obj/structure/curtain/cloth/grey{ + color = "#5c131b"; + name = "blood-red curtains" + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew) +"Gs" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/machinery/door/poddoor/shutters{ + id = "Bansheebridgewindow" + }, +/obj/structure/grille, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/bridge) +"Gy" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/structure/chair/handrail, +/obj/effect/turf_decal/arrows/red{ + pixel_y = -17; + pixel_x = 6; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"GC" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/structure/chair/handrail{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/border, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"Hr" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/structure/chair/handrail, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Hs" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/engineering) +"Hu" = ( +/obj/effect/turf_decal/industrial/traffic/cee{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/structure/closet/crate/secure{ + desc = "A secure crate. This one is particularly large."; + name = "Salvage equipment"; + storage_capacity = 40; + req_access_txt = "48" + }, +/obj/item/pickaxe/drill, +/obj/item/storage/backpack/duffelbag/syndie/c4{ + name = "Demolition charges" + }, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/wrapping, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/storage/firstaid/regular, +/obj/item/storage/box/flares, +/obj/item/storage/box/flares, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"HB" = ( +/obj/machinery/blackbox_recorder, +/obj/effect/turf_decal/industrial/fire/cee{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + req_access_txt = "20" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"HG" = ( +/obj/machinery/door/airlock/grunge{ + dir = 4; + name = "Landing Bay" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"HJ" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"HM" = ( +/obj/effect/turf_decal/siding{ + color = "#730622" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"Ic" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/bridge) +"Ix" = ( +/obj/machinery/porta_turret/ship/syndicate/weak{ + dir = 1; + id = "Bansheeturrets" + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/external/dark) +"IQ" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Bansheecargodoor" + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"Ja" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/cryo) +"Jd" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/floor{ + pixel_x = -8 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Jm" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"JK" = ( +/obj/item/flashlight/lamp/green{ + pixel_y = 14; + pixel_x = -7 + }, +/obj/machinery/button/door{ + id = "Bansheedormwindow"; + name = "Dormitories shutters"; + pixel_x = -5; + pixel_y = -20; + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/item/reagent_containers/food/drinks/waterbottle{ + pixel_x = 9; + pixel_y = 4 + }, +/obj/structure/table, +/obj/item/toy/plush/rilena{ + pixel_x = -3 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew) +"JW" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters{ + id = "Bansheedormwindow" + }, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/crew) +"Km" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/transparent/black{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Kr" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_x = 7; + pixel_y = 22 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew) +"KF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"KN" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 5 + }, +/obj/structure/closet/syndicate/personal{ + name = "Captain's closet"; + populate = 0 + }, +/obj/item/clothing/under/syndicate/hardliners/officer, +/obj/item/clothing/suit/toggle/armor/vest/hardliners{ + pixel_x = 10; + pixel_y = -5 + }, +/obj/item/clothing/head/hardliners/peaked{ + pixel_x = 10; + pixel_y = 5 + }, +/obj/item/clothing/shoes/combat{ + pixel_y = -7; + pixel_x = -2 + }, +/obj/item/clothing/gloves/combat, +/obj/item/radio/headset/syndicate/alt/captain, +/obj/item/storage/box/ammo/a357, +/obj/item/megaphone, +/obj/item/clothing/under/syndicate/hardliners/jumpsuit, +/obj/item/storage/guncase/pistol/a357, +/obj/machinery/turretid/ship{ + pixel_y = 24; + pixel_x = -7; + id = "Bansheeturrets" + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"KP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/airlock/public{ + name = "Cryogenics"; + req_ship_access = 1; + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"KT" = ( +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/comfy/red/corpo, +/turf/open/floor/plasteel/dark, +/area/ship/crew) +"KX" = ( +/obj/machinery/power/shuttle/engine/fire{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Mf" = ( +/obj/machinery/porta_turret/ship/syndicate/weak{ + dir = 10; + id = "Bansheeturrets" + }, +/obj/structure/cable, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Mr" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/transparent/black{ + dir = 1 + }, +/obj/effect/turf_decal/isf_small/left{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Ms" = ( +/obj/item/paper/guides/jobs/engi/combustion_thruster, +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"MA" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 4; + pixel_y = -19 + }, +/obj/machinery/button/door{ + id = "Bansheeairlockwindow"; + name = "Airlock shutters"; + pixel_x = -5; + pixel_y = -20; + dir = 1 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"MK" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/shaft_miner, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"MT" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/filingcabinet{ + density = 0; + dir = 1; + pixel_x = -10 + }, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate, +/obj/item/lighter/enigma, +/obj/item/spacecash/bundle/c500, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"MU" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"MY" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/item/radio{ + pixel_y = 11; + pixel_x = -10 + }, +/obj/item/radio{ + pixel_y = 11; + pixel_x = -7 + }, +/obj/item/radio{ + pixel_y = 11; + pixel_x = -4 + }, +/obj/item/radio{ + pixel_y = 11 + }, +/obj/item/radio{ + pixel_y = 11; + pixel_x = 4 + }, +/obj/item/radio{ + pixel_y = 11; + pixel_x = 10 + }, +/obj/structure/closet/secure_closet/wall/directional/north, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/flashlight{ + pixel_y = 2; + pixel_x = -12 + }, +/obj/item/flashlight{ + pixel_y = 2; + pixel_x = -8 + }, +/obj/item/flashlight{ + pixel_y = 2; + pixel_x = -4 + }, +/obj/item/flashlight{ + pixel_y = 2 + }, +/obj/item/flashlight{ + pixel_y = 2; + pixel_x = 4 + }, +/obj/item/flashlight{ + pixel_y = 2; + pixel_x = 8 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/cryo) +"Nn" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Nu" = ( +/obj/machinery/computer/cryopod/directional/south, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/cryopod{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/crew/cryo) +"NU" = ( +/obj/structure/table, +/obj/item/toy/cards/deck/syndicate{ + pixel_x = -7 + }, +/obj/machinery/light/directional/south, +/obj/item/reagent_containers/food/drinks/waterbottle{ + pixel_x = -9; + pixel_y = 15 + }, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ + pixel_y = 10 + }, +/obj/item/toy/plush/mora{ + pixel_y = 14; + pixel_x = 10 + }, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 9; + pixel_y = -1 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/canteen) +"NV" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/item/clothing/suit/hazardvest/hardliners, +/obj/item/clothing/head/hardhat/hardliners, +/obj/item/clothing/accessory/armband/cargo, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/gloves/explorer, +/obj/item/radio/headset/alt, +/obj/structure/closet/secure_closet/wall/directional/west{ + icon_state = "cargo_wall"; + name = "Wreckers closet"; + req_access_txt = "48" + }, +/obj/item/clothing/under/syndicate/hardliners/jumpsuit, +/obj/effect/decal/cleanable/dirt, +/obj/item/melee/axe/sledgehammer, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"Oj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/valve/layer2, +/obj/effect/decal/cleanable/oil, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"Ol" = ( +/obj/structure/closet/crate/large{ + name = "APLU construction kit" + }, +/obj/item/circuitboard/mecha/ripley/peripherals, +/obj/item/circuitboard/mecha/ripley/main, +/obj/item/mecha_parts/chassis/ripley, +/obj/item/mecha_parts/part/ripley_torso, +/obj/item/mecha_parts/part/ripley_right_leg{ + pixel_y = -9; + pixel_x = 8 + }, +/obj/item/mecha_parts/part/ripley_left_leg{ + pixel_y = -9; + pixel_x = -8 + }, +/obj/item/mecha_parts/part/ripley_left_arm{ + pixel_x = -12 + }, +/obj/item/mecha_parts/part/ripley_right_arm{ + pixel_x = 12 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/mech_bay_recharge_floor, +/area/ship/cargo) +"Oy" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/fax/syndicate, +/obj/structure/table, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"OQ" = ( +/obj/structure/catwalk, +/turf/open/floor/plating/airless, +/area/ship/external/dark) +"Pf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 5 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"Ps" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/west, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -22; + pixel_y = -9 + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"PB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 6 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/sofa/red/corpo/right{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew) +"Qf" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering) +"Qq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"QA" = ( +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/sofa/red/corpo/left{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew) +"Re" = ( +/obj/structure/rack, +/obj/item/stock_parts/cell/super{ + pixel_x = 9; + pixel_y = 8 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/structure/platform/industrial/corner{ + dir = 4 + }, +/obj/item/mecha_parts/mecha_equipment/salvage_saw{ + pixel_x = 5 + }, +/obj/item/mecha_parts/mecha_equipment/drill, +/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/structure/platform/industrial{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1; + layer = 3.09 + }, +/obj/item/mecha_parts/mecha_equipment/thrusters/ion, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) +"Rm" = ( +/obj/machinery/light/floor, +/obj/structure/chair{ + dir = 8 + }, +/obj/item/toy/plush/sharai{ + pixel_y = 3; + pixel_x = -3 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Rt" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/structure/sign/warning/incident{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"Ru" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/structure/chair/bench/grey/directional/north{ + color = "#ABB0B8" + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/corner/opaque/syndiered/border, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"Rz" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/machinery/light/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/canteen) +"RH" = ( +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/obj/item/pushbroom, +/obj/item/storage/bag/trash, +/obj/structure/closet/wall/white/directional/west{ + name = "Cleaning supplies closet" + }, +/obj/structure/sink{ + dir = 8; + pixel_x = 20 + }, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"RI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/ship/cargo) +"Sc" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/external/dark) +"Sr" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/closet/crate/engineering/electrical, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 28 + }, +/obj/item/stack/sheet/mineral/uranium/ten, +/turf/open/floor/plating, +/area/ship/engineering) +"SD" = ( +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Bansheeenginebay" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"SG" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 1 + }, +/obj/machinery/computer/card{ + icon_state = "computer-middle" + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"SH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/sign/poster/contraband/syndiemoth{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"SR" = ( +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Ta" = ( +/obj/effect/turf_decal/spline/plain/opaque/syndiered, +/obj/machinery/light/floor{ + pixel_y = -5 + }, +/obj/effect/turf_decal/corner/opaque/syndiered/half{ + dir = 1 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"Tc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/white, +/turf/open/floor/plating, +/area/ship/hallway/central) +"Tq" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"TG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew) +"TI" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/emcloset/wall/directional/south, +/obj/effect/turf_decal/corner/opaque/syndiered/border, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"TP" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew) +"UD" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"UH" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer4{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"UL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/holopad/secure{ + pixel_y = 7 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"Vb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"Vu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) +"VD" = ( +/obj/effect/turf_decal/siding{ + color = "#730622"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/corner, +/turf/open/floor/plasteel/mono/white, +/area/ship/hallway/central) +"VO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/isf_small{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Wd" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/sign/number/random{ + pixel_y = 32 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/mug/tea{ + pixel_y = -2; + pixel_x = -9 + }, +/obj/item/food/butterbiscuit{ + pixel_y = 8; + pixel_x = -5 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"WE" = ( +/obj/structure/railing{ + layer = 3.09 + }, +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/platform/industrial{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"Xf" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 5 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"Xg" = ( +/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{ + dir = 5 + }, +/obj/machinery/computer/cargo{ + icon_state = "computer-right" + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"XH" = ( +/obj/structure/marker_beacon{ + picked_color = "Yellow" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) +"XL" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 19; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"XR" = ( +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Bansheeenginebay" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"Yo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/floor, +/obj/effect/landmark/observer_start, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Yv" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + name = "Air to Distro"; + target_pressure = 1000 + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/structure/closet/secure_closet/wall/directional/east{ + icon_state = "cargo_wall"; + name = "Mechanics closet"; + req_access_txt = "11" + }, +/obj/item/clothing/under/syndicate/hardliners/jumpsuit, +/obj/item/clothing/under/syndicate/hardliners, +/obj/item/clothing/suit/hazardvest/hardliners, +/obj/item/clothing/head/hardhat/hardliners, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/shoes/workboots, +/obj/item/radio/headset/alt, +/obj/item/storage/backpack/industrial, +/obj/item/clothing/accessory/armband/engine, +/obj/item/storage/belt/utility, +/obj/item/clothing/under/syndicate/gec, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"YL" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Helm" + }, +/obj/effect/landmark/start/captain, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plasteel/mono/white, +/area/ship/bridge) +"YN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/ship/engineering) +"YZ" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/door/poddoor/shutters{ + id = "Bansheeairlockwindow" + }, +/obj/machinery/door/firedoor/window, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/hallway/central) +"Zq" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering) +"Zr" = ( +/obj/machinery/door/airlock/grunge{ + dir = 4; + name = "Engine Bay"; + req_one_access = list(10,48) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"ZR" = ( +/obj/structure/marker_beacon{ + picked_color = "Burgundy" + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) + +(1,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +"} +(2,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +Zq +cZ +KX +cZ +KX +cZ +Zq +pM +pM +pM +pM +pM +pM +pM +pM +"} +(3,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +Zq +SD +bo +XR +bo +XR +Zq +pM +pM +pM +pM +pM +pM +pM +pM +"} +(4,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +Zq +Sr +ko +CC +Qf +ny +Zq +pM +pM +pM +pM +pM +pM +pM +pM +"} +(5,1,1) = {" +pM +pM +pM +pM +pM +SR +wP +pf +BV +rc +Ms +Nn +Oj +lD +vb +Jd +Ee +SR +pM +pM +pM +pM +pM +"} +(6,1,1) = {" +pM +pM +pM +An +SR +SR +qF +Hs +Zq +Du +kw +YN +mV +lV +Zq +Hs +yF +SR +SR +rj +pM +pM +pM +"} +(7,1,1) = {" +pM +ZR +SR +kP +SR +SR +qF +Zq +tR +qd +WE +iH +jp +Cd +wR +Zq +lA +SR +SR +iG +SR +ze +pM +"} +(8,1,1) = {" +pM +SR +SR +kP +Bb +KF +eu +Zq +EG +UH +Yv +xe +XL +gf +CN +Zq +Wd +KF +Mf +iG +SR +SR +pM +"} +(9,1,1) = {" +pM +SR +SR +kP +SR +SR +SR +iz +iz +iz +iz +Zr +iz +iz +iz +iz +Gc +SR +SR +iG +SR +SR +pM +"} +(10,1,1) = {" +pM +ZR +SR +An +SR +SR +os +iz +rd +Jm +SH +FP +rv +qa +ef +iz +Rm +SR +SR +Ta +SR +ze +pM +"} +(11,1,1) = {" +pM +pM +SR +kP +SR +bT +bT +iz +Rz +At +Vu +vU +Pf +sd +NU +iz +iY +iY +SR +iG +SR +pM +pM +"} +(12,1,1) = {" +pM +pM +SR +kP +bT +bT +HB +iz +iz +iz +jr +Ae +fz +iz +iz +iz +FE +iY +iY +iG +SR +pM +pM +"} +(13,1,1) = {" +pM +pM +pM +kP +Gs +YL +jq +nK +xF +bT +iT +bO +iT +iY +QA +PB +eK +Go +JW +iG +pM +pM +pM +"} +(14,1,1) = {" +pM +pM +pM +An +Gs +hK +Tq +mn +hC +Bi +bu +id +Ps +ru +TP +Gi +TG +Go +JW +Ta +pM +pM +pM +"} +(15,1,1) = {" +pM +pM +pM +pM +Ic +bT +zm +yo +or +bT +rb +sY +sV +iY +Kr +KT +JK +iY +iY +pM +pM +pM +pM +"} +(16,1,1) = {" +pM +pM +pM +pM +pM +bT +SG +UL +Oy +oF +eV +Ga +yV +iY +KP +iY +iY +iY +eE +pM +pM +pM +pM +"} +(17,1,1) = {" +pM +pM +pM +pM +pM +bT +Xg +aY +MT +oF +HM +Ga +ph +fA +ir +eh +Nu +fA +OQ +pM +pM +pM +pM +"} +(18,1,1) = {" +pM +pM +pM +pM +pM +Ic +bT +KN +qk +bT +Ds +Qq +Ru +fA +MY +Ja +fA +CV +OQ +pM +pM +pM +pM +"} +(19,1,1) = {" +pM +pM +pM +pM +pM +pM +Ic +bT +bT +bT +vV +Vb +GC +fA +fA +fA +fA +pM +OQ +pM +pM +pM +pM +"} +(20,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +iT +nD +tO +oT +Tc +VD +dG +RH +iT +vg +pM +uG +pM +pM +pM +pM +"} +(21,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +iT +yE +iT +gN +sY +TI +iT +iT +iT +zr +pM +pM +pM +pM +pM +pM +"} +(22,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +oR +oR +oR +oR +HG +oR +iT +lS +bv +MU +pM +pM +pM +pM +pM +pM +"} +(23,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +oR +vQ +oZ +NV +lh +Rt +kj +uH +YZ +FX +pM +pM +pM +pM +pM +pM +"} +(24,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +Ao +oR +Xf +MK +kF +MA +iT +iT +CZ +MU +pM +pM +pM +pM +pM +pM +"} +(25,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +oR +mk +Fv +RI +Re +rG +oR +pM +uG +pM +pM +pM +pM +pM +pM +"} +(26,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +oR +Bn +mX +uv +UD +qq +oR +pM +pM +pM +pM +pM +pM +pM +pM +"} +(27,1,1) = {" +pM +pM +pM +pM +pM +Sc +ZR +pM +oR +lP +Km +Yo +rq +Ol +oR +pM +ze +Sc +pM +pM +pM +pM +pM +"} +(28,1,1) = {" +pM +pM +pM +pM +pM +Sc +SR +pM +oR +Hu +Mr +VO +pk +iU +oR +pM +SR +Sc +pM +pM +pM +pM +pM +"} +(29,1,1) = {" +pM +pM +pM +pM +pM +Sc +SR +iG +Ao +oR +dk +ek +HJ +oR +Ao +kP +SR +Sc +pM +pM +pM +pM +pM +"} +(30,1,1) = {" +pM +pM +pM +pM +pM +Ix +os +iG +SR +oR +Hr +qM +DU +oR +SR +kP +os +fW +pM +pM +pM +pM +pM +"} +(31,1,1) = {" +pM +pM +pM +pM +pM +Sc +Sc +iG +SR +oR +Gy +xS +hT +oR +SR +kP +Sc +Sc +pM +pM +pM +pM +pM +"} +(32,1,1) = {" +pM +pM +pM +pM +pM +pM +Sc +iG +ZR +oR +bI +IQ +br +oR +ze +kP +Sc +pM +pM +pM +pM +pM +pM +"} +(33,1,1) = {" +pM +pM +pM +pM +pM +pM +Sc +iG +pM +pM +XH +DY +XH +pM +pM +kP +Sc +pM +pM +pM +pM +pM +pM +"} +(34,1,1) = {" +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +pM +"} From 0f18c6529fe67b1688f2690f6c31cd752f7a6632 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 03:55:15 -0600 Subject: [PATCH 062/118] Automatic changelog generation for PR #3761 [ci skip] --- html/changelogs/AutoChangeLog-pr-3761.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3761.yml diff --git a/html/changelogs/AutoChangeLog-pr-3761.yml b/html/changelogs/AutoChangeLog-pr-3761.yml new file mode 100644 index 000000000000..0688441fb819 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3761.yml @@ -0,0 +1,4 @@ +author: Burning02 +changes: + - {rscadd: Adds the Banshee-class Salvage Clipper as a playable Hardliner vessel} +delete-after: true From ff3e0d834ef1b385522c7e6e5582b238a6f2d44d Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Sat, 18 Jan 2025 10:15:05 -0500 Subject: [PATCH 063/118] Revert "Syndicate Cig Change" (#4023) Reverts shiptest-ss13/Shiptest#3532 Bad change: I haven't seen anyone use them since I made the pr. :cl: balance:syndicate smokes now heal you, again /:cl: --- code/game/objects/items/cigs_lighters.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 3a0d7e1f81c3..e187029696f4 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -333,11 +333,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents?.add_reagent(/datum/reagent/toxin/carpotoxin , 3) // They lied /obj/item/clothing/mask/cigarette/syndicate - desc = "An obscure brand of cigarette." + desc = "An unknown brand cigarette." chem_volume = 60 smoketime = 60 smoke_all = TRUE - list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/drug/aranesp = 5, /datum/reagent/medicine/synaptizine = 5) + list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/medicine/omnizine = 15) /obj/item/clothing/mask/cigarette/xeno desc = "A Xeno Filtered brand cigarette." From 8bc05270476c0089f4b3d62a019c242c194872cc Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Sat, 18 Jan 2025 07:15:44 -0800 Subject: [PATCH 064/118] Replaces Cargo Incendiary Grenades with Frag Grenades (#4027) ## About The Pull Request Replaces cargo incendiary grenades with frag grenades, and lowers the price by a third. Incendiary grenades could: - fullhusk people - dust equipment and items - cause irreparable atmos damage (due to Auxmos lag) - ignite plasmafires and effectively blow up entire sections of a ship with various explosive items we have Frag grenades are significantly less destructive in this manner, and frankly incendiary grenades seem like a- bad idea to just have for everyone to buy? Especially with all that? ## Why It's Good For The Game Adds a grenade option that people already have relatively easy access to for purchase, and replaces the Incendiary Grenade (borderline WMD) purchase with it. ## Changelog :cl: balance: Cargo Incendiary Grenades have been removed and replaced with Frag Grenades. /:cl: --- code/modules/cargo/packs/sec_supply.dm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index c2a71603db3e..4fb147dec663 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -89,15 +89,14 @@ faction = /datum/faction/syndicate/ngr faction_discount = 20 -/datum/supply_pack/sec_supply/incendiary_grenade - name = "Incendiary Grenade Crate" - desc = "Contains one incendiary grenade. Better not let it go off in your hands." - cost = 750 - contains = list(/obj/item/grenade/chem_grenade/incendiary) - crate_name = "incendiary grenade crate" - crate_type = /obj/structure/closet/crate/secure/plasma - faction = /datum/faction/syndicate/ngr - faction_discount = 20 +/datum/supply_pack/sec_supply/frag_grenade + name = "Frag Grenade Crate" + desc = "Contains two fragmentation grenades. Better not let it go off in your hands." + cost = 500 + contains = list(/obj/item/grenade/frag, + /obj/item/grenade/frag) + crate_name = "frag grenade crate" + crate_type = /obj/structure/closet/crate/secure/weapon /datum/supply_pack/sec_supply/halberd name = "Energy Halberd Crate" From feb907a6202c62dce8c4413e07797d3306640474 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 09:26:05 -0600 Subject: [PATCH 065/118] Automatic changelog generation for PR #4027 [ci skip] --- html/changelogs/AutoChangeLog-pr-4027.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4027.yml diff --git a/html/changelogs/AutoChangeLog-pr-4027.yml b/html/changelogs/AutoChangeLog-pr-4027.yml new file mode 100644 index 000000000000..b57be73ed092 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4027.yml @@ -0,0 +1,4 @@ +author: firebudgy +changes: + - {balance: Cargo Incendiary Grenades have been removed and replaced with Frag Grenades.} +delete-after: true From 29c889be0413657adba5e6aeaa6871aa1df46bb6 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Sat, 18 Jan 2025 07:34:08 -0800 Subject: [PATCH 066/118] Adds a Shaft Miner to the Harrier, removes the Janitor (Role) (#3972) ## About The Pull Request Adds a Shaft Miner, and minorly adjusts the N+S cargo office to accommodate. In return to keep the crew size identical, the Janitor's slot has been removed and the room lowered to general access. Assistants can take up the role if they would like to be a janitor. ![image](https://github.com/user-attachments/assets/6b771897-8d66-4a91-8fc1-8bc0e9f058de) ![image](https://github.com/user-attachments/assets/1059ce93-3d1c-4522-afcd-8c7c100cf970) ## Why It's Good For The Game Inherently, the Harrier has an issue with integration into the gameplay loop. A lack of combat equipment means that ruin raiding is not much of an option, and most missions are either ruin raiding... or mining. But the Harrier is unable to properly perform mining as almost all of it's staff are civilian in nature. What's left for it is it's medical bay, which is worse than dedicated medships and most would rather interact with an Atoll than a Harrier. Now, you may say, what about the Cargo Techs? Cargo Technicians are wage-slaves to N+S, but their role is *not* excavation. Nor is the Supply Director. These are warehouse workers. There is a specialized role for that. Having spoken with some of the most active Harrier captains, it's pretty clear that most of the time the Cargo Technician is sent out anyways for mining since someone is _needed_ to keep the ship running and supplied. ## Changelog :cl: add: N+S has deployed a new batch of Shaft Miners to Harrier-class vessels. del: Janitors have been reassigned from the Harrier for retraining. /:cl: --- _maps/configs/nanotrasen_harrier.json | 8 +-- .../nanotrasen/nanotrasen_harrier.dmm | 65 ++++++++++--------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/_maps/configs/nanotrasen_harrier.json b/_maps/configs/nanotrasen_harrier.json index e627c0ed2044..77292d869992 100644 --- a/_maps/configs/nanotrasen_harrier.json +++ b/_maps/configs/nanotrasen_harrier.json @@ -60,12 +60,12 @@ "outfit": "/datum/outfit/job/nanotrasen/cargo_tech", "slots": 1 }, - "Cook": { - "outfit": "/datum/outfit/job/independent/cook", + "Shaft Miner": { + "outfit": "/datum/outfit/job/nanotrasen/miner/no_equipment", "slots": 1 }, - "Janitor": { - "outfit": "/datum/outfit/job/nanotrasen/janitor", + "Cook": { + "outfit": "/datum/outfit/job/independent/cook", "slots": 1 }, "Assistant": { diff --git a/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm b/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm index ed0261ad72b5..7bb83ad4215d 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm @@ -458,13 +458,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/effect/turf_decal/trimline/opaque/nsorange/line{ dir = 4 }, +/obj/machinery/light/directional/south, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "cN" = ( @@ -635,8 +635,7 @@ "dI" = ( /obj/machinery/door/airlock{ dir = 4; - name = "Custodial Closet"; - req_access_txt = "26" + name = "Custodial Closet" }, /obj/structure/cable{ icon_state = "4-8" @@ -1292,7 +1291,6 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/item/clothing/suit/hooded/wintercoat/medical, /turf/open/floor/plasteel/white, /area/ship/medical) "gQ" = ( @@ -1478,7 +1476,6 @@ /turf/open/floor/carpet/blue, /area/ship/crew/dorm) "hL" = ( -/obj/effect/landmark/start/janitor, /obj/structure/chair{ dir = 1 }, @@ -1569,7 +1566,6 @@ /obj/item/clothing/under/rank/civilian/chef, /obj/item/clothing/head/chefhat, /obj/item/storage/backpack/messenger, -/obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/plasteel/freezer, /area/ship/crew/canteen) "iz" = ( @@ -2222,7 +2218,6 @@ /obj/item/clothing/shoes/galoshes, /obj/item/storage/belt/janitor, /obj/item/clothing/gloves/color/black, -/obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/plating, /area/ship/crew/janitor) "mc" = ( @@ -2535,7 +2530,6 @@ /obj/item/clothing/glasses/sunglasses, /obj/item/storage/belt/sabre, /obj/machinery/light/small/directional/north, -/obj/item/clothing/suit/hooded/wintercoat/captain, /turf/open/floor/carpet/royalblue, /area/ship/crew/dorm/dormtwo) "op" = ( @@ -2714,6 +2708,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, +/obj/item/cigbutt, +/obj/effect/decal/cleanable/ash, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "pY" = ( @@ -3274,11 +3270,6 @@ }, /turf/open/floor/wood, /area/ship/crew) -"tC" = ( -/obj/structure/rack, -/obj/item/pickaxe, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "tF" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3782,7 +3773,6 @@ /obj/item/storage/backpack/satchel/leather, /obj/item/storage/box/ids, /obj/machinery/light/small/directional/south, -/obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/carpet/blue, /area/ship/crew/dorm) "vj" = ( @@ -4533,7 +4523,6 @@ /obj/effect/turf_decal/trimline/opaque/blue/line{ dir = 1 }, -/obj/item/clothing/suit/hooded/wintercoat/medical/paramedic, /turf/open/floor/plasteel/white, /area/ship/medical) "yS" = ( @@ -5211,7 +5200,6 @@ /obj/effect/turf_decal/trimline/opaque/vired/line, /obj/item/storage/belt/security, /obj/item/melee/knife/survival, -/obj/item/clothing/suit/hooded/wintercoat/security, /turf/open/floor/plasteel/dark, /area/ship/security) "CN" = ( @@ -5883,7 +5871,6 @@ }, /obj/item/stack/tape, /obj/item/stamp/nanotrasen/ns/supply, -/obj/item/clothing/suit/hooded/wintercoat/cargo, /turf/open/floor/plasteel/tech, /area/ship/cargo) "Gy" = ( @@ -5905,6 +5892,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, +/obj/effect/landmark/start/shaft_miner, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "GG" = ( @@ -6162,6 +6150,26 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, /area/ship/engineering/engine) +"Ik" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/item/clothing/head/hardhat/nanotrasen, +/obj/item/clothing/suit/nanotrasen/vest, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/mask/gas/explorer, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/prescription, +/obj/item/melee/knife/survival, +/obj/item/mining_scanner, +/obj/item/storage/bag/ore, +/obj/item/pickaxe/drill, +/obj/item/radio/weather_monitor, +/obj/structure/closet/secure_closet/miner, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) "Im" = ( /obj/item/radio/intercom/directional/south, /turf/open/floor/carpet/cyan, @@ -6472,7 +6480,6 @@ /obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/meson/engine, /obj/item/analyzer, -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, /turf/open/floor/plasteel/patterned, /area/ship/engineering) "Kd" = ( @@ -6511,7 +6518,6 @@ /obj/item/clothing/head/hardhat/nanotrasen, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/suit/hooded/wintercoat/engineering, /turf/open/floor/plasteel/patterned, /area/ship/engineering) "Kl" = ( @@ -6599,10 +6605,6 @@ }, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"KA" = ( -/obj/structure/crate_shelf, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "KB" = ( /obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 4 @@ -8408,6 +8410,13 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plasteel/dark, /area/ship/bridge) +"TG" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/clothing/suit/space/hardsuit/mining, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/clothing/mask/gas/explorer, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "TI" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/janitor) @@ -9361,7 +9370,6 @@ /obj/item/clothing/neck/tie/black, /obj/item/storage/backpack/satchel/leather, /obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/wood, /area/ship/crew/law_office) "YC" = ( @@ -9515,13 +9523,12 @@ }, /obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/airalarm/directional/east, -/obj/machinery/firealarm/directional/south, /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/under/nanotrasen/supply, /obj/item/clothing/head/nanotrasen/cap/supply, /obj/item/clothing/gloves/fingerless, /obj/item/storage/backpack/messenger, -/obj/item/clothing/suit/hooded/wintercoat/cargo, +/obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/tech, /area/ship/cargo) "Zm" = ( @@ -11162,7 +11169,7 @@ tH tk hq WP -KA +Tu ZQ MZ MZ @@ -11201,7 +11208,7 @@ ka mH tN GF -Tu +Ik ZQ MZ MZ @@ -11240,7 +11247,7 @@ nj xj Nv pX -tC +TG ZQ MZ MZ From cc7bf82f49618b9d0f8b45d7f64868723ee5c4eb Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 09:44:57 -0600 Subject: [PATCH 067/118] Automatic changelog generation for PR #3972 [ci skip] --- html/changelogs/AutoChangeLog-pr-3972.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3972.yml diff --git a/html/changelogs/AutoChangeLog-pr-3972.yml b/html/changelogs/AutoChangeLog-pr-3972.yml new file mode 100644 index 000000000000..e0b8eaade3b8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3972.yml @@ -0,0 +1,5 @@ +author: firebudgy +changes: + - {rscadd: N+S has deployed a new batch of Shaft Miners to Harrier-class vessels.} + - {rscdel: Janitors have been reassigned from the Harrier for retraining.} +delete-after: true From a32b82dd9150e3b94685781f1b1432cd9d7af55a Mon Sep 17 00:00:00 2001 From: Ratvar <61395690+Ratvarr@users.noreply.github.com> Date: Sat, 18 Jan 2025 08:11:28 -0800 Subject: [PATCH 068/118] The grill no longer ear-hurting-ly loud (#4021) ## About The Pull Request I reduced it's volume to a reasonable amount ## Why It's Good For The Game Ears hurting is not good. It was really really loud. ## Changelog :cl: fix: The grill no longer grills your ears out. Rejoice, grillmasters. /:cl: --- code/datums/looping_sounds/machinery_sounds.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index dd05aca8ed44..73f5df2abd84 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -52,7 +52,7 @@ /datum/looping_sound/grill mid_length = 2 mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) - volume = 30 + volume = 10 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 6407f5c5b6cf7f8e2c6bfa3c6337db4f7b5e37c4 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 10:22:38 -0600 Subject: [PATCH 069/118] Automatic changelog generation for PR #4021 [ci skip] --- html/changelogs/AutoChangeLog-pr-4021.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4021.yml diff --git a/html/changelogs/AutoChangeLog-pr-4021.yml b/html/changelogs/AutoChangeLog-pr-4021.yml new file mode 100644 index 000000000000..8c5edcc33ee7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4021.yml @@ -0,0 +1,4 @@ +author: Ratvarr +changes: + - {bugfix: 'The grill no longer grills your ears out. Rejoice, grillmasters.'} +delete-after: true From 9eb304621a05a3c54027da388df3db8f6aaa762f Mon Sep 17 00:00:00 2001 From: Mark Suckerberg Date: Sat, 18 Jan 2025 11:34:39 -0600 Subject: [PATCH 070/118] Fixes turrets again (#3903) ## About The Pull Request sighs so big and loud. makes turret controllers actually control turrets ## Why It's Good For The Game turret controllers should control turrets ## Changelog :cl: fix: Turret controllers now control turrets. /:cl: --------- Co-authored-by: Imaginos16 <77556824+Imaginos16@users.noreply.github.com> Co-authored-by: FalloutFalcon --- _maps/shuttles/inteq/inteq_colossus.dmm | 1772 +++++++++-------- .../machinery/porta_turret/portable_turret.dm | 9 +- .../porta_turret/portable_turret_control.dm | 6 +- .../unit_tests/ship_outpost_placement.dm | 2 +- 4 files changed, 895 insertions(+), 894 deletions(-) diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index f53a38cd5cae..42877511fb07 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -1,37 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ah" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/item/trash/raisins, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20 - }, -/obj/structure/platform/ship_three{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"ai" = ( -/obj/structure/rack, -/obj/item/target/syndicate{ - pixel_x = -5; - pixel_y = 10 - }, -/obj/item/target/syndicate{ - pixel_y = 5 - }, -/obj/item/target/alien{ - pixel_x = 5 - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/borderfloorblack, -/obj/structure/platform/ship_three{ - dir = 6 - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "ar" = ( /obj/structure/cable{ icon_state = "4-8" @@ -44,6 +11,22 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"aC" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/chair/handrail{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) "aH" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -58,21 +41,18 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"aZ" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/advanced_airlock_controller{ - pixel_x = 25; - req_access = null +"bf" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/item/radio/intercom/directional/west, /obj/structure/chair/handrail{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/port) +/turf/open/floor/plating, +/area/ship/engineering) "bn" = ( /obj/structure/cable{ icon_state = "0-4" @@ -114,20 +94,17 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew) -"bz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/trimline/opaque/yellow/corner{ - dir = 1 +"bA" = ( +/obj/machinery/porta_turret/ship/inteq/light{ + id = "colossus_grid"; + dir = 6 }, -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 1 +/obj/machinery/porta_turret/ship/inteq/light{ + dir = 6; + id = "colossus_grid" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/fore) +/turf/closed/wall/mineral/plastitanium, +/area/ship/security) "bJ" = ( /obj/structure/table/reinforced, /obj/machinery/fax/inteq, @@ -237,6 +214,24 @@ }, /turf/open/floor/plasteel/dark, /area/ship/bridge) +"cK" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/structure/closet/wall/directional/east{ + name = "engineering closet" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/item/storage/backpack/industrial, +/obj/item/clothing/suit/toggle/industrial, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/belt/utility, +/obj/item/clothing/under/syndicate/inteq/artificer, +/obj/item/clothing/under/syndicate/inteq/artificer/skirt, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/hardhat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/mask/gas/inteq, +/turf/open/floor/plating, +/area/ship/engineering) "cM" = ( /obj/structure/closet/secure_closet/freezer{ anchored = 1; @@ -260,28 +255,6 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"cT" = ( -/obj/item/storage/backpack/messenger/inteq, -/obj/item/storage/backpack/messenger/inteq, -/obj/item/storage/backpack/messenger/inteq, -/obj/item/clothing/head/beret/sec/inteq, -/obj/item/clothing/head/beret/sec/inteq, -/obj/item/clothing/head/beret/sec/inteq, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/soft/inteq, -/obj/structure/closet/wall/directional/north{ - name = "uniform closet" - }, -/obj/machinery/firealarm/directional/east, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, -/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) "dq" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/structure/cable{ @@ -317,17 +290,6 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"dI" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/yellow/line{ - dir = 1 - }, -/obj/structure/chair/handrail, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/fore) "dS" = ( /obj/structure/table, /obj/machinery/microwave, @@ -342,26 +304,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"dU" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/structure/table/rolling, -/obj/item/gun/energy/laser/practice{ - pixel_y = 10 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/clothing/ears/earmuffs, -/obj/machinery/light/directional/north, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/platform/ship_three{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "eg" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable, @@ -543,22 +485,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) -"fG" = ( -/obj/structure/rack, -/obj/item/storage/box/emptysandbags{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/storage/box/emptysandbags, -/obj/item/storage/box/emptysandbags{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/effect/turf_decal/borderfloorblack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/platform/ship_three, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "fN" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/structure/cable{ @@ -637,15 +563,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"gu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/bunk_bed, -/obj/structure/curtain/bounty, -/turf/open/floor/carpet/black, -/area/ship/crew) "gC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -671,13 +588,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) -"gH" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 4; - id = "colossus_grid" - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/crew) "gJ" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 8 @@ -785,18 +695,6 @@ "hD" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/hallway/port) -"hO" = ( -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/obj/structure/chair/handrail{ - dir = 4 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/port) "hQ" = ( /obj/machinery/power/shuttle/engine/electric{ dir = 4 @@ -815,20 +713,24 @@ /obj/item/trash/sosjerky, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"hZ" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 +"hX" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/sign/poster/official/no_erp{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/warning{ + dir = 1; + layer = 2.04 }, -/obj/machinery/light/directional/south, -/obj/machinery/computer/helm/viewscreen/directional/west, -/obj/structure/platform/ship_three{ +/obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 8 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/fore) "ie" = ( /obj/structure/cable{ icon_state = "2-8" @@ -926,25 +828,15 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"ja" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, +"iZ" = ( /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/machinery/turretid/ship{ - id = "colossus_grid"; - pixel_y = 24 + icon_state = "1-4" }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/curtain/bounty, +/obj/effect/spawner/bunk_bed, +/turf/open/floor/carpet/black, +/area/ship/crew) "jo" = ( /obj/machinery/atmospherics/components/unary/tank/toxins{ piping_layer = 1 @@ -952,15 +844,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) -"ju" = ( -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/opaque/yellow/corner{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/fore) "jw" = ( /turf/open/floor/plasteel/dark, /area/ship/crew/office) @@ -986,6 +869,17 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) +"jA" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/jukebox/boombox, +/obj/structure/platform/ship_three{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "jC" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_y = 28 @@ -1004,12 +898,25 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"jT" = ( -/obj/structure/cable{ - icon_state = "4-8" +"jN" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/sign/poster/contraband/eoehoma{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"jT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -1029,6 +936,13 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/office) +"kc" = ( +/obj/machinery/porta_turret/ship/inteq/light{ + dir = 5; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/hallway/port) "kn" = ( /obj/machinery/atmospherics/pipe/layer_manifold, /obj/structure/reagent_dispensers/watertank, @@ -1056,25 +970,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"kL" = ( -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 - }, -/obj/structure/sign/poster/official/fruit_bowl{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/newscaster/security_unit/directional/north, -/obj/structure/bed/dogbed, -/mob/living/simple_animal/pet/dog/pug{ - name = "Solstice" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/office) "kV" = ( /obj/structure/railing{ dir = 1 @@ -1092,29 +987,17 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) -"lg" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/obj/structure/platform/ship_three{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"lr" = ( -/obj/structure/sign/poster/official/moth/epi{ - pixel_x = 32 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = 12 +"ld" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/obj/structure/platform/ship_three{ - dir = 4 +/obj/structure/chair{ + dir = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) +/turf/open/floor/plasteel/tech, +/area/ship/crew/cryo) "ls" = ( /obj/machinery/navbeacon/wayfinding{ location = "armory" @@ -1131,13 +1014,6 @@ "lv" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/hallway/central) -"lA" = ( -/obj/structure/weightmachine/weightlifter, -/obj/structure/platform/ship_three{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "lB" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 8 @@ -1147,6 +1023,24 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) +"lL" = ( +/obj/item/clothing/under/syndicate/inteq, +/obj/item/clothing/under/syndicate/inteq, +/obj/item/clothing/under/syndicate/inteq, +/obj/item/clothing/under/syndicate/inteq/skirt, +/obj/item/clothing/under/syndicate/inteq/skirt, +/obj/item/clothing/under/syndicate/inteq/skirt, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/sneakers/black, +/obj/structure/closet/wall/directional/north{ + name = "uniform closet" + }, +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "lM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -1176,13 +1070,18 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) -"mb" = ( -/obj/machinery/porta_turret/ship/inteq/light{ - dir = 5; - id = "colossus_grid" +"mi" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/structure/curtain, +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/hallway/port) +/obj/structure/platform/ship_three{ + dir = 5 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "mq" = ( /obj/structure/cable{ icon_state = "1-8" @@ -1207,6 +1106,13 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) +"mu" = ( +/obj/machinery/porta_turret/ship/inteq/light{ + dir = 5; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/crew) "my" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -1216,6 +1122,19 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) +"mD" = ( +/obj/structure/rack, +/obj/item/pickaxe/drill/jackhammer/old, +/obj/effect/turf_decal/borderfloorblack, +/obj/item/pickaxe/mini, +/obj/item/pickaxe/mini, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/directional/west, +/obj/structure/platform/ship_three{ + dir = 10 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "mF" = ( /obj/machinery/suit_storage_unit/inherit{ req_access_txt = "1" @@ -1230,6 +1149,20 @@ /obj/item/clothing/mask/gas/inteq, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) +"mO" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/structure/sign/poster/official/no_erp{ + pixel_y = -32 + }, +/obj/machinery/light/directional/south, +/obj/machinery/computer/helm/viewscreen/directional/west, +/obj/structure/platform/ship_three{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "mY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1255,15 +1188,6 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /turf/open/floor/plasteel/dark, /area/ship/bridge) -"nm" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/structure/chair/handrail{ - dir = 8 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/port) "ny" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -1326,19 +1250,14 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"om" = ( -/obj/structure/rack, -/obj/item/pickaxe/drill/jackhammer/old, -/obj/effect/turf_decal/borderfloorblack, -/obj/item/pickaxe/mini, -/obj/item/pickaxe/mini, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/airalarm/directional/west, -/obj/structure/platform/ship_three{ - dir = 10 +"oj" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/yellow/line, +/obj/structure/chair/handrail{ + dir = 1 }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/fore) "on" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/shieldwallgen/atmos{ @@ -1356,17 +1275,6 @@ }, /turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) -"oq" = ( -/obj/effect/turf_decal/borderfloorblack{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/jukebox/boombox, -/obj/structure/platform/ship_three{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "ot" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/crew) @@ -1376,6 +1284,13 @@ }, /turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/port) +"oT" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 6; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/maintenance/starboard) "oY" = ( /obj/machinery/suit_storage_unit/inherit{ req_access_txt = "1" @@ -1433,6 +1348,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) +"pD" = ( +/obj/effect/spawner/random/vending/cola, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/trimline/opaque/yellow/line{ + dir = 10 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 10 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/fore) "pF" = ( /obj/structure/cable{ icon_state = "2-4" @@ -1449,6 +1375,25 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) +"pL" = ( +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/newscaster/security_unit/directional/north, +/obj/structure/bed/dogbed, +/mob/living/simple_animal/pet/dog/pug{ + name = "Solstice" + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/office) "pO" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 1 @@ -1471,6 +1416,12 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) +"pT" = ( +/obj/structure/sign/number/random{ + pixel_y = -8 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/security/armory) "pV" = ( /obj/structure/cable{ icon_state = "2-8" @@ -1495,6 +1446,18 @@ }, /turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) +"qn" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/weightmachine/stacklifter, +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/platform/ship_three{ + dir = 9 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "qu" = ( /obj/machinery/cryopod{ dir = 8 @@ -1509,18 +1472,42 @@ /obj/effect/turf_decal/techfloor, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) -"qK" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" +"qx" = ( +/obj/machinery/button/door{ + id = "colossus_port"; + name = "Port Cargo Door Control"; + pixel_x = 4; + pixel_y = 23 }, -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/item/radio/intercom/directional/west, -/obj/structure/chair/handrail{ - dir = 4 +/obj/effect/turf_decal/industrial/caution, +/obj/structure/ore_box, +/obj/machinery/button/shieldwallgen{ + id = "colossus_cargo_port"; + pixel_x = -5; + pixel_y = 21 }, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"qD" = ( +/obj/structure/rack, +/obj/item/target/syndicate{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/target/syndicate{ + pixel_y = 5 + }, +/obj/item/target/alien{ + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/borderfloorblack, +/obj/structure/platform/ship_three{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "qQ" = ( /obj/structure/rack, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -1557,16 +1544,6 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"qS" = ( -/obj/structure/dresser, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/airalarm/directional/south, -/obj/item/flashlight/lamp/green{ - pixel_y = 12 - }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) "rb" = ( /obj/machinery/power/shieldwallgen/atmos{ anchored = 1; @@ -1595,20 +1572,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"rG" = ( -/obj/effect/turf_decal/borderfloorblack{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/item/storage/box/cups{ - pixel_y = 10 - }, -/obj/structure/platform/ship_three{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "rJ" = ( /obj/structure/railing/corner, /obj/structure/railing/corner{ @@ -1656,14 +1619,40 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"rS" = ( -/obj/effect/turf_decal/siding/thinplating, -/obj/effect/turf_decal/trimline/opaque/yellow/line, -/obj/structure/chair/handrail{ +"rR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/trimline/opaque/yellow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) +"rV" = ( +/obj/effect/turf_decal/box/corners, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central7{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 11 + }, +/obj/structure/platform/ship_three{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "rW" = ( /obj/structure/filingcabinet/chestdrawer, /obj/effect/turf_decal/corner/opaque/yellow{ @@ -1681,34 +1670,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"sb" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/directional/north, -/obj/machinery/computer/helm/viewscreen/directional/west, -/obj/structure/platform/ship_three{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "sc" = ( /obj/structure/table, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -1790,13 +1751,6 @@ /obj/item/pen, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"sT" = ( -/obj/machinery/porta_turret/ship/inteq/light{ - dir = 5; - id = "colossus_grid" - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/crew) "td" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1860,20 +1814,10 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"tB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/obj/structure/closet/wall/directional/east{ - icon_state = "emergency_wall" - }, +"tC" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, /obj/structure/chair/handrail{ dir = 8 }, @@ -1883,34 +1827,18 @@ /obj/machinery/holopad/emergency/command, /turf/open/floor/carpet/orange, /area/ship/bridge) -"tJ" = ( -/obj/structure/weightmachine/stacklifter, -/obj/effect/turf_decal/borderfloorblack{ - dir = 1 - }, -/obj/effect/landmark/start/assistant, -/obj/structure/platform/ship_three{ +"tM" = ( +/obj/effect/turf_decal/techfloor{ dir = 1 }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"tK" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 1 +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/extinguisher_cabinet/directional/south, /obj/structure/chair/handrail{ - dir = 1 + dir = 4 }, -/turf/open/floor/plating, -/area/ship/maintenance/starboard) +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) "tR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -1928,6 +1856,25 @@ /obj/machinery/cell_charger, /turf/open/floor/plating, /area/ship/engineering) +"tW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4, +/obj/item/tank/internals/plasmaman/full, +/obj/item/tank/internals/plasmaman/full, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/structure/closet/wall/directional/east{ + icon_state = "emergency_wall" + }, +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) "tX" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/bridge) @@ -2026,23 +1973,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) -"uR" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/button/door{ - id = "colossus_port"; - name = "Port Cargo Door Control"; - pixel_x = -4; - pixel_y = 23 - }, -/obj/effect/turf_decal/industrial/caution, -/obj/machinery/button/shieldwallgen{ - id = "colossus_cargo_port"; - pixel_x = 5; - pixel_y = 21 - }, -/obj/structure/chair/handrail, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "uT" = ( /obj/structure/closet/crate/bin, /obj/effect/turf_decal/corner/opaque/brown{ @@ -2134,13 +2064,21 @@ "vH" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/cargo) -"vJ" = ( +"vM" = ( +/obj/effect/turf_decal/borderfloorblack, +/obj/structure/rack, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/structure/platform/ship_three, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"vY" = ( /obj/machinery/porta_turret/ship/inteq{ - dir = 5; + dir = 4; id = "colossus_grid" }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/maintenance/port) +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/crew) "vZ" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ @@ -2193,35 +2131,12 @@ /obj/machinery/light/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"wQ" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/crew/cryo) "wS" = ( /obj/machinery/cryopod{ dir = 8 }, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) -"wU" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/structure/curtain, -/obj/effect/turf_decal/borderfloorblack{ - dir = 1 - }, -/obj/structure/platform/ship_three{ - dir = 5 - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "wW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2231,9 +2146,39 @@ codes_txt = "patrol;next_patrol=hall"; location = "office" }, -/obj/machinery/holopad/emergency/security, -/turf/open/floor/plasteel/dark, -/area/ship/crew/office) +/obj/machinery/holopad/emergency/security, +/turf/open/floor/plasteel/dark, +/area/ship/crew/office) +"xa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/machinery/turretid/ship{ + id = "colossus_grid"; + pixel_y = 24 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"xc" = ( +/obj/structure/weightmachine/stacklifter, +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/obj/structure/platform/ship_three{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "xd" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2314,6 +2259,37 @@ /obj/machinery/computer/helm/viewscreen/directional/east, /turf/open/floor/plasteel/dark, /area/ship/crew/office) +"xN" = ( +/obj/structure/closet/crate/medical, +/obj/machinery/button/door{ + dir = 1; + id = "colossus_starboard"; + name = "Starboard Cargo Door Control"; + pixel_x = -4; + pixel_y = -20 + }, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 + }, +/obj/item/storage/backpack/satchel/med, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/glasses/hud/health, +/obj/item/storage/belt/medical/webbing, +/obj/item/clothing/suit/armor/inteq/corpsman, +/obj/item/clothing/head/soft/inteq/corpsman, +/obj/item/clothing/under/syndicate/inteq/corpsman/skirt, +/obj/item/clothing/under/syndicate/inteq/corpsman, +/obj/machinery/button/shieldwallgen{ + dir = 1; + id = "colossus_cargo_starboard"; + pixel_x = 5; + pixel_y = -19 + }, +/obj/structure/chair/handrail{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "xO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2342,28 +2318,22 @@ }, /turf/open/floor/plating, /area/ship/crew) +"xU" = ( +/obj/structure/dresser, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/airalarm/directional/south, +/obj/item/flashlight/lamp/green{ + pixel_y = 12 + }, +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "yf" = ( /obj/structure/railing{ dir = 8 }, /turf/open/floor/plasteel/stairs, /area/ship/cargo) -"ym" = ( -/obj/structure/rack, -/obj/item/target/clown{ - pixel_x = -5; - pixel_y = 10 - }, -/obj/item/target{ - pixel_y = 5 - }, -/obj/item/target{ - pixel_x = 5 - }, -/obj/effect/turf_decal/borderfloorblack, -/obj/structure/platform/ship_three, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "yP" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, @@ -2378,6 +2348,13 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"zf" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 5; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/maintenance/port) "zh" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2388,27 +2365,33 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) +"zm" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/button/door{ + id = "colossus_port"; + name = "Port Cargo Door Control"; + pixel_x = -4; + pixel_y = 23 + }, +/obj/effect/turf_decal/industrial/caution, +/obj/machinery/button/shieldwallgen{ + id = "colossus_cargo_port"; + pixel_x = 5; + pixel_y = 21 + }, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"zr" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 9; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/crew/office) "zF" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew) -"zI" = ( -/obj/item/clothing/under/syndicate/inteq, -/obj/item/clothing/under/syndicate/inteq, -/obj/item/clothing/under/syndicate/inteq, -/obj/item/clothing/under/syndicate/inteq/skirt, -/obj/item/clothing/under/syndicate/inteq/skirt, -/obj/item/clothing/under/syndicate/inteq/skirt, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/structure/closet/wall/directional/north{ - name = "uniform closet" - }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) "zW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2459,6 +2442,14 @@ }, /turf/open/floor/carpet/orange, /area/ship/bridge) +"Aq" = ( +/obj/structure/sign/poster/contraband/backdoor_xeno_babes_6{ + pixel_y = -32 + }, +/obj/structure/curtain/bounty, +/obj/effect/spawner/bunk_bed, +/turf/open/floor/carpet/black, +/area/ship/crew) "Ar" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2495,6 +2486,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/ship/crew/office) +"AQ" = ( +/obj/machinery/porta_turret/ship/inteq/light{ + dir = 6; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/bridge) "AZ" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Port Engines" @@ -2512,13 +2510,6 @@ }, /turf/open/floor/plating, /area/ship/maintenance/port) -"Bi" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 9; - id = "colossus_grid" - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/crew/office) "Bj" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, @@ -2528,6 +2519,20 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"Bl" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/storage/box/cups{ + pixel_y = 10 + }, +/obj/structure/platform/ship_three{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "Bn" = ( /obj/docking_port/stationary{ dir = 2; @@ -2548,6 +2553,15 @@ /obj/effect/decal/cleanable/oil/streak, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) +"Bs" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/fore) "Bt" = ( /obj/machinery/suit_storage_unit/inherit{ req_access_txt = "1" @@ -2578,27 +2592,6 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) -"BH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/navbeacon/wayfinding{ - codes_txt = "patrol;next_patrol=starboard"; - location = "crew" - }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = -5 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/chair/handrail{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) "BK" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -2626,13 +2619,29 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"BR" = ( +"BW" = ( /obj/effect/turf_decal/box/corners{ - dir = 8 + dir = 1 }, +/obj/structure/closet/crate, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/random/food_or_drink/ration, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/west, -/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/directional/north, +/obj/machinery/computer/helm/viewscreen/directional/west, /obj/structure/platform/ship_three{ dir = 8 }, @@ -2676,28 +2685,6 @@ /obj/item/trash/boritos, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"Ct" = ( -/obj/machinery/button/door{ - dir = 1; - id = "colossus_starboard"; - name = "Starboard Cargo Door Control"; - pixel_x = 4; - pixel_y = -20 - }, -/obj/effect/turf_decal/industrial/caution{ - dir = 1 - }, -/obj/machinery/button/shieldwallgen{ - dir = 1; - id = "colossus_cargo_starboard"; - pixel_x = -5; - pixel_y = -19 - }, -/obj/structure/chair/handrail{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "Cu" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 4 @@ -2795,6 +2782,28 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) +"Du" = ( +/obj/item/storage/backpack/messenger/inteq, +/obj/item/storage/backpack/messenger/inteq, +/obj/item/storage/backpack/messenger/inteq, +/obj/item/clothing/head/beret/sec/inteq, +/obj/item/clothing/head/beret/sec/inteq, +/obj/item/clothing/head/beret/sec/inteq, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/soft/inteq, +/obj/item/clothing/head/soft/inteq, +/obj/structure/closet/wall/directional/north{ + name = "uniform closet" + }, +/obj/machinery/firealarm/directional/east, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, +/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt, +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "DD" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -2868,16 +2877,43 @@ /obj/effect/turf_decal/trimline/opaque/yellow/line, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) +"Eq" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 10; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/security/armory) "Er" = ( /obj/structure/chair{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/turf/open/floor/plasteel/dark, +/area/ship/crew/office) +"Es" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/bunk_bed, +/obj/structure/curtain/bounty, +/turf/open/floor/carpet/black, +/area/ship/crew) +"EA" = ( +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/landmark/start/assistant, +/obj/structure/sign/warning/incident{ + pixel_x = 32 + }, +/obj/structure/platform/ship_three{ dir = 4 }, -/obj/effect/landmark/start/security_officer, -/turf/open/floor/plasteel/dark, -/area/ship/crew/office) +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "EC" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -2975,23 +3011,38 @@ }, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) -"FR" = ( -/obj/machinery/button/door{ - id = "colossus_port"; - name = "Port Cargo Door Control"; - pixel_x = 4; - pixel_y = 23 - }, -/obj/effect/turf_decal/industrial/caution, -/obj/structure/ore_box, -/obj/machinery/button/shieldwallgen{ - id = "colossus_cargo_port"; - pixel_x = -5; - pixel_y = 21 +"FE" = ( +/obj/machinery/autolathe, +/obj/effect/turf_decal/borderfloorblack, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/platform/ship_three, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"FP" = ( +/obj/structure/closet/emcloset/wall/directional/west, +/obj/structure/platform/ship_three{ + dir = 8 }, -/obj/structure/chair/handrail, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) +"FU" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/roller, +/obj/item/roller{ + pixel_y = 5 + }, +/obj/item/roller{ + pixel_y = 10 + }, +/obj/structure/platform/ship_three{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "Gl" = ( /obj/structure/sign/number/one{ dir = 1 @@ -3024,24 +3075,23 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) -"GL" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/obj/structure/closet/wall/directional/east{ - name = "engineering closet" +"GJ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/chair/handrail{ + dir = 1 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/item/storage/backpack/industrial, -/obj/item/clothing/suit/toggle/industrial, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/belt/utility, -/obj/item/clothing/under/syndicate/inteq/artificer, -/obj/item/clothing/under/syndicate/inteq/artificer/skirt, -/obj/item/clothing/head/soft/inteq, -/obj/item/clothing/head/hardhat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/mask/gas/inteq, /turf/open/floor/plating, -/area/ship/engineering) +/area/ship/maintenance/starboard) "GR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 @@ -3141,37 +3191,6 @@ }, /turf/open/floor/plating, /area/ship/bridge) -"HF" = ( -/obj/structure/closet/crate/medical, -/obj/machinery/button/door{ - dir = 1; - id = "colossus_starboard"; - name = "Starboard Cargo Door Control"; - pixel_x = -4; - pixel_y = -20 - }, -/obj/effect/turf_decal/industrial/caution{ - dir = 1 - }, -/obj/item/storage/backpack/satchel/med, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/glasses/hud/health, -/obj/item/storage/belt/medical/webbing, -/obj/item/clothing/suit/armor/inteq/corpsman, -/obj/item/clothing/head/soft/inteq/corpsman, -/obj/item/clothing/under/syndicate/inteq/corpsman/skirt, -/obj/item/clothing/under/syndicate/inteq/corpsman, -/obj/machinery/button/shieldwallgen{ - dir = 1; - id = "colossus_cargo_starboard"; - pixel_x = 5; - pixel_y = -19 - }, -/obj/structure/chair/handrail{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "HG" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -3250,6 +3269,18 @@ "II" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/engineering) +"IM" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/west, +/obj/structure/reagent_dispensers/watertank, +/obj/structure/platform/ship_three{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "IP" = ( /obj/structure/railing{ dir = 8 @@ -3263,6 +3294,20 @@ "IS" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew/toilet) +"IX" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 8 + }, +/obj/structure/chair/handrail, +/turf/open/floor/plating, +/area/ship/maintenance/port) "Jc" = ( /obj/machinery/atmospherics/pipe/layer_manifold, /obj/machinery/button/door{ @@ -3385,36 +3430,42 @@ }, /turf/open/floor/plasteel/dark, /area/ship/bridge) -"KM" = ( -/obj/structure/closet/emcloset/wall/directional/west, -/obj/structure/platform/ship_three{ - dir = 8 +"KS" = ( +/obj/structure/rack, +/obj/item/storage/box/emptysandbags{ + pixel_x = -5; + pixel_y = 5 }, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/item/storage/box/emptysandbags, +/obj/item/storage/box/emptysandbags{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/effect/turf_decal/borderfloorblack, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/platform/ship_three, +/turf/open/floor/plasteel/patterned, /area/ship/cargo) -"Ld" = ( -/obj/effect/turf_decal/techfloor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/sign/poster/official/safety_internals{ - pixel_x = -32 +"KY" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "2-4" +/obj/structure/table/rolling, +/obj/item/gun/energy/laser/practice{ + pixel_y = 10 }, -/obj/structure/chair/handrail{ - dir = 4 +/obj/item/clothing/ears/earmuffs{ + pixel_x = 5; + pixel_y = 5 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/port) -"Ll" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 4; - id = "colossus_grid" +/obj/item/clothing/ears/earmuffs, +/obj/machinery/light/directional/north, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/platform/ship_three{ + dir = 4 }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/bridge) +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "Lm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/item/trash/can, @@ -3604,6 +3655,16 @@ /obj/item/radio, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) +"Nk" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/item/radio/intercom/directional/east, +/obj/structure/platform/ship_three{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "Nz" = ( /obj/structure/chair{ dir = 4 @@ -3637,21 +3698,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) -"NX" = ( -/obj/effect/turf_decal/borderfloorblack, -/obj/structure/rack, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/structure/platform/ship_three, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"Oa" = ( -/obj/machinery/porta_turret/ship/inteq/light{ - dir = 6; - id = "colossus_grid" - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) "Oc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -3681,15 +3727,6 @@ }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew/office) -"Op" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/curtain/bounty, -/obj/effect/spawner/bunk_bed, -/turf/open/floor/carpet/black, -/area/ship/crew) "Ou" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -3718,13 +3755,6 @@ }, /turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/starboard) -"OI" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 6; - id = "colossus_grid" - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/maintenance/starboard) "OV" = ( /obj/structure/cable{ icon_state = "2-4" @@ -3752,13 +3782,6 @@ /obj/item/cigbutt, /turf/open/floor/plating, /area/ship/maintenance/port) -"Pj" = ( -/obj/machinery/autolathe, -/obj/effect/turf_decal/borderfloorblack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/platform/ship_three, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "Pl" = ( /obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1{ @@ -3817,19 +3840,47 @@ /obj/effect/turf_decal/corner/opaque/brown{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/office) -"PK" = ( -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plasteel/dark, +/area/ship/crew/office) +"PJ" = ( +/obj/machinery/porta_turret/ship/inteq{ + dir = 4; + id = "colossus_grid" + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/bridge) +"PK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"PU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/navbeacon/wayfinding{ + codes_txt = "patrol;next_patrol=starboard"; + location = "crew" + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = -5 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/chair/handrail{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/dark/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1, -/turf/open/floor/plasteel/tech, -/area/ship/engineering) +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "Qj" = ( /obj/machinery/light_switch{ dir = 1; @@ -3875,13 +3926,6 @@ }, /turf/open/floor/plating, /area/ship/maintenance/starboard) -"Qw" = ( -/obj/machinery/porta_turret/ship/inteq{ - dir = 10; - id = "colossus_grid" - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/security/armory) "QC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -4029,13 +4073,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"RZ" = ( -/obj/machinery/porta_turret/ship/inteq/light{ - dir = 6; - id = "talos_grid" - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) "Sa" = ( /obj/effect/turf_decal/borderfloor{ dir = 4 @@ -4106,17 +4143,6 @@ /obj/machinery/computer/helm/viewscreen/directional/north, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"Ss" = ( -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/landmark/start/assistant, -/obj/structure/sign/warning/incident{ - pixel_x = 32 - }, -/obj/structure/platform/ship_three{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) "Su" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 8 @@ -4141,6 +4167,35 @@ }, /turf/open/floor/plating, /area/ship/bridge) +"SI" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/item/trash/raisins, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 + }, +/obj/structure/platform/ship_three{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"SJ" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/advanced_airlock_controller{ + pixel_x = 25; + req_access = null + }, +/obj/item/radio/intercom/directional/west, +/obj/structure/chair/handrail{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) "Th" = ( /obj/machinery/power/port_gen/pacman/super, /obj/structure/cable/yellow{ @@ -4264,6 +4319,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/ship/crew/office) +"UE" = ( +/obj/structure/weightmachine/weightlifter, +/obj/structure/platform/ship_three{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "UN" = ( /obj/machinery/door/airlock/public/glass{ name = "Office" @@ -4280,6 +4342,19 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew/office) +"UO" = ( +/obj/structure/sign/poster/official/moth/epi{ + pixel_x = 32 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = 12 + }, +/obj/structure/platform/ship_three{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "UX" = ( /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 9 @@ -4317,44 +4392,39 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/dark, /area/ship/security) -"Wb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/industrial/warning{ - dir = 1; - layer = 2.04 - }, -/obj/effect/turf_decal/trimline/opaque/yellow/line{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/fore) -"Wl" = ( +"Wh" = ( /obj/effect/turf_decal/box/corners, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central7{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 20; - pixel_y = 11 +/obj/item/storage/firstaid/regular{ + pixel_x = 5 + }, +/obj/item/storage/firstaid/medical{ + pixel_x = -5 }, +/obj/structure/table/rolling, +/obj/machinery/light/directional/south, +/obj/machinery/computer/helm/viewscreen/directional/east, /obj/structure/platform/ship_three{ dir = 4 }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) +"Wi" = ( +/obj/structure/rack, +/obj/item/target/clown{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/target{ + pixel_y = 5 + }, +/obj/item/target{ + pixel_x = 5 + }, +/obj/effect/turf_decal/borderfloorblack, +/obj/structure/platform/ship_three, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) "Wn" = ( /obj/structure/sign/number/four{ dir = 1 @@ -4382,24 +4452,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"WE" = ( -/obj/effect/turf_decal/borderfloorblack{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/item/roller, -/obj/item/roller{ - pixel_y = 5 - }, -/obj/item/roller{ - pixel_y = 10 - }, -/obj/structure/platform/ship_three{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "WF" = ( /obj/structure/closet/secure_closet{ icon_state = "sec"; @@ -4448,44 +4500,6 @@ /obj/item/attachment/rail_light, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) -"WG" = ( -/obj/effect/turf_decal/box/corners, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/storage/firstaid/regular{ - pixel_x = 5 - }, -/obj/item/storage/firstaid/medical{ - pixel_x = -5 - }, -/obj/structure/table/rolling, -/obj/machinery/light/directional/south, -/obj/machinery/computer/helm/viewscreen/directional/east, -/obj/structure/platform/ship_three{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"WS" = ( -/obj/structure/sign/poster/contraband/backdoor_xeno_babes_6{ - pixel_y = -32 - }, -/obj/structure/curtain/bounty, -/obj/effect/spawner/bunk_bed, -/turf/open/floor/carpet/black, -/area/ship/crew) -"Xb" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/eoehoma{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/chair/handrail, -/turf/open/floor/plasteel/tech, -/area/ship/security/armory) "Xc" = ( /obj/machinery/door/window/northleft{ dir = 8; @@ -4581,18 +4595,6 @@ "XJ" = ( /turf/template_noop, /area/template_noop) -"XQ" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/weightmachine/stacklifter, -/obj/effect/turf_decal/borderfloorblack{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/platform/ship_three{ - dir = 9 - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) "XR" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4605,17 +4607,6 @@ }, /turf/open/floor/carpet/black, /area/ship/crew) -"XS" = ( -/obj/effect/spawner/random/vending/cola, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/opaque/yellow/line{ - dir = 10 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 10 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/hallway/fore) "XV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/carpet/black, @@ -4623,12 +4614,6 @@ "Yr" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/hallway/fore) -"Yv" = ( -/obj/structure/sign/number/random{ - pixel_y = -8 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/security/armory) "Yx" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/open/floor/engine/hull/reinforced, @@ -4641,6 +4626,28 @@ }, /turf/template_noop, /area/template_noop) +"YK" = ( +/obj/machinery/button/door{ + dir = 1; + id = "colossus_starboard"; + name = "Starboard Cargo Door Control"; + pixel_x = 4; + pixel_y = -20 + }, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 + }, +/obj/machinery/button/shieldwallgen{ + dir = 1; + id = "colossus_cargo_starboard"; + pixel_x = -5; + pixel_y = -19 + }, +/obj/structure/chair/handrail{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) "YV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4654,20 +4661,6 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) -"Zb" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 8 - }, -/obj/structure/chair/handrail, -/turf/open/floor/plating, -/area/ship/maintenance/port) "Zc" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 4 @@ -4739,6 +4732,17 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"ZL" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/line{ + dir = 1 + }, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hallway/fore) "ZR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -4821,7 +4825,7 @@ XJ XJ XJ bo -Zb +IX pA Br bo @@ -4835,7 +4839,7 @@ JD rl ie xx -tK +GJ rl XJ "} @@ -4851,7 +4855,7 @@ JO Ru Zv zZ -qK +bf tR bq rl @@ -4896,7 +4900,7 @@ iY DD fQ eg -GL +cK gl rl uN @@ -4908,7 +4912,7 @@ XJ (8,1,1) = {" XJ XJ -vJ +zf bo bo bo @@ -4924,7 +4928,7 @@ rl rl rl rl -OI +oT XJ "} (9,1,1) = {" @@ -4934,15 +4938,15 @@ XJ XJ rh vH -sb -KM -BR -om +BW +FP +IM +mD kV -XQ -ah -lA -hZ +qn +SI +UE +mO vH rh XJ @@ -4956,15 +4960,15 @@ XJ XJ XJ vH -FR +qx Lm RY -NX +vM tg -oq +jA tw dC -Ct +YK vH XJ XJ @@ -4981,9 +4985,9 @@ on BK Lx Sg -Pj +FE tg -tJ +xc kK Ve eI @@ -5047,9 +5051,9 @@ rb Cy Lz Tr -fG +KS tg -WE +FU sp te RW @@ -5066,15 +5070,15 @@ XJ XJ XJ vH -uR +zm Mx xO -ym +Wi tg -rG +Bl lM GR -HF +xN vH XJ XJ @@ -5088,15 +5092,15 @@ XJ XJ XJ vH -dU -Ss -Wl -ai +KY +EA +rV +qD tg -wU -lg -lr -WG +mi +Nk +UO +Wh vH XJ XJ @@ -5105,7 +5109,7 @@ XJ "} (17,1,1) = {" XJ -Bi +zr ZB ZB ZB @@ -5123,7 +5127,7 @@ Dq Dq Dq Dq -Qw +Eq "} (18,1,1) = {" XJ @@ -5189,7 +5193,7 @@ DS wi oY mF -Yv +pT "} (21,1,1) = {" XJ @@ -5211,7 +5215,7 @@ Sa Dq Dq Dq -Yv +pT "} (22,1,1) = {" XJ @@ -5233,7 +5237,7 @@ EI Dq MQ qQ -Yv +pT "} (23,1,1) = {" XJ @@ -5253,9 +5257,9 @@ ZR ls VL Dq -Xb +jN DW -Yv +pT "} (24,1,1) = {" XJ @@ -5304,7 +5308,7 @@ XA (26,1,1) = {" XJ ZB -kL +pL iw hU xF @@ -5333,9 +5337,9 @@ hD hD hD UX -dI +ZL hh -rS +oj fp XA XA @@ -5343,33 +5347,33 @@ XA XA XA XA -RZ +bA "} (28,1,1) = {" Yy Ou -hO -nm -aZ -tB -Ld +tM +tC +SJ +tW +aC QI -Wb -bz +hX +rR xB -ju -XS +Bs +pD kI my NQ ZC -wQ +ld kI XJ "} (29,1,1) = {" XJ -mb +kc hD hD hD @@ -5427,9 +5431,9 @@ zh Xt bs cq -BH +PU ob -qS +xU zF XJ "} @@ -5437,7 +5441,7 @@ XJ XJ XJ tX -ja +xa tI Ae Sj @@ -5448,10 +5452,10 @@ BA Fa sz zF -zI +lL XV XR -WS +Aq zF XJ "} @@ -5470,10 +5474,10 @@ fN fN Yr zF -cT +Du GW vq -gu +Es uv XJ "} @@ -5495,18 +5499,18 @@ ot zF GX Ac -Op +iZ zF XJ "} (35,1,1) = {" XJ XJ -Ll +PJ SC SC SC -Oa +AQ XJ XJ XJ @@ -5514,11 +5518,11 @@ XJ XJ XJ XJ -sT +mu xT xT xT -gH +vY XJ "} (36,1,1) = {" diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index dc0c2d47f963..ea51bac01b50 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -151,7 +151,7 @@ return gun_properties /obj/machinery/porta_turret/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) - id = "[text_ref(port)][initial(id)]" + id = "[text_ref(port)][id]" port.turret_list |= WEAKREF(src) /obj/machinery/porta_turret/proc/toggle_on(set_to) @@ -613,14 +613,11 @@ if(current_target) RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(set_target)) -/obj/machinery/porta_turret/proc/set_state(on, new_mode, new_flags) - if(locked) - return - +/obj/machinery/porta_turret/proc/set_state(on, new_lethal, new_flags) if(!isnull(new_flags)) turret_flags = new_flags - lethal = new_mode + lethal = new_lethal toggle_on(on) power_change() diff --git a/code/game/machinery/porta_turret/portable_turret_control.dm b/code/game/machinery/porta_turret/portable_turret_control.dm index ba70fe3a44b1..b049fd3c7b95 100644 --- a/code/game/machinery/porta_turret/portable_turret_control.dm +++ b/code/game/machinery/porta_turret/portable_turret_control.dm @@ -47,13 +47,13 @@ /obj/machinery/turretid/proc/late_connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) SIGNAL_HANDLER - for(var/datum/weakref/ship_gun in port.turret_list) + for(var/datum/weakref/ship_gun as anything in port.turret_list) var/obj/machinery/porta_turret/turret_gun = ship_gun.resolve() //skip if it doesn't exist or if the id doesn't match if(turret_gun?.id != id) continue - turret_refs |= ship_gun + turret_refs += ship_gun update_turrets() UnregisterSignal(port, COMSIG_SHIP_DONE_CONNECTING) @@ -134,7 +134,7 @@ /obj/machinery/turretid/ui_act(action, list/params) . = ..() - if(.) + if(. || locked) return switch(action) diff --git a/code/modules/unit_tests/ship_outpost_placement.dm b/code/modules/unit_tests/ship_outpost_placement.dm index 0762af79e304..322474b80a0a 100644 --- a/code/modules/unit_tests/ship_outpost_placement.dm +++ b/code/modules/unit_tests/ship_outpost_placement.dm @@ -8,7 +8,7 @@ // they'll spawn in empty space, and won't be docked new /datum/overmap/ship/controlled(list("x" = 1, "y" = 1), map) catch(var/exception/e) - TEST_FAIL("Runtime error loading ship type ([map.name]): [e] on [e.file]:[e.line]\n[e.desc]") + Fail("Runtime error loading ship type ([map.name]): [e]\n[e.desc]", e.file, e.line) for(var/outpost_type in subtypesof(/datum/overmap/outpost)) var/datum/overmap/outpost/test_outpost = new outpost_type() From ad2bebffbfa286b92db3f121de1a1d4dc2f3e8fe Mon Sep 17 00:00:00 2001 From: Apogee-dev <60533805+Apogee-dev@users.noreply.github.com> Date: Sat, 18 Jan 2025 09:35:16 -0800 Subject: [PATCH 071/118] Rechambers the Firestorm to .44 Roumain (#3987) ## About The Pull Request In a bid to make the Firestorm more flavorful, it is now chambered in .44 Roumain. The magazine size and rate of fire have both been reduced to account for this. - Rechambered to .44 Roumain - Rate of fire reduced to 0.3 SEC (a little less than half its previous rate of fire) - Magazine size reduced from 28 -> 24 and 50 -> 40 ## Why It's Good For The Game firestorm was sort of boring. Now it has a more interesting niche- kind of like a heavy PDW, since it fires a cartridge with (relatively) armor piercing characteristics. ## Changelog :cl: balance: SRM's Firestorm SMG is now chambered in .44 Roumain. /:cl: --- .../IceRuins/icemoon_ice_lodge.dmm | 4 ++-- .../objects/items/storage/filled_guncases.dm | 2 +- .../game/objects/items/storage/uplink_kits.dm | 2 +- code/modules/cargo/packs/gun.dm | 2 +- code/modules/cargo/packs/magazines.dm | 6 +++-- .../clothing/outfits/ert/roumain_ert.dm | 2 +- .../boxes_magazines/external/smg.dm | 24 +++++++++---------- .../manufacturer/hunter_pride/ballistics.dm | 10 ++++---- 8 files changed, 27 insertions(+), 25 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm index 1aca7e66e15c..f15e48f32043 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm @@ -428,7 +428,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/obj/item/ammo_box/magazine/c45_firestorm_mag/pan{ +/obj/item/ammo_box/magazine/c44_firestorm_mag/pan{ start_empty = 1 }, /obj/item/ammo_casing/c45{ @@ -1671,7 +1671,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 6 }, -/obj/item/ammo_box/magazine/c45_firestorm_mag/pan{ +/obj/item/ammo_box/magazine/c44_firestorm_mag/pan{ start_empty = 1 }, /obj/item/ammo_casing/c45{ diff --git a/code/game/objects/items/storage/filled_guncases.dm b/code/game/objects/items/storage/filled_guncases.dm index 2193a834e7cf..d971c9687a4b 100644 --- a/code/game/objects/items/storage/filled_guncases.dm +++ b/code/game/objects/items/storage/filled_guncases.dm @@ -57,7 +57,7 @@ /obj/item/storage/guncase/firestorm gun_type = /obj/item/gun/ballistic/automatic/smg/firestorm - mag_type = /obj/item/ammo_box/magazine/c45_firestorm_mag + mag_type = /obj/item/ammo_box/magazine/c44_firestorm_mag /obj/item/storage/guncase/vickland gun_type = /obj/item/gun/ballistic/automatic/marksman/vickland diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 26b9b790b2f8..e43bba01bf51 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -182,7 +182,7 @@ if("made_man") new /obj/effect/spawner/random/clothing/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family - new /obj/item/gun/ballistic/automatic/smg/firestorm/pan(src) // 20 TC, a gun with 50 .45 bullets on a three round burst is kinda outstanding + new /obj/item/gun/ballistic/automatic/smg/firestorm/pan(src) // 20 TC, a gun with 40 .44 bullets on a three round burst is kinda outstanding new /obj/item/melee/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) // 5 TC, free molotov assemblies new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 7681a92e286a..82aa3d4be0ff 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -398,7 +398,7 @@ /datum/supply_pack/gun/firestorm name = "Firestorm SMG Crate" - desc = "Contains a Hunter's Pride SMG, intended for internal use by hunters and chambered in .45" + desc = "Contains a Hunter's Pride SMG, intended for internal use by hunters and chambered in .44 Roumain." cost = 3000 contains = list(/obj/item/storage/guncase/firestorm) crate_name = "SMG crate" diff --git a/code/modules/cargo/packs/magazines.dm b/code/modules/cargo/packs/magazines.dm index 062d1efe8101..13f8e8ec1858 100644 --- a/code/modules/cargo/packs/magazines.dm +++ b/code/modules/cargo/packs/magazines.dm @@ -49,9 +49,11 @@ faction = /datum/faction/srm /datum/supply_pack/magazine/firestorm_mag + name = "Firestorm Stick Magazine Crate" - desc = "Contains a 28-round magazine for the Hunter's Pride Firestorm SMG." - contains = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/empty) + desc = "Contains a 24-round magazine for the Hunter's Pride Firestorm SMG." + contains = list(/obj/item/ammo_box/magazine/c44_firestorm_mag/empty) + cost = 300 faction = /datum/faction/srm diff --git a/code/modules/clothing/outfits/ert/roumain_ert.dm b/code/modules/clothing/outfits/ert/roumain_ert.dm index 74802bdbba0b..d6f1f5c3736b 100644 --- a/code/modules/clothing/outfits/ert/roumain_ert.dm +++ b/code/modules/clothing/outfits/ert/roumain_ert.dm @@ -32,7 +32,7 @@ l_pocket = /obj/item/ammo_box/a44roum_speedloader - backpack_contents = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/pan = 2, /obj/item/ammo_box/a44roum_speedloader = 2, /obj/item/storage/box/ammo/a44roum) + backpack_contents = list(/obj/item/ammo_box/magazine/c44_firestorm_mag/pan = 2, /obj/item/ammo_box/a44roum_speedloader = 2, /obj/item/storage/box/ammo/a44roum) /datum/outfit/job/roumain/ert/vickland name = "ERT - Saint-Roumain Hunter (Vickland)" // vickland and candor diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 6840f1d98eef..5eb7dac5f154 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -84,31 +84,31 @@ /obj/item/ammo_box/magazine/m45_cobra/empty start_empty = TRUE -/obj/item/ammo_box/magazine/c45_firestorm_mag - name = "stick magazine (.45)" - desc = "A 28-round stick magazine for the toploading Firestorm submachine gun. These rounds do moderate damage, but struggle against armor." +/obj/item/ammo_box/magazine/c44_firestorm_mag + name = "stick magazine (.44 Roumain)" + desc = "A 24-round stick magazine for the toploading Firestorm submachine gun. These rounds do moderate damage, and perform adequately against armor." icon_state = "firestorm_mag-1" base_icon_state = "firestorm_mag" - ammo_type = /obj/item/ammo_casing/c45 - caliber = ".45" - max_ammo = 28 + ammo_type = /obj/item/ammo_casing/a44roum + caliber = ".44 Roumain" + max_ammo = 24 -/obj/item/ammo_box/magazine/c45_firestorm_mag/update_icon_state() +/obj/item/ammo_box/magazine/c44_firestorm_mag/update_icon_state() . = ..() icon_state = "firestorm_mag-[!!ammo_count()]" -/obj/item/ammo_box/magazine/c45_firestorm_mag/empty +/obj/item/ammo_box/magazine/c44_firestorm_mag/empty start_empty = TRUE -/obj/item/ammo_box/magazine/c45_firestorm_mag/pan - name = "pan magazine (.45)" - desc = "A bulky, 50-round pan magazine for the toploading Firestorm submachine gun. These rounds struggle against armor, but with this many you could cut anyone down regardless." +/obj/item/ammo_box/magazine/c44_firestorm_mag/pan + name = "pan magazine (.44 Roumain)" + desc = "A bulky, 40-round pan magazine for the toploading Firestorm submachine gun. The rate of fire may be low, but this much ammo can mow through anything." icon_state = "firestorm_pan" base_icon_state = "firestorm_pan" max_ammo = 50 w_class = WEIGHT_CLASS_NORMAL -/obj/item/ammo_box/magazine/c45_firestorm_mag/pan/update_icon_state() //Causes the mag to NOT inherit the parent's update_icon oooh the misery +/obj/item/ammo_box/magazine/c44_firestorm_mag/pan/update_icon_state() //Causes the mag to NOT inherit the parent's update_icon oooh the misery . = ..() icon_state = "firestorm_pan" diff --git a/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm b/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm index 2eadfe016180..117f3f810bf0 100644 --- a/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm @@ -254,7 +254,7 @@ NO_MAG_GUN_HELPER(automatic/pistol/candor/factory) /obj/item/gun/ballistic/automatic/smg/firestorm //weapon designed by Apogee-dev name = "HP Firestorm" - desc = "An unconventional submachinegun, rarely issued to Saint-Roumain Militia mercenary hunters for outstanding situations where normal hunting weapons fall short. Chambered in .45." + desc = "An unconventional submachinegun, rarely issued to Saint-Roumain Militia mercenary hunters for outstanding situations where normal hunting weapons fall short. Chambered in .44 Roumain." icon = 'icons/obj/guns/manufacturer/hunterspride/48x32.dmi' lefthand_file = 'icons/obj/guns/manufacturer/hunterspride/lefthand.dmi' righthand_file = 'icons/obj/guns/manufacturer/hunterspride/righthand.dmi' @@ -262,14 +262,14 @@ NO_MAG_GUN_HELPER(automatic/pistol/candor/factory) icon_state = "firestorm" item_state = "firestorm" - default_ammo_type = /obj/item/ammo_box/magazine/c45_firestorm_mag + default_ammo_type = /obj/item/ammo_box/magazine/c44_firestorm_mag allowed_ammo_types = list( - /obj/item/ammo_box/magazine/c45_firestorm_mag, + /obj/item/ammo_box/magazine/c44_firestorm_mag, ) unique_mag_sprites_for_variants = TRUE burst_size = 1 actions_types = list() - fire_delay = 0.13 SECONDS + fire_delay = 0.3 SECONDS bolt_type = BOLT_TYPE_OPEN rack_sound = 'sound/weapons/gun/smg/uzi_cocked.ogg' fire_sound = 'sound/weapons/gun/smg/firestorm.ogg' @@ -279,7 +279,7 @@ NO_MAG_GUN_HELPER(automatic/pistol/candor/factory) wield_slowdown = SMG_SLOWDOWN /obj/item/gun/ballistic/automatic/smg/firestorm/pan //spawns with pan magazine, can take sticks instead of just drums, not sure where this would be used, maybe erts? - default_ammo_type = /obj/item/ammo_box/magazine/c45_firestorm_mag/pan + default_ammo_type = /obj/item/ammo_box/magazine/c44_firestorm_mag/pan ///Shotguns From a8205493a5a0d3eb8a3430218e4ee0fbe98cfe27 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 11:45:33 -0600 Subject: [PATCH 072/118] Automatic changelog generation for PR #3987 [ci skip] --- html/changelogs/AutoChangeLog-pr-3987.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3987.yml diff --git a/html/changelogs/AutoChangeLog-pr-3987.yml b/html/changelogs/AutoChangeLog-pr-3987.yml new file mode 100644 index 000000000000..c05785c805e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3987.yml @@ -0,0 +1,4 @@ +author: Apogee-dev +changes: + - {balance: SRM's Firestorm SMG is now chambered in .44 Roumain.} +delete-after: true From bf082736858b585aaa934c7d262ae144d1607567 Mon Sep 17 00:00:00 2001 From: Theos Date: Sat, 18 Jan 2025 15:26:09 -0500 Subject: [PATCH 073/118] linter fix but I hit it with a big stick (#4031) thwack --- .github/workflows/ci_suite.yml | 4 +++- _maps/shuttles/inteq/inteq_colossus.dmm | 4 ---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index cfb850bd16fc..b9b275d743c1 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -32,9 +32,11 @@ jobs: timeout-minutes: 20 steps: - - uses: actions/checkout@v4 + - name: Checkout Master + uses: actions/checkout@v4 with: ref: master + - uses: actions/checkout@v4 - name: Restore SpacemanDMM cache id: cache-spacemandmm diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index 42877511fb07..13d218631edf 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -95,10 +95,6 @@ /turf/open/floor/plasteel/tech, /area/ship/crew) "bA" = ( -/obj/machinery/porta_turret/ship/inteq/light{ - id = "colossus_grid"; - dir = 6 - }, /obj/machinery/porta_turret/ship/inteq/light{ dir = 6; id = "colossus_grid" From e559da0c567cf021082ca6e295a1b7473a063624 Mon Sep 17 00:00:00 2001 From: Apogee-dev <60533805+Apogee-dev@users.noreply.github.com> Date: Sat, 18 Jan 2025 12:43:42 -0800 Subject: [PATCH 074/118] M20 Auto Elite (#3992) ## About The Pull Request ![handcannon](https://github.com/user-attachments/assets/bd606c37-584c-4540-ba45-984632c4c9ee) Adds the M20 Auto Elite, a heavy pistol manufactured by Serene Outdoors and chambered in .44 Roumain (subject to change in future ammo reworks). Originally designed for Star City's police department after a series of incidents proved the need for a handgun more powerful than the 9mm and .45 pistols they had been using, the Auto Elite is a weighty slab of steel with the capacity for ten powerful .44 Roumain rounds, capable of punching through armor better than other handguns while still dealing substantial damage. While it proved bulky and inconvenient for police use, it found a niche as a sidearm for big game hunters and as a flashy option for mercenaries and other people with something to prove. Also adds the PO-20 Pinscher, Inteq's modification of the Auto Elite. Being more readily available than 5.7 and 4.6mm options while also having a heavier impact on target, Inteq has chosen the Auto Elite as a standard sidearm for Vanguards and other ranking personnel. Rollout is still in-progress, so Inteq ships on deployment will have to requisition them on their own for now. Both versions of the Auto Elite are available in cargo, with the Pinscher being faction-locked to Inteq. ## Why It's Good For The Game fills a niche and fleshes out Serene's catalogue a bit. Now indies have access to a semi-auto heavy pistol that nevertheless has a bit less punch than something like the CM-357, and Inteq has a designated officer pistol. ## Changelog :cl: add: Added M20 Auto Elite and PO-20 Pinscher heavy pistols. /:cl: --- .../objects/items/storage/filled_guncases.dm | 8 +++ code/modules/cargo/packs/gun.dm | 21 +++++- code/modules/cargo/packs/magazines.dm | 6 ++ .../serene_sporting/ballistics.dm | 65 ++++++++++++++++++ icons/obj/guns/manufacturer/inteq/48x32.dmi | Bin 2007 -> 2292 bytes .../manufacturer/serene_outdoors/48x32.dmi | Bin 1209 -> 1521 bytes 6 files changed, 98 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/storage/filled_guncases.dm b/code/game/objects/items/storage/filled_guncases.dm index d971c9687a4b..045f2dadb988 100644 --- a/code/game/objects/items/storage/filled_guncases.dm +++ b/code/game/objects/items/storage/filled_guncases.dm @@ -157,6 +157,10 @@ gun_type = /obj/item/gun/ballistic/automatic/pistol/m17 mag_type = /obj/item/ammo_box/magazine/m17 +/obj/item/storage/guncase/pistol/m20_auto_elite + gun_type = /obj/item/gun/ballistic/automatic/pistol/m20_auto_elite + mag_type = /obj/item/ammo_box/magazine/m20_auto_elite + /obj/item/storage/guncase/m12 gun_type = /obj/item/gun/ballistic/automatic/m12_sporter mag_type = /obj/item/ammo_box/magazine/m12_sporter @@ -299,6 +303,10 @@ gun_type = /obj/item/gun/ballistic/automatic/pistol/commander/inteq mag_type = /obj/item/ammo_box/magazine/co9mm +/obj/item/storage/guncase/pistol/pinscher + gun_type = /obj/item/gun/ballistic/automatic/pistol/m20_auto_elite/inteq + mag_type = /obj/item/ammo_box/magazine/m20_auto_elite + /obj/item/storage/guncase/mongrel gun_type = /obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq mag_type = /obj/item/ammo_box/magazine/smgm10mm diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 82aa3d4be0ff..7131eca5b7e4 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -23,12 +23,19 @@ faction = /datum/faction/srm /datum/supply_pack/gun/m17 - name = "M17 pistol Crate" - desc = "A cheap target shooting pistol manufactured by Serene Outdoors. Chambered in .22lr" + name = "M17 Micro Target Pistol Crate" + desc = "A cheap target shooting pistol manufactured by Serene Outdoors. Chambered in .22 LR." cost = 400 contains = list(/obj/item/storage/guncase/pistol/m17) crate_name = "pistol crate" +/datum/supply_pack/gun/m20_auto_elite + name = "M20 Auto Elite Pistol Crate" + desc = "Contains a heavy pistol manufactured by Serene Outdoors. Chambered in .44 Roumain." + cost = 1250 + contains = list(/obj/item/storage/guncase/pistol/m20_auto_elite) + crate_name = "pistol crate" + /datum/supply_pack/gun/commanders name = "Commander Pistol Crate" desc = "Contains a double stacked Commander pistol, produced by Nanotrasen along with Vigilitas Interstellar and is chambered in 9mm." @@ -71,6 +78,16 @@ faction_discount = 0 faction_locked = TRUE +/datum/supply_pack/gun/pinscher + name = "Pinscher Heavy Pistol Crate" + desc = "Contains a heavy pistol manufactured by Serene Outdoors and modified to fit IRMG's standards. Chambered in .44 Roumain." + cost = 1250 + contains = list(/obj/item/storage/guncase/pistol/pinscher) + crate_name = "pistol crate" + faction = /datum/faction/inteq + faction_discount = 0 + faction_locked = TRUE + /datum/supply_pack/gun/candors name = "Candor Pistol Crate" desc = "Contains a Candor pistol, the trusty sidearm of any spacer, produced by Hunter's Pride and chambered in .45 ACP." diff --git a/code/modules/cargo/packs/magazines.dm b/code/modules/cargo/packs/magazines.dm index 13f8e8ec1858..219fce130049 100644 --- a/code/modules/cargo/packs/magazines.dm +++ b/code/modules/cargo/packs/magazines.dm @@ -85,6 +85,12 @@ contains = list(/obj/item/ammo_box/magazine/m15/empty) cost = 300 +/datum/supply_pack/magazine/m20_auto_elite + name = "Auto Elite Magazine Crate" + desc = "Contains a .44 Roumain magazine for the Auto Elite pistol, with a capacity of ten rounds." + contains = list(/obj/item/ammo_box/magazine/m20_auto_elite/empty) + cost = 250 + /* Scarbie */ /datum/supply_pack/magazine/himehabu_mag diff --git a/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm b/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm index ff36ffcd2292..0bebb8ffcb4e 100644 --- a/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/serene_sporting/ballistics.dm @@ -64,6 +64,71 @@ EMPTY_GUN_HELPER(automatic/pistol/m17) /obj/item/ammo_box/magazine/m17/empty start_empty = TRUE +/* Auto Elite */ + +/obj/item/gun/ballistic/automatic/pistol/m20_auto_elite + name = "Model 20 \"Auto Elite\"" + desc = "A large handgun chambered .44 Roumain. Originally developed by Serene Outdoors for the Star City Police Department when their older handguns proved underpowered, the Auto Elite proved heavy and unwieldy in practice. It has nevertheless seen modest success as a sidearm for big game hunters and among customers looking to make an impression." + + icon = 'icons/obj/guns/manufacturer/serene_outdoors/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/serene_outdoors/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/serene_outdoors/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/serene_outdoors/onmob.dmi' + icon_state = "m20" + item_state = "so_generic" + + default_ammo_type = /obj/item/ammo_box/magazine/m20_auto_elite + allowed_ammo_types = list( + /obj/item/ammo_box/magazine/m20_auto_elite, + ) + + fire_sound = 'sound/weapons/gun/pistol/cm23.ogg' + rack_sound = 'sound/weapons/gun/pistol/candor_cocked.ogg' + lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg' + bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg' + manufacturer = MANUFACTURER_SERENE + load_sound = 'sound/weapons/gun/pistol/deagle_reload.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/deagle_reload.ogg' + eject_sound = 'sound/weapons/gun/pistol/deagle_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/deagle_unload.ogg' + + recoil_unwielded = 4 + recoil = 1 + +NO_MAG_GUN_HELPER(automatic/pistol/m20_auto_elite) + +/obj/item/ammo_box/magazine/m20_auto_elite + name = "Model 20 magazine (.44 Roumain)" + desc = "A 10-round magazine designed for the Model 20 pistol. These rounds do good damage, and fare better against armor." + icon_state = "cm23_mag-1" + base_icon_state = "cm23_mag" + ammo_type = /obj/item/ammo_casing/a44roum + caliber = ".44 Roumain" + max_ammo = 9 + multiple_sprites = AMMO_BOX_FULL_EMPTY + +/obj/item/ammo_box/magazine/m20_auto_elite/empty + start_empty = TRUE + +/obj/item/gun/ballistic/automatic/pistol/m20_auto_elite/inteq + name = "PO-20 Pinscher" + desc = "A large handgun chambered .44 Roumain and manufactured by Serene Outdoors. Modified to Inteq Risk Management Group's standards and issued as a heavy sidearm for officers." + + icon = 'icons/obj/guns/manufacturer/inteq/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/serene_outdoors/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/serene_outdoors/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/serene_outdoors/onmob.dmi' + icon_state = "m20_inteq" + item_state = "inteq_generic" + + default_ammo_type = /obj/item/ammo_box/magazine/m20_auto_elite + allowed_ammo_types = list( + /obj/item/ammo_box/magazine/m20_auto_elite, + ) + +/obj/item/ammo_box/magazine/m20_auto_elite/inteq/empty + start_empty = TRUE + /* Sporter */ /obj/item/gun/ballistic/automatic/m12_sporter diff --git a/icons/obj/guns/manufacturer/inteq/48x32.dmi b/icons/obj/guns/manufacturer/inteq/48x32.dmi index 68aaf75810dffa7f4b31d7bead6553649db009ff..4b3058fc885c1a99a7089bc9ed25c2b7efe31bf5 100644 GIT binary patch literal 2292 zcmVP)t-sz`(%A zJ1$OGVJRp!YIJ@705d*6Pa!2M5EdHG+~%pV%or6PFdZaKGCUd#4sKFp|G#F;XCDg( z4S9K-Pfu=^Js=hp7j+FWMGhg(dnf<^0004WQchCV=-0C=38lre9EFc5`j_!XyQM@gEYO9zrzDQaKJBAs z_!(QMsbp0rHRxJ(4FjnR+^E)IYObN-5`k)$s^ua9S8Grom3# zNkY=&hx0{0hVPmCvxuW??+k}|9`0XblH{WUmOzrj&zJHI&oxij?qTcb000LUNklv;rD&t%h(TE-HO_F-PGbUi4qO&5%T$#IwJ*TCqX;+} zMZnQ00@6T8u9Un2>Iu1Ss6j86kH=3w2un(7lNj=@;}u*q)(8>yixLK}%jNnBxK80O zG=jI`xcbFJJ3#=|SQGGzPVU_D zD%vcd%8RkA0wQ>GAvi#aR<^B}AlFUE4aR6T0g;v?fj0mJa1hh#t5_m5jsKH?q`Hea z4<*1ggnA{hNkE1Y009EnOJ1STaFLgw4`Fq{qlTl=W2Qs@`eRu?!Jota@{pbAwFQBY z+ys5t77$h=WY?j9SJ3k#M+xx0(-w3D!aAt!0szA~tN?Nhr*#{2Y5~v&MR#1ekYkJ{ zC5|LAB$R^kNO?4hfTK|a9E~ENprD}OuSY&#{5sbChrb~Qy{m!J_~rbQfvm5gp<@F7cl6s z5;PG&nt;&}{g0yZy=p&h3|hWhfFt-y&{R-L?m$yz^n2ZYoX`aj+)xbRLBnu29~Q~v zU4U+84zw}LGxr!j1Kzf+U{smwDFukWQvy)I4~#>yL$v+aa)veGC&p3vffJ2_pVD?T z#8d^&3N_Pv`T{t!04`9#c`XRLG0x?Q1>i6eaWs#Df`WpAf`WpAzZW>@KWd#@7T^*| ze!}Oj#hPr(Yx1!S`j()KHMRoF%YKGOFs?kcjsExZ^RsCvSBvH05mLUZHSw`m^;NA5 zX2x&ce0_a2gtrrv8-l%|Gf0ZAnl=J^^BqW%&tq~!XCQwAR%&G!i?fa@>r$Q7 zWfbbc1g@Mw+Kh1e=^X|1ozN7e;5hXIbpT&_5<~5|(7%T*UEPLMu5#UBaXBo}NO|0% z+aO5Z_jZRXg#Yz@fz-;wN4tj~jV_!M0K1+pZHX z#Zr#e6}G5pPB&=7;s}9&h!yQzwr%I%`^4KebpVF~VwTvWfVK|~j@!_>-pfrS^T)wo z7tTjT;9W!vxoSgpnmb0&&=_=)MKJb2DL8#B0-p^<*271Pk(Hnt`?1&EWJqX^Mc};w zH2TR3RBsm*0~Dy9J}edr=zTV{2MO9oHG~X|r)=nz0#YE=9>1`#AXL1a0A;kHoTS7J zfiGqAT5udS98F>mP{7d~3JMAe3JMC2!^&|g+5GlfD=2f^Wa+xUf1V+2ozRAY48C=T z>s~q4B+Dd$vSvDZiK<-$&E36=-sla?6y)qr{1LP3 z9t2Fgq~aXxZWsYv+$=<=<9B%6UH8qrY!*I=z0dlMF@Ks_^&1HpaBi8ybss#%(fD_#Vz-Eek+!D_4_-@f-Sf~Rx2S)si%g%J zsq|!p$LZv9-3K?L&~JOg;3-UDsX4&A-X~y}>z=ZJ;l`c@ALzfRr?Ci zH(X{C1$o#ZW0@dAC!*dJS;l<@1+h5m;Yju3@0n0n7XR}Is2|=;r*4Mv&wl873Jm|+ ze6Y=I{?;5adZZG=VY;r&S+uJ$=3-jDIR>`rm=D(({g{BjR1F2gX0sAJTh2=aM4fGI zvGMYEl}^BI>R3Vv0_JGd3wnXt`F5MnoAEbNQ<$9S@Gv0*dm-Lpbn@5Pmx>#+_5Iw9yZHF;sh*+ ztqD-MY-gfJfX&}${kBcU3UFMw1k9Dt)wnn#*?%6&V@tp$;ipJ3CE)J6HUv~A?dqXC z*6tDC*M)av(=D90-H2l1INH`6h#pEjrw~#ztEckFhT8cyCV_REm;)Hwi!+ko=jW8# z6Oix&4Z9DFPva2ObEZEq+2CKh@p`7Ka1GvkPn7SZA(H<&Q1}=8BlrV7E>M#b7x**) O0000rkliz>vYK5&RFsMSs{H4e~G z$=XqB(488422vTgP_4mqTtm+#0@XmF9XZ2EdO&UsUW^UY_7({>f}jk&o$D|@XdCe8 zI;VjO{G0EwfuAICQO02bK~DU4lFuTI62cb5q2kiu*IIv7tKMvas$Ml`WV5V3i-pzh z&Pvd>nv^{^P18PMvHakMYofTKe?D+eKe*m8CB_My^)foT)1`J6=K~#90?VOF8qbdxBwfu?Bc30bT z?*CFxf>x0t5XIK>EMIqaIu62XhzOa`s*0$N75KCYP)r3VrUDdG6sVr`2^iB}1ZD;z z5Zy+xyg)CE9YB0kW}pdb56~f<;X|i%8G%DcDL_g#s%hjTm9xu;J*9vHgg^q|n(?Py zG#;Q`zKoUu3yD$EymA3eP(&aJG)h$1NkZ;L*#?@RES?CRK&L^YXn22&C*jc%x0h;V zH})8S9ps4srFoQUTLe0ak^(eAMSw)tjy?7npb08qAn2%U2Ffx081J!50l_`Cdmwa` zeh5XW--QcAeyZ-^*HHv|J^h??MJyO;u zC&pm)zGZdI@pW^gb?*gAFYDuBthb4*(<~eF-jRuK!KuC)31#0TOysN|{|D!QvxN!H zz?56XY|I!>yy^(V&>8@}Dk>@}Dk>^U6*U`yT3*O* zAjPT_aoww=Xh`Lowv{9xDQOJ=5FrCbsHSO2xq1jhNwGnorXv8!rtK(K3_aGS*KbY` zE#VAB?K9C~_>=&orvsUwU1}RjVFKu>G&Bi}@_!q`76N^np{S^+ zsOZ|-*bemLJBSKpa&4YOkejMAAKyG7K$PLn?4DE|lVqUS1`=oev^9>Kte}3*tYM60 z$b<8y>a;MecJhM6n4HG7UJ|D83jXvkJ?4FD{z-C**}J@{I8WNO`BQaZo-bBeL#mMqd7o}7SKlx8kpk25G`ppyn)!izsX9aF zENxUXPHUfhDu(%Fqa%UKfy{0`h4wbCbpXhhs`I`;SvC)%?ky(9M9C4P??QRR@5ktUg}=X8{uOX^GmJiZ5v9RGt1Y zW$eI_?TU~eEUIzjBzuYy@%>{g(qOtg{ z8wodxM!L+Gsv`n{5_Kr|34>LUMV~KZ8H{J(F1h_cZ5IQgr|KLTZ~*60VS{Rw8dy|R z^!Mm0o8xNd`!`ir7SH#9>eZWRS9==IDIZv}@YKtJa7(Y>E}Qamk}Y+vcmf|HG5_xU zO(rCp%jNt6&{E}6d(esAdn&VqmUfbOeAYY1yDgq8j6#>6y z`Cj`HOtt2z7cWZfI?4wHrB-P3kozn*ko&~)U%J{Ckt~zk|LH0Ihw;ovkGzQGs}18}&RdTh$!ksr@1Wso;lT`5vaR8SFtO8A{wD@?;S? zLV1Bn+DcdBDJm)|`j#@!)sJf5b9+bqsSTVARD0j10G-COG?3E9{OPNeXYx_gCy^c= z-+Ld&{4PNUfULMd9bRN5(;Nm`dWVc{V4She1)@JXd_*~c pc063&3UWVXt?{j>sHo`g)qm=hH1uf^sYU<*002ovPDHLkV1fbCvta-L diff --git a/icons/obj/guns/manufacturer/serene_outdoors/48x32.dmi b/icons/obj/guns/manufacturer/serene_outdoors/48x32.dmi index d728fe7bdbf0394260528e104876fccda5230a82..9b75cb2f681c2dd53d130331d043475be26e656b 100644 GIT binary patch delta 1443 zcmV;U1zh^M3GoY%7Y?8Z0{{R3)Z!H<0000mktHr0Pfu>Zz`&=X+|U3300DGTPE!Ct z=GbNc008@uYa)MaVwWB0sHTdJ1MFV8jcKB$35wIP$6p!JZc}sfFMa+$$?_8N;=Me= z{-YFM1#3>$FoHbj; zFm>Zhhz4up+MeWp{1S@e{`YZz0Ca%K`wHN^82|tTXh}ptRCt{2oQ-y)AP`0^AR{66 z{U3K{2K;|%j>;g$WY3wKZklGPTmjqib<(aY@Kb7VH!4&@g-WPUiK5U?<_;O|uOKrE z-DR}f&!q7+LRsoUA=56Dr7C=kvDUi2?;XCk9^pIh0spxcq3UrNLNMI9bMEnYIEc?o za0CFH7OI)45C$amjH6&@AmnF<2=pPoiB9ab!`gqf9G)`)%;IBW2rL^y1R5Y?&Ix6y zYM~*-=+?wYN_a2QI2OuME1!Kk5~6Xyj&X{dp>-`_A;A{p>{YLt-)WvS8%#}yRr6B0nz_!Y;w?t5na6~4*;_XFD9 zs8D|i6)K@ZCB9BbQ4~eF4%{5ecE^`Ndv)(A%Xsu-Z@qK)MzH}uO*x0X)yII(@rr|S z>`AM)I4mh!0lvG-g;R?)Q{wWZ{rjyGwWK{;(EmDFG zMeEOTG?%Uqs(?B>S_P|65nOaq%TC@&P^1y}Il87m}nE1_)D;~fT*D*y=6h%=KMcJfJjGy+H8JXYT&-8!JiHFIw z9O#mKs6z=$sZP4%K<`&PU*-+@5Dw5Ps-i)HU*UWi?t03HJg2w#oH@#eL`KtenG|>) z9f{hKhJlXzekD?RdfFsIwNC*xXh=%q3{y19lY#8O$9skKvgq#F`LVeez$;MhVFLRCj@@E@252u(zl|E z!(ByD6h--VDt3YAH;ff*Z@M?Tu4vjKwHSi^I^5ZTqJpl{(-WSUH;Lkv%a;DCYRIID*%wAh=5JZN;P8yy4dVeA#SA;1Nh zA!x(U8%KZ)2;FED-C_>%r=?4XLXIsC8Ul-o@|nngl<^z|OOc&CTDs5w+HzCZ)!|sZ z9iZIH&4=7it~6tNw#b3}Bx;v0UlzL*E`cc$yNU#6mDshKWP0@Hgj3wHN7gyW-S+Qy zegO#Cro$HYg^&OM14BtfK~!jg?U+An+dvqHFSZ~G?htuECVAEUEE#IYgim5B<^v8;qwD(L#r+f6? zN#=gM03_H=UZ{!?{R^V4X0usI9-p+;WTNJMMNG00QR#|mg`&(os-nOrV&tHWG3rlx-v}WKgnCY{sJYwZR1>&=E}d;3LrQlEaJ}&WSz3-Lt0E@yLKN{V48|dE?QzkcJ&JABC2_q_CI(RSEJa$xD@>*yATRX2 z0#8zu+Nwq{1>n(QfC@Z?6*Z^__!mVQ?!Q0vImu*PNt9w|^nNoU5KcEFDuWOSkwEZ& ze^Jv;E6%ha?oY06I_Tu^40cX1+N)TBP2&rCcQd(qp$w4Y^qfi+xn2-4@>v2gDy}Mu zK`UI>sOE{{%bcbvMpRd?y2u;1yI~jvVVU!Ag@j@OW8`{M0G*b!b_vozjftqIwvXz0 zB8eCIfTYGQv*pygI@0q*3SX}zUvT?>AjiV6xSxb&B%ki6oZJ4!;I7T+B}GzEzLON5 zDdj0auc+qIRCu^RAb7CUTN@H>S39`Vo_&aqm0RtXsU62MuL From 0657d7d282f9a6c3d48a08bd238668934ee521c7 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 14:55:21 -0600 Subject: [PATCH 075/118] Automatic changelog generation for PR #3992 [ci skip] --- html/changelogs/AutoChangeLog-pr-3992.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3992.yml diff --git a/html/changelogs/AutoChangeLog-pr-3992.yml b/html/changelogs/AutoChangeLog-pr-3992.yml new file mode 100644 index 000000000000..238acec91541 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3992.yml @@ -0,0 +1,4 @@ +author: Apogee-dev +changes: + - {rscadd: Added M20 Auto Elite and PO-20 Pinscher heavy pistols.} +delete-after: true From 8a91895513c8358dc9661d8a7a8b5a2eab66042b Mon Sep 17 00:00:00 2001 From: TDHooligan Date: Sat, 18 Jan 2025 20:48:06 +0000 Subject: [PATCH 076/118] Robotic limb degradation (#3589) ## About The Pull Request Introduces 'limb integrity' as a mechanic among all robotic limbs. 1 point of 'Integrity loss' represents 1 HP's worth of damage that won't heal under most (if not all) circumstances. Limbs also have an 'integrity threshold', ignoring some accumulated integrity damage. So that robots can actually heal to full health from light damage a couple of times. A new surgery to 'Replace Structure' can be performed on robotic limbs, to fix all integrity, alongside all the damage that was accumulated as a result of it. 'Repair Machinery' requires a second individual to do it now, so that you can heal robots without causing integrity loss. A new item, 'Replacement structural rods', can be crafted with rods, cable and titanium. This grants 2 uses, and allows IPCs to repair themselves without assistance. ### Nitty gritty balance implications: - All robotic parts have an integrity threshold of ~~15~~ > 20. - Welding and cable repairs cost ~~7.5~~ > 5 integrity. - So you can repair each parts ~~twice~~ -> four times (60 HP) with no ill effects. - Every subsequent repair accumulates ~~7.5~~ > 5 permanent damage. - To reset a limb's integrity, surgery needs to be performed. After 8 repairs, a limb will have 20 unremovable damage. But in return, you'd have healed 120 HP. --- Since damage will be spread across the body, this gives IPCs a good pool of cheap health, but will need to either replace their limbs, or have a mechanic repair their limbs. ## Why It's Good For The Game Prevents IPCs and augmented humans from ignoring doctors in favour of a stack of coil and an empty welding tool. ## Changelog :cl: add: Robotic body parts now have integrity, 1 'integrity loss' represents 1 HP of damage that cannot be healed/repaired. add: New 'Replace Structure' surgery that allows a roboticist to restore limb integrity. add: New 'Structure Repair Kit' craft that restores limb integrity. balance: Robotic limbs start wearing out after multiple repairs, limiting their repair potential. balance: Repair machinery is no longer self-operable. /:cl: --------- Signed-off-by: TDHooligan Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../components/crafting/recipes/misc.dm | 11 +++ code/game/objects/items/devices/scanners.dm | 2 +- code/game/objects/items/stacks/medical.dm | 69 +++++++++++++++--- code/game/objects/items/tools/weldingtool.dm | 2 +- .../modules/mob/living/carbon/damage_procs.dm | 16 +++- .../mob/living/carbon/human/examine.dm | 7 ++ code/modules/mob/living/carbon/human/human.dm | 15 ++++ code/modules/mob/living/damage_procs.dm | 3 + code/modules/mob/living/living.dm | 1 + code/modules/mob/mob_helpers.dm | 14 +++- code/modules/power/cable.dm | 2 +- .../projectiles/guns/energy/special.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 42 ++++++++++- .../surgery/bodyparts/robot_bodyparts.dm | 6 ++ .../bodyparts/species_parts/ipc_bodyparts.dm | 6 ++ code/modules/surgery/mechanical.dm | 51 ++++++++++++- icons/hud/screen_gen.dmi | Bin 104770 -> 106096 bytes icons/obj/items.dmi | Bin 61369 -> 62181 bytes 18 files changed, 227 insertions(+), 22 deletions(-) diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index fd89bd141ea8..879f6be65d5f 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -149,6 +149,17 @@ result = /obj/item/stack/medical/splint/ghetto category = CAT_MISC + +/datum/crafting_recipe/replacement_structure + name = "Structure Repair Kit" + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) //hole punching and scissors + reqs = list( + /obj/item/stack/rods = 3, + /obj/item/stack/sheet/mineral/titanium = 1, + /obj/item/stack/cable_coil = 2) + result = /obj/item/stack/medical/structure + category = CAT_MISC + /datum/crafting_recipe/portableseedextractor name = "Portable seed extractor" reqs = list( diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index e273aceed473..4df753123bba 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -221,7 +221,7 @@ GENE SCANNER // Body part damage report if(iscarbon(M) && mode == SCANNER_VERBOSE) var/mob/living/carbon/C = M - var/list/damaged = C.get_damaged_bodyparts(1,1) + var/list/damaged = C.get_damaged_bodyparts(1,1,ignore_integrity=TRUE) if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0) var/dmgreport = "General status:\ \ diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index fbda78c0ab6c..1f8e39d05f4b 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -12,7 +12,10 @@ max_integrity = 40 novariants = FALSE item_flags = NOBLUDGEON + var/heals_organic = TRUE + var/heals_inorganic = FALSE var/splint_fracture = FALSE + var/restore_integrity = 0 var/failure_chance var/self_delay = 50 var/other_delay = 0 @@ -55,23 +58,26 @@ /obj/item/stack/medical/proc/heal(mob/living/target, mob/user) return -/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/C, mob/user, brute, burn) +/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/C, mob/user, brute, burn, integrity = 0) var/obj/item/bodypart/affecting = C.get_bodypart(check_zone(user.zone_selected)) if(!affecting) //Missing limb? to_chat(user, "[C] doesn't have \a [parse_zone(user.zone_selected)]!") return - if(!IS_ORGANIC_LIMB(affecting)) //Limb must be organic to be healed - RR + if(!heals_inorganic && !IS_ORGANIC_LIMB(affecting)) to_chat(user, "\The [src] won't work on a robotic limb!") return + if(!heals_organic && IS_ORGANIC_LIMB(affecting)) + to_chat(user, "\The [src] won't work on an organic limb!") + return //WS begin - failure chance if(prob(failure_chance)) user.visible_message("[user] tries to apply \the [src] on [C]'s [affecting.name], but fails!", "You try to apply \the [src] on on [C]'s [affecting.name], but fail!") return //WS end + var/successful_heal = FALSE //Has this item healed anywhere it could? if(affecting.brute_dam && brute || affecting.burn_dam && burn) - user.visible_message("[user] applies \the [src] on [C]'s [affecting.name].", "You apply \the [src] on [C]'s [affecting.name].") var/brute2heal = brute var/burn2heal = burn var/skill_mod = user?.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER) @@ -80,27 +86,41 @@ burn2heal *= (2-skill_mod) if(affecting.heal_damage(brute2heal, burn2heal)) C.update_damage_overlays() - return TRUE + successful_heal = TRUE //WS Begin - Splints if(splint_fracture) //Check if it's a splint and the bone is broken if(affecting.body_part in list(CHEST, HEAD)) // Check if it isn't the head or chest to_chat(user, "You can't splint that bodypart!") - return else if(affecting.bone_status == BONE_FLAG_SPLINTED) // Check if it isn't already splinted to_chat(user, "[C]'s [affecting.name] is already splinted!") - return else if(!(affecting.bone_status == BONE_FLAG_BROKEN)) // Check if it's actually broken to_chat(user, "[C]'s [affecting.name] isn't broken!") - return - affecting.bone_status = BONE_FLAG_SPLINTED - // C.update_inv_splints() something breaks - user.visible_message("[user] applies [src] on [C].", "You apply [src] on [C]'s [affecting.name].") - return TRUE + else + affecting.bone_status = BONE_FLAG_SPLINTED + // C.update_inv_splints() something breaks + successful_heal = TRUE //WS End - + if (restore_integrity) + if(affecting.integrity_loss == 0) + to_chat(user, "[C]'s [affecting.name] has no integrity damage!") + else + var/integ_healed = min(integrity, affecting.integrity_loss) + //check how much limb health we've lost to integrity_loss + var/integ_damage_removed = max(integ_healed, affecting.integrity_loss-affecting.integrity_ignored) + var/brute_heal = min(affecting.brute_dam,integ_damage_removed) + var/burn_heal = max(0,integ_damage_removed-brute_heal) + affecting.integrity_loss -= integ_healed + affecting.heal_damage(brute_heal,burn_heal,0,null,BODYTYPE_ROBOTIC) + // C.update_inv_splints() something breaks + successful_heal = TRUE + + + if (successful_heal) + user.visible_message("[user] applies \the [src] on [C]'s [affecting.name].", "You apply \the [src] on [C]'s [affecting.name].") + return TRUE to_chat(user, "[C]'s [affecting.name] can not be healed with \the [src]!") @@ -402,3 +422,28 @@ icon_state = "hointment" desc = "Herb slurry meant to treat burns." heal_burn = 15 + + +/obj/item/stack/medical/structure + name = "replacement structural rods" + desc = "Steel rods and cable with adjustable titanium fasteners, for quickly repairing structural damage to robotic limbs." + gender = PLURAL + icon = 'icons/obj/items.dmi' + icon_state = "ipc_splint" + amount = 2 + max_amount = 3 + novariants = FALSE + self_delay = 50 + other_delay = 20 + heals_inorganic = TRUE + heals_organic = FALSE + restore_integrity = TRUE + + +/obj/item/stack/medical/structure/heal(mob/living/target, mob/user) + . = ..() + if(iscarbon(target)) + return heal_carbon(target, user, integrity = 150) + to_chat(user, "You can't repair [target]'s limb' with the \the [src]!") + + diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index fcccb13b4b27..4d9a6d899a5a 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -124,7 +124,7 @@ "You start fixing some of the dents on [target == user ? "your" : "[target]'s"] [parse_zone(attackedLimb.body_zone)].") if(!use_tool(target, user, delay = (target == user ? 5 SECONDS : 0.5 SECONDS), amount = 1, volume = 25)) return TRUE - item_heal_robotic(target, user, brute_heal = 15, burn_heal = 0) + item_heal_robotic(target, user, brute_heal = 15, burn_heal = 0, integrity_loss = 5) return TRUE /obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 8c023299baed..6eea6a1f4669 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -160,12 +160,15 @@ //////////////////////////////////////////// //Returns a list of damaged bodyparts -/mob/living/carbon/proc/get_damaged_bodyparts(brute = FALSE, burn = FALSE, stamina = FALSE, status) +//ignore_integrity shows limbs that can't be healed due to low integrity +/mob/living/carbon/proc/get_damaged_bodyparts(brute = FALSE, burn = FALSE, stamina = FALSE, status, ignore_integrity = FALSE) var/list/obj/item/bodypart/parts = list() for(var/obj/item/bodypart/BP as anything in bodyparts) if(status && !(BP.bodytype & status)) continue if((brute && BP.brute_dam) || (burn && BP.burn_dam) || (stamina && BP.stamina_dam)) + if (!ignore_integrity && BP.get_curable_damage() <= 0) + continue parts += BP return parts @@ -212,6 +215,17 @@ if(picked.receive_damage(brute, burn, stamina, check_armor ? run_armor_check(picked, (brute ? "melee" : burn ? "fire" : stamina ? "bullet" : null)) : FALSE)) update_damage_overlays() +///Fix integrity in MANY bodyparts, in random order +/mob/living/carbon/heal_overall_integrity(amount = 0, required_status, updating_health = TRUE) + var/list/obj/item/bodypart/parts = get_damaged_bodyparts(required_status, FALSE) + var/update = NONE + while(parts.len && (amount > 0)) + var/obj/item/bodypart/picked = pick(parts) + var/integrity_was = picked.integrity_loss + update |= picked.heal_integrity(amount, required_status, FALSE) + amount -= round(amount - (integrity_was - picked.integrity_loss), DAMAGE_PRECISION) + parts -= picked + ///Heal MANY bodyparts, in random order /mob/living/carbon/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE) var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute, burn, stamina, required_status) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index fae17b35d706..0c8782129698 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -167,6 +167,13 @@ if(BP.bodypart_disabled) disabled += BP missing -= BP.body_zone + if(BP.uses_integrity && (BP.integrity_loss-BP.integrity_ignored) > 0) + if ((BP.integrity_loss-BP.integrity_ignored) > BP.max_damage*0.66) + msg += "[t_His] [BP.name] is [BP.heavy_integrity_msg]!\n" + else if (BP.integrity_loss-BP.integrity_ignored > BP.max_damage*0.33) + msg += "[t_His] [BP.name] is [BP.medium_integrity_msg]!\n" + else + msg += "[t_His] [BP.name] is [BP.light_integrity_msg].\n" for(var/obj/item/I in BP.embedded_objects) if(I.isEmbedHarmless()) msg += "[t_He] [t_has] \a [icon2html(I, user)] [I] stuck to [t_his] [BP.name]!\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5aa11efd6a6d..a4d89a53b548 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -874,6 +874,21 @@ icon_num = 0 if(icon_num) hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[BP.body_zone][icon_num]")) + if (BP.uses_integrity) // Same, but for integrity + var/integ_loss = max(0,BP.integrity_loss-BP.integrity_ignored) + var/integ_icon_num + if(integ_loss) + integ_icon_num = 1 + if(integ_loss > (comparison)) + integ_icon_num = 2 + if(integ_loss > (comparison*2)) + integ_icon_num = 3 + if(integ_loss > (comparison*3)) + integ_icon_num = 4 + //no 100% integ loss icon as it'd be visually indistinguishable from limb removal + if(integ_icon_num) + hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[BP.body_zone]_integ[integ_icon_num]")) + for(var/t in get_missing_limbs()) //Missing limbs hud_used.healthdoll.add_overlay(mutable_appearance('icons/hud/screen_gen.dmi', "[t]6")) for(var/t in get_disabled_limbs()) //Disabled limbs diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 430d02f7f1ea..75ea0e1d39f2 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -278,6 +278,9 @@ updatehealth() update_stamina() +/// Restore integrity to MANY bodyparts, in random order +/mob/living/proc/heal_overall_integrity(amount, required_status, updating_health = TRUE) + /// heal MANY bodyparts, in random order /mob/living/proc/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE) adjustBruteLoss(-brute, FALSE) //zero as argument for no instant health update diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b51c748151b8..99db31b26c0f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -706,6 +706,7 @@ cure_blind() cure_husk() hallucination = 0 + heal_overall_integrity(INFINITY, null, TRUE) //heal all limb integrity, so that you can... heal_overall_damage(INFINITY, INFINITY, INFINITY, null, TRUE) //heal brute and burn dmg on both organic and robotic limbs, and update health right away. ExtinguishMob() fire_stacks = 0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 7848b9cbff0a..d06532a1f9a1 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -447,7 +447,7 @@ /** * Heal a robotic body part on a mob */ -/proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute_heal, burn_heal) +/proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute_heal, burn_heal, integrity_loss=0) var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) if(affecting && (!IS_ORGANIC_LIMB(affecting))) var/dam //changes repair text based on how much brute/burn was supplied @@ -456,6 +456,18 @@ else dam = 0 if((brute_heal > 0 && affecting.brute_dam > 0) || (burn_heal > 0 && affecting.burn_dam > 0)) + if(affecting.uses_integrity) + var/integrity_damage_incurred = (affecting.get_curable_damage() >= affecting.integrity_threshold) || (affecting.max_damage - affecting.integrity_loss >= affecting.integrity_threshold) + if(affecting.get_curable_damage(integrity_damage_incurred ? integrity_loss : 0) <= 0) + var/limb_hp_loss = affecting.integrity_loss-affecting.integrity_ignored + if(limb_hp_loss+integrity_loss >= affecting.max_damage) + to_chat(user, "[affecting] is destroyed! It needs structural repairs to be repaired any further.") + else + to_chat(user, "[affecting] has taken too much structural damage, and needs surgery to improve any further.") + return + if (integrity_damage_incurred) + affecting.take_integrity_damage(integrity_loss) + if(affecting.heal_damage(brute_heal, burn_heal, 0, BODYTYPE_ROBOTIC)) H.update_damage_overlays() user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [parse_zone(affecting.body_zone)].", \ diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 283d41524f79..7c48b597e115 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -544,7 +544,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list(new/datum/stack_recipe("cable restrain user.visible_message("[user] starts to fix some of the wires in [H]'s [parse_zone(affecting.body_zone)].", "You start fixing some of the wires in [H == user ? "your" : "[H]'s"] [parse_zone(affecting.body_zone)].") if(!do_after(user, 0.5 SECONDS, H)) return - if(item_heal_robotic(H, user, 0, 15)) + if(item_heal_robotic(H, user, 0, 15, integrity_loss = 5)) use(1) return else diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index ba8dfc7386a2..2bd15cd04a70 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -185,7 +185,7 @@ "You start fixing some of the dents on [target == user ? "your" : "[target]'s"] [parse_zone(attackedLimb.body_zone)].") if(!use_tool(target, user, delay = (target == user ? 5 SECONDS : 0.5 SECONDS), amount = 1, volume = 25)) return TRUE - item_heal_robotic(target, user, brute_heal = 15, burn_heal = 0) + item_heal_robotic(target, user, brute_heal = 15, burn_heal = 0, integrity_loss = 5) return TRUE /obj/item/gun/energy/plasmacutter/use(amount) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 740568eb3480..86735b49a9fb 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -61,6 +61,16 @@ /// Current limb bleeding, increased when the limb takes brute damage over certain thresholds, decreased through bandages and cauterization var/bleeding = 0 + /// Whether this limb can decay, limiting its' ability to heal + var/uses_integrity = FALSE + /// How many hit points worth of integrity this limb has lost. 10 integrity = 10 HP + var/integrity_loss = 0 + /// The amount of integrity_loss that this limb can have without any effects. + var/integrity_ignored = 20 + /// If the limb has lost less than this amount of health, integrity loss should not be accrued. + /// Ignored if this is is greater or equal to the remaining health of the limb. + var/integrity_threshold = 15 + /// So we know if we need to scream if this limb hits max damage var/last_maxed ///If disabled, limb is as good as missing. @@ -124,7 +134,11 @@ var/medium_burn_msg = "blistered" var/heavy_burn_msg = "peeling away" - //band-aid for blood overlays & other external overlays until they get refactored + var/light_integrity_msg = "misaligned" + var/medium_integrity_msg = "twisted" + var/heavy_integrity_msg = "falling apart" + +//band-aid for blood overlays & other external overlays until they get refactored var/stored_icon_state /obj/item/bodypart/Initialize() @@ -281,6 +295,18 @@ . = TRUE return update_bodypart_damage_state() || . + +// Removes integrity from the limb, if it uses integrity. +/obj/item/bodypart/proc/take_integrity_damage(loss) + if (uses_integrity) + integrity_loss = clamp(integrity_loss + loss, 0, max_damage+integrity_ignored) + + +// Heals integrity for the limb, if it uses integrity. +/obj/item/bodypart/proc/heal_integrity(amount) + if (uses_integrity) + integrity_loss = clamp(integrity_loss - amount, 0, max_damage) + //Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. //Damage cannot go below zero. //Cannot remove negative damage (i.e. apply damage) @@ -289,6 +315,12 @@ if(required_status && !(bodytype & required_status)) //So we can only heal certain kinds of limbs, ie robotic vs organic. return + if (uses_integrity && (burn > 0 || brute > 0)) + var/max_heal = max(0, burn_dam + brute_dam - max(0,integrity_loss-integrity_ignored)) + var/total_heal = min(brute,brute_dam)+min(burn,burn_dam) //in case we're trying to heal nonexistent dmg + var/heal_mult = min(1,max_heal/total_heal) + brute *= heal_mult + burn *= heal_mult if(brute) set_brute_dam(round(max(brute_dam - brute, 0), DAMAGE_PRECISION)) adjust_bleeding(-BLOOD_LOSS_DAMAGE_MAXIMUM * brute / max_damage) @@ -296,7 +328,6 @@ set_burn_dam(round(max(burn_dam - burn, 0), DAMAGE_PRECISION)) if(stamina) set_stamina_dam(round(max(stamina_dam - stamina, 0), DAMAGE_PRECISION)) - if(owner) if(can_be_disabled) update_disabled() @@ -365,6 +396,11 @@ total = max(total, stamina_dam) return total +///Returns damage that can be healed on a limb. +/// integrity_cost: Optional, returns how much damage can be healed after losing X integrity +/obj/item/bodypart/proc/get_curable_damage(integrity_cost=0) + var/total = brute_dam + burn_dam - max(0,(integrity_loss+integrity_cost)-integrity_ignored) + return total //Checks disabled status thresholds /obj/item/bodypart/proc/update_disabled() @@ -630,7 +666,6 @@ bone_status = BONE_FLAG_NORMAL RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move)) - draw_color = mutation_color if(should_draw_greyscale) //Should the limb be colored? draw_color ||= (species_color) || (skin_tone && skintone2hex(skin_tone)) @@ -810,3 +845,4 @@ receive_damage(rand(1, 3)) //1-3 damage every 20 tiles for every broken bodypart. //A single broken bodypart will give you an average of 650 tiles to run before you get a total of 100 damage and fall into crit + diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 61bbb88ab545..55d37f7eec79 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -23,6 +23,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE brute_reduction = 5 burn_reduction = 4 @@ -48,6 +49,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE brute_reduction = 5 burn_reduction = 4 @@ -73,6 +75,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE brute_reduction = 5 burn_reduction = 4 @@ -98,6 +101,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE brute_reduction = 5 burn_reduction = 4 @@ -122,6 +126,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE brute_reduction = 5 burn_reduction = 4 @@ -224,6 +229,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE brute_reduction = 5 burn_reduction = 4 diff --git a/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm index dc162eadfe5e..d32a41c2bc1a 100644 --- a/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm @@ -5,6 +5,7 @@ limb_id = "synth" //Overriden in /species/ipc/replace_body() is_dimorphic = FALSE should_draw_greyscale = FALSE + uses_integrity = TRUE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_BOXHEAD light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -22,6 +23,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -38,6 +40,7 @@ limb_id = "synth" should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -54,6 +57,7 @@ limb_id = "synth" should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -70,6 +74,7 @@ limb_id = "synth" should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -86,6 +91,7 @@ limb_id = "synth" should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + uses_integrity = TRUE light_brute_msg = "scratched" medium_brute_msg = "dented" diff --git a/code/modules/surgery/mechanical.dm b/code/modules/surgery/mechanical.dm index 2cf72dab1731..30755a6f3f6c 100644 --- a/code/modules/surgery/mechanical.dm +++ b/code/modules/surgery/mechanical.dm @@ -24,7 +24,7 @@ /datum/surgery_step/mechanic_close ) lying_required = FALSE - self_operable = TRUE + self_operable = FALSE /datum/surgery_step/heal/mechanic name = "repair components" @@ -126,3 +126,52 @@ var/mob/living/carbon/C = target if(!C.get_bodypart(user.zone_selected)) //can only start if limb is missing return TRUE + +/datum/surgery_step/repair_structure + name = "replace structural rods" + time = 3.4 SECONDS + implements = list( + /obj/item/stack/rods = 100 + ) + preop_sound = 'sound/items/ratchet.ogg' + success_sound = 'sound/items/taperecorder_close.ogg' + +/datum/surgery_step/repair_structure/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/stack/rods = tool + if(!tool || rods.get_amount() < 2) + to_chat(user, "You need at least two rods to do this!") + return -1 + if(target_zone == BODY_ZONE_HEAD) + user.visible_message("[user] begins to reinforce [target]'s skull with [tool]...", "You begin to reinforce [target]'s skull with [tool]...") + else + user.visible_message("[user] begins to replace the rods in [target]'s [parse_zone(target_zone)]...", "You begin replacing the rods in [target]'s [parse_zone(target_zone)]...") + +/datum/surgery_step/repair_structure/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/stack/rods = tool + if(!tool || rods.get_amount() < 2) + to_chat(user, "You need at least two rods to do this!") + return FALSE + user.visible_message("[user] successfully restores integrity to [target]'s [parse_zone(target_zone)]!", "You successfully restore integrity to [target]'s [parse_zone(target_zone)].") + //restore all integrity-induced damage, so that they don't just weld themselves into a mess again + var/integ_heal = surgery.operated_bodypart.integrity_loss //ignore integrity_ignored as a little surgery bonus + var/brute_heal = min(surgery.operated_bodypart.brute_dam,integ_heal) + var/burn_heal = max(0,integ_heal-brute_heal) + surgery.operated_bodypart.integrity_loss = 0 + surgery.operated_bodypart.heal_damage(brute_heal,burn_heal,0,null,BODYTYPE_ROBOTIC) + tool.use(2) + return TRUE + + +/datum/surgery/integrity + name = "Replace structure" + possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD, BODY_ZONE_CHEST) + requires_bodypart_type = BODYTYPE_ROBOTIC + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/repair_structure, + /datum/surgery_step/mechanic_close + ) + requires_bodypart = TRUE + lying_required = TRUE + self_operable = FALSE diff --git a/icons/hud/screen_gen.dmi b/icons/hud/screen_gen.dmi index b26bc7375dbb0d152efcc8e2cd61a773985cc4f5..541586687749fea59616b7f7c09d1c44ef935912 100644 GIT binary patch literal 106096 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 Pm3Z`Zjdg0YA4mNkSOu#E literal 104770 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%0AP0iR?7m1EL6 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 lAn^bC81E Date: Sat, 18 Jan 2025 15:09:35 -0600 Subject: [PATCH 077/118] Automatic changelog generation for PR #3589 [ci skip] --- html/changelogs/AutoChangeLog-pr-3589.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3589.yml diff --git a/html/changelogs/AutoChangeLog-pr-3589.yml b/html/changelogs/AutoChangeLog-pr-3589.yml new file mode 100644 index 000000000000..ae4197315f16 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3589.yml @@ -0,0 +1,11 @@ +author: TDHooligan +changes: + - {rscadd: "Robotic body parts now have integrity, 1 'integrity loss' represents + 1 HP of damage that cannot be healed/repaired."} + - {rscadd: New 'Replace Structure' surgery that allows a roboticist to restore limb + integrity.} + - {rscadd: New 'Structure Repair Kit' craft that restores limb integrity.} + - {balance: 'Robotic limbs start wearing out after multiple repairs, limiting their + repair potential.'} + - {balance: Repair machinery is no longer self-operable.} +delete-after: true From 56e0fb47f51d781b45644bc2b5dbd6fcff293fc7 Mon Sep 17 00:00:00 2001 From: Burning02 <141873051+Burning02@users.noreply.github.com> Date: Sat, 18 Jan 2025 15:50:24 -0500 Subject: [PATCH 078/118] Adds one singular item to the Banshee that I forgot (#4029) ## About The Pull Request Adds a Sergeants armoured vest as an alternative to the Captains vest on the Banshee ## Why It's Good For The Game This singular addition gives the captain something else to wear, if they don't fancy the Captains coat they're given ## Changelog :cl: add: Adds a singular Sergeants vest to the Banshee Captains equipment /:cl: --- _maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm | 1 + 1 file changed, 1 insertion(+) diff --git a/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm b/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm index 64ef8e0fd1e9..c3bd56b5842c 100644 --- a/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm +++ b/_maps/shuttles/syndicate/syndicate_hardliners_banshee.dmm @@ -1916,6 +1916,7 @@ /obj/item/storage/box/ammo/a357, /obj/item/megaphone, /obj/item/clothing/under/syndicate/hardliners/jumpsuit, +/obj/item/clothing/suit/armor/hardliners/sergeant, /obj/item/storage/guncase/pistol/a357, /obj/machinery/turretid/ship{ pixel_y = 24; From 2d12ae1f047a0c5a9b01cc7008f2bbb24e1de9b8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 15:21:49 -0600 Subject: [PATCH 079/118] Automatic changelog generation for PR #4029 [ci skip] --- html/changelogs/AutoChangeLog-pr-4029.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4029.yml diff --git a/html/changelogs/AutoChangeLog-pr-4029.yml b/html/changelogs/AutoChangeLog-pr-4029.yml new file mode 100644 index 000000000000..5e0a147a3141 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4029.yml @@ -0,0 +1,4 @@ +author: Burning02 +changes: + - {rscadd: Adds a singular Sergeants vest to the Banshee Captains equipment} +delete-after: true From 620ae75e929f267727b184ce4b859ff40b96be87 Mon Sep 17 00:00:00 2001 From: Apogee-dev <60533805+Apogee-dev@users.noreply.github.com> Date: Sat, 18 Jan 2025 14:27:38 -0800 Subject: [PATCH 080/118] Firestorm Fixes (#4033) ## About The Pull Request Fixes a broken path on the firestorm pan magazine crate, fixes the ammo capacity of its pan magazine, and tweaks fire rate up ever so slightly. ## Why It's Good For The Game ## Changelog :cl: fix: fixed firestorm pan magazine capacity and crate /:cl: --- code/modules/cargo/packs/magazines.dm | 4 ++-- code/modules/projectiles/boxes_magazines/external/smg.dm | 4 ++-- .../projectiles/guns/manufacturer/hunter_pride/ballistics.dm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/cargo/packs/magazines.dm b/code/modules/cargo/packs/magazines.dm index 219fce130049..9bbc06083fda 100644 --- a/code/modules/cargo/packs/magazines.dm +++ b/code/modules/cargo/packs/magazines.dm @@ -59,8 +59,8 @@ /datum/supply_pack/magazine/firestorm_mag name = "Firestorm Pan Magazine Crate" - desc = "Contains a 50-round pan magazine for the Hunter's Pride Firestorm SMG." - contains = list(/obj/item/ammo_box/magazine/c45_firestorm_mag/pan/empty) + desc = "Contains a 40-round pan magazine for the Hunter's Pride Firestorm SMG." + contains = list(/obj/item/ammo_box/magazine/c44_firestorm_mag/pan/empty) cost = 1000 faction = /datum/faction/srm diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 5eb7dac5f154..9947c0e53ca5 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -105,12 +105,12 @@ desc = "A bulky, 40-round pan magazine for the toploading Firestorm submachine gun. The rate of fire may be low, but this much ammo can mow through anything." icon_state = "firestorm_pan" base_icon_state = "firestorm_pan" - max_ammo = 50 + max_ammo = 40 w_class = WEIGHT_CLASS_NORMAL /obj/item/ammo_box/magazine/c44_firestorm_mag/pan/update_icon_state() //Causes the mag to NOT inherit the parent's update_icon oooh the misery . = ..() icon_state = "firestorm_pan" -/obj/item/ammo_box/magazine/c45_firestorm_mag/pan/empty +/obj/item/ammo_box/magazine/c44_firestorm_mag/pan/empty start_empty = TRUE diff --git a/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm b/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm index 117f3f810bf0..c71564052a8c 100644 --- a/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/hunter_pride/ballistics.dm @@ -269,7 +269,7 @@ NO_MAG_GUN_HELPER(automatic/pistol/candor/factory) unique_mag_sprites_for_variants = TRUE burst_size = 1 actions_types = list() - fire_delay = 0.3 SECONDS + fire_delay = 0.22 SECONDS bolt_type = BOLT_TYPE_OPEN rack_sound = 'sound/weapons/gun/smg/uzi_cocked.ogg' fire_sound = 'sound/weapons/gun/smg/firestorm.ogg' From 42eda6776d677e4539f6c6e48ca46b0a31b9f7bc Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 16:37:52 -0600 Subject: [PATCH 081/118] Automatic changelog generation for PR #4033 [ci skip] --- html/changelogs/AutoChangeLog-pr-4033.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4033.yml diff --git a/html/changelogs/AutoChangeLog-pr-4033.yml b/html/changelogs/AutoChangeLog-pr-4033.yml new file mode 100644 index 000000000000..cff88e50a61d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4033.yml @@ -0,0 +1,4 @@ +author: Apogee-dev +changes: + - {bugfix: fixed firestorm pan magazine capacity and crate} +delete-after: true From 64cbc9297f7774304db9bd57b2bd4ee359090e05 Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:28:10 -0500 Subject: [PATCH 082/118] Flare and floodlight tweaks (#3997) ## About The Pull Request This PR triples the lifetime of flares, and it increases their light range from 7 to 12. It also modifies the light range list for floodlights from (0, 5, 10, 15) to (0, 10, 15, 20). ![image](https://github.com/user-attachments/assets/a01f9581-d700-48d7-ae24-709d81dfb720) This shows how much area the flares light up with this change. https://github.com/user-attachments/assets/0208c6ff-b6d8-4ef8-95f0-4568bc875f4f This video shows how much area the floodlights will swath in light with this change. ## Why It's Good For The Game I believe that this change will help flares be used more often, as this will make them light up a greater area than they do right now, and it will also increase the length of time for which they will burn. This PR will also increase the effectiveness of floodlights. ## Changelog :cl: balance: increased flare lifetime and light range, and increased maximum floodlight light range /:cl: --- code/game/objects/items/devices/flashlight.dm | 4 ++-- code/modules/power/floodlight.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9dd5d80d78bf..84d1d0ab08cf 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -262,11 +262,11 @@ name = "flare" desc = "A generic red flare. There are instructions on the side, it reads 'pull cord, make light'." w_class = WEIGHT_CLASS_SMALL - light_range = 7 // Pretty bright. + light_range = 12 // Pretty bright. icon_state = "flare" item_state = "flare" actions_types = list() - var/fuel = 900 + var/fuel = 2700 var/on_damage = 7 var/produce_heat = 1500 heat = 1000 diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 0fe0b51c6193..489135e84f8f 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -65,7 +65,7 @@ active_power_usage = ACTIVE_DRAW_MEDIUM anchored = FALSE light_power = 1.75 - var/list/light_setting_list = list(0, 5, 10, 15) + var/list/light_setting_list = list(0, 10, 15, 20) var/light_power_coefficient = 200 var/setting = FLOODLIGHT_OFF From bacdd8e6efdaf6b4d41f48724a6919a486fb21c4 Mon Sep 17 00:00:00 2001 From: Jedi-Toothpaste <53096233+Jedi-Toothpaste@users.noreply.github.com> Date: Sat, 18 Jan 2025 22:28:24 +0000 Subject: [PATCH 083/118] Price Rebalance & Cruft Removal (#3993) ## About The Pull Request Rampant price changes to many items in cargo! I have longingly stared at the cargo console for many hours wondering, "why don't more people cook on the ship?" or, "why don't we buy the party crate to celebrate?" before turning to the price and dying inside. It's salt in the wound when you can go down to the outpost bar and buy all the components for less than 500 credits. With these price reductions i'm hoping to see these things _actually_ be bought so crews can do more stupid roleplay stuff without having to do a whole class 1 drill for a janitorial cart. ### **NEW ADDITIONS**: **SPARE ID CRATE** - 100 Credits - There is currently no way to get more IDs, unless you go looting legion corpses, which isn't always something crews should have to do in the event of an accident. **SPARE JUMPSUIT CRATE** - 150 Credits - did you know before these changes, buying a replacement pair of clothes was, at cheapest, 1500 credits, or going to kill a legion (if you're a monster) **BULK EPIPEN CRATE** - 600 Credits - This was also something we didn't have? Again, the only solution was to go out and mass-murder legion, which isn't something medships will want to be doing. The price also low enough that the more militant ships may consider assigning them to their soldiers... **KITCHEN KNIFE CRATE** - 100 Credits - Well, you always need a knife for a kitchen, and it's cheaper than buying more metal. **COMBAT KNIVES CRATE** - 1000 Credits - A meaner knife for those looking to splurge, it's got three knives for your ravenous crew. ### **PRICE CHANGES** **ANIMAL SECTION** Monkey Crate 2000 -> 1500 Chicken Crate 2000 -> 500 Goat Crate 2500 -> 750 Cow Crate 3000 -> 500 Cat Crate 5000 -> 1000 Pug Crate 5000 -> 1000 Corgi Crate 5000 -> 1000 Exotic Corgi Crate 5000 -> 1000 Bird Crate 4000 -> 2000 (now can only spawn 1 parrot instead of 5) Fox Crate 5000 -> 1000 Butterfly Crate 5000 -> 500 (can now only spawn up to 3 butterflies instead of up to 50) Snake Crate 5000 -> 1000 (can only spawn 1 snake instead of 3) **CIVILIAN SECTION** Janitorial Supplies Crate 1000 -> 100 (now only spawns 1 bucket and no cleaner grenades) Janitor Backpack Crate 1000 -> 750 Janicart Crate 2000 -> 400 Calligraphy Crate 700 -> 250 Wrapping Paper Crate 1000 -> 100 Bureaucracy Crate 1000 -> 250 Forensics Crate 2000 -> 500 Party Equipment 2500 -> 500 Big Band Instruments 5000 -> 2500 Potted Plants Crate 700 -> 350 Carpet Crate 1000 -> 350 Exotic Carpet Crate 3000 -> 750 (reduced the amount of carpet you get) Noslip Tiles 2000 -> 1000 (doubled the amount of tiles you get too) Jukebox 35000 -> 1500 (why was this so expensive) Art Supplies 1000 -> 750 (is now an easel set with canvases) **Toys & Costumes** Training Toolbox Crate 1000 -> 100 Foam Force Crate 1000 -> 100 (reduced the amount of shotguns from 8 to 2) Foam Force Pistols Crate 1000 -> 400 Laser Tag Crate 1500 -> 500 Toy Crate 2000 -> 250 Original Costume Crate 1000 -> 500 Exosuit Pilot's Crate 1500 -> 500 Formalwear Crate 3000 -> 1000 Justice Enforcer Crate 6000 -> 2000 Collectable Hats 20000 -> 250 Rilena Merch 1000 -> 500 **EMERGENCY SECTION** Phorid Suit Kit 1000 -> 500 (halved the amount of suits in the crate, so halved the price) Firefighting Kit 2000 -> 500 (halved the amount of suits in the crate) **FOOD** Basic Ingredients Crate 300 -> 350 (added enzyme and more milk, so slightly higher price) Condiments Crate 250 -> 100 (removed enzyme and added mayonnaise) Vegetables Crate 250 -> 100 Fruit Crate 250 -> 100 Sugar Crate 500 -> 150 Ethanol Crate 750 -> 500 Weed Control Crate 750 -> 200 Seeds Crate 750 -> 150 **MACHINERY** Lightbulbs Crate 1000 -> 500 (could go cheaper for just glass basically) Power Cell Crate 1000 -> 1500 (as expensive as fuel, or t2 parts) Portable Pump 1500 -> 750 Portable Scrubber 1500 -> 750 Huge Scrubber 5000 -> 2000 **SEC SUPPLY** Survival Knives 500 -> 350 **SPACESUITS & ARMOUR** Space Suit Crate now contains two EVA spacesuits and not the ugly old-sprites. **TOOLS** > Mining Crate 1000 -> 250 (1000 for things you can print at a lathe? In this economy!) > Plasmacutter Crate 2500 -> 2000 Plasmacutter Crate remains at 2500 Mining Crate 1000 -> 500 (with an N+S Discount) **MATERIAL** Plasteel Sheets 2500 -> 2000 (it should honestly be cheaper but I will wait until OM5) Plasma Sheets 2000 -> 1500 Uranium Sheets 2000 -> 1500 Titanium Sheets 3000 -> 1500 Gold Sheets 4000 -> 2000 Silver Sheets 4000 -> 2000 1 Diamond 3500 -> 2500 Plastic Sheets 1000 -> 500 Cardboard Sheets 1000 -> 250 Wooden Planks 1500 -> 500 **CANISTERS** Oxygen Canister 1000 -> 750 Final points: a few things have been removed, such as the mafia crate, this has finally killed the italian moustache from cargo. Some descriptions were also changed, such as the MuleBot's to be less... 'TG'. Please let me know if you know of any other weird descriptions which don't really fit in. Also all mentions of Plasmaman in cargo have been renamed to Phorid. Price of the 5 cells has been increased to 1500 because a full recharge of your ship should cost as much as a stack of plasma or uranium. On that subject, the price of plasma and uranium are now as expensive as a box of t2 parts, so captains aren't forced to buy better parts roundstart. ## Why It's Good For The Game More roleplay oppurtunities for ships which may not get as many credits (i.e. SUNS, SOLCON, MEDSHIPS). Removes TG Cruft. A full janitorial set is now 500 credits. ## Changelog :cl: balance: Many price reductions have occured, happy shopping. del: Removed the mafia crate change: Changed descriptions on a few cargo orders /:cl: --------- Signed-off-by: Jedi-Toothpaste <53096233+Jedi-Toothpaste@users.noreply.github.com> Co-authored-by: Erika Fox <94164348+Erikafox@users.noreply.github.com> --- code/modules/cargo/packs/animal.dm | 45 +++++------- code/modules/cargo/packs/canister.dm | 2 +- code/modules/cargo/packs/civilian.dm | 89 ++++++++++++----------- code/modules/cargo/packs/costumes_toys.dm | 55 +++++--------- code/modules/cargo/packs/emergency.dm | 25 +++---- code/modules/cargo/packs/food.dm | 40 ++++++---- code/modules/cargo/packs/machinery.dm | 12 +-- code/modules/cargo/packs/material.dm | 20 ++--- code/modules/cargo/packs/medical.dm | 8 ++ code/modules/cargo/packs/sec_supply.dm | 13 +++- code/modules/cargo/packs/spacesuits.dm | 13 ++-- code/modules/cargo/packs/tools.dm | 6 +- 12 files changed, 162 insertions(+), 166 deletions(-) diff --git a/code/modules/cargo/packs/animal.dm b/code/modules/cargo/packs/animal.dm index 50a9d607b285..6e3bab3984b3 100644 --- a/code/modules/cargo/packs/animal.dm +++ b/code/modules/cargo/packs/animal.dm @@ -9,29 +9,29 @@ /datum/supply_pack/animal/monkey name = "Monkey Cube Crate" desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" - cost = 2000 + cost = 1500 contains = list (/obj/item/storage/box/monkeycubes) crate_name = "monkey cube crate" crate_type = /obj/structure/closet/crate /datum/supply_pack/animal/chick name = "Chicken Crate" - desc = "The chicken goes bwaak!" - cost = 2000 + desc = "A crate containing a chicken." + cost = 500 contains = list(/mob/living/simple_animal/chick) crate_name = "chicken crate" /datum/supply_pack/animal/goat name = "Goat Crate" - desc = "The goat goes baa! Warranty void if used as a replacement for Pete." - cost = 2500 + desc = "A crate containing a goat." + cost = 750 contains = list(/mob/living/simple_animal/hostile/retaliate/goat) crate_name = "goat crate" /datum/supply_pack/animal/cow name = "Cow Crate" - desc = "The cow goes moo!" - cost = 3000 + desc = "A crate containing a cow." + cost = 500 contains = list(/mob/living/simple_animal/cow) crate_name = "cow crate" @@ -42,7 +42,7 @@ /datum/supply_pack/animal/cat name = "Cat Crate" desc = "The cat goes meow! Comes with a collar and a nice cat toy! Cheeseburger not included."//i can't believe im making this reference - cost = 5000 //Cats are worth as much as corgis. + cost = 1000 //Cats are worth as much as corgis. contains = list(/mob/living/simple_animal/pet/cat, /obj/item/clothing/neck/petcollar, /obj/item/toy/cattoy) @@ -58,7 +58,7 @@ /datum/supply_pack/animal/pug name = "Pug Crate" desc = "Like a normal dog, but... squished. Comes with a nice collar!" - cost = 5000 + cost = 1000 contains = list(/mob/living/simple_animal/pet/dog/pug, /obj/item/clothing/neck/petcollar) crate_name = "pug crate" @@ -66,7 +66,7 @@ /datum/supply_pack/animal/corgi name = "Corgi Crate" desc = "Considered the optimal dog breed by thousands of research scientists, this Corgi is but one dog from the millions of Ian's noble bloodline. Comes with a cute collar!" - cost = 5000 + cost = 1000 contains = list(/mob/living/simple_animal/pet/dog/corgi, /obj/item/clothing/neck/petcollar) crate_name = "corgi crate" @@ -82,7 +82,7 @@ /datum/supply_pack/animal/corgis/exotic name = "Exotic Corgi Crate" desc = "Corgis fit for a king, these corgis come in a unique color to signify their superiority. Comes with a cute collar!" - cost = 5500 + cost = 1500 contains = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi, /obj/item/clothing/neck/petcollar) crate_name = "exotic corgi crate" @@ -93,20 +93,15 @@ /datum/supply_pack/animal/parrot name = "Bird Crate" - desc = "Contains five expert telecommunication birds." - cost = 4000 + desc = "Contains an expert telecommunication bird." + cost = 2000 contains = list(/mob/living/simple_animal/parrot) crate_name = "parrot crate" -/datum/supply_pack/animal/parrot/generate() - . = ..() - for(var/i in 1 to 4) - new /mob/living/simple_animal/parrot(.) - /datum/supply_pack/animal/fox name = "Fox Crate" desc = "The fox goes...? Comes with a collar!"//what does the fox say // awful //yip - cost = 5000 + cost = 1000 contains = list(/mob/living/simple_animal/pet/fox, /obj/item/clothing/neck/petcollar) crate_name = "fox crate" @@ -114,22 +109,20 @@ /datum/supply_pack/animal/butterfly name = "Butterflies Crate" desc = "Not a very dangerous insect, but they do give off a better image than, say, flies or cockroaches."//is that a motherfucking worm reference - cost = 5000 + cost = 500 contains = list(/mob/living/simple_animal/butterfly) crate_name = "entomology samples crate" /datum/supply_pack/animal/butterfly/generate() . = ..() - for(var/i in 1 to 49) + for(var/i in 1 to 3) new /mob/living/simple_animal/butterfly(.) /datum/supply_pack/animal/snake name = "Snake Crate" - desc = "Tired of these MOTHER FUCKING snakes on this MOTHER FUCKING spaceplane? Then this isn't the crate for you. Contains three poisonous snakes." - cost = 5000 - contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake, - /mob/living/simple_animal/hostile/retaliate/poison/snake, - /mob/living/simple_animal/hostile/retaliate/poison/snake) + desc = "Contains a poisonous snake. N+S Logistics are not responsible for any venomous injuries you may sustain." + cost = 1000 + contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake) crate_name = "snake crate" /* diff --git a/code/modules/cargo/packs/canister.dm b/code/modules/cargo/packs/canister.dm index 00fed0ff679f..95b3f80d0b11 100644 --- a/code/modules/cargo/packs/canister.dm +++ b/code/modules/cargo/packs/canister.dm @@ -16,7 +16,7 @@ /datum/supply_pack/canister/oxygen name = "Oxygen Canister" desc = "Contains a canister of oxygen. Great for refilling oxygen tanks." - cost = 1000 + cost = 750 contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) crate_name = "oxygen canister crate" diff --git a/code/modules/cargo/packs/civilian.dm b/code/modules/cargo/packs/civilian.dm index 9e0e8c7af6f7..c6f95ac50def 100644 --- a/code/modules/cargo/packs/civilian.dm +++ b/code/modules/cargo/packs/civilian.dm @@ -7,11 +7,9 @@ /datum/supply_pack/civilian/janitor name = "Janitorial Supplies Crate" - desc = "Fight back against dirt and grime with these janitorial essentials. Contains three buckets, caution signs, and cleaner grenades. Also has a single mop, broom, spray cleaner, rag, and trash bag." - cost = 1000 + desc = "Fight back against dirt and grime with these janitorial essentials. Contains a mop, pushbroom, a few wet-floor signs, a trash bag, and a cloth and spray." + cost = 100 contains = list(/obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket, /obj/item/mop, /obj/item/pushbroom, /obj/item/clothing/suit/caution, @@ -19,23 +17,20 @@ /obj/item/clothing/suit/caution, /obj/item/storage/bag/trash, /obj/item/reagent_containers/spray/cleaner, - /obj/item/reagent_containers/glass/rag, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner) + /obj/item/reagent_containers/glass/rag) crate_name = "janitorial supplies crate" /datum/supply_pack/civilian/janitank name = "Janitor Backpack Crate" desc = "Call forth divine judgement upon dirt and grime with this high capacity janitor backpack. Contains 500 units of filth-cleansing space cleaner." - cost = 1000 + cost = 750 contains = list(/obj/item/watertank/janitor) crate_name = "janitor backpack crate" /datum/supply_pack/civilian/janicart name = "Janitorial Cart and Galoshes Crate" desc = "The keystone to any successful janitor. As long as you have feet, this pair of galoshes will keep them firmly planted on the ground. Also contains a janitorial cart." - cost = 2000 + cost = 400 contains = list(/obj/structure/janitorialcart, /obj/item/clothing/shoes/galoshes) crate_name = "janitorial cart crate" @@ -74,7 +69,7 @@ /datum/supply_pack/civilian/fountainpens name = "Calligraphy Crate" desc = "Sign death warrants in style with these seven executive fountain pens." - cost = 700 + cost = 250 contains = list(/obj/item/storage/box/fountainpens) crate_name = "calligraphy crate" crate_type = /obj/structure/closet/crate/wooden @@ -83,7 +78,7 @@ /datum/supply_pack/civilian/wrapping_paper name = "Festive Wrapping Paper Crate" desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, flattened flowers? You can do all that, with this crate full of wrapping paper." - cost = 1000 + cost = 100 contains = list(/obj/item/stack/wrapping_paper) crate_name = "festive wrapping paper crate" crate_type = /obj/structure/closet/crate/wooden @@ -91,7 +86,7 @@ /datum/supply_pack/civilian/paper name = "Bureaucracy Crate" desc = "High stacks of papers on your desk are a big problem - make it Pea-sized with these bureaucratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, a carbon paper bin, three folders, a laser pointer, two clipboards and two stamps."//that was too forced - cost = 1000 + cost = 250 contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, /obj/item/camera_film, /obj/item/hand_labeler, @@ -118,7 +113,7 @@ /datum/supply_pack/civilian/forensics name = "Forensics Crate" desc = "Stay hot on the criminal's heels with Nanotrasen's Detective Essentials(tm). Contains a forensics scanner, six evidence bags, camera, tape recorder, white crayon, and of course, a fedora." - cost = 2000 + cost = 500 contains = list(/obj/item/detective_scanner, /obj/item/storage/box/evidence, /obj/item/camera, @@ -130,7 +125,7 @@ /datum/supply_pack/civilian/party name = "Party Equipment" desc = "Celebrate both life and death on the frontier with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, six beers, six sodas, two ales, and a bottle of patron, goldschlager, and shaker!" - cost = 2500 + cost = 500 contains = list(/obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/shaker, /obj/item/reagent_containers/food/drinks/bottle/patron, @@ -151,7 +146,7 @@ /datum/supply_pack/civilian/bigband name = "Big Band Instrument Collection" desc = "Get your demoralized crew movin' and groovin' with this fine collection! Contains nine different instruments!" - cost = 5000 + cost = 2500 contains = list(/obj/item/instrument/violin, /obj/item/instrument/guitar, /obj/item/instrument/glockenspiel, @@ -171,7 +166,7 @@ /datum/supply_pack/civilian/potted_plants name = "Potted Plants Crate" desc = "Spruce up the ship with these lovely plants! Contains a random assortment of five potted plants from Nanotrasen's potted plant research division. Warranty void if thrown." - cost = 700 + cost = 350 contains = list(/obj/item/kirbyplants/random, /obj/item/kirbyplants/random, /obj/item/kirbyplants/random, @@ -181,62 +176,72 @@ /datum/supply_pack/civilian/artsupply name = "Art Supplies" - desc = "Make some happy little accidents with a rapid cable layer, three spraycans, and lots of crayons!" - cost = 1000 - contains = list(/obj/item/rcl, - /obj/item/storage/toolbox/artistic, - /obj/item/toy/crayon/spraycan, - /obj/item/toy/crayon/spraycan, - /obj/item/toy/crayon/spraycan, + desc = "Make some happy little accidents with an easel, and unlimited imagination! Imagination not included." //removed the rcl, shiptest doesn't have the space for wireart (literally) + cost = 750 + contains = list(/obj/structure/easel, + /obj/item/canvas, + /obj/item/canvas, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXnineteen, /obj/item/storage/crayons, - /obj/item/toy/crayon/white, - /obj/item/toy/crayon/rainbow) + /obj/item/toy/crayon/spraycan,) crate_name = "art supply crate" crate_type = /obj/structure/closet/crate/wooden /datum/supply_pack/civilian/carpet name = "Standard Carpet Crate" desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together." - cost = 1000 + cost = 350 contains = list(/obj/item/stack/tile/carpet/fifty, - /obj/item/stack/tile/carpet/fifty, - /obj/item/stack/tile/carpet/black/fifty, /obj/item/stack/tile/carpet/black/fifty) crate_name = "premium carpet crate" /datum/supply_pack/civilian/carpet_exotic name = "Exotic Carpet Crate" - desc = "Exotic carpets for all your decorating needs. Contains 100 tiles each of 8 different flooring patterns." - cost = 3000 + desc = "Exotic carpets for all your decorating needs. Contains 50 tiles each of 8 different flooring patterns." + cost = 750 contains = list(/obj/item/stack/tile/carpet/blue/fifty, - /obj/item/stack/tile/carpet/blue/fifty, - /obj/item/stack/tile/carpet/cyan/fifty, /obj/item/stack/tile/carpet/cyan/fifty, /obj/item/stack/tile/carpet/green/fifty, - /obj/item/stack/tile/carpet/green/fifty, /obj/item/stack/tile/carpet/orange/fifty, - /obj/item/stack/tile/carpet/orange/fifty, - /obj/item/stack/tile/carpet/purple/fifty, /obj/item/stack/tile/carpet/purple/fifty, /obj/item/stack/tile/carpet/red/fifty, - /obj/item/stack/tile/carpet/red/fifty, - /obj/item/stack/tile/carpet/royalblue/fifty, /obj/item/stack/tile/carpet/royalblue/fifty, - /obj/item/stack/tile/carpet/royalblack/fifty, /obj/item/stack/tile/carpet/royalblack/fifty) crate_name = "exotic carpet crate" /datum/supply_pack/civilian/noslipfloor name = "High-traction Floor Tiles" desc = "Make slipping a thing of the past with thirty industrial-grade anti-slip floortiles!" - cost = 2000 - contains = list(/obj/item/stack/tile/noslip/thirty) + cost = 1000 + contains = list(/obj/item/stack/tile/noslip/thirty, + /obj/item/stack/tile/noslip/thirty) crate_name = "high-traction floor tiles crate" /datum/supply_pack/civilian/jukebox name = "Jukebox" desc = "Things a bit dull in the workplace? How about jamming out to some tunes!" - cost = 35000 + cost = 1500 contains = list(/obj/machinery/jukebox) crate_name = "Jukebox" +/datum/supply_pack/civilian/id_crate + name = "Box of Spare IDs" + desc = "A box of spare IDs for replacing a lost ID." + cost = 100 + contains = list(/obj/item/storage/box/ids) + +/datum/supply_pack/civilian/spare_clothes + name = "Spare Jumpsuits Crate" + desc = "Contains a spare set of utility jumpsuits and shoes for those unfortunate accidents." //how did we not have this before + cost = 150 + contains = list(/obj/item/clothing/under/utility, + /obj/item/clothing/under/utility/skirt, + /obj/item/clothing/shoes/sneakers/black, + /obj/item/clothing/shoes/sneakers/black) + crate_name = "spare jumpsuits crate" + crate_type = /obj/structure/closet/crate/wooden diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 03d8cffd0368..f6d288839ad4 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -8,7 +8,7 @@ /datum/supply_pack/costumes_toys/training_toolbox name = "Training Toolbox Crate" desc = "Hone your combat abiltities with two AURUMILL-Brand Training Toolboxes! Guarenteed to count hits made against living beings!" - cost = 1000 + cost = 100 contains = list(/obj/item/training_toolbox, /obj/item/training_toolbox ) @@ -16,32 +16,26 @@ /datum/supply_pack/costumes_toys/foamforce name = "Foam Force Crate" - desc = "Break out the big guns with eight Foam Force shotguns!" - cost = 1000 + desc = "Break out the big guns with two Foam Force shotguns!" + cost = 200 contains = list(/obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, /obj/item/gun/ballistic/shotgun/toy) - crate_name = "foam force crate" + crate_name = "foam force shotgun crate" /datum/supply_pack/costumes_toys/foamforce/bonus name = "Foam Force Pistols Crate" - desc = "Psst.. hey bud... remember those old foam force pistols that got discontinued for being too cool? Well I got two of those right here with your name on em. I'll even throw in a spare mag for each, waddya say?" - cost = 1000 + desc = "No longer discontinued! Enjoy the fun Gezenan Family Tradition no matter where you are! Includes two automatic Foam Force Pistols with magazines." + cost = 400 contains = list(/obj/item/gun/ballistic/automatic/toy/pistol, /obj/item/gun/ballistic/automatic/toy/pistol, /obj/item/ammo_box/magazine/toy/pistol, /obj/item/ammo_box/magazine/toy/pistol) - crate_name = "foam force crate" + crate_name = "foam force pistol crate" /datum/supply_pack/costumes_toys/lasertag name = "Laser Tag Crate" - desc = "Foam Force is for boys. Laser Tag is for men. Contains three sets of red suits, blue suits, matching helmets, and matching laser tag guns." - cost = 1500 + desc = "Are you tired of Foam Force? Looking for a real thrill? The new NT-Lasertag System is sure to Rock Your Socks, no cleanup required, just plain fun. The NT Way: includes enough equipment for a 3v3 laser-tag shootout." + cost = 100 contains = list(/obj/item/gun/energy/laser/redtag, /obj/item/gun/energy/laser/redtag, /obj/item/gun/energy/laser/redtag, @@ -64,8 +58,8 @@ /datum/supply_pack/costumes_toys/arcade_toys name = "Toy Crate" - desc = "Who cares about pride and accomplishment? Skip the gaming and get straight to the sweet rewards with this product! Contains five random toys. Warranty void if used to prank research directors." - cost = 2000 // or play the arcade machines ya lazy bum + desc = "A bulk assortment of five toys for filling up crane machines." + cost = 250 // or play the arcade machines ya lazy bum contains = list() crate_name = "toy crate" @@ -85,7 +79,7 @@ /datum/supply_pack/costumes_toys/costume_original name = "Original Costume Crate" desc = "Reenact Solarian plays with this assortment of outfits. Contains eight different costumes!" - cost = 1000 + cost = 500 contains = list(/obj/item/clothing/head/snowman, /obj/item/clothing/suit/snowman, /obj/item/clothing/mask/gas/monkeymask, @@ -95,25 +89,10 @@ crate_name = "original costume crate" crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/costumes_toys/mafia - name = "Cosa Nostra Starter Pack" - desc = "This crate contains everything you need to set up your own ethnicity-based racketeering operation." - cost = 1000 - contains = list() - -/datum/supply_pack/costumes_toys/mafia/fill(obj/structure/closet/crate/C) - for(var/i in 1 to 4) - new /obj/effect/spawner/random/clothing/mafia_outfit(C) - new /obj/item/virgin_mary(C) - if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying. - new /obj/item/clothing/mask/fakemoustache/italian(C) - if(prob(10)) //A little extra sugar every now and then to shake things up. - new /obj/item/melee/knife/switchblade(C) - /datum/supply_pack/costumes_toys/mech_suits name = "Exosuit Pilot's Suit Crate" desc = "Suits for piloting big robots. Contains all three colors!" - cost = 1500 //state-of-the-art technology doesn't come cheap + cost = 500 //state-of-the-art technology does come cheap contains = list(/obj/item/clothing/under/costume/mech_suit, /obj/item/clothing/under/costume/mech_suit/white, /obj/item/clothing/under/costume/mech_suit/blue) @@ -123,7 +102,7 @@ /datum/supply_pack/costumes_toys/formalwear name = "Formalwear Crate" desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing." - cost = 3000 //Lots of very expensive items. You gotta pay up to look good! + cost = 1000 //Lots of very expensive items. You gotta pay up to look good! contains = list(/obj/item/clothing/under/dress/blacktango, /obj/item/clothing/under/misc/assistantformal, /obj/item/clothing/under/misc/assistantformal, @@ -157,7 +136,7 @@ /datum/supply_pack/costumes_toys/justiceinbound name = "Standard Justice Enforcer Crate" desc = "This is it. The Bee's Knees. The Creme of the Crop. The Pick of the Litter. The best of the best of the best. The Crown Jewel of Nanotrasen. The Alpha and the Omega of security headwear. Guaranteed to strike fear into the hearts of each and every criminal unfortunate enough to hear its screeching wail bore into their soul. Also comes with a security gasmask." - cost = 6000 //justice comes at a price. An expensive, noisy price. + cost = 2000 //justice comes at a price. An expensive, noisy price. contains = list(/obj/item/clothing/head/helmet/justice, /obj/item/clothing/mask/gas) crate_name = "security clothing crate" @@ -165,7 +144,7 @@ /datum/supply_pack/costumes_toys/collectable_hats name = "Collectable Hats Crate" desc = "Flaunt your status with three unique, highly-collectable hats!" - cost = 20000 + cost = 250 contains = list(/obj/item/clothing/head/collectable/chef, /obj/item/clothing/head/collectable/tophat, /obj/item/clothing/head/collectable/captain, @@ -191,7 +170,7 @@ /datum/supply_pack/costumes_toys/rilena_merch name = "RILENA Merchandise Crate" desc = "A crate full of all the RILENA merch you could ever want. Except the offbrand stuff. That's not in here." - cost = 1000 //lots of loot + cost = 500 //lots of loot contains = list(/obj/item/toy/figure/tali, /obj/item/toy/plush/rilena, /obj/item/toy/plush/tali, diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 41401dbce477..913e467768bb 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -21,24 +21,21 @@ crate_name = "internals crate" /datum/supply_pack/emergency/plasmaman_tank - name = "Plasmaman Internals Crate" - desc = "Contains two plasmaman belt tanks, for when you just can't bear to refill a normal tank with plasma. Plasma canisters sold separately." + name = "Phorid Internals Crate" + desc = "Contains two Phorid belt tanks, for when you just can't bear to refill a normal tank with plasma. Plasma canisters sold separately." cost = 100 contains = list(/obj/item/tank/internals/plasmaman/belt/full, /obj/item/tank/internals/plasmaman/belt/full) - crate_name = "plasmaman internals crate" + crate_name = "phorid internals crate" /datum/supply_pack/emergency/plasmaman_suit - name = "Plasmaman Suit Kit" - desc = "Keep the Plasmaman in your life comfy with two sets of Plasmaman envirosuits. Each set contains a plasmaman jumpsuit and helmet; refills sold separately." - cost = 1000 + name = "Phorid Suit Kit" + desc = "Keep the Phorid in your life comfy with a Phorid envirosuit. Refills sold seperately." + cost = 500 //halves the price, halves the equipment. It's unlikely you need to equip more than 1 phorid at a time anyway contains = list(/obj/item/clothing/under/plasmaman, - /obj/item/clothing/under/plasmaman, /obj/item/clothing/head/helmet/space/plasmaman, - /obj/item/clothing/head/helmet/space/plasmaman, - /obj/item/clothing/gloves/color/plasmaman, /obj/item/clothing/gloves/color/plasmaman) - crate_name = "plasmaman supply kit" + crate_name = "phorid supply kit" /* Niche protection @@ -54,15 +51,11 @@ /datum/supply_pack/emergency/firefighting name = "Firefighting Crate" - desc = "Only you can prevent plasma fires. Partner up with two firefighter suits, gas masks, extinguishers, and hardhats!" - cost = 2000 + desc = "Only you can prevent plasma fires. Contains a single set of firefighter's equipment." + cost = 500 contains = list(/obj/item/clothing/suit/fire/firefighter, - /obj/item/clothing/suit/fire/firefighter, - /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/extinguisher, - /obj/item/extinguisher, - /obj/item/clothing/head/hardhat/red, /obj/item/clothing/head/hardhat/red) crate_name = "firefighting crate" crate_type = /obj/structure/closet/crate/secure diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm index 1661e4a6637d..c872028e5e6c 100644 --- a/code/modules/cargo/packs/food.dm +++ b/code/modules/cargo/packs/food.dm @@ -62,33 +62,33 @@ /datum/supply_pack/food/ingredients_basic name = "Basic Ingredients Crate" - desc = "Get things cooking with this crate full of useful ingredients! Contains a dozen eggs, two slabs of meat, some flour, some rice, a bottle of milk, a bottle of soymilk, and a bag of sugar." - cost = 300 + desc = "Get things cooking with this crate full of useful ingredients! Contains a dozen eggs, some enzyme, two slabs of meat, some flour, some rice, a few bottles of milk, a bottle of soymilk, and a bag of sugar." + cost = 350 contains = list(/obj/item/reagent_containers/condiment/flour, /obj/item/reagent_containers/condiment/flour, /obj/item/reagent_containers/condiment/rice, /obj/item/reagent_containers/condiment/milk, + /obj/item/reagent_containers/condiment/milk, /obj/item/reagent_containers/condiment/soymilk, /obj/item/reagent_containers/condiment/sugar, /obj/item/storage/fancy/egg_box, /obj/item/reagent_containers/food/snacks/meat/slab, - /obj/item/reagent_containers/food/snacks/meat/slab - ) + /obj/item/reagent_containers/food/snacks/meat/slab, + /obj/item/reagent_containers/condiment/enzyme) crate_name = "food crate" crate_type = /obj/structure/closet/crate/freezer /datum/supply_pack/food/ingredients_condiments name = "Condiments Crate" desc = "A variety of garnishes for topping off your dish with a little extra pizzaz. Contains a bottle of enzyme, a salt shaker, a pepper mill, a bottle of ketchup, a bottle of hot sauce, a bottle of BBQ sauce, and a bottle of cream." - cost = 250 - contains = list(/obj/item/reagent_containers/condiment/enzyme, - /obj/item/reagent_containers/condiment/saltshaker, + cost = 100 + contains = list(/obj/item/reagent_containers/condiment/saltshaker, /obj/item/reagent_containers/condiment/peppermill, /obj/item/reagent_containers/condiment/ketchup, /obj/item/reagent_containers/condiment/hotsauce, /obj/item/reagent_containers/food/drinks/bottle/cream, - /obj/item/reagent_containers/condiment/bbqsauce - ) + /obj/item/reagent_containers/condiment/mayonnaise, + /obj/item/reagent_containers/condiment/bbqsauce) crate_name = "condiments crate" crate_type = /obj/structure/closet/crate/freezer @@ -131,7 +131,7 @@ /datum/supply_pack/food/ingredients_randomized/vegetables name = "Vegetables Crate" desc = "Grown in the finest hydroponic vats." - cost = 250 + cost = 100 contains = list(/obj/item/reagent_containers/food/snacks/grown/chili, /obj/item/reagent_containers/food/snacks/grown/corn, /obj/item/reagent_containers/food/snacks/grown/tomato, @@ -147,7 +147,7 @@ /datum/supply_pack/food/ingredients_randomized/fruits name = "Fruit Crate" desc = "Rich of vitamins, may contain oranges." - cost = 250 + cost = 100 contains = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime, /obj/item/reagent_containers/food/snacks/grown/citrus/orange, /obj/item/reagent_containers/food/snacks/grown/citrus/lemon, @@ -162,7 +162,7 @@ /datum/supply_pack/food/ingredients_randomized/grains name = "Grains Crate" desc = "A crate full of various grains. How interesting." - cost = 250 + cost = 100 contains = list(/obj/item/reagent_containers/food/snacks/grown/wheat, /obj/item/reagent_containers/food/snacks/grown/wheat, /obj/item/reagent_containers/food/snacks/grown/wheat, //Weighted to be more common @@ -192,7 +192,7 @@ /datum/supply_pack/food/sugar name = "Sugar Crate" desc = "A crate with a few bags of sugar. Good for cake shops and amateur chemists." - cost = 500 + cost = 150 contains = list(/obj/item/reagent_containers/condiment/sugar, /obj/item/reagent_containers/condiment/sugar, /obj/item/reagent_containers/condiment/sugar @@ -252,7 +252,7 @@ /datum/supply_pack/food/ethanol name = "Ethanol Crate" desc = "Five small bottles of ethanol for the aspiring botanist or amateur chemist." - cost = 750 + cost = 500 contains = list(/obj/item/reagent_containers/glass/bottle/ethanol, /obj/item/reagent_containers/glass/bottle/ethanol, /obj/item/reagent_containers/glass/bottle/ethanol, @@ -265,7 +265,7 @@ /datum/supply_pack/food/weedcontrol name = "Weed Control Crate" desc = "Contains a scythe, gasmask, and two anti-weed defoliant grenades, for when your garden grows out of control." - cost = 750 + cost = 200 contains = list(/obj/item/scythe, /obj/item/clothing/mask/gas, /obj/item/grenade/chem_grenade/antiweed, @@ -276,7 +276,7 @@ /datum/supply_pack/food/seeds name = "Seeds Crate" desc = "Big things have small beginnings. Contains fourteen different seeds." - cost = 750 + cost = 150 contains = list(/obj/item/seeds/chili, /obj/item/seeds/cotton, /obj/item/seeds/berry, @@ -341,3 +341,11 @@ /obj/item/melee/flyswatter) crate_name = "beekeeping starter crate" crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/food/kitchen_knife + name = "Kitchen Knife Crate" + desc = "Need a new knife to cut something hard? Try out this stamped steel knife, straight from The New Gorlex Republic's factories." + cost = 100 + contains = list(/obj/item/melee/knife/kitchen) + crate_name = "kitchen knife crate" + crate_type = /obj/structure/closet/crate/wooden diff --git a/code/modules/cargo/packs/machinery.dm b/code/modules/cargo/packs/machinery.dm index e5d78e863f17..ea425a0b3e57 100644 --- a/code/modules/cargo/packs/machinery.dm +++ b/code/modules/cargo/packs/machinery.dm @@ -9,7 +9,7 @@ /datum/supply_pack/machinery/lightbulbs name = "Replacement Lights" desc = "May the light of Aether shine upon this sector! Or at least, the light of forty two light tubes and twenty one light bulbs." - cost = 1000 + cost = 500 contains = list(/obj/item/storage/box/lights/mixed, /obj/item/storage/box/lights/mixed, /obj/item/storage/box/lights/mixed) @@ -43,7 +43,7 @@ /datum/supply_pack/machinery/power name = "Power Cell Crate" desc = "Looking for power overwhelming? Look no further. Contains five high-voltage power cells." - cost = 1000 + cost = 1500 //it should be a bit more expensive for a full ship recharge contains = list(/obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, @@ -73,21 +73,21 @@ /datum/supply_pack/machinery/portapump name = "Portable Air Pump Crate" desc = "Want to drain a room of air without losing a drop? We've got you covered. Contains a portable air pump." - cost = 1500 + cost = 750 contains = list(/obj/machinery/portable_atmospherics/pump) crate_name = "portable air pump crate" /datum/supply_pack/machinery/portascrubber name = "Portable Scrubber Crate" desc = "Clean up that pesky plasma leak with your very own portable scrubber." - cost = 1500 + cost = 750 contains = list(/obj/machinery/portable_atmospherics/scrubber) crate_name = "portable scrubber crate" /datum/supply_pack/machinery/hugescrubber name = "Huge Portable Scrubber Crate" desc = "A huge portable scrubber for huge atmospherics mistakes." - cost = 5000 + cost = 2000 contains = list(/obj/machinery/portable_atmospherics/scrubber/huge/movable/cargo) crate_name = "huge portable scrubber crate" crate_type = /obj/structure/closet/crate/large @@ -98,7 +98,7 @@ /datum/supply_pack/machinery/mule name = "MULEbot Crate" - desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!" + desc = "A dilligent MULEbot from the N+S Factories, happy to carry everything you could possibly need, if it's a crate that is." //this description screamed TG. It has been changed. cost = 2000 contains = list(/mob/living/simple_animal/bot/mulebot) crate_name = "\improper MULEbot Crate" diff --git a/code/modules/cargo/packs/material.dm b/code/modules/cargo/packs/material.dm index 356856535b77..a109c5682260 100644 --- a/code/modules/cargo/packs/material.dm +++ b/code/modules/cargo/packs/material.dm @@ -24,7 +24,7 @@ /datum/supply_pack/material/plasteel20 name = "20 Plasteel Sheets" desc = "Reinforce and repair structural integrity with twenty plasteel sheets!" - cost = 2500 + cost = 2000 contains = list(/obj/item/stack/sheet/plasteel/twenty) crate_name = "plasteel sheets crate" @@ -35,7 +35,7 @@ /datum/supply_pack/material/plasma20 name = "20 Plasma Sheets" desc = "Twenty sheets of solidifed plasma. Keep away from open flame." - cost = 2000 + cost = 1500 //the savvy scrapper will buy plasma and metal seperately for a gain contains = list(/obj/item/stack/sheet/mineral/plasma/twenty) crate_name = "plasma sheets crate" crate_type = /obj/structure/closet/crate/secure/plasma @@ -43,7 +43,7 @@ /datum/supply_pack/material/uranium20 name = "20 Uranium Sheets" desc = "Twenty sheets of mildly radioactive uranium. Lead gloves for safe handling not included." - cost = 2000 + cost = 1500 contains = list(/obj/item/stack/sheet/mineral/uranium/twenty) crate_name = "uranium sheets crate" crate_type = /obj/structure/closet/crate/radiation @@ -55,28 +55,28 @@ /datum/supply_pack/material/titanium20 name = "20 Titanium Sheets" desc = "Twenty sheets of durable titanium. Great for heavy machinery." - cost = 3000 + cost = 1500 contains = list(/obj/item/stack/sheet/mineral/titanium/twenty) crate_name = "titanium sheets crate" /datum/supply_pack/material/gold20 name = "20 Gold Sheets" desc = "Twenty sheets of gold. There was a time when this would've been more expensive." - cost = 4000 + cost = 2000 contains = list(/obj/item/stack/sheet/mineral/gold/twenty) crate_name = "gold sheets crate" /datum/supply_pack/material/silver20 name = "20 Silver Sheets" desc = "Twenty sheets of silver. How quaint." - cost = 3000 + cost = 2000 contains = list(/obj/item/stack/sheet/mineral/silver/twenty) crate_name = "silver sheets crate" /datum/supply_pack/material/diamond name = "1 Diamond" desc = "Impress your girl with this one!" - cost = 3500 + cost = 2500 contains = list(/obj/item/stack/sheet/mineral/diamond) crate_name = "diamond sheet crate" @@ -94,21 +94,21 @@ /datum/supply_pack/material/plastic50 name = "50 Plastic Sheets" desc = "Build a limitless amount of toys with fifty plastic sheets!" - cost = 1000 + cost = 500 contains = list(/obj/item/stack/sheet/plastic/fifty) crate_name = "plastic sheets crate" /datum/supply_pack/material/cardboard50 name = "50 Cardboard Sheets" desc = "Arm and armor a cardborg army." - cost = 1000 + cost = 250 contains = list(/obj/item/stack/sheet/cardboard/fifty) crate_name = "cardboard sheets crate" /datum/supply_pack/material/wood50 name = "50 Wood Planks" desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with fifty wooden planks!" - cost = 1500 + cost = 500 contains = list(/obj/item/stack/sheet/mineral/wood/fifty) crate_name = "wood planks crate" diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index 4d63d5c9cb67..a3e7adc239fa 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -170,3 +170,11 @@ contains = list(/obj/machinery/iv_drip/saline) crate_name = "saline glucose crate" crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/medical/epipen_crate + name = "Bulk Epipen Crate" + desc = "Contains a spare box of epinephrine medipens, for when the going gets tough." + cost = 600 + contains = list(/obj/item/storage/box/medipens) + crate_name = "epinephrine medipen crate" + diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index 4fb147dec663..661906bdb35e 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -64,11 +64,11 @@ /datum/supply_pack/sec_supply/survknives name = "Survival Knives Crate" desc = "Contains three sharpened survival knives. Each knife guaranteed to fit snugly inside any galactic-standard boot." - cost = 500 + cost = 350 contains = list(/obj/item/melee/knife/survival, /obj/item/melee/knife/survival, /obj/item/melee/knife/survival) - crate_name = "combat knife crate" + crate_name = "survival knife crate" /datum/supply_pack/sec_supply/machete name = "Stampted Steel Machete Crate" @@ -76,6 +76,15 @@ cost = 500 contains = list(/obj/item/melee/sword/mass, /obj/item/melee/sword/mass) + crate_name = "machete crate" + +/datum/supply_pack/sec_supply/combatknives + name = "Combat Knives Crate" + desc = "Contains three high quality combat knives. For the sharper, and meaner, crew." + cost = 1000 + contains = list(/obj/item/melee/knife/combat, + /obj/item/melee/knife/combat, + /obj/item/melee/knife/combat) crate_name = "combat knife crate" /datum/supply_pack/sec_supply/flamethrower diff --git a/code/modules/cargo/packs/spacesuits.dm b/code/modules/cargo/packs/spacesuits.dm index 6c02599c7ee2..b5580f587d69 100644 --- a/code/modules/cargo/packs/spacesuits.dm +++ b/code/modules/cargo/packs/spacesuits.dm @@ -6,13 +6,14 @@ Spacesuits (two parts, helm and suit) */ -/datum/supply_pack/spacesuits/spacesuit +/datum/supply_pack/spacesuit_armor/spacesuit name = "Space Suit Crate" - desc = "Contains one basic space suit. Although the technology is centuries old, it should protect you from the vacuum of space." - cost = 500 - contains = list(/obj/item/clothing/suit/space, - /obj/item/clothing/head/helmet/space) - crate_name = "space suit crate" + desc = "Contains two basic space suits. Although the technology is centuries old, it should protect you from the vacuum of space." + cost = 500 //changed the suit type to be the one without pockets, making it more consistent with the rest of the EVA suits available + contains = list(/obj/item/clothing/suit/space/eva, + /obj/item/clothing/suit/space/eva, + /obj/item/clothing/head/helmet/space/eva, + /obj/item/clothing/head/helmet/space/eva) /datum/supply_pack/spacesuits/pilot_spacesuit name = "Pilot Space Suit Crate" diff --git a/code/modules/cargo/packs/tools.dm b/code/modules/cargo/packs/tools.dm index 857477bcf922..4f89804880c4 100644 --- a/code/modules/cargo/packs/tools.dm +++ b/code/modules/cargo/packs/tools.dm @@ -62,16 +62,16 @@ /datum/supply_pack/tools/mining name = "Basic Mining Crate" desc = "Contains two pickaxes, two ore bags, and two manual mining scanners." - cost = 1000 + cost = 500 //cheaper to send your legions to war (mining) (also you can just print all this asides the scanners so what's the point anyway) contains = list( /obj/item/pickaxe, /obj/item/pickaxe/mini, /obj/item/storage/bag/ore, /obj/item/storage/bag/ore, /obj/item/mining_scanner, - /obj/item/mining_scanner - ) + /obj/item/mining_scanner) crate_name = "basic mining crate" + faction = /datum/faction/nt/ns_logi /datum/supply_pack/tools/jackhammer name = "Jackhammer Crate" From 2fd59e90e0213ca9f0722e5d35b575fba04750ad Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 16:50:52 -0600 Subject: [PATCH 084/118] Automatic changelog generation for PR #3993 [ci skip] --- html/changelogs/AutoChangeLog-pr-3993.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3993.yml diff --git a/html/changelogs/AutoChangeLog-pr-3993.yml b/html/changelogs/AutoChangeLog-pr-3993.yml new file mode 100644 index 000000000000..d459b9f90283 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3993.yml @@ -0,0 +1,5 @@ +author: Jedi-Toothpaste +changes: + - {balance: 'Many price reductions have occured, happy shopping.'} + - {rscdel: Removed the mafia crate} +delete-after: true From deba020c4f3837f821de76e929c823b2a26e33dd Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:30:01 -0500 Subject: [PATCH 085/118] Legion Core Toxins (#3949) ## About The Pull Request I was wrong about the cloneloss. It blows. Legion cores now do toxin damage instead. ## Changelog :cl: balance: Legion cores now do toxin damage instead of cloneloss. /:cl: --- .../reagents/chemistry/reagents/medicine_reagents.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d8656cb47c99..0da4b838d56e 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1922,7 +1922,7 @@ color = "#302f20" metabolization_rate = REAGENTS_METABOLISM * 0.8 overdose_threshold = 50 - var/clone_dam = 0.1 + var/tox_dam = 0.25 /datum/reagent/medicine/soulus/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) @@ -1941,7 +1941,7 @@ /datum/reagent/medicine/soulus/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(-0.1*REM, 0) M.adjustBruteLoss(-0.1*REM, 0) - M.adjustCloneLoss(clone_dam*REM, 0) + M.adjustToxLoss(tox_dam*REM, 0) ..() /datum/reagent/medicine/soulus/overdose_process(mob/living/M) @@ -1962,7 +1962,7 @@ color = "#302f20" metabolization_rate = REAGENTS_METABOLISM overdose_threshold = 100 - clone_dam = 0 + tox_dam = 0 /datum/reagent/medicine/puce_essence // P U C E name = "Pucetylline Essence" From 315e609bfdd4173be6a14b0b0ec4705ea247cf86 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 17:02:27 -0600 Subject: [PATCH 086/118] Automatic changelog generation for PR #3949 [ci skip] --- html/changelogs/AutoChangeLog-pr-3949.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3949.yml diff --git a/html/changelogs/AutoChangeLog-pr-3949.yml b/html/changelogs/AutoChangeLog-pr-3949.yml new file mode 100644 index 000000000000..b73a692262e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3949.yml @@ -0,0 +1,4 @@ +author: Erikafox +changes: + - {balance: Legion cores now do toxin damage instead of cloneloss.} +delete-after: true From 6b3e9d0534d2491e0eaafc83b6ec588fe83f09c2 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 01:06:05 +0000 Subject: [PATCH 087/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3589.yml | 11 --------- html/changelogs/AutoChangeLog-pr-3761.yml | 4 --- html/changelogs/AutoChangeLog-pr-3949.yml | 4 --- html/changelogs/AutoChangeLog-pr-3972.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3987.yml | 4 --- html/changelogs/AutoChangeLog-pr-3989.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3992.yml | 4 --- html/changelogs/AutoChangeLog-pr-3993.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4021.yml | 4 --- html/changelogs/AutoChangeLog-pr-4027.yml | 4 --- html/changelogs/AutoChangeLog-pr-4029.yml | 4 --- html/changelogs/AutoChangeLog-pr-4033.yml | 4 --- html/changelogs/archive/2025-01.yml | 30 +++++++++++++++++++++++ 13 files changed, 30 insertions(+), 58 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3589.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3761.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3949.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3972.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3987.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3989.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3992.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3993.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4021.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4027.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4029.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4033.yml diff --git a/html/changelogs/AutoChangeLog-pr-3589.yml b/html/changelogs/AutoChangeLog-pr-3589.yml deleted file mode 100644 index ae4197315f16..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3589.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: TDHooligan -changes: - - {rscadd: "Robotic body parts now have integrity, 1 'integrity loss' represents - 1 HP of damage that cannot be healed/repaired."} - - {rscadd: New 'Replace Structure' surgery that allows a roboticist to restore limb - integrity.} - - {rscadd: New 'Structure Repair Kit' craft that restores limb integrity.} - - {balance: 'Robotic limbs start wearing out after multiple repairs, limiting their - repair potential.'} - - {balance: Repair machinery is no longer self-operable.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3761.yml b/html/changelogs/AutoChangeLog-pr-3761.yml deleted file mode 100644 index 0688441fb819..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3761.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Burning02 -changes: - - {rscadd: Adds the Banshee-class Salvage Clipper as a playable Hardliner vessel} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3949.yml b/html/changelogs/AutoChangeLog-pr-3949.yml deleted file mode 100644 index b73a692262e2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3949.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Erikafox -changes: - - {balance: Legion cores now do toxin damage instead of cloneloss.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3972.yml b/html/changelogs/AutoChangeLog-pr-3972.yml deleted file mode 100644 index e0b8eaade3b8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3972.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: firebudgy -changes: - - {rscadd: N+S has deployed a new batch of Shaft Miners to Harrier-class vessels.} - - {rscdel: Janitors have been reassigned from the Harrier for retraining.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3987.yml b/html/changelogs/AutoChangeLog-pr-3987.yml deleted file mode 100644 index c05785c805e2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3987.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Apogee-dev -changes: - - {balance: SRM's Firestorm SMG is now chambered in .44 Roumain.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3989.yml b/html/changelogs/AutoChangeLog-pr-3989.yml deleted file mode 100644 index 1c5b90d8dd59..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3989.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: firebudgy -changes: - - {rscadd: 'SKM Extended Magazine, Bulldog Drum Magazine, Boomslang 10rnd Magazine - and Firestorm Pan Magazine to factional cargo.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3992.yml b/html/changelogs/AutoChangeLog-pr-3992.yml deleted file mode 100644 index 238acec91541..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3992.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Apogee-dev -changes: - - {rscadd: Added M20 Auto Elite and PO-20 Pinscher heavy pistols.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3993.yml b/html/changelogs/AutoChangeLog-pr-3993.yml deleted file mode 100644 index d459b9f90283..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3993.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Jedi-Toothpaste -changes: - - {balance: 'Many price reductions have occured, happy shopping.'} - - {rscdel: Removed the mafia crate} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4021.yml b/html/changelogs/AutoChangeLog-pr-4021.yml deleted file mode 100644 index 8c5edcc33ee7..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4021.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Ratvarr -changes: - - {bugfix: 'The grill no longer grills your ears out. Rejoice, grillmasters.'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4027.yml b/html/changelogs/AutoChangeLog-pr-4027.yml deleted file mode 100644 index b57be73ed092..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4027.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: firebudgy -changes: - - {balance: Cargo Incendiary Grenades have been removed and replaced with Frag Grenades.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4029.yml b/html/changelogs/AutoChangeLog-pr-4029.yml deleted file mode 100644 index 5e0a147a3141..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4029.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Burning02 -changes: - - {rscadd: Adds a singular Sergeants vest to the Banshee Captains equipment} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4033.yml b/html/changelogs/AutoChangeLog-pr-4033.yml deleted file mode 100644 index cff88e50a61d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4033.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Apogee-dev -changes: - - {bugfix: fixed firestorm pan magazine capacity and crate} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index f92e9909176c..905111cda91e 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -127,3 +127,33 @@ zimon9: - code_imp: modifies the access requirements to the wrecker's equipment room aboard the Derecho so that the Foreman can access it +2025-01-19: + Apogee-dev: + - bugfix: fixed firestorm pan magazine capacity and crate + - rscadd: Added M20 Auto Elite and PO-20 Pinscher heavy pistols. + - balance: SRM's Firestorm SMG is now chambered in .44 Roumain. + Burning02: + - rscadd: Adds the Banshee-class Salvage Clipper as a playable Hardliner vessel + - rscadd: Adds a singular Sergeants vest to the Banshee Captains equipment + Erikafox: + - balance: Legion cores now do toxin damage instead of cloneloss. + Jedi-Toothpaste: + - balance: Many price reductions have occured, happy shopping. + - rscdel: Removed the mafia crate + Ratvarr: + - bugfix: The grill no longer grills your ears out. Rejoice, grillmasters. + TDHooligan: + - rscadd: Robotic body parts now have integrity, 1 'integrity loss' represents 1 + HP of damage that cannot be healed/repaired. + - rscadd: New 'Replace Structure' surgery that allows a roboticist to restore limb + integrity. + - rscadd: New 'Structure Repair Kit' craft that restores limb integrity. + - balance: Robotic limbs start wearing out after multiple repairs, limiting their + repair potential. + - balance: Repair machinery is no longer self-operable. + firebudgy: + - balance: Cargo Incendiary Grenades have been removed and replaced with Frag Grenades. + - rscadd: SKM Extended Magazine, Bulldog Drum Magazine, Boomslang 10rnd Magazine + and Firestorm Pan Magazine to factional cargo. + - rscadd: N+S has deployed a new batch of Shaft Miners to Harrier-class vessels. + - rscdel: Janitors have been reassigned from the Harrier for retraining. From 1d2353f5009cc1f344c2a5fefd6889d49318bc31 Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Sat, 18 Jan 2025 22:43:41 -0600 Subject: [PATCH 088/118] Craftable Bottles and Blackmarket Distiller (#4016) ## About The Pull Request Adds glass bottles and their small version to the autolathe for the same price as beakers. Adds the fermenting barrel to the black market. Reduces the price of beekeeping crates by half. ## Why It's Good For The Game I need good containers for my dubious brews. Fermenting barrel is there to make moonshine since you Need It for Some Reason Decreased the price of beekeeping since its Pretty High (i want mead) ## Changelog :cl: add: Glass bottles of the large and small variety added to the autolathe add: Distiller added to the black market balance: Beekeeping crates pricing reduced /:cl: --------- Co-authored-by: github-actions --- code/modules/cargo/packs/food.dm | 4 ++-- .../research/designs/autolathe_designs.dm | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm index c872028e5e6c..a2021e576d6f 100644 --- a/code/modules/cargo/packs/food.dm +++ b/code/modules/cargo/packs/food.dm @@ -319,7 +319,7 @@ /datum/supply_pack/food/beekeeping_suits name = "Beekeeper Suit Crate" desc = "Bee business booming? Better be benevolent and boost botany by bestowing bi-Beekeeper-suits! Contains two beekeeper suits and matching headwear." - cost = 1000 + cost = 500 contains = list(/obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit, /obj/item/clothing/head/beekeeper_head, @@ -330,7 +330,7 @@ /datum/supply_pack/food/beekeeping_fullkit name = "Beekeeping Starter Crate" desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!" - cost = 2000 + cost = 1000 contains = list(/obj/structure/beebox/unwrenched, /obj/item/honey_frame, /obj/item/honey_frame, diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 5ac2370dc694..919a16d27cc3 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -457,6 +457,22 @@ build_path = /obj/item/reagent_containers/food/drinks/modglass/large category = list("initial", "Dinnerware") +/datum/design/glassbottle + name = "Glass Bottle" + id = "glass_bottle" + build_type = AUTOLATHE + materials = list(/datum/material/glass=2500) + build_path = /obj/item/reagent_containers/food/drinks/bottle + category = list("initial", "Dinnerware") + +/datum/design/glassbottle_small + name = "Small Glass Bottle" + id = "glass_bottle_small" + build_type = AUTOLATHE + materials = list(/datum/material/glass=500) + build_path = /obj/item/reagent_containers/food/drinks/bottle/small + category = list("initial", "Dinnerware") + /datum/design/shaker name = "Shaker" id = "shaker" From 75c5c2ba12bdb027e17bff08536762912c841def Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 23:04:23 -0600 Subject: [PATCH 089/118] Automatic changelog generation for PR #4016 [ci skip] --- html/changelogs/AutoChangeLog-pr-4016.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4016.yml diff --git a/html/changelogs/AutoChangeLog-pr-4016.yml b/html/changelogs/AutoChangeLog-pr-4016.yml new file mode 100644 index 000000000000..60f3bd339ac6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4016.yml @@ -0,0 +1,6 @@ +author: generalthrax +changes: + - {rscadd: Glass bottles of the large and small variety added to the autolathe} + - {rscadd: Distiller added to the black market} + - {balance: Beekeeping crates pricing reduced} +delete-after: true From 9103f98a1994ca6aa8e01aa208800604bee80334 Mon Sep 17 00:00:00 2001 From: Theos Date: Sun, 19 Jan 2025 00:05:49 -0500 Subject: [PATCH 090/118] fix #4007 (#4009) ## About The Pull Request Indestructible now means more indestructible silicons can no longer touch outpost airlocks. at all. silicons can no longer open doors that have had their AI control disabled outpost doors now have AI control disabled and are more indestructibler doors on the indie space outpost in the ert area are now actually outpost doors ## Why It's Good For The Game fix #4007 ## Changelog :cl: fix: more difficult to get into the ert rooms at outposts and to break stuff that shouldn't be /:cl: --------- Signed-off-by: Theos Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- _maps/outpost/indie_space.dmm | 13028 +++++++++---------- code/game/machinery/doors/airlock.dm | 7 + code/game/machinery/doors/airlock_types.dm | 10 +- code/game/objects/obj_defense.dm | 4 + code/game/objects/structures/grille.dm | 4 + code/game/objects/structures/window.dm | 4 + 6 files changed, 6538 insertions(+), 6519 deletions(-) diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm index 897d24333cb1..dfcb6d1d37f5 100644 --- a/_maps/outpost/indie_space.dmm +++ b/_maps/outpost/indie_space.dmm @@ -1,20 +1,21 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 9 +"aa" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/mob/living/simple_animal/hostile/cockroach, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"ad" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"ae" = ( +/obj/structure/sink/kitchen{ + dir = 1; + name = "big sink" }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +/obj/structure/mirror{ + pixel_y = -25 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "ag" = ( /obj/machinery/door/firedoor/border_only{ @@ -43,20 +44,32 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo/office) -"ai" = ( -/obj/item/kirbyplants/random, +"ah" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/firealarm/directional/north, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"al" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, /turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) -"aq" = ( -/obj/structure/table, -/obj/machinery/light/small/directional/west, -/obj/item/clothing/under/shorts/cookjorts{ - pixel_y = 12; - pixel_x = 9 +"ap" = ( +/obj/structure/railing/thin{ + dir = 8 }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/maintenance/central) +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "ar" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -77,22 +90,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"au" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"aw" = ( -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 +"av" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, +/obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/storage) +/area/outpost/vacant_rooms) +"ay" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) "aB" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -103,6 +112,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"aC" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"aD" = ( +/obj/structure/railing/thin{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "aE" = ( /obj/machinery/light/small/directional/east, /obj/structure/cable/yellow{ @@ -115,78 +140,55 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"aF" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/corner_steel_grid/full, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "aI" = ( /turf/closed/indestructible/reinforced, /area/outpost/crew/library) -"aM" = ( -/obj/machinery/cryopod, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/grid, +"aJ" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, /area/outpost/crew/cryo) -"aP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +"aN" = ( +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"aO" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 6 - }, -/obj/effect/turf_decal/industrial/warning{ +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"aT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"aQ" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"aR" = ( +"aY" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"aS" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"aU" = ( -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"aX" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/storage) "aZ" = ( /obj/structure/chair{ dir = 8 @@ -198,87 +200,38 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "bb" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"bc" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = -14 - }, -/obj/structure/mirror{ - pixel_x = -25 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/button/door{ - pixel_y = -21; - dir = 1; - pixel_x = 9; - name = "door lock"; - id = "b1"; - specialfunctions = 4; - normaldoorcontrol = 1 - }, -/turf/open/floor/plasteel/mono, -/area/outpost/hallway/central) -"be" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/dim/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"bh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"bg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) -"bi" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/vacant_rooms) +"bk" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/maintenance/central) "bn" = ( /obj/structure/closet/crate/trashcart, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"bq" = ( -/obj/structure/urinal{ - dir = 8; - pixel_x = 18 - }, -/obj/effect/turf_decal/steeldecal/steel_decals6{ - dir = 6 - }, -/turf/open/floor/plasteel/mono, -/area/outpost/hallway/central) "br" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/stack/tile/carpet{ + pixel_y = 3; + pixel_x = -8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 +/obj/item/cigbutt/roach{ + pixel_y = 4; + pixel_x = 9 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "bs" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -295,29 +248,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) -"bt" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"bv" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/syringe/contraband/morphine{ - pixel_y = 6; - pixel_x = -3 - }, -/obj/item/reagent_containers/pill/floorpill{ - pixel_x = 4; - pixel_y = 3 - }, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"bz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +"bz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/sign/poster/random{ @@ -332,17 +266,54 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) +"bB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "bC" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) -"bI" = ( -/obj/effect/turf_decal/siding/wood{ +"bD" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"bF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) +"bG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"bH" = ( +/obj/effect/spawner/random/vending/snack, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/crew/library) "bJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -353,28 +324,29 @@ /obj/effect/spawner/random/salvage/metal, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/central) -"bL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) "bN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/plasteel/grimy, +/obj/structure/chair/sofa/brown/old/left/directional/east, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/carpet, /area/outpost/maintenance/starboard) "bP" = ( -/obj/structure/chair/stool/bar, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "bS" = ( /obj/effect/spawner/random/trash/grille_or_waste, /obj/effect/turf_decal/corner_techfloor_grid{ @@ -388,149 +360,113 @@ /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"bW" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/outpost/security) "bY" = ( /obj/item/kirbyplants{ icon_state = "plant-19" }, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) -"ca" = ( -/obj/structure/crate_shelf, -/obj/effect/turf_decal/borderfloor, -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) -"cc" = ( -/obj/machinery/mineral/processing_unit{ - output_dir = 4; - input_dir = 2 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/platform/ship_two/corner, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"cg" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +"ce" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/crew/cryo) +"ch" = ( +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/corner/opaque/black/border{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "ci" = ( /obj/effect/spawner/random/trash/decal, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"cl" = ( +"cj" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, /obj/effect/turf_decal/corner/opaque/black{ - dir = 4 + dir = 8 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, -/area/outpost/hallway/central) -"cm" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/box, -/obj/effect/turf_decal/corner/opaque/neutral/half, -/turf/open/floor/plasteel/dark, -/area/outpost/storage) +/area/outpost/security) +"cn" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "cq" = ( /turf/closed/indestructible/reinforced, /area/outpost/maintenance/central) -"cr" = ( -/obj/effect/turf_decal/industrial/loading, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"cs" = ( -/obj/structure/crate_shelf, -/obj/effect/turf_decal/borderfloor{ - dir = 1 - }, -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) -"cu" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 +"ct" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"cA" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating/asteroid, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) -"cB" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ +"cx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer2{ dir = 8 }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/engine/air, +/area/outpost/engineering/atmospherics) +"cy" = ( +/obj/structure/disposalpipe/junction{ dir = 4 }, -/obj/structure/sign/directions/supply{ - dir = 1; - pixel_y = 0; - pixel_x = 28 - }, -/obj/structure/sign/directions/security{ - pixel_y = -6; - pixel_x = 28; - dir = 4 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"cG" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/closet/crate/trashcart, -/turf/open/floor/plasteel/patterned, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"cF" = ( +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"cH" = ( +/obj/structure/falsewall/reinforced, +/turf/closed/indestructible/reinforced/rust, +/area/outpost/vacant_rooms/office) "cI" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"cK" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 9 +"cJ" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 }, -/turf/open/floor/plasteel/mono{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"cM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/area/outpost/cargo) -"cL" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/corner_steel_grid{ - dir = 5 + dir = 10 }, /turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"cN" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "cO" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -563,32 +499,14 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"cV" = ( -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ +"dc" = ( +/obj/effect/turf_decal/borderfloor{ dir = 8 }, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"cX" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 10 +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/security) -"dc" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/starboard) -"de" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) +/area/outpost/cargo) "dg" = ( /obj/structure/railing{ dir = 4 @@ -601,30 +519,12 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"di" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"dj" = ( -/obj/structure/disposalpipe/junction{ - dir = 4 - }, +"dk" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/mob/living/simple_animal/mouse, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "dl" = ( /obj/effect/spawner/random/trash/decal, /obj/effect/turf_decal/steeldecal/steel_decals7{ @@ -646,6 +546,18 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) +"dp" = ( +/obj/machinery/computer/cryopod/directional/north, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/security) +"dq" = ( +/obj/structure/flora/rock, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) "dr" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -660,16 +572,96 @@ /obj/item/storage/bag/trash, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"du" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/holosign/barrier/infinite{ + max_integrity = 500 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "dw" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/outpost/crew/bar) -"dD" = ( -/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ +"dy" = ( +/obj/effect/turf_decal/corner/opaque/black{ dir = 1 }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, -/area/outpost/crew/janitor) +/area/outpost/hallway/central) +"dz" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/disposalpipe/trunk, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) +"dC" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/platform/wood_two/corner{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_y = 5; + pixel_x = -7 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"dE" = ( +/obj/structure/chair/bench/beige/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"dI" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/security) +"dJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/computer/electrolyzer_console{ + pixel_y = -5; + density = 0; + dir = 8; + pixel_x = -2 + }, +/obj/structure/railing/thin{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "dK" = ( /obj/item/trash/can/food/beans{ pixel_x = -16; @@ -691,21 +683,6 @@ }, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"dL" = ( -/obj/structure/closet/secure_closet/armory3, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"dM" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "dN" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -713,14 +690,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"dO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/structure/railing/thin{ - dir = 6 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) "dP" = ( /obj/structure/chair, /obj/item/radio/intercom/directional/north, @@ -741,17 +710,10 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "dS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/light/dim/directional/west, /obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "1-2" }, /turf/open/floor/plating, /area/outpost/hallway/central) @@ -761,46 +723,12 @@ }, /turf/closed/indestructible/reinforced, /area/outpost/maintenance/fore) -"dW" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"dZ" = ( -/obj/structure/platform/ship_two{ - dir = 1 - }, -/obj/effect/turf_decal/corner_techfloor_grid{ +"ec" = ( +/obj/effect/turf_decal/siding/wood{ dir = 6 }, -/obj/effect/turf_decal/industrial/caution{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"ed" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/syringe/contraband/morphine{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/item/reagent_containers/pill/floorpill{ - pixel_x = -4; - pixel_y = 7 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/flashlight/lamp/green{ - pixel_x = 8; - pixel_y = -10 - }, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "ee" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -811,35 +739,49 @@ icon_state = "wood-broken4" }, /area/outpost/crew/bar) +"ef" = ( +/obj/structure/rack, +/obj/machinery/light/dim/directional/west, +/obj/item/reagent_containers/food/drinks/waterbottle, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) "eg" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"ei" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/effect/turf_decal/corner_steel_grid/full{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, /area/outpost/hallway/central) -"em" = ( -/turf/closed/indestructible/reinforced, -/area/outpost/external) -"eq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"ek" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/obj/structure/sign/poster/random{ - pixel_x = 28 - }, +/obj/machinery/light/dim/directional/east, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/hallway/central) +"em" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/external) +"en" = ( +/obj/structure/rack, +/obj/effect/spawner/random/clothing/bowler_or_that, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) "et" = ( /obj/machinery/photocopier{ pixel_x = 3; @@ -848,21 +790,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"ev" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"eu" = ( +/obj/machinery/camera/autoname, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"ex" = ( -/obj/item/reagent_containers/syringe{ - pixel_y = 7; - pixel_x = 4 - }, -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/turf/open/floor/plasteel/dark, +/area/outpost/security) "ey" = ( /obj/machinery/door/firedoor/closed, /obj/structure/barricade/wooden/crude, @@ -879,43 +813,77 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) -"eD" = ( -/obj/structure/cable/yellow{ - icon_state = "6-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 5 +"ez" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) -"eE" = ( -/obj/effect/mob_spawn/human/corpse/charredskeleton{ - name = "Marv"; - mob_name = "Marv" +/obj/item/kirbyplants{ + icon_state = "plant-21"; + name = "oxygen reclaimation system" }, -/obj/item/stack/cable_coil/cut/yellow, -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/asteroid, -/area/outpost/external) -"eG" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) +"eA" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/obj/effect/turf_decal/borderfloor{ - dir = 4 +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Recycling" }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"eB" = ( +/obj/structure/crate_shelf, +/obj/effect/turf_decal/borderfloor, /turf/open/floor/plasteel/mono{ dir = 1 }, /area/outpost/cargo) -"eQ" = ( +"eC" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom Stall"; + id_tag = "b2" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"eD" = ( /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "6-8" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 5 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/fore) +"eK" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"eM" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "eU" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -923,22 +891,53 @@ /obj/effect/turf_decal/corner_techfloor_grid/diagonal, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) +"eV" = ( +/obj/machinery/door/firedoor/heavy, +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/vacant_rooms/office) "eX" = ( -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating/asteroid, -/area/outpost/maintenance/starboard) -"eY" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) -"fd" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ - dir = 8 +"fa" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/crew/bar) +"fb" = ( +/obj/machinery/newscaster/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"fc" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, -/area/outpost/crew/janitor) +/area/outpost/hallway/central) +"fe" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "fh" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -958,27 +957,22 @@ /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/door/airlock/security/brig{ - req_access = list("101"); +/obj/machinery/door/airlock/outpost{ + icon = 'icons/obj/doors/airlocks/station/security.dmi'; + name = "brig"; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; dir = 4 }, /turf/open/floor/plasteel/tech, /area/outpost/security) -"fi" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 +"fj" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"fj" = ( -/turf/closed/indestructible/reinforced/rust, /area/outpost/hallway/central) "fk" = ( /obj/structure/cable/yellow{ @@ -1000,16 +994,56 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"fl" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"fp" = ( +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "1" + }, +/obj/machinery/elevator_call_button{ + dir = 4; + pixel_y = 0; + pixel_x = -22 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "fq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"fs" = ( -/obj/structure/chair/bench/beige/directional/south, -/obj/machinery/light/dim/directional/north, +"fr" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/ert_outpost_spawn, /turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) +/area/outpost/security) +"ft" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/cargo) +"fu" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "fw" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1023,201 +1057,141 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"fE" = ( -/obj/structure/closet/secure_closet/freezer/gulag_fridge, -/obj/item/reagent_containers/pill/floorpill, -/obj/item/reagent_containers/pill/floorpill, -/obj/item/reagent_containers/pill/floorpill, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"fG" = ( -/obj/structure/disposalpipe/segment{ +"fA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"fB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"fC" = ( +/obj/machinery/cryopod, +/obj/effect/turf_decal/techfloor{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"fI" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/crew/cryo) +"fJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/structure/table, -/obj/item/reagent_containers/glass/rag{ - pixel_y = 12; - pixel_x = -5 - }, -/obj/item/reagent_containers/glass/rag{ - pixel_y = 6; - pixel_x = 4 - }, -/obj/structure/cable/yellow, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/medical) +/area/outpost/vacant_rooms) "fK" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/outpost/crew/bar) -"fM" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 +"fL" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"fM" = ( +/obj/structure/barricade/wooden/crude, +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"fP" = ( +/obj/structure/sign/poster/random{ + pixel_x = 28 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"fN" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/floor/wood{ + icon_state = "wood-broken4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"fP" = ( -/obj/structure/sign/poster/random{ - pixel_x = 28 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken4" - }, -/area/outpost/crew/bar) -"fR" = ( -/obj/structure/railing, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 5 +/area/outpost/crew/bar) +"fR" = ( +/obj/structure/railing, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 5 }, /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "fS" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken4" - }, -/area/outpost/maintenance/starboard) -"fT" = ( -/obj/item/stack/tile/carpet{ - pixel_x = -7; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/trash/grille_or_waste, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood{ - icon_state = "floor5" - }, -/mob/living/simple_animal/mouse/white, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"fY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/dim/directional/east, -/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"fZ" = ( -/obj/structure/chair, -/obj/effect/landmark/ert_outpost_spawn, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"ga" = ( -/obj/structure/closet/crate/trashcart/laundry, -/turf/open/floor/plasteel/patterned, -/area/outpost/maintenance/central) +/area/outpost/maintenance/fore) +"fU" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/crew/bar) "gc" = ( -/obj/structure/railing/wood{ - dir = 9 +/obj/structure/platform/wood_two{ + dir = 4 }, -/turf/open/floor/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) -"gf" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"gj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"gg" = ( -/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "2-4" }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 8 +/turf/open/floor/plating, +/area/outpost/hallway/central) +"gm" = ( +/obj/structure/chair/sofa/brown/old/directional/east, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"gn" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ +/obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/security) -"gn" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/cargo/office) -"go" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) +"gp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "gq" = ( /turf/closed/indestructible/reinforced, /area/outpost/crew/janitor) -"gt" = ( -/obj/structure/rack, -/obj/item/skub, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters, -/turf/open/floor/plasteel/dark, -/area/outpost/vacant_rooms) -"gu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/sign/directions/medical{ - pixel_x = 28; - dir = 2; - pixel_y = -10 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"gz" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "danger" - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "gA" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -1229,63 +1203,49 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"gC" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "!"; - pixel_x = 9 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -19; - pixel_x = 2 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -25; - pixel_x = -7 - }, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = 11; - pixel_x = -14 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -19; - pixel_x = 2 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "f"; - pixel_y = 0; - pixel_x = -19 - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "n" +"gB" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "u"; - pixel_y = -5; - pixel_x = -10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/junction/flip{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "gE" = ( /obj/item/radio/intercom/directional/east, /obj/structure/table/wood, /turf/open/floor/wood, /area/outpost/crew/bar) -"gO" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "outpost1" +"gI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/turf/open/floor/plasteel/patterned/grid, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel/patterned, /area/outpost/cargo) +"gL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"gN" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "gP" = ( /obj/structure/filingcabinet/double, /turf/open/floor/plasteel/dark, @@ -1298,20 +1258,14 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"gT" = ( -/obj/structure/platform/ship_two{ - dir = 1 +"gY" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"gU" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"gZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "hb" = ( /obj/effect/turf_decal/industrial/caution, /obj/structure/cable/yellow{ @@ -1323,19 +1277,16 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "hd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/dim/directional/east, -/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "hf" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/outpost/maintenance/starboard) "hg" = ( @@ -1352,37 +1303,101 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"hj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +"hh" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "hk" = ( /obj/structure/frame, /turf/open/floor/plating, /area/outpost/maintenance/fore) "ho" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"hq" = ( -/turf/open/floor/plating/asteroid, -/area/outpost/external) -"hs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/junction/yjunction{ dir = 8 }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) -"hw" = ( -/obj/item/reagent_containers/syringe{ - pixel_y = -2; - pixel_x = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"hp" = ( +/obj/structure/crate_shelf, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, +/area/outpost/cargo) +"hq" = ( +/turf/open/floor/plating/asteroid, +/area/outpost/external) +"hr" = ( +/obj/machinery/mineral/processing_unit{ + output_dir = 4; + input_dir = 2 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/platform/ship_two/corner, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"ht" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"hu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"hv" = ( +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"hx" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"hy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/confetti, /turf/open/floor/plating, /area/outpost/maintenance/starboard) "hz" = ( @@ -1392,52 +1407,42 @@ /obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"hA" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/port) "hD" = ( /obj/structure/disposalpipe/trunk/multiz{ dir = 4 }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"hI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +"hF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/rust, +/turf/open/floor/plating, /area/outpost/hallway/central) -"hJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +"hG" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/obj/structure/sign/poster/random{ - pixel_x = -28 +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/disposalpipe/junction/yjunction{ dir = 1 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "hK" = ( /obj/structure/rack, @@ -1445,15 +1450,18 @@ /obj/effect/spawner/random/salvage_capacitor, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"hM" = ( -/obj/structure/closet/crate, -/turf/open/floor/plasteel/mono{ - dir = 1 +"hL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/area/outpost/cargo) -"hP" = ( /turf/open/floor/plating/rust, /area/outpost/maintenance/fore) +"hQ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "hS" = ( /obj/item/radio/intercom/directional/east, /obj/structure/table/wood, @@ -1467,25 +1475,28 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"hW" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/airlock{ - dir = 4; - name = "Restroom Stall"; - id_tag = "b1" +"hT" = ( +/obj/structure/chair/sofa/brown/directional/south, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"hV" = ( +/obj/machinery/button/door{ + specialfunctions = 4; + normaldoorcontrol = 1; + id = "out1"; + dir = 1; + pixel_y = -21; + pixel_x = -8 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"hX" = ( -/obj/structure/chair/sofa/brown/old/right/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "hY" = ( /obj/structure/closet/crate/trashcart, /turf/open/floor/plating, @@ -1495,26 +1506,6 @@ /obj/effect/spawner/random/food_or_drink/donut, /turf/open/floor/wood, /area/outpost/crew/bar) -"ib" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/outpost/crew/bar) -"ic" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 6; - pixel_x = 6 - }, -/obj/item/pen, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) "id" = ( /obj/machinery/holopad/emergency/bar, /obj/effect/decal/cleanable/dirt/dust, @@ -1534,32 +1525,34 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) +"if" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/medical) "ii" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"il" = ( -/obj/item/radio/intercom/directional/west, +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, /obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "2-4" }, /turf/open/floor/plating, /area/outpost/hallway/central) -"ip" = ( -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"ir" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/steeldecal/steel_decals9, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"is" = ( +"im" = ( /obj/effect/turf_decal/corner/opaque/neutral/half, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/outpost/medical) +"ip" = ( +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "it" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1578,13 +1571,39 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"iy" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock{ + name = "Laundry Room" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/maintenance/central) +"iB" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"iC" = ( +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "iD" = ( /obj/effect/spawner/random/trash/decal, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"iG" = ( -/turf/closed/indestructible/rock, -/area/outpost/maintenance/starboard) "iH" = ( /obj/machinery/light/dim/directional/east, /obj/effect/decal/cleanable/dirt/dust, @@ -1607,37 +1626,53 @@ /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) "iK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 +/obj/structure/falsewall/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/white, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/closed/indestructible/reinforced/rust, +/area/outpost/maintenance/central) "iL" = ( -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/structure/cable/yellow{ + icon_state = "1-9" }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"iN" = ( -/obj/structure/chair/stool/bar{ - dir = 4 +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable/yellow{ - icon_state = "0-2" + icon_state = "5-9" }, /turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/starboard) -"iQ" = ( -/obj/item/trash/can/food/beans{ - pixel_x = 5; +/area/outpost/maintenance/fore) +"iN" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/outpost/cargo) +"iO" = ( +/obj/structure/table, +/obj/item/pizzabox/vegetable{ + pixel_y = 10 + }, +/obj/item/flashlight/lamp/green{ + pixel_x = -19; + pixel_y = 13 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"iQ" = ( +/obj/item/trash/can/food/beans{ + pixel_x = 5; pixel_y = 5 }, /obj/effect/decal/cleanable/cobweb, @@ -1656,74 +1691,107 @@ }, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"iV" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille/indestructable, -/obj/structure/window/reinforced/fulltile/indestructable, -/turf/open/floor/plating, -/area/outpost/vacant_rooms/office) -"iY" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/modglass{ - pixel_y = 1; - pixel_x = -6 - }, -/obj/item/reagent_containers/food/drinks/modglass{ - pixel_y = 5; - pixel_x = 5 +"iR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 }, -/turf/open/floor/wood, -/area/outpost/crew/bar) -"jb" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"jd" = ( -/obj/structure/chair/bench/beige/directional/north, -/obj/effect/turf_decal/siding/wood{ +"iT" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"je" = ( -/obj/structure/chair/comfy/orange/directional/east, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom" + }, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"jf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/firealarm/directional/north, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) -"jg" = ( +"iX" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "outpost2" + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/structure/platform/ship_two{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"iZ" = ( /obj/structure/rack, -/obj/machinery/light/dim/directional/west, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/effect/turf_decal/corner/opaque/neutral/half{ +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/outpost/storage) +/area/outpost/vacant_rooms) +"ja" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/security) +"jb" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "jj" = ( /obj/machinery/light/dim/directional/east, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/green, /area/outpost/crew/bar) +"jl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"jm" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/crew/bar) "jn" = ( /obj/structure/table, /obj/effect/spawner/random/maintenance/two, @@ -1737,9 +1805,41 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"js" = ( -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +"jp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/newscaster/directional/south, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"jv" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/spline/fancy/opaque/grey{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"jw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "jx" = ( /obj/item/trash/can/food/beans{ pixel_x = -5 @@ -1749,43 +1849,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"jz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +"jA" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/engineering/atmospherics) +"jF" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/item/radio/intercom/directional/east, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"jC" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"jD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/newscaster/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom Stall"; + id_tag = "b1" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) -"jE" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"jG" = ( +/obj/structure/disposalpipe/junction{ + dir = 2 }, -/obj/effect/turf_decal/corner_steel_grid/full{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, /turf/open/floor/plasteel/dark, /area/outpost/hallway/central) @@ -1801,67 +1888,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/crew/bar) -"jJ" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +"jP" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"jK" = ( +"jQ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/railing/thin{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"jL" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/sign/directions/supply{ - pixel_y = 26; - dir = 4 - }, -/obj/structure/sign/directions/security{ - dir = 4; - pixel_y = 32 - }, -/obj/structure/sign/directions/medical{ - pixel_y = 38; - dir = 2 - }, -/obj/structure/sign/directions/service{ - pixel_y = 20; - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"jM" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"jO" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/cable/yellow, +/obj/structure/grille/indestructable, +/obj/effect/turf_decal/corner_techfloor_gray/full{ dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/port) +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "jR" = ( /obj/structure/chair/stool/bar{ dir = 1; @@ -1873,78 +1918,149 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "jS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "jT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/maintenance/central) +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "jU" = ( /obj/structure/table/wood, /obj/machinery/computer/bookmanagement, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"kb" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +"jV" = ( +/obj/structure/grille/indestructable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) +"jW" = ( +/obj/structure/chair/stool/bar{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"jY" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, /obj/effect/turf_decal/corner_steel_grid{ dir = 9 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) +/area/outpost/hallway/central) +"ka" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"kc" = ( +/obj/structure/bed, +/obj/item/bedsheet/black, +/obj/item/toy/plush/rilena, +/obj/item/toy/plush/tali{ + pixel_x = 10; + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/steeldecal/steel_decals_central2, +/turf/open/floor/plating, +/area/outpost/hallway/central) "kd" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"kh" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 +"kf" = ( +/obj/structure/dresser{ + dir = 8 }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, -/obj/machinery/computer/cryopod/retro/directional/west, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) -"kl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/item/clothing/under/dress/skirt/color{ + pixel_x = -2; + pixel_y = 12 }, -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +/obj/item/clothing/under/dress/skirt/color/blue{ + pixel_y = 5; + pixel_x = 3 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 +/obj/machinery/light/dim/directional/south, +/obj/item/clothing/shoes/sandal{ + pixel_x = -6; + pixel_y = 2 }, -/turf/open/floor/plasteel, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"kg" = ( +/obj/machinery/shower{ + dir = 8; + desc = "An old shower. It looks rusted." + }, +/obj/structure/toilet{ + pixel_y = 13; + pixel_x = -9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/hallway/central) +"kk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, /area/outpost/hallway/central) "km" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/confetti, /turf/open/floor/wood, /area/outpost/crew/library) +"ko" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/outpost/medical) +"kp" = ( +/obj/structure/table/reinforced, +/obj/structure/railing/thin, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "ks" = ( /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/central) -"kx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +"kt" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/security) "ky" = ( /obj/structure/sign/painting/library{ pixel_y = -26 @@ -1953,25 +2069,27 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"kA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/caution, -/obj/structure/noticeboard{ - name = "refinery notice board"; - dir = 8; - pixel_y = 0; - pixel_x = 26 +"kB" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 9 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 6 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/security) +"kD" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "kE" = ( /obj/machinery/light/small/directional/south, /obj/structure/disposalpipe/segment{ @@ -1980,58 +2098,42 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"kH" = ( -/obj/item/shovel/spoon, -/turf/open/floor/plating/asteroid, -/area/outpost/external) -"kK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/cable/yellow, -/obj/structure/grille/indestructable, -/obj/effect/turf_decal/corner_techfloor_gray/full{ +"kG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/starboard) -"kL" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/firealarm/directional/south, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) -"kM" = ( +"kH" = ( +/obj/item/shovel/spoon, +/turf/open/floor/plating/asteroid, +/area/outpost/external) +"kI" = ( /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"kN" = ( -/obj/structure/chair/stool/bar{ - dir = 4 +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 6 }, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"kQ" = ( -/obj/machinery/light/dim/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 9 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) -"kR" = ( -/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/security) +"kM" = ( /obj/structure/cable/yellow{ icon_state = "1-8" }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) "kT" = ( @@ -2056,46 +2158,50 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"kV" = ( -/obj/item/stack/tile/carpet, -/obj/structure/railing/thin/corner, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plating, +"kW" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 9 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) +"kZ" = ( +/obj/structure/chair/sofa/brown/old/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/carpet, /area/outpost/maintenance/starboard) -"la" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +"lg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/boozeomat, +/turf/open/floor/carpet/green, +/area/outpost/crew/bar) +"li" = ( +/obj/item/reagent_containers/syringe{ + pixel_y = 7; + pixel_x = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"lj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/camera/autoname{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) -"lb" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"lh" = ( -/obj/structure/barricade/wooden/crude, -/turf/closed/indestructible/rock, -/area/outpost/external) -"li" = ( -/obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/hallway/central) "lk" = ( @@ -2110,12 +2216,33 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"ll" = ( -/obj/effect/turf_decal/corner_techfloor_gray{ +"lm" = ( +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "1" + }, +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/area/outpost/hallway/central) +"ln" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/camera/autoname, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/security) "lo" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -2143,34 +2270,37 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) -"ls" = ( -/obj/structure/railing/thin{ - dir = 9 +"lu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/conveyor_switch{ - id = "outpost3"; - layer = 3.11; - pixel_y = 8; - pixel_x = -9 +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) -"lt" = ( -/obj/structure/window/reinforced/fulltile/indestructable, -/obj/structure/grille/indestructable, /turf/open/floor/plating, -/area/outpost/security) -"lw" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/area/outpost/hallway/central) +"lv" = ( +/obj/structure/table, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) +/obj/effect/spawner/random/entertainment/plushie{ + pixel_x = 16; + pixel_y = 4 + }, +/obj/item/folder{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) "lx" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt/dust, @@ -2178,22 +2308,33 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "ly" = ( +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 6 + }, +/obj/effect/turf_decal/industrial/caution{ + dir = 8 + }, +/obj/structure/railing/thin, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"lz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"lD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/light/dim/directional/east, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"lA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"lB" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) "lE" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -2219,64 +2360,103 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"lJ" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/siding/wood/corner, -/obj/item/kirbyplants{ - icon_state = "plant-02"; - pixel_y = 18; - pixel_x = -11 +"lI" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"lM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/airlock/maintenance{ - req_access = list("101") +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"lK" = ( +/turf/open/floor/plasteel/patterned, +/area/outpost/maintenance/central) +"lL" = ( +/obj/machinery/disposal/bin, +/obj/machinery/newscaster/directional/west, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/dark, +/area/outpost/crew/library) +"lO" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) +"lP" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "1-8" }, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"lO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/sign/directions/service{ - dir = 8; - pixel_x = -28 +/obj/effect/turf_decal/corner/opaque/black{ + dir = 6 }, -/obj/structure/sign/directions/supply{ - pixel_y = -6; - pixel_x = -28; - dir = 4 +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/outpost/security) +"lQ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/structure/sign/directions/security{ - dir = 4; - pixel_y = 6; - pixel_x = -28 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 }, -/obj/structure/sign/directions/medical{ - pixel_y = -12; - pixel_x = -28; - dir = 2 +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"lR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/open/floor/plating, /area/outpost/hallway/central) +"lU" = ( +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"lV" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"lW" = ( +/obj/machinery/button/door{ + dir = 8; + pixel_x = 22; + pixel_y = 9; + id = "out3"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/bar) "lX" = ( /obj/structure/rack, /obj/effect/turf_decal/steeldecal/steel_decals_central2{ @@ -2284,18 +2464,29 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"lY" = ( -/obj/machinery/cryopod{ +"lZ" = ( +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/obj/machinery/camera/autoname, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/techfloor{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/grid, -/area/outpost/security) +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"ma" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/item/radio/intercom/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "mb" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -2311,6 +2502,15 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) +"mc" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "md" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -2320,14 +2520,6 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"mf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/outpost/maintenance/starboard) -"mg" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/crew/cryo) "mk" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -2342,30 +2534,15 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/storage) -"mo" = ( -/obj/machinery/washing_machine, -/obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/maintenance/central) -"mp" = ( -/obj/effect/decal/cleanable/glass/strange, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, +"mn" = ( /obj/structure/cable/yellow{ - icon_state = "1-10" - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/central) -"mq" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 + icon_state = "1-2" }, -/turf/open/floor/plasteel, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "mr" = ( /obj/machinery/door/airlock/maintenance, @@ -2376,41 +2553,31 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) -"ms" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +"mt" = ( +/obj/structure/table, +/obj/effect/turf_decal/floordetail/tiled, +/obj/machinery/fax/admin/outpost{ + pixel_y = 5 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"mv" = ( +/turf/open/floor/plasteel/grimy, +/area/outpost/security) +"mw" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, -/obj/effect/decal/cleanable/wrapping, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/random/maintenance/seven, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 8 }, /turf/open/floor/plasteel/dark, /area/outpost/vacant_rooms) "mx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"mA" = ( -/obj/structure/grille, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) +"my" = ( /turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/area/outpost/crew/bar) "mB" = ( /obj/machinery/door/firedoor/closed, /obj/structure/barricade/wooden/crude, @@ -2430,25 +2597,22 @@ "mC" = ( /turf/open/space/basic, /area/space) -"mG" = ( -/obj/structure/closet/crate/bin{ - pixel_y = 0 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/insectguts, -/obj/item/reagent_containers/syringe{ - pixel_y = -7; - pixel_x = -1 - }, -/obj/item/reagent_containers/syringe{ - pixel_y = 1 +"mF" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 10 }, -/obj/item/reagent_containers/syringe{ - pixel_y = -6; - pixel_x = 9 +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/area/outpost/cargo) +"mG" = ( +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"mH" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/cargo/office) "mJ" = ( /obj/structure/chair/wood, /obj/structure/cable/yellow{ @@ -2464,6 +2628,13 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) +"mL" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "mM" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -2479,21 +2650,16 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"mN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/railing/thin, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) "mP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/steeldecal/steel_decals3, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"mQ" = ( +/obj/machinery/washing_machine, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "mT" = ( /obj/structure/table, /obj/item/trash/can/food/beans{ @@ -2513,34 +2679,20 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"mW" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/outpost/security) "mZ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"na" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "nb" = ( /obj/structure/cable/yellow{ @@ -2551,28 +2703,37 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"nc" = ( -/obj/machinery/shower{ - dir = 8; - desc = "An old shower. It looks rusted." +"nd" = ( +/obj/structure/chair/office{ + dir = 1 }, -/obj/structure/toilet{ - pixel_y = 13; - pixel_x = -9 +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/outpost/cargo/office) +"ng" = ( +/obj/structure/chair, +/obj/effect/landmark/ert_outpost_spawn, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) +"nk" = ( +/obj/structure/sign/poster/official/no_erp{ + pixel_y = 30 }, -/obj/effect/turf_decal/steeldecal/steel_decals10, -/obj/effect/turf_decal/steeldecal/steel_decals6{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel/showroomfloor, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) -"nd" = ( -/obj/structure/chair/office{ - dir = 1 +"nl" = ( +/obj/structure/festivus{ + pixel_x = -17; + pixel_y = -7; + name = "normal pole"; + desc = "A fairly normal pole in a fairly normal position." }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/outpost/cargo/office) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) "nn" = ( /obj/effect/decal/cleanable/food/tomato_smudge, /obj/machinery/airalarm/directional/north, @@ -2591,31 +2752,33 @@ /obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/maintenance/central) -"nq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +"nr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/structure/sign/poster/random{ + pixel_x = 28 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"nt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"nw" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) +/turf/open/floor/plating, +/area/outpost/hallway/central) "ny" = ( /obj/structure/railing{ dir = 4 @@ -2626,30 +2789,36 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"nz" = ( -/obj/machinery/cryopod{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/grid, -/area/outpost/crew/cryo) -"nK" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ +"nA" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"nB" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"nE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plasteel, -/area/outpost/medical) -"nL" = ( -/obj/effect/spawner/random/vending/snack, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) +"nJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/outpost/crew/library) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "nM" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -2657,6 +2826,20 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) +"nN" = ( +/obj/structure/grille/indestructable, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"nO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/wood, +/area/outpost/crew/bar) +"nP" = ( +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/security) "nR" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -2665,6 +2848,13 @@ }, /turf/open/floor/carpet/green, /area/outpost/crew/bar) +"nS" = ( +/obj/item/stack/tile/carpet, +/obj/structure/railing/thin/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "nT" = ( /obj/item/radio/intercom/directional/south, /obj/structure/cable/yellow{ @@ -2674,13 +2864,15 @@ /obj/machinery/libraryscanner, /turf/open/floor/wood, /area/outpost/crew/library) -"nU" = ( -/obj/structure/railing/thin{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"nW" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"nX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "nY" = ( @@ -2700,24 +2892,30 @@ /obj/effect/turf_decal/steeldecal/steel_decals10, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"oa" = ( -/obj/structure/chair/comfy/orange/directional/south, -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/poster/random{ - pixel_y = 30 +"oe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"ob" = ( -/obj/effect/turf_decal/spline/fancy/opaque/grey, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"od" = ( -/turf/open/floor/plasteel/patterned, +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, /area/outpost/hallway/central) +"of" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plating, +/area/outpost/maintenance/central) "og" = ( /obj/machinery/atmospherics/pipe/simple/multiz{ pixel_y = 1; @@ -2734,22 +2932,39 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) "oh" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/industrial/loading, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"oi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/hallway/central) -"ol" = ( -/obj/structure/railing/wood{ - dir = 8 +/area/outpost/storage) +"oj" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -14 }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" +/obj/structure/mirror{ + pixel_x = -25 }, -/area/outpost/maintenance/starboard) +/obj/machinery/light/small/directional/south, +/obj/machinery/button/door{ + pixel_y = -21; + dir = 1; + pixel_x = 9; + name = "door lock"; + id = "b1"; + specialfunctions = 4; + normaldoorcontrol = 1 + }, +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) "om" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -2757,67 +2972,110 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"on" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +"os" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"ot" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/effect/turf_decal/siding/thinplating/dark/corner, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/structure/sign/directions/supply{ + dir = 1; + pixel_y = 0; + pixel_x = 28 + }, +/obj/structure/sign/directions/security{ + pixel_y = -6; + pixel_x = 28; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"ow" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 5 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/fore) +"ox" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) +"oA" = ( +/obj/effect/spawner/random/trash/decal, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"op" = ( +/area/outpost/maintenance/central) +"oC" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "1-8" }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"or" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/rilena/tali{ - pixel_y = -30 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"oD" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"oE" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel, /area/outpost/hallway/central) -"ou" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"ov" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +"oG" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) +"oI" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"ow" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner_techfloor_gray{ +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"oJ" = ( +/obj/machinery/conveyor{ + id = "outpost3"; dir = 5 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) -"oy" = ( -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) "oK" = ( /obj/machinery/door/airlock/public{ id_tag = "out1" @@ -2835,58 +3093,23 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/storage) -"oL" = ( +"oO" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"oM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/decal/cleanable/crayon{ + icon_state = "peace"; + pixel_y = -26 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/turf/open/floor/plasteel/stairs{ + dir = 8 }, -/turf/open/floor/plating, /area/outpost/hallway/central) -"oN" = ( -/obj/structure/chair/bench/beige/directional/south, +"oR" = ( +/obj/structure/chair/bench/beige/directional/north, /obj/effect/turf_decal/siding/wood{ - dir = 8 + dir = 4 }, /turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) -"oQ" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"oS" = ( -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 5 - }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"oT" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/outpost/cargo) "oU" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -2895,38 +3118,26 @@ /mob/living/simple_animal/mouse/brown, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"oW" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +"oX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/door/airlock/security/brig{ - req_access = list("101") +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plasteel/tech, -/area/outpost/security) -"oY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/crowbar{ - pixel_y = 7; - pixel_x = 6 +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"pa" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/item/cigbutt/roach, -/obj/effect/decal/cleanable/ash, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"oZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel, /area/outpost/hallway/central) "pb" = ( /obj/structure/chair/stool/bar{ @@ -2939,84 +3150,50 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"pg" = ( -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/vacant_rooms) -"ph" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"pj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"pl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"pm" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "danger" - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "!"; - pixel_x = 14; - pixel_y = 5 - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"pn" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" +"pc" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "outpost1" }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"pe" = ( /obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/holosign/barrier/infinite{ - max_integrity = 500 + dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"po" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) +"pf" = ( +/obj/effect/mob_spawn/human/corpse/charredskeleton{ + name = "Marv"; + mob_name = "Marv" + }, +/obj/item/stack/cable_coil/cut/yellow, +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/plating/asteroid, +/area/outpost/external) +"pg" = ( +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/vacant_rooms) +"pi" = ( +/obj/structure/closet/secure_closet/freezer/gulag_fridge, +/obj/item/reagent_containers/pill/floorpill, +/obj/item/reagent_containers/pill/floorpill, +/obj/item/reagent_containers/pill/floorpill, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "pp" = ( /obj/item/reagent_containers/pill/floorpill, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"pr" = ( -/turf/open/floor/wood, -/area/outpost/maintenance/starboard) +"pq" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "pt" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -3030,15 +3207,12 @@ }, /turf/open/floor/wood, /area/outpost/crew/library) -"py" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) +"px" = ( +/obj/machinery/holopad/emergency/janitor, +/obj/effect/turf_decal/trimline/opaque/purple/filled, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "pA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3049,15 +3223,6 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"pB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/starboard) -"pC" = ( -/obj/structure/chair/bench/beige/directional/north, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) "pF" = ( /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 @@ -3074,23 +3239,29 @@ /obj/item/canvas/twentythreeXtwentythree, /turf/open/floor/wood, /area/outpost/crew/library) -"pL" = ( -/obj/structure/disposalpipe/junction{ - dir = 2 +"pI" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/syringe/contraband/morphine{ + pixel_y = 6; + pixel_x = -3 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/item/reagent_containers/pill/floorpill{ + pixel_x = 4; + pixel_y = 3 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"pK" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, /area/outpost/hallway/central) "pM" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/starboard) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "pO" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/security) +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "pQ" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -3100,15 +3271,29 @@ }, /turf/open/floor/plating/asteroid, /area/outpost/external) -"pS" = ( -/obj/item/kirbyplants{ - icon_state = "plant-22" +"pU" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/cockroach, +/turf/open/floor/wood{ + icon_state = "wood-broken6" }, -/obj/effect/turf_decal/corner/opaque/neutral/half{ +/area/outpost/maintenance/starboard) +"pV" = ( +/obj/structure/closet/firecloset/wall/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/outpost/hallway/port) +"pY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "qb" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3126,39 +3311,66 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"qe" = ( +"qc" = ( +/obj/machinery/conveyor_switch{ + id = "outpost2"; + layer = 3.11; + pixel_y = 9; + pixel_x = -2 + }, /obj/structure/railing/thin{ + dir = 9 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"qe" = ( +/obj/structure/flippedtable{ dir = 4 }, -/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/area/outpost/maintenance/central) +"qf" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "qg" = ( /obj/structure/chair/sofa/brown/left/directional/east, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) "qh" = ( -/obj/structure/table, -/obj/item/pizzabox/vegetable{ - pixel_y = 10 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = -19; - pixel_y = 13 +/obj/structure/railing/wood{ + dir = 8 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/outpost/maintenance/starboard) -"qk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 +"ql" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"qn" = ( +/obj/structure/chair/sofa/brown/left/directional/south, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "qp" = ( /obj/structure/flora/rock, /turf/open/floor/plating/asteroid, @@ -3173,49 +3385,82 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"qs" = ( -/obj/structure/platform/wood_two{ - dir = 4 +"qr" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "danger" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "!"; + pixel_x = 14; + pixel_y = 5 }, -/obj/structure/chair/stool/bar, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"qv" = ( -/obj/structure/railing/thin, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/area/outpost/hallway/central) +"qt" = ( +/obj/machinery/newscaster/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"qw" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen/full, +/obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, -/area/outpost/security) +/area/outpost/hallway/port) "qx" = ( /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/generic, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"qA" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +"qz" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/east{ + pixel_y = -7 + }, +/obj/machinery/firealarm/directional/east{ + pixel_y = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"qC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"qC" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 1 +/turf/open/floor/plating, +/area/outpost/hallway/central) +"qE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/security) -"qD" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/area/outpost/storage) +"qF" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "qG" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3228,58 +3473,44 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"qJ" = ( -/obj/machinery/vending/boozeomat{ - pixel_y = 1; - dir = 8; - pixel_x = 7 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"qM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, +"qI" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"qN" = ( -/obj/machinery/disposal/deliveryChute{ +/obj/structure/holosign/barrier/infinite{ + max_integrity = 500 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/hallway/central) -"qR" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"qJ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/wood, /area/outpost/maintenance/starboard) -"qT" = ( -/obj/structure/grille/indestructable, +"qO" = ( +/obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/window/reinforced/fulltile/indestructable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"qW" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "outpost2" +/area/outpost/hallway/central) +"qV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/platform/ship_two, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "qX" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -3289,73 +3520,33 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"rb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 8 +"qY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/obj/structure/railing/thin, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "rg" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/wrapping, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, -/area/outpost/crew/library) -"rk" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/mineral/electrolyzer{ - output_dir = 4 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"rm" = ( -/obj/structure/sink{ - dir = 8; - pixel_y = 0; - pixel_x = 14 - }, -/obj/structure/mirror{ - pixel_x = 25 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/button/door{ - pixel_y = -21; - dir = 1; - pixel_x = -9; - name = "door lock"; - id = "b2"; - specialfunctions = 4; - normaldoorcontrol = 1 - }, -/turf/open/floor/plasteel/mono, -/area/outpost/hallway/central) +/area/outpost/crew/library) +"ri" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/grille, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "ro" = ( /obj/machinery/power/terminal{ dir = 4 }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"rp" = ( -/obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/maintenance/seven, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/vacant_rooms) -"rr" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) "rs" = ( /obj/structure/table/wood, /obj/item/radio/old, @@ -3370,42 +3561,32 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space) -"rv" = ( -/turf/closed/indestructible/reinforced, -/area/outpost/medical) -"ry" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/window{ - req_access = list("101"); - dir = 8 - }, -/obj/machinery/door/window{ - req_access = list("101"); - dir = 4 +"ru" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"rw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"rx" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/security) +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "rz" = ( /obj/structure/flora/rock, /obj/structure/flora/rock, /turf/open/floor/plating/asteroid, /area/outpost/external) -"rB" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/starboard) "rC" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -3419,67 +3600,31 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) -"rG" = ( -/obj/structure/grille/indestructable, -/obj/structure/window/reinforced/fulltile/indestructable, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"rK" = ( -/obj/structure/chair/plastic{ - dir = 1 +"rF" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/syringe/contraband/morphine{ + pixel_y = 3; + pixel_x = 3 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"rM" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/item/reagent_containers/pill/floorpill{ + pixel_x = -4; + pixel_y = 7 }, -/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"rN" = ( -/obj/structure/chair/sofa/brown/left/directional/south, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"rP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"rQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "guy"; - pixel_y = 20 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/turf_decal/steeldecal/steel_decals6{ - dir = 9 +/obj/item/flashlight/lamp/green{ + pixel_x = 8; + pixel_y = -10 }, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"rI" = ( +/turf/open/floor/engine/air, +/area/outpost/engineering/atmospherics) +"rJ" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/area/outpost/maintenance/central) "rR" = ( /obj/structure/table, /obj/item/paper_bin, @@ -3518,36 +3663,27 @@ /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) "rV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/item/reagent_containers/pill/floorpill, +/obj/structure/chair/sofa/brown/old/directional/east, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"sa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "1-8" }, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"rW" = ( /obj/structure/cable/yellow{ - icon_state = "1-9" - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 + icon_state = "1-4" }, /obj/structure/cable/yellow{ - icon_state = "5-9" - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) -"rZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 + icon_state = "2-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) "sb" = ( /obj/item/kirbyplants{ @@ -3574,116 +3710,47 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"sc" = ( -/obj/machinery/washing_machine, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/maintenance/central) -"sf" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/foamedmetal, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"sj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/wood, -/area/outpost/crew/bar) -"sk" = ( -/obj/structure/chair/sofa/brown/right/directional/east, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"sl" = ( -/obj/structure/railing/wood{ - dir = 2; - color = "#792f27" - }, -/turf/open/floor/plasteel/stairs/wood{ - dir = 4; - color = "#792f27" - }, -/area/outpost/crew/bar) -"sm" = ( -/obj/machinery/light/small/directional/north, +"sd" = ( +/obj/machinery/light/dim/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"sn" = ( -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"sq" = ( -/obj/effect/landmark/outpost/elevator_machine{ - shaft = "1" - }, -/obj/machinery/elevator_call_button{ - dir = 4; - pixel_y = 0; - pixel_x = -22 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"sr" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) -"su" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"sw" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +"sf" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, +/obj/structure/foamedmetal, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"sg" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/item/cigbutt/roach, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) +"sn" = ( +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"sr" = ( +/obj/structure/chair/bench/beige/directional/south, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) -"sz" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 4 +"ss" = ( +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/area/outpost/cargo) +"sw" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/crew/library) "sB" = ( /obj/structure/disposalpipe/segment, /obj/structure/chair/office{ @@ -3703,13 +3770,6 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"sG" = ( -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) "sH" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning{ @@ -3720,16 +3780,49 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) +"sI" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "sL" = ( -/obj/structure/sink/kitchen{ - dir = 1; - name = "big sink" +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-2" }, -/obj/structure/mirror{ - pixel_y = -25 +/obj/structure/grille/indestructable, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) +"sM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/caution, +/obj/structure/noticeboard{ + name = "refinery notice board"; + dir = 8; + pixel_y = 0; + pixel_x = 26 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"sN" = ( +/obj/structure/chair/bench/beige/directional/south, /obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/patterned, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "sO" = ( /obj/effect/turf_decal/industrial/warning{ @@ -3772,11 +3865,15 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "sS" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/disposalpipe/junction/yjunction, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) "sV" = ( /obj/structure/cable/yellow{ @@ -3786,25 +3883,33 @@ /turf/open/floor/wood, /area/outpost/crew/library) "sW" = ( -/obj/effect/spawner/random/trash/decal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/maintenance/central) -"ta" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/twentyfive_percent_cyborg_mask, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/clothing/gloves, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/outpost/storage) -"te" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/landmark/ert_outpost_spawn, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 9 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/outpost/security) +"sZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/outpost/crew/bar) +"tb" = ( +/obj/structure/chair/comfy/orange/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"tf" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "th" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -3814,13 +3919,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"ti" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) "tj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -3831,44 +3929,31 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) -"tl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"tm" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"to" = ( -/obj/machinery/elevator_call_button{ - dir = 2; - pixel_y = 24 - }, -/obj/structure/chair/bench/beige/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) +"tq" = ( +/obj/machinery/mineral/electrolyzer_unloader, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "tr" = ( /obj/structure/bookcase/random, /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"tt" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/corner/opaque/white/diagonal, +"ts" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ + dir = 4 + }, /turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/area/outpost/crew/janitor) "tu" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 @@ -3877,14 +3962,6 @@ icon_state = "wood-broken3" }, /area/outpost/crew/bar) -"tv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plating, -/area/outpost/maintenance/central) "tw" = ( /obj/structure/table/wood, /obj/item/newspaper{ @@ -3893,136 +3970,93 @@ }, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) -"ty" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, +"tx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/outpost/medical) -"tz" = ( -/obj/item/stack/tile/carpet, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"tA" = ( -/obj/machinery/mineral/unloading_machine{ - input_dir = 2; - output_dir = 1 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/platform/ship_two{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"tC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/structure/disposalpipe/junction/yjunction, /obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating/rust, /area/outpost/hallway/central) -"tE" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 9 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"tG" = ( -/obj/structure/cable/yellow{ - icon_state = "2-9" - }, +"ty" = ( +/obj/structure/chair/sofa/brown/right/directional/east, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"tz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"tH" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/airlock{ - dir = 4; - name = "Restroom Stall"; - id_tag = "b2" +/obj/item/radio/intercom/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plating, /area/outpost/hallway/central) -"tI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/machinery/computer/electrolyzer_console{ - pixel_y = -5; - density = 0; - dir = 8; - pixel_x = -2 - }, -/obj/structure/railing/thin{ +"tE" = ( +/obj/structure/railing{ dir = 4 }, +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 9 + }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"tN" = ( +"tO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/port) +"tR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/item/radio/intercom/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "tS" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/four, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"tT" = ( -/obj/structure/railing/thin{ +"tW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"tU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 9 +/turf/open/floor/plating, +/area/outpost/hallway/central) +"tY" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 10 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"tZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-8" +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 }, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) +/turf/open/floor/plasteel, +/area/outpost/security) "ua" = ( /obj/item/radio/intercom/directional/east, /obj/structure/chair{ @@ -4031,6 +4065,21 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/storage) +"ub" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) +"ud" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "ue" = ( /obj/structure/table/wood, /obj/machinery/light/small/directional/east, @@ -4055,13 +4104,15 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"ug" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +"ui" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "uj" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning, @@ -4070,26 +4121,15 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) -"uk" = ( -/obj/structure/sign/poster/random{ - pixel_y = 30 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"um" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/obj/structure/chair/bench/olive/directional/east{ - dir = 2 +"ul" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_y = 11; + pixel_x = 8 }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "un" = ( /obj/structure/chair/wood{ dir = 8 @@ -4102,6 +4142,22 @@ /obj/structure/chair/sofa/brown/corner/directional/west, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) +"us" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable/yellow, +/turf/open/floor/plasteel, +/area/outpost/cargo) +"ut" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) "uu" = ( /obj/machinery/light/small/directional/north, /obj/structure/disposalpipe/segment{ @@ -4114,102 +4170,50 @@ /obj/machinery/bookbinder, /turf/open/floor/wood, /area/outpost/crew/library) -"uw" = ( -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) -"uy" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"uz" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 8 - }, -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) -"uA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"uD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/outpost/medical) "uE" = ( /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"uI" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/outpost/security) -"uJ" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/grid, -/area/outpost/security) -"uL" = ( -/obj/structure/toilet{ - dir = 4; - pixel_y = 0; - pixel_x = -6 - }, -/obj/structure/mirror{ - pixel_y = 30 - }, -/obj/structure/sink{ - pixel_y = 24 +"uF" = ( +/obj/structure/rack, +/obj/effect/spawner/random/clothing/pirate_or_bandana, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) +"uK" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = 6; + pixel_x = 6 }, -/turf/open/floor/plasteel, -/area/outpost/crew/bar) -"uN" = ( -/obj/structure/festivus{ - pixel_x = -17; - pixel_y = -7; - name = "normal pole"; - desc = "A fairly normal pole in a fairly normal position." +/obj/item/pen, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"uM" = ( +/obj/structure/rack, +/obj/item/skub, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters, +/turf/open/floor/plasteel/dark, +/area/outpost/vacant_rooms) +"uO" = ( /turf/open/floor/wood, /area/outpost/maintenance/starboard) +"uP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "uQ" = ( /obj/structure/table, /obj/item/clipboard{ @@ -4219,14 +4223,23 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"uU" = ( -/obj/machinery/newscaster/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/thinplating/dark{ +"uR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/maintenance/central) +"uS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) "uV" = ( /obj/structure/dresser{ @@ -4235,17 +4248,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"uW" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +"uY" = ( +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 9 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"uX" = ( -/obj/structure/chair/sofa/brown/old/left/directional/east, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "va" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt/dust, @@ -4260,93 +4269,95 @@ }, /turf/open/floor/plating/asteroid, /area/outpost/external) -"vd" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) "ve" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"vp" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"vq" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"vh" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 1 }, /turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"vr" = ( -/obj/structure/dresser{ - dir = 8 +"vi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/item/clothing/under/dress/skirt/color{ - pixel_x = -2; - pixel_y = 12 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"vk" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) +"vl" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -25; + pixel_x = -7 }, -/obj/item/clothing/under/dress/skirt/color/blue{ - pixel_y = 5; - pixel_x = 3 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/light/dim/directional/south, -/obj/item/clothing/shoes/sandal{ - pixel_x = -6; - pixel_y = 2 +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"vn" = ( +/obj/item/stack/tile/carpet, +/obj/structure/rack, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"vs" = ( +/obj/structure/rack, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, +/area/outpost/vacant_rooms) +"vu" = ( +/obj/structure/rack, +/obj/effect/spawner/random/clothing/bowler_or_that, +/obj/effect/spawner/random/maintenance/three, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) +"vw" = ( +/turf/open/floor/plating, /area/outpost/maintenance/starboard) -"vz" = ( -/obj/structure/table/wood, +"vD" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/platform/wood_two/corner{ - dir = 8 +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"vF" = ( +/obj/machinery/door/firedoor/heavy, +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_y = 5; - pixel_x = -7 +/turf/open/floor/plating, +/area/outpost/vacant_rooms/office) +"vG" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"vB" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/crew/bar) "vH" = ( /obj/machinery/conveyor/auto{ dir = 6; @@ -4363,32 +4374,37 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"vK" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) -"vR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"vJ" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Bar" + }, +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) -"vS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/stack/tile/carpet{ - pixel_y = 3; - pixel_x = -8 +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/obj/item/cigbutt/roach{ - pixel_y = 4; - pixel_x = 9 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/generic, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/bar) "vT" = ( /obj/structure/rack, /mob/living/simple_animal/pet/mothroach{ @@ -4400,37 +4416,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"vV" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, +"vU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/steeldecal/steel_decals_central7, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable/yellow{ - icon_state = "6-8" + icon_state = "1-2" }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plating, /area/outpost/maintenance/central) -"vX" = ( -/obj/item/decal_painter, -/obj/item/floor_painter{ - pixel_y = 6; - pixel_x = 5 - }, -/obj/structure/rack, -/obj/item/stack/tile/carpet{ - pixel_x = 6; - pixel_y = -4; - amount = 27 +"vY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 9 }, -/obj/effect/turf_decal/siding/wood, +/mob/living/simple_animal/hostile/cockroach, /turf/open/floor/plasteel/grimy, /area/outpost/maintenance/starboard) "vZ" = ( @@ -4449,11 +4452,21 @@ /obj/effect/decal/cleanable/confetti, /turf/open/floor/wood, /area/outpost/crew/library) -"we" = ( -/obj/structure/grille/indestructable, -/obj/structure/window/reinforced/fulltile/indestructable, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) +"wd" = ( +/obj/structure/table, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"wh" = ( +/obj/structure/table, +/obj/item/radio/intercom/table{ + dir = 8; + layer = 2.99; + pixel_x = -6 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "wi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 @@ -4465,6 +4478,19 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/central) +"wj" = ( +/obj/item/stack/tile/carpet{ + pixel_x = -7; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor5" + }, +/mob/living/simple_animal/mouse/white, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "wk" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -4475,41 +4501,47 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"wp" = ( -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +"wl" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, +/obj/machinery/computer/cryopod/retro/directional/west, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"wo" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light/dim/directional/south, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "wq" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"wr" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +"ws" = ( +/obj/structure/sink{ + dir = 8; + pixel_y = 0; + pixel_x = 14 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"wu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/mirror{ + pixel_x = 25 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/light/small/directional/south, +/obj/machinery/button/door{ + pixel_y = -21; + dir = 1; + pixel_x = -9; + name = "door lock"; + id = "b2"; + specialfunctions = 4; + normaldoorcontrol = 1 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/port) -"wv" = ( -/turf/open/floor/plating, -/area/outpost/crew/bar) +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) "ww" = ( /obj/machinery/door/airlock/glass{ name = "Cryogenics" @@ -4529,85 +4561,101 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/crew/cryo) +"wy" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"wz" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "wA" = ( /obj/effect/decal/cleanable/food/tomato_smudge, /turf/open/floor/wood/mahogany, /area/outpost/crew/bar) -"wC" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +"wB" = ( +/obj/structure/chair/plastic{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"wE" = ( -/obj/structure/closet/secure_closet/armory1, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"wF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"wD" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 10 }, -/obj/structure/disposalpipe/segment, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/security) +"wG" = ( /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"wI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 + icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"wH" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/item/crowbar{ + pixel_y = 7; + pixel_x = 6 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/obj/item/cigbutt/roach, +/obj/effect/decal/cleanable/ash, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "wK" = ( /turf/closed/indestructible/reinforced, /area/outpost/vacant_rooms/office) "wL" = ( /turf/closed/indestructible/reinforced, /area/outpost/vacant_rooms) -"wN" = ( -/obj/machinery/vending/coffee, -/obj/machinery/light/dim/directional/south, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) "wO" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"wP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "wR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/central) "wS" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "wT" = ( /obj/machinery/jukebox{ @@ -4630,76 +4678,31 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "wV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"wW" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/outpost/security) -"wX" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"wY" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/crate_shelf, -/obj/effect/turf_decal/borderfloor{ - dir = 1 - }, -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) -"wZ" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"xc" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ - dir = 1 - }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable/yellow, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel, -/area/outpost/security) -"xf" = ( +/area/outpost/crew/janitor) +"xh" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "2-4" }, /obj/effect/turf_decal/borderfloor{ - dir = 6 + dir = 5 }, /turf/open/floor/plasteel/mono{ dir = 1 }, /area/outpost/cargo) -"xk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +"xi" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, +/area/outpost/hallway/central) +"xl" = ( +/turf/closed/indestructible/reinforced/rust, /area/outpost/vacant_rooms) "xm" = ( /obj/machinery/light/small/directional/south, @@ -4707,58 +4710,69 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"xr" = ( -/obj/structure/chair/sofa/brown/old/directional/east, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"xu" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"xy" = ( -/obj/structure/falsewall/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +"xn" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 9 }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"xp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"xI" = ( -/obj/machinery/cryopod, -/obj/structure/sign/poster/random{ - pixel_y = 30 - }, -/obj/effect/turf_decal/techfloor{ - dir = 1 +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"xs" = ( +/obj/structure/falsewall/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/grid, -/area/outpost/crew/cryo) -"xJ" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/door/window{ - req_access = list("101") +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/machinery/door/window{ - req_access = list("101"); +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"xt" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/security) +"xu" = ( +/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"xw" = ( +/obj/machinery/newscaster/directional/west, +/obj/structure/disposalpipe/segment{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/tech, -/area/outpost/security) +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"xD" = ( +/obj/machinery/conveyor{ + id = "outpost3"; + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) "xK" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4772,27 +4786,12 @@ /obj/effect/turf_decal/techfloor, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"xM" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/kitchen/fork{ - pixel_y = 0; - pixel_x = -7 - }, -/obj/item/kitchen/fork{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) "xN" = ( -/obj/item/stack/sheet/mineral/sandstone{ - pixel_x = 5; - pixel_y = 6 - }, -/turf/open/floor/plating/asteroid, -/area/outpost/maintenance/starboard) +/obj/machinery/washing_machine, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "xQ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -4801,11 +4800,26 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"xU" = ( -/obj/structure/chair/bench/beige/directional/south, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) +"xR" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) +"xT" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "xW" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -4825,36 +4839,40 @@ /obj/effect/spawner/random/trash/decal, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"xZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/closet/l3closet/janitor, -/obj/effect/turf_decal/steeldecal/steel_decals3, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +"ya" = ( +/obj/structure/closet/secure_closet/armory1, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, +/area/outpost/security) "yc" = ( /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/central) -"yf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +"yd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/structure/sign/poster/random{ + pixel_x = -28 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"yh" = ( -/obj/structure/reagent_dispensers/beerkeg, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/crew/bar) +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"yi" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/caution, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "yj" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning{ @@ -4871,10 +4889,18 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) -"yk" = ( -/obj/structure/table, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) +"yn" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/external) +"yo" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "yq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -4884,37 +4910,75 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"yv" = ( -/obj/structure/table/reinforced, -/obj/structure/railing/thin, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"yB" = ( -/obj/effect/turf_decal/corner_techfloor_grid{ +"yw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"yy" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 22 + }, +/obj/structure/table, +/obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/outpost/medical) +"yz" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) "yE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/wood, /area/outpost/crew/bar) -"yL" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +"yH" = ( +/obj/structure/railing/wood{ + dir = 2; + color = "#792f27" + }, +/turf/open/floor/plasteel/stairs/wood{ + dir = 4; + color = "#792f27" + }, +/area/outpost/crew/bar) +"yM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 }, -/obj/effect/turf_decal/corner/opaque/white, /turf/open/floor/plasteel, -/area/outpost/hallway/port) -"yN" = ( -/obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ - dir = 4 +/area/outpost/security) +"yO" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, /turf/open/floor/plasteel/dark, -/area/outpost/vacant_rooms) +/area/outpost/hallway/central) +"yP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/port) "yQ" = ( /obj/structure/chair{ dir = 1 @@ -4926,13 +4990,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) -"yR" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) "yS" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4940,93 +4997,61 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"yU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"yV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"yX" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"yY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"yZ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, +"yT" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/outpost/hallway/central) -"za" = ( -/turf/closed/indestructible/reinforced/rust, /area/outpost/crew/bar) -"zb" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +"zd" = ( +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"zg" = ( -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"zo" = ( -/obj/effect/decal/cleanable/glass/strange, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 10 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 10 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) +"zh" = ( /obj/structure/cable/yellow{ - icon_state = "5-8" + icon_state = "4-8" }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/central) -"zp" = ( -/obj/structure/flora/rock, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid, -/area/outpost/maintenance/starboard) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"zi" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21"; + name = "oxygen reclaimation system" + }, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) +"zl" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"zm" = ( +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "zq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -5035,61 +5060,61 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"zr" = ( +"zs" = ( /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 5 + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"zv" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"zC" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/computer/hydrogen_exchange{ + dir = 8 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"zD" = ( -/obj/machinery/camera/autoname{ - dir = 4 +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/mono, +/area/outpost/vacant_rooms/office) +"zt" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/toy/balloon, +/obj/item/toy/balloon, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"zx" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/obj/machinery/light/directional/north, /turf/open/floor/plasteel/dark, -/area/outpost/security) +/area/outpost/hallway/central) "zE" = ( /obj/structure/cable/yellow{ icon_state = "1-8" }, /turf/open/floor/plating/asteroid, /area/outpost/external) +"zF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "zG" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/rack, +/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, +/obj/effect/decal/cleanable/wrapping, +/obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"zI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/comfy/orange/directional/north, -/turf/open/floor/plating, -/area/outpost/crew/bar) -"zL" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/dark, +/area/outpost/vacant_rooms) "zM" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5114,23 +5139,39 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"zR" = ( -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 6 +"zP" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"zQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ dir = 5 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "zS" = ( /obj/effect/spawner/random/trash/decal, /turf/open/floor/plating, /area/outpost/maintenance/central) +"zU" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "zY" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable/yellow{ @@ -5142,6 +5183,33 @@ /obj/effect/decal/cleanable/generic, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) +"zZ" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/structure/chair/bench/olive/directional/east{ + dir = 2 + }, +/obj/machinery/camera/autoname, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"Aa" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/glass/rag{ + pixel_y = 12; + pixel_x = -5 + }, +/obj/item/reagent_containers/glass/rag{ + pixel_y = 6; + pixel_x = 4 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/plasteel, +/area/outpost/medical) "Ab" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -5150,21 +5218,29 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Ac" = ( -/obj/structure/railing/wood{ - dir = 8 - }, -/turf/open/floor/wood, -/area/outpost/maintenance/starboard) -"Ai" = ( /obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"Ad" = ( +/obj/effect/decal/cleanable/glass/strange, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "5-8" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) "Aj" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half, -/obj/structure/chair/bench/olive/directional/north, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "Ak" = ( /obj/machinery/door/airlock/maintenance{ dir = 4 @@ -5180,13 +5256,20 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) -"Am" = ( -/obj/effect/spawner/random/vending/cola, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 8 +"Al" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-2" }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/grille/indestructable, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "Ao" = ( /obj/item/radio/intercom/directional/north, /obj/item/trash/can/food/beans{ @@ -5206,17 +5289,40 @@ pixel_x = -12; pixel_y = 8 }, -/turf/open/floor/plating/asteroid, -/area/outpost/maintenance/central) -"Ap" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/central) +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/central) +"Ap" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"Aq" = ( +/obj/structure/sign/poster/random{ + pixel_y = 30 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"Ar" = ( +/obj/structure/chair/comfy/orange/directional/south, +/obj/effect/turf_decal/siding/wood, +/obj/structure/sign/poster/random{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "As" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"At" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -5228,35 +5334,26 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Aw" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/corner/opaque/neutral/half{ +"Az" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/medical) +"AA" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"Ay" = ( -/obj/structure/window/reinforced/fulltile/indestructable, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/outpost/crew/bar) +/area/outpost/hallway/central) "AB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/hallway/central) "AH" = ( @@ -5297,13 +5394,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/maintenance/central) -"AL" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/hallway/central) "AM" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -5314,23 +5404,6 @@ /obj/effect/decal/cleanable/confetti, /turf/open/floor/wood, /area/outpost/crew/library) -"AN" = ( -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"AO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) "AP" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -5345,27 +5418,17 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"AS" = ( +"AR" = ( /obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/corner_steel_grid/full, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"AT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"AU" = ( -/obj/machinery/light/dim/directional/north, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "AW" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/railing, @@ -5375,32 +5438,17 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) -"Ba" = ( -/obj/effect/turf_decal/siding/wood, -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"Bc" = ( -/obj/item/radio/intercom/directional/west, +"Bb" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/ert_outpost_spawn, -/obj/effect/turf_decal/corner/opaque/black{ +/obj/effect/turf_decal/borderfloor{ dir = 6 }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/outpost/security) -"Bd" = ( -/obj/machinery/computer/cryopod/directional/north, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/security) +/area/outpost/cargo) "Bf" = ( /obj/structure/table/wood, /obj/machinery/camera/autoname{ @@ -5413,45 +5461,52 @@ }, /turf/open/floor/carpet/green, /area/outpost/crew/bar) -"Bh" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Bj" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"Bg" = ( +/obj/structure/closet/crate/bin{ + pixel_y = 0 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/insectguts, +/obj/item/reagent_containers/syringe{ + pixel_y = -7; + pixel_x = -1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/item/reagent_containers/syringe{ + pixel_y = 1 }, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) -"Bo" = ( -/obj/item/bedsheet, -/obj/structure/bed/pod, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"Bp" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/item/reagent_containers/syringe{ + pixel_y = -6; + pixel_x = 9 }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Bh" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/corner_steel_grid{ dir = 10 }, /turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"Bi" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "guy"; + pixel_y = 20 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) "Bq" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -5472,25 +5527,21 @@ /obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Bt" = ( -/obj/structure/grille/indestructable, -/obj/structure/window/reinforced/fulltile/indestructable, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"Bu" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/beer/light{ - pixel_y = -2; - pixel_x = 5 +"Bs" = ( +/obj/structure/railing/thin{ + dir = 9 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"By" = ( -/obj/structure/closet/secure_closet/contraband, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/dark, -/area/outpost/security) +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/conveyor_switch{ + id = "outpost3"; + layer = 3.11; + pixel_y = 8; + pixel_x = -9 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "Bz" = ( /obj/machinery/power/floodlight, /obj/structure/cable/yellow{ @@ -5507,63 +5558,104 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"BJ" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating/asteroid, +"BC" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"BF" = ( +/obj/machinery/elevator_call_button{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/chair/bench/beige/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"BG" = ( +/obj/machinery/microwave, +/obj/structure/table, +/obj/effect/decal/cleanable/sprayweb, +/turf/open/floor/plasteel/grimy, /area/outpost/maintenance/starboard) "BM" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/port) +"BN" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"BP" = ( +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"BQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/thin{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"BS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/port) -"BN" = ( +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"BU" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/steeldecal/steel_decals6{ - dir = 8 + icon_state = "1-4" }, /turf/open/floor/plating, -/area/outpost/maintenance/fore) -"BO" = ( -/obj/structure/table, -/obj/item/radio/intercom/table{ - dir = 8; - layer = 2.99; - pixel_x = -6 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"BP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"BR" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/crayon{ - icon_state = "f"; - pixel_y = 0; - pixel_x = -19 +"BV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "f"; - pixel_y = 0; - pixel_x = -19 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/obj/structure/cable/yellow{ + icon_state = "2-9" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) "BX" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/mug{ @@ -5578,30 +5670,29 @@ }, /turf/closed/indestructible/reinforced, /area/outpost/maintenance/fore) -"BZ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ - dir = 1 - }, -/obj/item/kirbyplants{ - icon_state = "plant-21"; - name = "oxygen reclaimation system" +"Cb" = ( +/obj/machinery/light/dim/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"Ca" = ( -/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"Cc" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/crew/bar) +"Ce" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) -"Cc" = ( -/turf/closed/indestructible/reinforced, -/area/outpost/crew/bar) +/obj/effect/turf_decal/steeldecal/steel_decals9, +/obj/effect/turf_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "Cf" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -5628,52 +5719,25 @@ }, /turf/open/floor/carpet/green, /area/outpost/crew/bar) -"Ch" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/crew/bar) -"Ci" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) "Ck" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/medical) -"Cl" = ( -/obj/structure/platform/wood_two, -/turf/open/floor/plasteel/stairs/wood{ - dir = 8 - }, +/obj/item/stack/tile/carpet, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) "Cm" = ( /obj/item/toy/sprayoncan, /turf/open/floor/plating/asteroid, /area/outpost/external) -"Cn" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +"Co" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/hallway/central) "Cp" = ( /obj/machinery/camera/autoname, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) -"Cr" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/obj/structure/chair/bench/olive/directional/east{ - dir = 2 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) +"Cs" = ( +/turf/open/floor/wood, +/area/outpost/crew/bar) "Ct" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -5693,157 +5757,150 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"CB" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +"Cx" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"Cy" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel, /area/outpost/hallway/central) -"CF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 9 +"CB" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"CI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/curtain/cloth/fancy{ - dir = 8; - open = 0 +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"CE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel/stairs{ - dir = 8 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"CK" = ( -/turf/open/floor/wood, -/area/outpost/crew/bar) -"CL" = ( -/obj/machinery/conveyor{ - id = "outpost3"; - dir = 5 +"CH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/patterned/grid, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "CM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/structure/chair/stool/bar{ dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "0-2" }, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "CN" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +/obj/structure/chair/bench/beige/directional/south, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"CR" = ( +/obj/machinery/power/smes/magical{ + name = "power relay"; + output_level = 200000 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/structure/cable/yellow{ + icon_state = "0-4" }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"CT" = ( +/obj/effect/decal/cleanable/glass/strange, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"CP" = ( -/obj/machinery/microwave, -/obj/structure/table, -/obj/effect/decal/cleanable/sprayweb, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) -"CS" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-10" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) +"CV" = ( /obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"CZ" = ( +/obj/machinery/disposal/deliveryChute{ + name = "fun chute"; + desc = "If it's so fun, what's the harm in it?" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 + }, +/obj/structure/disposalpipe/trunk, /obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 + dir = 5 }, +/obj/effect/turf_decal/steeldecal/steel_decals_central2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"Dc" = ( +/obj/structure/falsewall/reinforced, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"CU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/area/outpost/vacant_rooms) +"Dj" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 4 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"CV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Dk" = ( /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"CX" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-4" }, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"Df" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half, -/obj/structure/chair/bench/olive/directional/north, /turf/open/floor/plasteel/dark, -/area/outpost/medical) -"Dg" = ( +/area/outpost/hallway/port) +"Dl" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"Di" = ( -/obj/structure/table/reinforced, -/obj/machinery/conveyor_switch{ - id = "outpost1"; - layer = 3.11; - pixel_y = 4; - pixel_x = 5 - }, -/obj/structure/railing/thin, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "Dm" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"Do" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/outpost/security) -"Dp" = ( -/turf/open/floor/plating/asteroid, -/area/outpost/maintenance/starboard) +"Dn" = ( +/obj/structure/grille/indestructable, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "Dq" = ( /obj/structure/falsewall/reinforced, /obj/structure/cable/yellow{ @@ -5851,42 +5908,106 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"DA" = ( -/obj/structure/barricade/wooden/crude, -/obj/structure/grille/indestructable, -/obj/structure/window/reinforced/fulltile/indestructable, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"DD" = ( -/turf/open/floor/plasteel/stairs, -/area/outpost/maintenance/starboard) -"DF" = ( +"Dr" = ( +/obj/machinery/newscaster/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"Dt" = ( +/obj/structure/chair/sofa/brown/corner/directional/east, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"Dv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Dw" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/obj/machinery/camera/autoname{ dir = 4 }, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/crew/cryo) +"Dx" = ( +/obj/machinery/light/dim/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Dy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) +"Dz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/crew/bar) +"DB" = ( +/obj/effect/turf_decal/spline/fancy/opaque/grey, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"DC" = ( /obj/structure/cable/yellow{ - icon_state = "1-8" + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/effect/turf_decal/corner_steel_grid{ dir = 10 }, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"DH" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/bowler_or_that, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 4 +/area/outpost/hallway/central) +"DE" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/outpost/storage) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"DG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/dim/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) "DI" = ( /obj/structure/railing{ dir = 8 @@ -5894,6 +6015,12 @@ /obj/effect/decal/fakelattice, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/security) +"DK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "DL" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -5902,19 +6029,12 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "DO" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/airlock{ - name = "Laundry Room" +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/outpost/maintenance/central) +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "DP" = ( /obj/structure/railing/corner, /obj/machinery/light/dim/directional/north, @@ -5926,16 +6046,10 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"DS" = ( -/obj/machinery/power/smes/magical{ - name = "power relay"; - output_level = 200000 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, +"DR" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, -/area/outpost/maintenance/fore) +/area/outpost/hallway/central) "DV" = ( /obj/structure/falsewall/reinforced, /turf/open/floor/plating, @@ -5948,10 +6062,45 @@ /obj/effect/decal/cleanable/generic, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"DZ" = ( -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +"DX" = ( +/obj/effect/spawner/random/vending/snack, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"Ea" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/fore) +"Ec" = ( +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/crew/library) +"Ed" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/maintenance{ + req_access = list("101") + }, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "Ef" = ( /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 @@ -5960,43 +6109,35 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"Eg" = ( -/obj/machinery/holopad/emergency/janitor, -/obj/effect/turf_decal/trimline/opaque/purple/filled, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +"Eh" = ( +/turf/open/floor/plasteel/stairs, +/area/outpost/maintenance/starboard) "Ei" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Ej" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +/obj/machinery/computer/helm/viewscreen/directional/north, +/obj/structure/chair/comfy/olive{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 9 +/obj/effect/turf_decal/corner/opaque/black/border{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Eo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Eq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel/grimy, +/area/outpost/security) +"En" = ( +/obj/machinery/camera/autoname{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "1-8" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/outpost/hallway/central) "Et" = ( /obj/machinery/disposal/bin, @@ -6006,44 +6147,43 @@ /obj/effect/turf_decal/box, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) -"Ez" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"Ev" = ( +/obj/structure/sign/poster/rilena/run{ + pixel_y = 30 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/table, +/obj/item/modular_computer/laptop/preset/civilian/rilena{ + pixel_y = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Recycling" +/obj/item/reagent_containers/food/drinks/rilenacup{ + pixel_y = -2; + pixel_x = 7 }, -/turf/open/floor/plasteel/tech, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, /area/outpost/hallway/central) -"EB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 +"Ew" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/effect/turf_decal/corner_steel_grid/full{ + dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"EC" = ( -/obj/structure/closet/firecloset/wall/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ +"EA" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "ED" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -6053,76 +6193,30 @@ }, /turf/open/floor/carpet/green, /area/outpost/crew/bar) -"EG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/opaque/purple/filled/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) -"EH" = ( -/obj/machinery/camera/autoname{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"EI" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, +"EF" = ( +/obj/structure/falsewall/reinforced, /turf/open/floor/plating, -/area/outpost/hallway/central) -"EK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/area/outpost/maintenance/starboard) "EP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"EQ" = ( +/obj/structure/falsewall/reinforced, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/closed/indestructible/reinforced/rust, +/area/outpost/maintenance/fore) "ER" = ( /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/outpost/maintenance/central) -"EU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/structure/grille/indestructable, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 6 - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/starboard) -"EV" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"EW" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/vacant_rooms) "EX" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"EZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/mob/living/simple_animal/mouse, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) "Fa" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable/yellow{ @@ -6140,33 +6234,24 @@ }, /turf/open/floor/plasteel, /area/outpost/vacant_rooms/office) -"Ff" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"Fh" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille/indestructable, -/obj/structure/window/reinforced/fulltile/indestructable, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +"Fg" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer/light{ + pixel_x = -8 }, -/turf/open/floor/plating, -/area/outpost/vacant_rooms/office) -"Fi" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 +/obj/item/newspaper{ + pixel_x = 7; + pixel_y = 7 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"Fh" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 }, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) +/area/outpost/security) "Fl" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -6177,23 +6262,23 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Fn" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +"Fm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, -/area/outpost/crew/janitor) -"Fq" = ( -/obj/structure/window/reinforced/fulltile/indestructable, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/outpost/crew/library) -"Fr" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/vending/boozeomat, -/turf/open/floor/carpet/green, -/area/outpost/crew/bar) +/area/outpost/vacant_rooms) +"Fo" = ( +/obj/machinery/light/dim/directional/north, +/obj/structure/ore_box, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, +/area/outpost/cargo) "Fs" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -6206,35 +6291,23 @@ }, /area/outpost/crew/bar) "Ft" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"Fu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/machinery/door/window{ + req_access = list("101") }, -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/machinery/door/window{ + req_access = list("101"); + dir = 1 }, -/obj/structure/grille/indestructable, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/starboard) +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech, +/area/outpost/security) "Fv" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -6242,99 +6315,63 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"Fx" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/mono, -/area/outpost/vacant_rooms/office) -"FB" = ( -/obj/structure/platform/wood_two/corner, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"FE" = ( -/obj/machinery/mineral/electrolyzer_unloader, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"FF" = ( -/obj/structure/sign/poster/rilena/ri{ - pixel_x = -26 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/crayon{ - icon_state = "guy"; - pixel_y = 20 - }, -/obj/effect/decal/cleanable/garbage{ - pixel_x = -7; - pixel_y = -3 - }, -/obj/item/paper/crumpled{ - pixel_y = -2; - pixel_x = 5 - }, -/obj/item/paper/crumpled{ - pixel_y = 5; - pixel_x = -4 - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"FH" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) "FI" = ( /obj/structure/railing, /obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/corner/opaque/brown{ dir = 5 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"FJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/outpost/crew/library) -"FM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/cigbutt/roach, -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"FN" = ( -/obj/structure/urinal{ - dir = 8; - pixel_x = 18 +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"FJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/outpost/crew/library) +"FK" = ( +/obj/structure/toilet{ + dir = 4; + pixel_y = 0; + pixel_x = -6 + }, +/obj/structure/mirror{ + pixel_y = 30 + }, +/obj/structure/sink{ + pixel_y = 24 }, -/obj/effect/turf_decal/steeldecal/steel_decals6{ - dir = 9 +/turf/open/floor/plasteel, +/area/outpost/crew/bar) +"FL" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/turf/open/floor/plasteel/mono, -/area/outpost/hallway/central) -"FQ" = ( +/area/outpost/maintenance/central) +"FP" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/patterned, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) "FS" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"FW" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "FY" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "electricdanger"; @@ -6344,6 +6381,21 @@ /obj/effect/turf_decal/steeldecal/steel_decals10, /turf/open/floor/plating, /area/outpost/maintenance/central) +"FZ" = ( +/obj/item/radio/intercom/wideband/table{ + dir = 8; + pixel_y = 19; + pixel_x = -6 + }, +/obj/machinery/computer/security{ + dir = 4; + layer = 3.1; + pixel_y = 5; + pixel_x = -5 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "Gb" = ( /obj/structure/disposalpipe/segment{ dir = 1 @@ -6351,6 +6403,31 @@ /obj/structure/foamedmetal, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Gd" = ( +/obj/machinery/conveyor{ + id = "outpost3"; + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) +"Ge" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Gg" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/closet/l3closet/janitor, +/obj/effect/turf_decal/steeldecal/steel_decals3, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "Gi" = ( /obj/machinery/atmospherics/components/unary/hydrogen_pump, /obj/effect/turf_decal/industrial/outline/yellow, @@ -6376,12 +6453,6 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Gl" = ( -/obj/structure/bed/pod, -/obj/item/bedsheet, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) "Gm" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -6393,111 +6464,88 @@ /obj/effect/spawner/random/clothing/bowler_or_that, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Go" = ( +/obj/structure/chair/sofa/brown/old/corner/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "Gr" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) +"Gs" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, /area/outpost/hallway/central) "Gt" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/crayon{ + icon_state = "f"; + pixel_y = 0; + pixel_x = -19 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "f"; + pixel_y = 0; + pixel_x = -19 + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"Gw" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/asteroid, /area/outpost/maintenance/starboard) -"Gu" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/janitorialcart, -/obj/item/mop, -/obj/item/clothing/gloves/color/purple, -/obj/item/clothing/head/beanie/purple, -/obj/item/clothing/neck/tie/purple, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) -"Gv" = ( -/obj/structure/table, -/obj/effect/turf_decal/floordetail/tiled, -/obj/machinery/fax/admin/outpost{ - pixel_y = 5 +"Gx" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "GC" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/generic, -/obj/effect/decal/cleanable/confetti, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner_techfloor_gray, /turf/open/floor/plating, /area/outpost/maintenance/starboard) -"GE" = ( -/obj/structure/chair/comfy/orange/directional/south, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"GK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, +"GJ" = ( +/obj/item/kirbyplants/random, /turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) +/area/outpost/hallway/central) "GL" = ( /obj/effect/landmark/outpost/elevator{ shaft = "1" }, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/central) -"GM" = ( -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 6 - }, -/obj/effect/turf_decal/industrial/caution{ - dir = 8 - }, -/obj/structure/railing/thin, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"GO" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +"GN" = ( +/obj/structure/closet/secure_closet/armory3, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"GR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"GQ" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/outpost/cargo/office) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "GS" = ( /obj/machinery/modular_computer/console/preset/civilian, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"GT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"GU" = ( -/obj/structure/cable/yellow{ - icon_state = "6-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) "GW" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt/dust, @@ -6529,103 +6577,66 @@ /turf/open/floor/plating/asteroid, /area/outpost/external) "Hc" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"He" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Hh" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"Hi" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Bar" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) +"Hd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/newscaster/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-2" }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"Hf" = ( /obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 + dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/bar) -"Hk" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/beret_or_rabbitears, -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, /turf/open/floor/plasteel/dark, -/area/outpost/storage) +/area/outpost/hallway/central) "Hl" = ( /mob/living/simple_animal/mouse/brown, /obj/effect/turf_decal/steeldecal/steel_decals6, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Hn" = ( -/obj/structure/chair/stool/bar{ +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/mob/living/simple_animal/hostile/cockroach, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"Hp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/cigbutt/roach{ - pixel_x = -5; - pixel_y = -4 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Hs" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) "Ht" = ( /obj/effect/turf_decal/industrial/warning{ @@ -6661,45 +6672,50 @@ /obj/structure/grille/indestructable, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Hz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +"Hw" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 +/obj/structure/chair/bench/olive/directional/east{ + dir = 2 }, +/obj/machinery/light/dim/directional/east, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"HB" = ( -/obj/structure/table, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 - }, -/obj/effect/spawner/random/entertainment/plushie{ - pixel_x = 16; - pixel_y = 4 +/area/outpost/medical) +"Hx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/obj/item/folder{ - pixel_x = -5; - pixel_y = 2 +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) +"HA" = ( +/obj/machinery/cryopod, +/obj/structure/sign/poster/random{ + pixel_y = 30 }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/effect/turf_decal/techfloor{ + dir = 1 }, -/turf/open/floor/plasteel/patterned, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, /area/outpost/crew/cryo) -"HC" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/external) "HD" = ( /turf/closed/indestructible/rock, /area/outpost/external) -"HF" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) +"HE" = ( +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "HG" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning{ @@ -6717,34 +6733,66 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech, /area/outpost/hallway/central) -"HJ" = ( -/obj/structure/ore_box, -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) "HL" = ( /obj/structure/easel, /obj/effect/decal/cleanable/dirt/dust, /obj/item/canvas/nineteenXnineteen, /turf/open/floor/wood, /area/outpost/crew/library) -"HO" = ( -/obj/effect/landmark/outpost/elevator_machine{ - shaft = "1" +"HM" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "!"; + pixel_x = 9 }, -/obj/machinery/door/airlock/hatch{ - dir = 4 +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -25; + pixel_x = -7 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = 11; + pixel_x = -14 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "arrow"; + pixel_y = -19; + pixel_x = 2 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "f"; + pixel_y = 0; + pixel_x = -19 + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "n" + }, +/obj/effect/decal/cleanable/crayon{ + icon_state = "u"; + pixel_y = -5; + pixel_x = -10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"HN" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ dir = 8 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"HQ" = ( +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) +"HO" = ( /obj/structure/disposalpipe/junction/flip{ dir = 1 }, @@ -6754,17 +6802,21 @@ }, /turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"HR" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +"HU" = ( +/obj/structure/urinal{ + dir = 8; + pixel_x = 18 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 6 }, +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) +"HV" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-2" }, /turf/open/floor/plating, /area/outpost/hallway/central) @@ -6786,45 +6838,15 @@ }, /turf/open/floor/plating, /area/outpost/crew/bar) -"HZ" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"Ia" = ( -/obj/item/radio/intercom/wideband/table{ - dir = 8; - pixel_y = 19; - pixel_x = -6 - }, -/obj/machinery/computer/security{ - dir = 4; - layer = 3.1; - pixel_y = 5; - pixel_x = -5 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) "Ic" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/storage) +"Ie" = ( +/obj/structure/chair/bench/beige/directional/north, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) "If" = ( /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 @@ -6832,28 +6854,38 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"Ip" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/ash{ - pixel_y = 14; - pixel_x = -7 +"Ih" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/starboard) -"Is" = ( -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/purple/filled/line, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) +"Ij" = ( +/obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"It" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/asteroid, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"In" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt/roach{ + pixel_x = -5; + pixel_y = -4 + }, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) "Iu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -6868,11 +6900,29 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) -"Ix" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/crew/bar) +"Iw" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/window{ + req_access = list("101"); + dir = 8 + }, +/obj/machinery/door/window{ + req_access = list("101"); + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/security) "Iz" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -6886,99 +6936,19 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"IB" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) "ID" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) +/turf/closed/indestructible/rock, +/area/outpost/maintenance/starboard) "IE" = ( /obj/structure/chair/wood, /turf/open/floor/wood, /area/outpost/crew/bar) -"IH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) "IJ" = ( /obj/structure/table, /obj/item/trash/can/food/beans, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/central) -"IL" = ( -/obj/effect/turf_decal/corner/opaque/black, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"IM" = ( -/obj/structure/cable/yellow{ - icon_state = "4-10" - }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"IN" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -25; - pixel_x = -7 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"IS" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) -"IT" = ( -/obj/machinery/camera/autoname, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) "IU" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -6997,36 +6967,41 @@ "IW" = ( /turf/closed/indestructible/rock, /area/outpost/maintenance/central) -"Ja" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"Jc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/item/radio/intercom/directional/north, /obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/west, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) -"Jh" = ( +"Je" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "1-8" }, /obj/structure/cable/yellow{ - icon_state = "2-4" + icon_state = "1-4" }, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"Jo" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/crayon{ - icon_state = "peace"; - pixel_y = -26 - }, -/turf/open/floor/plasteel/stairs{ - dir = 8 - }, /area/outpost/hallway/central) +"Jk" = ( +/obj/item/bedsheet, +/obj/structure/bed/pod, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "Jp" = ( /obj/machinery/door/airlock/public, /obj/effect/turf_decal/industrial/warning, @@ -7047,39 +7022,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms) -"Jq" = ( -/obj/structure/chair/sofa/brown/corner/directional/east, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"Jr" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"Jt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/firealarm/directional/south, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"Jx" = ( -/obj/item/stack/tile/carpet, -/obj/structure/rack, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) "JA" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/disposal/bin, @@ -7089,21 +7031,16 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/wood, /area/outpost/crew/bar) -"JE" = ( -/obj/machinery/shower{ - dir = 4; - desc = "An old shower. It looks rusted." - }, -/obj/structure/toilet{ - pixel_y = 13; - pixel_x = 9 +"JB" = ( +/obj/machinery/camera/autoname{ + dir = 8 }, -/obj/effect/turf_decal/steeldecal/steel_decals10{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/turf_decal/steeldecal/steel_decals6, -/turf/open/floor/plasteel/showroomfloor, -/area/outpost/hallway/central) +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "JF" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "electricdanger"; @@ -7112,23 +7049,38 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"JM" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/beer/light{ - pixel_x = -8 +"JO" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/item/newspaper{ - pixel_x = 7; - pixel_y = 7 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"JP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "JS" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"JT" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/wood/corner, +/obj/item/kirbyplants{ + icon_state = "plant-02"; + pixel_y = 18; + pixel_x = -11 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "JU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7142,35 +7094,22 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"JV" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/pirate_or_bandana, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/outpost/storage) "JW" = ( /obj/machinery/vending/games, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"JX" = ( -/obj/machinery/conveyor{ - id = "outpost3"; - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/hallway/central) -"Kb" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_y = 11; - pixel_x = 8 +"Kc" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/maintenance/starboard) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "Kd" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -7185,55 +7124,75 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) -"Kh" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +"Kj" = ( +/obj/item/decal_painter, +/obj/item/floor_painter{ + pixel_y = 6; + pixel_x = 5 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/rack, +/obj/item/stack/tile/carpet{ + pixel_x = 6; + pixel_y = -4; + amount = 27 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"Kk" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Kl" = ( -/obj/machinery/vending/wallmed{ - pixel_x = 22 +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/structure/table, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/door/airlock/maintenance{ + dir = 4 }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/welded, /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/outpost/medical) -"Ko" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/port) +"Km" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/vacant_rooms/office) +"Kp" = ( +/obj/structure/chair/stool/bar{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) +/mob/living/simple_animal/hostile/cockroach, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "Kr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Ks" = ( -/obj/structure/chair/bench/beige/directional/north, +"Kt" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) +/area/outpost/crew/bar) "Kv" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/corner/opaque/neutral/half, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/obj/structure/grille, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Kw" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "Kx" = ( /turf/closed/indestructible/reinforced, /area/outpost/storage) @@ -7253,16 +7212,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) -"Kz" = ( -/obj/structure/falsewall/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/closed/indestructible/reinforced/rust, -/area/outpost/maintenance/central) "KC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7273,6 +7222,17 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) +"KE" = ( +/obj/machinery/mineral/unloading_machine{ + input_dir = 2; + output_dir = 1 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/platform/ship_two{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "KF" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -7301,15 +7261,11 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/crew/janitor) -"KG" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 6 - }, +"KH" = ( +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/area/outpost/medical) "KI" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7324,23 +7280,28 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/outpost/maintenance/central) -"KK" = ( -/obj/machinery/button/door{ - dir = 8; - pixel_x = 22; - pixel_y = 9; - id = "out3"; - normaldoorcontrol = 1; - specialfunctions = 4 +"KM" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 1 }, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters, /turf/open/floor/plasteel, -/area/outpost/crew/bar) -"KS" = ( -/obj/structure/railing/thin{ +/area/outpost/security) +"KN" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) +"KQ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/hallway/central) "KV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7351,25 +7312,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"KW" = ( -/obj/effect/spawner/random/vending/cola, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/crew/library) -"KY" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/borderfloor{ - dir = 5 - }, -/turf/open/floor/plasteel/mono{ - dir = 1 - }, -/area/outpost/cargo) +"KX" = ( +/obj/structure/window/reinforced/fulltile/indestructable, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/crew/bar) "KZ" = ( /obj/machinery/door/airlock/maintenance{ dir = 4; @@ -7396,23 +7343,22 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"Le" = ( +"Lb" = ( /obj/structure/cable/yellow{ - icon_state = "2-4" + icon_state = "2-9" }, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/corner/opaque/black, -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"Lf" = ( +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, -/area/outpost/security) -"Lg" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/port) +/area/outpost/hallway/central) "Lh" = ( /turf/closed/indestructible/reinforced, /area/outpost/security) @@ -7420,11 +7366,41 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/green, /area/outpost/crew/bar) -"Lm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating/rust, +"Lk" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) +"Ln" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"Lo" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 9 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, +/area/outpost/cargo) +"Lp" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) +"Lr" = ( +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "Ls" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -7441,50 +7417,88 @@ /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 9 }, -/obj/effect/turf_decal/steeldecal/steel_decals7{ - dir = 6 +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/central) +"Lz" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"LB" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/storage) +"LE" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/mahogany, +/area/outpost/crew/bar) +"LF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"LG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/sign/directions/service{ + dir = 8; + pixel_x = -28 + }, +/obj/structure/sign/directions/supply{ + pixel_y = -6; + pixel_x = -28; + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = 6; + pixel_x = -28 + }, +/obj/structure/sign/directions/medical{ + pixel_y = -12; + pixel_x = -28; + dir = 2 }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"Lu" = ( -/obj/machinery/light/dim/directional/north, -/obj/structure/ore_box, -/turf/open/floor/plasteel/mono{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/area/outpost/cargo) -"LB" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/storage) -"LE" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/mahogany, -/area/outpost/crew/bar) +/turf/open/floor/plating, +/area/outpost/hallway/central) "LH" = ( /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"LJ" = ( -/obj/machinery/computer/helm/viewscreen/directional/north, -/obj/structure/chair/comfy/olive{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/black/border{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"LK" = ( -/obj/structure/window/reinforced/fulltile/indestructable, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/outpost/medical) "LL" = ( /turf/closed/indestructible/reinforced, /area/outpost/hallway/port) +"LN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/structure/railing/thin{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "LP" = ( /obj/machinery/door/airlock, /turf/open/floor/wood, @@ -7495,40 +7509,34 @@ /obj/structure/rack, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"LS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, +"LU" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/storage) +"LZ" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/corner/opaque/white{ - dir = 5 + dir = 4 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) -"LU" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/storage) -"LX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 +"Ma" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/modglass{ + pixel_y = 1; + pixel_x = -6 }, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"LY" = ( -/obj/structure/bed, -/obj/item/bedsheet/black, -/obj/item/toy/plush/rilena, -/obj/item/toy/plush/tali{ - pixel_x = 10; - pixel_y = -6 +/obj/item/reagent_containers/food/drinks/modglass{ + pixel_y = 5; + pixel_x = 5 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/steeldecal/steel_decals_central2, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/turf/open/floor/wood, +/area/outpost/crew/bar) +"Mb" = ( +/obj/structure/chair/sofa/brown/old/right/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/outpost/maintenance/starboard) "Md" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -7542,24 +7550,17 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Me" = ( -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"Mk" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/corner/opaque/black/border{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"Ml" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 +"Mg" = ( +/obj/structure/sign/poster/official/miners{ + pixel_x = 26 }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, -/area/outpost/storage) +/area/outpost/hallway/port) +"Mh" = ( +/obj/structure/closet/crate/trashcart/laundry, +/turf/open/floor/plasteel/patterned, +/area/outpost/maintenance/central) "Mm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -7611,6 +7612,28 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Mx" = ( +/obj/structure/chair/comfy/orange/directional/south, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"My" = ( +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/donut/jelly, +/obj/effect/turf_decal/floordetail/tiled, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) +"MA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) "MB" = ( /obj/effect/turf_decal/corner/opaque/orange{ dir = 10 @@ -7638,16 +7661,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"MI" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +"MH" = ( +/obj/structure/chair/bench/beige/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) "MK" = ( /obj/structure/table/wood, @@ -7671,63 +7690,46 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"MO" = ( -/obj/structure/sign/poster/rilena/run{ - pixel_y = 30 - }, -/obj/structure/table, -/obj/item/modular_computer/laptop/preset/civilian/rilena{ - pixel_y = 9 - }, -/obj/item/reagent_containers/food/drinks/rilenacup{ - pixel_y = -2; - pixel_x = 7 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"MP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/structure/closet/crate/trashcart, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) -"MQ" = ( -/obj/machinery/cryopod{ - dir = 1 +"MT" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen/full, +/turf/open/floor/plasteel, +/area/outpost/security) +"MU" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/mineral/electrolyzer{ + output_dir = 4 }, -/obj/machinery/camera/autoname{ - dir = 4 +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"MV" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/techfloor, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/grid, -/area/outpost/crew/cryo) -"MU" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/vacant_rooms/office) -"MW" = ( -/obj/effect/spawner/random/trash/grille_or_waste, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/rust, /area/outpost/maintenance/fore) +"MX" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/five, +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/vacant_rooms) "MZ" = ( -/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/rack, +/obj/effect/spawner/random/clothing/twentyfive_percent_cyborg_mask, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Nc" = ( +/obj/effect/spawner/random/clothing/gloves, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) +"Na" = ( /obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 + dir = 8 }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"Nd" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) "Ne" = ( /obj/item/radio/intercom/directional/north, /obj/structure/disposalpipe/segment{ @@ -7738,7 +7740,12 @@ /turf/open/floor/wood, /area/outpost/crew/library) "Nf" = ( +/obj/item/radio/intercom/directional/west, /obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, /turf/open/floor/plasteel, @@ -7758,62 +7765,52 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) -"Nn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"No" = ( +"Nl" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/turf_decal/floordetail/tiled, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"Nu" = ( -/obj/machinery/camera/autoname{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Nv" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/kitchen/fork{ + pixel_y = 0; + pixel_x = -7 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/kitchen/fork{ + pixel_x = 8; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/item/reagent_containers/syringe, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"Nn" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille/indestructable, +/turf/open/floor/plating, +/area/outpost/cargo/office) +"Nw" = ( +/obj/structure/urinal{ + dir = 8; + pixel_x = 18 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 9 }, -/obj/machinery/door/airlock/medical/glass{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/outpost/hallway/central) +"Ny" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/plasteel/tech, -/area/outpost/medical) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"ND" = ( +/obj/structure/falsewall/reinforced, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "NF" = ( /obj/structure/cable/yellow{ icon_state = "6-8" @@ -7828,15 +7825,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space) -"NI" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable/yellow, -/turf/open/floor/plasteel, -/area/outpost/cargo) "NK" = ( /turf/closed/indestructible/reinforced, /area/outpost/maintenance/fore) @@ -7847,6 +7835,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"NP" = ( +/obj/structure/grille/indestructable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) "NQ" = ( /obj/structure/disposalpipe/trunk/multiz/down{ dir = 8 @@ -7865,30 +7861,61 @@ /obj/item/stack/wrapping_paper, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms) -"Oa" = ( -/obj/structure/sink/kitchen{ - dir = 1; - name = "big sink" +"NW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"NZ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 }, -/obj/structure/mirror{ - pixel_y = -25 +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Oc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/turf/open/floor/plasteel/patterned, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"Od" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer/light{ + pixel_y = -2; + pixel_x = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) +"Oe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"Of" = ( +/obj/structure/railing/thin{ + dir = 4 + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Og" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/storage) "Oh" = ( /obj/structure/chair/sofa/brown/directional/north, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) -"Oi" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "On" = ( /obj/machinery/conveyor/auto{ id = "outpost3"; @@ -7897,20 +7924,38 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Op" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, +/obj/machinery/light/dim/directional/east, +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, /turf/open/floor/plasteel, +/area/outpost/hallway/port) +"Oq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, /area/outpost/hallway/central) "Or" = ( /obj/structure/chair/sofa/brown/corner/directional/north, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) +"Ou" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/crew/bar) +"Ox" = ( +/obj/structure/falsewall/reinforced, +/turf/closed/indestructible/reinforced/rust, +/area/outpost/cargo/office) "Oy" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/bottle/wine{ @@ -7926,26 +7971,33 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"OC" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"OF" = ( +"OD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) -"OG" = ( -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +"OE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plasteel/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "OH" = ( /obj/machinery/door/firedoor, @@ -7971,33 +8023,29 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"OK" = ( -/turf/open/floor/plasteel/patterned, -/area/outpost/maintenance/central) -"OM" = ( +"OJ" = ( /obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/corner/opaque/black, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/turf/open/floor/plasteel, +/area/outpost/security) +"OL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) -"OO" = ( -/obj/structure/platform/wood_two{ - dir = 4 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"OP" = ( +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"ON" = ( /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 5 @@ -8007,7 +8055,18 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/port) -"OS" = ( +"OU" = ( +/obj/machinery/light/dim/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/central) +"OV" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, @@ -8017,63 +8076,65 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"OT" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/maintenance/central) -"OY" = ( -/obj/structure/grille/indestructable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/central) -"OZ" = ( -/obj/item/reagent_containers/syringe{ - pixel_y = -4; - pixel_x = 8 +"OW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grimy, /area/outpost/maintenance/starboard) -"Pc" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +"Pb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/corner/opaque/white{ - dir = 6 + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/hallway/port) +"Pc" = ( +/obj/effect/spawner/random/vending/cola, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/crew/library) "Pe" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Ph" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/cargo) "Pi" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/port) +"Pk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Pl" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner_steel_grid{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"Pl" = ( -/obj/structure/rack, -/obj/item/storage/cans/sixbeer{ - pixel_x = -2; - pixel_y = -3 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) "Pm" = ( /obj/structure/chair{ dir = 8 @@ -8081,7 +8142,7 @@ /obj/item/toy/figure/captain, /turf/open/floor/plating, /area/outpost/maintenance/central) -"Po" = ( +"Pn" = ( /obj/effect/landmark/outpost/elevator_machine{ shaft = "1" }, @@ -8089,25 +8150,18 @@ dir = 4 }, /obj/effect/turf_decal/industrial/warning{ - dir = 8 + dir = 4 }, /obj/effect/turf_decal/industrial/warning{ - dir = 4 + dir = 8 }, /turf/open/floor/plating, /area/outpost/hallway/central) -"Pt" = ( -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, +"Pq" = ( +/obj/structure/platform/wood_two/corner, +/obj/machinery/light/small/directional/north, /turf/open/floor/plating, -/area/outpost/maintenance/fore) +/area/outpost/maintenance/starboard) "Pw" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/industrial/outline/yellow, @@ -8124,28 +8178,26 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Py" = ( -/obj/structure/falsewall/reinforced, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Pz" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 + }, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/closed/indestructible/reinforced/rust, -/area/outpost/maintenance/fore) -"PA" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/outpost/crew/cryo) +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "PD" = ( /obj/structure/chair/sofa/brown/right/directional/west, /turf/open/floor/carpet/royalblack, /area/outpost/crew/bar) -"PE" = ( -/obj/item/kirbyplants{ - icon_state = "plant-21"; - name = "oxygen reclaimation system" - }, -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) "PF" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -8162,32 +8214,35 @@ /obj/effect/turf_decal/steeldecal/steel_decals_central7, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"PG" = ( +"PH" = ( /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/sign/warning/nosmoking/burnt{ - pixel_y = -28 + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 9 +/obj/structure/disposalpipe/junction/flip{ + dir = 1 }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/port) -"PI" = ( -/turf/closed/indestructible/reinforced, +"PK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/crew/bar) +"PL" = ( +/obj/structure/rack, +/obj/item/storage/cans/sixbeer{ + pixel_x = -2; + pixel_y = -3 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"PN" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/asteroid, /area/outpost/maintenance/starboard) "PO" = ( /obj/structure/chair/wood{ @@ -8195,16 +8250,23 @@ }, /turf/open/floor/wood, /area/outpost/crew/bar) -"PQ" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 +"PP" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) +/area/outpost/hallway/central) +"PR" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/structure/chair/bench/olive/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) "PS" = ( /obj/structure/falsewall/reinforced, /obj/structure/cable/yellow{ @@ -8220,25 +8282,27 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"PV" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) "PW" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"PY" = ( -/obj/machinery/door/airlock/security/brig{ - req_access = list("101") +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"PX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 }, +/area/outpost/cargo) +"PY" = ( /obj/effect/turf_decal/industrial/warning, /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -8247,108 +8311,126 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, +/obj/machinery/door/airlock/outpost{ + icon = 'icons/obj/doors/airlocks/station/security.dmi'; + name = "brig"; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' + }, /turf/open/floor/plasteel/tech, /area/outpost/security) -"Qg" = ( +"Qe" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "2-9" +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/central) -"Qi" = ( -/obj/structure/chair/sofa/brown/old/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Qj" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"Qk" = ( -/turf/open/floor/engine/air, -/area/outpost/engineering/atmospherics) -"Qn" = ( +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Ql" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"Qp" = ( /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "1-4" }, -/obj/structure/holosign/barrier/infinite{ - max_integrity = 500 +/obj/item/trash/semki, +/turf/open/floor/plating/asteroid, +/area/outpost/external) +"Qq" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"QB" = ( +/obj/structure/sign/poster/random{ + pixel_x = 28 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white, /obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /turf/open/floor/plasteel, /area/outpost/hallway/port) -"Qp" = ( +"QD" = ( +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"QE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "1-2" }, -/obj/item/trash/semki, -/turf/open/floor/plating/asteroid, -/area/outpost/external) -"Qr" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen{ +/turf/open/floor/plating, +/area/outpost/hallway/central) +"QF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 5 +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/outpost/hallway/central) +"QI" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey/corner{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"Qv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"Qx" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/bowler_or_that, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/turf/open/floor/plasteel/dark, -/area/outpost/storage) -"QA" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/cryo) +"QJ" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/mono{ + dir = 1 }, -/obj/effect/turf_decal/industrial/warning{ +/area/outpost/cargo) +"QK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/door/airlock/maintenance{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/welded, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/port) -"QF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + icon_state = "1-2" }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/hallway/central) "QL" = ( @@ -8366,6 +8448,35 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) +"QM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/fore) +"QN" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"QP" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "QR" = ( /obj/machinery/newscaster/directional/north, /obj/structure/filingcabinet/double, @@ -8373,41 +8484,43 @@ /area/outpost/cargo/office) "QS" = ( /obj/structure/table, +/obj/machinery/light/small/directional/west, +/obj/item/clothing/under/shorts/cookjorts{ + pixel_y = 12; + pixel_x = 9 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, /turf/open/floor/plasteel/patterned/grid, /area/outpost/maintenance/central) -"QT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"QY" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 +"QU" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"QV" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"QZ" = ( -/obj/structure/chair{ - dir = 8 +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"QW" = ( +/obj/structure/railing/wood{ + dir = 9 }, -/obj/structure/extinguisher_cabinet/directional/east{ - pixel_y = -7 +/turf/open/floor/wood, +/area/outpost/maintenance/starboard) +"QX" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/firealarm/directional/east{ - pixel_y = 6 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 6 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/cryo) +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "Ra" = ( /obj/machinery/door/airlock{ dir = 4; @@ -8424,19 +8537,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/crew/bar) -"Rb" = ( -/obj/structure/falsewall/reinforced, -/turf/closed/indestructible/reinforced/rust, -/area/outpost/vacant_rooms/office) -"Rc" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/port) "Rf" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable/yellow{ @@ -8475,31 +8575,25 @@ /obj/item/trash/semki, /turf/open/floor/plating/asteroid, /area/outpost/external) -"Rn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"Rk" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/structure/sign/poster/rilena/tali{ + pixel_y = -30 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) -"Ro" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/maintenance/fore) -"Rr" = ( +"Rn" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) +/turf/open/floor/plating/rust, +/area/outpost/maintenance/central) "Rs" = ( /obj/structure/cable/yellow{ icon_state = "6-8" @@ -8516,13 +8610,6 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Rt" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable/yellow, -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) "Ru" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8532,19 +8619,28 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"Rv" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/outpost/maintenance/central) "Rw" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/tech, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, /area/outpost/hallway/central) +"Rx" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/crew/cryo) "RA" = ( /obj/structure/railing/wood{ dir = 10; @@ -8565,7 +8661,7 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"RD" = ( +"RC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, @@ -8573,10 +8669,6 @@ dir = 4 }, /obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/airalarm/directional/south, /turf/open/floor/plating, /area/outpost/hallway/central) "RG" = ( @@ -8610,76 +8702,21 @@ /obj/effect/spawner/random/trash/decal, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"RJ" = ( -/obj/machinery/button/door{ - specialfunctions = 4; - normaldoorcontrol = 1; - id = "out1"; - dir = 1; - pixel_y = -21; - pixel_x = -8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) -"RL" = ( -/obj/structure/grille/indestructable, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"RM" = ( -/obj/effect/landmark/ert_outpost_spawn, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/outpost/security) -"RO" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -19; - pixel_x = 2 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/toy/balloon, -/obj/item/toy/balloon, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"RR" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner_techfloor_gray, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +"RK" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"RP" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "RS" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "4-10" }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"RT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/grille, /turf/open/floor/plating, -/area/outpost/maintenance/starboard) -"RU" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/neutral/half, -/turf/open/floor/plasteel/dark, -/area/outpost/storage) +/area/outpost/maintenance/fore) "RV" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "safe"; @@ -8711,23 +8748,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) -"RY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Sb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/item/radio/intercom/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" +"RZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) +"Sa" = ( +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 5 + }, +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "Sd" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8735,32 +8768,27 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Si" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) -"Sk" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"Se" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"Sf" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/effect/turf_decal/steeldecal/steel_decals9, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"Sg" = ( +/obj/effect/turf_decal/corner/opaque/black{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"Sl" = ( -/obj/structure/sign/poster/official/miners{ - pixel_x = 26 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, -/area/outpost/hallway/port) +/area/outpost/hallway/central) "Sn" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -8782,17 +8810,6 @@ /obj/effect/turf_decal/steeldecal/steel_decals1, /turf/open/floor/plating, /area/outpost/maintenance/central) -"Sq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) "Sr" = ( /obj/structure/sign/painting/library_private{ pixel_y = -26 @@ -8801,30 +8818,49 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"Ss" = ( -/obj/structure/reagent_dispensers/beerkeg, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/crew/bar) -"SC" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/disposalpipe/segment{ +"Su" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"Sv" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"Sw" = ( +/obj/structure/disposalpipe/junction{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) +"Sy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"SF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"SE" = ( -/obj/structure/chair/bench/beige/directional/south, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/plating, /area/outpost/hallway/central) "SG" = ( /obj/structure/cable/yellow{ @@ -8840,6 +8876,19 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"SJ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/corner/opaque/neutral/half, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) +"SK" = ( +/obj/structure/platform/ship_two{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "SL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8852,38 +8901,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"SO" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/spline/fancy/opaque/grey{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"SS" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/ert_outpost_spawn, -/turf/open/floor/plasteel/grimy, -/area/outpost/security) -"SV" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ +"SP" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/mono{ dir = 1 }, -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) -"SW" = ( -/obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/turf_decal/corner/opaque/neutral/half, -/turf/open/floor/plasteel/dark, -/area/outpost/vacant_rooms) +/area/outpost/cargo) +"SQ" = ( +/obj/structure/table, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/maintenance/central) "SY" = ( /obj/machinery/light/small/directional/east, /obj/structure/spider/stickyweb, @@ -8895,142 +8922,62 @@ /obj/effect/turf_decal/steeldecal/steel_decals9, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Tb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer2{ - dir = 8 - }, -/turf/open/floor/engine/air, -/area/outpost/engineering/atmospherics) "Td" = ( /obj/structure/bookcase/random, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"Te" = ( -/obj/effect/turf_decal/spline/fancy/opaque/grey, -/obj/effect/turf_decal/spline/fancy/opaque/grey{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"Tg" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) "Th" = ( /turf/closed/indestructible/reinforced, /area/outpost/cargo/office) -"Tk" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"Tp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plating, +"Tm" = ( +/obj/item/kirbyplants/random, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/plasteel/grimy, /area/outpost/hallway/central) -"Tq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +"To" = ( +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"Tr" = ( -/obj/machinery/conveyor_switch{ - id = "outpost2"; - layer = 3.11; - pixel_y = 9; - pixel_x = -2 - }, -/obj/structure/railing/thin{ - dir = 9 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"Ts" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 6 +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"Tt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/plating, -/area/outpost/maintenance/starboard) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Tw" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/storage) -"Tx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/rust, -/area/outpost/hallway/central) -"TA" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/door/airlock{ - dir = 4; - name = "Restroom" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) +"Tz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"TB" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "outpost2" + }, +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/structure/platform/ship_two, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "TD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9045,32 +8992,27 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/wood, /area/outpost/crew/bar) -"TE" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) -"TG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, +"TH" = ( /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 + icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/maintenance/fore) -"TL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/dim/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/decal/cleanable/ash{ + pixel_y = 14; + pixel_x = -7 }, /turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) +"TJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/hallway/central) +"TK" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "danger" + }, +/turf/open/floor/plasteel, /area/outpost/hallway/central) "TM" = ( /obj/effect/turf_decal/industrial/warning{ @@ -9079,25 +9021,58 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"TT" = ( +"TP" = ( +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/mono, +/area/outpost/vacant_rooms/office) +"TQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) +"TS" = ( /obj/structure/cable/yellow{ icon_state = "1-8" }, /turf/open/floor/plating, -/area/outpost/maintenance/fore) -"TU" = ( -/turf/closed/indestructible/reinforced, -/area/outpost/engineering/atmospherics) -"TY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/item/radio/intercom/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, +/area/outpost/maintenance/starboard) +"TT" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "1-8" }, /turf/open/floor/plating, +/area/outpost/maintenance/fore) +"TV" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"TW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) +"TX" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/outpost/maintenance/starboard) "TZ" = ( /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 @@ -9106,34 +9081,59 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) -"Ua" = ( -/turf/open/floor/plating, -/area/outpost/engineering/atmospherics) -"Ui" = ( -/obj/machinery/disposal/deliveryChute{ - name = "fun chute"; - desc = "If it's so fun, what's the harm in it?" +"Ue" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/obj/effect/decal/cleanable/crayon{ - icon_state = "arrow"; - pixel_y = -19; - pixel_x = 2 +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Ug" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"Uh" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 5 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/steeldecal/steel_decals_central2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"Ul" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/cockroach, -/turf/open/floor/wood{ - icon_state = "wood-broken6" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/sign/warning/nosmoking/burnt{ + pixel_y = -28 }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) +"Uj" = ( +/obj/item/reagent_containers/syringe{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, /area/outpost/maintenance/starboard) +"Ul" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/bar) "Um" = ( /obj/structure/chair{ dir = 1 @@ -9144,13 +9144,21 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"Uq" = ( -/obj/effect/spawner/random/vending/snack, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 8 +"Up" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/outpost/medical) "Us" = ( /obj/structure/cable/yellow{ icon_state = "4-9" @@ -9168,25 +9176,6 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"Ut" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) "Uv" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/plating, @@ -9194,34 +9183,13 @@ "Uw" = ( /turf/closed/indestructible/reinforced, /area/outpost/cargo) -"UB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) -"UC" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "outpost2" - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/structure/platform/ship_two{ +"Uy" = ( +/obj/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"UE" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 1 - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/computer/hydrogen_exchange{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/mono, -/area/outpost/vacant_rooms/office) +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/security) "UG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9229,18 +9197,46 @@ /obj/effect/turf_decal/corner_techfloor_gray{ dir = 8 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 1 +/obj/effect/turf_decal/corner_steel_grid{ + dir = 1 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"UJ" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable/yellow, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/camera/autoname{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/outpost/hallway/port) +"UM" = ( +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = 5; + pixel_y = 6 + }, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"UN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/sign/directions/medical{ + pixel_x = 28; + dir = 2; + pixel_y = -10 }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"UI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/turf/open/floor/plasteel, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) "UO" = ( /obj/machinery/firealarm/directional/south, @@ -9266,13 +9262,16 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "UR" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/structure/table/reinforced, +/obj/machinery/conveyor_switch{ + id = "outpost1"; + layer = 3.11; + pixel_y = 4; + pixel_x = 5 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/obj/structure/railing/thin, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "UT" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9292,12 +9291,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) -"UV" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 +"UW" = ( +/obj/structure/platform/wood_two, +/turf/open/floor/plasteel/stairs/wood{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/maintenance/starboard) "UZ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9314,6 +9313,16 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel, /area/outpost/vacant_rooms/office) +"Va" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/crate_shelf, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/mono{ + dir = 1 + }, +/area/outpost/cargo) "Vc" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -9322,6 +9331,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Vd" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/outpost/maintenance/starboard) +"Ve" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Vf" = ( /obj/structure/cable/yellow{ icon_state = "6-9" @@ -9331,23 +9349,30 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Vm" = ( -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ - dir = 1 +"Vn" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"Vp" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) +"Vo" = ( +/obj/machinery/vending/boozeomat{ + pixel_y = 1; + dir = 8; + pixel_x = 7 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/maintenance/starboard) "Vq" = ( /obj/structure/bed/double/maint{ dir = 4 @@ -9361,32 +9386,29 @@ }, /turf/open/floor/plating/asteroid, /area/outpost/maintenance/central) -"Vr" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) "Vt" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, /obj/effect/turf_decal/corner_steel_grid{ dir = 9 }, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/area/outpost/hallway/port) "Vx" = ( /obj/structure/railing{ dir = 9 }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Vy" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) -"VC" = ( +"VA" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/corner_steel_grid{ @@ -9394,60 +9416,54 @@ }, /turf/open/floor/plasteel/dark, /area/outpost/hallway/central) -"VG" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ +"VC" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, /area/outpost/hallway/central) +"VD" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/starboard) "VH" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) -"VJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 5 +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/turf/open/floor/plasteel, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating/rust, /area/outpost/hallway/central) -"VN" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/outpost/crew/bar) -"VO" = ( -/obj/structure/disposalpipe/segment{ +"VI" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"VJ" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "1-8" }, /turf/open/floor/plating, -/area/outpost/hallway/central) +/area/outpost/maintenance/fore) "VP" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -9455,12 +9471,6 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"VQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/patterned, -/area/outpost/cargo) "VT" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "med"; @@ -9470,21 +9480,31 @@ /obj/effect/decal/cleanable/chem_pile, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"VW" = ( -/obj/structure/chair/sofa/brown/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) -"VZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, +"VV" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/structure/curtain/cloth/fancy{ + dir = 8; + open = 0 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/outpost/hallway/central) +"VY" = ( +/obj/machinery/shower{ + dir = 4; + desc = "An old shower. It looks rusted." + }, +/obj/structure/toilet{ + pixel_y = 13; + pixel_x = 9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals6, +/turf/open/floor/plasteel/showroomfloor, /area/outpost/hallway/central) "Wa" = ( /obj/effect/spawner/random/trash/decal, @@ -9493,12 +9513,10 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Wb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 - }, +/obj/structure/closet/secure_closet/contraband, +/obj/effect/turf_decal/box, /turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/area/outpost/security) "Wc" = ( /obj/machinery/recycler, /obj/machinery/conveyor/auto{ @@ -9514,11 +9532,29 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/bar) -"Wf" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) +"Wg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/outpost/engineering/atmospherics) +"Wh" = ( +/obj/effect/spawner/random/vending/cola, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) +"Wk" = ( +/obj/structure/sink/kitchen{ + dir = 1; + name = "big sink" + }, +/obj/structure/mirror{ + pixel_y = -25 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) "Wl" = ( /obj/structure/grille/indestructable, /obj/structure/cable/yellow{ @@ -9528,36 +9564,20 @@ dir = 1 }, /obj/effect/turf_decal/industrial/warning/dust, -/obj/effect/turf_decal/steeldecal/steel_decals_central7, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"Wt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Ww" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Wz" = ( -/obj/structure/sign/poster/random{ - pixel_x = 28 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +/obj/effect/turf_decal/steeldecal/steel_decals_central7, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"Wo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid, +/area/outpost/maintenance/starboard) +"WA" = ( +/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"WB" = ( -/turf/closed/indestructible/reinforced/rust, -/area/outpost/crew/library) +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "WC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/binary/volume_pump, @@ -9566,6 +9586,24 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) +"WD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"WE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) +"WG" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/central) "WH" = ( /obj/structure/cable/yellow, /obj/machinery/power/apc/auto_name/directional/west, @@ -9580,23 +9618,53 @@ dir = 1 }, /obj/machinery/door/firedoor/border_only, -/obj/machinery/door/airlock/security/brig{ - req_access = list("101") +/obj/machinery/door/airlock/outpost{ + icon = 'icons/obj/doors/airlocks/station/security.dmi'; + name = "brig"; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' }, /turf/open/floor/plasteel/tech, /area/outpost/security) +"WL" = ( +/turf/open/floor/plasteel/patterned, +/area/outpost/hallway/central) +"WN" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/port) "WO" = ( /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"WR" = ( +"WP" = ( +/obj/structure/cable/yellow{ + icon_state = "6-9" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/fore) +"WQ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, -/obj/effect/turf_decal/industrial/caution, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "WS" = ( @@ -9608,6 +9676,27 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "WU" = ( +/obj/structure/railing/thin, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"WX" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/landmark/ert_outpost_spawn, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/outpost/security) +"WY" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, @@ -9620,59 +9709,22 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"WV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/decal/cleanable/dirt, +"Xa" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"WW" = ( -/obj/effect/turf_decal/corner/opaque/neutral/half, -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/outpost/medical) -"WZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/bottle/hooch{ - pixel_y = 8; - pixel_x = -3 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/projectile/bullet/dart/syringe{ - pixel_y = 12; - pixel_x = 4 + icon_state = "0-8" }, /turf/open/floor/plating, -/area/outpost/crew/bar) -"Xb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/area/outpost/engineering/atmospherics) +"Xc" = ( +/obj/effect/turf_decal/corner/opaque/black, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, -/area/outpost/medical) +/area/outpost/hallway/central) "Xd" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/plating/asteroid, @@ -9684,34 +9736,37 @@ }, /turf/open/floor/wood/mahogany, /area/outpost/crew/bar) -"Xg" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"Xl" = ( +"Xh" = ( +/obj/structure/platform/wood_two{ + dir = 4 + }, +/obj/structure/chair/stool/bar, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"Xk" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "0-8" }, -/obj/effect/turf_decal/corner_techfloor_gray{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/steeldecal/steel_decals_central7, /obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"Xm" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 9 + icon_state = "6-8" }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/storage) +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/central) +"Xp" = ( +/obj/structure/bed/pod, +/obj/item/bedsheet, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/grimy, +/area/outpost/security) "Xq" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -9732,6 +9787,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/outpost/cargo/office) +"Xt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/comfy/orange/directional/north, +/turf/open/floor/plating, +/area/outpost/crew/bar) "Xv" = ( /obj/structure/railing/corner{ dir = 4 @@ -9741,18 +9801,6 @@ }, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"Xy" = ( -/obj/machinery/disposal/bin, -/obj/machinery/newscaster/directional/west, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/box, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/crew/library) "Xz" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/industrial/warning, @@ -9767,68 +9815,47 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/hallway/port) -"XA" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/five, -/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/vacant_rooms) -"XD" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +"XB" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/outpost/hallway/port) -"XE" = ( -/obj/machinery/conveyor{ - id = "outpost3"; - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/hallway/central) -"XF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) -"XI" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ +"XC" = ( +/obj/effect/turf_decal/spline/fancy/opaque/grey, +/obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/janitor) -"XM" = ( +/turf/open/floor/plasteel/dark, +/area/outpost/security) +"XG" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/outpost/hallway/central) +"XN" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/janitorialcart, +/obj/item/mop, +/obj/item/clothing/gloves/color/purple, +/obj/item/clothing/head/beanie/purple, +/obj/item/clothing/neck/tie/purple, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) +"XO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/outpost/maintenance/starboard) "XP" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9845,49 +9872,38 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"XQ" = ( -/obj/structure/sign/poster/official/no_erp{ - pixel_y = 30 +"XV" = ( +/obj/structure/railing{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/decal/fakelattice, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/elevatorshaft, +/area/outpost/security) +"XY" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) -"XR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/turf/open/floor/plasteel/patterned, -/area/outpost/hallway/central) -"XS" = ( -/obj/structure/flippedtable{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/box, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/airlock/medical/glass{ dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/outpost/maintenance/central) -"XV" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/fakelattice, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/elevatorshaft, -/area/outpost/security) +/turf/open/floor/plasteel/tech, +/area/outpost/medical) "XZ" = ( /obj/structure/sign/painting/library{ pixel_y = -26 @@ -9897,74 +9913,57 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew/library) +"Yc" = ( +/obj/effect/turf_decal/trimline/opaque/purple/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/janitor) "Yd" = ( /turf/closed/indestructible/reinforced, /area/outpost/hallway/central) "Yh" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/sign/poster/rilena/ri{ + pixel_x = -26 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/crayon{ + icon_state = "guy"; + pixel_y = 20 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 9 +/obj/effect/decal/cleanable/garbage{ + pixel_x = -7; + pixel_y = -3 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/item/paper/crumpled{ + pixel_y = -2; + pixel_x = 5 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"Yj" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 +/obj/item/paper/crumpled{ + pixel_y = 5; + pixel_x = -4 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/outpost/hallway/central) "Yl" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Yn" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/white, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Yq" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"Ys" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +"Yo" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/storage) +"Yp" = ( +/obj/structure/platform/ship_two{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 6 }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/effect/turf_decal/industrial/caution{ + dir = 8 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) "Yt" = ( /obj/structure/railing{ dir = 4 @@ -9983,20 +9982,22 @@ /obj/effect/turf_decal/steeldecal/steel_decals_central6, /turf/open/floor/plasteel/patterned, /area/outpost/cargo) -"Yv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/port) -"Yw" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 10 - }, -/turf/open/floor/plasteel/mono{ - dir = 1 +"Yx" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/item/kirbyplants/random, +/obj/item/radio/intercom/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) +"YA" = ( +/obj/item/reagent_containers/syringe{ + pixel_y = -2; + pixel_x = 4 }, -/area/outpost/cargo) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) "YC" = ( /obj/effect/spawner/random/trash/decal, /obj/structure/rack, @@ -10005,119 +10006,91 @@ }, /turf/open/floor/plating, /area/outpost/maintenance/central) -"YD" = ( -/obj/item/reagent_containers/pill/floorpill, -/obj/structure/chair/sofa/brown/old/directional/east, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"YE" = ( -/obj/machinery/newscaster/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) "YF" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"YH" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel, +/area/outpost/medical) "YI" = ( /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/insectguts, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"YK" = ( -/obj/item/kirbyplants/random, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/plasteel/grimy, -/area/outpost/hallway/central) "YL" = ( /obj/structure/falsewall/reinforced, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"YN" = ( -/obj/structure/chair/sofa/brown/old/corner/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/carpet, -/area/outpost/maintenance/starboard) -"YP" = ( -/obj/machinery/light/dim/directional/east, +"YO" = ( +/turf/closed/indestructible/reinforced/rust, +/area/outpost/maintenance/fore) +"YT" = ( /obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, -/area/outpost/hallway/central) -"YQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/outpost/hallway/port) +"YW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/hooch{ + pixel_y = 8; + pixel_x = -3 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 6 +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 6; + pixel_y = 3 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) -"YV" = ( -/obj/machinery/camera/autoname{ - dir = 8 +/obj/projectile/bullet/dart/syringe{ + pixel_y = 12; + pixel_x = 4 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +/turf/open/floor/plating, +/area/outpost/crew/bar) +"YZ" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 6 }, /obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"YX" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable/yellow, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/camera/autoname{ - dir = 10 + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/outpost/hallway/port) -"YY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "4-8" + dir = 5 }, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"Ze" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/maintenance/fore) +"Zb" = ( +/obj/structure/railing/thin{ + dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) -"Zh" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) +"Zd" = ( +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +/turf/open/floor/plasteel, +/area/outpost/hallway/port) "Zk" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -10127,58 +10100,43 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/plasteel, /area/outpost/vacant_rooms/office) -"Zl" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/outpost/security) -"Zm" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/steeldecal/steel_decals9, -/obj/effect/turf_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/port) "Zo" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/insectguts, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"Zs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) -"Zt" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning{ +"Zp" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/outpost/medical) +"Zr" = ( +/obj/structure/rack, +/obj/effect/spawner/random/clothing/beret_or_rabbitears, +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/storage) +"Zs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) +"Zt" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/maintenance/starboard) "Zu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -10198,42 +10156,79 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/storage) -"Zx" = ( -/obj/structure/falsewall/reinforced, -/turf/closed/indestructible/reinforced/rust, -/area/outpost/cargo/office) -"ZE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +"Zw" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner_steel_grid{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"ZF" = ( -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 +"Zz" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/opaque/black{ + dir = 5 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/security) -"ZG" = ( -/obj/structure/cable/yellow{ - icon_state = "6-9" +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 10 }, +/turf/open/floor/plasteel, +/area/outpost/security) +"ZB" = ( +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating/rust, -/area/outpost/maintenance/fore) +/turf/open/floor/plating, +/area/outpost/maintenance/starboard) +"ZC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"ZH" = ( +/obj/machinery/light/dim/directional/east, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "ZI" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/sign/directions/supply{ + pixel_y = 26; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner_steel_grid{ - dir = 10 +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = 32 }, -/turf/open/floor/plasteel/dark, +/obj/structure/sign/directions/medical{ + pixel_y = 38; + dir = 2 + }, +/obj/structure/sign/directions/service{ + pixel_y = 20; + dir = 8 + }, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "ZJ" = ( /obj/structure/cable/yellow{ @@ -10256,40 +10251,37 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/green, /area/outpost/crew/bar) -"ZM" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/outpost/crew/bar) -"ZN" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/corner/opaque/neutral/half, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/central) +"ZL" = ( +/obj/structure/barricade/wooden/crude, +/turf/closed/indestructible/rock, +/area/outpost/external) "ZP" = ( /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) +"ZT" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "ZU" = ( /obj/structure/cable/yellow{ icon_state = "2-8" }, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"ZW" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, -/area/outpost/hallway/central) -"ZY" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/bar) +"ZV" = ( +/obj/effect/turf_decal/corner/opaque/neutral/half, +/obj/structure/chair/bench/olive/directional/north, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/plasteel/dark, +/area/outpost/medical) (1,1,1) = {" mC @@ -13909,8 +13901,8 @@ HD HD HD HD -WZ -zI +YW +Xt HD HD HD @@ -14030,19 +14022,19 @@ HD HD HD HD -ZM -wv -wv -wv -wv -wv +PK +my +my +my +my +my HD HD Cc -Ay -Ay -Ay -Ay +KX +KX +KX +KX Cc HD Cc @@ -14153,19 +14145,19 @@ HD HD HD HD -ZM +PK Cc Cc Cc Cc -ZM -ZM -wv +PK +PK +my Cc -lJ -je -je -ZY +JT +tb +tb +Cx Cc Cc Cc @@ -14278,17 +14270,17 @@ HD NK YL Cc -yh -Ss +Ou +fa Cc Cc -ZM -wv -VN -oa +PK +my +jm +Ar tw BX -lw +GR qg Or Cc @@ -14400,22 +14392,22 @@ HD HD NK yq -Ch -ib -sj +Dz +sZ +nO Rf Cc Cc Cc Cc -GE +Mx GY GW -lw +GR rs Oh -VN -ZM +jm +PK HD em rt @@ -14522,23 +14514,23 @@ HD HD HD NK -hj -za -za +hL +fU +fU gE Fs Cc nn LE Cc -EV -bL -ug -Hh +zl +Kt +gL +ve PD ur Cc -ZM +PK HD HD mC @@ -14646,9 +14638,9 @@ mP Zs Iu NN -ir -za -za +Sf +fU +fU HX Cc Xe @@ -14661,7 +14653,7 @@ Cc Cc Cc Cc -wv +my HD HD HD @@ -14752,7 +14744,7 @@ HD HD HD Cm -eE +pf Xd Gm SL @@ -14768,23 +14760,23 @@ NK NK NK cS -gZ +yw VT Cc JA zO uf RA -sl +yH OI SM no th Cc -uL +FK Cc -ZM -Ix +PK +yT HD HD mC @@ -14904,9 +14896,9 @@ GX tu zq xW -KK +lW Cc -VN +jm Cc Cc Cc @@ -15005,13 +14997,13 @@ Ha hq HD NK -rQ -wV +Bi +oD Fl Ab bV NK -DS +CR NK NU ue @@ -15029,10 +15021,10 @@ UO Cc Cc Cc -zC -Jq -sk -Ay +vG +Dt +ty +KX mC mC mC @@ -15140,7 +15132,7 @@ NK NK NK Cc -Fr +lg id dQ pb @@ -15151,11 +15143,11 @@ ii bz Cc sb -CK -PV -VW -JM -Ay +Cs +Ul +hT +Fg +KX mC mC mC @@ -15250,7 +15242,7 @@ HD HD hq HD -Ro +YO YF NK NK @@ -15274,11 +15266,11 @@ dw sF jI Wd -CK -PV -VW -Bu -Ay +Cs +Ul +hT +Od +KX mC mC mC @@ -15370,7 +15362,7 @@ hq hq HD HD -Ro +YO YL NK NK @@ -15380,7 +15372,7 @@ NK Rs LH bn -Ro +YO bS eU VP @@ -15397,11 +15389,11 @@ hS PO Cc Oy -iY -GK -rN -HF -Ay +Ma +As +qn +qf +KX mC mC mC @@ -15492,37 +15484,37 @@ hq hq hq HD -Ro -Ro -BR -ho +YO +YO +Gt +xT NK eD Mq NK fw -ZG -Xg -Ro -Ro +WP +Aj +YO +YO Ak NK -Ro -za -za -za +YO +fU +fU +fU Cc Cc Cc -Hi +vJ Cc Cc Cc Cc Cc -za -za -za +fU +fU +fU Cc Cc HD @@ -15614,39 +15606,39 @@ HD hq hq hq -Ro -Ro -Ui -gC -ho +YO +YO +CZ +HM +xT NK zY -rW +iL NK qb -Qv -tG +Oc +Lb aE gA cR -zR +YZ NK NK -Tp -TL -TY -py -yf -Ut -lO -Ja -As -jD -rV -py -Sb -be -Ys +gj +jl +tR +At +lR +qC +LG +SF +QE +Hd +QF +At +ma +DG +hu em HD HD @@ -15736,40 +15728,40 @@ HD NK NK YL -Ro -Ro -Ro -RO -IN +YO +YO +YO +zt +vl ip NK -IM +RS NK NK -Pt -ZE +oI +qV NK NK NK -sG -TG +Ea +QM NK -au -CM -ei -wZ -VC -OF -pL -VZ -fM -Hc -Hc -vq -rZ -rZ -AS -RD +xi +Rw +Ew +NZ +VA +aT +jG +zx +Hf +pe +pe +kD +QP +QP +aF +fB em HD HD @@ -15868,8 +15860,8 @@ NK NK YF hz -Xl -kR +Zw +VJ xu NK Ef @@ -15877,26 +15869,26 @@ TZ If at lq -aX -dS -cL -vB -oh -iK -Ww -Pc -Pc -Pc -li -Nn -Bh -zL -Hs -Tx -WB +Gs +Je +XG +dy +lV +ek +BC +lQ +lQ +lQ +pa +lD +Lz +Sg +oX +jp +sw aI aI -WB +sw em HD HD @@ -15995,28 +15987,28 @@ UG NK NK NK -Tw -Tw -Tw +Yo +Yo +Yo Kx Kx Kx -YY -kL -aQ +lu +Qe +fc Yd Yd Yd -Po -Po -Po +lm +lm +lm Yd Yd Yd -zv -Hs -Jt -WB +oE +oX +kG +sw uv wa tr @@ -16109,25 +16101,25 @@ xm NK NK NK -Ro +YO Yl Hv FS -Ro +YO ZU -te +MV oU Hv -Tw -jg -DH -Qx -Hk -Tw -CB -cL -AO -Ks +Yo +ef +en +vu +Zr +Yo +Dr +XG +bg +MH Yd ks ks @@ -16135,16 +16127,16 @@ ks ks GL Yd -oN -GT -Hs -YY -WB +dE +al +oX +lu +sw JW km Td -WB -WB +sw +sw aI aI mC @@ -16232,25 +16224,25 @@ uE NK EX tS -Ro -Ro -Ro +YO +YO +YO NK -Ro -hP -MW +YO +QD +fS Rg Kx -Tw -Xm -Ml -Ml -aw -Tw -mx -cL -tl -ai +Yo +kW +aY +aY +Lk +Yo +Jc +XG +TJ +GJ Yd ks ks @@ -16258,20 +16250,20 @@ ks ks ks Yd -YK -TE +Tm +RK +oX Hs -bh -WB -WB +sw +sw AM sB iw rS Zu aI -Fq -Fq +Ec +Ec em HD HD @@ -16364,16 +16356,16 @@ Ta fq WS LU -RU -jM -ta -JV -AT +vk +KN +MZ +uF +zF Kx -jf -cL -tl -pC +ah +XG +TJ +Ie Yd ks ks @@ -16381,12 +16373,12 @@ ks ks ks Yd -fs -TE -dj -Ft -Xy -WB +CN +RK +cy +oe +lL +sw Ne pt et @@ -16472,31 +16464,31 @@ mC HD HD HD -Ro +YO it JF NK Rg NK -Ro -Ro -Ro +YO +YO +YO PS NK NK NK WS Kx -cm -FH -Is -Rr -wX +SJ +Og +bF +qE +Dl oK -wF -Vp -tl -ai +xp +yO +TJ +GJ Yd ks ks @@ -16504,12 +16496,12 @@ ks ks ks Yd -ai -TE -Hs -WV -nL -WB +GJ +RK +oX +nJ +bH +sw lk rg jU @@ -16518,7 +16510,7 @@ nT aI HL Sr -HC +yn HD HD HD @@ -16595,7 +16587,7 @@ mC HD HD HD -Ro +YO aB KI PF @@ -16603,23 +16595,23 @@ TT NK mU Gn -Ro +YO Rg Hv hk -Ro +YO Rg Kx Kx -zr -pl -pj -RJ +Kw +oi +Hc +hV Kx -Oi -iL -LX -jd +Pz +aN +RZ +oR Yd ks ks @@ -16627,11 +16619,11 @@ ks ks ks Yd -to -uW -Zh -hI -KW +BF +ec +CE +OD +Pc aI fk SG @@ -16641,7 +16633,7 @@ sV LP ar XZ -HC +yn HD HD mC @@ -16739,31 +16731,31 @@ Zv LB LB Kx -dM -BP -UV -Yd -fj -fj -HO -HO -HO +VC +Qj +CB Yd +Co +Co +Pn +Pn +Pn Yd Yd -MZ -wI -oM +Yd +nB +Bh +LF aI aI sO aI aI -WB -WB -WB +sw +sw +sw aI -WB +sw em HD HD @@ -16856,39 +16848,39 @@ kM NK wq LH -Tw +Yo mm Ic ua iH Kx -Vm -iL -cl -jJ -WU -sw -Ej -OS -OS -sq -kl -zG -IL -Rn -mZ -qM -oZ -VO -sS -UR -ZW -il -sS -jC -EI -pm -lh +WA +aN +Dj +VI +WY +Nf +sI +OV +OV +fp +ZC +mc +Xc +FP +VH +OE +uP +sa +zP +dS +aa +HV +zP +BU +DR +qr +ZL HD HD mC @@ -16973,45 +16965,45 @@ NK ds ci NK -Py -Ro -Ro -Ro +EQ +YO +YO +YO NK NK Kx -Tw -Tw +Yo +Yo Kx Kx -Tw -Kv -jE -Wb -Wb -Hz -Wb -Wb -YQ -yR -yR -qk -yR -PW -HQ -HR -yX -cg -Yh -Gr -Vt -Vt -wr -CN -Tk -OG -OG -lh +Yo +gN +vh +iR +iR +Dv +iR +iR +fj +jP +jP +QX +jP +Oe +HO +nw +Kc +Sw +jb +Pl +na +na +AA +EA +jY +hv +hv +ZL HD HD HD @@ -17105,37 +17097,37 @@ Mw NK Yl Yd -JE -bc -fj -fj -tC -fY -jb -Dg -yY -yY -EB -Eq -py -jz -py -yZ -hd -gu -Rw -XM -YV -wp -YP -Nf -Op -ad -AB -ly -ly -gz -lh +VY +oj +Co +Co +sS +fe +ud +vi +ut +ut +ij +QK +At +tz +At +tW +kk +UN +Ql +bG +En +Cy +Lf +Na +eg +Ge +lj +JO +JO +TK +ZL HD HD mC @@ -17222,42 +17214,42 @@ NK uu NK nb -Vr -XF +cN +vD rC NK Au -fj +Co Yd -hW +jF Yd -fj -TA +Co +iT Yd -fj -fj +Co +Co Yd -jL +ZI HG -Zt +Vn Yd cq cq AI cq cq -OT +bk KF gq gq gq -rv -LK -LK -Nv -LK -LK -rv +Az +KH +KH +XY +KH +KH +Az HD HD HD @@ -17346,41 +17338,41 @@ cI NK xK NK -ve -ve +cn +cn LH YI -fj -ZN -od -Si -FQ -Pi -sL -fj -xU -TE -Nc -Bp -Tq -wN +Co +nA +WL +pM +Gr +PP +Wk +Co +sN +RK +hQ +DC +RC +wo cq yc bs cq dl -OT -XI -la -Rt +bk +oG +ts +wV gq gq -Cr -is -Xb -Ko -Df -rv +zZ +im +Zp +Gx +PR +Az HD HD HD @@ -17473,37 +17465,37 @@ NK LH NK nZ -fj +Co Yd -tH +eC Yd -XQ -vR -Oa +nk +nE +ae Yd -yk -Ba -Eo -ZI -Ci -Yj -OT +wd +ru +os +Tz +TW +WG +bk zS -OM -Ca +xR +Rn Ls -OT -EG -Eg -dD -Gu +bk +Ih +px +Yc +XN gq -SV -vK -ty -VH -WW -Ck +Qq +wz +Up +QV +Yx +if HD HD HD @@ -17596,37 +17588,37 @@ NK NK NK NK -fj -nc -rm +Co +kg +ws Yd -AL -FN -bq +KQ +Nw +HU Yd -SE -TE -zv -VG -QF -OT -OT +sr +RK +oE +cM +hF +bk +bk cq cq sP Mu DV -xZ -fd -Wf -Fn +Gg +HN +mx +fu gq -um -Tg -uD -ti -Aj -Ck +Hw +pq +ko +QN +ZV +if HD HD HD @@ -17720,22 +17712,22 @@ sf Th Th Th -gn -Zx +mH +Ox Th -Ai +pK Yd Yd Yd Yd Yd -bt -VG -QT -OT -sc -mo -aq +Py +cM +jw +bk +xN +mQ +QS cq IU cq @@ -17743,13 +17735,13 @@ cq cq cq cq -OT -OT -nK -Kl -fI -rv -Ck +bk +bk +YH +yy +Aa +Az +if HD HD HD @@ -17846,32 +17838,32 @@ qH Fv rU Th -Jo +oO Yd -CL -XE -cG +oJ +Gd +RP Yd -ms -VG -ov -DO -OK -sW -jT +AB +cM +MA +iy +lK +oA +uR cq -GU -Bj +zd +lO zS cq iQ jx vT cq -rv -rv -rv -rv +Az +Az +Az +Az hq qp HD @@ -17951,9 +17943,9 @@ HD HD HD HD -PI -PI -BJ +Zt +Zt +Ac Uw Uw Uw @@ -17969,19 +17961,19 @@ MB KV Th Th -CI +VV Yd -JX -ls -po -Ez -VJ -su -Jr +xD +Bs +nX +eA +rw +gB +tx cq -ga -sW -QS +Mh +oA +SQ cq Mt Us @@ -18074,9 +18066,9 @@ mC HD HD HD -PI -cA -Dp +Zt +PN +lU Uw DP dg @@ -18091,20 +18083,20 @@ uQ MB Xr Th -FF -ph +Yh +bD Yd -JX -nU -XR +xD +aD +Oq Yd -AU -VG -uy +Dx +cM +OU cq cq -OT -OT +bk +bk cq ER XP @@ -18198,36 +18190,36 @@ mC HD HD HD -It -eX +nW +Gw Uw kT -cc -UC -UC -UC -tA -oS +hr +iX +iX +iX +KE +Sa hb -GQ +Nn GS nd ie Th -LY -or +kc +Rk Yd -JX -nU -MP +xD +aD +TQ Yd -UI -Sk -zb +Ue +wS +fb cq gR sn -lB +rJ om sR Rh @@ -18235,14 +18227,14 @@ gR cq DV cq -TU -TU -OC -TU -TU -TU -TU -TU +jA +jA +ND +jA +jA +jA +jA +jA mC mC mC @@ -18321,51 +18313,51 @@ HD HD HD HD -Dp -Dp +lU +lU Uw FI -qW -Tr -tT -tT -jK +TB +qc +ap +ap +BQ qq md -GQ +Nn rR Ni JU Th -MO -rK +Ev +wB Yd -qN -rr -od +dz +CH +WL Yd -wS -Bp -MI -OT +eK +DC +qO +bk sn wR -OY -hs +jV +ub FY XP Mt -OT -sm -rb -lM -IH -kx -lA -Bt -BZ -PE -TU +bk +Ij +vU +Ed +Hx +jS +Wg +zm +ez +zi +jA mC mC mC @@ -18442,21 +18434,21 @@ mC mC mC HD -CP -xM -bN -Dp +BG +Nl +Tw +lU Uw fR -qW -KS -cK -uz -uz -Yw +TB +Zb +Lo +dc +dc +mF UT -GQ -GQ +Nn +Nn Th ag Th @@ -18464,31 +18456,31 @@ Yd Yd Yd Yd -fj -fj -fj +Co +Co +Co sH iI OH -OT +bk sn cq -OT -OT -OT +bk +bk +bk Ct -OT -OT -XS -tv -TU -tZ -cV -Ua -we -PE -PE -TU +bk +bk +qe +of +jA +Xa +rx +pO +Dn +zi +zi +jA mC mC mC @@ -18565,35 +18557,35 @@ mC mC HD HD -qh -EZ -aR -zg +iO +dk +ka +vw Uw jo -qW -KS -KY -eG -eG -xf -nq +TB +Zb +xh +PX +PX +Bb +Ny TM vZ uj -tU -mq -dW -hJ -QY -EH -br -mq -ID -eg -nt -hA -OT +Pb +Ln +FW +yd +HE +Zd +Hn +Ln +gn +Sv +WN +sd +bk sn cq lX @@ -18602,16 +18594,16 @@ cq Sn nM cq -xy +xs cq -TU -TU -qT -we -TU -TU -TU -TU +jA +jA +NP +Dn +jA +jA +jA +jA HD mC mC @@ -18688,50 +18680,50 @@ mC mC HD HD -fE -jS -de -zg +pi +bb +DK +vw Uw Ms -yB -cr +uY +oh yS -on -tN -VQ -CV -op -WR +JP +gp +mZ +gI +WQ +yi Xz -fi -qA -Zm -yV -rM -Ze -IB -rM -rM -Ze -HZ -YX +PH +ui +Ce +Sy +wG +hd +mn +wG +wG +hd +hG +UJ cq -Rv +FL cq lx Mt cq -vV +Xk rD Mm -zo +Ad np sn -TU -Tb -Qk -TU +jA +cx +rI +jA HD HD HD @@ -18812,49 +18804,49 @@ mC mC HD HD -aU -bI -zg +QU +OW +vw Uw Yu Dm Dm -eQ -mN -dZ -GM -DZ -gf -CU +ql +qY +Yp +ly +ZH +qF +pY uj -kA -sr -sr -EC -Kh -He -tm -Wz -cB -eg -nt -hA +sM +yo +yo +pV +Op +zU +hh +QB +ot +Sv +WN +sd cq sn ER zS Mt -OT +bk bJ -Qg -mp +BV +CT wi np hY -TU -Qk -Qk -TU +jA +rI +rI +jA HD HD mC @@ -18935,28 +18927,28 @@ mC mC mC HD -vX -Lm -yU +Kj +WE +hf Uw -Lu -uw -js -UB -qv -gT -FE +Fo +ss +Lr +Su +WU +SK +tq Uw -oT -NI +iN +us LL LL -Uq -Aw +DX +mL LL lG -mg -mg +ce +ce lG lG BM @@ -18964,20 +18956,20 @@ Ky yj wK wK -MU -MU -Rb -OT +Km +Km +cH +bk cq -Kz -OT -OT +iK +bk +bk cq cq -TU -TU -TU -TU +jA +jA +jA +jA HD HD mC @@ -19059,36 +19051,36 @@ mC mC HD HD -pM -yU +ay +hf Uw -cs -hM -js -EK -yv -gT -gO +hp +QJ +Lr +CV +kp +SK +pc Uw -QA +Kk LL LL LL LL LL LL -mg -xI -kh -MQ -PA -GO -nt -wu -iV +ce +HA +wl +Dw +aJ +YT +WN +yP +eV Gi WC -Fx +TP Zk wK KJ @@ -19182,33 +19174,33 @@ HD mC HD HD -pM -pM +ay +ay Uw -wY -hM -EK -EK -Di -gT -gO +Va +QJ +CV +CV +UR +SK +pc Uw -CX -ou +ct +WD LL -Pl -PI -rB -dc -mg -aM -PQ -nz -PA -wC -nt -wu -iV +PL +Zt +VD +tf +ce +fC +wy +Rx +aJ +LZ +WN +yP +eV ZP tj pF @@ -19298,43 +19290,43 @@ mC mC mC mC -rG -rG +cF +cF em HD HD HD -PI -yU -yU +Zt +hf +hf Uw -HJ -uw -EK -tI -dO -gT -rk +SP +ss +CV +dJ +LN +SK +MU Uw -CX -hf +ct +bB LL -Ip -RL -pB -pB -mg -HB -IS -vd +TH +nN +XO +XO +ce +lv +QI +DE ww -LS -DF -Lg -iV +zQ +oC +Pi +eV Pw AW -UE +zs UZ wK RW @@ -19421,42 +19413,42 @@ mC mC mC mC -rG -uX -xr -YD -YN +cF +bN +gm +rV +Go HD -PI -mG -zg +Zt +Bg +vw Uw -cs -hM -js -hM -ca +hp +QJ +Lr +QJ +eB Uw Uw Uw -Jh -RR -KG -Ts -RL -wP -EW +PW +GC +hy +iB +nN +lz +xl lG -ic -kQ -QZ +uK +Cb +qz lG -go -nt -jO +hx +WN +XB wK -Fh -iV +vF +eV wK Ht wK @@ -19543,51 +19535,51 @@ mC mC mC mC -rG -rG -FM -ed -bv -Qi -vr -PI -PI -zg +cF +cF +sg +rF +pI +kZ +kf +Zt +Zt +vw Uw -cs -hM -js -hM -ca +hp +QJ +Lr +QJ +eB Uw -iN -Fu -wO -CS -PI -PI +CM +Al +TS +eX +Zt +Zt wL -bi -EW -EW +Dc +xl +xl wL wL wL wL -Sq -Yq -Rc -OP -RS -RS -Nu -PG +OL +zh +tO +ON +ht +ht +lZ +Uh cq cq -DA -DA -DA -DA +fM +fM +fM +fM cq cq HD @@ -19666,52 +19658,52 @@ mC mC mC mC -rG -RT -vS -fT -oY -hX -kV -qe -PI -qD +cF +ri +br +wj +wH +Mb +nS +Of +Zt +EF Uw Uw Uw -Ph +ft Uw Uw Uw -EU -kK -kN -ll -CF -ab +sL +jQ +jW +fL +xn +vY wL dP bA -fN -YE -SC -di +bP +xw +ZT +lI Jp -Fi -vp -kb -XD -Ze -Ze -aS -pn +AR +ho +Vt +uS +hd +hd +Dk +du ey -RY -Wt -Wt -Wt -Wt -Yv +Tt +Ve +Ve +Ve +Ve +Se RG HD HD @@ -19789,52 +19781,52 @@ mC mC mC mC -rG -RT -ex -Hp -qR -qR -qR -DD -qD -yU -eY -yU -yU -eY -zp -zg -qD -Hn -yU -yU -bP -Kb -oL +cF +ri +li +In +ZB +ZB +ZB +Eh +EF +hf +Wo +hf +hf +Wo +dq +vw +EF +Kp +hf +hf +TV +ul +NW wL Cp NV -fG -yN -XA -xk +wO +iZ +MX +av wL -uk -yL -AN -eq -uU -Yn -aP -Qn +Aq +DO +JB +nr +qt +BP +fA +qI mB -RY -Cn -Sl -Wt -Cn -Yv +Tt +eM +Mg +Ve +eM +Se RG HD HD @@ -19912,40 +19904,40 @@ mC mC mC mC -rG -mA -hw -tz -oy -Jx +cF +Kv +YA +Ck +Lp +vn HD HD em HD -Dp -iG -iG -xN -eY -zg -PI -FB -OO -OO -qs -vz -oL +lU +ID +ID +UM +Wo +vw +Zt +Pq +gc +gc +Xh +dC +NW wL pg pg -fG -mv -SW -ev +wO +zG +vs +fJ wL -pS -Am -pO +aO +Wh +xt Lh Lh Lh @@ -20035,11 +20027,11 @@ mC mC mC mC -rG -rG -rG -OZ -GC +cF +cF +cF +Uj +Pk HD HD HD @@ -20051,36 +20043,36 @@ HD HD em HD -PI -Cl -gc -Ac -ol -PI -qJ +Zt +UW +QW +qh +TX +Zt +Vo wL wL wL -fG -rp -gt -lb +wO +mw +uM +mG wL -pO -pO -pO -Le -uI -Bc -mW -xc +xt +xt +xt +OJ +kI +WX +lP +ja Lh -BO -Ia +wh +FZ Lh -zD -Ff -By +Uy +To +Wb Lh HD HD @@ -20160,9 +20152,9 @@ mC mC mC mC -rG -rG -rG +cF +cF +cF em HD HD @@ -20174,36 +20166,36 @@ mC mC rt mC -PI -fS -pr -uN -Gt -PI -PI -PI +Zt +Vd +uO +nl +qJ +Zt +Zt +Zt HD wL -rP -uA -sz -tt +BS +Fm +gY +Ug wL -lY -uJ +ln +dI Lh -Zl -fZ -Gv -SS -bW +tY +ng +mt +fr +Zz Lh -LJ -Mk +Ej +ch Lh -cu -Vy -By +Fh +yz +Wb Lh HD HD @@ -20297,12 +20289,12 @@ NH NH NH NH -PI -PI -Ul -mf -Gt -PI +Zt +Zt +pU +Dy +qJ +Zt HD HD HD @@ -20312,20 +20304,20 @@ bY wL wL wL -Bd -ZF +dp +kt PY -wW -fZ -No -SS -cX +yM +ng +My +fr +wD WJ -qw -qw -oW -Qr -bb +MT +MT +PY +cJ +fl Lh Lh em @@ -20421,11 +20413,11 @@ mC mC mC mC -PI -PI -PI -PI -PI +Zt +Zt +Zt +Zt +Zt HD HD HD @@ -20438,19 +20430,19 @@ wL DI XV Lh -gg -Do -RM -Do -qC -pO -dL -wE +cj +kB +sW +kB +KM +xt +GN +ya Lh -oQ -ob -lt -Bo +aC +DB +nP +Jk Lh HD HD @@ -20562,19 +20554,19 @@ Lh Lh Lh Lh -lt -lt -lt -pO -pO -pO +nP +nP +nP +xt +xt +xt Lh Lh -IT -ob -lt -Me -lt +eu +DB +nP +iC +nP mC mC mC @@ -20693,11 +20685,11 @@ HD HD HD Lh -SO -Te -xJ -Nd -lt +jv +XC +Ft +jT +nP mC mC mC @@ -20816,8 +20808,8 @@ HD HD HD Lh -ry -lt +Iw +nP Lh Lh Lh @@ -20939,8 +20931,8 @@ HD HD HD Lh -gU -Gl +ox +Xp Lh HD HD @@ -21062,8 +21054,8 @@ HD HD HD Lh -lt -lt +nP +nP Lh HD HD diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4f88daa0c164..2239212c7440 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -420,6 +420,9 @@ if(G.siemens_coefficient)//not insulated new /datum/hallucination/shock(H) return + else + if(aiControlDisabled == AI_WIRE_DISABLED) + return if (cyclelinkedairlock) if (!shuttledocked && !emergency && !cyclelinkedairlock.shuttledocked && !cyclelinkedairlock.emergency && allowed(user)) if(cyclelinkedairlock.operating) @@ -1518,6 +1521,8 @@ /obj/machinery/door/airlock/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) + if(resistance_flags & INDESTRUCTIBLE) + return FALSE if(seal) to_chat(user, "[src]'s seal needs to be removed first.") return FALSE @@ -1530,6 +1535,8 @@ /obj/machinery/door/airlock/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) + if(resistance_flags & INDESTRUCTIBLE) + return FALSE to_chat(user, "You deconstruct the airlock.") qdel(src) return TRUE diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index f6e6840f552b..f10f86d0b0ba 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -487,12 +487,20 @@ /obj/machinery/door/airlock/outpost //secure anti-tiding airlock icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_centcom //all of the above needs to be changed if editing the icon + assemblytype = /obj/structure/door_assembly/door_assembly_centcom //all of the above needs to be changed if editing the icon //yes im worried about changing the ASSEMBLY for DECONSTRUCTING an INDESTRUCTIBLE ADMIN AIRLOCK desc = "It opens and closes. Effectively impervious to conventional methods of destruction." normal_integrity = INFINITY explosion_block = INFINITY + flags_1 = RAD_PROTECT_CONTENTS_1 | RAD_NO_CONTAMINATE_1 | HTML_USE_INITAL_ICON_1 | NODECONSTRUCT_1 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF has_hatch = FALSE req_one_access_txt = "101" //109 for command areas + aiControlDisabled = AI_WIRE_DISABLED + hackProof = TRUE + +/obj/machinery/door/airlock/outpost/ComponentInitialize() + . = ..() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF|EMP_PROTECT_WIRES) /obj/machinery/door/airlock/outpost/attackby(obj/item/C, mob/user, params) //maintenance panel cannot be opened if(C.tool_behaviour == TOOL_SCREWDRIVER) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 363a83d965a3..d7841041a79b 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -241,6 +241,8 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e ///the obj is deconstructed into pieces, whether through careful disassembly or when destroyed. /obj/proc/deconstruct(disassembled = TRUE) + if(resistance_flags & INDESTRUCTIBLE) //really sod off + return SEND_SIGNAL(src, COMSIG_OBJ_DECONSTRUCT, disassembled) qdel(src) @@ -250,6 +252,8 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e ///what happens when the obj's integrity reaches zero. /obj/proc/obj_destruction(damage_flag) + if(resistance_flags & INDESTRUCTIBLE) //sod off + return if(damage_flag == "acid") acid_melt() else if(damage_flag == "fire") diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index b1897ee661d4..bec5e5bf452b 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -55,6 +55,8 @@ /obj/structure/grille/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) + if(resistance_flags & INDESTRUCTIBLE) + return FALSE return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5) if(RCD_WINDOWGRILLE) if(the_rcd.window_type == /obj/structure/window/reinforced/fulltile) @@ -66,6 +68,8 @@ /obj/structure/grille/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) + if(resistance_flags & INDESTRUCTIBLE) + return FALSE to_chat(user, "You deconstruct the grille.") qdel(src) return TRUE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 308d5e120f71..3f4ffc747ca9 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -85,12 +85,16 @@ /obj/structure/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) + if(resistance_flags & INDESTRUCTIBLE) + return FALSE return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5) return FALSE /obj/structure/window/rcd_act(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) + if(resistance_flags & INDESTRUCTIBLE) + return FALSE to_chat(user, "You deconstruct the window.") qdel(src) return TRUE From 087d82aa85b2c517a92c77bdaa4f5067fbaae692 Mon Sep 17 00:00:00 2001 From: Ical <86125936+Ical92@users.noreply.github.com> Date: Sun, 19 Jan 2025 00:16:24 -0500 Subject: [PATCH 091/118] Gathering now checks if the item can be reached (#4002) ## About The Pull Request You can no longer gather (e.g. with a plant bag or trash bag) from any distance/through walls/through cameras/boundless thievery. ## Why It's Good For The Game Unfortunately it is funny but I think you shouldn't be able to steal things by looking at it through a camera. ## Changelog :cl: fix: gathering no longer has infinite reach /:cl: --------- Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/datums/components/storage/storage.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 268802e14dce..523585460fe5 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -262,6 +262,8 @@ if(!len) to_chat(M, "You failed to pick up anything with [parent]!") return + if(!M.CanReach(I, src, TRUE)) // You can't steal things you can't see or reach + return if(I.anchored) to_chat(M, "\The [I] is stuck to the ground and cannot be picked up by [parent]!") return From 6c423ed9402c44a16cc02f47db48c4211d2b95f2 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Jan 2025 23:26:37 -0600 Subject: [PATCH 092/118] Automatic changelog generation for PR #4002 [ci skip] --- html/changelogs/AutoChangeLog-pr-4002.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4002.yml diff --git a/html/changelogs/AutoChangeLog-pr-4002.yml b/html/changelogs/AutoChangeLog-pr-4002.yml new file mode 100644 index 000000000000..9886d37a65e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4002.yml @@ -0,0 +1,4 @@ +author: Ical92 +changes: + - {bugfix: gathering no longer has infinite reach} +delete-after: true From 591727c9cc5e071a00860845d4ab54984d8c34b3 Mon Sep 17 00:00:00 2001 From: rye-rice <58402542+rye-rice@users.noreply.github.com> Date: Sun, 19 Jan 2025 09:28:17 -0800 Subject: [PATCH 093/118] Re:Eoehoma Firearms (#3944) ## About The Pull Request Redoes Eoehoma sprites to match my new style Reduces the E-11's spread by 20 ## Why It's Good For The Game Eoehoma was done way before i adopted my new style, and only got around to adding them as i was adopting said new style, so they looked very ancient. This should make them look better Tag yourself ![image](https://github.com/user-attachments/assets/b68afd14-bdae-494a-a2ed-e264417ecf37) ![image](https://github.com/user-attachments/assets/8117a360-7b78-4efb-ad87-4005e54ef7c6) ![image](https://github.com/user-attachments/assets/3852186a-7683-4558-826c-d8bd080f9d56) (Was done in a previous PR but pretend it's here) ![image](https://github.com/user-attachments/assets/fdc3ca12-7456-456b-b3c6-3e9c45989644) ## Changelog :cl: add: Resprites everything eoehoma related! add: E-11 is more accurate. This isn't saying much. fix: E-60's charge overlay should now work /:cl: Co-authored-by: retlaw34 <58402542+retlaw34@users.noreply.github.com> --- .../boxes_magazines/external/rifle.dm | 9 - .../projectiles/guns/ballistic/assault.dm | 210 ----------------- .../projectiles/guns/energy/energy_gun.dm | 19 -- code/modules/projectiles/guns/energy/laser.dm | 51 ---- code/modules/projectiles/guns/energy/stun.dm | 10 - .../guns/manufacturer/eoehoma/ballistics.dm | 218 ++++++++++++++++++ .../guns/manufacturer/eoehoma/lasers.dm | 84 +++++++ icons/obj/guns/manufacturer/eoehoma/48x32.dmi | Bin 7384 -> 2933 bytes .../guns/manufacturer/eoehoma/lefthand.dmi | Bin 1109 -> 1891 bytes icons/obj/guns/manufacturer/eoehoma/onmob.dmi | Bin 1133 -> 1154 bytes .../guns/manufacturer/eoehoma/righthand.dmi | Bin 1078 -> 1839 bytes .../manufacturer/frontier_import/48x32.dmi | Bin 9192 -> 5011 bytes shiptest.dme | 2 + 13 files changed, 304 insertions(+), 299 deletions(-) create mode 100644 code/modules/projectiles/guns/manufacturer/eoehoma/ballistics.dm create mode 100644 code/modules/projectiles/guns/manufacturer/eoehoma/lasers.dm diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 533f5d171a3f..7e2b72741125 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -92,15 +92,6 @@ max_ammo = 30 multiple_sprites = AMMO_BOX_FULL_EMPTY -/obj/item/ammo_box/magazine/e40 - name = "E-40 magazine (.299 Eoehoma caseless)" - icon_state = "e40_mag-1" - base_icon_state = "e40_mag" - ammo_type = /obj/item/ammo_casing/caseless/c299 - caliber = ".299 caseless" - max_ammo = 30 - multiple_sprites = AMMO_BOX_FULL_EMPTY - // 8x50mmR En Bloc Clip (Illestren Hunting Rifle) /obj/item/ammo_box/magazine/illestren_a850r //this is a magazine codewise do nothing breaks diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index 8a933179de2a..55c67c633d39 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -141,213 +141,3 @@ /obj/item/gun/ballistic/automatic/assault/swiss_cheese/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) to_chat(user, "You hear a strange sound from the DMA unit. It doesn't appear to be operational.") - -/obj/item/gun/ballistic/automatic/assault/e40 - name = "\improper E-40 Hybrid Rifle" - desc = "A Hybrid Assault Rifle, best known for being having a dual ballistic/laser system along with an advanced ammo counter. Once an icon for bounty hunters, age has broken most down, so these end up in collector's hands or as shoddy Frontiersmen laser SMG conversions when in their inheritted stockpiles. But if one were to find one in working condition, it would be just as formidable as back then. Chambered in .299 Eoehoma caseless, and uses energy for lasers." - icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' - icon_state = "e40" - item_state = "e40" - default_ammo_type = /obj/item/ammo_box/magazine/e40 - allowed_ammo_types = list( - /obj/item/ammo_box/magazine/e40, - ) - var/obj/item/gun/energy/laser/e40_laser_secondary/secondary - fire_select_icon_state_prefix = "e40_" - - fire_delay = 0.1 SECONDS - recoil_unwielded = 3 - - gun_firenames = list(FIREMODE_FULLAUTO = "full auto ballistic", FIREMODE_OTHER = "full auto laser") - gun_firemodes = list(FIREMODE_FULLAUTO, FIREMODE_OTHER) - default_firemode = FIREMODE_OTHER - - weapon_weight = WEAPON_MEDIUM - slot_flags = ITEM_SLOT_BACK - - show_magazine_on_sprite = TRUE - empty_indicator = TRUE - fire_sound = 'sound/weapons/gun/laser/e40_bal.ogg' - manufacturer = MANUFACTURER_EOEHOMA - -/obj/item/gun/ballistic/automatic/assault/e40/Initialize() - . = ..() - secondary = new /obj/item/gun/energy/laser/e40_laser_secondary(src) - RegisterSignal(secondary, COMSIG_ATOM_UPDATE_ICON, PROC_REF(secondary_update_icon)) - SEND_SIGNAL(secondary, COMSIG_GUN_DISABLE_AUTOFIRE) - update_appearance() - -/obj/item/gun/ballistic/automatic/assault/e40/ComponentInitialize() - . = ..() - AddComponent(/datum/component/ammo_hud/eoehoma) // at long last... the ammo counter on the side of the sprite is functional... - -/obj/item/gun/ballistic/automatic/assault/e40/do_autofire(datum/source, atom/target, mob/living/shooter, params) - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode != FIREMODE_OTHER) - return ..() - return secondary.do_autofire(source, target, shooter, params) - -/obj/item/gun/ballistic/automatic/assault/e40/do_autofire_shot(datum/source, atom/target, mob/living/shooter, params) - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode != FIREMODE_OTHER) - return ..() - return secondary.do_autofire_shot(source, target, shooter, params) - -/obj/item/gun/ballistic/automatic/assault/e40/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread) - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode != FIREMODE_OTHER) - if(!secondary.latch_closed && prob(65)) - to_chat(user, span_warning("[src]'s cell falls out!")) - secondary.eject_cell() - return ..() - return secondary.process_fire(target, user, message, params, zone_override, bonus_spread) - -/obj/item/gun/ballistic/automatic/assault/e40/can_shoot() - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode != FIREMODE_OTHER) - return ..() - return secondary.can_shoot() - -/obj/item/gun/ballistic/automatic/assault/e40/afterattack(atom/target, mob/living/user, flag, params) - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode != FIREMODE_OTHER) - return ..() - return secondary.afterattack(target, user, flag, params) - -/obj/item/gun/ballistic/automatic/assault/e40/attackby(obj/item/attack_obj, mob/user, params) - if(istype(attack_obj, /obj/item/stock_parts/cell/gun)) - return secondary.attackby(attack_obj, user, params) - return ..() - -/obj/item/gun/ballistic/automatic/assault/e40/attack_hand(mob/user) - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode == FIREMODE_OTHER && loc == user && user.is_holding(src) && secondary.cell && !secondary.latch_closed) - secondary.eject_cell(user) - return - if(current_firemode == FIREMODE_OTHER && loc == user && user.is_holding(src) && secondary.cell && secondary.latch_closed) - to_chat(user, span_warning("The cell retainment clip is latched!")) - return - return ..() - -/obj/item/gun/ballistic/automatic/assault/e40/AltClick(mob/living/user) - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode == FIREMODE_OTHER) - if(secondary.latch_closed) - to_chat(user, span_notice("You start to unlatch the [src]'s power cell retainment clip...")) - if(do_after(user, secondary.latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) - to_chat(user, span_notice("You unlatch [src]'s power cell retainment clip " + "OPEN" + ".")) - playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) - secondary.tac_reloads = TRUE - secondary.latch_closed = FALSE - update_appearance() - return - else - to_chat(user, span_warning("You start to latch the [src]'s power cell retainment clip...")) - if (do_after(user, secondary.latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) - to_chat(user, span_notice("You latch [src]'s power cell retainment clip " + "CLOSED" + ".")) - playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) - secondary.tac_reloads = FALSE - secondary.latch_closed = TRUE - update_appearance() - return - else - return ..() - -/obj/item/gun/ballistic/automatic/assault/e40/on_wield(obj/item/source, mob/user) - wielded = TRUE - secondary.wielded = TRUE - INVOKE_ASYNC(src, PROC_REF(do_wield), user) - -/obj/item/gun/ballistic/automatic/assault/e40/do_wield(mob/user) - . = ..() - secondary.wielded_fully = wielded_fully - -/// triggered on unwield of two handed item -/obj/item/gun/ballistic/automatic/assault/e40/on_unwield(obj/item/source, mob/user) - . = ..() - secondary.wielded_fully = FALSE - secondary.wielded = FALSE - - -/obj/item/gun/ballistic/automatic/assault/e40/proc/secondary_update_icon() - update_appearance() - SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) - -/obj/item/gun/ballistic/automatic/assault/e40/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) - secondary.pre_fire(target, user, message, flag, params, zone_override, bonus_spread) - - -/obj/item/gun/ballistic/automatic/assault/e40/get_cell() - return secondary.get_cell() - -/obj/item/gun/ballistic/automatic/assault/e40/update_overlays() - . = ..() - //handle laser gunn overlays - if(!secondary) - return - var/ratio = secondary.get_charge_ratio() - if(ratio == 0) - . += "[icon_state]_chargeempty" - else - . += "[icon_state]_charge[ratio]" - if(secondary.cell) - . += "[icon_state]_cell" - if(ismob(loc)) - var/mutable_appearance/latch_overlay - latch_overlay = mutable_appearance('icons/obj/guns/cell_latch.dmi') - if(secondary.latch_closed) - if(secondary.cell) - latch_overlay.icon_state = "latch-on-full" - else - latch_overlay.icon_state = "latch-on-empty" - else - if(secondary.cell) - latch_overlay.icon_state = "latch-off-full" - else - latch_overlay.icon_state = "latch-off-empty" - . += latch_overlay - - -/obj/item/gun/ballistic/automatic/assault/e40/toggle_safety(mob/user, silent=FALSE) - . = ..() - secondary.toggle_safety(user, silent=TRUE) - -/obj/item/gun/ballistic/automatic/assault/e40/fire_select(mob/living/carbon/human/user) - . = ..() - var/current_firemode = gun_firemodes[firemode_index] - if(current_firemode == FIREMODE_OTHER) - SEND_SIGNAL(src, COMSIG_GUN_ENABLE_AUTOFIRE) - SEND_SIGNAL(src, COMSIG_GUN_SET_AUTOFIRE_SPEED, secondary.fire_delay) - else - SEND_SIGNAL(src, COMSIG_GUN_SET_AUTOFIRE_SPEED, fire_delay) - SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) - -/obj/item/gun/ballistic/automatic/assault/e40/examine(mob/user) - . = ..() - if(!secondary.internal_magazine) - . += "The cell retainment latch is [secondary.latch_closed ? "CLOSED" : "OPEN"]. Alt-Click to toggle the latch." - var/obj/item/ammo_casing/energy/shot = secondary.ammo_type[select] - if(secondary.cell) - . += "\The [name]'s cell has [secondary.cell.percent()]% charge remaining." - . += "\The [name] has [round(secondary.cell.charge/shot.e_cost)] shots remaining on [shot.select_name] mode." - else - . += span_notice("\The [name] doesn't seem to have a cell!") - -//laser - -/obj/item/gun/energy/laser/e40_laser_secondary - name = "secondary e40 laser gun" - desc = "The laser component of a E-40 Hybrid Rifle. You probably shouldn't see this. If you can though, you should probably know lorewise, this is primary, the ballistic compontent in universe is secondary. Unfortunately, we cannot simulate this, So codewise this is secondary." - fire_sound = 'sound/weapons/gun/laser/e40_las.ogg' - w_class = WEIGHT_CLASS_NORMAL - ammo_type = list(/obj/item/ammo_casing/energy/laser/assault) - fire_delay = 0.2 SECONDS - gun_firemodes = list(FIREMODE_FULLAUTO) - default_firemode = FIREMODE_FULLAUTO - latch_toggle_delay = 1.2 SECONDS - valid_attachments = list() - - spread_unwielded = 20 diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index 6084e28cf4ab..0e7af1fcb26d 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -251,22 +251,3 @@ w_class = WEIGHT_CLASS_BULKY var/obj/item/modular_computer/integratedNTOS var/NTOS_type = /obj/item/modular_computer/internal - -/obj/item/gun/energy/e_gun/e11 - name = "E-11 hybrid energy rifle" - desc = "A hybrid energy gun fondly remembered as one of the worst weapons ever made. It hurts, but that's only if it manages to hit its target." - icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' - icon_state = "e11" - ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser/eoehoma) - ammo_x_offset = 0 - spread = 80 - spread_unwielded = 140 - dual_wield_spread = 140 - shaded_charge = TRUE - manufacturer = MANUFACTURER_EOEHOMA - -/obj/item/gun/energy/e_gun/e11/empty_cell - spawn_no_ammo = TRUE diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 44b8d4eaf8d7..1da484f5de96 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -219,54 +219,3 @@ . += "You examine [src] closer. Under the grip is a small inscription: \"NT CN SVALINN 462\"." else . += "You try to examine [src] closer, but you're too far away." - -/obj/item/gun/energy/laser/e10 - name = "E-10 laser pistol" - desc = "A very old laser weapon. Despite the extreme age of some of these weapons, they are sometimes preferred to newer, mass-produced Nanotrasen laser weapons." - icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' - icon_state = "e10" - item_state = "gun" - w_class = WEIGHT_CLASS_SMALL - - wield_delay = 0.2 SECONDS - wield_slowdown = LASER_PISTOL_SLOWDOWN - - spread = 2 - spread_unwielded = 5 - - ammo_type = list(/obj/item/ammo_casing/energy/lasergun/eoehoma) - manufacturer = MANUFACTURER_EOEHOMA - -/obj/item/gun/energy/laser/e50 - name = "E-50 energy emitter" - desc = "A heavy and extremely powerful laser. Sets targets on fire and kicks ass, but it uses a massive amount of energy per shot and is generally awkward to handle." - - icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' - icon_state = "e50" - item_state = "e50" - - default_ammo_type = /obj/item/stock_parts/cell/gun/large - allowed_ammo_types = list( - /obj/item/stock_parts/cell/gun/large, - ) - ammo_type = list(/obj/item/ammo_casing/energy/laser/eoehoma/e50) - weapon_weight = WEAPON_HEAVY - w_class = WEIGHT_CLASS_BULKY - manufacturer = MANUFACTURER_EOEHOMA - - wield_delay = 0.7 SECONDS - wield_slowdown = LASER_SNIPER_SLOWDOWN - spread_unwielded = 20 - - shaded_charge = FALSE - ammo_x_offset = 4 - charge_sections = 2 - slot_flags = 0 - - diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index e70c46cc76f6..fdb3770b7c89 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -44,13 +44,3 @@ desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating." can_charge = FALSE use_cyborg_cell = TRUE - -/obj/item/gun/energy/disabler/e60 - name = "E-60" - desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." - icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' - icon_state = "e60" - manufacturer = MANUFACTURER_EOEHOMA diff --git a/code/modules/projectiles/guns/manufacturer/eoehoma/ballistics.dm b/code/modules/projectiles/guns/manufacturer/eoehoma/ballistics.dm new file mode 100644 index 000000000000..da315f224fee --- /dev/null +++ b/code/modules/projectiles/guns/manufacturer/eoehoma/ballistics.dm @@ -0,0 +1,218 @@ +/obj/item/gun/ballistic/automatic/assault/e40 + name = "\improper E-40 Hybrid Rifle" + desc = "A Hybrid Assault Rifle, best known for being having a dual ballistic/laser system along with an advanced ammo counter. Once an icon for bounty hunters, age has broken most down, so these end up in collector's hands or as shoddy Frontiersmen laser SMG conversions when in their inheritted stockpiles. But if one were to find one in working condition, it would be just as formidable as back then. Chambered in .299 Eoehoma caseless, and uses energy for lasers." + icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' + icon_state = "e40" + item_state = "e40" + default_ammo_type = /obj/item/ammo_box/magazine/e40 + allowed_ammo_types = list( + /obj/item/ammo_box/magazine/e40, + ) + var/obj/item/gun/energy/laser/e40_laser_secondary/secondary + fire_select_icon_state_prefix = "e40_" + + fire_delay = 0.1 SECONDS + recoil_unwielded = 3 + + gun_firenames = list(FIREMODE_FULLAUTO = "full auto ballistic", FIREMODE_OTHER = "full auto laser") + gun_firemodes = list(FIREMODE_FULLAUTO, FIREMODE_OTHER) + default_firemode = FIREMODE_OTHER + + weapon_weight = WEAPON_MEDIUM + slot_flags = ITEM_SLOT_BACK + + show_magazine_on_sprite = TRUE + empty_indicator = TRUE + fire_sound = 'sound/weapons/gun/laser/e40_bal.ogg' + manufacturer = MANUFACTURER_EOEHOMA + +/obj/item/gun/ballistic/automatic/assault/e40/Initialize() + . = ..() + secondary = new /obj/item/gun/energy/laser/e40_laser_secondary(src) + RegisterSignal(secondary, COMSIG_ATOM_UPDATE_ICON, PROC_REF(secondary_update_icon)) + SEND_SIGNAL(secondary, COMSIG_GUN_DISABLE_AUTOFIRE) + update_appearance() + +/obj/item/gun/ballistic/automatic/assault/e40/ComponentInitialize() + . = ..() + AddComponent(/datum/component/ammo_hud/eoehoma) // at long last... the ammo counter on the side of the sprite is functional... + +/obj/item/gun/ballistic/automatic/assault/e40/do_autofire(datum/source, atom/target, mob/living/shooter, params) + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.do_autofire(source, target, shooter, params) + +/obj/item/gun/ballistic/automatic/assault/e40/do_autofire_shot(datum/source, atom/target, mob/living/shooter, params) + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.do_autofire_shot(source, target, shooter, params) + +/obj/item/gun/ballistic/automatic/assault/e40/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread) + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + if(!secondary.latch_closed && prob(65)) + to_chat(user, span_warning("[src]'s cell falls out!")) + secondary.eject_cell() + return ..() + return secondary.process_fire(target, user, message, params, zone_override, bonus_spread) + +/obj/item/gun/ballistic/automatic/assault/e40/can_shoot() + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.can_shoot() + +/obj/item/gun/ballistic/automatic/assault/e40/afterattack(atom/target, mob/living/user, flag, params) + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.afterattack(target, user, flag, params) + +/obj/item/gun/ballistic/automatic/assault/e40/attackby(obj/item/attack_obj, mob/user, params) + if(istype(attack_obj, /obj/item/stock_parts/cell/gun)) + return secondary.attackby(attack_obj, user, params) + return ..() + +/obj/item/gun/ballistic/automatic/assault/e40/attack_hand(mob/user) + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode == FIREMODE_OTHER && loc == user && user.is_holding(src) && secondary.cell && !secondary.latch_closed) + secondary.eject_cell(user) + return + if(current_firemode == FIREMODE_OTHER && loc == user && user.is_holding(src) && secondary.cell && secondary.latch_closed) + to_chat(user, span_warning("The cell retainment clip is latched!")) + return + return ..() + +/obj/item/gun/ballistic/automatic/assault/e40/AltClick(mob/living/user) + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode == FIREMODE_OTHER) + if(secondary.latch_closed) + to_chat(user, span_notice("You start to unlatch the [src]'s power cell retainment clip...")) + if(do_after(user, secondary.latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) + to_chat(user, span_notice("You unlatch [src]'s power cell retainment clip " + "OPEN" + ".")) + playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) + secondary.tac_reloads = TRUE + secondary.latch_closed = FALSE + update_appearance() + return + else + to_chat(user, span_warning("You start to latch the [src]'s power cell retainment clip...")) + if (do_after(user, secondary.latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) + to_chat(user, span_notice("You latch [src]'s power cell retainment clip " + "CLOSED" + ".")) + playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) + secondary.tac_reloads = FALSE + secondary.latch_closed = TRUE + update_appearance() + return + else + return ..() + +/obj/item/gun/ballistic/automatic/assault/e40/on_wield(obj/item/source, mob/user) + wielded = TRUE + secondary.wielded = TRUE + INVOKE_ASYNC(src, PROC_REF(do_wield), user) + +/obj/item/gun/ballistic/automatic/assault/e40/do_wield(mob/user) + . = ..() + secondary.wielded_fully = wielded_fully + +/// triggered on unwield of two handed item +/obj/item/gun/ballistic/automatic/assault/e40/on_unwield(obj/item/source, mob/user) + . = ..() + secondary.wielded_fully = FALSE + secondary.wielded = FALSE + + +/obj/item/gun/ballistic/automatic/assault/e40/proc/secondary_update_icon() + update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + +/obj/item/gun/ballistic/automatic/assault/e40/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) + secondary.pre_fire(target, user, message, flag, params, zone_override, bonus_spread) + + +/obj/item/gun/ballistic/automatic/assault/e40/get_cell() + return secondary.get_cell() + +/obj/item/gun/ballistic/automatic/assault/e40/update_overlays() + . = ..() + //handle laser gunn overlays + if(!secondary) + return + var/ratio = secondary.get_charge_ratio() + if(ratio == 0) + . += "[icon_state]_chargeempty" + else + . += "[icon_state]_charge[ratio]" + if(secondary.cell) + . += "[icon_state]_cell" + if(ismob(loc)) + var/mutable_appearance/latch_overlay + latch_overlay = mutable_appearance('icons/obj/guns/cell_latch.dmi') + if(secondary.latch_closed) + if(secondary.cell) + latch_overlay.icon_state = "latch-on-full" + else + latch_overlay.icon_state = "latch-on-empty" + else + if(secondary.cell) + latch_overlay.icon_state = "latch-off-full" + else + latch_overlay.icon_state = "latch-off-empty" + . += latch_overlay + + +/obj/item/gun/ballistic/automatic/assault/e40/toggle_safety(mob/user, silent=FALSE) + . = ..() + secondary.toggle_safety(user, silent=TRUE) + +/obj/item/gun/ballistic/automatic/assault/e40/fire_select(mob/living/carbon/human/user) + . = ..() + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode == FIREMODE_OTHER) + SEND_SIGNAL(src, COMSIG_GUN_ENABLE_AUTOFIRE) + SEND_SIGNAL(src, COMSIG_GUN_SET_AUTOFIRE_SPEED, secondary.fire_delay) + else + SEND_SIGNAL(src, COMSIG_GUN_SET_AUTOFIRE_SPEED, fire_delay) + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + +/obj/item/gun/ballistic/automatic/assault/e40/examine(mob/user) + . = ..() + if(!secondary.internal_magazine) + . += "The cell retainment latch is [secondary.latch_closed ? "CLOSED" : "OPEN"]. Alt-Click to toggle the latch." + var/obj/item/ammo_casing/energy/shot = secondary.ammo_type[select] + if(secondary.cell) + . += "\The [name]'s cell has [secondary.cell.percent()]% charge remaining." + . += "\The [name] has [round(secondary.cell.charge/shot.e_cost)] shots remaining on [shot.select_name] mode." + else + . += span_notice("\The [name] doesn't seem to have a cell!") + +/obj/item/ammo_box/magazine/e40 + name = "E-40 magazine (.299 Eoehoma caseless)" + icon_state = "e40_mag-1" + base_icon_state = "e40_mag" + ammo_type = /obj/item/ammo_casing/caseless/c299 + caliber = ".299 caseless" + max_ammo = 30 + multiple_sprites = AMMO_BOX_FULL_EMPTY + +//laser + +/obj/item/gun/energy/laser/e40_laser_secondary + name = "secondary e40 laser gun" + desc = "The laser component of a E-40 Hybrid Rifle. You probably shouldn't see this. If you can though, you should probably know lorewise, this is primary, the ballistic compontent in universe is secondary. Unfortunately, we cannot simulate this, So codewise this is secondary." + fire_sound = 'sound/weapons/gun/laser/e40_las.ogg' + w_class = WEIGHT_CLASS_NORMAL + ammo_type = list(/obj/item/ammo_casing/energy/laser/assault) + fire_delay = 0.2 SECONDS + gun_firemodes = list(FIREMODE_FULLAUTO) + default_firemode = FIREMODE_FULLAUTO + latch_toggle_delay = 1.2 SECONDS + valid_attachments = list() + + spread_unwielded = 20 diff --git a/code/modules/projectiles/guns/manufacturer/eoehoma/lasers.dm b/code/modules/projectiles/guns/manufacturer/eoehoma/lasers.dm new file mode 100644 index 000000000000..9b5f9777b0b9 --- /dev/null +++ b/code/modules/projectiles/guns/manufacturer/eoehoma/lasers.dm @@ -0,0 +1,84 @@ +/obj/item/gun/energy/laser/e10 + name = "E-10 laser pistol" + desc = "A very old laser weapon. Despite the extreme age of some of these weapons, they are sometimes preferred to newer, mass-produced Nanotrasen laser weapons." + icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' + icon_state = "e10" + item_state = "e_generickill4" + w_class = WEIGHT_CLASS_SMALL + + wield_delay = 0.2 SECONDS + wield_slowdown = LASER_PISTOL_SLOWDOWN + + spread = 2 + spread_unwielded = 5 + + ammo_type = list(/obj/item/ammo_casing/energy/lasergun/eoehoma) + manufacturer = MANUFACTURER_EOEHOMA + + +/obj/item/gun/energy/e_gun/e11 + name = "E-11 hybrid energy rifle" + desc = "A hybrid energy gun fondly remembered as one of the worst weapons ever made. It hurts, but that's only if it manages to hit its target." + icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' + icon_state = "e11" + item_state = "e_generickill4" + + ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser/eoehoma) + ammo_x_offset = 0 + spread = 60 + spread_unwielded = 100 + dual_wield_spread = 100 + shaded_charge = TRUE + manufacturer = MANUFACTURER_EOEHOMA + +/obj/item/gun/energy/e_gun/e11/empty_cell + spawn_no_ammo = TRUE + + +/obj/item/gun/energy/laser/e50 + name = "E-50 energy emitter" + desc = "A heavy and extremely powerful laser. Sets targets on fire and kicks ass, but it uses a massive amount of energy per shot and is generally awkward to handle." + + icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' + icon_state = "e50" + item_state = "e50" + + default_ammo_type = /obj/item/stock_parts/cell/gun/large + allowed_ammo_types = list( + /obj/item/stock_parts/cell/gun/large, + ) + ammo_type = list(/obj/item/ammo_casing/energy/laser/eoehoma/e50) + weapon_weight = WEAPON_HEAVY + w_class = WEIGHT_CLASS_BULKY + manufacturer = MANUFACTURER_EOEHOMA + + wield_delay = 0.7 SECONDS + wield_slowdown = LASER_SNIPER_SLOWDOWN + spread_unwielded = 20 + + shaded_charge = FALSE + ammo_x_offset = 4 + charge_sections = 2 + slot_flags = 0 + +/obj/item/gun/energy/disabler/e60 + name = "E-60" + desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." + icon = 'icons/obj/guns/manufacturer/eoehoma/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/eoehoma/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/eoehoma/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/eoehoma/onmob.dmi' + icon_state = "e60" + item_state = "e_genericdisable4" + + shaded_charge = TRUE + manufacturer = MANUFACTURER_EOEHOMA diff --git a/icons/obj/guns/manufacturer/eoehoma/48x32.dmi b/icons/obj/guns/manufacturer/eoehoma/48x32.dmi index 5ab3ee4a0cb0e6db6f96f03e37395b0530b93c40..09dfd9622e17d8e0dcaeb1f4cc9b4a891ccab4d9 100644 GIT binary patch literal 2933 zcmYk62{aU38^?!iGhsxCBr-+~W1?&k6NZ#!Y>6gWXEb)%m&TAR*=65l7b0WJR;aOM zEoCfu?J}=*tl{(ae(yOw=iGaL_nzn6|GEErpBs+W)no(lg8%>ko7Qc00|0k+b2cIg!C+OU%xH>iJGR4oUHsMVF+5!fQOsc-rl~Xs<(f9 zKI-hHp9Bqk@TE~X?p*F$moXjCxXC-;e=Jji>z`d!g^IYLU|fUC`i(A4nlG~@81xI`Z`9QzU{X}=V7gt7(Ae+hfTcV&>dH-2G)4?D?52|km}B&;1Ab)Nk1s-V@t#*K zL(pLi2M@~<$YwIYlrKJIC}Qin6qTIa7j&8Z070H3~s-#vv zRjE8p+q~M6mcy)+@e6aVg-)Gluqx=`bpZeX3TUa{GV;!#W}fzYb@}Y`W*g-AV|-EO zM5b=tL_p!@@$p~ulSqB}@Q%AJqfmW6$Sxy0RACwt9y)?^Sw#wgImo9NHULDW-xzF? zQ!`zP>#DfnYmC*yEX5mecMITWw;~)vx;C9`g+cD!n}|mr6%my`#xRtibBGAl@-Ty6 z>$I}VpwDIz?B*|RO(h;3oOdY)!y1%4L{TDWQ&{IqfdaZwuhS-nvf7#6cAsFVSI>$c zL}6UpY~RA7ML0TXXZN>6KR8IyBrA@^w&Js`MvjpWVZcfDDcfeX$^5A#V=M_dXVVn~tbK;8PVp9$T)EIu1GcL8EJ7Q+&}Ud0 z+vm_2!1#(GV#j=bEJm?jjY*OQ#Pbcg5TOvwZY#P>v9NWYSoEld@MvEn@L>S4ykc%g z6dhl$2@lPj{vb(^_OSJJ6i#@35dN3+tNV*Ru4i`1U;en8-*{4z0GBBvMFc?~rs>$P z2vd;;FKo`tcrQ40GXn$?HrrczVpKi;&RkIVa9iNrFEV-gJjwis!77@XEF@Np*bcRKTr8?|3WO4JG0YDxCa_y8-) zKi}C&v{_lWiOMbgIJ1=>o(pEcYn3NrzgjO25B^NpR;Il zwdx+NMAWs|D^z~G8iIY7_PMx_5&w4Wf{Bn}_%^JOk`j0g%E;NEn+rWK>FTs(ObN zn0uN_?Xw@_jmIV0y*4)`Z@;HG0NX z){;=&Qs3*AeV9N)S#obE;_ynJYggWmN3zTNFqZa~+=wrFb1}$p#i*B`GkT(Mz?S}8>MJ_c{IU1Dlai$>EO2)bs}0uj<;H3g*z-!_A(aC#|$TKl&=_EtcR& zou__^)`o%2+*8w}x9fhMv^d<$HUPTE^0ulsh(V(-?e5E8+NP!C`>L3n) zn`1ZkbJh;FV*+LDMw!=%9F0zOh(%sNa4C>xZ1z0dY9w7VFn7K@Gm;jIz5ac0%Lqq( zsU31B?qf*ZiwWR8&+FGT`5RtbNVuUgb_mfF8Lr8GrxmS%>d$NMoH&`kI%F#xOx0LS zO}U!aPfShu^H^~{f=~Nb_9lJow~aKe^fXNcgQ5Gel&SIO=SfAe`EzUtQ~I&W?!Vm-5A^4-t)*+<-iezd234=`7avCB&gqLy4AR9|2rVt8yG zhHI*G6$>{a|5W_V9NjV7>!c|f{`hBMO+xGJVUs)+uUuQG7FFqU=ySu?Nw;z{R6{sD zmGzTKBATUUH?6KtPUd?=0^zyg-nj6p^R_xiBqiN`6v0khm+|F4b2FD^rlF~);fHqV zrL>UaT?HSBFN*rq&5mhTp7aQqM2m)2Y|~Gk_MRq*IUT(z!=ya(Z!wQA)b@n*d21RXH9y}0xGGJOI3F0VkgYr!d9k%FwXT88~E%1^i7DN_j# zHJ34&H?8jO`yXZPO>yeQrilr-eIBY9#*JGfz{Bep3SnWD0p>nRbF-NgWXSq{(w%#@LNxz2Z2w7X_t^Ga7PpuV3 za}?@bty=)!8Hcy)dk-xx+7+9O>_5kB!Q#zg55`;`(Z_*7Eog_V4|_EuxCyS=I{q2X zX!ro5^Sw~U6_e~YrC|Sq0N0oWC7op~74H}dB<7p}00Jo+Dlah@s2X97@Q;I9C|&gm IRg0ki0WHvOqyPW_ literal 7384 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 I`eNGu03sHVxc~qF delta 1052 zcmV+%1mpYT4%G;MiBL{Q4GJ0x0000DNk~Le0001h0001B2m=5B0OF*IdjJ3ceo#zQ zMZmzoDk&)-ARu>lcOoJpz`(#QEiFk&Nnl`L|3_3F9U;#xErO4ZDJw1*7aF#^%+K8B zp%p^irf6KNhF0);DW4E!;cCcHR*e$j;LhXJ0J6&&#qXcv+T=C;Qvf0G9Kje<;iRe#yRA zn(rSfzRx+Y_%F308&|{u1NQjj+KS(i&L}F*^F6N~_W6?CL!x?9b*4G)m1J;q)0Xw6viplOv3IsPAQ7U{}=6&G_$A~M4nl~BqXl$OI*-d`5 z2bL$5Qd`5L25`p`A4b@Ke@QU4JbPNPqnjlgC?C}>qsBDJTm!674Xk{GHe=*ysve_n zZL;gkWcPV4%V)qY!91%Pxxr^!pflr0o0jaLgOlBZ*%t(fIsFn>8nBtUDP>Q5LIgn& z1VIo4L3{@e>QL*WJssltwLAXhp^gH+KUrTlM<0OZRQuDXrfH6Te?e1+^(ug8rw9YS zUsX4uA6{NwUjhKyvp0Wk+oQS}l)yZoZce=VfzXfF$2RbT=nO*I0YK*^&aJ&^QKL=- z>)RqkPO>Gx$pszMhpzAXzL#Bp=<#1-jTFKx*$FikvY+B=bZ}cZ25Tr#pe66=Ki}IK1L9p!<@Os`JCnudfF&`8Dq!or{{vu9d1&r3ZI%$KY3_p0zz=yBOEUa|rJlsg9i0SFwE`_0PBx8jFq2}_7ep0|M(4z Wb7RB(Q3y)_0000Dp2>wiW!HaLwGBG26B zsj@_Qb#Ev@268im zTNmKN(OQVW+T(#i>yp4ZEWU(tu0-J6W^8NRk*T%E9~eu-M`tXj)@=gI%pTl8=e_mf zZ`TCDx=CQH_iP#3f@G4!SK=8?t$&*Y5#DZlEO8P)|5%b)YwH-SAvsP;vQx1x2{tpB zg_7MC2)GfU%ASOhnk!l12n`r2-2<_1FOkjR8<1?XlLJoDB-RQ+?VkmLcnXvf)QTjY z57z2JGK`UXz?rp15bhYa-5++Y6W7ibG!Pr9A3D(*(DSrr@G##HU za+Oxpk@sE_2yW4x*-CSNtXWw%mq^h`QK0Xe?(D6LD>$`ouOTVx6H4&m?TOe^!MeSO z<%NcpS@g}0tr;PEq-|I#b^fyTCwe$Dw3KXkpZWBnMe8;}`hu!~xa3aN2;_|bB(OF( zrx}e_Fv1&e{1bqq!cO3$!hc?fl>J=-BAce@lP^8Edhq>)KdUYx_0zuf#r+6{ANzsF zp1-P2GAg74k%$Jc8(zPgzHwAIB}NkCfDqgU5e4;ki;N1n4y3yJUlFivyu5rtMG-nb z06UO6Ef9e5`#{jzfyk)cH+h5zxT?kLxD7tn94YEzzePapd7~)yL4VGWBGY1^5&?FT z1Hst$4TAMe)Qxa)2PPll)&$lZ76gQSWr*mX1oeZEX0&KULHEG~<1 z%&_OA@ZE*!{>ubi{T96O#%=^vkNRGE59#0q9;zPo?nfTLap8ri>QQGA9p6`7d`uHR z5l4lao}j7fUj(v)Jp|jo!KB!+gD979_do!bM8v2kP*zb;^?$fG`5kAV`3-?-*CFHH z`^r?2)Nx;#;@O3B9{OF00{s|MNUMnLSTaaTk13b delta 994 zcmV<810DQ=3GE1wB!6a5OjJd{z`!0IAt@^^p%p>TEiEc4Dn?077#AA$*1(m z75cM_;)hJBG+zHG(_^Ysb`YMd3IVdyIVhOgiVaccQzoqJuS}i8fILZPfLtk&I{=eS z1jZWRkPrdN^uZdUe<5rBFql9P2vQw$cPvd-jx|CA3P7d?pxmtdD)MIpnc-kaVFNHb z)mjf1G8HHnN9NK(9>X3l6{?4}W$JARX2wu#QLU&&~mo(*t)j{MiM8ypDypss8L9d+hOF#T#4-qO{b- z1>WMi<@NCnMMWxK6(v*!yhn!GP>e;qIYsMi6#!^fjNcL17JKhgs+Tp9|krVSw0FAQL{2Vb|g%#UP~VMP@J zOs+uYDfx=F<5ucsZ4pg(D&FAs954V4G_eJN<}kC}VNz28P=Ce<_~y)5yS-v~~IH=_M#Rv#be}u|U@^uE#)Lk|#Q!_+b2LZUB zAFF5-^ClS^wGI%L2{a=F4RM&RB}%b&pabZG-51>*h{JTffrfiXfiDFY04*7SN>qmc zO1ZBQGN8J|0n*oljyeZLhjY-yZZxNU(*+wfkG6rfi=IX{0GgJnZ9BtY0x&wVvSnyD zMSK5Ye?Su41$*qVJ&dcTYA=N*`QTX$uAZtcDkzE1g(-ShPZgv6|G4t%Q(XNN{Zrw_ z2ZUVx5`aC}0;tK}WJ3>nyF`~80C`FDQSkxHRb*T}UESynbHKSpq1iOaboI7n${5sY z+cKrA|I%g393u8I{ozUOT|HHd{=ej&rg2yQSO|P7z>N*)O*c*3OPPSt)iVGW<|GfU zo~Fg80(87pnvAZV2xu8*{sAzqo+icW9Us7P_1G4EeU7W|?ppvHSI?0C24eCwd*)2x QjsO4v07*qoM6N<$g2sBiGXMYp diff --git a/icons/obj/guns/manufacturer/eoehoma/righthand.dmi b/icons/obj/guns/manufacturer/eoehoma/righthand.dmi index c1f9ccab3ff02738695c75122e6754503b841d1b..902c174836e9b38073dddc0f894a624a4b548aea 100644 GIT binary patch delta 1788 zcmY*Y2~d++5)KZm0wXHOxv0QEf`bR)%5Vk+V?YV_83Y*+AuzD3Tq^NLR%ICmL%4?s zSqG3i@u&dG6Hv^?m*I>u%gfR{=6TaOd|c z=_tWqu>CGrXD=8`PEU4V`@WIg7=Faxl{tTpi$3R=Os0XpAjO}diCvlDu5 zp24064A64>&#CAq?${I1tF_GKNR)b)Ro5eSvBd(W;yB9C?S)*@f@6{^0r#U(PBblCK0RQwDnbJR zU#Q5PAy%uXo`u!^GS5IH}Up9S;N@}_#ISt6}8cbm42utB12ot8Znbx|5?}fn> zx?G&k_@q1p_@!A%6q|$RjMT#<*!PCR>>s4iTB}Z2NTdAy1+CT9>H6Vshjg{>vVBVx zT;*g{f3aUMf87+DVxUcZ$&Jg>E}frx`zIoT+0k~i+a2ED_zN|$PzYZ1Kd z(ds_ux%HKEmpN`=NQzFLAxqI}pL{_o(q;rq>;lv>w{OPYm!J+*aGp$JB&gXGYHtr8 zPqMKIJMxy)CANsGVv5&&5wF)2u%h$J4RAU2@jS!Jb9KZ@+ESc_1nru_fG zdH*^Em^ZbTaDeAgM9U5+vS0KnSBh?#ejOz(nvT1e3V4K1fYh;~x1!VZFex?_8{Q96 zr+LoOvE6>`wJcnPZcMlhbMEyz8$0;!PU}~@t$AG>Ur0kYL6Nhf&mr}Sngm5&T62Ei zrgH&+#$^HwCvbx#yCsC`+V5I7!NFZgJQly>h7a*G5b!5l8vc0##5$4^0kPz77eH5k z!7-pRkU|~pnB5@hVA_E?XvYZ+f%F!8sCqUMq}*zScn?@;0;8D>EgoHiUM_8r{sjBt zADhW4iz9CFBxt0pt0(+ACeaJhQ1^LATd3f66B<+70RY-Zh3r&lEN=&(2|h>9cL0IH z*H33UAq5aPr}nL3>PCmKc8ABm2833$X=7(l!g#XE82Rzq){-x@)4EraGx;=2UTUH! zCNaFGta!wxGgtK^T0-b(;Z?=aA;ZGU9dW|ufh@4i(8klR#=UgP&RrGQo-}J1u8p9wc1JlLfuaw?*y}~p(k>p(O8Aw_sBScak7vZ zKiX%;4urrx6V9XE4Q}-s^&@_-6-Scf_{tG@`+DS%Nwlg~;IuMg(CajQ?iThAS3ctv z?^eRdGybB$BqO^W;BXwAikOH8M%7L)qmzmEt`+&b-b1%7w|g4RB?VVe9%qJT#bU_E zl)V1g>XL&!^qrzrO`+op6SVsb!Q`DrX{*tPURQW>!@J3*G^%}&Xc9{$bdDedLQ+7w zlu}Sv9A#qgzA}3I*eQ>dlSp`Sa$rf^#rNRyX#PCB6n6j!w_0(PUx#{)nxDLuBjCpPOPf?}^MFvt?iBL{Q4GJ0x0000DNk~Le0001h0001B2m=5B0OF*IdjJ3ceo#zQ zMZmzoDk&*todX?Ia%e*&MBxXto1C~k9QG65(tTmSCb9b^hE?lJ)=kr%r! zu6zRv_$lr)p=4mT#KYrN)sJ|5xIFO15(EN)Kp+qZ1j4_@vgG4oKJUj|EGIEK_zd}p zSKTn9H_kW@x)>!G%Sn{Wms%`KA!?T&ktMf%)zG7?Yxt9%z$6J-9Bv83P{Iy3 zCjk=}BWOirSQ{)3zc~Pw1V|1zXc==L(=XIYRPJhNiIKwHpdzwwK;R^i`a1Ja90W}8 ztO0HxW=^7d#U9+?V=}V2f9sxMT-I-?hZ0=}8vs(+0NBEbrzPZDEs^PRLNd@RcNX^a zF6H|L1DI%Df*(&Q3F{jvC*(=QU2oje3^I?zzmk+h;QLITKp+qZ1OkCTAbbl}_D{p6 zuhn^c&J&sm0c$j?3;{yxma$EUwuuwk(Au8#kNaj1AIRxD z_-WQb1M$Mx9xq}Bf24W=a5#;Wz`C(6XbuvpH-2NfH07)Tcy?bFz^rpV r8{8APtO0HFzbN3c&iDiZ;oI;B;>Tn|$5Ky<00000NkvXXu0mjfWNWQO diff --git a/icons/obj/guns/manufacturer/frontier_import/48x32.dmi b/icons/obj/guns/manufacturer/frontier_import/48x32.dmi index be95cfa90c14fe5b1763ae8e11da0c600ce28dab..f6638f71a293863fbe1fa8e4dc4bf59d182def3a 100644 GIT binary patch literal 5011 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 TfAQ__qzOk|MMt?o(K_N^uNQ4= literal 9192 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 diff --git a/shiptest.dme b/shiptest.dme index 29f325abe2d6..c55f536641d8 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -3112,6 +3112,8 @@ #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\manufacturer\clip_lanchester\ballistics.dm" #include "code\modules\projectiles\guns\manufacturer\clip_lanchester\lasers.dm" +#include "code\modules\projectiles\guns\manufacturer\eoehoma\ballistics.dm" +#include "code\modules\projectiles\guns\manufacturer\eoehoma\lasers.dm" #include "code\modules\projectiles\guns\manufacturer\etherbor\energy_gunsword.dm" #include "code\modules\projectiles\guns\manufacturer\frontier_import\ballistics.dm" #include "code\modules\projectiles\guns\manufacturer\hunter_pride\ballistics.dm" From 062704d19c8eaeac016f2283cf0f3bc0a2dc21e3 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 11:39:24 -0600 Subject: [PATCH 094/118] Automatic changelog generation for PR #3944 [ci skip] --- html/changelogs/AutoChangeLog-pr-3944.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3944.yml diff --git a/html/changelogs/AutoChangeLog-pr-3944.yml b/html/changelogs/AutoChangeLog-pr-3944.yml new file mode 100644 index 000000000000..a084ea8bda58 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3944.yml @@ -0,0 +1,6 @@ +author: rye-rice +changes: + - {rscadd: Resprites everything eoehoma related!} + - {rscadd: E-11 is more accurate. This isn't saying much.} + - {bugfix: E-60's charge overlay should now work} +delete-after: true From d0821092585857794ec499c34fb7b5d298879384 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Sun, 19 Jan 2025 11:49:18 -0800 Subject: [PATCH 095/118] .45-70 now comes in 24-round boxes (#3986) ## About The Pull Request .45-70 now comes in 24 round boxes. Price reduced to 300 credits. .45-70 match reduced to 400 credits. 800 credits is a scam. ## Why It's Good For The Game For only being used in two guns, these rounds are prohibitively expensive and it's simply just economically better to run literally any other gun. This should make it a little bit more reasonable to purchase, and at the very least you can properly load an Ashhand 4 times with a .45-70 box. It did not divide nicely beforehand. ## Changelog :cl: balance: .45-70 comes in 24 round boxes. balance: .45-70 is cheaper. /:cl: --- code/modules/cargo/packs/ammo.dm | 8 ++++---- .../ammo_stacks/prefab_stacks/premade_pistol_stacks.dm | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index d3b87bb2aed9..077d5f49a683 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -246,15 +246,15 @@ /datum/supply_pack/ammo/a4570_box name = ".45-70 Ammo Box Crate" - desc = "Contains a 20-round box containing devastatingly powerful .45-70 caliber ammunition." + desc = "Contains a 24-round box containing devastatingly powerful .45-70 caliber ammunition." contains = list(/obj/item/storage/box/ammo/a4570) - cost = 400 + cost = 300 /datum/supply_pack/ammo/a4570_box/match name = ".45-70 Match Crate" - desc = "Contains a 20-round box containing devastatingly powerful .45-70 caliber ammunition, that travels faster, pierces armour better, and ricochets off targets." + desc = "Contains a 24-round box containing devastatingly powerful .45-70 caliber ammunition, that travels faster, pierces armour better, and ricochets off targets." contains = list(/obj/item/storage/box/ammo/a4570_match) - cost = 800 + cost = 400 /* 7.62 */ diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm index 5a783652a7e3..2f1c9cf07659 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm @@ -323,7 +323,7 @@ /obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570 ammo_type = /obj/item/ammo_casing/a4570 - max_ammo = 5 + max_ammo = 6 /obj/item/storage/box/ammo/a4570 name = "box of .45-70 ammo" From 4f8f8dc329540321b6d47ac95ffa0704615fd857 Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Sun, 19 Jan 2025 14:04:36 -0600 Subject: [PATCH 096/118] Removes Floor tiles under catwalks on the Mudskipper (#4019) ## About The Pull Request ## Why It's Good For The Game Accidentally did this and Forgot to fix it ## Changelog :cl: fix: Fixes plating under some catwalks that aren't supposed to be there on the Mudskipper /:cl: --------- Co-authored-by: github-actions --- _maps/shuttles/independent/independent_mudskipper.dmm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 57ef51218970..6bad14323e84 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -228,7 +228,7 @@ dir = 10 }, /obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/ship/engineering/engine) "eu" = ( /obj/structure/railing{ @@ -710,7 +710,7 @@ icon_state = "2-5" }, /obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/ship/engineering/engine) "qN" = ( /obj/machinery/cryopod{ @@ -1460,7 +1460,7 @@ icon_state = "2-4" }, /obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/ship/engineering/engine) "Id" = ( /obj/effect/decal/cleanable/dirt/dust, From c018f28fef62ec68b617540faa8422c2f4d93c6f Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 14:15:57 -0600 Subject: [PATCH 097/118] Automatic changelog generation for PR #4019 [ci skip] --- html/changelogs/AutoChangeLog-pr-4019.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4019.yml diff --git a/html/changelogs/AutoChangeLog-pr-4019.yml b/html/changelogs/AutoChangeLog-pr-4019.yml new file mode 100644 index 000000000000..cf0abcdc26fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4019.yml @@ -0,0 +1,5 @@ +author: generalthrax +changes: + - {bugfix: Fixes plating under some catwalks that aren't supposed to be there on + the Mudskipper} +delete-after: true From 503de75441a7a8bc62758f738076cdf5d22ba5bc Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:05:14 -0500 Subject: [PATCH 098/118] fix tile indie space (#4038) #4034 --- _maps/outpost/indie_space.dmm | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm index dfcb6d1d37f5..b06d006927b6 100644 --- a/_maps/outpost/indie_space.dmm +++ b/_maps/outpost/indie_space.dmm @@ -5567,10 +5567,6 @@ /turf/open/floor/plasteel, /area/outpost/hallway/central) "BF" = ( -/obj/machinery/elevator_call_button{ - dir = 2; - pixel_y = 24 - }, /obj/structure/chair/bench/beige/directional/south, /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -6201,13 +6197,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) -"EQ" = ( -/obj/structure/falsewall/reinforced, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/closed/indestructible/reinforced/rust, -/area/outpost/maintenance/fore) "ER" = ( /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, @@ -16965,7 +16954,7 @@ NK ds ci NK -EQ +PS YO YO YO From dfa52df158e9d785110fd690a88e3e094746c6ba Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Sun, 19 Jan 2025 12:05:26 -0800 Subject: [PATCH 099/118] You can use a multitool for mechanical brain surgery on the fix brain step. (#3988) ## About The Pull Request Title. ## Why It's Good For The Game I noticed some people getting confused what tool to use for robotic brain surgery, so I added multitool as an intuitive option for the fix brain step. ## Changelog :cl: add: You can use a multitool for mechanical brain surgery on the fix brain step. /:cl: --- code/modules/surgery/mechanical.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/mechanical.dm b/code/modules/surgery/mechanical.dm index 30755a6f3f6c..c58c142e2a5a 100644 --- a/code/modules/surgery/mechanical.dm +++ b/code/modules/surgery/mechanical.dm @@ -7,13 +7,21 @@ /datum/surgery_step/mechanic_open, /datum/surgery_step/open_hatch, /datum/surgery_step/prepare_electronics, - /datum/surgery_step/fix_brain, + /datum/surgery_step/fix_brain/mechanic, /datum/surgery_step/close_hatch, /datum/surgery_step/mechanic_close ) lying_required = FALSE self_operable = TRUE +/datum/surgery_step/fix_brain/mechanic + implements = list( + TOOL_MULTITOOL = 85, + TOOL_HEMOSTAT = 85, + TOOL_SCREWDRIVER = 40, + /obj/item/pen = 5 + ) + /datum/surgery/healing/mechanic name = "Repair machinery" requires_bodypart_type = BODYTYPE_ROBOTIC From cb019dbfc7e89cec0fba75b7123771319eab9b9a Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 14:31:12 -0600 Subject: [PATCH 100/118] Automatic changelog generation for PR #3988 [ci skip] --- html/changelogs/AutoChangeLog-pr-3988.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3988.yml diff --git a/html/changelogs/AutoChangeLog-pr-3988.yml b/html/changelogs/AutoChangeLog-pr-3988.yml new file mode 100644 index 000000000000..d3e8a31d338d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3988.yml @@ -0,0 +1,5 @@ +author: Gristlebee +changes: + - {rscadd: You can use a multitool for mechanical brain surgery on the fix brain + step.} +delete-after: true From 28c4dd541d31dce56466d013c4379023cd152503 Mon Sep 17 00:00:00 2001 From: HelmCrab <90987989+Thera-Pissed@users.noreply.github.com> Date: Sun, 19 Jan 2025 14:06:01 -0600 Subject: [PATCH 101/118] Ghost HUD Respawn Button (#4037) ## About The Pull Request Replaces the Jump To Mob HUD button with a respawn button. ![image](https://github.com/user-attachments/assets/d5adc2be-893f-4a06-97e3-4a513c597a7e) Thanks @meikiato from the discord for the above text. I am not wordy. ![image](https://github.com/user-attachments/assets/23c53a46-4f17-40ad-b383-377ad41c8319) The respawn button confirms your choice if you have a body to return to, otherwise this confirmation will not appear. ## Why It's Good For The Game Respawning is an important part of shiptest, whether you're checking ships before the round or respawning after an unfortunate death. This makes it a more accessible and obvious option for new players, and requires less mucking about in the verb menu. ## Changelog :cl: add: Replaced Jump To Mob on ghost HUD with a respawn option. /:cl: --- code/_onclick/hud/_defines.dm | 2 +- code/_onclick/hud/ghost.dm | 14 ++++++++++++-- code/modules/mob/dead/observer/observer.dm | 7 +++++++ icons/hud/screen_ghost.dmi | Bin 23032 -> 21382 bytes 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index dc6dfd37cea7..c996c0f8b294 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -160,7 +160,7 @@ #define ui_pai_view_images "SOUTH:6,WEST+13" //Ghosts -#define ui_ghost_jumptomob "SOUTH:6,CENTER-3:24" +#define ui_ghost_respawn "SOUTH:6,CENTER-3:24" #define ui_ghost_orbit "SOUTH:6,CENTER-2:24" #define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24" #define ui_ghost_teleport "SOUTH:6,CENTER:24" diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 9c96a3f5cf18..d1c7cb81ca7d 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -5,6 +5,7 @@ . = ..() flick(icon_state + "_anim", src) +/* /atom/movable/screen/ghost/jumptomob name = "Jump to mob" icon_state = "jumptomob" @@ -12,6 +13,15 @@ /atom/movable/screen/ghost/jumptomob/Click() var/mob/dead/observer/G = usr G.jumptomob() +*/ + +/atom/movable/screen/ghost/respawn + name = "Respawn" + icon_state = "respawn" + +/atom/movable/screen/ghost/respawn/Click() + var/mob/dead/observer/G = usr + G.respawn() /atom/movable/screen/ghost/orbit name = "Orbit" @@ -58,8 +68,8 @@ ..() var/atom/movable/screen/using - using = new /atom/movable/screen/ghost/jumptomob() - using.screen_loc = ui_ghost_jumptomob + using = new /atom/movable/screen/ghost/respawn() + using.screen_loc = ui_ghost_respawn using.hud = src static_inventory += using diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e79427f2381d..bf6c63790cb1 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -520,6 +520,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(A, "This mob is not located in the game world.") +/mob/dead/observer/verb/respawn() + if(can_reenter_corpse && client?.holder) + var/poll_client = tgui_alert(usr, "Returning to the title screen will forfeit any possible revival. Are you sure?", "Confirmation", list("Yes", "No")) + if(poll_client == "No") + return + abandon_mob() + /mob/dead/observer/verb/change_view_range() set category = "Ghost" set name = "View Range" diff --git a/icons/hud/screen_ghost.dmi b/icons/hud/screen_ghost.dmi index 663cf91e3622d9b02ff902e61e79944a558a6ae6..1bd2be6e41444a336afac2c52ac6a2ff4604f93a 100644 GIT binary patch literal 21382 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 Date: Sun, 19 Jan 2025 14:43:03 -0600 Subject: [PATCH 102/118] Automatic changelog generation for PR #4037 [ci skip] --- html/changelogs/AutoChangeLog-pr-4037.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4037.yml diff --git a/html/changelogs/AutoChangeLog-pr-4037.yml b/html/changelogs/AutoChangeLog-pr-4037.yml new file mode 100644 index 000000000000..9a858987a24f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4037.yml @@ -0,0 +1,4 @@ +author: Thera-Pissed +changes: + - {rscadd: Replaced Jump To Mob on ghost HUD with a respawn option.} +delete-after: true From 451703fd637e7ab048c88c876f7a9f8882ff43e2 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Sun, 19 Jan 2025 12:57:53 -0800 Subject: [PATCH 103/118] Makes dogtag retrieval missions take both Ramzi and Frontiersman tags, removes RnD retrieval (#4036) ## About The Pull Request Title. Dogtags retrieval missions now take any dogtag, both frontiersman and ramzi. This was done as dogtag missions were already rare enough and sometimes even for doing these things you could get screwed over by not being able to turn in any of your tags. Anomaly core missions don't ask for specific cores, why should dogtag missions? Both are terrorists. Also removes the RnD retrieval missions. We already culled RnD from nearly everywhere and it exists in scraps on certain ships. Barely any even have a full setup. This clogs the list for other missions that are actually completable. ## Why It's Good For The Game I discussed this with Thrax after seeing the dogtag issue in-game and came up with how the RnD missions are effectively never done since mapcuts removed almost all of the RnD ruins (thank god) and it's otherwise mostly unobtainable. Hopefully this should make the missions easier to complete with more accessible missions and likewise not clog up the list. ## Changelog :cl: del: RnD retrieval missions balance: Dogtag missions take any kind of dogtag, both Frontiersman and Ramzi /:cl: --- .../overmap/missions/acquire_mission.dm | 39 ++----------------- 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/code/modules/overmap/missions/acquire_mission.dm b/code/modules/overmap/missions/acquire_mission.dm index 71bb5546fe03..d04d494bf4a8 100644 --- a/code/modules/overmap/missions/acquire_mission.dm +++ b/code/modules/overmap/missions/acquire_mission.dm @@ -196,49 +196,16 @@ Acquire: Anomaly num_wanted = 2 /datum/mission/acquire/bounty - name = "Hunt down Frontiersmen Dogtags" - desc = "CLIP has assigned us to offer out bounties to hunt down Frontiersman cells and turn in their dogtags. We'll reward you well." + name = "Hunt down Dogtags" + desc = "CLIP has posted several bounties for wanted members of both the Frontiersman and the Clique. Bring back their tags, we'll reward you well." weight = 4 - value = 3000 - duration = 100 MINUTES - dur_mod_range = 0.2 - container_type = /obj/item/storage/toolbox/bounty/hunt - objective_type = /obj/item/clothing/neck/dogtag/frontier - num_wanted = 3 - -/datum/mission/acquire/bounty/ramzi - name = "Hunt down Ramzi Clique Dogtags" - desc = "Gezena has assigned us to offer out bounties to hunt down Ramzi Clique outfits and turn in their dogtags. We'll reward you well." - weight = 3 value = 4000 duration = 120 MINUTES dur_mod_range = 0.1 container_type = /obj/item/storage/toolbox/bounty/hunt - objective_type = /obj/item/clothing/neck/dogtag/ramzi + objective_type = /obj/item/clothing/neck/dogtag num_wanted = 3 -/datum/mission/acquire/salvage - name = "Deliver Protolathe" - desc = "The Nanotrasen Corporation is contracting out to have scientific equipment returned. Looking for a rare circuitboard (R&D Console, Protolathe, Circuit Imprinter) of any type." - weight = 2 - value = 4000 - duration = 120 MINUTES - dur_mod_range = 0.3 - container_type = /obj/item/storage/toolbox/bounty/salvage - objective_type = /obj/item/circuitboard/machine/protolathe - num_wanted = 1 - -/datum/mission/acquire/salvage/console - name = "Deliver R&D Console" - desc = "The Nanotrasen Corporation is contracting out to have scientific equipment returned. Looking for a rare circuitboard (R&D Console, Protolathe, Circuit Imprinter) of any type." - weight = 3 - value = 2500 - duration = 120 MINUTES - dur_mod_range = 0.3 - container_type = /obj/item/storage/toolbox/bounty/salvage - objective_type = /obj/item/circuitboard/computer/rdconsole - num_wanted = 1 - /* Acquire: Fishing */ From 03ed46be7379f238e8fe51ecf82866735ad0cc99 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 15:09:00 -0600 Subject: [PATCH 104/118] Automatic changelog generation for PR #4036 [ci skip] --- html/changelogs/AutoChangeLog-pr-4036.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4036.yml diff --git a/html/changelogs/AutoChangeLog-pr-4036.yml b/html/changelogs/AutoChangeLog-pr-4036.yml new file mode 100644 index 000000000000..1ed66d369091 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4036.yml @@ -0,0 +1,5 @@ +author: firebudgy +changes: + - {rscdel: RnD retrieval missions} + - {balance: 'Dogtag missions take any kind of dogtag, both Frontiersman and Ramzi'} +delete-after: true From a7a2b17a39a78cd809040ee684b88d445d70478d Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Sun, 19 Jan 2025 14:09:53 -0800 Subject: [PATCH 105/118] MP-Gygax, and adds the factional mech conversion kits to cargo (#3918) ## About The Pull Request Adds the NT made MP-Gygax to the game, and a construction kit for it cargo for 8000 credits. A mass produced variant of the base Gygax, it's armor has been stripped down to reduce costs. The leg actuators have been modified to take advantage of the lighter weight, allowing for quick 6 tile range charges. The light weight however does mean it doesn't have the mass to break through walls. Adds the conversion kits for the CLIP Rogue and Paladin, and the Inteq Gygax to cargo for 500, locked to their respective factions. Reduces the cost of the Mk-2 ripley upgrade to 500. Adds some sanity to charging so you can't send yourself off course. MP-Gygax sprites by Rye-Rice. ![image](https://github.com/user-attachments/assets/02c6917b-f00c-49f7-85ff-a03e2474b76b) ## Why It's Good For The Game More mechs are neat, and it makes sense for NT to have their own unique Gygax since it's their own product. Having cheap conversion kits are good since you're already paying out the nose to buy a mech. And factional mechs are nice to have since we have factional cargo to support it now. ## Changelog :cl: Gristle, Rye-Rice add: MP Gygax add: Mech conversion kits to cargo balance: MK-2 ripley upgrade now costs 500. fix: Mech charging sanity. /:cl: --------- Signed-off-by: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/game/mecha/combat/gygax.dm | 37 ++++++++++-- code/game/mecha/equipment/tools/work_tools.dm | 8 ++- code/game/mecha/mecha.dm | 8 ++- code/game/mecha/mecha_construction_paths.dm | 26 ++++++++ code/game/mecha/mecha_parts.dm | 10 ++++ code/modules/cargo/packs/mechs.dm | 56 +++++++++++++++++- icons/mecha/mech_construct.dmi | Bin 31441 -> 34241 bytes icons/mecha/mech_construction.dmi | Bin 19228 -> 19621 bytes icons/mecha/mecha.dmi | Bin 143568 -> 145464 bytes 9 files changed, 136 insertions(+), 9 deletions(-) diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 8a3203c00645..82a9909b130f 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -49,14 +49,39 @@ return cell = new /obj/item/stock_parts/cell/bluespace(src) -/obj/mecha/combat/gygax/inteq - name = "\improper Basenji" - desc = "A light security exosuit originally manufactured by Cybersun Biodynamics, extensively modified by IRMG artificers. The leg actuators have been maxed out, allowing for powerful short ranged charges." - icon_state = "inteqgygax" +/obj/mecha/combat/gygax/charger + name = "\improper Modified 501p" + desc = "A lightweight security exosuit, this one seems to have been modified for short high speed charges instead of enhanced speed." charge_break_walls = TRUE charge_toss_structures = TRUE charge_toss_mobs = TRUE +/obj/mecha/combat/gygax/charger/inteq + name = "\improper Basenji" + desc = "A light security exosuit originally manufactured by Cybersun Biodynamics, extensively modified by IRMG artificers. The leg actuators have been maxed out, allowing for powerful short ranged charges capable of breaking walls and other obstacles." + icon_state = "inteqgygax" + +/obj/mecha/combat/gygax/charger/mp + name = "\improper NT-501p-MP" + desc = "An exosuit model derrived from the Cybersun 501p and modified for mass production. This model has had its armor plating reduced to reduce production costs. The leg actuators have been modified to take advantage of the consequently lighter frame, allowing for swift charges over moderate distances without heavily taxing the power supply." + armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + icon_state = "mpgygax" + charge_break_walls = FALSE + charge_toss_structures = FALSE + charge_distance = 6 + charge_cooldown = 8 + charge_power_consume = 100 + charge_windup = 0 + +/obj/mecha/combat/gygax/charger/nt/loaded/Initialize() + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/carbine(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/thrusters/ion(src) + ME.attach(src) + /obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0) ..() overload_action.Grant(user, src) @@ -66,11 +91,11 @@ ..() overload_action.Remove(user) -/obj/mecha/combat/gygax/inteq/GrantActions(mob/living/user, human_occupant = 0) +/obj/mecha/combat/gygax/charger/GrantActions(mob/living/user, human_occupant = 0) ..() overload_action.Remove(user) charge_action.Grant(user,src) -/obj/mecha/combat/gygax/inteq/RemoveActions(mob/living/user, human_occupant) +/obj/mecha/combat/gygax/charger/RemoveActions(mob/living/user, human_occupant) . = ..() charge_action.Remove(user) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index de06c5c6742d..dd27c3d87f1e 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -664,5 +664,11 @@ name = "IRMG Basenji Conversion Kit" desc = "An IRMG-custom conversion kit for a 500 Series combat exosuit, to convert it to the specialized Basenji breaching exosuit." source_mech = list(/obj/mecha/combat/gygax,/obj/mecha/combat/gygax/dark) - result_mech = /obj/mecha/combat/gygax/inteq + result_mech = /obj/mecha/combat/gygax/charger/inteq + +/obj/item/mecha_parts/mecha_equipment/conversion_kit/mp_gygax + name = "NT-501p-MP Conversion Kit" + desc = "A NT made conversion kit for a 501p combat exosuit, to convert it to the lightweight NT-501p-MP skirmishing exosuit." + source_mech = list(/obj/mecha/combat/gygax,/obj/mecha/combat/gygax/dark) + result_mech = /obj/mecha/combat/gygax/charger/mp diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 3bbc61961442..11b3b3c5a08f 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -46,6 +46,7 @@ ///Vars for mech charges var/charging = FALSE var/charge_ready = TRUE + var/charge_windup = 0.5 var/charge_cooldown = 50 var/charge_power_consume = 200 var/charge_distance = 5 @@ -610,6 +611,11 @@ occupant_message("Unable to move while in zoom mode!") last_message = world.time return 0 + if(charging) + if(world.time - last_message > 20) + occupant_message(span_warning("You can't change direction while charging!")) + last_message = world.time + return 0 if(!cell) if(world.time - last_message > 20) occupant_message("Missing power cell.") @@ -1277,7 +1283,7 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? Shake(15, 15, 1 SECONDS) var/obj/effect/temp_visual/decoy/new_decoy = new /obj/effect/temp_visual/decoy(loc,src) animate(new_decoy, alpha = 0, color = "#5a5858", transform = matrix()*2, time = 2) - addtimer(CALLBACK(src,PROC_REF(handle_charge)),0.5 SECONDS, TIMER_STOPPABLE) + addtimer(CALLBACK(src,PROC_REF(handle_charge)), charge_windup SECONDS, TIMER_STOPPABLE) /obj/mecha/proc/handle_charge() var/turf/mecha_loc = get_turf(src) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 8cfeda9e30d2..e20634680447 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -3,6 +3,9 @@ //////////////////////////////// /datum/component/construction/mecha var/base_icon + // if we need to override the icon for a different one from the base. Step determines when the override occurs. + var/override_icon + var/override_step = list() // Component typepaths. // most must be defined unless @@ -52,6 +55,11 @@ // "[base_icon][index - 1]" // For example, Ripley's step 1 icon_state is "ripley0". var/atom/parent_atom = parent + if(override_icon && ((index-1) in override_step)) + if(!steps[index]["icon_state"] && base_icon) + parent_atom.icon_state = "[override_icon][index - 1]" + return + if(!steps[index]["icon_state"] && base_icon) parent_atom.icon_state = "[base_icon][index - 1]" @@ -420,6 +428,24 @@ outer_plating=/obj/item/mecha_parts/part/gygax_armor outer_plating_amount=1 +/datum/component/construction/unordered/mecha_chassis/mpgygax + result = /datum/component/construction/mecha/gygax/mp + steps = list( + /obj/item/mecha_parts/part/gygax_torso, + /obj/item/mecha_parts/part/gygax_left_arm, + /obj/item/mecha_parts/part/gygax_right_arm, + /obj/item/mecha_parts/part/gygax_left_leg, + /obj/item/mecha_parts/part/gygax_right_leg, + /obj/item/mecha_parts/part/gygax_head + ) + +/datum/component/construction/mecha/gygax/mp + result = /obj/mecha/combat/gygax/charger/mp + + outer_plating = /obj/item/mecha_parts/part/mpgygax_armor + override_icon = "mpgygax" + override_step = list(21,22) + /datum/component/construction/mecha/gygax/action(datum/source, atom/used_atom, mob/user) return INVOKE_ASYNC(src, PROC_REF(check_step), used_atom, user) diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 43dc8431c809..beef7653d8ff 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -139,6 +139,16 @@ desc = "A set of armor plates designed for the 500 Series. Designed to effectively deflect damage with a lightweight construction." icon_state = "gygax_armor" +/obj/item/mecha_parts/chassis/mp_gygax + name = "\improper MP-Gygax chassis" + construct_type = /datum/component/construction/unordered/mecha_chassis/mpgygax + +/obj/item/mecha_parts/part/mpgygax_armor + gender = PLURAL + name = "\improper MP-Gygax armor plates" + desc = "A set of stripped down armor plates designed for the MP-Gygax. Designed to moderately deflect damage with a lightweight construction." + icon_state = "mpgygax_armor" + //////////// Durand diff --git a/code/modules/cargo/packs/mechs.dm b/code/modules/cargo/packs/mechs.dm index d12c9e4096e8..c35f4bb7ebc2 100644 --- a/code/modules/cargo/packs/mechs.dm +++ b/code/modules/cargo/packs/mechs.dm @@ -73,6 +73,27 @@ Build Your Own Suit ) crate_name = "501p Construction Kit" +/datum/supply_pack/mech/mpgygax_parts + name = "NT-501p-MP construction kit" + desc = "A set of parts for the NT-501p-MP exosuit model, dervived from the original Cybersun designs and modified for mass production. The armor plating was reduced to cut costs for mass production, but the lighter weight allows the NT-501p-MP's modified servos to perform swift moderate distance charges without heavily taxing the power supply. " + cost = 8000 + contains = list( + /obj/item/mecha_parts/chassis/mp_gygax, + /obj/item/mecha_parts/part/gygax_head, + /obj/item/mecha_parts/part/gygax_torso, + /obj/item/mecha_parts/part/gygax_left_arm, + /obj/item/mecha_parts/part/gygax_right_arm, + /obj/item/mecha_parts/part/gygax_left_leg, + /obj/item/mecha_parts/part/gygax_right_leg, + /obj/item/mecha_parts/part/mpgygax_armor, + /obj/item/circuitboard/mecha/gygax/peripherals, + /obj/item/circuitboard/mecha/gygax/main, + /obj/item/circuitboard/mecha/gygax/targeting + ) + crate_name = "NT-501p-MP Construction Kit" + faction = /datum/faction/nt + faction_locked = TRUE + /datum/supply_pack/mech/durand_parts name = "Durand construction kit" desc = "The kit to a bulky suit most frequently used by the CLIP Minutemen, older models tend to find themselves disassembled and sold off." @@ -215,11 +236,44 @@ Mech Equipment /datum/supply_pack/mech/equipment/ripley_upgrade name = "APLU upgrade kit" desc = "Contains an APLU MK II upgrade kit. The upgrade will replace the cockpit with a spaceworthy canopy, but the added weight makes it slower." - cost = 1500 + cost = 500 contains = list( /obj/item/mecha_parts/mecha_equipment/conversion_kit/ripley ) +/datum/supply_pack/mech/equipment/ripley_upgrade/clip + name = "CLIP Ripley MK-IV upgrade kit" + desc = "Contains a CLIP-custom APLU MK-IV upgrade kit. The upgrade will replace the cockpit with a lightweight spaceworthy canopy, and parts to overclock the leg servos. Maintains the speed of the MK-1, but consumes more power." + cost = 500 + contains = list( + /obj/item/mecha_parts/mecha_equipment/conversion_kit/ripley/clip + ) + faction = /datum/faction/clip + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/mech/equipment/paladin_upgrade + name = "CLIP Durand Paladin upgrade kit" + desc = "Contains a CLIP-custom conversion kit for a Durand combat exosuit, to convert it to the specialized Paladin anti-xenofauna exosuit. Features an electrical replusion field that repels any melee attacks, but loses the ability to defend against ranged projectiles." + cost = 500 + contains = list( + /obj/item/mecha_parts/mecha_equipment/conversion_kit/paladin + ) + faction = /datum/faction/clip + faction_discount = 0 + faction_locked = TRUE + +/datum/supply_pack/mech/equipment/basenji_upgrade + name = "IRMG Basenji upgrade kit" + desc = "Contains an IRMG-custom conversion kit for a Gygax combat exosuit, to convert it to the specialized Basenji breaching exosuit. The upgrade will overclock the Gygax's leg actuators, allowing for short ranged charges capable of smashing through most obstacles." + cost = 500 + contains = list( + /obj/item/mecha_parts/mecha_equipment/conversion_kit/inteq_gygax + ) + faction = /datum/faction/inteq + faction_discount = 0 + faction_locked = TRUE + /datum/supply_pack/mech/equipment/melee_armor_booster name = "Exosuit CCW armor kit" desc = "A \"close combat weaponry\" module designed to deflect melee attacks." diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi index 6d48367f2a3be05f745cce2dffe21efced6ae54d..cc5e5356177b665a8c718beafd3bf0b8b156aa82 100644 GIT binary patch literal 34241 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 U%bY9r5CVRr#N<8}i|G3OFP3Y*Q2+n{ literal 31441 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

?}eg7=E~T)4EWSH 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 diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi index d7f0f3e05487beaa68496e7dd3a8bdcbaba78297..a7e48d9e55927ec388689f90965b48cd74c93dd6 100644 GIT binary patch literal 19621 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 W`^@E|9{@d@WSkvgKQ%ZYQvU-eW*Q{` literal 19228 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 Cf{L*K diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 2993487cb85052c902dabb67201c647f64319ba5..9034f08512586fce9c07811c885de523e871c545 100644 GIT binary patch delta 86815 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 IMXSL72XhJBO8@`> delta 84904 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℞Y{d)oa)?v$45|AXtl{y8g>og^r*bX*f@3H@E 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

VMN~@3&Ms2 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 Zh=z<}Ym^M Date: Sun, 19 Jan 2025 16:20:40 -0600 Subject: [PATCH 106/118] Automatic changelog generation for PR #3918 [ci skip] --- html/changelogs/AutoChangeLog-pr-3918.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3918.yml diff --git a/html/changelogs/AutoChangeLog-pr-3918.yml b/html/changelogs/AutoChangeLog-pr-3918.yml new file mode 100644 index 000000000000..5f46880de0aa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3918.yml @@ -0,0 +1,7 @@ +author: Gristle, Rye-Rice +changes: + - {rscadd: MP Gygax} + - {rscadd: Mech conversion kits to cargo} + - {balance: MK-2 ripley upgrade now costs 500.} + - {bugfix: Mech charging sanity.} +delete-after: true From 369feaf7771fb8e52b9e4b1dae30fa2311e82c8c Mon Sep 17 00:00:00 2001 From: Gristlebee <56049844+Gristlebee@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:18:00 -0800 Subject: [PATCH 107/118] You can no longer gain deep-rooted traumas from failed brain surgery or natural damage. (#3984) ## About The Pull Request Title ## Why It's Good For The Game The surgery for curing deep rooted traumas is locked behind RND, which is basically non-existent these days, effectively making deep rooted traumas permanent. That honestly doesn't feel great. This makes brain damage a lot more manageable. ## Changelog :cl: balance: You can no longer gain deep-rooted traumas from failed brain surgery or natural damage. /:cl: --- code/modules/mob/living/brain/brain_item.dm | 17 ++++++++++------- code/modules/surgery/brain_surgery.dm | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 5fe96021461b..967efa40d0bb 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -349,14 +349,14 @@ return TRUE //Proc to use when directly adding a trauma to the brain, so extra args can be given -/obj/item/organ/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...) +/obj/item/organ/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE, ...) var/list/arguments = list() - if(args.len > 2) - arguments = args.Copy(3) - . = brain_gain_trauma(trauma, resilience, arguments) + if(args.len > 3) + arguments = args.Copy(4) + . = brain_gain_trauma(trauma, resilience, natural_gain, arguments) //Direct trauma gaining proc. Necessary to assign a trauma to its brain. Avoid using directly. -/obj/item/organ/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments) +/obj/item/organ/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments, natural_gain = FALSE) if(!can_gain_trauma(trauma, resilience)) return @@ -378,7 +378,10 @@ if(owner) actual_trauma.owner = owner actual_trauma.on_gain() - if(resilience) + if(natural_gain) + if(actual_trauma.resilience >= TRAUMA_RESILIENCE_LOBOTOMY) + actual_trauma.resilience = TRAUMA_RESILIENCE_SURGERY + else if(resilience) actual_trauma.resilience = resilience . = actual_trauma if(owner?.client) @@ -396,7 +399,7 @@ return var/trauma_type = pick(possible_traumas) - gain_trauma(trauma_type, resilience) + gain_trauma(trauma_type, resilience, natural_gain) //Cure a random trauma of a certain resilience level /obj/item/organ/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC) diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm index 0b1d8610889f..7544f683b74a 100644 --- a/code/modules/surgery/brain_surgery.dm +++ b/code/modules/surgery/brain_surgery.dm @@ -55,7 +55,7 @@ "[user] screws up, causing brain damage!", "[user] completes the surgery on [target]'s brain.") target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 60) - target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY) + target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY) else user.visible_message("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.", "You suddenly notice that the brain you were working on is not there anymore.") return FALSE From e06d09766d53093cb7a45369a0c6bb380fff8d06 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 17:28:44 -0600 Subject: [PATCH 108/118] Automatic changelog generation for PR #3984 [ci skip] --- html/changelogs/AutoChangeLog-pr-3984.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3984.yml diff --git a/html/changelogs/AutoChangeLog-pr-3984.yml b/html/changelogs/AutoChangeLog-pr-3984.yml new file mode 100644 index 000000000000..368d8354b6e7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3984.yml @@ -0,0 +1,5 @@ +author: Gristlebee +changes: + - {balance: You can no longer gain deep-rooted traumas from failed brain surgery + or natural damage.} +delete-after: true From f7dfacc51ca95e1dd4a69f1a6fc6b90d8069db70 Mon Sep 17 00:00:00 2001 From: firebudgy <153147550+firebudgy@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:18:16 -0800 Subject: [PATCH 109/118] Cargo Implants - Basic Cybernetics (#4004) ## About The Pull Request After seeing a comment (https://github.com/shiptest-ss13/Shiptest/pull/4000#issuecomment-2588818124) about how toolsets should be in cargo, I did exactly that. This adds breathing tubes, the HUDs, and the toolsets to cargo as well as a crate of all 4 cybernetic organs for use with organ failure. Most are priced keeping in mind the requirement for a surgical kit to install them in the first place. ## Why It's Good For The Game Adds an avenue of purchases from cargo to lean into the transhumanism aspect, to be further expanded on with an eventual cybernetics rework. Since R&D has been all but removed these are rarely if ever seen and it properly makes them accessible. You still need the proper supplies to install them however, making it not a straight upgrade. ## Changelog :cl: add: Various implants to cargo /:cl: --------- Signed-off-by: firebudgy <153147550+firebudgy@users.noreply.github.com> Co-authored-by: Erika Fox <94164348+Erikafox@users.noreply.github.com> Co-authored-by: thgvr <81882910+thgvr@users.noreply.github.com> --- code/modules/cargo/packs/cybernetics.dm | 79 +++++++++++++++++++++++++ shiptest.dme | 1 + 2 files changed, 80 insertions(+) create mode 100644 code/modules/cargo/packs/cybernetics.dm diff --git a/code/modules/cargo/packs/cybernetics.dm b/code/modules/cargo/packs/cybernetics.dm new file mode 100644 index 000000000000..37683060f8cc --- /dev/null +++ b/code/modules/cargo/packs/cybernetics.dm @@ -0,0 +1,79 @@ +/datum/supply_pack/cybernetic + group = "Cybernetics" + crate_type = /obj/structure/closet/crate/medical + + +// CYBERNETICS + +/datum/supply_pack/cybernetic/cyberarm_surgset + name = "Integrated Surgical Toolset Kit" + desc = "The latest in advanced medical cybernetics, the Surgical Toolset can be installed in the arms and act as a concealed kit to render surgical aid at striking efficiency." + cost = 4500 + contains = list(/obj/item/organ/cyberimp/arm/surgery) + crate_name = "implant crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 + +/datum/supply_pack/cybernetic/cyberarm_toolset + name = "Integrated Engineering Toolset Kit" + desc = "A recent innovation in engineering labor, this functions as a concealed toolkit for use in all manner of engineering operations. It is installed in the arms." + cost = 2000 + contains = list(/obj/item/organ/cyberimp/arm/toolset) + crate_name = "implant crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 + +/datum/supply_pack/cybernetic/cyberhud_sec + name = "Integrated Security HUD" + desc = "A HUD over the user's eyes that allows one to view security and IFF data on the field. Reports of recalls and blindness are merely disinformation by competitors." + cost = 2000 + contains = list(/obj/item/organ/cyberimp/eyes/hud/security) + crate_name = "implant crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 + +/datum/supply_pack/cybernetic/cyberhud_med + name = "Integrated Medical Analysis HUD" + desc = "A HUD over the user's eyes that allows one to view medical and heart-rate data on the field. Reports of recalls and blindness are merely disinformation by competitors." + cost = 2000 + contains = list(/obj/item/organ/cyberimp/eyes/hud/medical) + crate_name = "implant crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 + +/datum/supply_pack/cybernetic/cyberhud_diagnostic + name = "Integrated Exosuit Diagnostic HUD" + desc = "A HUD over the user's eyes that allows one to view an uplink of Powered Exoskeleton information. Reports of recalls and blindness are merely disinformation by competitors." + cost = 750 + contains = list(/obj/item/organ/cyberimp/eyes/hud/diagnostic) + crate_name = "implant crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 + +/datum/supply_pack/cybernetic/cyber_breathing + name = "Integrated Breathing Tube" + desc = "Commonly used for those with medical conditions relating to breathing, this implant provides a port to attach portable oxygen canisters to that pumps air directly into your lungs. Keep port sealed when not in use." + cost = 1000 + contains = list(/obj/item/organ/cyberimp/mouth/breathing_tube) + crate_name = "implant crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 + +/datum/supply_pack/cybernetic/cyberorgans + name = "Cybernetic Organs Replacement Pack" + desc = "Precision-manufactured replacement organs for those suffering catastrophic organ failure. Keep crate sealed until use, contaminants may cause rejection." + cost = 2000 + contains = list(/obj/item/organ/lungs/cybernetic/tier2, + /obj/item/organ/stomach/cybernetic/tier2, + /obj/item/organ/liver/cybernetic/tier2, + /obj/item/organ/heart/cybernetic/tier2) + crate_name = "organs crate" + crate_type = /obj/structure/closet/crate/freezer + faction = /datum/faction/syndicate/cybersun + faction_discount = 50 diff --git a/shiptest.dme b/shiptest.dme index c55f536641d8..ef4500858dca 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1967,6 +1967,7 @@ #include "code\modules\cargo\packs\chemistry.dm" #include "code\modules\cargo\packs\civilian.dm" #include "code\modules\cargo\packs\costumes_toys.dm" +#include "code\modules\cargo\packs\cybernetics.dm" #include "code\modules\cargo\packs\emergency.dm" #include "code\modules\cargo\packs\exploration.dm" #include "code\modules\cargo\packs\fishing.dm" From 53c6a1ea6d21843fb590498ded5ea497e95f067a Mon Sep 17 00:00:00 2001 From: Ical <86125936+Ical92@users.noreply.github.com> Date: Sun, 19 Jan 2025 18:18:41 -0500 Subject: [PATCH 110/118] Crate shelvers no longer persist after attempting to spawn (#4035) ## About The Pull Request `mapping_helpers/crate_shelve` now qdels after attempting to shelve a crate, meaning observers won't see leftover helpers. ## Why It's Good For The Game Don't see mapping helpers as a ghost ## Changelog :cl: fix: the outpost's crate shelvers have been trained to leave no evidence /:cl: --- code/modules/mapping/mapping_helpers.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 4912ccd0dba2..27fb53a7624d 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -503,6 +503,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) log_mapping("[src] failed to find a crate at [AREACOORD(src)]") else shelve(crate) + qdel(src) /obj/effect/mapping_helpers/crate_shelve/proc/shelve(crate) var/obj/structure/crate_shelf/shelf = locate(/obj/structure/crate_shelf) in range(range, crate) From 4c83b172423089b92fe9d40b82d94ba405ebae7a Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 17:42:32 -0600 Subject: [PATCH 111/118] Automatic changelog generation for PR #4035 [ci skip] --- html/changelogs/AutoChangeLog-pr-4035.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4035.yml diff --git a/html/changelogs/AutoChangeLog-pr-4035.yml b/html/changelogs/AutoChangeLog-pr-4035.yml new file mode 100644 index 000000000000..245d6377d797 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4035.yml @@ -0,0 +1,4 @@ +author: Ical92 +changes: + - {bugfix: the outpost's crate shelvers have been trained to leave no evidence} +delete-after: true From 44c6c392b1443e658cef75bcbde8ccd1b6638af6 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 20 Jan 2025 01:02:34 +0000 Subject: [PATCH 112/118] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3918.yml | 7 ------ html/changelogs/AutoChangeLog-pr-3944.yml | 6 ----- html/changelogs/AutoChangeLog-pr-3984.yml | 5 ---- html/changelogs/AutoChangeLog-pr-3988.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4002.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4016.yml | 6 ----- html/changelogs/AutoChangeLog-pr-4019.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4035.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4036.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4037.yml | 4 ---- html/changelogs/archive/2025-01.yml | 29 +++++++++++++++++++++++ 11 files changed, 29 insertions(+), 51 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3918.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3944.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3984.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3988.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4002.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4016.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4019.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4035.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4036.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4037.yml diff --git a/html/changelogs/AutoChangeLog-pr-3918.yml b/html/changelogs/AutoChangeLog-pr-3918.yml deleted file mode 100644 index 5f46880de0aa..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3918.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Gristle, Rye-Rice -changes: - - {rscadd: MP Gygax} - - {rscadd: Mech conversion kits to cargo} - - {balance: MK-2 ripley upgrade now costs 500.} - - {bugfix: Mech charging sanity.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3944.yml b/html/changelogs/AutoChangeLog-pr-3944.yml deleted file mode 100644 index a084ea8bda58..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3944.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: rye-rice -changes: - - {rscadd: Resprites everything eoehoma related!} - - {rscadd: E-11 is more accurate. This isn't saying much.} - - {bugfix: E-60's charge overlay should now work} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3984.yml b/html/changelogs/AutoChangeLog-pr-3984.yml deleted file mode 100644 index 368d8354b6e7..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3984.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Gristlebee -changes: - - {balance: You can no longer gain deep-rooted traumas from failed brain surgery - or natural damage.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3988.yml b/html/changelogs/AutoChangeLog-pr-3988.yml deleted file mode 100644 index d3e8a31d338d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3988.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Gristlebee -changes: - - {rscadd: You can use a multitool for mechanical brain surgery on the fix brain - step.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4002.yml b/html/changelogs/AutoChangeLog-pr-4002.yml deleted file mode 100644 index 9886d37a65e2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4002.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Ical92 -changes: - - {bugfix: gathering no longer has infinite reach} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4016.yml b/html/changelogs/AutoChangeLog-pr-4016.yml deleted file mode 100644 index 60f3bd339ac6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4016.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: generalthrax -changes: - - {rscadd: Glass bottles of the large and small variety added to the autolathe} - - {rscadd: Distiller added to the black market} - - {balance: Beekeeping crates pricing reduced} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4019.yml b/html/changelogs/AutoChangeLog-pr-4019.yml deleted file mode 100644 index cf0abcdc26fe..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4019.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: generalthrax -changes: - - {bugfix: Fixes plating under some catwalks that aren't supposed to be there on - the Mudskipper} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4035.yml b/html/changelogs/AutoChangeLog-pr-4035.yml deleted file mode 100644 index 245d6377d797..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4035.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Ical92 -changes: - - {bugfix: the outpost's crate shelvers have been trained to leave no evidence} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4036.yml b/html/changelogs/AutoChangeLog-pr-4036.yml deleted file mode 100644 index 1ed66d369091..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4036.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: firebudgy -changes: - - {rscdel: RnD retrieval missions} - - {balance: 'Dogtag missions take any kind of dogtag, both Frontiersman and Ramzi'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-4037.yml b/html/changelogs/AutoChangeLog-pr-4037.yml deleted file mode 100644 index 9a858987a24f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4037.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Thera-Pissed -changes: - - {rscadd: Replaced Jump To Mob on ghost HUD with a respawn option.} -delete-after: true diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index 905111cda91e..695358a3bfea 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -157,3 +157,32 @@ and Firestorm Pan Magazine to factional cargo. - rscadd: N+S has deployed a new batch of Shaft Miners to Harrier-class vessels. - rscdel: Janitors have been reassigned from the Harrier for retraining. +2025-01-20: + Gristle, Rye-Rice: + - rscadd: MP Gygax + - rscadd: Mech conversion kits to cargo + - balance: MK-2 ripley upgrade now costs 500. + - bugfix: Mech charging sanity. + Gristlebee: + - rscadd: You can use a multitool for mechanical brain surgery on the fix brain + step. + - balance: You can no longer gain deep-rooted traumas from failed brain surgery + or natural damage. + Ical92: + - bugfix: gathering no longer has infinite reach + - bugfix: the outpost's crate shelvers have been trained to leave no evidence + Thera-Pissed: + - rscadd: Replaced Jump To Mob on ghost HUD with a respawn option. + firebudgy: + - rscdel: RnD retrieval missions + - balance: Dogtag missions take any kind of dogtag, both Frontiersman and Ramzi + generalthrax: + - rscadd: Glass bottles of the large and small variety added to the autolathe + - rscadd: Distiller added to the black market + - balance: Beekeeping crates pricing reduced + - bugfix: Fixes plating under some catwalks that aren't supposed to be there on + the Mudskipper + rye-rice: + - rscadd: Resprites everything eoehoma related! + - rscadd: E-11 is more accurate. This isn't saying much. + - bugfix: E-60's charge overlay should now work From a88e2f637c830dde39ddf841ffa7e0d5225b320f Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Sun, 19 Jan 2025 23:46:11 -0500 Subject: [PATCH 113/118] Adds an electric welding tool to Chief Engineer toolbelts and the ERT utility belt (#3999) ## About The Pull Request This PR adds an electric welding tool to chief engineering belts and ERT utility belts. ## Why It's Good For The Game The chief engineer's belt is currently missing a welding tool, and I felt that it may make sense to use an electric welder here for that. ## Changelog :cl: add: Added electrical welding tools to the populate lists for CE belts and ERT utility belts /:cl: --- code/game/objects/items/storage/belt.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 966fc8899276..de4dcb5684cc 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -94,11 +94,11 @@ /obj/item/storage/belt/utility/chief/full/PopulateContents() new /obj/item/screwdriver/power(src) new /obj/item/crowbar/power(src) + new /obj/item/weldingtool/electric(src) new /obj/item/multitool(src) new /obj/item/stack/cable_coil(src,MAXCOIL,pick("red","yellow","orange")) new /obj/item/extinguisher/mini(src) new /obj/item/analyzer(src) - //much roomier now that we've managed to remove two tools /obj/item/storage/belt/utility/full/PopulateContents() new /obj/item/screwdriver(src) @@ -149,6 +149,7 @@ /obj/item/storage/belt/utility/full/ert/PopulateContents() new /obj/item/screwdriver/power(src) new /obj/item/crowbar/power(src) + new /obj/item/weldingtool/electric(src) new /obj/item/multitool(src) new /obj/item/construction/rcd/combat(src) new /obj/item/extinguisher/mini(src) From 18c692298aee602834a750e15752782be55ede5e Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Erikafox@users.noreply.github.com> Date: Sun, 19 Jan 2025 23:46:38 -0500 Subject: [PATCH 114/118] Deconstruct Act Respects Invulnerability (#4008) https://github.com/user-attachments/assets/8457df17-6084-4cea-a59f-7490e7e7f769 :cl: fix: you can no longer grind down the outpost /:cl: --------- Signed-off-by: Erika Fox <94164348+Erikafox@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/game/atoms.dm | 2 ++ code/game/machinery/constructable_frame.dm | 2 ++ code/game/machinery/deployable.dm | 2 ++ code/game/machinery/doors/airlock.dm | 2 ++ code/game/objects/objs.dm | 6 ++++++ code/game/objects/structures/door_assembly.dm | 2 ++ code/game/objects/structures/dresser.dm | 2 ++ code/game/objects/structures/girders.dm | 2 ++ code/game/objects/structures/grille.dm | 2 ++ code/game/objects/structures/lattice.dm | 2 ++ code/game/objects/structures/platforms.dm | 2 ++ code/game/objects/structures/railings.dm | 2 ++ code/game/objects/structures/salvaging.dm | 2 ++ code/game/objects/structures/tables_racks.dm | 2 ++ code/game/objects/structures/window.dm | 2 ++ code/game/turfs/closed/_closed.dm | 3 +++ code/game/turfs/closed/indestructible.dm | 1 + 17 files changed, 38 insertions(+) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6f1a0069e5c9..46b08169f829 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1310,6 +1310,8 @@ ///Deconstruct act /atom/proc/deconstruct_act(mob/living/user, obj/item/I) + if(flags_1 & NODECONSTRUCT_1) + return TRUE return SEND_SIGNAL(src, COMSIG_ATOM_DECONSTRUCT_ACT, user, I) ///Generate a tag for this atom diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a62780aad05a..d41117bdbb62 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -23,6 +23,8 @@ /obj/structure/frame/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if(I.use_tool(src, user, 3 SECONDS, volume=0)) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 3dedf5887d0c..24c417793668 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -81,6 +81,8 @@ /obj/structure/barricade/wooden/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if (I.use_tool(src, user, 2 SECONDS, volume=0)) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 2239212c7440..7e157953e850 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1234,6 +1234,8 @@ /obj/machinery/door/airlock/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE var/decon_time = 5 SECONDS diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 0391de85eb33..bbcaa94f0867 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -387,6 +387,12 @@ return FALSE return TRUE +/obj/deconstruct_act(mob/living/user, obj/item/I) + if(resistance_flags & INDESTRUCTIBLE) + to_chat(user, span_warning("[src] cannot be deconstructed!")) + return FALSE + return ..() + /obj/analyzer_act(mob/living/user, obj/item/I) if(atmosanalyzer_scan(user, src)) return TRUE diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 675a135c493b..bf5ea3b38913 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -347,6 +347,8 @@ /obj/structure/door_assembly/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if (I.use_tool(src, user, 3 SECONDS, volume=100)) diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 61944f81198c..5cc59d28ead5 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -38,6 +38,8 @@ /obj/structure/dresser/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE to_chat(user, span_notice("You begin to disassemble [src].")) if(I.use_tool(src, user, 10, volume=50)) to_chat(user, span_notice("You successfully deconstruct [src].")) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 5f35e69d098e..d30f28801f76 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -214,6 +214,8 @@ /obj/structure/girder/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if(I.use_tool(src, user, 3 SECONDS, volume=0)) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index bec5e5bf452b..10a4413f442f 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -233,6 +233,8 @@ /obj/structure/grille/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if (I.use_tool(src, user, 1 SECONDS, volume=100)) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 9aaefb8c014e..7755f94798a4 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -42,6 +42,8 @@ /obj/structure/lattice/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if(I.use_tool(src, user, 1 SECONDS, volume=0)) diff --git a/code/game/objects/structures/platforms.dm b/code/game/objects/structures/platforms.dm index a6431e8b7630..3d668f666c16 100644 --- a/code/game/objects/structures/platforms.dm +++ b/code/game/objects/structures/platforms.dm @@ -127,6 +127,8 @@ /obj/structure/platform/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if(I.use_tool(src, user, 3 SECONDS, volume=0)) diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 3217f8274b32..b4bf99f17469 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -73,6 +73,8 @@ /obj/structure/railing/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if (I.use_tool(src, user, 3 SECONDS, volume=0)) diff --git a/code/game/objects/structures/salvaging.dm b/code/game/objects/structures/salvaging.dm index ccb76bd81c4a..e8c98cff4694 100644 --- a/code/game/objects/structures/salvaging.dm +++ b/code/game/objects/structures/salvaging.dm @@ -36,6 +36,8 @@ /obj/structure/salvageable/deconstruct_act(mob/living/user, obj/item/tool) . = ..() + if(.) + return FALSE user.visible_message("[user] starts slicing [src].", \ "You start salvaging anything useful from [src]...") if(tool.use_tool(src, user, 6 SECONDS)) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 6f1e59ebad5e..7d670cfc3cd4 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -229,6 +229,8 @@ /obj/structure/table/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if (I.use_tool(src, user, 1 SECONDS, volume=0)) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3f4ffc747ca9..35cc9fba1aae 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -296,6 +296,8 @@ /obj/structure/window/deconstruct_act(mob/living/user, obj/item/I) . = ..() + if(.) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE if (I.use_tool(src, user, decon_time, volume=100)) diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index ea0c0d4ed4b1..a76d3715e414 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -271,6 +271,9 @@ /turf/closed/deconstruct_act(mob/living/user, obj/item/I) var/act_duration = breakdown_duration + if(breakdown_duration == -1) + to_chat(user, span_warning("[src] cannot be deconstructed!")) + return FALSE if(!I.tool_start_check(user, amount=0)) return FALSE to_chat(user, "You begin slicing through the outer plating...") diff --git a/code/game/turfs/closed/indestructible.dm b/code/game/turfs/closed/indestructible.dm index 9e55858970d2..3363424db56d 100644 --- a/code/game/turfs/closed/indestructible.dm +++ b/code/game/turfs/closed/indestructible.dm @@ -4,6 +4,7 @@ icon = 'icons/turf/walls.dmi' explosion_block = 50 max_integrity = 10000000 + breakdown_duration = -1 /turf/closed/indestructible/TerraformTurf(path, new_baseturf, flags, defer_change = FALSE, ignore_air = FALSE) return From 9d2c36a8aa5fea4995d1765bdedb120327713a61 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 22:57:14 -0600 Subject: [PATCH 115/118] Automatic changelog generation for PR #4008 [ci skip] --- html/changelogs/AutoChangeLog-pr-4008.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4008.yml diff --git a/html/changelogs/AutoChangeLog-pr-4008.yml b/html/changelogs/AutoChangeLog-pr-4008.yml new file mode 100644 index 000000000000..e5ff599e7a7c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4008.yml @@ -0,0 +1,4 @@ +author: Erikafox +changes: + - {bugfix: you can no longer grind down the outpost} +delete-after: true From 5e573e2db25402aa761b37992c4c7e2c90760a40 Mon Sep 17 00:00:00 2001 From: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Date: Sun, 19 Jan 2025 22:47:44 -0600 Subject: [PATCH 116/118] Port: Datumized AI and JPS (#3950) ## About The Pull Request https://github.com/tgstation/tgstation/pull/55238 https://github.com/tgstation/tgstation/pull/56780 https://github.com/tgstation/tgstation/pull/55515 https://github.com/tgstation/tgstation/pull/57111 https://github.com/tgstation/tgstation/pull/57186 https://github.com/tgstation/tgstation/pull/58631 https://github.com/tgstation/tgstation/pull/60249 minor backend stuff from https://github.com/tgstation/tgstation/pull/55778 https://github.com/tgstation/tgstation/pull/55728 ## Why It's Good For The Game prereqs for basic mobs. performance! advanced ai! ## Changelog :cl: add: monkey smart c: add: dog smart c: add: jps, a cheap pathfinding /:cl: --- code/__DEFINES/DNA.dm | 1 + code/__DEFINES/ai/ai.dm | 81 ++++ code/__DEFINES/dcs/signals/signals.dm | 12 + code/__DEFINES/monkeys.dm | 64 +-- code/__DEFINES/subsystems.dm | 4 + code/__DEFINES/traits.dm | 2 + code/__DEFINES/vv.dm | 1 + code/__HELPERS/AStar.dm | 212 --------- code/__HELPERS/heap.dm | 50 +- code/__HELPERS/path.dm | 347 ++++++++++++++ code/__HELPERS/unsorted.dm | 2 + code/_globalvars/lists/mobs.dm | 6 + code/_onclick/click.dm | 5 +- code/controllers/subsystem/ai_controllers.dm | 33 ++ code/controllers/subsystem/pathfinder.dm | 2 - .../subsystem/processing/ai_behaviors.dm | 20 + .../subsystem/processing/ai_movement.dm | 21 + .../subsystem/processing/processing.dm | 6 +- code/controllers/subsystem/throwing.dm | 3 + code/datums/ai/README.md | 21 + code/datums/ai/_ai_behavoir.dm | 25 + code/datums/ai/_ai_controller.dm | 254 +++++++++++ code/datums/ai/_ai_planning_subtree.dm | 6 + code/datums/ai/dog/dog_behaviors.dm | 208 +++++++++ code/datums/ai/dog/dog_controller.dm | 271 +++++++++++ code/datums/ai/dog/dog_subtrees.dm | 40 ++ code/datums/ai/generic_actions.dm | 111 +++++ code/datums/ai/monkey/monkey_behaviors.dm | 279 ++++++++++++ code/datums/ai/monkey/monkey_controller.dm | 255 +++++++++++ code/datums/ai/monkey/monkey_subtrees.dm | 84 ++++ code/datums/ai/movement/_ai_movement.dm | 19 + code/datums/ai/movement/ai_movement_dumb.dm | 27 ++ code/datums/ai/movement/ai_movement_jps.dm | 61 +++ code/datums/components/spinny.dm | 33 ++ code/datums/mutations/body.dm | 4 +- code/game/atoms.dm | 25 + .../machinery/porta_turret/portable_turret.dm | 3 - code/game/objects/items.dm | 2 +- code/game/objects/items/handcuffs.dm | 8 +- code/game/objects/objs.dm | 19 +- code/game/objects/structures/girders.dm | 7 +- code/game/objects/structures/grille.dm | 7 +- code/game/objects/structures/window.dm | 2 +- code/game/turfs/turf.dm | 20 + .../changeling/powers/tiny_prick.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 1 + .../mob/living/carbon/carbon_defense.dm | 3 + code/modules/mob/living/carbon/emote.dm | 17 +- .../mob/living/carbon/human/examine.dm | 3 + code/modules/mob/living/carbon/human/human.dm | 3 + .../mob/living/carbon/monkey/combat.dm | 426 ------------------ code/modules/mob/living/carbon/monkey/life.dm | 28 -- .../mob/living/carbon/monkey/monkey.dm | 4 +- code/modules/mob/living/living.dm | 2 +- .../mob/living/simple_animal/bot/bot.dm | 12 +- .../mob/living/simple_animal/bot/cleanbot.dm | 6 +- .../mob/living/simple_animal/bot/firebot.dm | 2 +- .../mob/living/simple_animal/bot/floorbot.dm | 4 +- .../mob/living/simple_animal/bot/medbot.dm | 4 +- .../mob/living/simple_animal/bot/mulebot.dm | 2 +- .../mob/living/simple_animal/friendly/dog.dm | 78 +--- .../mob/living/simple_animal/parrot.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 3 +- code/modules/mob/transform_procs.dm | 9 +- code/modules/movespeed/_movespeed_modifier.dm | 1 + .../reagents/reagent_containers/syringes.dm | 6 +- shiptest.dme | 21 +- sound/creatures/monkey/monkey_screech_1.ogg | Bin 0 -> 15300 bytes sound/creatures/monkey/monkey_screech_2.ogg | Bin 0 -> 15649 bytes sound/creatures/monkey/monkey_screech_3.ogg | Bin 0 -> 17832 bytes sound/creatures/monkey/monkey_screech_4.ogg | Bin 0 -> 16704 bytes sound/creatures/monkey/monkey_screech_5.ogg | Bin 0 -> 20239 bytes sound/creatures/monkey/monkey_screech_6.ogg | Bin 0 -> 19189 bytes sound/creatures/monkey/monkey_screech_7.ogg | Bin 0 -> 18851 bytes 74 files changed, 2466 insertions(+), 838 deletions(-) create mode 100644 code/__DEFINES/ai/ai.dm delete mode 100644 code/__HELPERS/AStar.dm create mode 100644 code/__HELPERS/path.dm create mode 100644 code/controllers/subsystem/ai_controllers.dm create mode 100644 code/controllers/subsystem/processing/ai_behaviors.dm create mode 100644 code/controllers/subsystem/processing/ai_movement.dm create mode 100644 code/datums/ai/README.md create mode 100644 code/datums/ai/_ai_behavoir.dm create mode 100644 code/datums/ai/_ai_controller.dm create mode 100644 code/datums/ai/_ai_planning_subtree.dm create mode 100644 code/datums/ai/dog/dog_behaviors.dm create mode 100644 code/datums/ai/dog/dog_controller.dm create mode 100644 code/datums/ai/dog/dog_subtrees.dm create mode 100644 code/datums/ai/generic_actions.dm create mode 100644 code/datums/ai/monkey/monkey_behaviors.dm create mode 100644 code/datums/ai/monkey/monkey_controller.dm create mode 100644 code/datums/ai/monkey/monkey_subtrees.dm create mode 100644 code/datums/ai/movement/_ai_movement.dm create mode 100644 code/datums/ai/movement/ai_movement_dumb.dm create mode 100644 code/datums/ai/movement/ai_movement_jps.dm create mode 100644 code/datums/components/spinny.dm delete mode 100644 code/modules/mob/living/carbon/monkey/combat.dm create mode 100644 sound/creatures/monkey/monkey_screech_1.ogg create mode 100644 sound/creatures/monkey/monkey_screech_2.ogg create mode 100644 sound/creatures/monkey/monkey_screech_3.ogg create mode 100644 sound/creatures/monkey/monkey_screech_4.ogg create mode 100644 sound/creatures/monkey/monkey_screech_5.ogg create mode 100644 sound/creatures/monkey/monkey_screech_6.ogg create mode 100644 sound/creatures/monkey/monkey_screech_7.ogg diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 1d08e1ab4868..da2563e25464 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -99,6 +99,7 @@ #define TR_KEEPORGANS (1<<8) #define TR_KEEPSTUNS (1<<9) #define TR_KEEPREAGENTS (1<<10) +#define TR_KEEPAI (1<<11) //species traits for mutantraces #define MUTCOLORS 1 diff --git a/code/__DEFINES/ai/ai.dm b/code/__DEFINES/ai/ai.dm new file mode 100644 index 000000000000..4483119527dd --- /dev/null +++ b/code/__DEFINES/ai/ai.dm @@ -0,0 +1,81 @@ +#define GET_AI_BEHAVIOR(behavior_type) SSai_behaviors.ai_behaviors[behavior_type] +#define HAS_AI_CONTROLLER_TYPE(thing, type) istype(thing?.ai_controller, type) + +#define AI_STATUS_ON 1 +#define AI_STATUS_OFF 2 + + +///Monkey checks +#define SHOULD_RESIST(source) (source.on_fire || source.buckled || HAS_TRAIT(source, TRAIT_RESTRAINED) || (source.pulledby && source.pulledby.grab_state > GRAB_PASSIVE)) +#define IS_DEAD_OR_INCAP(source) (HAS_TRAIT(source, TRAIT_INCAPACITATED) || HAS_TRAIT(source, TRAIT_HANDS_BLOCKED) || IS_IN_STASIS(source)) + +///For JPS pathing, the maximum length of a path we'll try to generate. Should be modularized depending on what we're doing later on +#define AI_MAX_PATH_LENGTH 30 // 30 is possibly overkill since by default we lose interest after 14 tiles of distance, but this gives wiggle room for weaving around obstacles + +///Cooldown on planning if planning failed last time +#define AI_FAILED_PLANNING_COOLDOWN 1.5 SECONDS + +///Flags for ai_behavior new() +#define AI_CONTROLLER_INCOMPATIBLE (1<<0) + +///Does this task require movement from the AI before it can be performed? +#define AI_BEHAVIOR_REQUIRE_MOVEMENT (1<<0) +///Does this task let you perform the action while you move closer? (Things like moving and shooting) +#define AI_BEHAVIOR_MOVE_AND_PERFORM (1<<1) + +///Subtree defines + +///This subtree should cancel any further planning, (Including from other subtrees) +#define SUBTREE_RETURN_FINISH_PLANNING 1 + +///Monkey AI controller blackboard keys + +#define BB_MONKEY_AGRESSIVE "BB_monkey_agressive" +#define BB_MONKEY_GUN_NEURONS_ACTIVATED "BB_monkey_gun_aware" +#define BB_MONKEY_GUN_WORKED "BB_monkey_gun_worked" +#define BB_MONKEY_BEST_FORCE_FOUND "BB_monkey_bestforcefound" +#define BB_MONKEY_ENEMIES "BB_monkey_enemies" +#define BB_MONKEY_BLACKLISTITEMS "BB_monkey_blacklistitems" +#define BB_MONKEY_PICKUPTARGET "BB_monkey_pickuptarget" +#define BB_MONKEY_PICKPOCKETING "BB_monkey_pickpocketing" +#define BB_MONKEY_CURRENT_ATTACK_TARGET "BB_monkey_current_attack_target" +#define BB_MONKEY_TARGET_DISPOSAL "BB_monkey_target_disposal" +#define BB_MONKEY_DISPOSING "BB_monkey_disposing" +#define BB_MONKEY_RECRUIT_COOLDOWN "BB_monkey_recruit_cooldown" +#define BB_MONKEY_NEXT_HUNGRY "BB_monkey_next_hungry" + +///Dog AI controller blackboard keys + +#define BB_SIMPLE_CARRY_ITEM "BB_SIMPLE_CARRY_ITEM" +#define BB_FETCH_TARGET "BB_FETCH_TARGET" +#define BB_FETCH_IGNORE_LIST "BB_FETCH_IGNORE_LISTlist" +#define BB_FETCH_DELIVER_TO "BB_FETCH_DELIVER_TO" +#define BB_DOG_FRIENDS "BB_DOG_FRIENDS" +#define BB_DOG_ORDER_MODE "BB_DOG_ORDER_MODE" +#define BB_DOG_PLAYING_DEAD "BB_DOG_PLAYING_DEAD" +#define BB_DOG_HARASS_TARGET "BB_DOG_HARASS_TARGET" + +/// Basically, what is our vision/hearing range for picking up on things to fetch/ +#define AI_DOG_VISION_RANGE 10 +/// What are the odds someone petting us will become our friend? +#define AI_DOG_PET_FRIEND_PROB 15 +/// After this long without having fetched something, we clear our ignore list +#define AI_FETCH_IGNORE_DURATION 30 SECONDS +/// After being ordered to heel, we spend this long chilling out +#define AI_DOG_HEEL_DURATION 20 SECONDS +/// After either being given a verbal order or a pointing order, ignore further of each for this duration +#define AI_DOG_COMMAND_COOLDOWN 2 SECONDS + +// dog command modes (what pointing at something/someone does depending on the last order the dog heard) +/// Don't do anything (will still react to stuff around them though) +#define DOG_COMMAND_NONE 0 +/// Will try to pick up and bring back whatever you point to +#define DOG_COMMAND_FETCH 1 +/// Will get within a few tiles of whatever you point at and continually growl/bark. If the target is a living mob who gets too close, the dog will attack them with bites +#define DOG_COMMAND_ATTACK 2 + +//enumerators for parsing dog command speech +#define COMMAND_HEEL "Heel" +#define COMMAND_FETCH "Fetch" +#define COMMAND_ATTACK "Attack" +#define COMMAND_DIE "Play Dead" diff --git a/code/__DEFINES/dcs/signals/signals.dm b/code/__DEFINES/dcs/signals/signals.dm index 2cd723567e17..eb5a0e59a7fe 100644 --- a/code/__DEFINES/dcs/signals/signals.dm +++ b/code/__DEFINES/dcs/signals/signals.dm @@ -26,6 +26,8 @@ #define COMSIG_GLOB_BUTTON_PRESSED "!button_pressed" /// a client (re)connected, after all /client/New() checks have passed : (client/connected_client) #define COMSIG_GLOB_CLIENT_CONNECT "!client_connect" +/// a person somewhere has thrown something : (mob/living/carbon/carbon_thrower, target) +#define COMSIG_GLOB_CARBON_THROW_THING "!throw_thing" // signals from globally accessible objects /// from SSsun when the sun changes position : (azimuth) @@ -215,6 +217,9 @@ ///from base of atom/set_opacity(): (new_opacity) #define COMSIG_ATOM_SET_OPACITY "atom_set_opacity" +///from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) +#define COMSIG_ATOM_HITBY "atom_hitby" + /// from base of /atom/movable/proc/on_virtual_z_change(): (new_virtual_z, old_virtual_z) #define COMSIG_ATOM_VIRTUAL_Z_CHANGE "atom_virtual_z_change" @@ -261,6 +266,7 @@ #define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/AltClick(): (/mob) #define COMSIG_CLICK_ALT "alt_click" + #define COMPONENT_CANCEL_CLICK_ALT (1<<0) //from base of atom/CtrlShiftClick(/mob) #define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" ///from base of atom/CtrlShiftRightClick(/mob) @@ -320,6 +326,8 @@ #define COMPONENT_CANCEL_THROW (1<<0) ///from base of atom/movable/throw_at(): (datum/thrownthing, spin) #define COMSIG_MOVABLE_POST_THROW "movable_post_throw" +///from base of datum/thrownthing/finalize(): (obj/thrown_object, datum/thrownthing) used for when a throw is finished +#define COMSIG_MOVABLE_THROW_LANDED "movable_throw_landed" ///from base of atom/movable/onTransitZ(): (old_z, new_z) #define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" ///called when the movable is placed in an unaccessible area, used for shiploving: () @@ -425,6 +433,8 @@ #define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted" ///from base of mob/RangedAttack(): (atom/A, params) #define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" +///From base of mob/update_movespeed():area +#define COMSIG_MOB_MOVESPEED_UPDATED "mob_update_movespeed" ///from base of /mob/throw_item(): (atom/target) #define COMSIG_MOB_THROW "mob_throw" ///from base of /mob/verb/examinate(): (atom/target) @@ -487,6 +497,8 @@ #define COMSIG_LIVING_DROP_LIMB "living_drop_limb" ///from base of mob/living/set_buckled(): (new_buckled) #define COMSIG_LIVING_SET_BUCKLED "living_set_buckled" +///From post-can inject check of syringe after attack (mob/user) +#define COMSIG_LIVING_TRY_SYRINGE "living_try_syringe" ///sent from borg recharge stations: (amount, repairs) #define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" diff --git a/code/__DEFINES/monkeys.dm b/code/__DEFINES/monkeys.dm index 8cc0bc11c0a0..dbc2ffb24f4c 100644 --- a/code/__DEFINES/monkeys.dm +++ b/code/__DEFINES/monkeys.dm @@ -1,37 +1,41 @@ //Monkey defines, placed here so they can be read by other things! -//Mode defines -#define MONKEY_IDLE 0 // idle -#define MONKEY_HUNT 1 // found target, hunting -#define MONKEY_FLEE 2 // free from enemies -#define MONKEY_DISPOSE 3 // dump body in disposals - -#define MONKEY_FLEE_HEALTH 50 // below this health value the monkey starts to flee from enemies -#define MONKEY_ENEMY_VISION 9 // how close an enemy must be to trigger aggression -#define MONKEY_FLEE_VISION 4 // how close an enemy must be before it triggers flee -#define MONKEY_ITEM_SNATCH_DELAY 25 // How long does it take the item to be taken from a mobs hand -#define MONKEY_CUFF_RETALIATION_PROB 20 // Probability monkey will aggro when cuffed -#define MONKEY_SYRINGE_RETALIATION_PROB 20 // Probability monkey will aggro when syringed +/// below this health value the monkey starts to flee from enemies +#define MONKEY_FLEE_HEALTH 50 +/// how close an enemy must be to trigger aggression +#define MONKEY_ENEMY_VISION 9 +/// how close an enemy must be before it triggers flee +#define MONKEY_FLEE_VISION 4 +/// How long does it take the item to be taken from a mobs hand +#define MONKEY_ITEM_SNATCH_DELAY 25 +/// Probability monkey will aggro when cuffed +#define MONKEY_CUFF_RETALIATION_PROB 20 +/// Probability monkey will aggro when syringed +#define MONKEY_SYRINGE_RETALIATION_PROB 20 // Probability per Life tick that the monkey will: -#define MONKEY_RESIST_PROB 50 // resist out of restraints -// when the monkey is idle -#define MONKEY_PULL_AGGRO_PROB 5 // aggro against the mob pulling it -#define MONKEY_SHENANIGAN_PROB 5 // chance of getting into mischief, i.e. finding/stealing items -// when the monkey is hunting -#define MONKEY_ATTACK_DISARM_PROB 50 // disarm an armed attacker -#define MONKEY_WEAPON_PROB 20 // if not currently getting an item, search for a weapon around it -#define MONKEY_RECRUIT_PROB 25 // recruit a monkey near it -#define MONKEY_SWITCH_TARGET_PROB 25 // switch targets if it sees another enemy - -#define MONKEY_RETALIATE_HARM_PROB 95 // probability for the monkey to aggro when attacked with harm intent -#define MONKEY_RETALIATE_DISARM_PROB 20 // probability for the monkey to aggro when attacked with disarm intent +/// probability that monkey resist out of restraints +#define MONKEY_RESIST_PROB 50 +/// probability that monkey aggro against the mob pulling it +#define MONKEY_PULL_AGGRO_PROB 5 +/// probability that monkey will get into mischief, i.e. finding/stealing items +#define MONKEY_SHENANIGAN_PROB 20 +/// probability that monkey will disarm an armed attacker +#define MONKEY_ATTACK_DISARM_PROB 50 +/// probability that monkey will get recruited when friend is attacked +#define MONKEY_RECRUIT_PROB 25 -#define MONKEY_HATRED_AMOUNT 4 // amount of aggro to add to an enemy when they attack user -#define MONKEY_HATRED_REDUCTION_PROB 25 // probability of reducing aggro by one when the monkey attacks +/// probability for the monkey to aggro when attacked with harm intent +#define MONKEY_RETALIATE_HARM_PROB 95 +/// probability for the monkey to aggro when attacked with disarm intent +#define MONKEY_RETALIATE_DISARM_PROB 20 -// how many Life ticks the monkey will fail to: -#define MONKEY_HUNT_FRUSTRATION_LIMIT 8 // Chase after an enemy before giving up -#define MONKEY_DISPOSE_FRUSTRATION_LIMIT 16 // Dispose of a body before giving up +/// amount of aggro to add to an enemy when they attack user +#define MONKEY_HATRED_AMOUNT 4 +/// amount of aggro to add to an enemy when a monkey is recruited +#define MONKEY_RECRUIT_HATED_AMOUNT 2 +/// probability of reducing aggro by one when the monkey attacks +#define MONKEY_HATRED_REDUCTION_PROB 20 -#define MONKEY_AGGRESSIVE_MVM_PROB 0 // If you mass edit monkies to be aggressive. there is a small chance of in-fighting +///Monkey recruit cooldown +#define MONKEY_RECRUIT_COOLDOWN 1 MINUTES diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 1155ea88bed9..b702358a9977 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -120,6 +120,8 @@ #define INIT_ORDER_EVENTS 70 #define INIT_ORDER_JOBS 65 #define INIT_ORDER_QUIRKS 60 +#define INIT_ORDER_AI_MOVEMENT 57 //We need the movement setup +#define INIT_ORDER_AI_CONTROLLERS 56 //So the controller can get the ref #define INIT_ORDER_TICKER 55 #define INIT_ORDER_FACTION 53 #define INIT_ORDER_MAPPING 50 @@ -164,6 +166,8 @@ #define FIRE_PRIORITY_WET_FLOORS 20 #define FIRE_PRIORITY_AIR 20 #define FIRE_PRIORITY_NPC 20 +#define FIRE_PRIORITY_NPC_MOVEMENT 21 +#define FIRE_PRIORITY_NPC_ACTIONS 22 #define FIRE_PRIORITY_PROCESS 25 #define FIRE_PRIORITY_THROWING 25 #define FIRE_PRIORITY_SPACEDRIFT 30 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 3dce892eb868..48691840688a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -155,6 +155,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_PACIFISM "pacifism" #define TRAIT_IGNORESLOWDOWN "ignoreslow" #define TRAIT_IGNOREDAMAGESLOWDOWN "ignoredamageslowdown" +/// Makes it so the mob can use guns regardless of tool user status +#define TRAIT_GUN_NATURAL "gunnatural" #define TRAIT_DEATHCOMA "deathcoma" //Causes death-like unconsciousness #define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination #define TRAIT_DISFIGURED "disfigured" diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index e52d9af56251..3207ca3bdb58 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -22,6 +22,7 @@ #define VV_BITFIELD "Bitfield" #define VV_TEXT_LOCATE "Custom Reference Locate" #define VV_PROCCALL_RETVAL "Return Value of Proccall" +#define VV_HK_ADD_AI "add_ai" #define VV_MSG_MARKED "
Marked Object" #define VV_MSG_EDITED "
Var Edited" diff --git a/code/__HELPERS/AStar.dm b/code/__HELPERS/AStar.dm deleted file mode 100644 index 0e0de2a95326..000000000000 --- a/code/__HELPERS/AStar.dm +++ /dev/null @@ -1,212 +0,0 @@ -/* -A Star pathfinding algorithm -Returns a list of tiles forming a path from A to B, taking dense objects as well as walls, and the orientation of -windows along the route into account. -Use: -your_list = AStar(start location, end location, moving atom, distance proc, max nodes, maximum node depth, minimum distance to target, adjacent proc, atom id, turfs to exclude, check only simulated) - -Optional extras to add on (in order): -Distance proc : the distance used in every A* calculation (length of path and heuristic) -MaxNodes: The maximum number of nodes the returned path can be (0 = infinite) -Maxnodedepth: The maximum number of nodes to search (default: 30, 0 = infinite) -Mintargetdist: Minimum distance to the target before path returns, could be used to get -near a target, but not right to it - for an AI mob with a gun, for example. -Adjacent proc : returns the turfs to consider around the actually processed node -Simulated only : whether to consider unsimulated turfs or not (used by some Adjacent proc) - -Also added 'exclude' turf to avoid travelling over; defaults to null - -Actual Adjacent procs : - - /turf/proc/reachableAdjacentTurfs : returns reachable turfs in cardinal directions (uses simulated_only) - - /turf/proc/reachableAdjacentAtmosTurfs : returns turfs in cardinal directions reachable via atmos - -*/ -#define PF_TIEBREAKER 0.005 -//tiebreker weight.To help to choose between equal paths -////////////////////// -//datum/PathNode object -////////////////////// -#define MASK_ODD 85 -#define MASK_EVEN 170 - - -//A* nodes variables -/datum/PathNode - var/turf/source //turf associated with the PathNode - var/datum/PathNode/prevNode //link to the parent PathNode - var/f //A* Node weight (f = g + h) - var/g //A* movement cost variable - var/h //A* heuristic variable - var/nt //count the number of Nodes traversed - var/bf //bitflag for dir to expand.Some sufficiently advanced motherfuckery - -/datum/PathNode/New(s,p,pg,ph,pnt,_bf) - source = s - prevNode = p - g = pg - h = ph - f = g + h*(1+ PF_TIEBREAKER) - nt = pnt - bf = _bf - -/datum/PathNode/proc/setp(p,pg,ph,pnt) - prevNode = p - g = pg - h = ph - f = g + h*(1+ PF_TIEBREAKER) - nt = pnt - -/datum/PathNode/proc/calc_f() - f = g + h - -////////////////////// -//A* procs -////////////////////// - -//the weighting function, used in the A* algorithm -/proc/PathWeightCompare(datum/PathNode/a, datum/PathNode/b) - return a.f - b.f - -//reversed so that the Heap is a MinHeap rather than a MaxHeap -/proc/HeapPathWeightCompare(datum/PathNode/a, datum/PathNode/b) - return b.f - a.f - -//wrapper that returns an empty list if A* failed to find a path -/proc/get_path_to(caller, end, dist, maxnodes, maxnodedepth = 30, mintargetdist, adjacent = /turf/proc/reachableTurftest, id=null, turf/exclude=null, simulated_only = TRUE) - var/l = SSpathfinder.mobs.getfree(caller) - while(!l) - stoplag(3) - l = SSpathfinder.mobs.getfree(caller) - var/list/path = AStar(caller, end, dist, maxnodes, maxnodedepth, mintargetdist, adjacent,id, exclude, simulated_only) - - SSpathfinder.mobs.found(l) - if(!path) - path = list() - return path - -/proc/cir_get_path_to(caller, end, dist, maxnodes, maxnodedepth = 30, mintargetdist, adjacent = /turf/proc/reachableTurftest, id=null, turf/exclude=null, simulated_only = TRUE) - var/l = SSpathfinder.circuits.getfree(caller) - while(!l) - stoplag(3) - l = SSpathfinder.circuits.getfree(caller) - var/list/path = AStar(caller, end, dist, maxnodes, maxnodedepth, mintargetdist, adjacent,id, exclude, simulated_only) - SSpathfinder.circuits.found(l) - if(!path) - path = list() - return path - -/proc/AStar(caller, _end, dist, maxnodes, maxnodedepth = 30, mintargetdist, adjacent = /turf/proc/reachableTurftest, id=null, turf/exclude=null, simulated_only = TRUE) - //sanitation - var/turf/end = get_turf(_end) - var/turf/start = get_turf(caller) - if(!start || !end) - stack_trace("Invalid A* start or destination") - return FALSE - if(start.virtual_z != end.virtual_z || start == end) //no pathfinding between z levels - return FALSE - if(maxnodes) - //if start turf is farther than maxnodes from end turf, no need to do anything - if(call(start, dist)(end) > maxnodes) - return FALSE - maxnodedepth = maxnodes //no need to consider path longer than maxnodes - var/datum/Heap/open = new /datum/Heap(/proc/HeapPathWeightCompare) //the open list - var/list/openc = new() //open list for node check - var/list/path = null //the returned path, if any - //initialization - var/datum/PathNode/cur = new /datum/PathNode(start,null,0,call(start,dist)(end),0,15,1)//current processed turf - open.Insert(cur) - openc[start] = cur - //then run the main loop - while(!open.IsEmpty() && !path) - cur = open.Pop() //get the lower f turf in the open list - //get the lower f node on the open list - //if we only want to get near the target, check if we're close enough - var/closeenough - if(mintargetdist) - closeenough = call(cur.source,dist)(end) <= mintargetdist - - - //found the target turf (or close enough), let's create the path to it - if(cur.source == end || closeenough) - path = new() - path.Add(cur.source) - while(cur.prevNode) - cur = cur.prevNode - path.Add(cur.source) - break - //get adjacents turfs using the adjacent proc, checking for access with id - if((!maxnodedepth)||(cur.nt <= maxnodedepth))//if too many steps, don't process that path - for(var/i = 0 to 3) - var/f= 1<>1) //getting reverse direction throught swapping even and odd bits.((f & 01010101)<<1)|((f & 10101010)>>1) - var/newg = cur.g + call(cur.source,dist)(T) - if(CN) - //is already in open list, check if it's a better way from the current turf - CN.bf &= 15^r //we have no closed, so just cut off exceed dir.00001111 ^ reverse_dir.We don't need to expand to checked turf. - if((newg < CN.g)) - if(call(cur.source,adjacent)(caller, T, id, simulated_only)) - CN.setp(cur,newg,CN.h,cur.nt+1) - open.ReSort(CN)//reorder the changed element in the list - else - //is not already in open list, so add it - if(call(cur.source,adjacent)(caller, T, id, simulated_only)) - CN = new(T,cur,newg,call(T,dist)(end),cur.nt+1,15^r) - open.Insert(CN) - openc[T] = CN - cur.bf = 0 - CHECK_TICK - //reverse the path to get it from start to finish - if(path) - for(var/i = 1 to round(0.5*path.len)) - path.Swap(i,path.len-i+1) - openc = null - //cleaning after us - return path - -//Returns adjacent turfs in cardinal directions that are reachable -//simulated_only controls whether only simulated turfs are considered or not - -/turf/proc/reachableAdjacentTurfs(caller, ID, simulated_only) - var/list/L = new() - var/turf/T - var/static/space_type_cache = typecacheof(/turf/open/space) - - for(var/k in 1 to GLOB.cardinals.len) - T = get_step(src,GLOB.cardinals[k]) - if(!T || (simulated_only && space_type_cache[T.type])) - continue - if(!T.density && !LinkBlockedWithAccess(T,caller, ID)) - L.Add(T) - return L - -/turf/proc/reachableTurftest(caller, turf/T, ID, simulated_only) - if(T && !T.density && !(simulated_only && SSpathfinder.space_type_cache[T.type]) && !LinkBlockedWithAccess(T,caller, ID)) - return TRUE - -//Returns adjacent turfs in cardinal directions that are reachable via atmos -/turf/proc/reachableAdjacentAtmosTurfs() - return atmos_adjacent_turfs - -/turf/proc/LinkBlockedWithAccess(turf/T, caller, ID) - var/adir = get_dir(src, T) - var/rdir = ((adir & MASK_ODD)<<1)|((adir & MASK_EVEN)>>1) - for(var/obj/structure/window/W in src) - if(!W.CanAStarPass(ID, adir)) - return TRUE - for(var/obj/machinery/door/window/W in src) - if(!W.CanAStarPass(ID, adir)) - return TRUE - for(var/obj/O in T) - if(!O.CanAStarPass(ID, rdir, caller)) - return TRUE - for(var/obj/machinery/door/firedoor/border_only/W in src) - if(!W.CanAStarPass(ID, adir, caller)) - return TRUE - - return FALSE diff --git a/code/__HELPERS/heap.dm b/code/__HELPERS/heap.dm index 1e369fd7e181..82ef9011bd09 100644 --- a/code/__HELPERS/heap.dm +++ b/code/__HELPERS/heap.dm @@ -1,39 +1,45 @@ ////////////////////// -//datum/Heap object +//datum/heap object ////////////////////// -/datum/Heap +/datum/heap var/list/L var/cmp -/datum/Heap/New(compare) +/datum/heap/New(compare) L = new() cmp = compare -/datum/Heap/proc/IsEmpty() - return !L.len +/datum/heap/Destroy(force, ...) + for(var/i in L) // because this is before the list helpers are loaded + qdel(i) + L = null + return ..() + +/datum/heap/proc/is_empty() + return !length(L) //Insert and place at its position a new node in the heap -/datum/Heap/proc/Insert(atom/A) +/datum/heap/proc/insert(atom/A) L.Add(A) - Swim(L.len) + swim(L.len) //removes and returns the first element of the heap //(i.e the max or the min dependant on the comparison function) -/datum/Heap/proc/Pop() - if(!L.len) +/datum/heap/proc/pop() + if(!length(L)) return 0 . = L[1] - L[1] = L[L.len] - L.Cut(L.len) - if(L.len) - Sink(1) + L[1] = L[length(L)] + L.Cut(length(L)) + if(length(L)) + sink(1) //Get a node up to its right position in the heap -/datum/Heap/proc/Swim(index) +/datum/heap/proc/swim(index) var/parent = round(index * 0.5) while(parent > 0 && (call(cmp)(L[index],L[parent]) > 0)) @@ -42,17 +48,17 @@ parent = round(index * 0.5) //Get a node down to its right position in the heap -/datum/Heap/proc/Sink(index) - var/g_child = GetGreaterChild(index) +/datum/heap/proc/sink(index) + var/g_child = get_greater_child(index) while(g_child > 0 && (call(cmp)(L[index],L[g_child]) < 0)) L.Swap(index,g_child) index = g_child - g_child = GetGreaterChild(index) + g_child = get_greater_child(index) //Returns the greater (relative to the comparison proc) of a node children //or 0 if there's no child -/datum/Heap/proc/GetGreaterChild(index) +/datum/heap/proc/get_greater_child(index) if(index * 2 > L.len) return 0 @@ -65,12 +71,12 @@ return index * 2 //Replaces a given node so it verify the heap condition -/datum/Heap/proc/ReSort(atom/A) +/datum/heap/proc/resort(atom/A) var/index = L.Find(A) - Swim(index) - Sink(index) + swim(index) + sink(index) -/datum/Heap/proc/List() +/datum/heap/proc/List() . = L.Copy() diff --git a/code/__HELPERS/path.dm b/code/__HELPERS/path.dm new file mode 100644 index 000000000000..dc9231c0c93b --- /dev/null +++ b/code/__HELPERS/path.dm @@ -0,0 +1,347 @@ +/** + * This file contains the stuff you need for using JPS (Jump Point Search) pathing, an alternative to A* that skips + * over large numbers of uninteresting tiles resulting in much quicker pathfinding solutions. Mind that diagonals + * cost the same as cardinal moves currently, so paths may look a bit strange, but should still be optimal. + */ + +/** + * This is the proc you use whenever you want to have pathfinding more complex than "try stepping towards the thing" + * + * Arguments: + * * caller: The movable atom that's trying to find the path + * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway + * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) + * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. + * * id: An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant + * * simulated_only: Whether we consider turfs without atmos simulation (AKA do we want to ignore space) + * * exclude: If we want to avoid a specific turf, like if we're a mulebot who already got blocked by some turf + */ +/proc/get_path_to(caller, end, max_distance = 30, mintargetdist, id=null, simulated_only = TRUE, turf/exclude) + if(!caller || !get_turf(end)) + return + + var/l = SSpathfinder.mobs.getfree(caller) + while(!l) + stoplag(3) + l = SSpathfinder.mobs.getfree(caller) + + var/list/path + var/datum/pathfind/pathfind_datum = new(caller, end, id, max_distance, mintargetdist, simulated_only, exclude) + path = pathfind_datum.search() + qdel(pathfind_datum) + + SSpathfinder.mobs.found(l) + return path + +/** + * A helper macro to see if it's possible to step from the first turf into the second one, minding things like door access and directional windows. + * Note that this can only be used inside the [datum/pathfind][pathfind datum] since it uses variables from said datum + * If you really want to optimize things, optimize this, cuz this gets called a lot + */ +#define CAN_STEP(cur_turf, next) (next && !next.density && cur_turf.Adjacent(next) && !(simulated_only && SSpathfinder.space_type_cache[next.type]) && !cur_turf.LinkBlockedWithAccess(next,caller, id) && (next != avoid)) +/// Another helper macro for JPS, for telling when a node has forced neighbors that need expanding +#define STEP_NOT_HERE_BUT_THERE(cur_turf, dirA, dirB) ((!CAN_STEP(cur_turf, get_step(cur_turf, dirA)) && CAN_STEP(cur_turf, get_step(cur_turf, dirB)))) + +/// The JPS Node datum represents a turf that we find interesting enough to add to the open list and possibly search for new tiles from +/datum/jps_node + /// The turf associated with this node + var/turf/tile + /// The node we just came from + var/datum/jps_node/previous_node + /// The A* node weight (f_value = number_of_tiles + heuristic) + var/f_value + /// The A* node heuristic (a rough estimate of how far we are from the goal) + var/heuristic + /// How many steps it's taken to get here from the start (currently pulling double duty as steps taken & cost to get here, since all moves incl diagonals cost 1 rn) + var/number_tiles + /// How many steps it took to get here from the last node + var/jumps + /// Nodes store the endgoal so they can process their heuristic without a reference to the pathfind datum + var/turf/node_goal + +/datum/jps_node/New(turf/our_tile, datum/jps_node/incoming_previous_node, jumps_taken, turf/incoming_goal) + tile = our_tile + jumps = jumps_taken + if(incoming_goal) // if we have the goal argument, this must be the first/starting node + node_goal = incoming_goal + else if(incoming_previous_node) // if we have the parent, this is from a direct lateral/diagonal scan, we can fill it all out now + previous_node = incoming_previous_node + number_tiles = previous_node.number_tiles + jumps + node_goal = previous_node.node_goal + heuristic = get_dist(tile, node_goal) + f_value = number_tiles + heuristic + // otherwise, no parent node means this is from a subscan lateral scan, so we just need the tile for now until we call [datum/jps/proc/update_parent] on it + +/datum/jps_node/Destroy(force, ...) + previous_node = null + return ..() + +/datum/jps_node/proc/update_parent(datum/jps_node/new_parent) + previous_node = new_parent + node_goal = previous_node.node_goal + jumps = get_dist(tile, previous_node.tile) + number_tiles = previous_node.number_tiles + jumps + heuristic = get_dist(tile, node_goal) + f_value = number_tiles + heuristic + +/// TODO: Macro this to reduce proc overhead +/proc/HeapPathWeightCompare(datum/jps_node/a, datum/jps_node/b) + return b.f_value - a.f_value + +/// The datum used to handle the JPS pathfinding, completely self-contained +/datum/pathfind + /// The thing that we're actually trying to path for + var/atom/movable/caller + /// The turf where we started at + var/turf/start + /// The turf we're trying to path to (note that this won't track a moving target) + var/turf/end + /// The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead) + var/datum/heap/open + ///An assoc list that serves as the closed list & tracks what turfs came from where. Key is the turf, and the value is what turf it came from + var/list/sources + /// The list we compile at the end if successful to pass back + var/list/path + + // general pathfinding vars/args + /// An ID card representing what access we have and what doors we can open. Its location relative to the pathing atom is irrelevant + var/obj/item/card/id/id + /// How far away we have to get to the end target before we can call it quits + var/mintargetdist = 0 + /// I don't know what this does vs , but they limit how far we can search before giving up on a path + var/max_distance = 30 + /// Space is big and empty, if this is TRUE then we ignore pathing through unsimulated tiles + var/simulated_only + /// A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through + var/turf/avoid + +/datum/pathfind/New(atom/movable/caller, atom/goal, id, max_distance, mintargetdist, simulated_only, avoid) + src.caller = caller + end = get_turf(goal) + open = new /datum/heap(/proc/HeapPathWeightCompare) + sources = new() + src.id = id + src.max_distance = max_distance + src.mintargetdist = mintargetdist + src.simulated_only = simulated_only + src.avoid = avoid + +/// The proc you use to run the search, returns a list with the steps to the destination if one is available, or nothing if one couldn't be found +/datum/pathfind/proc/search() + start = get_turf(caller) + if(!start || !end) + stack_trace("Invalid A* start or destination") + return FALSE + if(start.z != end.z || start == end) //no pathfinding between z levels + return FALSE + if(max_distance && (max_distance < get_dist(start, end))) //if start turf is farther than max_distance from end turf, no need to do anything + return FALSE + + //initialization + var/datum/jps_node/current_processed_node = new (start, -1, 0, end) + open.insert(current_processed_node) + sources[start] = start // i'm sure this is fine + + //then run the main loop + while(!open.is_empty() && !path) + if(!caller) + return + current_processed_node = open.pop() //get the lower f_value turf in the open list + if(max_distance && (current_processed_node.number_tiles > max_distance))//if too many steps, don't process that path + continue + + var/turf/current_turf = current_processed_node.tile + for(var/scan_direction in list(EAST, WEST, NORTH, SOUTH)) + lateral_scan_spec(current_turf, scan_direction, current_processed_node) + + for(var/scan_direction in list(NORTHEAST, SOUTHEAST, NORTHWEST, SOUTHWEST)) + diag_scan_spec(current_turf, scan_direction, current_processed_node) + + CHECK_TICK + + //we're done! reverse the path to get it from start to finish + if(path) + for(var/i = 1 to round(0.5 * length(path))) + path.Swap(i, length(path) - i + 1) + sources = null + qdel(open) + return path + +/// Called when we've hit the goal with the node that represents the last tile, then sets the path var to that path so it can be returned by [datum/pathfind/proc/search] +/datum/pathfind/proc/unwind_path(datum/jps_node/unwind_node) + path = new() + var/turf/iter_turf = unwind_node.tile + path.Add(iter_turf) + + while(unwind_node.previous_node) + var/dir_goal = get_dir(iter_turf, unwind_node.previous_node.tile) + for(var/i = 1 to unwind_node.jumps) + iter_turf = get_step(iter_turf,dir_goal) + path.Add(iter_turf) + unwind_node = unwind_node.previous_node + +/** + * For performing lateral scans from a given starting turf. + * + * These scans are called from both the main search loop, as well as subscans for diagonal scans, and they treat finding interesting turfs slightly differently. + * If we're doing a normal lateral scan, we already have a parent node supplied, so we just create the new node and immediately insert it into the heap, ezpz. + * If we're part of a subscan, we still need for the diagonal scan to generate a parent node, so we return a node datum with just the turf and let the diag scan + * proc handle transferring the values and inserting them into the heap. + * + * Arguments: + * * original_turf: What turf did we start this scan at? + * * heading: What direction are we going in? Obviously, should be cardinal + * * parent_node: Only given for normal lateral scans, if we don't have one, we're a diagonal subscan. +*/ +/datum/pathfind/proc/lateral_scan_spec(turf/original_turf, heading, datum/jps_node/parent_node) + var/steps_taken = 0 + + var/turf/current_turf = original_turf + var/turf/lag_turf = original_turf + + while(TRUE) + if(path) + return + lag_turf = current_turf + current_turf = get_step(current_turf, heading) + steps_taken++ + if(!CAN_STEP(lag_turf, current_turf)) + return + + if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist))) + var/datum/jps_node/final_node = new(current_turf, parent_node, steps_taken) + sources[current_turf] = original_turf + if(parent_node) // if this is a direct lateral scan we can wrap up, if it's a subscan from a diag, we need to let the diag make their node first, then finish + unwind_path(final_node) + return final_node + else if(sources[current_turf]) // already visited, essentially in the closed list + return + else + sources[current_turf] = original_turf + + if(parent_node && parent_node.number_tiles + steps_taken > max_distance) + return + + var/interesting = FALSE // have we found a forced neighbor that would make us add this turf to the open list? + + switch(heading) + if(NORTH) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, EAST, NORTHEAST)) + interesting = TRUE + if(SOUTH) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, SOUTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, EAST, SOUTHEAST)) + interesting = TRUE + if(EAST) + if(STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHEAST)) + interesting = TRUE + if(WEST) + if(STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHWEST)) + interesting = TRUE + + if(interesting) + var/datum/jps_node/newnode = new(current_turf, parent_node, steps_taken) + if(parent_node) // if we're a diagonal subscan, we'll handle adding ourselves to the heap in the diag + open.insert(newnode) + return newnode + +/** + * For performing diagonal scans from a given starting turf. + * + * Unlike lateral scans, these only are called from the main search loop, so we don't need to worry about returning anything, + * though we do need to handle the return values of our lateral subscans of course. + * + * Arguments: + * * original_turf: What turf did we start this scan at? + * * heading: What direction are we going in? Obviously, should be diagonal + * * parent_node: We should always have a parent node for diagonals +*/ +/datum/pathfind/proc/diag_scan_spec(turf/original_turf, heading, datum/jps_node/parent_node) + var/steps_taken = 0 + var/turf/current_turf = original_turf + var/turf/lag_turf = original_turf + + while(TRUE) + if(path) + return + lag_turf = current_turf + current_turf = get_step(current_turf, heading) + steps_taken++ + if(!CAN_STEP(lag_turf, current_turf)) + return + + if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist))) + var/datum/jps_node/final_node = new(current_turf, parent_node, steps_taken) + sources[current_turf] = original_turf + unwind_path(final_node) + return + else if(sources[current_turf]) // already visited, essentially in the closed list + return + else + sources[current_turf] = original_turf + + if(parent_node.number_tiles + steps_taken > max_distance) + return + + var/interesting = FALSE // have we found a forced neighbor that would make us add this turf to the open list? + var/datum/jps_node/possible_child_node // otherwise, did one of our lateral subscans turn up something? + + switch(heading) + if(NORTHWEST) + if(STEP_NOT_HERE_BUT_THERE(current_turf, EAST, NORTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHWEST)) + interesting = TRUE + else + possible_child_node = (lateral_scan_spec(current_turf, WEST) || lateral_scan_spec(current_turf, NORTH)) + if(NORTHEAST) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHEAST)) + interesting = TRUE + else + possible_child_node = (lateral_scan_spec(current_turf, EAST) || lateral_scan_spec(current_turf, NORTH)) + if(SOUTHWEST) + if(STEP_NOT_HERE_BUT_THERE(current_turf, EAST, SOUTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHWEST)) + interesting = TRUE + else + possible_child_node = (lateral_scan_spec(current_turf, SOUTH) || lateral_scan_spec(current_turf, WEST)) + if(SOUTHEAST) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, SOUTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHEAST)) + interesting = TRUE + else + possible_child_node = (lateral_scan_spec(current_turf, SOUTH) || lateral_scan_spec(current_turf, EAST)) + + if(interesting || possible_child_node) + var/datum/jps_node/newnode = new(current_turf, parent_node, steps_taken) + open.insert(newnode) + if(possible_child_node) + possible_child_node.update_parent(newnode) + open.insert(possible_child_node) + if(possible_child_node.tile == end || (mintargetdist && (get_dist(possible_child_node.tile, end) <= mintargetdist))) + unwind_path(possible_child_node) + return + +/** + * For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags + * + * Arguments: + * * caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach + * * ID: An ID card that decides if we can gain access to doors that would otherwise block a turf + * * simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space? +*/ +/turf/proc/LinkBlockedWithAccess(turf/destination_turf, caller, ID) + var/actual_dir = get_dir(src, destination_turf) + + for(var/obj/structure/window/iter_window in src) + if(!iter_window.CanAStarPass(ID, actual_dir)) + return TRUE + + for(var/obj/machinery/door/window/iter_windoor in src) + if(!iter_windoor.CanAStarPass(ID, actual_dir)) + return TRUE + + var/reverse_dir = get_dir(destination_turf, src) + for(var/obj/iter_object in destination_turf) + if(!iter_object.CanAStarPass(ID, reverse_dir, caller)) + return TRUE + + return FALSE + +#undef CAN_STEP +#undef STEP_NOT_HERE_BUT_THERE diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index a21147e7860e..12bf5edd6ff6 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -468,6 +468,8 @@ Turf and target are separate in case you want to teleport some distance from a t /proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. var/turf/current = get_turf(source) var/turf/target_turf = get_turf(target) + if(get_dist(source, target) > length) + return FALSE var/steps = 1 if(current != target_turf) current = get_step_towards(current, target_turf) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index fb00d8bdf283..f8140f71e978 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -8,6 +8,12 @@ GLOBAL_PROTECT(mentors) GLOBAL_LIST_EMPTY_TYPED(directory, /client) //all ckeys with associated client GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, for stealthmins +GLOBAL_LIST_INIT(dangerous_turfs, typecacheof(list( + /turf/open/lava, + /turf/open/chasm, + /turf/open/space, + /turf/open/openspace))) + //Since it didn't really belong in any other category, I'm putting this here //This is for procs to replace all the goddamn 'in world's that are chilling around the code diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index c387afaace70..475ec8a10c26 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -345,11 +345,12 @@ A.AltClick(src) /atom/proc/AltClick(mob/user) - var/result = SEND_SIGNAL(src, COMSIG_CLICK_ALT, user) + . = SEND_SIGNAL(src, COMSIG_CLICK_ALT, user) + if(. & COMPONENT_CANCEL_CLICK_ALT) + return var/turf/T = get_turf(src) if(T && (isturf(loc) || isturf(src)) && user.TurfAdjacent(T)) user.set_listed_turf(T) - return result /// Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction /atom/proc/AltClickNoInteract(mob/user, atom/A) diff --git a/code/controllers/subsystem/ai_controllers.dm b/code/controllers/subsystem/ai_controllers.dm new file mode 100644 index 000000000000..5319d7316fb9 --- /dev/null +++ b/code/controllers/subsystem/ai_controllers.dm @@ -0,0 +1,33 @@ +/// The subsystem used to tick [/datum/ai_controllers] instances. Handling the re-checking of plans. +SUBSYSTEM_DEF(ai_controllers) + name = "AI Controller Ticker" + flags = SS_POST_FIRE_TIMING|SS_BACKGROUND + priority = FIRE_PRIORITY_NPC + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + init_order = INIT_ORDER_AI_CONTROLLERS + wait = 0.5 SECONDS //Plan every half second if required, not great not terrible. + + ///List of all ai_subtree singletons, key is the typepath while assigned value is a newly created instance of the typepath. See setup_subtrees() + var/list/ai_subtrees = list() + ///List of all ai controllers currently running + var/list/active_ai_controllers = list() + +/datum/controller/subsystem/ai_controllers/Initialize(timeofday) + setup_subtrees() + return ..() + +/datum/controller/subsystem/ai_controllers/proc/setup_subtrees() + ai_subtrees = list() + for(var/subtree_type in subtypesof(/datum/ai_planning_subtree)) + var/datum/ai_planning_subtree/subtree = new subtree_type + ai_subtrees[subtree_type] = subtree + +/datum/controller/subsystem/ai_controllers/fire(resumed) + for(var/datum/ai_controller/ai_controller as anything in active_ai_controllers) + if(!COOLDOWN_FINISHED(ai_controller, failed_planning_cooldown)) + continue + + if(!LAZYLEN(ai_controller.current_behaviors)) + ai_controller.SelectBehaviors(wait * 0.1) + if(!LAZYLEN(ai_controller.current_behaviors)) //Still no plan + COOLDOWN_START(ai_controller, failed_planning_cooldown, AI_FAILED_PLANNING_COOLDOWN) diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm index 21ee7ea60b3c..12ed31d0af7f 100644 --- a/code/controllers/subsystem/pathfinder.dm +++ b/code/controllers/subsystem/pathfinder.dm @@ -3,13 +3,11 @@ SUBSYSTEM_DEF(pathfinder) init_order = INIT_ORDER_PATH flags = SS_NO_FIRE var/datum/flowcache/mobs - var/datum/flowcache/circuits var/static/space_type_cache /datum/controller/subsystem/pathfinder/Initialize() space_type_cache = typecacheof(/turf/open/space) mobs = new(10) - circuits = new(3) return ..() /datum/flowcache diff --git a/code/controllers/subsystem/processing/ai_behaviors.dm b/code/controllers/subsystem/processing/ai_behaviors.dm new file mode 100644 index 000000000000..4c98567405cc --- /dev/null +++ b/code/controllers/subsystem/processing/ai_behaviors.dm @@ -0,0 +1,20 @@ +/// The subsystem used to tick [/datum/ai_behavior] instances. Handling the individual actions an AI can take like punching someone in the fucking NUTS +PROCESSING_SUBSYSTEM_DEF(ai_behaviors) + name = "AI Behavior Ticker" + flags = SS_POST_FIRE_TIMING|SS_BACKGROUND + priority = FIRE_PRIORITY_NPC_ACTIONS + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + init_order = INIT_ORDER_AI_CONTROLLERS + wait = 1 + ///List of all ai_behavior singletons, key is the typepath while assigned value is a newly created instance of the typepath. See SetupAIBehaviors() + var/list/ai_behaviors + +/datum/controller/subsystem/processing/ai_behaviors/Initialize(timeofday) + SetupAIBehaviors() + return ..() + +/datum/controller/subsystem/processing/ai_behaviors/proc/SetupAIBehaviors() + ai_behaviors = list() + for(var/behavior_type in subtypesof(/datum/ai_behavior)) + var/datum/ai_behavior/ai_behavior = new behavior_type + ai_behaviors[behavior_type] = ai_behavior diff --git a/code/controllers/subsystem/processing/ai_movement.dm b/code/controllers/subsystem/processing/ai_movement.dm new file mode 100644 index 000000000000..6a6d64548ca7 --- /dev/null +++ b/code/controllers/subsystem/processing/ai_movement.dm @@ -0,0 +1,21 @@ +/// The subsystem used to tick [/datum/ai_movement] instances. Handling the movement of individual AI instances +PROCESSING_SUBSYSTEM_DEF(ai_movement) + name = "AI movement" + flags = SS_KEEP_TIMING|SS_BACKGROUND + priority = FIRE_PRIORITY_NPC_MOVEMENT + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + init_order = INIT_ORDER_AI_MOVEMENT + wait = 1 + + ///an assoc list of all ai_movement types. Assoc type to instance + var/list/movement_types + +/datum/controller/subsystem/processing/ai_movement/Initialize(timeofday) + SetupAIMovementInstances() + return ..() + +/datum/controller/subsystem/processing/ai_movement/proc/SetupAIMovementInstances() + movement_types = list() + for(var/key as anything in subtypesof(/datum/ai_movement)) + var/datum/ai_movement/ai_movement = new key + movement_types[key] = ai_movement diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index b4ad1d56df7e..c4dc415d0080 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(processing) name = "Processing" priority = FIRE_PRIORITY_PROCESS flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT - wait = 10 + wait = 1 SECONDS var/stat_tag = "P" //Used for logging var/list/processing = list() @@ -31,12 +31,12 @@ SUBSYSTEM_DEF(processing) current_run.len-- if(QDELETED(thing)) processing -= thing - else if(thing.process(wait) == PROCESS_KILL) + else if(thing.process(wait * 0.1) == PROCESS_KILL) // fully stop so that a future START_PROCESSING will work STOP_PROCESSING(src, thing) if (MC_TICK_CHECK) return -/datum/proc/process() +/datum/proc/process(delta_time) set waitfor = 0 return PROCESS_KILL diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index b64dab12d301..3d78d5871779 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -207,4 +207,7 @@ SUBSYSTEM_DEF(throwing) if(T && thrownthing.has_gravity(T)) T.zFall(thrownthing) + if(thrownthing) + SEND_SIGNAL(thrownthing, COMSIG_MOVABLE_THROW_LANDED, src) + qdel(src) diff --git a/code/datums/ai/README.md b/code/datums/ai/README.md new file mode 100644 index 000000000000..f219b11bb247 --- /dev/null +++ b/code/datums/ai/README.md @@ -0,0 +1,21 @@ +# AI controllers + +## Introduction + +Our AI controller system is an attempt at making it possible to create modularized AI that stores its behavior in datums, while keeping state and decision making in a controller. This allows a more versatile way of creating AI that doesn't rely on OOP as much, and doesn't clutter up the Life() code in Mobs. + +## AI Controllers + +A datum that can be added to any atom in the game. Similarly to components, they might only support a given subtype (e.g. /mob/living), but the idea is that theoretically, you could apply a specific AI controller to a big a group of different types as possible and it would still work. + +These datums handle both the normal movement of mobs, but also their decision making, deciding which actions they will take based on the checks you put into their SelectBehaviors proc. + +If behaviors are selected, and the AI is in range, it will try to perform them. It runs all the behaviors it currently has in parallel; allowing for it to for example screech at someone while trying to attack them. Aslong as it has behaviors running, it will not try to generate new plans, making it not waste CPU when it already has an active goal. + +They also hold data for any of the actions they might need to use, such as cooldowns, whether or not they're currently fighting, etcetera this is stored in the blackboard, more information on that below. + +### Blackboard +The blackboard is an associated list keyed with strings and with values of whatever you want. These store information the mob has such as "Am I attacking someone", "Do I have a weapon". By using an associated list like this, no data needs to be stored on the actions themselves, and you could make actions that work on multiple ai controllers if you so pleased by making the key to use a variable. + +## AI Behavior +AI behaviors are the actions an AI can take. These can range from "Do an emote" to "Attack this target until he is dead". They are singletons and should contain nothing but static data. Any dynamic data should be stored in the blackboard, to allow different controllers to use the same behaviors. diff --git a/code/datums/ai/_ai_behavoir.dm b/code/datums/ai/_ai_behavoir.dm new file mode 100644 index 000000000000..fad64f6e97d6 --- /dev/null +++ b/code/datums/ai/_ai_behavoir.dm @@ -0,0 +1,25 @@ +///Abstract class for an action an AI can take, can range from movement to grabbing a nearby weapon. +/datum/ai_behavior + ///What distance you need to be from the target to perform the action + var/required_distance = 1 + ///Flags for extra behavior + var/behavior_flags = NONE + ///Cooldown between actions performances + var/action_cooldown = 0 + +/// Called by the ai controller when first being added. Additional arguments depend on the behavior type. +/// Return FALSE to cancel +/datum/ai_behavior/proc/setup(datum/ai_controller/controller, ...) + return TRUE + +///Called by the AI controller when this action is performed +/datum/ai_behavior/proc/perform(delta_time, datum/ai_controller/controller, ...) + controller.behavior_cooldowns[src] = world.time + action_cooldown + return + +///Called when the action is finished. +/datum/ai_behavior/proc/finish_action(datum/ai_controller/controller, succeeded) + controller.current_behaviors.Remove(src) + controller.behavior_args -= type + if(behavior_flags & AI_BEHAVIOR_REQUIRE_MOVEMENT) //If this was a movement task, reset our movement target. + controller.current_movement_target = null diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm new file mode 100644 index 000000000000..ce11df446aa4 --- /dev/null +++ b/code/datums/ai/_ai_controller.dm @@ -0,0 +1,254 @@ +/* +AI controllers are a datumized form of AI that simulates the input a player would otherwise give to a atom. What this means is that these datums +have ways of interacting with a specific atom and control it. They posses a blackboard with the information the AI knows and has, and will plan behaviors it will try to execute through +multiple modular subtrees with behaviors +*/ + +/datum/ai_controller + ///The atom this controller is controlling + var/atom/pawn + ///Bitfield of traits for this AI to handle extra behavior + var/ai_traits + ///Current actions being performed by the AI. + var/list/current_behaviors + ///Current actions and their respective last time ran as an assoc list. + var/list/behavior_cooldowns = list() + ///Current status of AI (OFF/ON/IDLE) + var/ai_status + ///Current movement target of the AI, generally set by decision making. + var/atom/current_movement_target + ///Delay between atom movements, if this is not a multiplication of the delay in + var/move_delay + ///This is a list of variables the AI uses and can be mutated by actions. When an action is performed you pass this list and any relevant keys for the variables it can mutate. + var/list/blackboard = list() + ///Stored arguments for behaviors given during their initial creation + var/list/behavior_args = list() + ///Tracks recent pathing attempts, if we fail too many in a row we fail our current plans. + var/pathing_attempts + ///Can the AI remain in control if there is a client? + var/continue_processing_when_client = FALSE + ///distance to give up on target + var/max_target_distance = 14 + ///Cooldown for new plans, to prevent AI from going nuts if it can't think of new plans and looping on end + COOLDOWN_DECLARE(failed_planning_cooldown) + ///All subtrees this AI has available, will run them in order, so make sure they're in the order you want them to run. On initialization of this type, it will start as a typepath(s) and get converted to references of ai_subtrees found in SSai_controllers when init_subtrees() is called + var/list/planning_subtrees + + // Movement related things here + ///Reference to the movement datum we use. Is a type on initialize but becomes a ref afterwards. + var/datum/ai_movement/ai_movement = /datum/ai_movement/dumb + ///Cooldown until next movement + COOLDOWN_DECLARE(movement_cooldown) + ///Delay between movements. This is on the controller so we can keep the movement datum singleton + var/movement_delay = 0.1 SECONDS + + // The variables below are fucking stupid and should be put into the blackboard at some point. + ///A list for the path we're currently following, if we're using JPS pathing + var/list/movement_path + ///Cooldown for JPS movement, how often we're allowed to try making a new path + COOLDOWN_DECLARE(repath_cooldown) + ///AI paused time + var/paused_until = 0 + +/datum/ai_controller/New(atom/new_pawn) + change_ai_movement_type(ai_movement) + init_subtrees() + PossessPawn(new_pawn) + +/datum/ai_controller/Destroy(force, ...) + set_ai_status(AI_STATUS_OFF) + UnpossessPawn(FALSE) + return ..() + +///Overrides the current ai_movement of this controller with a new one +/datum/ai_controller/proc/change_ai_movement_type(datum/ai_movement/new_movement) + ai_movement = SSai_movement.movement_types[new_movement] + +///Completely replaces the planning_subtrees with a new set based on argument provided, list provided must contain specifically typepaths +/datum/ai_controller/proc/replace_planning_subtrees(list/typepaths_of_new_subtrees) + planning_subtrees = typepaths_of_new_subtrees + init_subtrees() + +///Loops over the subtrees in planning_subtrees and looks at the ai_controllers to grab a reference, ENSURE planning_subtrees ARE TYPEPATHS AND NOT INSTANCES/REFERENCES BEFORE EXECUTING THIS +/datum/ai_controller/proc/init_subtrees() + if(!LAZYLEN(planning_subtrees)) + return + var/list/temp_subtree_list = list() + for(var/subtree in planning_subtrees) + var/subtree_instance = SSai_controllers.ai_subtrees[subtree] + temp_subtree_list += subtree_instance + planning_subtrees = temp_subtree_list + +///Proc to move from one pawn to another, this will destroy the target's existing controller. +/datum/ai_controller/proc/PossessPawn(atom/new_pawn) + if(pawn) //Reset any old signals + UnpossessPawn(FALSE) + + if(istype(new_pawn.ai_controller)) //Existing AI, kill it. + QDEL_NULL(new_pawn.ai_controller) + + if(TryPossessPawn(new_pawn) & AI_CONTROLLER_INCOMPATIBLE) + qdel(src) + CRASH("[src] attached to [new_pawn] but these are not compatible!") + + pawn = new_pawn + pawn.ai_controller = src + + if(!continue_processing_when_client && istype(new_pawn, /mob)) + var/mob/possible_client_holder = new_pawn + if(possible_client_holder.client) + set_ai_status(AI_STATUS_OFF) + else + set_ai_status(AI_STATUS_ON) + else + set_ai_status(AI_STATUS_ON) + + RegisterSignal(pawn, COMSIG_MOB_LOGIN, PROC_REF(on_sentience_gained)) + +///Abstract proc for initializing the pawn to the new controller +/datum/ai_controller/proc/TryPossessPawn(atom/new_pawn) + return + +///Proc for deinitializing the pawn to the old controller +/datum/ai_controller/proc/UnpossessPawn(destroy) + UnregisterSignal(pawn, list(COMSIG_MOB_LOGIN, COMSIG_MOB_LOGOUT)) + pawn.ai_controller = null + pawn = null + if(destroy) + qdel(src) + return + +///Returns TRUE if the ai controller can actually run at the moment. +/datum/ai_controller/proc/able_to_run() + if(world.time < paused_until) + return FALSE + return TRUE + +/// Generates a plan and see if our existing one is still valid. +/datum/ai_controller/process(delta_time) + if(!able_to_run()) + walk(pawn, 0) //stop moving + return //this should remove them from processing in the future through event-based stuff. + if(!LAZYLEN(current_behaviors)) + PerformIdleBehavior(delta_time) //Do some stupid shit while we have nothing to do + return + + if(current_movement_target && get_dist(pawn, current_movement_target) > max_target_distance) //The distance is out of range + CancelActions() + return + + for(var/i in current_behaviors) + var/datum/ai_behavior/current_behavior = i + + if(behavior_cooldowns[current_behavior] > world.time) //Still on cooldown + continue + + if(current_behavior.behavior_flags & AI_BEHAVIOR_REQUIRE_MOVEMENT && current_movement_target) //Might need to move closer + if(current_behavior.required_distance >= get_dist(pawn, current_movement_target)) ///Are we close enough to engage? + if(ai_movement.moving_controllers[src] == current_movement_target) //We are close enough, if we're moving stop.else + ai_movement.stop_moving_towards(src) + ProcessBehavior(delta_time, current_behavior) + return + + else if(ai_movement.moving_controllers[src] != current_movement_target) //We're too far, if we're not already moving start doing it. + ai_movement.start_moving_towards(src, current_movement_target) //Then start moving + + if(current_behavior.behavior_flags & AI_BEHAVIOR_MOVE_AND_PERFORM) //If we can move and perform then do so. + ProcessBehavior(delta_time, current_behavior) + return + else //No movement required + ProcessBehavior(delta_time, current_behavior) + return + + +///Move somewhere using dumb movement (byond base) +/datum/ai_controller/proc/MoveTo(delta_time) + var/current_loc = get_turf(pawn) + var/atom/movable/movable_pawn = pawn + + var/turf/target_turf = get_step_towards(movable_pawn, current_movement_target) + + if(!is_type_in_typecache(target_turf, GLOB.dangerous_turfs)) + movable_pawn.Move(target_turf, get_dir(current_loc, target_turf)) + if(current_loc == get_turf(movable_pawn)) + if(++pathing_attempts >= AI_MAX_PATH_LENGTH) + CancelActions() + pathing_attempts = 0 + + +///Perform some dumb idle behavior. +/datum/ai_controller/proc/PerformIdleBehavior(delta_time) + return + +///This is where you decide what actions are taken by the AI. +/datum/ai_controller/proc/SelectBehaviors(delta_time) + SHOULD_NOT_SLEEP(TRUE) //Fuck you don't sleep in procs like this. + if(!COOLDOWN_FINISHED(src, failed_planning_cooldown)) + return FALSE + + LAZYINITLIST(current_behaviors) + + if(LAZYLEN(planning_subtrees)) + for(var/datum/ai_planning_subtree/subtree as anything in planning_subtrees) + if(subtree.SelectBehaviors(src, delta_time) == SUBTREE_RETURN_FINISH_PLANNING) + break + +///This proc handles changing ai status, and starts/stops processing if required. +/datum/ai_controller/proc/set_ai_status(new_ai_status) + if(ai_status == new_ai_status) + return FALSE //no change + + ai_status = new_ai_status + switch(ai_status) + if(AI_STATUS_ON) + SSai_controllers.active_ai_controllers += src + START_PROCESSING(SSai_behaviors, src) + if(AI_STATUS_OFF) + STOP_PROCESSING(SSai_behaviors, src) + SSai_controllers.active_ai_controllers -= src + CancelActions() + +/datum/ai_controller/proc/PauseAi(time) + paused_until = world.time + time + +/datum/ai_controller/proc/AddBehavior(behavior_type, ...) + var/datum/ai_behavior/behavior = GET_AI_BEHAVIOR(behavior_type) + if(!behavior) + CRASH("Behavior [behavior_type] not found.") + var/list/arguments = args.Copy() + arguments[1] = src + if(!behavior.setup(arglist(arguments))) + return + LAZYADD(current_behaviors, behavior) + arguments.Cut(1, 2) + if(length(arguments)) + behavior_args[behavior_type] = arguments + +/datum/ai_controller/proc/ProcessBehavior(delta_time, datum/ai_behavior/behavior) + var/list/arguments = list(delta_time, src) + var/list/stored_arguments = behavior_args[behavior.type] + if(stored_arguments) + arguments += stored_arguments + behavior.perform(arglist(arguments)) + +/datum/ai_controller/proc/CancelActions() + if(!LAZYLEN(current_behaviors)) + return + for(var/i in current_behaviors) + var/datum/ai_behavior/current_behavior = i + current_behavior.finish_action(src, FALSE) + +/datum/ai_controller/proc/on_sentience_gained() + UnregisterSignal(pawn, COMSIG_MOB_LOGIN) + if(!continue_processing_when_client) + set_ai_status(AI_STATUS_OFF) //Can't do anything while player is connected + RegisterSignal(pawn, COMSIG_MOB_LOGOUT, PROC_REF(on_sentience_lost)) + +/datum/ai_controller/proc/on_sentience_lost() + UnregisterSignal(pawn, COMSIG_MOB_LOGOUT) + set_ai_status(AI_STATUS_ON) //Can't do anything while player is connected + RegisterSignal(pawn, COMSIG_MOB_LOGIN, PROC_REF(on_sentience_gained)) + +/// Use this proc to define how your controller defines what access the pawn has for the sake of pathfinding, likely pointing to whatever ID slot is relevant +/datum/ai_controller/proc/get_access() + return diff --git a/code/datums/ai/_ai_planning_subtree.dm b/code/datums/ai/_ai_planning_subtree.dm new file mode 100644 index 000000000000..8f186d586a45 --- /dev/null +++ b/code/datums/ai/_ai_planning_subtree.dm @@ -0,0 +1,6 @@ +///A subtree is attached to a controller and is occasionally called by /ai_controller/SelectBehaviors(), this mainly exists to act as a way to subtype and modify SelectBehaviors() without needing to subtype the ai controller itself +/datum/ai_planning_subtree + +///Determines what behaviors should the controller try processing; if this returns SUBTREE_RETURN_FINISH_PLANNING then the controller won't go through the other subtrees should multiple exist in controller.planning_subtrees +/datum/ai_planning_subtree/proc/SelectBehaviors(datum/ai_controller/controller, delta_time) + return diff --git a/code/datums/ai/dog/dog_behaviors.dm b/code/datums/ai/dog/dog_behaviors.dm new file mode 100644 index 000000000000..3672b348118a --- /dev/null +++ b/code/datums/ai/dog/dog_behaviors.dm @@ -0,0 +1,208 @@ +/datum/ai_behavior/battle_screech/dog + screeches = list("barks","howls") + +/// Fetching makes the pawn chase after whatever it's targeting and pick it up when it's in range, with the dog_equip behavior +/datum/ai_behavior/fetch + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/fetch/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/living_pawn = controller.pawn + var/obj/item/fetch_thing = controller.blackboard[BB_FETCH_TARGET] + + if(fetch_thing.anchored || !isturf(fetch_thing.loc) || IS_EDIBLE(fetch_thing)) //either we can't pick it up, or we'd rather eat it, so stop trying. + finish_action(controller, FALSE) + return + + if(in_range(living_pawn, fetch_thing)) + finish_action(controller, TRUE) + return + + finish_action(controller, FALSE) + +/datum/ai_behavior/fetch/finish_action(datum/ai_controller/controller, success) + . = ..() + + if(!success) //Don't try again on this item if we failed + var/obj/item/target = controller.blackboard[BB_FETCH_TARGET] + if(target) + controller.blackboard[BB_FETCH_IGNORE_LIST][target] = TRUE + controller.blackboard[BB_FETCH_TARGET] = null + controller.blackboard[BB_FETCH_DELIVER_TO] = null + + +/// This is simply a behaviour to pick up a fetch target +/datum/ai_behavior/simple_equip/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/obj/item/fetch_target = controller.blackboard[BB_FETCH_TARGET] + if(!isturf(fetch_target?.loc)) // someone picked it up or something happened to it + finish_action(controller, FALSE) + return + + if(in_range(controller.pawn, fetch_target)) + pickup_item(controller, fetch_target) + finish_action(controller, TRUE) + else + finish_action(controller, FALSE) + +/datum/ai_behavior/simple_equip/finish_action(datum/ai_controller/controller, success) + . = ..() + controller.blackboard[BB_FETCH_TARGET] = null + +/datum/ai_behavior/simple_equip/proc/pickup_item(datum/ai_controller/controller, obj/item/target) + var/atom/pawn = controller.pawn + drop_item(controller) + pawn.visible_message("[pawn] picks up [target] in [pawn.p_their()] mouth.") + target.forceMove(pawn) + controller.blackboard[BB_SIMPLE_CARRY_ITEM] = target + return TRUE + +/datum/ai_behavior/simple_equip/proc/drop_item(datum/ai_controller/controller) + var/obj/item/carried_item = controller.blackboard[BB_SIMPLE_CARRY_ITEM] + if(!carried_item) + return + + var/atom/pawn = controller.pawn + pawn.visible_message("[pawn] drops [carried_item].") + carried_item.forceMove(get_turf(pawn)) + controller.blackboard[BB_SIMPLE_CARRY_ITEM] = null + return TRUE + + + +/// This behavior involves dropping off a carried item to a specified person (or place) +/datum/ai_behavior/deliver_item + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/deliver_item/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/return_target = controller.blackboard[BB_FETCH_DELIVER_TO] + if(!return_target) + finish_action(controller, FALSE) + if(in_range(controller.pawn, return_target)) + deliver_item(controller) + finish_action(controller, TRUE) + +/datum/ai_behavior/deliver_item/finish_action(datum/ai_controller/controller, success) + . = ..() + controller.blackboard[BB_FETCH_DELIVER_TO] = null + +/// Actually drop the fetched item to the target +/datum/ai_behavior/deliver_item/proc/deliver_item(datum/ai_controller/controller) + var/obj/item/carried_item = controller.blackboard[BB_SIMPLE_CARRY_ITEM] + var/atom/movable/return_target = controller.blackboard[BB_FETCH_DELIVER_TO] + if(!carried_item || !return_target) + finish_action(controller, FALSE) + return + + if(ismob(return_target)) + controller.pawn.visible_message("[controller.pawn] delivers [carried_item] at [return_target]'s feet.") + else // not sure how to best phrase this + controller.pawn.visible_message("[controller.pawn] delivers [carried_item] to [return_target].") + + carried_item.forceMove(get_turf(return_target)) + controller.blackboard[BB_SIMPLE_CARRY_ITEM] = null + return TRUE + +/// This behavior involves either eating a snack we can reach, or begging someone holding a snack +/datum/ai_behavior/eat_snack + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/eat_snack/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/obj/item/snack = controller.current_movement_target + if(!istype(snack) || !IS_EDIBLE(snack) || !(isturf(snack.loc) || ishuman(snack.loc))) + finish_action(controller, FALSE) + + var/mob/living/living_pawn = controller.pawn + if(!in_range(living_pawn, snack)) + return + + if(isturf(snack.loc)) + snack.attack_animal(living_pawn) // snack attack! + else if(iscarbon(snack.loc) && DT_PROB(10, delta_time)) + living_pawn.manual_emote("stares at [snack.loc]'s [snack.name] with a sad puppy-face.") + + if(QDELETED(snack)) // we ate it! + finish_action(controller, TRUE) + + +/// This behavior involves either eating a snack we can reach, or begging someone holding a snack +/datum/ai_behavior/play_dead + behavior_flags = NONE + +/datum/ai_behavior/play_dead/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/simple_animal/simple_pawn = controller.pawn + if(!istype(simple_pawn)) + return + + if(!controller.blackboard[BB_DOG_PLAYING_DEAD]) + controller.blackboard[BB_DOG_PLAYING_DEAD] = TRUE + simple_pawn.emote("deathgasp", intentional=FALSE) + simple_pawn.icon_state = simple_pawn.icon_dead + if(simple_pawn.flip_on_death) + simple_pawn.transform = simple_pawn.transform.Turn(180) + simple_pawn.density = FALSE + + if(DT_PROB(10, delta_time)) + finish_action(controller, TRUE) + +/datum/ai_behavior/play_dead/finish_action(datum/ai_controller/controller, succeeded) + . = ..() + var/mob/living/simple_animal/simple_pawn = controller.pawn + if(!istype(simple_pawn) || simple_pawn.stat) // imagine actually dying while playing dead. hell, imagine being the kid waiting for your pup to get back up :( + return + controller.blackboard[BB_DOG_PLAYING_DEAD] = FALSE + simple_pawn.visible_message("[simple_pawn] springs to [simple_pawn.p_their()] feet, panting excitedly!") + simple_pawn.icon_state = simple_pawn.icon_living + if(simple_pawn.flip_on_death) + simple_pawn.transform = simple_pawn.transform.Turn(180) + simple_pawn.density = initial(simple_pawn.density) + +/// This behavior involves either eating a snack we can reach, or begging someone holding a snack +/datum/ai_behavior/harass + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM + required_distance = 3 + +/datum/ai_behavior/harass/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/living_pawn = controller.pawn + if(!istype(living_pawn)) + return + + var/atom/movable/harass_target = controller.blackboard[BB_DOG_HARASS_TARGET] + if(!harass_target || !can_see(living_pawn, harass_target, length=AI_DOG_VISION_RANGE)) + finish_action(controller, FALSE) + return + + if(controller.blackboard[BB_DOG_FRIENDS][harass_target]) + living_pawn.visible_message("[living_pawn] looks sideways at [harass_target] for a moment, then shakes [living_pawn.p_their()] head and ceases aggression.") + finish_action(controller, FALSE) + return + + var/mob/living/living_target = harass_target + if(istype(living_target) && (living_target.stat || HAS_TRAIT(living_target, TRAIT_FAKEDEATH))) + finish_action(controller, TRUE) + return + + // subtypes of this behavior can change behavior for how eager/averse the pawn is to attack the target as opposed to falling back/making noise/getting help + if(in_range(living_pawn, living_target)) + attack(controller, living_target) + else if(DT_PROB(50, delta_time)) + living_pawn.manual_emote("[pick("barks", "growls", "stares")] menacingly at [harass_target]!") + +/datum/ai_behavior/harass/finish_action(datum/ai_controller/controller, succeeded) + . = ..() + controller.blackboard[BB_DOG_HARASS_TARGET] = null + +/// A proc representing when the mob is pushed to actually attack the target. Again, subtypes can be used to represent different attacks from different animals, or it can be some other generic behavior +/datum/ai_behavior/harass/proc/attack(datum/ai_controller/controller, mob/living/living_target) + var/mob/living/living_pawn = controller.pawn + if(!istype(living_pawn)) + return + living_pawn.do_attack_animation(living_target, ATTACK_EFFECT_BITE) + living_target.visible_message("[living_pawn] bites at [living_target]!", "[living_pawn] bites at you!", vision_distance = COMBAT_MESSAGE_RANGE) + if(istype(living_target)) + living_target.take_bodypart_damage(rand(5, 10)) + log_combat(living_pawn, living_target, "bit (AI)") diff --git a/code/datums/ai/dog/dog_controller.dm b/code/datums/ai/dog/dog_controller.dm new file mode 100644 index 000000000000..5cd65654db7c --- /dev/null +++ b/code/datums/ai/dog/dog_controller.dm @@ -0,0 +1,271 @@ +/datum/ai_controller/dog + blackboard = list(\ + BB_SIMPLE_CARRY_ITEM = null,\ + BB_FETCH_TARGET = null,\ + BB_FETCH_DELIVER_TO = null,\ + BB_DOG_FRIENDS = list(),\ + BB_FETCH_IGNORE_LIST = list(),\ + BB_DOG_ORDER_MODE = DOG_COMMAND_NONE,\ + BB_DOG_PLAYING_DEAD = FALSE,\ + BB_DOG_HARASS_TARGET = null) + ai_movement = /datum/ai_movement/jps + planning_subtrees = list(/datum/ai_planning_subtree/dog) + + COOLDOWN_DECLARE(heel_cooldown) + COOLDOWN_DECLARE(command_cooldown) + +/datum/ai_controller/dog/process(delta_time) + if(ismob(pawn)) + var/mob/living/living_pawn = pawn + movement_delay = living_pawn.cached_multiplicative_slowdown + return ..() + +/datum/ai_controller/dog/TryPossessPawn(atom/new_pawn) + if(!isliving(new_pawn)) + return AI_CONTROLLER_INCOMPATIBLE + + RegisterSignal(new_pawn, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(new_pawn, COMSIG_PARENT_EXAMINE, PROC_REF(on_examined)) + RegisterSignal(new_pawn, COMSIG_CLICK_ALT, PROC_REF(check_altclicked)) + RegisterSignal(SSdcs, COMSIG_GLOB_CARBON_THROW_THING, PROC_REF(listened_throw)) + return ..() //Run parent at end + +/datum/ai_controller/dog/UnpossessPawn(destroy) + UnregisterSignal(pawn, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_PARENT_EXAMINE, COMSIG_GLOB_CARBON_THROW_THING, COMSIG_CLICK_ALT)) + return ..() //Run parent at end + +/datum/ai_controller/dog/able_to_run() + var/mob/living/living_pawn = pawn + + if(IS_DEAD_OR_INCAP(living_pawn)) + return FALSE + return ..() + +/datum/ai_controller/dog/get_access() + var/mob/living/simple_animal/simple_pawn = pawn + if(!istype(simple_pawn)) + return + + return simple_pawn.access_card + + +/datum/ai_controller/dog/PerformIdleBehavior(delta_time) + var/mob/living/living_pawn = pawn + if(!isturf(living_pawn.loc) || living_pawn.pulledby) + return + + // if we were just ordered to heel, chill out for a bit + if(!COOLDOWN_FINISHED(src, heel_cooldown)) + return + + // if we're just ditzing around carrying something, occasionally print a message so people know we have something + if(blackboard[BB_SIMPLE_CARRY_ITEM] && DT_PROB(5, delta_time)) + var/obj/item/carry_item = blackboard[BB_SIMPLE_CARRY_ITEM] + living_pawn.visible_message("[living_pawn] gently teethes on \the [carry_item] in [living_pawn.p_their()] mouth.", vision_distance=COMBAT_MESSAGE_RANGE) + + if(DT_PROB(5, delta_time) && (living_pawn.mobility_flags & MOBILITY_MOVE)) + var/move_dir = pick(GLOB.alldirs) + living_pawn.Move(get_step(living_pawn, move_dir), move_dir) + else if(DT_PROB(10, delta_time)) + living_pawn.manual_emote(pick("dances around.","chases [living_pawn.p_their()] tail!")) + living_pawn.AddComponent(/datum/component/spinny) + +/// Someone has thrown something, see if it's someone we care about and start listening to the thrown item so we can see if we want to fetch it when it lands +/datum/ai_controller/dog/proc/listened_throw(datum/source, mob/living/carbon/carbon_thrower) + SIGNAL_HANDLER + if(blackboard[BB_FETCH_TARGET] || blackboard[BB_FETCH_DELIVER_TO] || blackboard[BB_DOG_PLAYING_DEAD]) // we're already busy + return + if(!COOLDOWN_FINISHED(src, heel_cooldown)) + return + if(!can_see(pawn, carbon_thrower, length=AI_DOG_VISION_RANGE)) + return + var/obj/item/thrown_thing = carbon_thrower.get_active_held_item() + if(!isitem(thrown_thing)) + return + if(blackboard[BB_FETCH_IGNORE_LIST][thrown_thing]) + return + + RegisterSignal(thrown_thing, COMSIG_MOVABLE_THROW_LANDED, PROC_REF(listen_throw_land)) + +/// A throw we were listening to has finished, see if it's in range for us to try grabbing it +/datum/ai_controller/dog/proc/listen_throw_land(obj/item/thrown_thing, datum/thrownthing/throwing_datum) + SIGNAL_HANDLER + + UnregisterSignal(thrown_thing, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_THROW_LANDED)) + if(!istype(thrown_thing) || !isturf(thrown_thing.loc) || !can_see(pawn, thrown_thing, length=AI_DOG_VISION_RANGE)) + return + + current_movement_target = thrown_thing + blackboard[BB_FETCH_TARGET] = thrown_thing + blackboard[BB_FETCH_DELIVER_TO] = throwing_datum.thrower + LAZYADD(current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/fetch)) + +/// Someone's interacting with us by hand, see if they're being nice or mean +/datum/ai_controller/dog/proc/on_attack_hand(datum/source, mob/living/user) + SIGNAL_HANDLER + + if(user.a_intent == INTENT_HARM) + unfriend(user) + else + if(prob(AI_DOG_PET_FRIEND_PROB)) + befriend(user) + // if the dog has something in their mouth that they're not bringing to someone for whatever reason, have them drop it when pet by a friend + var/list/friends = blackboard[BB_DOG_FRIENDS] + if(blackboard[BB_SIMPLE_CARRY_ITEM] && !current_movement_target && friends[user]) + var/obj/item/carried_item = blackboard[BB_SIMPLE_CARRY_ITEM] + pawn.visible_message("[pawn] drops [carried_item] at [user]'s feet!") + // maybe have a dedicated proc for dropping things + carried_item.forceMove(get_turf(user)) + blackboard[BB_SIMPLE_CARRY_ITEM] = null + +/// Someone is being nice to us, let's make them a friend! +/datum/ai_controller/dog/proc/befriend(mob/living/new_friend) + var/list/friends = blackboard[BB_DOG_FRIENDS] + if(friends[new_friend]) + return + if(in_range(pawn, new_friend)) + new_friend.visible_message("[pawn] licks at [new_friend] in a friendly manner!", "[pawn] licks at you in a friendly manner!") + friends[new_friend] = TRUE + RegisterSignal(new_friend, COMSIG_MOB_POINTED, PROC_REF(check_point)) + RegisterSignal(new_friend, COMSIG_MOB_SAY, PROC_REF(check_verbal_command)) + +/// Someone is being mean to us, take them off our friends (add actual enemies behavior later) +/datum/ai_controller/dog/proc/unfriend(mob/living/ex_friend) + var/list/friends = blackboard[BB_DOG_FRIENDS] + friends[ex_friend] = null + UnregisterSignal(ex_friend, list(COMSIG_MOB_POINTED, COMSIG_MOB_SAY)) + +/// Someone is looking at us, if we're currently carrying something then show what it is, and include a message if they're our friend +/datum/ai_controller/dog/proc/on_examined(datum/source, mob/user, list/examine_text) + SIGNAL_HANDLER + + var/obj/item/carried_item = blackboard[BB_SIMPLE_CARRY_ITEM] + if(carried_item) + examine_text += "[pawn.p_they(TRUE)] [pawn.p_are()] carrying [carried_item.get_examine_string(user)] in [pawn.p_their()] mouth." + if(blackboard[BB_DOG_FRIENDS][user]) + examine_text += "[pawn.p_they(TRUE)] seem[pawn.p_s()] happy to see you!" + +/// If we died, drop anything we were carrying +/datum/ai_controller/dog/proc/on_death(mob/living/ol_yeller) + SIGNAL_HANDLER + + var/obj/item/carried_item = blackboard[BB_SIMPLE_CARRY_ITEM] + if(!carried_item) + return + + ol_yeller.visible_message("[ol_yeller] drops [carried_item] as [ol_yeller.p_they()] die[ol_yeller.p_s()].") + carried_item.forceMove(get_turf(ol_yeller)) + blackboard[BB_SIMPLE_CARRY_ITEM] = null + +// next section is regarding commands + +/// Someone alt clicked us, see if they're someone we should show the radial command menu to +/datum/ai_controller/dog/proc/check_altclicked(datum/source, mob/living/clicker) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, command_cooldown)) + return + if(!istype(clicker) || !blackboard[BB_DOG_FRIENDS][clicker]) + return + . = COMPONENT_CANCEL_CLICK_ALT + INVOKE_ASYNC(src, PROC_REF(command_radial), clicker) + +/// Show the command radial menu +/datum/ai_controller/dog/proc/command_radial(mob/living/clicker) + var/list/commands = list( + COMMAND_HEEL = image(icon = 'icons/Testing/turf_analysis.dmi', icon_state = "red_arrow"), + COMMAND_FETCH = image(icon = 'icons/mob/actions/actions_spells.dmi', icon_state = "summons"), + COMMAND_ATTACK = image(icon = 'icons/effects/effects.dmi', icon_state = "bite"), + COMMAND_DIE = image(icon = 'icons/mob/pets.dmi', icon_state = "puppy_dead") + ) + + var/choice = show_radial_menu(clicker, pawn, commands, custom_check = CALLBACK(src, PROC_REF(check_menu), clicker), tooltips = TRUE) + if(!choice || !check_menu(clicker)) + return + set_command_mode(clicker, choice) + +/datum/ai_controller/dog/proc/check_menu(mob/user) + if(!istype(user)) + CRASH("A non-mob is trying to issue an order to [pawn].") + if(user.incapacitated() || !can_see(user, pawn)) + return FALSE + return TRUE + +/// One of our friends said something, see if it's a valid command, and if so, take action +/datum/ai_controller/dog/proc/check_verbal_command(mob/speaker, speech_args) + SIGNAL_HANDLER + + if(!blackboard[BB_DOG_FRIENDS][speaker]) + return + + if(!COOLDOWN_FINISHED(src, command_cooldown)) + return + + var/spoken_text = speech_args[SPEECH_MESSAGE] // probably should check for full words + var/command + if(findtext(spoken_text, "heel") || findtext(spoken_text, "sit") || findtext(spoken_text, "stay")) + command = COMMAND_HEEL + else if(findtext(spoken_text, "fetch") || findtext(spoken_text, "get it")) + command = COMMAND_FETCH + else if(findtext(spoken_text, "attack") || findtext(spoken_text, "sic")) + command = COMMAND_ATTACK + else if(findtext(spoken_text, "play dead")) + command = COMMAND_DIE + else + return + + if(!can_see(pawn, speaker, length=AI_DOG_VISION_RANGE)) + return + set_command_mode(speaker, command) + +/// Whether we got here via radial menu or a verbal command, this is where we actually process what our new command will be +/datum/ai_controller/dog/proc/set_command_mode(mob/commander, command) + COOLDOWN_START(src, command_cooldown, AI_DOG_COMMAND_COOLDOWN) + + switch(command) + // heel: stop what you're doing, relax and try not to do anything for a little bit + if(COMMAND_HEEL) + pawn.visible_message("[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] sit[pawn.p_s()] down obediently, awaiting further orders.") + blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_NONE + COOLDOWN_START(src, heel_cooldown, AI_DOG_HEEL_DURATION) + CancelActions() + // fetch: whatever the commander points to, try and bring it back + if(COMMAND_FETCH) + pawn.visible_message("[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] bounce[pawn.p_s()] slightly in anticipation.") + blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_FETCH + // attack: harass whoever the commander points to + if(COMMAND_ATTACK) + pawn.visible_message("[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] growl[pawn.p_s()] intensely.") // imagine getting intimidated by a corgi + blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_ATTACK + if(COMMAND_DIE) + blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_NONE + CancelActions() + LAZYADD(current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/play_dead)) + +/// Someone we like is pointing at something, see if it's something we might want to interact with (like if they might want us to fetch something for them) +/datum/ai_controller/dog/proc/check_point(mob/pointing_friend, atom/movable/pointed_movable) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, command_cooldown)) + return + if(pointed_movable == pawn || blackboard[BB_FETCH_TARGET] || !istype(pointed_movable) || blackboard[BB_DOG_ORDER_MODE] == DOG_COMMAND_NONE) // busy or no command + return + if(!can_see(pawn, pointing_friend, length=AI_DOG_VISION_RANGE) || !can_see(pawn, pointed_movable, length=AI_DOG_VISION_RANGE)) + return + + COOLDOWN_START(src, command_cooldown, AI_DOG_COMMAND_COOLDOWN) + + switch(blackboard[BB_DOG_ORDER_MODE]) + if(DOG_COMMAND_FETCH) + if(ismob(pointed_movable) || pointed_movable.anchored) + return + pawn.visible_message("[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and barks excitedly!") + current_movement_target = pointed_movable + blackboard[BB_FETCH_TARGET] = pointed_movable + blackboard[BB_FETCH_DELIVER_TO] = pointing_friend + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/fetch) + if(DOG_COMMAND_ATTACK) + pawn.visible_message("[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and growls intensely!") + current_movement_target = pointed_movable + blackboard[BB_DOG_HARASS_TARGET] = pointed_movable + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/harass) diff --git a/code/datums/ai/dog/dog_subtrees.dm b/code/datums/ai/dog/dog_subtrees.dm new file mode 100644 index 000000000000..1eab7b87251b --- /dev/null +++ b/code/datums/ai/dog/dog_subtrees.dm @@ -0,0 +1,40 @@ +/datum/ai_planning_subtree/dog + COOLDOWN_DECLARE(heel_cooldown) + COOLDOWN_DECLARE(reset_ignore_cooldown) + +/datum/ai_planning_subtree/dog/SelectBehaviors(datum/ai_controller/dog/controller, delta_time) + var/mob/living/living_pawn = controller.pawn + + // occasionally reset our ignore list + if(COOLDOWN_FINISHED(src, reset_ignore_cooldown) && length(controller.blackboard[BB_FETCH_IGNORE_LIST])) + COOLDOWN_START(src, reset_ignore_cooldown, AI_FETCH_IGNORE_DURATION) + controller.blackboard[BB_FETCH_IGNORE_LIST] = list() + + // if we were just ordered to heel, chill out for a bit + if(!COOLDOWN_FINISHED(src, heel_cooldown)) + return + + // if we're not already carrying something and we have a fetch target (and we're not already doing something with it), see if we can eat/equip it + if(!controller.blackboard[BB_SIMPLE_CARRY_ITEM] && controller.blackboard[BB_FETCH_TARGET]) + var/atom/movable/interact_target = controller.blackboard[BB_FETCH_TARGET] + if(in_range(living_pawn, interact_target) && (isturf(interact_target.loc))) + controller.current_movement_target = interact_target + if(IS_EDIBLE(interact_target)) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/eat_snack)) + else if(isitem(interact_target)) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/simple_equip)) + else + controller.blackboard[BB_FETCH_TARGET] = null + controller.blackboard[BB_FETCH_DELIVER_TO] = null + return + + // if we're carrying something and we have a destination to deliver it, do that + if(controller.blackboard[BB_SIMPLE_CARRY_ITEM] && controller.blackboard[BB_FETCH_DELIVER_TO]) + var/atom/return_target = controller.blackboard[BB_FETCH_DELIVER_TO] + if(!can_see(controller.pawn, return_target, length=AI_DOG_VISION_RANGE)) + // if the return target isn't in sight, we'll just forget about it and carry the thing around + controller.blackboard[BB_FETCH_DELIVER_TO] = null + return + controller.current_movement_target = return_target + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/deliver_item)) + return diff --git a/code/datums/ai/generic_actions.dm b/code/datums/ai/generic_actions.dm new file mode 100644 index 000000000000..fdcc978857fd --- /dev/null +++ b/code/datums/ai/generic_actions.dm @@ -0,0 +1,111 @@ + +/datum/ai_behavior/resist/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/living_pawn = controller.pawn + living_pawn.resist() + finish_action(controller, TRUE) + +/datum/ai_behavior/battle_screech + ///List of possible screeches the behavior has + var/list/screeches + +/datum/ai_behavior/battle_screech/perform(delta_time, datum/ai_controller/controller) + var/mob/living/living_pawn = controller.pawn + INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick(screeches)) + finish_action(controller, TRUE) + +/// Use in hand the currently held item +/datum/ai_behavior/use_in_hand + behavior_flags = AI_BEHAVIOR_MOVE_AND_PERFORM + +/datum/ai_behavior/use_in_hand/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/pawn = controller.pawn + var/obj/item/held = pawn.get_item_by_slot(pawn.get_active_hand()) + if(!held) + finish_action(controller, FALSE) + return + pawn.activate_hand(pawn.get_active_hand()) + finish_action(controller, TRUE) + +/// Use the currently held item, or unarmed, on an object in the world +/datum/ai_behavior/use_on_object + required_distance = 1 + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/use_on_object/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/pawn = controller.pawn + var/obj/item/held_item = pawn.get_item_by_slot(pawn.get_active_hand()) + var/atom/target = controller.current_movement_target + + if(!target || !pawn.CanReach(target)) + finish_action(controller, FALSE) + return + + pawn.a_intent = INTENT_HELP + + if(held_item) + held_item.melee_attack_chain(pawn, target) + else + pawn.UnarmedAttack(target, TRUE) + + finish_action(controller, TRUE) + +/datum/ai_behavior/give + required_distance = 1 + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/give/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/pawn = controller.pawn + var/obj/item/held_item = pawn.get_item_by_slot(pawn.get_active_hand()) + var/atom/target = controller.current_movement_target + + if(!target || !pawn.CanReach(target) || !isliving(target)) + finish_action(controller, FALSE) + return + + var/mob/living/living_target = target + controller.PauseAi(1.5 SECONDS) + living_target.visible_message( + "[pawn] starts trying to give [held_item] to [living_target]!", + "[pawn] tries to give you [held_item]!" + ) + if(!do_after(pawn, 1 SECONDS, living_target)) + return + if(QDELETED(held_item) || QDELETED(living_target)) + finish_action(controller, FALSE) + return + var/pocket_choice = prob(50) ? ITEM_SLOT_RPOCKET : ITEM_SLOT_LPOCKET + if(prob(50) && living_target.can_put_in_hand(held_item)) + living_target.put_in_hand(held_item) + else if(held_item.mob_can_equip(living_target, pawn, pocket_choice, TRUE)) + living_target.equip_to_slot(held_item, pocket_choice) + + finish_action(controller, TRUE) + +/datum/ai_behavior/consume + required_distance = 1 + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + action_cooldown = 2 SECONDS + +/datum/ai_behavior/consume/setup(datum/ai_controller/controller, obj/item/target) + . = ..() + controller.current_movement_target = target + +/datum/ai_behavior/consume/perform(delta_time, datum/ai_controller/controller, obj/item/target) + . = ..() + var/mob/living/pawn = controller.pawn + + if(!(target in pawn.held_items)) + if(!pawn.put_in_hand_check(target)) + finish_action(controller, FALSE) + return + + pawn.put_in_hands(target) + + target.melee_attack_chain(pawn, pawn) + + if(QDELETED(target) || prob(10)) // Even if we don't finish it all we can randomly decide to be done + finish_action(controller, TRUE) diff --git a/code/datums/ai/monkey/monkey_behaviors.dm b/code/datums/ai/monkey/monkey_behaviors.dm new file mode 100644 index 000000000000..822dae22eb23 --- /dev/null +++ b/code/datums/ai/monkey/monkey_behaviors.dm @@ -0,0 +1,279 @@ +/datum/ai_behavior/battle_screech/monkey + screeches = list("roar","screech") + +/datum/ai_behavior/monkey_equip + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success) + . = ..() + + if(!success) //Don't try again on this item if we failed + var/list/item_blacklist = controller.blackboard[BB_MONKEY_BLACKLISTITEMS] + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + + item_blacklist[target] = TRUE + + controller.blackboard[BB_MONKEY_PICKUPTARGET] = null + +/datum/ai_behavior/monkey_equip/proc/equip_item(datum/ai_controller/controller) + var/mob/living/living_pawn = controller.pawn + + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + var/best_force = controller.blackboard[BB_MONKEY_BEST_FORCE_FOUND] + + if(!target) + finish_action(controller, FALSE) + return + + if(target.anchored) //Can't pick it up, so stop trying. + finish_action(controller, FALSE) + return + + // Strong weapon + else if(target.force > best_force) + living_pawn.drop_all_held_items() + living_pawn.put_in_hands(target) + controller.blackboard[BB_MONKEY_BEST_FORCE_FOUND] = target.force + finish_action(controller, TRUE) + return + + else if(target.slot_flags) //Clothing == top priority + living_pawn.dropItemToGround(target, TRUE) + living_pawn.update_icons() + if(!living_pawn.equip_to_appropriate_slot(target)) + finish_action(controller, FALSE) + return //Already wearing something, in the future this should probably replace the current item but the code didn't actually do that, and I dont want to support it right now. + finish_action(controller, TRUE) + return + + // EVERYTHING ELSE + else if(living_pawn.get_empty_held_index_for_side(LEFT_HANDS) || living_pawn.get_empty_held_index_for_side(RIGHT_HANDS)) + living_pawn.put_in_hands(target) + finish_action(controller, TRUE) + return + + finish_action(controller, FALSE) + +/datum/ai_behavior/monkey_equip/ground + required_distance = 0 + +/datum/ai_behavior/monkey_equip/ground/perform(delta_time, datum/ai_controller/controller) + equip_item(controller) + +/datum/ai_behavior/monkey_equip/pickpocket + +/datum/ai_behavior/monkey_equip/pickpocket/perform(delta_time, datum/ai_controller/controller) + + if(controller.blackboard[BB_MONKEY_PICKPOCKETING]) //We are pickpocketing, don't do ANYTHING!!!! + return + INVOKE_ASYNC(src, PROC_REF(attempt_pickpocket), controller) + +/datum/ai_behavior/monkey_equip/pickpocket/proc/attempt_pickpocket(datum/ai_controller/controller) + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + + var/mob/living/victim = target.loc + + var/mob/living/living_pawn = controller.pawn + + victim.visible_message("[living_pawn] starts trying to take [target] from [victim]!", "[living_pawn] tries to take [target]!") + + controller.blackboard[BB_MONKEY_PICKPOCKETING] = TRUE + + var/success = FALSE + + if(do_after(living_pawn, MONKEY_ITEM_SNATCH_DELAY, victim) && target) + + for(var/obj/item/I in victim.held_items) + if(I == target) + victim.visible_message("[living_pawn] snatches [target] from [victim].", "[living_pawn] snatched [target]!") + if(victim.temporarilyRemoveItemFromInventory(target)) + if(!QDELETED(target) && !equip_item(controller)) + target.forceMove(living_pawn.drop_location()) + success = TRUE + break + else + victim.visible_message("[living_pawn] tried to snatch [target] from [victim], but failed!", "[living_pawn] tried to grab [target]!") + + finish_action(controller, success) //We either fucked up or got the item. + +/datum/ai_behavior/monkey_equip/pickpocket/finish_action(datum/ai_controller/controller, success) + . = ..() + controller.blackboard[BB_MONKEY_PICKPOCKETING] = FALSE + controller.blackboard[BB_MONKEY_PICKUPTARGET] = null + +/datum/ai_behavior/monkey_flee + +/datum/ai_behavior/monkey_flee/perform(delta_time, datum/ai_controller/controller) + . = ..() + + var/mob/living/living_pawn = controller.pawn + + if(living_pawn.health >= MONKEY_FLEE_HEALTH) + finish_action(controller, TRUE) //we're back in bussiness + + var/mob/living/target = null + + // flee from anyone who attacked us and we didn't beat down + for(var/mob/living/L in view(living_pawn, MONKEY_FLEE_VISION)) + if(controller.blackboard[BB_MONKEY_ENEMIES][L] && L.stat == CONSCIOUS) + target = L + break + + if(target) + walk_away(living_pawn, target, MONKEY_ENEMY_VISION, 5) + else + finish_action(controller, TRUE) + +/datum/ai_behavior/monkey_attack_mob + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration + +/datum/ai_behavior/monkey_attack_mob/perform(delta_time, datum/ai_controller/controller) + . = ..() + + var/mob/living/target = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/mob/living/living_pawn = controller.pawn + + if(!target || target.stat != CONSCIOUS) + finish_action(controller, TRUE) //Target == owned + + if(isturf(target.loc) && !IS_DEAD_OR_INCAP(living_pawn)) // Check if they're a valid target + // check if target has a weapon + var/obj/item/W + for(var/obj/item/I in target.held_items) + if(!(I.item_flags & ABSTRACT)) + W = I + break + + // if the target has a weapon, chance to disarm them + if(W && DT_PROB(MONKEY_ATTACK_DISARM_PROB, delta_time)) + living_pawn.a_intent = INTENT_DISARM + monkey_attack(controller, target, delta_time) + else + living_pawn.a_intent = INTENT_HARM + monkey_attack(controller, target, delta_time) + + +/datum/ai_behavior/monkey_attack_mob/finish_action(datum/ai_controller/controller, succeeded) + . = ..() + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = null + +/// attack using a held weapon otherwise bite the enemy, then if we are angry there is a chance we might calm down a little +/datum/ai_behavior/monkey_attack_mob/proc/monkey_attack(datum/ai_controller/controller, mob/living/target, delta_time) + var/mob/living/living_pawn = controller.pawn + + if(living_pawn.next_move > world.time) + return + + living_pawn.changeNext_move(CLICK_CD_MELEE) //We play fair + + var/obj/item/weapon = locate(/obj/item) in living_pawn.held_items + + living_pawn.face_atom(target) + + if(isnull(controller.blackboard[BB_MONKEY_GUN_WORKED])) + controller.blackboard[BB_MONKEY_GUN_WORKED] = TRUE + + living_pawn.a_intent = INTENT_HARM + if(living_pawn.CanReach(target, weapon)) + if(weapon) + weapon.melee_attack_chain(living_pawn, target) + else + target.attack_paw(living_pawn) + controller.blackboard[BB_MONKEY_GUN_WORKED] = TRUE // We reset their memory of the gun being 'broken' if they accomplish some other attack + else if(weapon) + var/atom/real_target = target + if(prob(10)) // Artificial miss + real_target = pick(oview(2, target)) + + var/obj/item/gun/gun = locate() in living_pawn.held_items + var/can_shoot = gun?.can_shoot() || FALSE + if(gun && controller.blackboard[BB_MONKEY_GUN_WORKED] && prob(95)) + // We attempt to attack even if we can't shoot so we get the effects of pulling the trigger + gun.afterattack(real_target, living_pawn, FALSE) + controller.blackboard[BB_MONKEY_GUN_WORKED] = can_shoot ? TRUE : prob(80) // Only 20% likely to notice it didn't work + if(can_shoot) + controller.blackboard[BB_MONKEY_GUN_NEURONS_ACTIVATED] = TRUE + else + living_pawn.throw_item(real_target) + controller.blackboard[BB_MONKEY_GUN_WORKED] = TRUE // 'worked' + + + + // no de-aggro + if(controller.blackboard[BB_MONKEY_AGRESSIVE]) + return + + if(DT_PROB(MONKEY_HATRED_REDUCTION_PROB, delta_time)) + controller.blackboard[BB_MONKEY_ENEMIES][target]-- + + // if we are not angry at our target, go back to idle + if(controller.blackboard[BB_MONKEY_ENEMIES][target] <= 0) + var/list/enemies = controller.blackboard[BB_MONKEY_ENEMIES] + enemies.Remove(target) + if(controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] == target) + finish_action(controller, TRUE) + +/datum/ai_behavior/disposal_mob + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration + +/datum/ai_behavior/disposal_mob/finish_action(datum/ai_controller/controller, succeeded) + . = ..() + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = null //Reset attack target + controller.blackboard[BB_MONKEY_DISPOSING] = FALSE //No longer disposing + controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] = null //No target disposal + +/datum/ai_behavior/disposal_mob/perform(delta_time, datum/ai_controller/controller) + . = ..() + + if(controller.blackboard[BB_MONKEY_DISPOSING]) //We are disposing, don't do ANYTHING!!!! + return + + var/mob/living/target = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/mob/living/living_pawn = controller.pawn + + controller.current_movement_target = target + + if(target.pulledby != living_pawn && !HAS_AI_CONTROLLER_TYPE(target.pulledby, /datum/ai_controller/monkey)) //Dont steal from my fellow monkeys. + if(living_pawn.Adjacent(target) && isturf(target.loc)) + living_pawn.a_intent = INTENT_GRAB + target.grabbedby(living_pawn) + return //Do the rest next turn + + var/obj/machinery/disposal/disposal = controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] + controller.current_movement_target = disposal + + if(living_pawn.Adjacent(disposal)) + INVOKE_ASYNC(src, PROC_REF(try_disposal_mob), controller) //put him in! + else //This means we might be getting pissed! + return + +/datum/ai_behavior/disposal_mob/proc/try_disposal_mob(datum/ai_controller/controller) + var/mob/living/living_pawn = controller.pawn + var/mob/living/target = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/obj/machinery/disposal/disposal = controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] + + controller.blackboard[BB_MONKEY_DISPOSING] = TRUE + + if(target && disposal?.stuff_mob_in(target, living_pawn)) + disposal.flush() + finish_action(controller, TRUE) + + +/datum/ai_behavior/recruit_monkeys/perform(delta_time, datum/ai_controller/controller) + . = ..() + + controller.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] = world.time + MONKEY_RECRUIT_COOLDOWN + var/mob/living/living_pawn = controller.pawn + + for(var/mob/living/L in view(living_pawn, MONKEY_ENEMY_VISION)) + if(!HAS_AI_CONTROLLER_TYPE(L, /datum/ai_controller/monkey)) + continue + + if(!DT_PROB(MONKEY_RECRUIT_PROB, delta_time)) + continue + var/datum/ai_controller/monkey/monkey_ai = L.ai_controller + var/atom/your_enemy = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/list/enemies = L.ai_controller.blackboard[BB_MONKEY_ENEMIES] + enemies[your_enemy] = MONKEY_RECRUIT_HATED_AMOUNT + monkey_ai.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] = world.time + MONKEY_RECRUIT_COOLDOWN + finish_action(controller, TRUE) diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm new file mode 100644 index 000000000000..4cb8605d185f --- /dev/null +++ b/code/datums/ai/monkey/monkey_controller.dm @@ -0,0 +1,255 @@ +/* +AI controllers are a datumized form of AI that simulates the input a player would otherwise give to a mob. What this means is that these datums +have ways of interacting with a specific mob and control it. +*/ +///OOK OOK OOK + +/datum/ai_controller/monkey + movement_delay = 0.4 SECONDS + planning_subtrees = list(/datum/ai_planning_subtree/monkey_tree) + blackboard = list( + BB_MONKEY_AGRESSIVE = FALSE, + BB_MONKEY_BEST_FORCE_FOUND = 0, + BB_MONKEY_ENEMIES = list(), + BB_MONKEY_BLACKLISTITEMS = list(), + BB_MONKEY_PICKUPTARGET = null, + BB_MONKEY_PICKPOCKETING = FALSE, + BB_MONKEY_DISPOSING = FALSE, + BB_MONKEY_TARGET_DISPOSAL = null, + BB_MONKEY_CURRENT_ATTACK_TARGET = null, + BB_MONKEY_GUN_NEURONS_ACTIVATED = FALSE, + BB_MONKEY_GUN_WORKED = TRUE, + BB_MONKEY_NEXT_HUNGRY = 0 + ) +/datum/ai_controller/monkey/angry + +/datum/ai_controller/monkey/angry/TryPossessPawn(atom/new_pawn) + . = ..() + if(. & AI_CONTROLLER_INCOMPATIBLE) + return + blackboard[BB_MONKEY_AGRESSIVE] = TRUE //Angry cunt + +/datum/ai_controller/monkey/TryPossessPawn(atom/new_pawn) + if(!isliving(new_pawn)) + return AI_CONTROLLER_INCOMPATIBLE + + blackboard[BB_MONKEY_NEXT_HUNGRY] = world.time + rand(0, 300) + + var/mob/living/living_pawn = new_pawn + RegisterSignal(new_pawn, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(new_pawn, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(new_pawn, COMSIG_ATOM_ATTACK_PAW, PROC_REF(on_attack_paw)) + RegisterSignal(new_pawn, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act)) + RegisterSignal(new_pawn, COMSIG_ATOM_HITBY, PROC_REF(on_hitby)) + RegisterSignal(new_pawn, COMSIG_LIVING_START_PULL, PROC_REF(on_startpulling)) + RegisterSignal(new_pawn, COMSIG_LIVING_TRY_SYRINGE, PROC_REF(on_try_syringe)) + RegisterSignal(new_pawn, COMSIG_ATOM_HULK_ATTACK, PROC_REF(on_attack_hulk)) + RegisterSignal(new_pawn, COMSIG_CARBON_CUFF_ATTEMPTED, PROC_REF(on_attempt_cuff)) + RegisterSignal(new_pawn, COMSIG_MOB_MOVESPEED_UPDATED, PROC_REF(update_movespeed)) + RegisterSignal(new_pawn, COMSIG_FOOD_EATEN, PROC_REF(on_eat)) + movement_delay = living_pawn.cached_multiplicative_slowdown + return ..() //Run parent at end + +/datum/ai_controller/monkey/UnpossessPawn(destroy) + UnregisterSignal(pawn, list(COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_LIVING_START_PULL,\ + COMSIG_LIVING_TRY_SYRINGE, COMSIG_ATOM_HULK_ATTACK, COMSIG_CARBON_CUFF_ATTEMPTED, COMSIG_MOB_MOVESPEED_UPDATED)) + return ..() //Run parent at end + +/datum/ai_controller/monkey/able_to_run() + . = ..() + var/mob/living/living_pawn = pawn + + if(IS_DEAD_OR_INCAP(living_pawn)) + return FALSE + +///re-used behavior pattern by monkeys for finding a weapon +/datum/ai_controller/monkey/proc/TryFindWeapon() + var/mob/living/living_pawn = pawn + + if(!locate(/obj/item) in living_pawn.held_items) + blackboard[BB_MONKEY_BEST_FORCE_FOUND] = 0 + + if(blackboard[BB_MONKEY_GUN_NEURONS_ACTIVATED] && (locate(/obj/item/gun) in living_pawn.held_items)) + // We have a gun, what could we possibly want? + return FALSE + + var/obj/item/weapon + var/list/nearby_items = list() + for(var/obj/item/item in oview(2, living_pawn)) + nearby_items += item + + weapon = GetBestWeapon(nearby_items, living_pawn.held_items) + + var/pickpocket = FALSE + for(var/mob/living/carbon/human/human in oview(5, living_pawn)) + var/obj/item/held_weapon = GetBestWeapon(human.held_items + weapon, living_pawn.held_items) + if(held_weapon == weapon) // It's just the same one, not a held one + continue + pickpocket = TRUE + weapon = held_weapon + + if(!weapon || (weapon in living_pawn.held_items)) + return FALSE + + blackboard[BB_MONKEY_PICKUPTARGET] = weapon + current_movement_target = weapon + if(pickpocket) + LAZYADD(current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_equip/pickpocket)) + else + LAZYADD(current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_equip/ground)) + return TRUE + +/// Returns either the best weapon from the given choices or null if held weapons are better +/datum/ai_controller/monkey/proc/GetBestWeapon(list/choices, list/held_weapons) + var/gun_neurons_activated = blackboard[BB_MONKEY_GUN_NEURONS_ACTIVATED] + var/top_force = 0 + var/obj/item/top_force_item + for(var/obj/item/item as anything in held_weapons) + if(!item) + continue + if(blackboard[BB_MONKEY_BLACKLISTITEMS][item]) + continue + if(gun_neurons_activated && istype(item, /obj/item/gun)) + // We have a gun, why bother looking for something inferior + // Also yes it is intentional that monkeys dont know how to pick the best gun + return item + if(item.force > top_force) + top_force = item.force + top_force_item = item + + for(var/obj/item/item as anything in choices) + if(!item) + continue + if(blackboard[BB_MONKEY_BLACKLISTITEMS][item]) + continue + if(gun_neurons_activated && istype(item, /obj/item/gun)) + return item + if(item.force <= top_force) + continue + top_force_item = item + top_force = item.force + + return top_force_item + +/datum/ai_controller/monkey/proc/TryFindFood() + . = FALSE + var/mob/living/living_pawn = pawn + + // Held items + + var/list/food_candidates = list() + for(var/obj/item as anything in living_pawn.held_items) + if(!item || !IsEdible(item)) + continue + food_candidates += item + + for(var/obj/item/candidate in oview(2, living_pawn)) + if(!IsEdible(candidate)) + continue + food_candidates += candidate + + if(length(food_candidates)) + var/obj/item/best_held = GetBestWeapon(null, living_pawn.held_items) + for(var/obj/item/held as anything in living_pawn.held_items) + if(!held || held == best_held) + continue + living_pawn.dropItemToGround(held) + + AddBehavior(/datum/ai_behavior/consume, pick(food_candidates)) + return TRUE + +/datum/ai_controller/monkey/proc/IsEdible(obj/item/thing) + if(IS_EDIBLE(thing)) + return TRUE + if(istype(thing, /obj/item/reagent_containers/food/drinks/drinkingglass)) + var/obj/item/reagent_containers/food/drinks/drinkingglass/glass = thing + if(glass.reagents.total_volume) // The glass has something in it, time to drink the mystery liquid! + return TRUE + return FALSE + +//When idle just kinda fuck around. +/datum/ai_controller/monkey/PerformIdleBehavior(delta_time) + var/mob/living/living_pawn = pawn + + if(DT_PROB(25, delta_time) && (living_pawn.mobility_flags & MOBILITY_MOVE) && isturf(living_pawn.loc) && !living_pawn.pulledby) + step(living_pawn, pick(GLOB.cardinals)) + else if(DT_PROB(5, delta_time)) + INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("screech")) + else if(DT_PROB(1, delta_time)) + INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("scratch","jump","roll","tail")) + +///Reactive events to being hit +/datum/ai_controller/monkey/proc/retaliate(mob/living/L) + var/list/enemies = blackboard[BB_MONKEY_ENEMIES] + enemies[L] += MONKEY_HATRED_AMOUNT + +/datum/ai_controller/monkey/proc/on_attackby(datum/source, obj/item/I, mob/user) + SIGNAL_HANDLER + if(I.force && I.damtype != STAMINA) + retaliate(user) + +/datum/ai_controller/monkey/proc/on_attack_hand(datum/source, mob/living/L) + SIGNAL_HANDLER + if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(L) + else if(L.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) + retaliate(L) + +/datum/ai_controller/monkey/proc/on_attack_paw(datum/source, mob/living/L) + SIGNAL_HANDLER + if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(L) + else if(L.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) + retaliate(L) + +/datum/ai_controller/monkey/proc/on_bullet_act(datum/source, obj/projectile/Proj) + SIGNAL_HANDLER + var/mob/living/living_pawn = pawn + if(istype(Proj , /obj/projectile/beam)||istype(Proj, /obj/projectile/bullet)) + if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) + if(!Proj.nodamage && Proj.damage < living_pawn.health && isliving(Proj.firer)) + retaliate(Proj.firer) + +/datum/ai_controller/monkey/proc/on_hitby(datum/source, atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) + SIGNAL_HANDLER + if(istype(AM, /obj/item)) + var/mob/living/living_pawn = pawn + var/obj/item/I = AM + if(I.throwforce < living_pawn.health && ishuman(I.thrownby)) + var/mob/living/carbon/human/H = I.thrownby + retaliate(H) + +/datum/ai_controller/monkey/proc/on_startpulling(datum/source, atom/movable/puller, state, force) + SIGNAL_HANDLER + var/mob/living/living_pawn = pawn + if(!IS_DEAD_OR_INCAP(living_pawn) && prob(MONKEY_PULL_AGGRO_PROB)) // nuh uh you don't pull me! + retaliate(living_pawn.pulledby) + return TRUE + +/datum/ai_controller/monkey/proc/on_try_syringe(datum/source, mob/user) + SIGNAL_HANDLER + // chance of monkey retaliation + if(prob(MONKEY_SYRINGE_RETALIATION_PROB)) + retaliate(user) + +/datum/ai_controller/monkey/proc/on_attack_hulk(datum/source, mob/user) + SIGNAL_HANDLER + retaliate(user) + +/datum/ai_controller/monkey/proc/on_attempt_cuff(datum/source, mob/user) + SIGNAL_HANDLER + // chance of monkey retaliation + if(prob(MONKEY_CUFF_RETALIATION_PROB)) + retaliate(user) + +/datum/ai_controller/monkey/proc/update_movespeed(mob/living/pawn) + SIGNAL_HANDLER + movement_delay = pawn.cached_multiplicative_slowdown + +/datum/ai_controller/monkey/proc/target_del(target) + SIGNAL_HANDLER + blackboard[BB_MONKEY_BLACKLISTITEMS] -= target + +/datum/ai_controller/monkey/proc/on_eat(mob/living/pawn) + SIGNAL_HANDLER + blackboard[BB_MONKEY_NEXT_HUNGRY] = world.time + rand(120, 600) SECONDS diff --git a/code/datums/ai/monkey/monkey_subtrees.dm b/code/datums/ai/monkey/monkey_subtrees.dm new file mode 100644 index 000000000000..4e7317de5a56 --- /dev/null +++ b/code/datums/ai/monkey/monkey_subtrees.dm @@ -0,0 +1,84 @@ +/datum/ai_planning_subtree/monkey_tree/SelectBehaviors(datum/ai_controller/monkey/controller, delta_time) + var/mob/living/living_pawn = controller.pawn + + if(SHOULD_RESIST(living_pawn) && DT_PROB(MONKEY_RESIST_PROB, delta_time)) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/resist)) //BRO IM ON FUCKING FIRE BRO + return SUBTREE_RETURN_FINISH_PLANNING //IM NOT DOING ANYTHING ELSE BUT EXTUINGISH MYSELF, GOOD GOD HAVE MERCY. + + var/list/enemies = controller.blackboard[BB_MONKEY_ENEMIES] + + if(HAS_TRAIT(controller.pawn, TRAIT_PACIFISM)) //Not a pacifist? lets try some combat behavior. + return + + var/mob/living/selected_enemy + if(length(enemies) || controller.blackboard[BB_MONKEY_AGRESSIVE]) //We have enemies or are pissed + var/list/valids = list() + for(var/mob/living/possible_enemy in view(MONKEY_ENEMY_VISION, living_pawn)) + if(possible_enemy == living_pawn || (!enemies[possible_enemy] && (!controller.blackboard[BB_MONKEY_AGRESSIVE] || HAS_AI_CONTROLLER_TYPE(possible_enemy, /datum/ai_controller/monkey)))) //Are they an enemy? (And do we even care?) + continue + // Weighted list, so the closer they are the more likely they are to be chosen as the enemy + valids[possible_enemy] = CEILING(100 / (get_dist(living_pawn, possible_enemy) || 1), 1) + + selected_enemy = pick_weight(valids) + + if(selected_enemy) + if(!selected_enemy.stat) //He's up, get him! + if(living_pawn.health < MONKEY_FLEE_HEALTH) //Time to skeddadle + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = selected_enemy + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_flee)) + return //I'm running fuck you guys + + if(controller.TryFindWeapon()) //Getting a weapon is higher priority if im not fleeing. + return SUBTREE_RETURN_FINISH_PLANNING + + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = selected_enemy + controller.current_movement_target = selected_enemy + if(controller.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] < world.time) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/recruit_monkeys)) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/battle_screech/monkey)) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_attack_mob)) + return SUBTREE_RETURN_FINISH_PLANNING //Focus on this + + else //He's down, can we disposal him? + var/obj/machinery/disposal/bodyDisposal = locate(/obj/machinery/disposal/) in view(MONKEY_ENEMY_VISION, living_pawn) + if(bodyDisposal) + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = selected_enemy + controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] = bodyDisposal + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/disposal_mob)) + return SUBTREE_RETURN_FINISH_PLANNING + + if(prob(5)) + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/use_in_hand)) + + if(selected_enemy || !DT_PROB(MONKEY_SHENANIGAN_PROB, delta_time)) + return + + if(world.time >= controller.blackboard[BB_MONKEY_NEXT_HUNGRY] && controller.TryFindFood()) + return + + if(prob(50)) + var/list/possible_targets = list() + for(var/atom/thing in view(2, living_pawn)) + if(!thing.mouse_opacity) + continue + if(thing.IsObscured()) + continue + possible_targets += thing + var/atom/target = pick(possible_targets) + if(target) + controller.current_movement_target = target + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/use_on_object)) + return + + if(prob(5) && (locate(/obj/item) in living_pawn.held_items)) + var/list/possible_receivers = list() + for(var/mob/living/candidate in oview(2, controller.pawn)) + possible_receivers += candidate + + if(length(possible_receivers)) + var/mob/living/target = pick(possible_receivers) + controller.current_movement_target = target + LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/give)) + return + + controller.TryFindWeapon() diff --git a/code/datums/ai/movement/_ai_movement.dm b/code/datums/ai/movement/_ai_movement.dm new file mode 100644 index 000000000000..c9d47bc6d66b --- /dev/null +++ b/code/datums/ai/movement/_ai_movement.dm @@ -0,0 +1,19 @@ +///This datum is an abstract class that can be overriden for different types of movement +/datum/ai_movement + ///Assoc list ist of controllers that are currently moving as key, and what they are moving to as value + var/list/moving_controllers = list() + ///How many times a given controller can fail on their route before they just give up + var/max_pathing_attempts + +/datum/ai_movement/proc/start_moving_towards(datum/ai_controller/controller, atom/current_movement_target) + controller.pathing_attempts = 0 + if(!moving_controllers.len) + START_PROCESSING(SSai_movement, src) + moving_controllers[controller] = current_movement_target + +/datum/ai_movement/proc/stop_moving_towards(datum/ai_controller/controller) + controller.pathing_attempts = 0 + moving_controllers -= controller + + if(!moving_controllers.len) + STOP_PROCESSING(SSai_movement, src) diff --git a/code/datums/ai/movement/ai_movement_dumb.dm b/code/datums/ai/movement/ai_movement_dumb.dm new file mode 100644 index 000000000000..0ce64669d373 --- /dev/null +++ b/code/datums/ai/movement/ai_movement_dumb.dm @@ -0,0 +1,27 @@ +///The most braindead type of movement, bee-line to the target with no concern of whats infront of us. +/datum/ai_movement/dumb + max_pathing_attempts = 16 + +///Put your movement behavior in here! +/datum/ai_movement/dumb/process(delta_time) + for(var/datum/ai_controller/controller as anything in moving_controllers) + if(!COOLDOWN_FINISHED(controller, movement_cooldown)) + continue + COOLDOWN_START(controller, movement_cooldown, controller.movement_delay) + + var/atom/movable/movable_pawn = controller.pawn + + if(!isturf(movable_pawn.loc)) //No moving if not on a turf + continue + + var/current_loc = get_turf(movable_pawn) + + var/turf/target_turf = get_step_towards(movable_pawn, controller.current_movement_target) + + if(!is_type_in_typecache(target_turf, GLOB.dangerous_turfs)) + movable_pawn.Move(target_turf, get_dir(current_loc, target_turf)) + + if(current_loc == get_turf(movable_pawn)) //Did we even move after trying to move? + controller.pathing_attempts++ + if(controller.pathing_attempts >= max_pathing_attempts) + controller.CancelActions() diff --git a/code/datums/ai/movement/ai_movement_jps.dm b/code/datums/ai/movement/ai_movement_jps.dm new file mode 100644 index 000000000000..ea05b0fc899e --- /dev/null +++ b/code/datums/ai/movement/ai_movement_jps.dm @@ -0,0 +1,61 @@ +/** + * This movement datum represents smart-pathing + */ +/datum/ai_movement/jps + max_pathing_attempts = 4 + +///Put your movement behavior in here! +/datum/ai_movement/jps/process(delta_time) + for(var/datum/ai_controller/controller as anything in moving_controllers) + if(!COOLDOWN_FINISHED(controller, movement_cooldown)) + continue + COOLDOWN_START(controller, movement_cooldown, controller.movement_delay) + + var/atom/movable/movable_pawn = controller.pawn + if(!isturf(movable_pawn.loc)) //No moving if not on a turf + continue + + var/minimum_distance = controller.max_target_distance + // right now I'm just taking the shortest minimum distance of our current behaviors, at some point in the future + // we should let whatever sets the current_movement_target also set the min distance and max path length + // (or at least cache it on the controller) + if(LAZYLEN(controller.current_behaviors)) + for(var/datum/ai_behavior/iter_behavior as anything in controller.current_behaviors) + if(iter_behavior.required_distance < minimum_distance) + minimum_distance = iter_behavior.required_distance + + if(get_dist(movable_pawn, controller.current_movement_target) <= minimum_distance) + continue + + var/generate_path = FALSE // set to TRUE when we either have no path, or we failed a step + if(length(controller.movement_path)) + var/turf/next_step = controller.movement_path[1] + movable_pawn.Move(next_step) + + // this check if we're on exactly the next tile may be overly brittle for dense pawns who may get bumped slightly + // to the side while moving but could maybe still follow their path without needing a whole new path + if(get_turf(movable_pawn) == next_step) + controller.movement_path.Cut(1,2) + else + generate_path = TRUE + else + generate_path = TRUE + + if(generate_path) + if(!COOLDOWN_FINISHED(controller, repath_cooldown)) + continue + controller.pathing_attempts++ + if(controller.pathing_attempts >= max_pathing_attempts) + controller.CancelActions() + continue + + COOLDOWN_START(controller, repath_cooldown, 2 SECONDS) + controller.movement_path = get_path_to(movable_pawn, controller.current_movement_target, AI_MAX_PATH_LENGTH, minimum_distance, id=controller.get_access()) + +/datum/ai_movement/jps/start_moving_towards(datum/ai_controller/controller, atom/current_movement_target) + controller.movement_path = null + return ..() + +/datum/ai_movement/jps/stop_moving_towards(datum/ai_controller/controller) + controller.movement_path = null + return ..() diff --git a/code/datums/components/spinny.dm b/code/datums/components/spinny.dm new file mode 100644 index 000000000000..cdf5262ab31b --- /dev/null +++ b/code/datums/components/spinny.dm @@ -0,0 +1,33 @@ +/** + * spinny.dm + * + * It's a component that spins things a whole bunch, like [proc/dance_rotate] but without the sleeps +*/ +/datum/component/spinny + dupe_mode = COMPONENT_DUPE_UNIQUE + /// How many turns are left? + var/steps_left + /// Turns clockwise by default, or counterclockwise if the reverse argument is TRUE + var/turn_degrees = 90 + +/datum/component/spinny/Initialize(steps = 12, reverse = FALSE) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + steps_left = steps + turn_degrees = (reverse ? -90 : 90) + START_PROCESSING(SSfastprocess, src) + +/datum/component/spinny/Destroy(force, silent) + STOP_PROCESSING(SSfastprocess, src) + return ..() + +/datum/component/spinny/process(delta_time) + steps_left-- + var/atom/spinny_boy = parent + if(!istype(spinny_boy) || steps_left <= 0) + qdel(src) + return + + // 25% chance to make 2 turns instead of 1 since the old dance_rotate wasn't strictly clockwise/counterclockwise + spinny_boy.setDir(turn(spinny_boy.dir, turn_degrees * (prob(25) ? 2 : 1))) diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 0954c2a35bc8..d520c3bae5ed 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -179,11 +179,11 @@ /datum/mutation/human/race/on_acquiring(mob/living/carbon/human/owner) if(..()) return - . = owner.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_KEEPSE) + . = owner.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_KEEPSE | TR_KEEPAI) /datum/mutation/human/race/on_losing(mob/living/carbon/monkey/owner) if(owner && istype(owner) && owner.stat != DEAD && (owner.dna.mutations.Remove(src))) - . = owner.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_KEEPSE) + . = owner.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_KEEPSE | TR_KEEPAI) /datum/mutation/human/glow name = "Glowy" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 46b08169f829..75a36e1aa677 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -136,6 +136,9 @@ ///List of smoothing groups this atom can smooth with. If this is null and atom is smooth, it smooths only with itself. var/list/canSmoothWith = null + ///AI controller that controls this atom. type on init, then turned into an instance during runtime + var/datum/ai_controller/ai_controller + /// The icon file of the connector to use when smoothing. /// Use of connectors requires the smoothing flags SMOOTH_BITMASK and SMOOTH_CONNECTORS. var/connector_icon = null @@ -265,6 +268,7 @@ set_custom_materials(temp_list) ComponentInitialize() + InitializeAIController() return INITIALIZE_HINT_NORMAL @@ -311,6 +315,7 @@ LAZYCLEARLIST(managed_overlays) QDEL_NULL(light) + QDEL_NULL(ai_controller) if(smoothing_flags & SMOOTH_QUEUED) SSicon_smooth.remove_from_queues(src) @@ -737,6 +742,7 @@ * throw lots of items around - singularity being a notable example) */ /atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) + SEND_SIGNAL(src, COMSIG_ATOM_HITBY, AM, skipcatch, hitpush, blocked, throwingdatum) if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...). addtimer(CALLBACK(src, PROC_REF(hitby_react), AM), 2) @@ -1068,6 +1074,7 @@ VV_DROPDOWN_OPTION(VV_HK_RADIATE, "Radiate") VV_DROPDOWN_OPTION(VV_HK_EDIT_FILTERS, "Edit Filters") VV_DROPDOWN_OPTION(VV_HK_SELL, "Export Item") + VV_DROPDOWN_OPTION(VV_HK_ADD_AI, "Add AI controller") /atom/vv_do_topic(list/href_list) . = ..() @@ -1112,6 +1119,15 @@ var/strength = input(usr, "Choose the radiation strength.", "Choose the strength.") as num|null if(!isnull(strength)) AddComponent(/datum/component/radioactive, strength, src) + + if(href_list[VV_HK_ADD_AI]) + if(!check_rights(R_VAREDIT)) + return + var/result = input(usr, "Choose the AI controller to apply to this atom WARNING: Not all AI works on all atoms.", "AI controller") as null|anything in subtypesof(/datum/ai_controller) + if(!result) + return + ai_controller = new result(src) + if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT)) var/result = input(usr, "Choose the transformation to apply","Transform Mod") as null|anything in list("Scale","Translate","Rotate") var/matrix/M = transform @@ -1710,3 +1726,12 @@ */ /atom/proc/setClosed() return + +/** +* Instantiates the AI controller of this atom. Override this if you want to assign variables first. +* +* This will work fine without manually passing arguments. ++*/ +/atom/proc/InitializeAIController() + if(ai_controller) + ai_controller = new ai_controller(src) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index ea51bac01b50..93225b2af9a9 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -513,9 +513,6 @@ if(!is_type_in_typecache(target_mob, dangerous_fauna)) return FALSE - if(ismonkey(target_mob)) - var/mob/living/carbon/monkey/monke = target_mob - return monke.mode == MONKEY_HUNT && target(target_mob) if(istype(target_mob, /mob/living/simple_animal/hostile/retaliate)) var/mob/living/simple_animal/hostile/retaliate/target_animal = target_mob return length(target_animal.enemies) && target(target_mob) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 23de618975a8..17bcfd78d5c9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -867,7 +867,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb . = "" /obj/item/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) - return + return SEND_SIGNAL(src, COMSIG_ATOM_HITBY, AM, skipcatch, hitpush, blocked, throwingdatum) /obj/item/attack_hulk(mob/living/carbon/human/user) return FALSE diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index f36c27bb244d..66d829baee25 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -40,17 +40,13 @@ if(!istype(C)) return + SEND_SIGNAL(C, COMSIG_CARBON_CUFF_ATTEMPTED, user) + if(iscarbon(user) && (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))) to_chat(user, "Uh... how do those things work?!") apply_cuffs(user,user) return - // chance of monkey retaliation - if(ismonkey(C) && prob(MONKEY_CUFF_RETALIATION_PROB)) - var/mob/living/carbon/monkey/M - M = C - M.retaliate(user) - if(!C.handcuffed) if(C.canBeHandcuffed()) C.visible_message("[user] is trying to put [src.name] on [C]!", \ diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index bbcaa94f0867..aa63701ce0e9 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -243,11 +243,20 @@ /obj/get_dumping_location(datum/component/storage/source,mob/user) return get_turf(src) -/obj/proc/CanAStarPass(ID, dir, caller) - if(ismovable(caller)) - var/atom/movable/AM = caller - if(AM.pass_flags & pass_flags_self) - return TRUE +/** + * This proc is used for telling whether something can pass by this object in a given direction, for use by the pathfinding system. + * + * Trying to generate one long path across the station will call this proc on every single object on every single tile that we're seeing if we can move through, likely + * multiple times per tile since we're likely checking if we can access said tile from multiple directions, so keep these as lightweight as possible. + * + * Arguments: + * * ID- An ID card representing what access we have (and thus if we can open things like airlocks or windows to pass through them). The ID card's physical location does not matter, just the reference + * * to_dir- What direction we're trying to move in, relevant for things like directional windows that only block movement in certain directions + * * caller- The movable we're checking pass flags for, if we're making any such checks + **/ +/obj/proc/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller) + if(istype(caller) && (caller.pass_flags & pass_flags_self)) + return TRUE . = !density /obj/proc/check_uplink_validity() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index d30f28801f76..85af7c9bb8eb 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -304,11 +304,10 @@ if((mover.pass_flags & PASSGRILLE) || istype(mover, /obj/projectile)) return prob(girderpasschance) -/obj/structure/girder/CanAStarPass(ID, dir, caller) +/obj/structure/girder/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller) . = !density - if(ismovable(caller)) - var/atom/movable/mover = caller - . = . || (mover.pass_flags & PASSGRILLE) + if(istype(caller)) + . = . || (caller.pass_flags & PASSGRILLE) /obj/structure/girder/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 10a4413f442f..7e2527c11dae 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -135,11 +135,10 @@ if(!. && istype(mover, /obj/projectile)) return prob(30) -/obj/structure/grille/CanAStarPass(ID, dir, caller) +/obj/structure/grille/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller) . = !density - if(ismovable(caller)) - var/atom/movable/mover = caller - . = . || (mover.pass_flags & PASSGRILLE) + if(istype(caller)) + . = . || (caller.pass_flags & PASSGRILLE) /obj/structure/grille/attackby(obj/item/W, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 35cc9fba1aae..e7a0fa946e23 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -379,7 +379,7 @@ /obj/structure/window/get_dumping_location(obj/item/storage/source,mob/user) return null -/obj/structure/window/CanAStarPass(ID, to_dir) +/obj/structure/window/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller) if(!density) return TRUE if(fulltile || (dir == to_dir)) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 4da6e25703bb..1f9dfc08f7da 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -676,3 +676,23 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) /turf/bullet_act(obj/projectile/hitting_projectile) . = ..() bullet_hit_sfx(hitting_projectile) + +/** + * Returns adjacent turfs to this turf that are reachable, in all cardinal directions + * + * Arguments: + * * caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach + * * ID: An ID card that decides if we can gain access to doors that would otherwise block a turf + * * simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space? +*/ +/turf/proc/reachableAdjacentTurfs(caller, ID, simulated_only) + var/static/space_type_cache = typecacheof(/turf/open/space) + . = list() + + for(var/iter_dir in GLOB.cardinals) + var/turf/turf_to_check = get_step(src,iter_dir) + if(!turf_to_check || (simulated_only && space_type_cache[turf_to_check.type])) + continue + if(turf_to_check.density || LinkBlockedWithAccess(turf_to_check, caller, ID)) + continue + . += turf_to_check diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index 033b71b6df5b..0ed035002f09 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -47,7 +47,7 @@ return if(!isturf(user.loc)) return - if(!AStar(user, target.loc, /turf/proc/Distance, changeling.sting_range, simulated_only = FALSE)) + if(!get_path_to(user, target, max_distance = changeling.sting_range, simulated_only = FALSE)) return if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) sting_feedback(user, target) @@ -106,7 +106,7 @@ C.real_name = NewDNA.real_name NewDNA.transfer_identity(C) if(ismonkey(C)) - C.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG) + C.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG | TR_KEEPAI) C.updateappearance(mutcolor_update=1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5276cf514d65..bcf78e60c8d1 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -108,6 +108,7 @@ /mob/proc/throw_item(atom/target) SEND_SIGNAL(src, COMSIG_MOB_THROW, target) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CARBON_THROW_THING, src, target) return /mob/living/carbon/throw_item(atom/target) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 51815282406d..48747f0106f8 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -138,6 +138,9 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/carbon/attack_hand(mob/living/carbon/human/user) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + . = TRUE + for(var/datum/surgery/S in surgeries) if(body_position != LYING_DOWN && S.lying_required) continue diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 358fa0626092..d96bbd72531a 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -82,7 +82,22 @@ key = "screech" key_third_person = "screeches" message = "screeches." - mob_type_allowed_typecache = list(/mob/living/carbon/monkey, /mob/living/carbon/alien) + mob_type_allowed_typecache = list(/mob/living/carbon/monkey) + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/carbon/screech/get_sound(mob/living/user) + return pick('sound/creatures/monkey/monkey_screech_1.ogg', + 'sound/creatures/monkey/monkey_screech_2.ogg', + 'sound/creatures/monkey/monkey_screech_3.ogg', + 'sound/creatures/monkey/monkey_screech_4.ogg', + 'sound/creatures/monkey/monkey_screech_5.ogg', + 'sound/creatures/monkey/monkey_screech_6.ogg', + 'sound/creatures/monkey/monkey_screech_7.ogg') + +/datum/emote/living/carbon/screech/roar + key = "roar" + key_third_person = "roars" + message = "roars." /datum/emote/living/carbon/sign key = "sign" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 0c8782129698..c4a447b59d5b 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -7,6 +7,7 @@ var/t_him = p_them() var/t_has = p_have() var/t_is = p_are() + var/t_es = p_es() var/obscure_name var/list/obscured = check_obscured_slots() var/skipface = ((wear_mask?.flags_inv & HIDEFACE) || (head?.flags_inv & HIDEFACE)) @@ -330,6 +331,8 @@ if(HAS_TRAIT(src, TRAIT_DUMB)) msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if(getorgan(/obj/item/organ/brain)) + if(ai_controller?.ai_status == AI_STATUS_ON) + msg += "[t_He] do[t_es]n't appear to be [t_him]self.\n" if(!key) msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely.\n" else if(!client) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a4d89a53b548..b33a751df628 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1289,6 +1289,9 @@ return known_name return . +/mob/living/carbon/human/monkeybrain + ai_controller = /datum/ai_controller/monkey + /mob/living/carbon/human/species var/race = null diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm deleted file mode 100644 index 8fd4e89566c7..000000000000 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ /dev/null @@ -1,426 +0,0 @@ -#define MAX_RANGE_FIND 32 - -/mob/living/carbon/monkey - var/aggressive=0 // set to 1 using VV for an angry monkey - var/frustration=0 - var/pickupTimer=0 - var/list/enemies = list() - var/mob/living/target - var/obj/item/pickupTarget - var/mode = MONKEY_IDLE - var/list/myPath = list() - var/list/blacklistItems = list() - var/maxStepsTick = 6 - var/best_force = 0 - var/martial_art = new/datum/martial_art - var/resisting = FALSE - var/pickpocketing = FALSE - var/disposing_body = FALSE - var/obj/machinery/disposal/bodyDisposal = null - var/next_battle_screech = 0 - var/battle_screech_cooldown = 50 - -/mob/living/carbon/monkey/proc/IsStandingStill() - return resisting || pickpocketing || disposing_body - -// blocks -// taken from /mob/living/carbon/human/interactive/ -/mob/living/carbon/monkey/proc/walk2derpless(target) - if(!target || IsStandingStill()) - return 0 - - if(myPath.len <= 0) - myPath = get_path_to(src, get_turf(target), /turf/proc/Distance, MAX_RANGE_FIND + 1, 250,1) - - if(myPath) - if(myPath.len > 0) - for(var/i = 0; i < maxStepsTick; ++i) - if(!IsDeadOrIncap()) - if(myPath.len >= 1) - walk_to(src,myPath[1],0,5) - myPath -= myPath[1] - return 1 - - // failed to path correctly so just try to head straight for a bit - walk_to(src,get_turf(target),0,5) - sleep(1) - walk_to(src,0) - - return 0 - - -// taken from /mob/living/carbon/human/interactive/ -/mob/living/carbon/monkey/proc/IsDeadOrIncap() - return HAS_TRAIT(src, TRAIT_INCAPACITATED) || HAS_TRAIT(src, TRAIT_HANDS_BLOCKED) - - -/mob/living/carbon/monkey/proc/battle_screech() - if(next_battle_screech < world.time) - emote(pick("roar","screech")) - for(var/mob/living/carbon/monkey/M in view(7,src)) - M.next_battle_screech = world.time + battle_screech_cooldown - -/mob/living/carbon/monkey/proc/equip_item(obj/item/I) - if(I.loc == src) - return TRUE - - if(I.anchored) - blacklistItems[I] ++ - return FALSE - - // WEAPONS - if(istype(I, /obj/item)) - var/obj/item/W = I - if(W.force >= best_force) - put_in_hands(W) - best_force = W.force - return TRUE - - // CLOTHING - else if(istype(I, /obj/item/clothing)) - var/obj/item/clothing/C = I - monkeyDrop(C) - addtimer(CALLBACK(src, PROC_REF(pickup_and_wear), C), 5) - return TRUE - - // EVERYTHING ELSE - else - if(!get_item_for_held_index(1) || !get_item_for_held_index(2)) - put_in_hands(I) - return TRUE - - blacklistItems[I] ++ - return FALSE - -/mob/living/carbon/monkey/proc/pickup_and_wear(obj/item/clothing/C) - if(!equip_to_appropriate_slot(C)) - monkeyDrop(get_item_by_slot(C)) // remove the existing item if worn - addtimer(CALLBACK(src, PROC_REF(equip_to_appropriate_slot), C), 5) - -/mob/living/carbon/monkey/resist_restraints() - var/obj/item/I = null - if(handcuffed) - I = handcuffed - else if(legcuffed) - I = legcuffed - if(I) - changeNext_move(CLICK_CD_BREAKOUT) - last_special = world.time + CLICK_CD_BREAKOUT - cuff_resist(I) - -/mob/living/carbon/monkey/proc/should_target(mob/living/L) - if(HAS_TRAIT(src, TRAIT_PACIFISM)) - return FALSE - - if(enemies[L]) - return TRUE - - // target non-monkey mobs when aggressive, with a small probability of monkey v monkey - if(aggressive && (!istype(L, /mob/living/carbon/monkey/) || prob(MONKEY_AGGRESSIVE_MVM_PROB))) - return TRUE - - return FALSE - -/mob/living/carbon/monkey/proc/handle_combat() - if(pickupTarget) - if(IsDeadOrIncap() || blacklistItems[pickupTarget] || HAS_TRAIT(pickupTarget, TRAIT_NODROP)) - pickupTarget = null - else - pickupTimer++ - if(pickupTimer >= 4) - blacklistItems[pickupTarget] ++ - pickupTarget = null - pickupTimer = 0 - else - INVOKE_ASYNC(src, PROC_REF(walk2derpless), pickupTarget.loc) - if(Adjacent(pickupTarget) || Adjacent(pickupTarget.loc)) // next to target - drop_all_held_items() // who cares about these items, i want that one! - if(isturf(pickupTarget.loc)) // on floor - equip_item(pickupTarget) - pickupTarget = null - pickupTimer = 0 - else if(ismob(pickupTarget.loc)) // in someones hand - var/mob/M = pickupTarget.loc - if(!pickpocketing) - pickpocketing = TRUE - M.visible_message("[src] starts trying to take [pickupTarget] from [M]!", "[src] tries to take [pickupTarget]!") - INVOKE_ASYNC(src, PROC_REF(pickpocket), M) - return TRUE - - switch(mode) - if(MONKEY_IDLE) // idle - if(enemies.len) - var/list/around = view(src, MONKEY_ENEMY_VISION) // scan for enemies - for(var/mob/living/L in around) - if(should_target(L)) - if(L.stat == CONSCIOUS) - battle_screech() - retaliate(L) - return TRUE - else - bodyDisposal = locate(/obj/machinery/disposal/) in around - if(bodyDisposal) - target = L - mode = MONKEY_DISPOSE - return TRUE - - // pickup any nearby objects - if(!pickupTarget) - var/obj/item/I = locate(/obj/item/) in oview(2,src) - if(I && !blacklistItems[I]) - pickupTarget = I - else - var/mob/living/carbon/human/H = locate(/mob/living/carbon/human/) in oview(2,src) - if(H) - pickupTarget = pick(H.held_items) - - if(MONKEY_HUNT) // hunting for attacker - if(health < MONKEY_FLEE_HEALTH) - mode = MONKEY_FLEE - return TRUE - - if(target != null) - INVOKE_ASYNC(src, PROC_REF(walk2derpless), target) - - // pickup any nearby weapon - if(!pickupTarget && prob(MONKEY_WEAPON_PROB)) - var/obj/item/W = locate(/obj/item/) in oview(2,src) - if(!locate(/obj/item) in held_items) - best_force = 0 - if(W && !blacklistItems[W] && W.force > best_force) - pickupTarget = W - - // recruit other monkies - var/list/around = view(src, MONKEY_ENEMY_VISION) - for(var/mob/living/carbon/monkey/M in around) - if(M.mode == MONKEY_IDLE && prob(MONKEY_RECRUIT_PROB)) - M.battle_screech() - M.target = target - M.mode = MONKEY_HUNT - - // switch targets - for(var/mob/living/L in around) - if(L != target && should_target(L) && L.stat == CONSCIOUS && prob(MONKEY_SWITCH_TARGET_PROB)) - target = L - return TRUE - - // if can't reach target for long enough, go idle - if(frustration >= MONKEY_HUNT_FRUSTRATION_LIMIT) - back_to_idle() - return TRUE - - if(target && target.stat == CONSCIOUS) // make sure target exists - if(Adjacent(target) && isturf(target.loc) && !IsDeadOrIncap()) // if right next to perp - - // check if target has a weapon - var/obj/item/W - for(var/obj/item/I in target.held_items) - if(!(I.item_flags & ABSTRACT)) - W = I - break - - // if the target has a weapon, chance to disarm them - if(W && prob(MONKEY_ATTACK_DISARM_PROB)) - pickupTarget = W - a_intent = INTENT_DISARM - monkey_attack(target) - - else - a_intent = INTENT_HARM - monkey_attack(target) - - return TRUE - - else // not next to perp - var/turf/olddist = get_dist(src, target) - if((get_dist(src, target)) >= (olddist)) - frustration++ - else - frustration = 0 - else - back_to_idle() - - if(MONKEY_FLEE) - var/list/around = view(src, MONKEY_FLEE_VISION) - target = null - - // flee from anyone who attacked us and we didn't beat down - for(var/mob/living/L in around) - if(enemies[L] && L.stat == CONSCIOUS) - target = L - - if(target != null) - walk_away(src, target, MONKEY_ENEMY_VISION, 5) - else - back_to_idle() - - return TRUE - - if(MONKEY_DISPOSE) - - // if can't dispose of body go back to idle - if(!target || !bodyDisposal || frustration >= MONKEY_DISPOSE_FRUSTRATION_LIMIT) - back_to_idle() - return TRUE - - if(target.pulledby != src && !istype(target.pulledby, /mob/living/carbon/monkey/)) - - INVOKE_ASYNC(src, PROC_REF(walk2derpless), target.loc) - - if(Adjacent(target) && isturf(target.loc)) - a_intent = INTENT_GRAB - target.grabbedby(src) - else - var/turf/olddist = get_dist(src, target) - if((get_dist(src, target)) >= (olddist)) - frustration++ - else - frustration = 0 - - else if(!disposing_body) - INVOKE_ASYNC(src, PROC_REF(walk2derpless), bodyDisposal.loc) - - if(Adjacent(bodyDisposal)) - disposing_body = TRUE - addtimer(CALLBACK(src, PROC_REF(stuff_mob_in)), 5) - - else - var/turf/olddist = get_dist(src, bodyDisposal) - if((get_dist(src, bodyDisposal)) >= (olddist)) - frustration++ - else - frustration = 0 - - return TRUE - - return IsStandingStill() - -/mob/living/carbon/monkey/proc/pickpocket(mob/M) - if(do_after(src, MONKEY_ITEM_SNATCH_DELAY, M) && pickupTarget) - for(var/obj/item/I in M.held_items) - if(I == pickupTarget) - M.visible_message("[src] snatches [pickupTarget] from [M].", "[src] snatched [pickupTarget]!") - if(M.temporarilyRemoveItemFromInventory(pickupTarget)) - if(!QDELETED(pickupTarget) && !equip_item(pickupTarget)) - pickupTarget.forceMove(drop_location()) - else - M.visible_message("[src] tried to snatch [pickupTarget] from [M], but failed!", "[src] tried to grab [pickupTarget]!") - pickpocketing = FALSE - pickupTarget = null - pickupTimer = 0 - -/mob/living/carbon/monkey/proc/stuff_mob_in() - if(bodyDisposal && target && Adjacent(bodyDisposal)) - bodyDisposal.stuff_mob_in(target, src) - disposing_body = FALSE - back_to_idle() - -/mob/living/carbon/monkey/proc/back_to_idle() - - if(pulling) - stop_pulling() - - mode = MONKEY_IDLE - target = null - a_intent = INTENT_HELP - frustration = 0 - walk_to(src,0) - -// attack using a held weapon otherwise bite the enemy, then if we are angry there is a chance we might calm down a little -/mob/living/carbon/monkey/proc/monkey_attack(mob/living/L) - var/obj/item/Weapon = locate(/obj/item) in held_items - - // attack with weapon if we have one - if(Weapon) - Weapon.melee_attack_chain(src, L) - else - L.attack_paw(src) - - // no de-aggro - if(aggressive) - return - - // if we arn't enemies, we were likely recruited to attack this target, jobs done if we calm down so go back to idle - if(!enemies[L]) - if(target == L && prob(MONKEY_HATRED_REDUCTION_PROB)) - back_to_idle() - return // already de-aggroed - - if(prob(MONKEY_HATRED_REDUCTION_PROB)) - enemies[L] -- - - // if we are not angry at our target, go back to idle - if(enemies[L] <= 0) - enemies.Remove(L) - if(target == L) - back_to_idle() - -// get angry are a mob -/mob/living/carbon/monkey/proc/retaliate(mob/living/L) - mode = MONKEY_HUNT - target = L - if(L != src) - enemies[L] += MONKEY_HATRED_AMOUNT - - if(a_intent != INTENT_HARM) - battle_screech() - a_intent = INTENT_HARM - -/mob/living/carbon/monkey/attack_hand(mob/living/L) - if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(L) - else if(L.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) - retaliate(L) - return ..() - -/mob/living/carbon/monkey/attack_paw(mob/living/L) - if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(L) - else if(L.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) - retaliate(L) - return ..() - -/mob/living/carbon/monkey/attackby(obj/item/W, mob/user, params) - ..() - if((W.force) && (!target) && (W.damtype != STAMINA)) - retaliate(user) - -/mob/living/carbon/monkey/bullet_act(obj/projectile/Proj) - if(istype(Proj , /obj/projectile/beam)||istype(Proj, /obj/projectile/bullet)) - if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) - if(!Proj.nodamage && Proj.damage < src.health && isliving(Proj.firer)) - retaliate(Proj.firer) - . = ..() - -/mob/living/carbon/monkey/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) - if(istype(AM, /obj/item)) - var/obj/item/I = AM - if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) - var/mob/living/carbon/human/H = I.thrownby - retaliate(H) - ..() - -/mob/living/carbon/monkey/on_entered(datum/source, atom/movable/AM) - . = ..() - if(!IsDeadOrIncap() && ismob(AM) && target) - var/mob/living/carbon/monkey/M = AM - if(!istype(M) || !M) - return - knockOver(M) - return - -/mob/living/carbon/monkey/proc/monkeyDrop(obj/item/A) - if(A) - dropItemToGround(A, TRUE) - update_icons() - -/mob/living/carbon/monkey/grabbedby(mob/living/carbon/user) - . = ..() - if(!IsDeadOrIncap() && pulledby && (mode != MONKEY_IDLE || prob(MONKEY_PULL_AGGRO_PROB))) // nuh uh you don't pull me! - if(Adjacent(pulledby)) - a_intent = INTENT_DISARM - monkey_attack(pulledby) - retaliate(pulledby) - return TRUE - -#undef MAX_RANGE_FIND diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index b4469ea5b63c..01423b1aa2ee 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -1,33 +1,5 @@ - - /mob/living/carbon/monkey - -/mob/living/carbon/monkey/Life() - set invisibility = 0 - - if (notransform) - return - - if(..() && !IS_IN_STASIS(src)) - - if(!client) - if(stat == CONSCIOUS) - if(on_fire || buckled || HAS_TRAIT(src, TRAIT_RESTRAINED) || (pulledby && pulledby.grab_state > GRAB_PASSIVE)) - if(!resisting && prob(MONKEY_RESIST_PROB)) - resisting = TRUE - walk_to(src,0) - execute_resist() - else if(resisting) - resisting = FALSE - else if((mode == MONKEY_IDLE && !pickupTarget && !prob(MONKEY_SHENANIGAN_PROB)) || !handle_combat()) - if(prob(25) && (mobility_flags & MOBILITY_MOVE) && isturf(loc) && !pulledby) - step(src, pick(GLOB.cardinals)) - else if(prob(1)) - emote(pick("scratch","jump","roll","tail")) - else - walk_to(src,0) - /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 755c674a107d..6056ac83fa7d 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -26,6 +26,8 @@ hud_type = /datum/hud/monkey melee_damage_lower = 1 melee_damage_upper = 3 + ai_controller = /datum/ai_controller/monkey + faction = list("neutral", "monkey") /mob/living/carbon/monkey/Initialize(mapload, cubespawned=FALSE, mob/spawner) add_verb(src, /mob/living/proc/mob_sleep) @@ -169,10 +171,10 @@ return 1 /mob/living/carbon/monkey/angry - aggressive = TRUE /mob/living/carbon/monkey/angry/Initialize() . = ..() + ai_controller.blackboard[BB_MONKEY_AGRESSIVE] = TRUE if(prob(10)) var/obj/item/clothing/head/helmet/justice/escape/helmet = new(src) equip_to_slot_or_del(helmet,ITEM_SLOT_HEAD) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 99db31b26c0f..ba9b99822600 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1125,7 +1125,7 @@ if(G.trigger_guard == TRIGGER_GUARD_NONE) to_chat(src, "You are unable to fire this!") return FALSE - if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser()) + if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && (!IsAdvancedToolUser(src) && !HAS_TRAIT(src, TRAIT_GUN_NATURAL))) to_chat(src, "You try to fire [G], but can't use the trigger!") return FALSE return TRUE diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 3c7736c06230..1e81bd48b63f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -564,7 +564,7 @@ Pass a positive integer as an argument to override a bot's default speed. var/datum/job/captain/All = new/datum/job/captain all_access.access = All.get_access() - set_path(get_path_to(src, waypoint, /turf/proc/Distance_cardinal, 0, 200, id=all_access)) + set_path(get_path_to(src, waypoint, 200, id=all_access)) calling_ai = caller //Link the AI to the bot! ai_waypoint = waypoint @@ -782,16 +782,16 @@ Pass a positive integer as an argument to override a bot's default speed. // given an optional turf to avoid /mob/living/simple_animal/bot/proc/calc_path(turf/avoid) check_bot_access() - set_path(get_path_to(src, patrol_target, /turf/proc/Distance_cardinal, 0, 120, id=access_card, exclude=avoid)) + set_path(get_path_to(src, patrol_target, 120, id=access_card, exclude=avoid)) /mob/living/simple_animal/bot/proc/calc_summon_path(turf/avoid) check_bot_access() INVOKE_ASYNC(src, PROC_REF(do_calc_summon_path), avoid) /mob/living/simple_animal/bot/proc/do_calc_summon_path(turf/avoid) - set_path(get_path_to(src, summon_target, /turf/proc/Distance_cardinal, 0, 150, id=access_card, exclude=avoid)) + set_path(get_path_to(src, summon_target, 150, id=access_card, exclude=avoid)) if(!length(path)) //Cannot reach target. Give up and announce the issue. - speak("Summon command failed, destination unreachable.",radio_channel) + speak("Summon command failed, destination unreachable.", radio_channel) bot_reset() /mob/living/simple_animal/bot/proc/summon_step() @@ -816,7 +816,9 @@ Pass a positive integer as an argument to override a bot's default speed. calc_summon_path() /mob/living/simple_animal/bot/proc/summon_step_not_moved() - calc_summon_path() + //calc_summon_path() + speak("Summon command failed, destination unreachable.",radio_channel) + bot_reset() tries = 0 /mob/living/simple_animal/bot/Bump(atom/A) //Leave no door unopened! diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index e53b675c95bc..aad4a7a63f86 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -261,11 +261,11 @@ mode = BOT_IDLE return - if(target && path.len == 0 && (get_dist(src,target) > 1)) - path = get_path_to(src, target.loc, /turf/proc/Distance_cardinal, 30, id=access_card) + if(target && (!path || path.len == 0) && (get_dist(src,target) > 1)) + path = get_path_to(src, target, 30, id=access_card) mode = BOT_MOVING if(!path.len) //try to get closer if you can't reach the target directly - path = get_path_to(src, target.loc, /turf/proc/Distance_cardinal, 30, 1, id=access_card) + path = get_path_to(src, target, 30, id=access_card) if(!path.len) //Do not chase a target we cannot reach. add_to_ignore(target) target = null diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index 0fabc6c7fb53..1b04fbb51669 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -269,7 +269,7 @@ if(get_dist(src, target_fire) > 2) - path = get_path_to(src, get_turf(target_fire), /turf/proc/Distance_cardinal, 0, 30, 1, id=access_card) + path = get_path_to(src, target_fire, 30, 1, id=access_card) mode = BOT_MOVING if(!length(path)) soft_reset() diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 980f12897e70..662386649186 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -255,9 +255,9 @@ if(path.len == 0) if(!isturf(target)) var/turf/TL = get_turf(target) - path = get_path_to(src, TL, /turf/proc/Distance_cardinal, 0, 30, id=access_card,simulated_only = FALSE) + path = get_path_to(src, TL, 30, id=access_card,simulated_only = FALSE) else - path = get_path_to(src, target, /turf/proc/Distance_cardinal, 0, 30, id=access_card,simulated_only = FALSE) + path = get_path_to(src, target, 30, id=access_card,simulated_only = FALSE) if(!bot_move(target)) add_to_ignore(target) diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 22d68c8a6190..6bcd39abb6a6 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -413,10 +413,10 @@ return if(patient && path.len == 0 && (get_dist(src,patient) > 1)) - path = get_path_to(src, get_turf(patient), /turf/proc/Distance_cardinal, 0, 30,id=access_card) + path = get_path_to(src, patient, 30,id=access_card) mode = BOT_MOVING if(!path.len) //try to get closer if you can't reach the patient directly - path = get_path_to(src, get_turf(patient), /turf/proc/Distance_cardinal, 0, 30,1,id=access_card) + path = get_path_to(src, patient, 30,1,id=access_card) if(!path.len) //Do not chase a patient we cannot reach. soft_reset() diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 1c10311f7b3c..59a6125b5fbd 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -615,7 +615,7 @@ // calculates a path to the current destination // given an optional turf to avoid /mob/living/simple_animal/bot/mulebot/calc_path(turf/avoid = null) - path = get_path_to(src, target, /turf/proc/Distance_cardinal, 0, 250, id=access_card, exclude=avoid) + path = get_path_to(src, target, 250, id=access_card, exclude=avoid) // sets the current destination // signals all beacons matching the delivery code diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 2a47d4f0c220..6dc3bbf55048 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -16,65 +16,11 @@ see_in_dark = 5 speak_chance = 1 turns_per_move = 10 - var/turns_since_scan = 0 - var/obj/movement_target + ai_controller = /datum/ai_controller/dog + stop_automated_movement = TRUE footstep_type = FOOTSTEP_MOB_CLAW -/mob/living/simple_animal/pet/dog/Life() - ..() - - //Feeding, chasing food, FOOOOODDDD - if(!stat && !resting && !buckled) - turns_since_scan++ - if(turns_since_scan > 5) - turns_since_scan = 0 - if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc))) - movement_target = null - stop_automated_movement = 0 - if(!movement_target || !(movement_target.loc in oview(src, 3))) - movement_target = null - stop_automated_movement = 0 - for(var/obj/item/reagent_containers/food/snacks/S in oview(src,3)) - if(isturf(S.loc) || ishuman(S.loc)) - movement_target = S - break - if(movement_target) - stop_automated_movement = 1 - step_to(src,movement_target,1) - sleep(3) - step_to(src,movement_target,1) - sleep(3) - step_to(src,movement_target,1) - - if(movement_target) //Not redundant due to sleeps, Item can be gone in 6 decisecomds - var/turf/T = get_turf(movement_target) - if(!T) - return - if (T.x < src.x) - setDir(WEST) - else if (T.x > src.x) - setDir(EAST) - else if (T.y < src.y) - setDir(SOUTH) - else if (T.y > src.y) - setDir(NORTH) - else - setDir(SOUTH) - - if(!Adjacent(movement_target)) //can't reach food through windows. - return - - if(isturf(movement_target.loc)) - movement_target.attack_animal(src) - else if(ishuman(movement_target.loc)) - if(prob(20)) - manual_emote("stares at [movement_target.loc]'s [movement_target] with a sad puppy-face") - - if(prob(1)) - manual_emote(pick("dances around.","chases its tail!")) - INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(dance_rotate), src) - //Corgis and pugs are now under one dog subtype /mob/living/simple_animal/pet/dog/corgi @@ -165,6 +111,7 @@ dat += "

" dat += "" dat += "" + dat += "" dat += {"
Head:[inventory_head]" : "add_inv=head'>Empty"]
Back:[inventory_back]" : "add_inv=back'>Empty"]
Collar:[pcollar]" : "add_inv=collar'>Empty"]
ID Card:[access_card]" : "add_inv=card'>Empty"]
Close "} @@ -248,6 +195,10 @@ pcollar = null update_corgi_fluff() regenerate_icons() + if("card") + if(access_card) + usr.put_in_hands(access_card) + access_card = null show_inv(usr) @@ -300,9 +251,22 @@ return item_to_add.forceMove(src) - src.inventory_back = item_to_add + inventory_back = item_to_add update_corgi_fluff() regenerate_icons() + if("card") + if(access_card) + to_chat(usr, "[src] already has \an [access_card] pinned to [p_them()]!") + return + var/obj/item/item_to_add = usr.get_active_held_item() + if(!usr.temporarilyRemoveItemFromInventory(item_to_add)) + to_chat(usr, "\The [item_to_add] is stuck to your hand, you cannot pin it to [src]!") + return + if(!istype(item_to_add, /obj/item/card/id)) + to_chat(usr, "You can't pin [item_to_add] to [src]!") + return + item_to_add.forceMove(src) + access_card = item_to_add show_inv(usr) else diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 92b955d3a841..5a900e64e199 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -648,7 +648,7 @@ item = I break if(item) - if(!AStar(src, get_turf(item), /turf/proc/Distance_cardinal)) + if(!get_path_to(src, item)) item = null continue return item diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a1a0886a2362..738428592d9a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -208,7 +208,8 @@ . = ..() if(stat == DEAD) . += "Upon closer examination, [p_they()] appear[p_s()] to be dead." - + if(access_card) + . += "There appears to be [icon2html(access_card, user)] \a [access_card] pinned to [p_them()]." /mob/living/simple_animal/update_stat() if(status_flags & GODMODE) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index ef21915e1fca..1be945b3d8f4 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -1,6 +1,6 @@ #define TRANSFORMATION_DURATION 22 -/mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG)) +/mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG| TR_KEEPAI)) if (notransform || transformation_timer) return @@ -150,6 +150,8 @@ changeling.purchasedpowers += hf changeling.regain_powers() + if(tr_flags & TR_KEEPAI) + ai_controller.PossessPawn(O) if (tr_flags & TR_DEFAULTMSG) to_chat(O, "You are now a monkey.") @@ -167,7 +169,7 @@ ////////////////////////// Humanize ////////////////////////////// //Could probably be merged with monkeyize but other transformations got their own procs, too -/mob/living/carbon/proc/humanize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG)) +/mob/living/carbon/proc/humanize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG | TR_KEEPAI)) if (notransform || transformation_timer) return @@ -329,6 +331,9 @@ else O.set_species(/datum/species/human) + if(tr_flags & TR_KEEPAI) + ai_controller.PossessPawn(O) + O.a_intent = INTENT_HELP if (tr_flags & TR_DEFAULTMSG) to_chat(O, "You are now a human.") diff --git a/code/modules/movespeed/_movespeed_modifier.dm b/code/modules/movespeed/_movespeed_modifier.dm index 06cbaf0b99cd..4befe2458faa 100644 --- a/code/modules/movespeed/_movespeed_modifier.dm +++ b/code/modules/movespeed/_movespeed_modifier.dm @@ -200,6 +200,7 @@ GLOBAL_LIST_EMPTY(movespeed_modification_cache) continue . += amt cached_multiplicative_slowdown = . + SEND_SIGNAL(src, COMSIG_MOB_MOVESPEED_UPDATED) /// Get the move speed modifiers list of the mob /mob/proc/get_movespeed_modifiers() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 5d11dcb720ee..3241695c7e78 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -67,11 +67,7 @@ if(!L.can_inject(user, 1)) return - // chance of monkey retaliation - if(ismonkey(target) && prob(MONKEY_SYRINGE_RETALIATION_PROB)) - var/mob/living/carbon/monkey/M - M = target - M.retaliate(user) + SEND_SIGNAL(target, COMSIG_LIVING_TRY_SYRINGE, user) switch(mode) if(SYRINGE_DRAW) diff --git a/shiptest.dme b/shiptest.dme index ef4500858dca..d7a9f1aa48d9 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -160,6 +160,7 @@ #include "code\__DEFINES\vv.dm" #include "code\__DEFINES\wall_dents.dm" #include "code\__DEFINES\wires.dm" +#include "code\__DEFINES\ai\ai.dm" #include "code\__DEFINES\dcs\flags.dm" #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals\signals.dm" @@ -185,7 +186,6 @@ #include "code\__HELPERS\_planes.dm" #include "code\__HELPERS\_string_lists.dm" #include "code\__HELPERS\areas.dm" -#include "code\__HELPERS\AStar.dm" #include "code\__HELPERS\atoms.dm" #include "code\__HELPERS\bindings.dm" #include "code\__HELPERS\bitflag_lists.dm" @@ -212,6 +212,7 @@ #include "code\__HELPERS\mouse_control.dm" #include "code\__HELPERS\nameof.dm" #include "code\__HELPERS\names.dm" +#include "code\__HELPERS\path.dm" #include "code\__HELPERS\priority_announce.dm" #include "code\__HELPERS\pronouns.dm" #include "code\__HELPERS\qdel.dm" @@ -325,6 +326,7 @@ #include "code\controllers\configuration\entries\resources.dm" #include "code\controllers\subsystem\achievements.dm" #include "code\controllers\subsystem\acid.dm" +#include "code\controllers\subsystem\ai_controllers.dm" #include "code\controllers\subsystem\air.dm" #include "code\controllers\subsystem\ambience.dm" #include "code\controllers\subsystem\assets.dm" @@ -401,6 +403,8 @@ #include "code\controllers\subsystem\vis_overlays.dm" #include "code\controllers\subsystem\vote.dm" #include "code\controllers\subsystem\weather.dm" +#include "code\controllers\subsystem\processing\ai_behaviors.dm" +#include "code\controllers\subsystem\processing\ai_movement.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" #include "code\controllers\subsystem\processing\fluids.dm" #include "code\controllers\subsystem\processing\instruments.dm" @@ -468,6 +472,19 @@ #include "code\datums\achievements\skill_achievements.dm" #include "code\datums\actions\beam_rifle.dm" #include "code\datums\actions\ninja.dm" +#include "code\datums\ai\_ai_behavoir.dm" +#include "code\datums\ai\_ai_controller.dm" +#include "code\datums\ai\_ai_planning_subtree.dm" +#include "code\datums\ai\generic_actions.dm" +#include "code\datums\ai\dog\dog_behaviors.dm" +#include "code\datums\ai\dog\dog_controller.dm" +#include "code\datums\ai\dog\dog_subtrees.dm" +#include "code\datums\ai\monkey\monkey_behaviors.dm" +#include "code\datums\ai\monkey\monkey_controller.dm" +#include "code\datums\ai\monkey\monkey_subtrees.dm" +#include "code\datums\ai\movement\_ai_movement.dm" +#include "code\datums\ai\movement\ai_movement_dumb.dm" +#include "code\datums\ai\movement\ai_movement_jps.dm" #include "code\datums\atmosphere\_atmosphere.dm" #include "code\datums\atmosphere\planetary.dm" #include "code\datums\brain_damage\brain_trauma.dm" @@ -554,6 +571,7 @@ #include "code\datums\components\sizzle.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spill.dm" +#include "code\datums\components\spinny.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" #include "code\datums\components\stationstuck.dm" @@ -2634,7 +2652,6 @@ #include "code\modules\mob\living\carbon\human\species_types\vampire.dm" #include "code\modules\mob\living\carbon\human\species_types\vox.dm" #include "code\modules\mob\living\carbon\human\species_types\zombies.dm" -#include "code\modules\mob\living\carbon\monkey\combat.dm" #include "code\modules\mob\living\carbon\monkey\death.dm" #include "code\modules\mob\living\carbon\monkey\inventory.dm" #include "code\modules\mob\living\carbon\monkey\life.dm" diff --git a/sound/creatures/monkey/monkey_screech_1.ogg b/sound/creatures/monkey/monkey_screech_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a4d5bc45429aa0416a1a189c0aaefca1ab8af5bd GIT binary patch literal 15300 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 literal 0 HcmV?d00001 diff --git a/sound/creatures/monkey/monkey_screech_2.ogg b/sound/creatures/monkey/monkey_screech_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ea44bcbcd814b7dd2a59bfc0f3fc8193135335a6 GIT binary patch literal 15649 zcmeHucTiN%v+wMZ5fG3d(G?a2L?kLm&LBBS&N=6>#1%=BgXAb6Dmg1iQY2>)K{660 z=M4K6zxV#`y;Zl~t9rNIf3K@{&)J!tnVwJgO!w(It88VZ4xr%QNFY-?^ZIse`VAL^ z9^&cbYHH(lT>zCVxxS#u-HSVQm3ZurYNtaYay|OEu&)6r_YW(d_(2oZOH3 zc{m?)@^U($Yb2Bv6{VCk)P=;9HUNr@?{v%$nv zq}X7J%1ZK5IxrPi8wV423pX^EqLZVY1;P#8*4oCw8GRLVMwc@`w{dhgv9f@vS(rJw zn%g*9u@GL1q9!IGucWCcE~O^KbsJqEBc-G!_1_E+!TJX%7IBH^5P%B+cKe(&cyqTH z02ly~CIEDDqMM_Mn7RrdtrW0>#6m92@$r$)$x?L2@e!e`fkjK9(#uQ>o9!=WX8g$d__^O2F_Fq2(3N7LUi;Q+YPcDgXr;)i{K{B6T^ z-6mIM&Y6#lC`24RBSIat(xBHf`>*tu8?DQy2@A3@aQ+wumSj_YQR^;NAc_q{0f-Tg zCren0lSPmH?M=o1p&w!Z=)xrjCFwQKjX^;VIeUAxN&VT zY=AGW6-s*pCmCIWCT&t6ik>lYC{7cNH$e7^tI#++5k}SQ1eh<5Act0FaX#o zZpbt6C!6yp=kuqVvm}_J`Tv$|b|)5}4$Y3(@0^@DToI$m5t3^5t-*EUlNi-5j z3OQG}oEp4c72dA)Pay$70ss$LV2(hmW-(5i4G`h|V||!t>HZQn1~wMj8vmic1ERZK zm5pKKk161bK+CoG4@y+mW{K`cJ7U3^8QyCOi41P9`UhXw^(fbLn*b~KUuJc!Xgm-H z0enD~0@-dlj9&2F&^UN!kYzl)vl3~^pMb5MTnOp^er~(USa|5&_8lXBAy{NI^Jc{XgpX-y6qSBMbl4E!sN& zeFi)K&hY=Q{~v+>rwE7wAd195e?nBOyCMKg3A7r^#ldAMcnFOV)Cwd;xWgFQ={V}a z)?dl~WvQS-;bu1W@XPy9w&CFAFSkr0{zFFDJlw(HcVc9aGR8}lL zBB)HJILxCss%fH={m!TGeR`Q~!w{SDEk#vc%`p$L5wt*>>bxJ==g@5$%J4-;1cw(J z0MFnp#gQebcREXY;UB0dnN;GR2390XI&0F6)&g|bP~)P)Kfhfesrr;DXp}K<&^tBb zDm=f3!JcRSE5<*HKqCZ`OE%X@WAEb(7c1(QX_vG^lK<8?xRPM9OjW4+2>K*mmKAhQvM;>udb-c%Zu(& z832{P=teVS+={{^zlK*93vlqo6e6;%A{dh4HrcC)Y@57m6&3#BR7`wllfHtGOzh&3 z>PMr4Ir4)?F&LKz4L?v_NMpDcUU)w}6%3n0Qwy!qfx<1&%7X`hvNHgz6(%0RiFuW+ zeiEK0c}e-tqJg6ag5d~o=6Eswv-4#dg51bxqZQS zW?M=6@H}RlbZIgvZ|@y%YcxjLD~KI$`XNE({T=I_ogMAum0g~j^fw1zqN_qXU*Zf( zEZB&Wy<#AKmA677CCNY%&-|VEl_Yxc^UzDGlHC=DM|ca)-OUptBOwtZ6Oxpaycxet zBE=BSK#T~_dkn;mW(orlU;~_O*&O#@r_F{VNK&D#7@B zy6CuAaByExm5f)OanCz%6~RCq&wRae5o3be;c;oAxd5NQ9JE5jgUEo2w(;t1b|};p zj|vMr#Oy2opBi*vD{dYtE6Ila3U5?Ym6Hyzv2!e9h=z7ZPqbsXQ_TgjZ#^XzCk`V1 z_8Z{Kwtm5TBDfoRe`*dhD^CsQZzzZM>u7CtV-u5*^wY|Ob>hf|cj3yt>c;zL109F7 z;sDVEC>kH`&f)o82q^=XxSFYJ5ISbYMQ=f9g5rvbivGQWp}$2%|2~~z%3Ay_0@qJx z*8_Qlt1gN^lUFn{G%-TGLA9Y8P{XJh)D~(U)r_jt)6&(@(loU&GqXZhW}^~ONvL>K zG3o=V3{`^KL|@;dqEM-*1kBSC)iyv4d&)0j1wwBDl869c7i~H>d26-O@2Xf;Ji;VU zc|(nW&3rkI<}HnuHqK+=<$F(W$j9P1ZP-N=Wb3|^c`XB`12GQ{_}=`OVunVDTZjll z=Pa?XbFYB59hp=dhPFS8x|I99dPl}h0w-!$dpowTdS{ewjrKQ}i`H)MDf^%4WH9^Q zOm;KyS`-$N1Q!RHRbud;n39dh2MNPNa8u7$R12lEW;-XN9X4sHbdrDDzrp5@*{;lyDolC`kuK#txh=&kUj> zqpf0|>`y(Z@)M${x^b9XNz`|)8=m)U4Pc(mkmM9-=#IEgNwvJI$|5ji5d1dkxS(yP z;*Z%#NvI}s> zoUEU<9|WkVSR91YU9o;n9dhVI_X^iLhxysLJ^pE7F8_03oql-QXi&11{-NAk|AWJh zFH5>O86vW|g(g_~SWdVBMrjdi^eHiCmv=t}a#Ak%cwB**cXhZ*qCRA$-#bc@j6Yzs zUErGP5@qkvvd*9uMst3iM>RNPrv;2*OkFknSaGr{zk2$zcByjx{;71LmPXCzk)>u5 zSU$8t^Wts3m+nwtT!uO@5^d`+rQFS6eh+_i@?_U}Ipuxbqk#NQ@9dqktG&rFu_d*D zwyF@r{?*dn@hYkqVOp0GT6K@Ekc%n+XgWuIRh2Wo27c(p+Br&1sT({k+t~}HXsVet zQeobR3u8I6J~frmyD?Z()4=24)1}WpYP%T2rBjRKvJm+0;HalZQrUE#i{X3*vAh>ly9js7d{>G6DetOu|E)?*~2R{e04|8cRI1YmTR)*=k9w}FWNp} z{W~(W+qPxC=?lf)i_eYpv7OQ6wV28#+e-zz{WCQrYdSSQIQ?SY?02_K|NJ=}t%kkF zg_L;V-j#jdbL;ZbCgGE9=P%#wN+oaAqkTOEHu)iLRZS_O&z~7u{bLTdhoij`>UvHu z*Tpl8Cd1ZEb*7am1Qcy1ZHr<>wjS&Tioie5E)HN=;Rbgl{;>Qy#VO|E*d*^zH6@m- zle_;i7iwZ`8j$m%X3xJCQaNxSn#6yfN&LbwVshnjo1KG{8M_Bs@4A5lQ_G%(Jik-W zy3P{^2icYzlu2m@KEg$6YesqaiW19xi+E?wnj(OCBOE}Uw^;4H)?{uLQqv9G%K2dLP%1XlaOzF6|TCGN*T6H}APa77Sf>0nux->JZr|T!Dg{q=y4ijd4g@iQs z(pCHWb7hf6|AzKEJ@(VTjd-s2a`CSUD{Wdi(Yn$$?;|L=q5?YOAkr^|;~PSyr!*Xah!jW zioH|pe!OTAMNFf)L$1aalpq{6n|!41Nx5dTMhbHMAV@QmzY1gn2h8CEXLYD86pV`i zBsuaD0DTB>UF~9K)xjDiBcMH(j)8kg_!0bqL>M6ZYOj z^>%vQt_<9IgYgX9HORNWx48c7wx<#lzenr^o9M+&1_&@-F5HTXgCJ{Efc>l*9DokS z0ZX6r?{e2Me#yr}Y=Au39FFAmUeF0rq)>u#f_=<08lFj`nawS^xM~p2QV{J@vmUZV z`Ehf84>PIhi0kd!fN1lO*DthFKe;|uRRQk>M}%AjxLl+NIwD4caI)d*1IPI$Y4e$O zwz3Kc1#zK!}~8FXJSDimsT|h{X1>5&%QbdZh2imQ|ZjwaNO(ew>xdvE zHif|eVd>?K*!x;Ca%N!F$TCcdF)i-OP8o;C6?B1;C_tH&y8LT0V`I&C@J1#wI&Dv3 z`@{pC91~>22p1DO2uL?fw-j8HK}Uz6_1Cl|naZ`U!NJPT;7mE<&`sbeX#Mz$OBkA6 z2+t_%AITxVZ3%xh_IFQjqo$dv zztp$PjDK=*!(t#uvf{`B!?~9_4T&dST|I-q?5i+-HGCVL>d>@wN>^c!q>JqY9|H2zzKg*k6`mV8XNLw8@8nD_{97ex7)PCRq@b31t1?bSy z2}rfRk%P~xk!H!6_>PuwT;6`-a=F^W?lokZD+2RA%?u2@|HR`@>1#!8`RA_630xJ} zp{G-8w}Rv!lztaS94{Zzzh$2)#$GN(r@Oqjy&l{LAeFMaIlwO}6dl+P{+u)mShC_X zed>#do_0)8pT*S8Y{`sttHlSzac%2bD|I4nabwL&OuNS(7-_dub3H*o;i4i@Wc{3o znQC@JWT&8zC#E8<=5#dj8>u^6pr>IYy)CC*zrjtzBrVK1SHG*>Zn69yUE@NxQv|ft zz<3})wwxQ+T0n_Kr1#IR1pNJ@UmQ}h*FU$TM0UB@y!qtWm(fzC*YRrBf7&NK&UpSM zJVSV{nQfx%ru}LE!IzxSjh(4vrEO0`}Z0B*YA)LS-a*y7rMU&97U8r5z}MoY_h`r=NLstp0@wWcp5f zdpX^XJsH4ojuQIlzd-sfXZL-bRI0D3!cu>W)O@5?^^NWHIwQ0-v<4jQ3GAM^4Ya7T zveWvB^taJOWJia84j8x?`XYXzTO+vJn6#vRd0WNsarS<_!k2qsnt6oIGG3O6VYy7> z-ARoN+N1>4w(g`yy3J&WF@xOqzLV#FdUFy9T92N_vZBYpdo8s8D2LpIT(A{Y?27V~ zZRQ2cAaeV&-dRXLW3?R88pQbsmV`c7Tk8nyh$A5W9BXpD{s3&QWqWXPWr%f?V}1S< z;hPbwvV#lsLN2sMeeR3JJzE#lJfnmL3!ULsWS)@r( zagXyX{-Vn2Pxw{HM((k-IkUj0O{VUkLZgwY)1V30*>oXFoprmGZKX#LQ1bvF%Y?Mv zQ4-EPKYnR@V~!?wK)W<4`87pA@y=|dj0`y=_?&O(^jTup;9xqyjh)*_Q)Jdh3-jl( zh=bQ)SZo+7>R3KmGoLH8-%})Az0=Uo)z=7=N}7_5wXwH(Q&1K&Bs63E9~2~r=*`D14D)jLOUOsv|4q3EINT$!s6ccGr5 z>590+?CG3X3Khxdw(Ss1@;$79>kUoW*9}7a8G5rWV*FO5;n_)r)f>Njcl7R3EW^Gv z1Ifj`HC5H77XFD#YL%i-ceDw0isn@kH5ejVfJyTm5j3q|e)jGVSt`!tMnuQR1 zbY@-DU3&PH#yTbH`ya1;j(n_UAhrL9WBtlMH4SY%`!OG=!A^#sS=X=HHB8=hJ=|Q# zPR_Qc6a*#>PSNK%&S)P6z*V6+;k)6^FF7l^vGwZ5juK~Vc=(Q~_g?y8Wwdvl9k&?V zk(TlFH}<5mi^utjIiA!@XoQl_nBIy0dEAW9a6R+O&V)D*I3C~m^kv};GHa?;e%YR5Qyv@cN6G=sVRB zAM~;Qfz7kEs(k9^i&b`6VQVm8)~)f+l2-)C>OYqe8`De5JY&u?L*l+K+UuF?-nwXw zcSnq>NjMD7W_zDDwvf(L1**vdqy}D`iq{)eJu1|*cQ+SM-@S!$vM*Fc^k?%B{okAR zlOdw268GTpmQ)~|&zZbSemGPnRqyGG+bA!%dV{^P zdGOnBzo9w4bIF-czkw0WB)iO9-Z|zZF}Sk7*@$i>YG8177&2AXR1c@BUUaxPU#r)q zrpqe#^76V1<{I0S?~g^IrRiZWPVt?~4`vRZ2@o!;vCrshsfs5IlM?b==f&=Bl?JTR zg2yvAfH5s*L-SgI7(Nt|ipAWU{ICyVcz=|pj&!w|v{4G3qWCDKX-F=*e54v$)|Fu+vy{S{o`2N^QDJaG0p z7lQnLVjLXx`*Oejsgpky6OvDr?<`O^Pa}A(GS}S)zmSWiwaKlw(R~?9OY6q)LQCtB z%EG&k+b~kUBTtfnh5)lUApLQ`-jIz~Rn;OqV+x|t7qR|R@?|ofSgRm;LNc`-=BPBg*yaj zKVs)D;B4o=|4!s)P)T_8)6wXoV)J#jE1kS%qfogtdh+UWaknmToG=l6syThG2d$IQ zjCHL(BWhw&v+imY!06+m?3pLJxwDzGOz*(m+2ld#ibdeK!BMCdQt$M*SC7-4xu8Mo=TN75aq36f zwmj28J*jr=P|TQ|vgB5b%bPOL?`ij!U)7N#VX2vVGBou&-*bIGW$=`hhQKt6vjcZ% z0xPq6eQLbDqf*#4fx0hF$b8H)+RLywbZLNpr3QN@xfNWeJ0+bh?+xc{`tMqPHq1%O zwB{h+Ual{~MjtIoECpoD*G<~LQ~Y=!L>cQK8ij^7kiQNwicGprO|2Rq=A$p7Rp;c+ zPt{NKV7>1wW|Cz(8Iip7$g$EQA^z8%Vkr+U4(v@rLX%pFqs8ngY#3SaUTkTm)j z1iI!bGJ)vN4l@9Jq+W4^I(W;Tjgmr<)rQgF+fpbMxS#_&BEVfruiu|G;V~KZsL?R< zLM+X*421b3^U{bnO!MXxiS1!T0!~|}(5-pPR16st|2qsI&f^9I85zP2j;yh$AHC6p zEIlkx#!Qvi`vG>&{lU;Ih}*{VQ%sy#z%#w`R`aYSFMFURbFnfr`{2X3wD<-jLjLy4 z-(PNCeRZcG4P!551Fr@N<&o2F>;UdDI{-1OPS-!^4(yL53E$z*hsFi;SrSV=x`Sju z$wR)OfV*6V{vlNF%QuB)w7|s{gc=tY@rZIPY0VS|jHgerP_lL5r`;Qb)tL(y(wU)JODsWnL(!hjZiZ`Ik#WFuj<)qABt`+=;mH&(XkYlIw7I3%Zq$nqW&;@}{4Z=-Pq-A?|iT;QO2 z-TgJYuQM6oXuM0}9Ec%-6&tAO|>PS z9vf!_g>~bJ>#m;8PXD0Zn&;8d|5H^xz2xRs?S@)%g|+m))MY1H)Qv{~g&`GxDjeZZyf@j0jM&WsT=mN^IN0O&uw&vUr?)OG*m zDC_cQw-Myr}hQQ#IAWcw?cu8jG?<6Iuh*&v^t zGpm}f4#BSHGh(l{yB099W79Q6Z|t)F;0CSZhopDfWuHG%W8tj2Bnpz9h`69Xd41q8 zZ_$Kx=o8DEG=OsY$zImja@+9ybQBx5F@!?cqNG0neNM{Hht(6yT&Wl8T`vRHdVKJu zyMl~D3?c2J>-}LVjd9d8J5ojrilycLqA~BX%fY^*xzsbdRYZ48BH<>oh3^#*ZFv(H zvhjlv;a7noXm%?&xiPb(b?$U$&cA@D><(<_0UbD7E(kq{Jtn$i0`T^Fenh*eNt{)- zFb=$LbwL%cv|l#&%xCsa-EJ>>lRV6@-=`Uc;CYK@5VP5+_NqW>bY1)=K&CdwGP1P4 zYn)r+;_zhHN@|?p3EXdf@@B8^s=?+kpX_`f;`8rAj6!37oWdQIgeQjt*>}XH&)UeH z>Y?qX!7=^J6~wP1#-E!mkO)E^p_O4+$`)+(%y;)7Yo#U)-BxWwn|m?~`n@H578 zFm7Kjpyb80sFMs45RGq|zIA-giBErQVJR|4FJ#TXZMms7g5dj9#9F@onQ`0Oic9^^ zdhs`cwuhfSROYuB-W#P+rAtQ&l;7)5P`M&1Lv-04h#*<_fsQtiOs?{VHeqV z#DX&s4Qzy4+l((3WKZ?)<0AnQx2KYB_~~?^@3l*!FYMEI9dsFRq^9)Y-}`Z^uurhj z{78`DLx=X_u$xtsC7)f?Ow`bWsylXyJ_F=a@7Dl0+2vZvIc={sdz0MF2*t&G-4Q`z zY*YGiG*ya(jjg{|e)t^rMHlY$=(BLQQP_6S#&_GhY&UcQgc-y%;rG~5qYO=6hB$i^ zbpZmvPmA{|ZTpD1?k=%dn`rfbfPBKtbJj1+&Jap#^ea2q0{*lg=Y!`PLvi33odr{r z+SNa+_9i@&PmEWw9pZporjAU~T;MrD_ z8Rb!*zLrmZT|+wiZC0k61=RUo3O8*%94-}apn`)9g6s#EG5Pk-tSs+J!1Ag4m{dmGWJ>2n9*~3AFDR(`nGjaOxq0B0@ zbr2B~Slq#%-EjJcPp0tJVCTMry(}i9JB&p1TmF#EMg98+)Vaqzr7`%{`DB-JU2)A{p5p(ZQ(6^V6JY4?=#eaU4R3uWdq);T`0B}oOr96hOJ{qDRf}42EnZ#3L61e zvb6nSdI?PS?GeSg%$W6CnvAv3f+X}aQvJ}Lu7r2Lbwfeq`V_8F6m_2Ei!ieIboo_S<1zCWjKE zo{Jn*t%Ot1R`inzuZIStFu@yAkp2;%S~{rPtNq5%;2h2-4+RJ3#7GK) zxerA}Tc_h-4)zG3RYD({`Lh{Ybs#0T`&0N?(D#rMJtozYUM%8d0_+(V!}mQVWQ?o{ zR1EQy9@K@^3@NP>6T(%Ccz7i3T70dRw+ zJaln26i#m!eq!ilJN>-%opTyBoklk=Sw%sqsPg?g|TBFLCoOXW6XW_vy5FUg?r$}B_&W66@4)wx#&vJB+Xc z%^rd^^*FGeT~c>-yPjA_x|N2j4Nz%y+OL|CK`%PAP z71Byl+r>=u7Ro4%s61qjoW;V&-Sr56mO$aRy?)eqyvg5V$PkHWDh=jTYfZ=^^il86 z>X65`$u<2I@i@`gyHyle^1UI%Sg0t0w|{YPW;HE<3k^;@@3=BG{X!0ChZ^@{vD)X$ zc{|?ngg0d#-_!cD#n5EcG{d|ZyzRU|(4dg?j8TH6uT`LPbgzi+XNvu@VRamhlf{H) z5;I-cm-iEuG6lk%IuW?GmA=V=jfI2#47CGGBi8DEdHs*nY~Wqbw#2P~{w+xd zS<;2tP=+Wsp%RUC>YvBQx3qQ;hxLuWy_ihTe6RE}sGj)2Z>1Xy6&Z@&OST+q9@j(_ z*C@0R=w0nJDYW5q%~hXs-S~O3e3J|Lrq72GORA{!q^uvEW|{HGj3N2(wle&Cx=W&y zEg@C=Z~ynLQ{mRO{x2U{)pt^0H}d3I4m}~Rl*TOKmX0CmH7Sm^O)$2^7Xr6sFZ}}h z#JTpXm<4TL2J*q$^O<^*BODkX3mc5mnm$&{kUWFgp+YU_SW;{{o7asmhMe#Ez!kB_ z@7;xgR`wLksyS+&7*NK{$i5#J`Dr-&N?qcQ4F$Z3Tjd2dz$Iqx|1+rc?e|K;jMy5- zTk#KX8NwpAN6%dkho6zY4jn5W8cqYyLDB?KCJm2My9M@nZ7XUkUd4Dm$2s!*oT+cr z8$O0?PYT^Qeg=;#yRB^6;?@xL!!6?BJTI^R+XG=Np;2zBX)F(=nb0t|BJ84Rv$G{v z6})Zv9sS8rDW>^Mv-Fa3^@m#1nLQ7^z|ek;z|g+HCtm*nZ}HWwFahe--z6^D>V8!b z4Gay`MB;;ML;b+IIhOi2V%es7Ry`|g|A*_uqsij2ZGAc=BIUM9@>Y&Y(y3J{Vx)aJ zFXp3ELR_HTb9D#Yi~F>FF5-7{PZcCT!I;fLJ2Z*_<8`sXKlk|=o?yaqWYGSl*|QJI zSUUI1k7VL&t+et4{r%1HNDFSko<>&Pn&IUhIYaj>YnE6UN!|}~lx!I03An#vvi;4i zvu?d2pngIM&u)DG+ZzDQSIV<{R@7#{?JV3LTW>dLat7m!B|fu$DCtbgQXJm+IRXNLf;%7=iDkEaw5BY%+fHui2%d_)+$YX8vmzI3Rv_|7OpHk8x1|0{zA1l@(OVVs;w}Pbe2uV+NSL0m0bq*q6 zt-^SK>C)@B;l+ZgJViqDD?L=H+b7?W_Ufl9xU=`~isre!U|N~po)zRk9FSl$!raGt zZ}P+fNKFo|gI-8$=bdpHpq=_W`U&56YwtoDj-$9QUC<~@&`S9HtDhE`k=1j>;UB{I zsab#H0Lv0_iP+3=TQ{|XS~C{@Kip>I*3W`Nc-?J#8e(@=X=WpfZgLVlOH)J|5LQgs z_VVUgC66c|b!^B|xg+oa(!S32YSY3ZMlK~`j6=wkizdiZu*BZ;nj%Nx*o1&pL+MA6qN7Da6q}g%mzdOO zXf=*vgFWY0y${#`;4se}NuFjiMWZ-bd%WGgrnqum!0%5s$vM)c?(ZqJ$rLeA3aGY$3l8?WlyzfB6mKMcs%&*)W-sLNdi zH59)1YNv$5o?@sF=cweS-ix(~T|Bz;P?}SJc0u-OiQs1YLMen9_LYhP6!8~dJy)Um z?H2O6JcebC28mg~+J}!6nKCq7h>TaN&Ux4HPA1=DyIpJEki3A7d{jUbKsgMdL00J3 zy2dFn0DrUl>y{9FuBk&pFcTU@ZN_*nytZ9RuUBT0F5*ei0T zCEY-BUg1m0QEDiOC$1A~Ou7d2Cb@=+ohAgR@Fm?FF2L#PXi}iziLa*ZA3IyeNT*2e zKBH*Aelc7$sAQ4A)9U9hUPZFw0!c1H~}ODh>FDO7D-Zs?)i5 zm)dI?DSbDey6boNqiJj#mF%Y6;xM!R`bowvr_n1xLJdmvOXQi;)dKvN{4J~N7XvZ7 zBT9AFv*y_oKlc3CyT<1_(65mW-ST@-vl~5B$fGHhjl{nf^_jxlQv?J0+|NRUnD}kW za5ERe`520;5PEM@UXs79Ifx`U_#)8#E<+vzXzn0mOIntPH5Tc(ne2p`875mj(@`=` z6DkS(HvUQFWQwQJY+F7k(UFEY5CX1`%^AcC3d-5((^Jr~9J{o+Z;lmvDIs}WVyqm;b}mnQ~7GKCq`Z4`Jc z1ADY`z+nO#sj0yI!fisEx81p_g!XeRD|pYX*3U7clI1ag0g&3PqNUQo2oa}ht^uif z9l={xJy*NGw7-7fc*#@JRECwA&GNcsbJ}Kj6Mcvg!6Z=?P8PyFL08UVCRF!JDL4DA z!!utkuapl>U$ebS+Ly$~bj+iEo=@gPex6v@FyydP`Wh!r@Af=#-`tkT%8_Mob(-4z z3%ouLk0346;2!bo)+JeU?FM;r9_)k|zDF?}07%!Z3!bdwnkrjheXu%cA-rTcM?I9q zuobXD|LftapqT?3&GdXx;^!xkE@qc`Bfq(!C!p8NRI~k)Cqfc}H-4XTJ%# zN;_`EivA1BsoH6l%d{}s!r`sCKNbr3ACTru*JY(ND|swN-e@(40=`UR3IvPrq|OkGhh&!WdYfxk%ez z57DKUG1-SQ=oJquo-9<+^jM$LvO4{tPJf#lC#J;*-vO5?$B%Um=d1LJy2MBt z83kQ^!WRF_y&hdOi0l?ZHy9YA4vH@K9TcYwu5;BID=boyiD_iPd9TmL5JCa)TxS=cVq#%;~y@E>zh+J2q&heD)D(hBTm+UWEGyoj~WI z)QC6|*D75o{RvxV^-j}Nm*CZow^|QYCF>pO^wum#$)udEEj$sTvg*jNPnZr4tuz@m z5^8ZjO0a)PzkPYBhuY$gx{tv@3bf&o?b{QNTV@%4{PFfiSeR^|je1{+4DM&i{D>C| zr2C*xRnIjTLEYR8$mcA(PvTQggpjUekA7(r{FuJq-d4Y{gh~%b`!lM=5gDHB>Z}dJ< z-w(1Cb)_e`xW$w3;-JmQgP*;IwiyksFLMjx*V1zS#5$Cx@Hg$Bry0z@e`@ODwRAG| z0E?QNakj4yx3+?Z8IW`rFmU?5Cr>JRXlhJzFO_YTi(g2I>cx%Nv=EGUV=f(txCZI; zZ%-dNRb0hRt=?{H_Fa-4M-&1QQ7;m^ngu1(6zT1ZfLzbt4-FP7n!dzG2ns3`P*mC< z?&QxB9n$7GsSd#y5HzB1=zQG@ao+o%#HK0WEW3t<)D<_Bt$Auonf3?^jLSPRjmUOr zmY^i+lRLjXgiIK5ewHUz|9p%+3IiK!ev6gMhYqSjPGgM z@}oU2zt`fQ`)GMNZ-44fdc{L27a$9UZm_eW6(d|F#nWG zm#r78vH?r&2+evJRbi<4xiG^~UUS`yu|h0-Vv`P*(YH#)zn(-TRAaL#{}#L_>~&Q- zjFov7Thtp+AC#J@ezz?5b}SCb^9wI0q&D#nTNhcT7PZgkbj4K9<5;;%ACA22)0_9a zz1PrlW62q(tCXm#tHM6cL|5CAyFj%~aKp!m^5X;|bY^>Y`RPRg^?Md4XwgDK;EC^O zZDo8})IDq6!gZ9dO&ZrFV+3pg!8@9}_0(u(x5Y`~fnfONNA9QA4GqZjgV>6$S=Kj$ zvfn191w zjOLG}Wr;kkkR*|<7@qlKFGr-!|2*X`k+I$Px9B_nQb+RIDH;%XRuwEBzztYC>aMQtuIlNouAWvfH&+3mfPcZ+51W`jL1K$fMId63o4u2frSqQ% zDDjFv4+uE^L)-#V_>=R$!=IcW2s*I|fga9jqocALuI~OkpD;Fy#t1To& zOhH~=;)AM+fXD|Kc@a4V5;18Rc}0;A+7c2ZjQ=1cDq_kKBJwH>BqE9u3?%XjA7mx8 zNEDqcZ4F&aogq~6_IB2$p3acG7M8XSkf(?PB%Vgy($2-u+>}Jw)Y#t1#L~{37UfS> zltsj3Kd8xzN+=7kzlKCeNqkV2_+Jzcg8fHOw4!3_AOHaX-~jYDb*~`82UsB3Kk)CE z8Xg`1oq`9T`6B}$IJ5$y77zdf0Pq_;r~_X&6{R;EqzN%2DE=trFZ`tu1^|Xw6W+wa zc!~&e-dIzaRFhhUC>RnB6C40iB*{Od|G6WeXu$%~kfZ!828AhJVZ`fkP&VC%b@`aDuc}Gy97cG44=-R-$PFM^vE< z18&rw)`jN9#@9bN|0Q){2xEqkIttlDLMf*|f7!%8DCCdyS9p*%{!yL-MJ$C(;*Mr) zVLT57ZiGY~L!xP|0Vv{6H-^B!m4ncSEc%`_I9l`-Z7{aeAZZw((;z61v>X70|40G= zA`2V{C6s9hQ4#-S`v?AJrT~CGN5aSg>BvIqM5w<-5B^bUPo8w_Hcf0`&<;sLyfpA% z>-6vZf1iI<0_jYAiIlv5GHlZ%8uR|ufH2&j!ecjSC?aO<6OJ~Dd5DP>4 z_Fv!t5)dr@6$VSfh(pkSVgL8>e zKT0;@Ob`te#aPgR2)1G5f2yHbhM*8s@>KjZ#1so78HO zzl8WdNttw_KMlMt_`#H!7pfj~{22d9`mZ5$0ASgGjIjoy`2W354uq%xAWaAWJ)6=H zTF5Xa{6EhE|CPo6r?4=D8yFf81|yp0PR6GI!q@;<%#j0yC)Nx!P|L8vlL|Y@0X79O zAVEd~2(fU$A7YeD%qVE=H+7gmI27Q(6Km?3ZRJEbGR>i~!;@NMnJ*0)$gjn*GK)O( z5#_Hr=7NhoGiiHgI21So4l>FB01O2W83746C~@H-t)m3cF@X&SLfLD6C2aW_7d1SY zI)*VU2^AOlg`Gr-u`7P1pK>#t@^ch2sk;&RG?~SvnM|6Q`w_(!nfYaHOpvm4r#RH+ zb^{^xpv^2hY-^e17-N^8b5UDx1x>KaFBCa}GWRmdjsuZ6Ca~mHTtOb$)MZs8u)^5# z3n54bnZ=fEOhEoYW>q8vp=$wpc10m_`P)@)A zmPk0z%nYNhyAT(DBd*kkC4pvfAs(KOfDv^N5uOhKHPG;o3n}lfXo&%^L?VMsJ%{{^ z9HfO1amlk&4%IQp&oGS5LQqJ6Bfr!#yVx?*EVH=SGJDUHSY?iX?3y3a29;}$2}r;s zvv}V#vzS#aY2P#ZptP7SGt(?GpBey4{&rx=gfT?Pz*i_*h(I9}@ETj{ibG+>!y>iN zk~niePb(3U7sAxz4cf#tFjfG%@Bn)LHC1>(x(lS!Wp6;tE`x7J2-FhB0U@CkFaR4Q z-XvaR@O2@ws5Gewy7DVh$ZQG?>53q#E@ zi4M}zfP*xI59S{n0+^W60AduxNQh?uG;3=9L>YkoSUM0uf&~9O|J+ky0S3*#ahedk z1`GhX5T$_uayrJo5A0R^P*T`za>9R0gIEQG`Ge4zW*KiVGWQ%9kf;DzXK|@S{v>Mc zVsaU>Y>NbjA+`*v{4ZK$B$?TWa^eua=rF+R@c0bjT;LV53D5%)4a5c%H4P44GeJQ) zA>zZrg&6np9yUPCR#B5sX>kU)2*f#IB~~JUfr(`YS~&E($Qub1`NO8Y6!b1|ASHgV%#`J>N=Es+FT31n=0zPve zGtcj!#Ol~xom(njY3M-pw#ZelaQmknfu`9f45Z z*>=_+$*-n6*AJ*0aF7hHRD%oi!u4TP4z87j8JM~g*Q+~@DUY4EJSSa+&U~mX1t~Gp zGmv05x=^t%t#m7}X?)`CSIa9S_Lg5hN-{@N8kX2>V)iBx&5A0zmZ|7yU=$R|Z&#Ai zu~(;d`jq@~>vp)4hPnxvM9vnSY^>(sxZ&$cHk$M<<-T+^AT2svy$YTpAU!apJ%s%r zN*C0Ez>+eF#N(*^&8}BMGfj`p&inN$(OF1wBJwYSvZ}+=iD*FgNp%!mF>$x-3PaN_ zR;-{VC$&+`>W=SQCjU7FHVM{`b@gZ(fpW`I44QqeNXJb@L-i}^{pQ$`#dXKGQp#a; zNR4S1Kk}0~M$1o{5$l(pfjD6WXp{Twh(%qv^|^NpAEs?Z9k|%@|}%SFRE;RdR4ip5uQF;w&D=iPNc zYL@VdEA4HXx-GxC~3H~UAf0&t&t}B zj)I+lthY#6DZ^Dut%We3TY3T^ZE(mYeRXchoYN}rOAsAp5cG-J@dK~7zHRZc6G}+? zrl%?Wx}L7~Og*Ldk8}e&aPSGG?b~x+<{01c{fXkKR)7se7a?68)38cnTi`ztfe&^Z zy#9Hy`^N2;>RTqGNI=AASIE>rSrM9#B<<83?FcnFH)mQ^2-lu*QsKk>?x2h|ybOd6 zD;^ucZ`zK$4%dC)JF3t9a$pknWqu}n(8B`Xw$ugf@|T}tpm_slVs z{+UH@j;43h`bAomp&GV*o&OHWAcLPxP<|3S42ntDAy_3JzY#rPP#B8;0>$e*ZfG89 zxM}*SPVO|j`|^Lzvy_X1W9#T?PFY45*`WR9DH4m=cG?$yi~+fsMI& z`JzwF$M^kbK`v#hjbCqGGA#6}MM;PydF6B)g#h+2nJIW!00nFVV^w!(WxOoP7U+4}V``s$hw}vh4}YF-sTZ3M zh}n%n?rQYD_%tXD=I9M+9M(3^vrN%{z@2q4;AN>tjWa8snTtV|Yj7Hg%8c2?zecqG z$aMt~#3c4{Q^|_G!)lxShqV1G-Jo?C02s49zvceik!II?eCpNiXGe;%Qi+T8uyTC4 zIy~4if8yq?@D&y~5z$?Ed1{vX^?AITmw2a*-43aRF|Galvm9h`98a{a$TXnhDyw() zMWC1`vUDttmopp@++SWo#g@TU8O6*3zVn2Im@FjVhZwxg%(A#6ob8t!1LjMyBs^lt zJ`H_%l+*%RE%;SWORMPc>c#sxM>VRUN_Un)!7AdB_Qk3lzmCRv?G0>BXSPnFC>Q5E ziVV>#MTB^V7lAYa&-#yyKfX2d)$79-{9-8JFdU(Nygr`&lp-tmfb8~-lEkYeqqJ4t zT}gr*A33syT_3uUgZ&FWB^XMqOKc;V9bO|bno?C=%WbsGIVLQc*9REGtPPgJ)V+ zq52!j{DVDoymIM?erzsuIcaX@TG6<#ySt{Z2XEuAZ<~!B_RsGEFOTdhy#!y(x#gkP zTQUc;UwMstc7E8xz00IKKO!@bx%$RbQE9sECzowvhRb)n$fSj=M`1kbl@u(FH`?!X zr}UNGOm~he_WE*4CmXm(1f;zDd^z@t%FQ`(Y9UUf1JD~`;p2A)arNdhTzPxwPjGSY7Kk-BaLsLDz1McdeS8kbXw6&A|3P3>tp2=yvp4+O_9y&gI0=rKV(le4+-=Z zVmrar^UW#-Vn0ML9U3mJcz0Z0MMUM->0EiChNiONZa+z~f4sY)HCqpLM&C_7x1o)J zldB6aUWQNp^?DYcg9`Mavq;o;_x3X{EU?kWsB2|TcXj;Mu=fVb>|WDh!`&6e8#dqo z2d~lW3I78LJV1fxn!~O!(axLw$qX}YS9$W`XZ-VL0;n<$6P=&GiwM1++!~v>c;Eqa z=FkNsm*Jy*s<`EJI2o~r7uwxSXW`5?mdEnzP3f@;OKP<&CpO(!Q&0oi4Vh++LCuN^zKJonp^ zXx#mS%i;`6ecD3q%4sqjz_#7;X^VvI5=<8SI=;sDZt(e`&=d|kx%=VeWwg-EEWU$u z^R(ma*Z9}NKCWOw#&C)Y)D(k9^dPYx51Mrbds*d;^O?u_dgPiiAi#+4ROi-eMfK$) zyRKEsq3m&7&3Cv2>F6mjS;FU+M}?s7UN*ULk4*friUlS+c-JCS}3heva{i z#_ip%ro%V?EV1&Bwv3V_W&p`v=G=l58+_ct`l&tM)64d{j-<4df;Uh`UZ|KG zS8-!;vAY+Kb%om2@*Q2BYaqS*4uNc2d4e<|SKdzquJ%-;^t7qn{e@X!Z$He3)jd|9 zx_Tf4h9iJueTeH0N%E>UCi67iY3 zLZ&q742T3s<6Qi{NZGJx@xZu?Qq7n%wcK=p2xrSg)mP(W#I)7+Zk&Cc!Xm{$@8Nm3 zY8j_h@gz1(E)g9pW<7IhNdJ0zeg5#P6WK2_?A&*F;+3i;J+`EgU@=mMt{mN9SwI-N z^X`-8QNd=RCV z|95xQUD(~7%_y*u=-@BY*`Th&7((+lW?pGAuM=S3sDV`nuYP^Z0AX4P%0rgAeeeX? zdCC_-#JONvu$8cBI2;8sDE|DeGsy&^8GUtrd=n_1!V3JG%l$U2q+^XsHv{5A(iqQL z-!q=_=igjqQF@j?FdnoPeH)p{R_fGR4(lWVnlnQU{3Dhbs5BR+_3p)Gn%fdnL-jR( z@{o@WBTbm}x*SLya!WHKuinuo*HTT$M){hXQsBgz-kYG~^vqV^cq`yuDRNN3&BH7X zoykS~MCNC&Xa|vD^YgFO{o2l;twi0#pFheUL7+`6#J3!;8fAzCNP;dHMa4JC42y{? zT+J0Q-;FwoJS>%E&XkPF0bo$`E10}_3 z*Y6w;D5UU%u_eV-`>hP*DIE_OVe@N<<@yS{GjPHg;wSE*hHPAb@9>3`s(u!GnVj~(I%KrLCG7p4d1|@K+oL#x_GktKHi&vq z%HDr>d(Sr~r!AOKjzS$rY9x`Q3Lmup#W#pOQ?jZUZpsnAS=U6(*K}EgYD9s=2|qlY zET2r&xvWUzrbouYXf(E1H;@p1vxf%7j1n=P<+v&I>OfxnJIAbqsc<}cnf|v&%e;GQ z0wN&+H%c-v@G*pwu{QzzJ#xUzWfOsJzO2MO>~L}8P7s@D0>_wTxE=J=F;bkL#KI%{ zl;Cqh*6n__NB>%l0nE@Fn7K1ouSd1GZ%qJJ-9D!dw!})vmMhdaguQ&fGBU zu3Cx%M7jf-3G{c5H8=7)mz)GYC3o3n_w1i@%6Wy;KnLsZjLywS=*sE)fb-Bof4iwH zO_?%?*_3+cZHesU_KA4kO;p%lDD|PF%U%x(8$rbTKej z)m=97idaP_E_F+@pvFgnT+J^wRlkN&OU}aF02s~i))2BFVsl~t+fX43xUuHnx&ab# z9O!*So*Cw?X$f~M>LhQ&gRcP4Xj5e?r1^=!%JKTF!N=O9c(g%DhTe}tTOLu7P%bhig zqM$OY=cTU0kfk@qv5K=1Zj>7wcS~iEP9361_2eFY)d$E<jhwHuMOGAn;#_geGuU zg&Tkek*8P4>m0(7btD=Ca#=WveT4^NO_AQue`i&BSFWx{&ni{Cf3-Rl>N|T#u!L@y zS5Y@;$fb?7Q5LTpTc;?mpYo&J>EZk9UbZ1y`k_^0PcduRje+s9$oD3hp%)z@yrTze zk-;tq#)+Ra{Epa-^)sBKct19*Sf6b<7kz(eXw7N3Cm1k(Ok%u!!KrpUMKk7&)xWzv zhL|#%xq7(F&8O*pxNY0K`WCLA5hubH_%^U|*?PwUW&1uQB>kp`V05v zwB9%(t-=c44at}*4STMci?5;Voi!?wbH@1zkU|zu*{NA@k~jYDVj0n)bN)@fk}FWJ znxhnG4GVC#n&bq!Ics+`r%%yXZhq1(mMK(cODSAe@BskN+nt*cZ_g~eaCh^p4}CUw zo6~Y^)0vzoKgd0Li?hyt(1u5>WOIzbOPD7`oxWEY62(C3L0`zDEl`^r1{#goMkxtR zWzxlUDMi3&5(=jT?{p~GQ1t_7*a8f%RH^-T+&at_)eyyvBA(p=B{9(Ih8P50>RGXQC)K`hxmylvZm;xu(=fpT ze4QOcR5aFuN6nf}xE(_oLw*e}SNV!_&inBTend~f`$|xN%Q&NVOIAh9k1JAKZpC-6 z%ij`QkLhtGj#XEe#Xa2|{R$(Xztr*_{rTcf9w&9xm4hx6p~hJ!hudpGmG!0o`E&8% zv(?}zn;4ukhMW$Yt1?Zp43oQQdpyW8RFw-n5-?m!STSl1!l<(=E#*_pglgyKgSh-L zjSQ9or7dyG;~oV4GOFG?W4HKRWhiay%=X8q^2FNch=?g6n&Yoc?z(OToCi2Xz)&JI zSlr#9Cm^d+>UVuNk2*Y+ycwL{D4XNaGhrE?8(`j__PnI1zwElU2ts z3fUwq;r*Bp901Sxx#fZkNt>x`Ca!HPRKOkqhD6F}o8Oj-oxOercn&=gp?a{z8V-c;V9zOie%o?u5tEU;cWnNa3w^DKYT27Z?D|REzTCDzylAx%tcrg0>;Y!Va z%+r_k<};4gkP0LbJ_1+A7!kl$?DN$lPli z4x^j$dho6X1~&qSvt(E@+Jaxj3Gwz4*_-y>RLOFnzOXan{hSLnii@rnJ7W3d&B3eH z`EcgB6@BHs6Ahx#)vW1K?`#DE%JavobIq%zXF<%;+05zK!we-oJ;(-W{3utOh9&XU z+nIf|G#C5fxc#&?qL+@exnE`5!`zM zGg^H%y}l6?+f&(pPWJM-RnZkk2ZVFt_U}H*&R#qmFP8yeMxbjiOQaozgBMSOS#_j< z-&+4eUTP(li6x5rOVS;>oH*)RpI1KxpBg&TjJ2r9DG!S%V1d9kFOb4|sA1z>miME1 zf3(4pY!!XaFL4MK3%ei7=`g zoEFqPgNTUgR4476G*QZCiHBAoUI~g(FCPhtPh7+IdJ^zBSXE|PG;1v-cUe}ITO~$z zHckOwkG(V$t*L=7kBv4Rn$CSEZ&KfAd5Z!m5pl69K}W4FRQ${PL|WC9owTj>yT`$b z`G!k`=Qu*IUMna7GBim)@}0aa-%!5EymnCdeHUg*kb*q&!IsvxqXl&f_~9o=(XEm= z+u^CT%T-r8XvWnw+8k~j-pmd&vq#se_4C&=KP5u0?R7fS$at#fMTUx(Hu!0jc}Tc7;?Oex4ThJ-~&kFKb+?Y z9Qf)Je;mn{QIm|brf;ejw$K=x@Sq9i7pZpIX@ZIWC0!@uu_G<%WTJ-grYg-sFl3T6 zg;FNa>U}{|z!w~b_twF%s6Aqg)_jC5$$LFLJ@5qm%nq+v`En&WPCu}T^P)Ujh2HF{ z;G*{Ae^Z028D#&~%%wIhm}wTsu6v6e~ph?6KY!_Wtn?G(9EH&;1;?DulS=q=dq`B z@pz-)+%bAmB_1H1N!PaMEt3nh3{)g&PsRE;`mx>_R_{A^81O8kU6mTqwS@VEkFStm z5$rFoI=#y|lZ9@Yix#@^U&Eau0?y=dRYvbYziG>YU`f`cfph>D+}vE|I+Er100&2I#<&?Yw@~Zlc7w5JYjGA$+S2bG#3CJDc^3c}EXYf<#j|p{PsxeJ zzJE`EyyP~VD&?eUb`!g_9IN#dmU0>CPJRN_Uzv%6J8Of_!NPrE-GeVWpUsZ&)+tvE zfu5QoSeth0l|{k41xUe-Hvw_4b=(*OMN0(rjNBf0e@JKpzF;T73E+<=`yho~r8WDO z2k&SFy{dTe!UhyA?rG5bStV*%=?8FWR8_Wp5G_Lcj&XX|P5n%3dG4m^w4#?@AuVjl zOwdW-CHVpRPQBUju!1kUUtOH(b2aPo_Ic&e?Gc*QYBqDgv(*FDZ+i{jobl?B@htC& z`Pgj(T7U!Kgi$eqo#}LU*I(Q=L;H-2uSnbpD~=JtebIhirGej=nVya5=|YRb zu|n{#@3StQkZWOts0eEkTVwW9;^a}z##VT3_C zn0!m@I7`uc3}JUFU^a%9ZKmNhs{=h(PT2PnQ7bO&zV8&xr~RZeg0599P^d(l%bA)- z195RxPsn^-P#b(qpyyGIfb@9T1lZt(9fP_6wp;{m&6(Kzic<49W9J8LQv(s~k{)Q{ zSIVV$(Th})4EbatcB1tF>dCi*! z#f&d+;LZ;pU&0K1M@Pk`FLOdx#!HjcO{suBYob^#ZEL%GKfz_Z*7?n!r>D+Y9~(cr zNiEKo{5%5;qAsVpI<6XcXI6}1JD0PBRMjXFNz`rw8f2milcf(XJ#Ljt z+=Xus+7I=VDfV<6V8?kB?|06pRFH6)&gGS#*}}1L`x4Wn4r9Ft}Jpq(Y(yacUFfx3jYK<~-~vy`m#dbh8wx6-DwjEc(Dl7O&V zhLHMjcAs`}kp`Yj3guQxIW)aqm;%FlGNzJbHv(ULY7T5lKoRkSMN{ue6D=|cy{>YS z0jV^b`11Ekbko93lph-;y69b7Ax0oV8iywC0TUAw(T}YYOvW@{bM-_`gL^aR66Aub zvJ*~40k%{?@3x=e2FV4!X}1hpY_Kiux_joz@tb|(y2It6;N>e~ zj?*$L6yeDw;Kru*KpUy{n-bb~E-W5j^l)56{Hk7Y5KgssutYYc?Q}!@RP zsOZ!i28iCa-@I8lbtBYXRUYE{(u`cj^e%U=-3iNQKP;GM&2p0#c(;K82L=H(Am%pS z>HK%dz(xTbAJ787wd;fj!UmSAuG%YP(dU-wOvp_5S{$Hr6sn@4N?hY1AGV3W!jVDt zO`qZP7%Ex#Oa&E&$Da1Gql$)tsjQ>Q<4ewyyCbsuGiEV@(gf;lN9Ke4?@cj4Ic=*; zbwuPntsn8RFS=x@bhppX>=Pi&kIkR%*4aP*k}WqM+CKVhm0%tNn6*i~$Kp?rr@1Hv zdkTxfO~&`W!Lm`{biEof8jquoH7}JqDs3FlnnTyq>B{BHIf|OH{a99^~}4C+<)_uKz|e! za=!sR^gts3y(R5eCJ&Or!n^YgBUR2Jl~98AId=%F`%iX#&Oc9k%XOAqlft?gGQUGF zcJmwe&+QWHM6A731-&dfx~R>~t;%vO10v$_UkSdX9MiwpYh7yNV&N;Iy@lGq1wTcj z#Z!P3XH7vm@n4Z_Bo@kEDzeokbwz&;3%WYptnQ6V4}VJWouG)$h_hRT(x*N({K6^l z*|(~zr(8qlXLu-!KxtSAdh*#oUr3|+nsvOFO1#{M(W28XDrMS`k6Uj*KqPVh=&w_O zo_ROvaWZ4pgC0`r?`(RX3RW#q1f2BP>X00EOiCt=0#QTFfP`FHF1s;D5(N%Dn-Y#L2xRsOhVRSJ zh&ReyQipYm=PqVzVoVt-2JGVSR0yGz916;YeUycq#Dw$mHSPBH>x4|cS1&xyYxvMu zxVBy-m#a)nNDsml7K(d6BQ;n%Fp5rRg6gZe?glwexz28MqR`HtP%UXdywUiIik^k? zDT@;5OBzo(VQUm8G#y?F-wNWF+KYT#50g2ij?;5aDo77_S}ebFEPr|unOJ=n8`NyC zvrKuExnf|)uth?uap8l1ro+@~V?cUH%AI@DXAUM6gWH!`bdG#roXFn_9_pDqh2~^L ziavA2Z`_sLcFRZ%cz*Krt0*OTizsH+#asI-4Nz=^ESiYn^*m(JDq>X@d=g-+JiYC% zmnf31`lisGtlQ)rjqI3D&Q;*GTLtN(2{Xr*v&#bpRikI_mKdg7)q#VxGTKC zCJGlG)3GLqmP_t_=a<@B=V$fD_p{&9On<+F)tl0Zj@wc4Cvc1Gm%hiwNvWt@X&&O^ zU#6ep2oW@qAM;i2D3Nwi<1vaPWZz-A00kJf^jK!*6AWV?%Su zi2&(AQnqDsQog&%758gKb7q5G{8p0VvvrrYiroY6dD`7=JU=xgMH6f=+u5(_poTly zw=IV+TNi`N8=?Ge@VT!BOL^_tV_>ZO)N`7zdHaZd1e?O!Tr#_u*i?d_yVuf@InVBN z){BNkmbagN9vre1)Sl#*lL-PXuVy0Ex+}DA02lIz-?8=7HDM<@<{-XT0#yndq4?IAl3lW+u>$dClC(nZn_E7Jmf=cL2g@$ zrX>@$Y&+M?~4A4e271=L4kB-7V`vOmQ=0oU;>~%kszAK7!9bw3qQR$Vhr(Y`5_I@*aK*Dp)_RMy*`K+9({Nk;_0l(Gp zIZAstoI(+An0?Sz5hM%R2M%HIc~GqfQpH1s;b6w|Ipw%iHLP2U69O8ggEJs5a-wN) zeo(O0g(trEBt0ocpBVCfxS@k_xv)C=XDwk%QV|u{0*@ckTSam?1>#4ODRgB#m`VI@ z@miP49-2;hAwI)$EY(&hj??N^v%cE8puQuW%vu)C@M_$o-yH3C^({GoYIga|D6zGT z<@MK7wYx^{h(l_Hy&CajgLj_5fwsH3YTCh3W*qko(fn`zFY7^K)6SICIP%oH+49#PBV0M%nzpvgz?JHv ziZ~}awOH1Q&6dD$42J;)DE`>-+p_VV9!Uf3a0 zhC6JLSF)@Lpm10qtOQfs_UW38k`W@-5eI8&n6=YTTf_%yH54d{0G1!%cTmEISc7%sBzm-6PM1#9GAvow8TYx+cv_Vqv*mFfF%Cx?5n z)=f{ce)Yr7nVXTIKl7o=b=lZSZ zWyw3V?r7=-3v+5cB&~<|qaw`TRF^(^3D- ztxd~MERk-1=GtI^o8}+Fb(>uCOU=c)Q|-U=W=me(ze{z}@L1EI&97no2syP0MQA%+ zduZ0lPZ`bL8IU0oQJ=?>emmI}ldMqCB$KmYf~!P``}tE_x99F&*;Gu_Dmv}_VgJq? z`uR$hKyCNBqxsd{jFt!jETCBsTEuFse7vLLQY`2(DgqU+)-yUco|ZWmGf-{)$4(n4U-CKhA>n;0g|-!HRt!8BKxTb64Vrg6*0x62D(~78=Ww zoj%$Bn!k--MHQw9yu)9frImr-)=p2^M%ln4IfhhjZq+Ebnsld*Q8&V!n2>|_r9Nux z?wdB-bK-pc+3FksHj$Hj-@*ew%+U<>z@q1G!;DeP$#7L*h*rv-H zEj!b-`F(G*pY=LF8O9do+h!dTaMQ$h*GF`33!JClGVXY!GG7bq<;K#lXmJXi-t8p{ zeR{e*O+)kFjet_k2|zW;-Qqw?7Rft4A*bPcjqniSXDDQ()VQ3!-L7XR1vv}~f}Mh9 z?#`+DIRLwMODMk?)j_jx;dzln^!&M*>#h0Y*2RfauZdQLR|YKbZzhs+KQXZ?-LsM}xtyca#ZhAPq}8?C#DSJ~Ry zcdt5`JjXycwT(BC{0i}*ZVoS;89(H+f&l>1e|L%r*Op`U)*%)a$iJWdzT zgFkAV)#IW`O7<~hVR?t`0$Bt}(oZg6t+b5+tAybK!WBU67d7lgfWjrU!eIt#mg{ zU1I;dKlgav^mOGbh&Cw{PJNBB;X~Pj&6LaZGN~7{YdTW4?EIlMrR&I9ay?e9!aCB# zXz3H%@KcJU5rtC(H#;r>KCPnhjfv@T%!I@Kmy2bZheO4|2P9BJyeIJ@umJgDCv^}GyBDHu=g zdVZ#Sw|HE4qR!UWq@A<`Ih@3!Dnx5b^A8xj)>69~&gAW-FCV-)tYLJ&^tt?1>lzmo5Jig&*=<$xTLQ1_OPO>`p!ORk zPJ(5u)PV>%E8O%RTlXa1Fs(s7-k)U^N~{fZS5s-PW1sIc@4tBZmO$%&nO$b$E*lR$ zE9uQ_lbaKPlD4yW-fg*45zLu=uFw&(TXQc~T0OtTO|z>$6zlN;!Wauvf^l!^wihyrP;>c-?!1Pyt#q6f z5SI-5vo4l5vIAZRJl;Iz5X<1}{Y)XX4b%RnQhY)-D_4 zlEdxot{?B-ChE@%OqnE+crkabxGw7iDx)0$;n9{Ia57&;k;oaYZkA8`dQ4iP>mWXX zA|2heS=2lU%0;&?8nR5kf4z98MlWLMYTbS3u7_{t+<`RPNfwKvvK@SOiakbd{XD>Uu1oG(jO<&6DpD{0f`UCl7M zT32=w4={CW`r++cgMH=fxq z#9nvm?1i*RbK5gdygGPnVFsQbcb)rRzj+0K)4y+^vBiS`K`!y+BfCpDHjKg49_es5 zl!VGQ9b47Fu)Mv^;GKPXJNOAQ!x7>z6Dzag0h2bXJ^bua7(j971@Fm1_G&_7;q%-F z-8J`^fw>K-^&OcaMV3zr-JM-I%-W1%YNkdD$8UDx+^s5>=Fu_5zG4Y=bf;Mwt0$-i zjqd(zPkp5VXUc?>v=m@L)p}C>&}9UlVP%(E!N?XKEhFE^?>|W6jI5U6D=zuHc_%%= z;?^~00qBE#dfmjJr=A;aa-NaDI`(v?6(A>XduGdt*L>}4fAY|BeP_cupx#v8F1?^Q zc_zQ`lQ6k|>`|-M)EIi8xP9OBVAopk`R!@5mbKqY+rI7G$pdrM<}abPHUxw9qNu{Q zHnKGDwU^^T$hJ5@a;JBcLk}KzBs&{gg0gFN+|qg#X9d4*Te-i!pNAniIT_BtqTt literal 0 HcmV?d00001 diff --git a/sound/creatures/monkey/monkey_screech_4.ogg b/sound/creatures/monkey/monkey_screech_4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5a60b9466fa047efb2a6ff1083c5063d2e5f1dad GIT binary patch literal 16704 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⋙P=*j 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 G@xK7+rh>`< literal 0 HcmV?d00001 diff --git a/sound/creatures/monkey/monkey_screech_5.ogg b/sound/creatures/monkey/monkey_screech_5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..04b4be87f842bff31efa962c06d4fa1211ca18b9 GIT binary patch literal 20239 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 literal 0 HcmV?d00001 diff --git a/sound/creatures/monkey/monkey_screech_6.ogg b/sound/creatures/monkey/monkey_screech_6.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d73c3e9bb22500ae5217eb07895fa7fa842a6ce9 GIT binary patch literal 19189 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%0AF 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 YuM>Iyy%y!u_qQmYzE>H*aVwsO6iwuUWdHyG literal 0 HcmV?d00001 From 9fbf4dde776a073bf185766af164014059df0d5e Mon Sep 17 00:00:00 2001 From: zimon9 <122945887+zimon9@users.noreply.github.com> Date: Sun, 19 Jan 2025 23:48:11 -0500 Subject: [PATCH 117/118] Reduces the chance of getting hurt from a broken bone if one is walking (#3996) ## About The Pull Request This PR reduces the probability to cause damage to a player from 5% per tile walked to 1% per tile walked if the player is in the walk intent mode. If they are in the run intent mode, the probability remains at 5%. ## Why It's Good For The Game I thought it might be a little flavorful to have it so that the chance to get hurt from a broken bone is reduced if one is walking instead of running, as it would imply that a character is attempting to avoid jostling their broken bone(s) around. I'm not sure if the probabilities should be tweaked a little, however. ## Changelog :cl: balance: The bone breakage damage proc now depends on the movement intent of a carbon. Walking reduces the proc call probability /:cl: --------- Signed-off-by: zimon9 <122945887+zimon9@users.noreply.github.com> Co-authored-by: Theos --- code/modules/surgery/bodyparts/bodyparts.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 86735b49a9fb..5464c5279795 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -837,7 +837,7 @@ if(bone_status != BONE_FLAG_BROKEN || !owner || istype(owner?.buckled, /obj/structure/bed/roller)) return - if(prob(5)) + if(prob(owner.m_intent == MOVE_INTENT_RUN ? 5 : 1)) if(HAS_TRAIT(owner, TRAIT_ANALGESIA)) to_chat(owner, span_notice("[pick("You feel something shifting inside your [name].", "There is something moving inside [name].", "Something inside your [name] slips.")]")) else From be503c984dc39bc55343aac9a20aa3abaccc8da9 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 19 Jan 2025 23:09:38 -0600 Subject: [PATCH 118/118] Automatic changelog generation for PR #3996 [ci skip] --- html/changelogs/AutoChangeLog-pr-3996.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3996.yml diff --git a/html/changelogs/AutoChangeLog-pr-3996.yml b/html/changelogs/AutoChangeLog-pr-3996.yml new file mode 100644 index 000000000000..f86240097673 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3996.yml @@ -0,0 +1,5 @@ +author: zimon9 +changes: + - {balance: The bone breakage damage proc now depends on the movement intent of + a carbon. Walking reduces the proc call probability} +delete-after: true