diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index e2a172e107..9f0f2c50c0 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -383,4 +383,4 @@ UPDATE erro_library SET deleted = 1 WHERE id = someid (Replace someid with the id of the book you want to soft delete.) ----------------------------------------------------- \ No newline at end of file +---------------------------------------------------- diff --git a/SQL/errofreedatabase.sql b/SQL/errofreedatabase.sql index 7d6ea4561c..7f23fcc861 100644 --- a/SQL/errofreedatabase.sql +++ b/SQL/errofreedatabase.sql @@ -12,4 +12,4 @@ ALTER TABLE erro_poll_option RENAME TO SS13_poll_option; ALTER TABLE erro_poll_question RENAME TO SS13_poll_question; ALTER TABLE erro_poll_textreply RENAME TO SS13_poll_textreply; ALTER TABLE erro_poll_vote RENAME TO SS13_poll_vote; -ALTER TABLE erro_watch RENAME TO SS13_watch; \ No newline at end of file +ALTER TABLE erro_watch RENAME TO SS13_watch; diff --git a/SQL/optimisations_2017-02-19.sql b/SQL/optimisations_2017-02-19.sql index b9017497ed..1bb19cc667 100644 --- a/SQL/optimisations_2017-02-19.sql +++ b/SQL/optimisations_2017-02-19.sql @@ -226,4 +226,4 @@ ALTER TABLE `poll_vote` , ADD INDEX `idx_pvote_optionid_ckey` (`optionid` ASC, `ckey` ASC); ALTER TABLE `poll_textreply` - ADD INDEX `idx_ptext_pollid_ckey` (`pollid` ASC, `ckey` ASC); \ No newline at end of file + ADD INDEX `idx_ptext_pollid_ckey` (`pollid` ASC, `ckey` ASC); diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 2d914161d3..8ec2fcfc41 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -432,4 +432,4 @@ CREATE TABLE `schema_revision` ( /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; \ No newline at end of file +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index 2d44c8eac0..8bc768967d 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -432,4 +432,4 @@ CREATE TABLE `SS13_schema_revision` ( /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; \ No newline at end of file +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 2e066413f7..790e628cba 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -229,7 +229,7 @@ /area/ruin/powered/beach) "aV" = ( /obj/effect/mob_spawn/human/beach/alive{ - flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"; + flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"; l_pocket = /obj/item/reagent_containers/food/snacks/pizzaslice/dank; uniform = /obj/item/clothing/under/pants/youngfolksjeans }, @@ -349,7 +349,7 @@ dir = 4 }, /obj/effect/mob_spawn/human/beach/alive{ - flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; + flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; id = /obj/item/card/id; id_access = "Medical Doctor"; id_job = "Lifeguard"; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index cc961656f6..fe74e5a04d 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -544,7 +544,7 @@ "bN" = ( /obj/effect/mob_spawn/cow{ dir = 4; - flavour_text = "You're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon. You're getting quite impatient."; + flavour_text = "You're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon. You're getting quite impatient."; mob_name = "Flossie" }, /turf/open/floor/plasteel/white, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index c9c983f3bb..d77a0f7ec0 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -88,7 +88,7 @@ triggerer_only = 1 }, /obj/effect/step_trigger/message{ - message = "You've made a grave mistake, haven't you?"; + message = "You've made a grave mistake, haven't you?"; name = "ohfuck" }, /turf/open/floor/engine/cult{ diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 56ed4a3716..ee873d9bde 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -9,1185 +9,5461 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ad" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology{ + frequency = 1449; + id_tag = "lavaland_syndie_virology_interior"; + locked = 1; + name = "Virology Lab Interior Airlock"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) "ae" = ( -/turf/closed/wall/mineral/plastitanium/explosive, -/area/ruin/powered/syndicate_lava_base) +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/testlab) "af" = ( -/obj/structure/closet/secure_closet/bar{ - req_access = null; - req_access_txt = "150" +/obj/machinery/light/small{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) "ag" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/syndicake, -/obj/item/reagent_containers/food/snacks/syndicake, -/obj/item/reagent_containers/food/snacks/syndicake, -/obj/structure/sign/barsign{ - pixel_y = 32; +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ap" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"aq" = ( +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"as" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"at" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_chemistry" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"aL" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"aM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/chem_dispenser, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"cA" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/chemistry, +/obj/item/book/manual/wiki/chemistry, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"cG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/chem_master, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"cO" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dc" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"di" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"do" = ( +/obj/structure/closet/secure_closet/medical1{ req_access = null; req_access_txt = "150" }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ah" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/salad/validsalad, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ai" = ( -/obj/structure/rack{ - icon = 'icons/obj/stationobjs.dmi'; - icon_state = "minibar_left"; - name = "skeletal minibar" - }, -/obj/item/reagent_containers/food/drinks/bottle/vodka, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"aj" = ( -/obj/structure/rack{ - icon = 'icons/obj/stationobjs.dmi'; - icon_state = "minibar_right"; - name = "skeletal minibar" - }, -/obj/item/reagent_containers/food/drinks/bottle/gin, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"ak" = ( -/obj/structure/dresser, -/obj/structure/mirror{ - pixel_x = -26 - }, -/turf/open/floor/plasteel/vault, -/area/ruin/powered/syndicate_lava_base) -"al" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, -/turf/open/floor/plasteel/vault, -/area/ruin/powered/syndicate_lava_base) -"am" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/plasteel/vault, -/area/ruin/powered/syndicate_lava_base) -"an" = ( -/obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/toy/figure/syndie, -/turf/open/floor/plasteel/vault, -/area/ruin/powered/syndicate_lava_base) -"ao" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ap" = ( -/turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"aq" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"ar" = ( -/obj/item/stack/sheet/mineral/plastitanium{ - amount = 30 - }, -/obj/item/stack/rods/fifty, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/beakers, +/turf/open/floor/plasteel/white/side{ dir = 9 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"as" = ( -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"at" = ( -/obj/effect/mob_spawn/human/lavaland_syndicate{ - icon_state = "sleeper_s"; - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/ruin/powered/syndicate_lava_base) -"au" = ( -/turf/open/floor/plasteel/grimy, -/area/ruin/powered/syndicate_lava_base) -"av" = ( -/obj/effect/mob_spawn/human/lavaland_syndicate{ - icon_state = "sleeper_s"; - dir = 8 - }, -/turf/open/floor/plasteel/grimy, -/area/ruin/powered/syndicate_lava_base) -"aw" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ax" = ( -/obj/item/stack/cable_coil/white, -/obj/item/stack/cable_coil/white, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ay" = ( -/obj/structure/table/wood, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"du" = ( /obj/machinery/light/small{ - brightness = 3; - dir = 8 + dir = 1 }, -/turf/open/floor/plasteel/grimy, -/area/ruin/powered/syndicate_lava_base) -"az" = ( -/obj/structure/table/wood, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/machinery/light/small{ - dir = 4 +/obj/machinery/button/door{ + id = "lavalandsyndi_chemistry"; + name = "Chemistry Blast Door Control"; + pixel_y = 26; + req_access_txt = "150" }, -/turf/open/floor/plasteel/grimy, -/area/ruin/powered/syndicate_lava_base) -"aA" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 1 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"aB" = ( -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/structure/table/reinforced, -/obj/item/wrench, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dv" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"aC" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/wood{ - icon_state = "wood-broken4" +/obj/machinery/chem_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dw" = ( +/obj/structure/chair/office/light{ + dir = 1 }, -/area/ruin/powered/syndicate_lava_base) -"aD" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"aE" = ( -/obj/structure/table/wood, -/obj/item/toy/nuke, -/obj/item/book/manual/nuclear, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"aF" = ( -/obj/structure/table/wood, -/obj/item/lighter{ - pixel_y = 3 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/item/storage/fancy/cigarettes/cigpack_syndicate, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"aG" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"aH" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 26 +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dy" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dA" = ( +/obj/structure/closet/l3closet, +/obj/machinery/power/apc{ + dir = 8; + name = "Chemistry APC"; + pixel_x = -24; + req_access = 150 }, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"aI" = ( -/obj/effect/mob_spawn/human/lavaland_syndicate/comms{ - icon_state = "sleeper_s"; +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dC" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dE" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5; + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5; + pixel_x = 2; + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/bottle/charcoal{ + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/turf/open/floor/plasteel/white/corner{ dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/ruin/powered/syndicate_lava_base) -"aJ" = ( -/obj/structure/sign/nosmoking_2, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"aK" = ( -/obj/structure/closet/crate/bin, -/obj/item/trash/syndi_cakes, -/turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"aL" = ( -/obj/structure/chair/stool/bar, -/turf/open/floor/plasteel/vault{ +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dG" = ( +/obj/structure/lattice/catwalk, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"dI" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker/large, +/turf/open/floor/plasteel/white/side{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"aM" = ( -/obj/structure/chair/stool/bar, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dK" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate/secure/gear{ + req_access_txt = "150" + }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/storage/belt/military, +/obj/item/storage/belt/military, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"aN" = ( -/obj/structure/table/wood, -/obj/item/lipstick/random{ +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dL" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/structure/closet/crate, +/obj/item/extinguisher{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/extinguisher{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/extinguisher{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/flashlight{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/device/flashlight{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/radio/headset/syndicate/alt{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/radio/headset/syndicate/alt, +/obj/item/device/radio/headset/syndicate/alt{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dM" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dP" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dQ" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "Experimentation Room"; + req_access_txt = "150" + }, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi"; + name = "Syndicate Research Experimentation Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dS" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi"; + name = "Syndicate Research Experimentation Shutters" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dT" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dY" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3 + }, +/obj/item/reagent_containers/dropper, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ea" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate/secure/weapon{ + req_access_txt = "150" + }, +/obj/item/ammo_box/c10mm{ + pixel_y = 6 + }, +/obj/item/ammo_box/c10mm, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eb" = ( +/obj/structure/closet/crate, +/obj/item/storage/toolbox/electrical{ + pixel_y = 4 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ec" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/fire{ pixel_x = 3; pixel_y = 3 }, -/obj/item/lipstick/random{ +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/regular{ pixel_x = -3; pixel_y = -3 }, -/obj/item/lipstick/random, -/obj/item/soap/syndie, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ed" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ee" = ( +/obj/structure/rack, +/obj/item/device/flashlight{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ef" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Cargo Bay APC"; + pixel_y = 24; + req_access = 150 + }, +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eg" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eh" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ei" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ej" = ( +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/mob/living/carbon/monkey{ + faction = list("neutral","syndicate") + }, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"aO" = ( +/area/ruin/unpowered/syndicate_lava_base/testlab) +"ek" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"el" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"aP" = ( -/obj/structure/dresser, -/obj/structure/mirror{ - pixel_x = 26 +/area/ruin/unpowered/syndicate_lava_base/testlab) +"em" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "lavalandsyndi"; + name = "Syndicate Experimentation Lockdown Control"; + pixel_y = 26; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eo" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/metal/fifty, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"ep" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/syndicate, +/obj/item/stack/cable_coil/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eq" = ( +/obj/structure/table/reinforced, +/obj/item/device/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/voice, +/obj/item/device/assembly/voice, +/obj/item/device/assembly/voice, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/screwdriver/nuke, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"er" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"es" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"et" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/chem_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ev" = ( +/turf/open/floor/plasteel/white/corner, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ew" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/white{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil/white, +/obj/item/device/assembly/igniter{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/device/assembly/igniter{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/device/assembly/igniter{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/device/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/screwdriver{ + pixel_y = 20 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ex" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"aQ" = ( -/obj/item/target, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ey" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ez" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eA" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/mining/glass{ + name = "Warehouse"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eB" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eC" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/box/lights/bulbs, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eF" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_cargo" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eG" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eH" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eI" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eJ" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eK" = ( +/obj/machinery/light/small, +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/mob/living/carbon/monkey{ + faction = list("neutral","syndicate") + }, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"aR" = ( +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eL" = ( +/obj/machinery/door/airlock/hatch{ + name = "Monkey Pen"; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eM" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eN" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24; + req_access = null; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eP" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eQ" = ( +/obj/machinery/light/small, +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs, +/obj/item/device/taperecorder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eR" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/chem_master, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eT" = ( +/obj/effect/turf_decal/bot, +/obj/structure/chair/office/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/chem_dispenser, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eX" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eY" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eZ" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/stack/sheet/cardboard{ + amount = 3 + }, +/obj/item/stack/rods/twentyfive, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fa" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/brown/corner{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ff" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fi" = ( +/obj/structure/table/glass, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/obj/machinery/power/apc{ + dir = 1; + name = "Virology APC"; + pixel_y = 24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fj" = ( +/obj/structure/table/glass, +/obj/structure/reagent_dispensers/virusfood{ + pixel_y = 28 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/device/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fk" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Experimentation Lab APC"; + pixel_y = -24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"fl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"fm" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Chemistry Lab"; + req_access_txt = "150" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fn" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fo" = ( +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 2; + icon_state = "left"; + name = "Chemistry"; + req_access_txt = "0" + }, +/obj/machinery/door/window/southleft{ + base_state = "left"; + dir = 1; + icon_state = "left"; + name = "Chemistry"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fp" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fq" = ( +/obj/machinery/vending/assist, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fs" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large, +/obj/item/reagent_containers/glass/beaker/waterbottle/large, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ft" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large, +/obj/item/reagent_containers/glass/beaker/waterbottle/large, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fu" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/structure/table, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/soft{ + pixel_x = -8 + }, +/obj/item/clothing/head/soft{ + pixel_x = -8 + }, +/obj/item/device/radio{ + pixel_x = 5 + }, +/obj/item/device/radio{ + pixel_x = 5 + }, +/turf/open/floor/plasteel/brown{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fw" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fx" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fy" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation B"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fz" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation A"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fA" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/infections{ + pixel_y = 7 + }, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/spray/cleaner, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fB" = ( +/obj/structure/chair/stool, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fC" = ( +/obj/machinery/smartfridge/chemistry/virology/preloaded, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fD" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fE" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/l3closet, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"fF" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/shower{ + pixel_y = 14 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"fG" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/hatch{ + name = "Experimentation Lab"; + req_access_txt = "150" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"fH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"fI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"fO" = ( +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"fW" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Warehouse"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fY" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/stack/wrapping_paper{ + pixel_y = 5 + }, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gb" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gd" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gf" = ( +/obj/structure/sign/vacuum{ + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gg" = ( +/obj/structure/sign/fire{ + pixel_y = 32 + }, +/obj/structure/sign/xeno_warning_mining{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gh" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gj" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/virology) +"go" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/medical{ + name = "SyndiMed Plus"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gq" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gs" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gv" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"gz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gA" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology{ + frequency = 1449; + id_tag = "lavaland_syndie_virology_exterior"; + name = "Virology Lab Exterior Airlock"; + req_access_txt = "150" + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "lavaland_syndie_virology_exterior"; + idSelf = "lavaland_syndie_virology_control"; + name = "Virology Access Button"; + pixel_y = -24; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"gE" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"gF" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"gG" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gH" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gI" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"gJ" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"gK" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/brown/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"gL" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"gM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"gN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"gO" = ( +/obj/structure/sign/cargo, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gP" = ( +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gQ" = ( +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gS" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "lavalandsyndi_cargo"; + name = "Cargo Bay Blast Door Control"; + pixel_x = 26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gT" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Monkey Pen"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gV" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gX" = ( +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "lavaland_syndie_virology_exterior"; + idInterior = "lavaland_syndie_virology_interior"; + idSelf = "lavaland_syndie_virology_control"; + name = "Virology Access Console"; + pixel_x = 24; + pixel_y = -5; + req_access_txt = "150" + }, +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = 8 + }, +/obj/effect/turf_decal/caution/red{ + dir = 1; + pixel_y = -6 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "lavaland_syndie_virology_interior"; + idSelf = "lavaland_syndie_virology_control"; + name = "Virology Access Button"; + pixel_x = -24; + pixel_y = 8; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"gZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"ha" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"hb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hd" = ( +/turf/open/floor/plasteel/red/corner, +/area/ruin/unpowered/syndicate_lava_base/main) +"he" = ( +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"hf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"hg" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"hh" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"hi" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hj" = ( +/turf/open/floor/plasteel/brown{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hl" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hn" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ho" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/computer/shuttle{ + desc = "Occasionally used to call in a resupply shuttle if one is in range."; + dir = 8; + icon_keyboard = "syndie_key"; + icon_screen = "syndishuttle"; + light_color = "#FA8282"; + name = "syndicate cargo shuttle terminal"; + possible_destinations = "syndielavaland_cargo"; + req_access_txt = "150"; + shuttleId = "syndie_cargo" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hp" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/carbon/monkey{ + faction = list("neutral","syndicate") + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hr" = ( +/mob/living/carbon/monkey{ + faction = list("neutral","syndicate") + }, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hs" = ( +/obj/machinery/computer/pandemic, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door{ + id = "lavalandsyndi_virology"; + name = "Virology Blast Door Control"; + pixel_x = -26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ht" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/hand_labeler, +/obj/item/pen/red, +/obj/item/restraints/handcuffs, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hu" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 10 + }, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hv" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/deathsposal{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/red/box, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hw" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hx" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hy" = ( +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hz" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hA" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hB" = ( +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hE" = ( +/mob/living/carbon/monkey{ + faction = list("neutral","syndicate") + }, +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hF" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hG" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/carbon/monkey{ + faction = list("neutral","syndicate") + }, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hH" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_virology" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hI" = ( +/obj/structure/sign/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/fire{ + pixel_x = 32 + }, /obj/structure/closet/emcloset/anchored, /obj/item/tank/internals/emergency_oxygen/engi, /obj/item/device/flashlight/seclite, /obj/item/clothing/mask/gas, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"aS" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"aT" = ( -/obj/machinery/door/airlock/hatch{ - name = "Dormitories"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hL" = ( +/obj/machinery/light/small{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"aU" = ( -/obj/structure/closet/emcloset, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/device/flashlight/seclite, -/obj/item/clothing/mask/gas, -/obj/machinery/light{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/red/side{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ +/area/ruin/unpowered/syndicate_lava_base/main) +"hM" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/sniper_rounds, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hN" = ( +/obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"aV" = ( -/obj/machinery/door/airlock/hatch{ - name = "Storage Closet"; - req_access_txt = "150" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hO" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hP" = ( +/obj/machinery/light/small{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"aW" = ( -/obj/machinery/door/airlock/hatch{ - name = "Restroom"; +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hQ" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/m10mm, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"hS" = ( +/obj/structure/table/reinforced, +/obj/item/folder, +/obj/item/suppressor, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hT" = ( +/obj/machinery/vending/toyliberationstation{ req_access_txt = "150" }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/brown, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hU" = ( +/obj/machinery/light/small, +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hV" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/brown, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hW" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"hX" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hY" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hZ" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/red/side{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"aX" = ( -/obj/structure/mirror{ - pixel_x = 28 +/area/ruin/unpowered/syndicate_lava_base/main) +"ia" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ib" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate{ + icon_state = "sleeper_s"; + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ic" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"id" = ( +/obj/structure/toilet{ + pixel_y = 18 }, /obj/structure/sink{ dir = 4; pixel_x = 11 }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"aY" = ( +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ie" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate/comms{ + dir = 8; + icon_state = "sleeper_s" + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"if" = ( +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"ig" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"aZ" = ( +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"ih" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"ii" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ik" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"il" = ( +/obj/machinery/door/airlock{ + name = "Cabin 2"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"im" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms"; + req_access_txt = "0" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"in" = ( +/obj/machinery/door/airlock{ + name = "Cabin 4"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ip" = ( +/obj/effect/turf_decal/stripes/red/corner, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iq" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"ir" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"is" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"it" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"iu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"iv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"iw" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ix" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"iy" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iz" = ( +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iB" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iC" = ( +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iD" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iF" = ( +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iG" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"iH" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/red{ + dir = 8; + pixel_x = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iI" = ( +/obj/machinery/door/airlock/vault{ + id_tag = "syndie_lavaland_vault"; + locked = 1; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"iJ" = ( +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"iK" = ( +/obj/machinery/syndicatebomb/self_destruct{ + anchored = 1 + }, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"iL" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = 150 + }, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"iM" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"iN" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/main) +"iO" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"iP" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/main) +"iR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iT" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iU" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Dormitories APC"; + pixel_y = -24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/neutral/side, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iY" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iZ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ja" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "syndie_lavaland_vault"; + name = "Vault Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 24; + pixel_y = 8; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jc" = ( +/obj/machinery/light/small, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"jd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"je" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"jf" = ( +/obj/machinery/door/airlock{ + name = "Cabin 1"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jg" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jh" = ( +/obj/machinery/door/airlock{ + name = "Cabin 3"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ji" = ( +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Primary Hallway APC"; + pixel_x = -24; + req_access = 150 + }, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jj" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jk" = ( +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"jl" = ( +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jn" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate{ + icon_state = "sleeper_s"; + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"jq" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate{ + dir = 8; + icon_state = "sleeper_s" + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jr" = ( +/obj/machinery/vending/snack/random{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"js" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jt" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"ju" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jv" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jw" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jx" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_bar" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jy" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jz" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jA" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/sniper_rounds, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jB" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jC" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jD" = ( +/obj/machinery/vending/cola/random{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jE" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jG" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jI" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ba" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jK" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jL" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/lighter{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ + pixel_x = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jM" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "lavalandsyndi_bar"; + name = "Bar Blast Door Control"; + pixel_y = 26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jN" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jP" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"jR" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/main) +"jU" = ( +/obj/structure/sign/engineering, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/rack{ + dir = 8 + }, +/obj/item/clothing/gloves/combat, +/obj/item/crowbar, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jY" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jZ" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ka" = ( +/obj/structure/closet/crate/bin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kb" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/box/lights/bulbs, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/clothing/head/welding, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"ke" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kh" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"ki" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"kj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"kk" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"km" = ( +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/computer/monitor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ko" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kq" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = 150 + }, +/obj/machinery/vending/coffee{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kr" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ks" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"ku" = ( +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"kv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"kw" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/main) +"kx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ky" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kz" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kA" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Engineering APC"; + pixel_y = 24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kB" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kC" = ( +/obj/machinery/computer/atmos_control/tank{ + dir = 8; + frequency = 1442; + name = "Nitrogen Supply Control"; + output_tag = "syndie_lavaland_n2_out"; + sensors = list("syndie_lavaland_n2_sensor" = "Tank") + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kD" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kE" = ( +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "syndie_lavaland_n2_sensor" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kF" = ( +/obj/machinery/atmospherics/miner/nitrogen, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kG" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kH" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kJ" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kK" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kM" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/vending/cigarette{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kP" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kQ" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kS" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kT" = ( +/obj/structure/sign/bluecross_2, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kU" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow, +/obj/structure/sign/electricshock{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/power/smes/engineering, +/obj/structure/cable/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kZ" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 4; + node1_concentration = 0.8; + node2_concentration = 0.1; + on = 1; + target_pressure = 4500 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"la" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lb" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1442; + id_tag = "syndie_lavaland_n2_out"; + name = "nitrogen out" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ld" = ( +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"le" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"lf" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lg" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lh" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"li" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck/syndicate{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken4" + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lj" = ( +/obj/machinery/door/window/southleft{ + base_state = "right"; + dir = 1; + icon_state = "right"; + name = "Bar"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lk" = ( +/obj/structure/table/wood, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 30 + }, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, +/obj/item/book/manual/chef_recipes{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/book/manual/barman_recipes, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ll" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lm" = ( +/obj/structure/closet/secure_closet/medical1{ + req_access = null; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ln" = ( +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lo" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/firstaid/fire, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ls" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lu" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"lw" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors) +"lx" = ( +/obj/structure/bookcase/random, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ly" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lz" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/rag{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lA" = ( +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lC" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/obj/item/kitchen/rollingpin, +/obj/item/kitchen/knife{ + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lD" = ( +/obj/machinery/vending/boozeomat{ + req_access_txt = "0" + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lF" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/vending_refill/snack{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/vending_refill/snack{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/cola, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lG" = ( +/obj/structure/table, +/obj/item/storage/box/syringes, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/gun/syringe/syndicate, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lI" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lK" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lL" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 30 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lO" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lP" = ( +/obj/machinery/computer/atmos_control/tank{ + dir = 8; + frequency = 1442; + name = "Oxygen Supply Control"; + output_tag = "syndie_lavaland_o2_out"; + sensors = list("syndie_lavaland_o2_sensor" = "Tank") + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lQ" = ( +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "Syndicate_Construction_o2_sensor" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lR" = ( +/obj/machinery/atmospherics/miner/oxygen, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lS" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"lT" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"lU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lV" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lW" = ( +/obj/structure/table/wood, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lX" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ma" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/door/airlock{ + name = "Bar Storage"; + req_access_txt = "150" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mc" = ( +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"md" = ( +/obj/machinery/sleeper/syndie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"me" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mf" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24; + req_access = 150 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mg" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/decal/cleanable/dirt, +/obj/item/pipe_dispenser{ + pixel_y = 12 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mi" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mj" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "O2 to Incinerator"; + target_pressure = 4500 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mk" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/visible, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ml" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1442; + id_tag = "syndie_lavaland_o2_out"; + name = "oxygen out" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mn" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mo" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mp" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_telecomms" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mq" = ( +/obj/structure/sign/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mr" = ( +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"ms" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/fire{ + pixel_x = 32 + }, /obj/structure/closet/emcloset/anchored, /obj/item/tank/internals/emergency_oxygen/engi, /obj/item/device/flashlight/seclite, /obj/item/clothing/mask/gas, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bb" = ( +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mt" = ( +/obj/machinery/computer/arcade/orion_trail, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mu" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bc" = ( -/obj/structure/bookcase/random, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bd" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mv" = ( +/obj/structure/table/wood, /obj/machinery/light/small, +/obj/structure/cable/yellow, +/obj/machinery/power/apc{ + dir = 2; + name = "Bar APC"; + pixel_y = -24; + req_access = 150 + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mx" = ( +/obj/structure/table/wood, +/obj/machinery/microwave, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"my" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"be" = ( -/obj/structure/bookcase/random, -/turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"bf" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bg" = ( -/obj/machinery/door/airlock/hatch{ - name = "Lounge"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bh" = ( -/obj/machinery/chem_dispenser, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bi" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, -/obj/structure/sign/nosmoking_2{ - pixel_y = 32 - }, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bj" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bk" = ( -/obj/structure/noticeboard{ - pixel_y = 32 - }, -/obj/machinery/reagentgrinder{ - desc = "Used to grind things up into raw materials and liquids."; +/area/ruin/unpowered/syndicate_lava_base/bar) +"mz" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; pixel_y = 5 }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/area/ruin/powered/syndicate_lava_base) -"bl" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/folder/white, -/obj/item/book/manual/wiki/chemistry, -/obj/item/book/manual/wiki/chemistry, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/voice, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bm" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/syringes, -/obj/item/gun/syringe/syndicate, -/obj/item/storage/box/beakers, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"mA" = ( /obj/machinery/light/small{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bo" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bp" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder{ - desc = "Used to grind things up into raw materials and liquids."; - pixel_y = 5 - }, -/obj/structure/noticeboard{ - pixel_y = 32 - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bq" = ( -/obj/structure/reagent_dispensers/virusfood{ - pixel_y = 32 - }, -/obj/structure/table/reinforced, -/obj/item/device/healthanalyzer, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"br" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 32 - }, -/obj/machinery/computer/pandemic, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bs" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/syringes, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bt" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, -/obj/item/reagent_containers/blood/random, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bu" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/powered/syndicate_lava_base) -"bv" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bw" = ( -/obj/structure/bed/roller, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bx" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"by" = ( -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bz" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bA" = ( -/obj/machinery/door/window/brigdoor, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bB" = ( -/obj/machinery/chem_heater, -/obj/structure/extinguisher_cabinet{ +/obj/item/reagent_containers/blood/OMinus, +/obj/machinery/firealarm{ + dir = 8; pixel_x = -26 }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 8 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bC" = ( -/obj/structure/chair/office/dark{ +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mE" = ( +/obj/structure/table/reinforced, +/obj/item/scalpel, +/obj/item/circular_saw{ + pixel_y = 9 + }, +/obj/machinery/light/small{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mF" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mH" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mI" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/welding, +/obj/item/weldingtool/largetank, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mJ" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bD" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bE" = ( -/turf/open/floor/plasteel/vault, -/area/ruin/powered/syndicate_lava_base) -"bF" = ( -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/computer/atmos_control/tank{ + dir = 1; + frequency = 1442; + name = "Toxins Supply Control"; + output_tag = "syndie_lavaland_tox_out"; + sensors = list("syndie_lavaland_tox_sensor" = "Tank") }, -/obj/item/device/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/device/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bG" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/infections, -/obj/item/stack/sheet/mineral/silver{ - amount = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bH" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bI" = ( -/obj/machinery/door/airlock/hatch{ - name = "Monkey Pen"; +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mM" = ( +/turf/open/floor/circuit/green, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mN" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mO" = ( +/obj/structure/filingcabinet/security, +/obj/machinery/button/door{ + id = "lavalandsyndi_telecomms"; + name = "Telecomms Blast Door Control"; + pixel_y = 26; req_access_txt = "150" }, /turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"bJ" = ( -/obj/structure/table/reinforced, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bK" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bL" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/suit/toggle/labcoat, -/obj/item/clothing/suit/toggle/labcoat, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bM" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bN" = ( -/obj/machinery/vending/toyliberationstation{ - req_access_txt = "150" - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bO" = ( -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood/random, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bP" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bQ" = ( -/obj/structure/chair/office/dark, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bR" = ( -/obj/machinery/chem_heater, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bS" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/beaker/large, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bT" = ( -/obj/structure/chair/office/dark, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bU" = ( -/obj/machinery/door/airlock/hatch{ - name = "Monkey Pen"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"bV" = ( -/obj/structure/table/reinforced, -/obj/item/folder, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/ears/earmuffs, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bW" = ( -/obj/structure/table/reinforced, -/obj/item/suppressor/specialoffer, -/obj/item/gun/ballistic/automatic/toy/pistol/unrestricted, -/obj/item/gun/ballistic/automatic/toy/pistol/unrestricted, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"bX" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bY" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"bZ" = ( -/obj/machinery/chem_dispenser, -/obj/structure/extinguisher_cabinet{ - pixel_x = 26 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ca" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/suit/bio_suit/general, -/obj/item/clothing/mask/surgical, -/obj/item/clothing/head/bio_hood/general, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/science, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cb" = ( -/obj/machinery/shower{ - dir = 4; - icon_state = "shower"; - name = "emergency shower" - }, -/obj/machinery/shower{ - dir = 8; - icon_state = "shower"; - name = "emergency shower" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"cc" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/light, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cd" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/stack/sheet/mineral/gold{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ce" = ( -/obj/structure/bed/roller, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"cf" = ( -/obj/structure/sign/securearea, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cg" = ( -/obj/machinery/door/airlock/hatch{ - name = "Firing Range"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"ch" = ( -/obj/machinery/door/airlock/hatch{ - name = "Chemistry Lab"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"ci" = ( -/obj/structure/sign/chemistry, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cj" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ck" = ( -/obj/machinery/door/airlock/hatch{ - name = "Virology Lab"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"cl" = ( -/obj/structure/rack, -/obj/item/ammo_box/foambox{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/foambox, -/obj/item/ammo_box/foambox{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cm" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"co" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cp" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cq" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cr" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, -/turf/open/floor/plating, -/area/ruin/powered/syndicate_lava_base) -"cs" = ( +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mP" = ( +/obj/structure/filingcabinet/security, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mQ" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mR" = ( /obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 +/obj/item/storage/toolbox/syndicate, +/obj/item/device/multitool, +/obj/machinery/button/door{ + id = "lavalandsyndi_telecomms"; + name = "Telecomms Blast Door Control"; + pixel_x = 26; + req_access_txt = "150" }, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mS" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mT" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mU" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mV" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/sign/barsign{ + pixel_y = -32; + req_access = null; + req_access_txt = "0" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mW" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mX" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/cable_coil/yellow{ + pixel_x = 2; pixel_y = -3 }, -/turf/open/floor/plasteel/vault, -/area/ruin/powered/syndicate_lava_base) -"ct" = ( +/obj/item/device/multitool, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mZ" = ( /obj/machinery/sleeper/syndie{ - dir = 8 + dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"na" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cu" = ( -/obj/structure/closet/crate/secure, -/obj/item/target, -/obj/item/target, -/obj/item/target/alien, -/obj/item/target/alien, -/obj/item/target/clown, -/obj/item/target/clown, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nb" = ( +/obj/structure/table/optable, +/obj/item/surgical_drapes, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 4 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nc" = ( +/obj/machinery/computer/turbine_computer{ + dir = 1; + id = "syndie_lavaland_incineratorturbine" }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cw" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cx" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -32 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cy" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cz" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"cB" = ( -/obj/machinery/door/airlock/hatch{ - name = "Infirmary"; +/obj/machinery/button/door{ + id = "syndie_lavaland_turbinevent"; + name = "Turbine Vent Control"; + pixel_x = 6; + pixel_y = -24; req_access_txt = "150" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/machinery/button/door{ + id = "syndie_lavaland_auxincineratorvent"; + name = "Auxiliary Vent Control"; + pixel_x = -6; + pixel_y = -24; + req_access_txt = "150" }, -/area/ruin/powered/syndicate_lava_base) -"cC" = ( -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood/random, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nd" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/area/ruin/powered/syndicate_lava_base) -"cD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "lavalandsyndi"; - name = "Syndicate Research Experimentor Shutters" +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ne" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "syndie_lavaland_incinerator_exterior"; + idInterior = "syndie_lavaland_incinerator_interior"; + idSelf = "syndie_lavaland_incinerator_access"; + name = "Incinerator Access Console"; + pixel_x = -8; + pixel_y = -26; + req_access_txt = "150" }, +/obj/machinery/button/ignition{ + id = "syndie_lavaland_Incinerator"; + pixel_x = 6; + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nf" = ( +/obj/structure/sign/fire, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ng" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plating, -/area/ruin/powered/syndicate_lava_base) -"cE" = ( -/obj/machinery/door/airlock/hatch{ - name = "Experimentation Room"; - req_access_txt = "150" +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nh" = ( +/obj/machinery/telecomms/relay/preset/ruskie{ + use_power = 0 }, -/turf/open/floor/plasteel/vault{ +/obj/machinery/light/small{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"cF" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ni" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nj" = ( /obj/machinery/door/airlock/hatch{ name = "Telecommunications Control"; req_access_txt = "150" }, /turf/open/floor/plasteel/vault{ - dir = 8 + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nm" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cG" = ( -/turf/open/floor/engine, -/area/ruin/powered/syndicate_lava_base) -"cH" = ( /obj/structure/noticeboard{ - pixel_y = 32 + dir = 8; + pixel_x = 27 }, -/obj/machinery/light{ +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nn" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"no" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"np" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nq" = ( +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cI" = ( -/obj/structure/table, -/obj/item/storage/toolbox/syndicate, -/obj/item/device/multitool, -/turf/open/floor/plasteel/vault{ - dir = 8 +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"ns" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, -/area/ruin/powered/syndicate_lava_base) -"cJ" = ( -/obj/item/surgicaldrill, -/obj/item/circular_saw, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cK" = ( -/obj/structure/sink{ +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4; - pixel_x = 11 + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, -/obj/structure/mirror{ - pixel_x = 30 +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 1; + name = "Arrival Hallway APC"; + pixel_y = 24; + req_access = 150 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 2; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nx" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ny" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nA" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/white/corner, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nB" = ( +/obj/structure/table/reinforced, +/obj/item/surgicaldrill, +/obj/item/cautery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nC" = ( +/obj/structure/table/reinforced, +/obj/item/retractor, +/obj/item/hemostat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + id_tag = "syndie_lavaland_incinerator_interior"; + locked = 1; + name = "Turbine Interior Airlock"; + req_access_txt = "150" + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nE" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; + frequency = 1442; + id_tag = "syndie_lavaland_tox_out"; + name = "toxin out" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nG" = ( +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "syndie_lavaland_tox_sensor" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nH" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = 150 + }, +/obj/machinery/light/small{ + dir = 8 }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cL" = ( -/obj/item/stack/cable_coil/white{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/syndicate, -/obj/item/stack/cable_coil/white, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nI" = ( +/obj/machinery/computer/camera_advanced, /turf/open/floor/plasteel/vault{ - dir = 8 + dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cM" = ( -/obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"cN" = ( +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nJ" = ( /obj/structure/table/reinforced, /obj/item/device/radio/intercom{ broadcasting = 0; @@ -1197,67 +5473,330 @@ name = "Pirate Radio Listening Channel" }, /turf/open/floor/plasteel/vault{ - dir = 8 + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/area/ruin/powered/syndicate_lava_base) -"cO" = ( -/obj/machinery/computer/camera_advanced, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cP" = ( -/obj/structure/filingcabinet/chestdrawer, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nL" = ( +/obj/machinery/door/airlock/hatch{ + name = "Telecommunications"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nM" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nO" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nU" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nW" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nX" = ( +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nY" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/floorgrime, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nZ" = ( +/turf/open/floor/plasteel/white/side{ + dir = 4 + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oa" = ( +/turf/open/floor/plasteel/white/side{ + dir = 10 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ob" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"oc" = ( +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_y = -29 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc{ + dir = 4; + name = "Medbay APC"; + pixel_x = 24; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white/side{ + dir = 6 + }, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"od" = ( +/obj/machinery/light/small{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"cQ" = ( -/obj/item/cautery, -/obj/item/scalpel, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/machinery/doorButtons/access_button{ + idDoor = "syndie_lavaland_incinerator_exterior"; + idSelf = "syndie_lavaland_incinerator_access"; + layer = 3.1; + name = "Incinerator airlock control"; + pixel_x = 8; + pixel_y = -24 }, -/area/ruin/powered/syndicate_lava_base) -"cR" = ( -/obj/structure/table/optable, -/obj/item/surgical_drapes, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oe" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/area/ruin/powered/syndicate_lava_base) -"cS" = ( -/obj/item/retractor, -/obj/item/hemostat, -/obj/structure/table/reinforced, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"of" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/machinery/doorButtons/access_button{ + idDoor = "syndie_lavaland_incinerator_interior"; + idSelf = "syndie_lavaland_incinerator_access"; + name = "Incinerator airlock control"; + pixel_x = -8; + pixel_y = 24 }, -/area/ruin/powered/syndicate_lava_base) -"cT" = ( -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 +/obj/machinery/atmospherics/components/binary/pump/on{ + target_pressure = 4500 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"cU" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/obj/structure/extinguisher_cabinet{ +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"og" = ( +/obj/machinery/atmospherics/miner/toxins, +/obj/machinery/light/small, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oh" = ( +/obj/machinery/firealarm{ + dir = 8; pixel_x = -26 }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"cV" = ( +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"oi" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"oj" = ( /obj/structure/table/reinforced, /obj/item/device/radio/intercom{ broadcasting = 1; @@ -1267,455 +5806,277 @@ name = "Pirate Radio Broadcast Channel" }, /turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ok" = ( +/obj/structure/chair{ dir = 8 }, -/area/ruin/powered/syndicate_lava_base) -"cW" = ( -/obj/structure/sign/fire{ - pixel_x = -32 - }, -/turf/open/floor/engine, -/area/ruin/powered/syndicate_lava_base) -"cX" = ( -/obj/structure/table/reinforced, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/voice, -/obj/item/screwdriver/nuke, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"cY" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/plasteel{ - amount = 15 - }, -/obj/item/device/electropack, -/obj/item/device/taperecorder, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"cZ" = ( -/obj/structure/filingcabinet/security, -/obj/machinery/light{ - dir = 8 +/obj/structure/cable/yellow, +/obj/machinery/power/apc{ + dir = 2; + name = "Telecommunications APC"; + pixel_y = -24; + req_access = 150 }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ruin/powered/syndicate_lava_base) -"da" = ( +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ol" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/rack{ + dir = 8 + }, +/obj/item/clothing/suit/space/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/head/helmet/space/syndicate, +/obj/item/device/mining_scanner, +/obj/item/pickaxe, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"om" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"on" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -29 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oo" = ( +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"op" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oq" = ( +/obj/machinery/button/door{ + id = "lavalandsyndi_arrivals"; + name = "Arrivals Blast Door Control"; + pixel_y = -26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"or" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/belt/medical, +/obj/effect/decal/cleanable/dirt, +/obj/item/crowbar, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/neck/stethoscope, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"os" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/medical{ + name = "SyndiMed Plus"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ot" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + id_tag = "syndie_lavaland_incinerator_exterior"; + locked = 1; + name = "Turbine Exterior Airlock"; + req_access_txt = "150" + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ou" = ( +/obj/machinery/computer/message_monitor{ + dir = 1 + }, +/obj/item/paper/monitorkey, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ov" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, /obj/item/pen, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ow" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"ox" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_arrivals" }, -/area/ruin/powered/syndicate_lava_base) -"db" = ( -/obj/machinery/computer/message_monitor, -/obj/item/paper/monitorkey, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oy" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"oz" = ( +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/area/ruin/powered/syndicate_lava_base) -"dd" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel/vault{ - dir = 5 +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oA" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/area/ruin/powered/syndicate_lava_base) -"de" = ( -/obj/machinery/button/door{ - id = "lavalandsyndi"; - name = "Syndicate Experimentor Lockdown Control"; - pixel_x = 26; - req_access_txt = "150" +/obj/machinery/igniter{ + id = "syndie_lavaland_Incinerator"; + luminosity = 2; + on = 0 }, -/turf/open/floor/engine, -/area/ruin/powered/syndicate_lava_base) -"df" = ( -/obj/machinery/button/door{ - id = "lavalandsyndi"; - name = "Syndicate Experimentor Lockdown Control"; - pixel_x = -26; - req_access_txt = "150" +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oB" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "syndie_lavaland_inc_in" }, -/area/ruin/powered/syndicate_lava_base) -"dg" = ( -/obj/item/stack/sheet/mineral/plastitanium{ - amount = 30 +/obj/structure/sign/vacuum{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 }, -/obj/item/stack/rods/fifty, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 4 +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oC" = ( +/obj/machinery/door/poddoor{ + id = "syndie_lavaland_auxincineratorvent"; + name = "Auxiliary Incinerator Vent" }, -/area/ruin/powered/syndicate_lava_base) -"dh" = ( -/obj/structure/filingcabinet/medical, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/area/ruin/powered/syndicate_lava_base) -"di" = ( -/turf/open/floor/circuit/green, -/area/ruin/powered/syndicate_lava_base) -"dj" = ( -/obj/machinery/door/poddoor/preopen{ - id = "lavalandsyndi"; - name = "Syndicate Research Experimentor Shutters" +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oD" = ( +/obj/structure/sign/xeno_warning_mining{ + pixel_x = -32 }, -/obj/machinery/door/airlock/hatch{ - name = "Experimentation Room"; - req_access_txt = "150" +/obj/structure/sign/fire{ + pixel_x = 32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oE" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 }, -/area/ruin/powered/syndicate_lava_base) -"dk" = ( -/obj/item/stack/sheet/metal/fifty, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/structure/table/reinforced, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade/large, -/obj/item/grenade/chem_grenade/large, -/obj/item/grenade/chem_grenade/large, -/obj/item/grenade/chem_grenade/large, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/machinery/power/compressor{ + comp_id = "syndie_lavaland_incineratorturbine"; + dir = 1; + luminosity = 2 }, -/area/ruin/powered/syndicate_lava_base) -"dl" = ( -/obj/machinery/door/airlock/hatch{ - name = "Self Destruct Control"; - req_access_txt = "150" +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oF" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oG" = ( +/obj/structure/cable, +/obj/machinery/power/turbine{ + dir = 2; + luminosity = 2 }, -/area/ruin/powered/syndicate_lava_base) -"dm" = ( -/obj/machinery/telecomms/relay/preset/ruskie{ - use_power = 0 +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oH" = ( +/obj/machinery/door/poddoor{ + id = "syndie_lavaland_turbinevent"; + name = "Turbine Vent" }, -/area/ruin/powered/syndicate_lava_base) -"dn" = ( -/obj/machinery/door/airlock/hatch{ - name = "Syndicate Recon Outpost"; - req_access_txt = "150" +/turf/open/floor/engine{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" }, -/obj/structure/fans/tiny, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"do" = ( -/turf/open/floor/circuit/red, -/area/ruin/powered/syndicate_lava_base) -"dp" = ( -/obj/machinery/door/airlock/hatch{ - name = "Monkey Pen"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"dq" = ( +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oI" = ( /obj/structure/sign/vacuum{ pixel_x = -32 }, /obj/machinery/light/small{ - brightness = 3; dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oJ" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"oK" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/area/ruin/powered/syndicate_lava_base) -"dr" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"ds" = ( -/obj/machinery/syndicatebomb/self_destruct, -/turf/open/floor/circuit/red, -/area/ruin/powered/syndicate_lava_base) -"dt" = ( -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"fJ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"fK" = ( -/obj/machinery/light{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/wood, -/area/ruin/powered/syndicate_lava_base) -"fL" = ( -/obj/machinery/light{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4; + piping_layer = 3; + pixel_x = 5; + pixel_y = 5 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"fM" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"fN" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"fP" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"fQ" = ( -/obj/structure/bed/roller, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"fR" = ( -/obj/machinery/light{ - dir = 4 +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"oL" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"oM" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"oN" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/turf/open/floor/plasteel/red/side, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oO" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 }, /turf/open/floor/plasteel/dark, -/area/ruin/powered/syndicate_lava_base) -"fS" = ( -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood/random, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"fT" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"fU" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"fV" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ruin/powered/syndicate_lava_base) -"fX" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"fZ" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/ruin/powered/syndicate_lava_base) -"ga" = ( -/obj/machinery/light/small, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"ge" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/engine, -/area/ruin/powered/syndicate_lava_base) -"gi" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/circuit/green, -/area/ruin/powered/syndicate_lava_base) -"gk" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/circuit/red, -/area/ruin/powered/syndicate_lava_base) -"gl" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/circuit/red, -/area/ruin/powered/syndicate_lava_base) -"gm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"go" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) -"gD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered/syndicate_lava_base) +/area/ruin/unpowered/syndicate_lava_base/bar) +"oP" = ( +/obj/structure/sign/chemistry, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/testlab) (1,1,1) = {" aa @@ -1723,8 +6084,10 @@ aa aa aa aa -ab -ab +aa +aa +aa +aa ab ab ab @@ -1754,6 +6117,11 @@ ab ab ab ab +ab +aa +aa +aa +aa aa aa "} @@ -1762,6 +6130,9 @@ aa aa aa aa +aa +aa +aa ab ab ab @@ -1795,10 +6166,19 @@ ab ab ab ab +ab +ab +aa +aa aa "} (3,1,1) = {" aa +aa +aa +aa +ab +aa ab ab ab @@ -1836,9 +6216,12 @@ ab ab ab ab +ab +aa "} (4,1,1) = {" aa +aa ab ab ab @@ -1870,73 +6253,26 @@ ab ab ab ab +mn +mn +mn +mn +mn ab ab ab ab ab aa +aa "} (5,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(6,1,1) = {" aa ab ab ab ab ab -ac -ab -ab -ab -ab -ab -ac -ab -ab -ab -ac -ac -ac ab ab ab @@ -1956,6 +6292,73 @@ ab ab ab ab +ab +ab +ab +ab +ab +ab +ab +mn +mn +mM +nh +mM +mn +mn +ab +ab +ab +ab +ab +aa +"} +(6,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mn +mM +mM +ni +mM +mM +mn +ab +ab +ab +ab +aa +aa "} (7,1,1) = {" aa @@ -1969,6 +6372,12 @@ ab ab ab ab +eh +eh +eh +eh +gj +eh ab ab ab @@ -1978,26 +6387,29 @@ ab ab ab ab -ac -ab -ac -ac -ab -ab -ab -ac -ab -ac -ac -ac -ac ab ab ab ab ab +ab +mn +mo +mN +nj +mn +mn +mn +ab +ab +ab +ab +ab +aa "} (8,1,1) = {" +aa +ab ab ab ab @@ -2007,37 +6419,44 @@ ab ab ab ac -ac -ac -ab -ab -ac -ac -ac -ac -ab -ac -ac -ab -ab -ac -ad -ad -ad -ad -ad -ad -ae -ad -ad -ac +eh +eG +ff +eI +go +eh +eh +eh +eh ab ab ab ab ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mP +ni +nH +oh +mn +mn +ab +ab +ab +ab +aa "} (9,1,1) = {" +aa +aa ab ab ab @@ -2046,31 +6465,36 @@ ab ab ab ab -ac -ad -ad -ad -ad -ad -ae -ad -ad -ad -ad -ad -ad -ae -ad -ad -cG -ge -cG -cW -cG -ge -cG -ad -ac +ab +eh +eH +fg +fy +gp +eI +hp +hE +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mP +nk +nI +oi +ou +mn ab ab ab @@ -2087,30 +6511,37 @@ ab ab ab ab -ad -aq -aq -aq -aY -fP -gm -bz -bJ -bN -bV -cf -cl -cu -ad -cG -cG -cG -cG -cG -cG -cG -ad ab +ac +eh +eI +eI +eI +gq +gT +hq +hF +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mQ +nl +nJ +oj +ov +mn ab ab ab @@ -2118,44 +6549,51 @@ ab ab "} (11,1,1) = {" +aa +ab +ab +ab +ab ab ab ab ab ab ac +eh +eG +fh +eI +gr +eI +hr +hG +eh ab ab ab -ad -aq -aQ -aO -aO -aO -aO -bA -aO -aq -aq -cg -aq -aq -cD -cG -cG -cG -cG -cG -cG -cG -ad ab ab ab ab ab ab +ab +ab +ab +ab +mp +mR +nm +nK +ok +mn +mn +ab +ab +ab +ab +ab "} (12,1,1) = {" ab @@ -2165,31 +6603,38 @@ ab ab ab ab -ac -ac -ad -aq -fL -aq -aZ -aq -gn -bz -bK -aq -bW -ad -aS -aq -ad -cG -cG -cG -cG -cG -cG -cG -ad +ab +ab +ab +ab +eh +eH +fg +fz +gs +eh +gj +eh +eh +ab +ab +ab +ab +ab +ab +dG +dG +dG +dG +dG +dG +lS +mn +mo +mn +nL +mn +mn ab ab ab @@ -2204,33 +6649,40 @@ ab ab ab ab -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -bu -cg -ad -cG -cG -cG -cG -cG -cG -cG -ad -ac +ab +ab +ab +ab +ab +eh +eh +eI +eI +gt +gU +hs +hH +ab +ab +ab +ab +ab +ab +dG +dG +ig +iu +iu +iu +lv +lT +mq +mS +nn +nM +mT +mT +ab ab ab ab @@ -2244,33 +6696,40 @@ ab ab ab ab -ad -ao -aw -aA -aJ -aR -aU -ba -ad -bh -bB -aS -fS -bO -cf -cm -gm -ad -cG -cG -cG -cG -cG -cG -cG -ad +ab +ab +ab +ab +ab ac +eh +fi +fA +gu +gV +ht +hH +ab +ab +ab +ab +ab +dG +dG +ig +je +iv +jk +le +lw +lT +mr +mS +nn +nN +ol +mT +ab ab ab ab @@ -2284,34 +6743,41 @@ ab ab ab ab -ad -ap -aq -ap -aq -aq -ap -aq -ad -bi -bC -aq -ap -aq -ch -cn -cw -ad -cG -cG -cG -cG -de -cG -cG -ad -ac -ac +ab +ab +ab +ab +ab +ei +eJ +fj +fB +gv +gW +hu +hH +ab +ab +ab +ab +dG +dG +ig +je +jk +jx +jx +jP +jy +jy +ms +mT +no +nN +ol +ow +ab +ab ab ab ab @@ -2323,35 +6789,42 @@ ab ab ab ab +ab +ac +ab +ac ac -ad -aq -ap -aq -ap -ap -aq -ap -ad -bj -bD -aq -aq -aq -ci -cn -cx -ad -cf -cD -cD -cD -ad -dj -ad ae -ad -ad +ae +aL +ae +fC +gw +gX +hv +hH +ab +ab +ab +dG +dG +ig +je +jk +jx +jx +kG +lf +lx +jy +jy +jy +np +nO +mT +mT +mT +oF ab ab ab @@ -2362,36 +6835,43 @@ ab ab ab ab -ab -ac -ad -ar -ax -aB -ad -aS -aq -bb -ad -bk -bE -aq -bP -bX -ad -fX -ga ae -aS -cL -bF -cX -df -aq -cU -bu -dt +ae +ae +aL +ae +ae +ae +ej +eK +ae +fD ad +eh +gj +eh +hW +dG +dG +dG +ig +je +iv +jx +jx +kn +kH +jN +jZ +lU +mt +mU +np +nP +mS +oI +oD +lT ab ab ab @@ -2401,37 +6881,44 @@ ab ab ab ab -ab -ab -ad -ad -ad -ad -ad -ad -ad -aV -ad ae -bl -bE -aq -bQ -bY -bu -cn -cw -cE +ae aq aq aq +dc aq -aq -aq -aq -dp -aO -ad +dQ +ek +eL +ae +fE +gy +gY +hw +hI +hX +ig +iu +iu +je +jk +jx +jx +jN +jZ +jN +jZ +jN +jZ +kn +mU +nq +nQ +mT +mT +mT +oF ab ab ab @@ -2441,37 +6928,44 @@ ab ab ab ab -ab -ab -ad -af -as -fJ -aC -aK -aq +ae ap -bc -ad -bm -bF -bL -bR -bZ -ad -cn -cw -cf aq -fL -cT -cY -dg -dk -aS -bu -dt -ad +aq +aq +aq +aq +dR +el +eM +ae +fF +gz +gZ +hw +hJ +hY +ih +iv +iM +iv +iv +jx +jL +jY +jN +kI +lg +ly +lV +mu +mU +nr +nR +om +mT +ab +ab ab ab ab @@ -2481,37 +6975,44 @@ ab ab ab ab -ab -ab -ad -ag -as -as -aD -aL -ap +ae aq -bd -ad -ad -bu -bu -bu -ad -ad -cn -cw -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -cf +aq +aq +oJ +aq +aq +ae +em +eN +ae +ae +gA +ha +ha +hK +ha +ha +ha +iN +ha +ha +jy +jM +jN +oL +kJ +lh +lz +lW +mv +jy +jy +nS +on +ow +ab +ab ab ab ab @@ -2521,37 +7022,44 @@ ab ab ab ab +ae +aq +aq +aq +aq +aq +aq +dS +eo +eO +fk +ae +gB +hb +ha +ha +ha +ii +iw +iO +hB +jl +jz +jN +jZ +ko +kK +li +lA +lX +mw +mV +jy +nu +oo +ox ab ab -ad -ah -as -as -aE -aM -aq -ap -aq -bg -bn -go -go -go -fT -go -co -cy -go -fT -go -go -fT -go -gm -dn -dq -aO -dn ab ab ab @@ -2561,37 +7069,44 @@ ab ab ab ab -ab -ab ae -ad -as -as -aF -aL ap aq -ap -bg -bo -gp -gp -gp -fU -gp -cp -cz -gp -fU -gp -gp -fU -gp -gn -dn -dr -aO -dn +aq +aq +aq +aq +dS +ep +eP +fl +fG +gE +hc +hx +hL +hZ +ij +ix +iP +hd +jm +jz +jO +jN +kp +kL +lj +lB +lY +lA +mW +jy +nT +op +ox +ab +ab ab ab ab @@ -2601,37 +7116,44 @@ ab ab ab ab -ab -ab -ad -ai -as -as -aG -ap +ae +ae aq -ap -fM -ad -ad -bu -bu -bu -ad -ad -cn -cw -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -cf +aq +aq +di +aq +dS +eq +eQ +ae +dQ +gF +hd +hy +hy +ia +ik +if +iQ +hz +hz +jy +jy +ka +kq +kM +lk +lC +lZ +mx +jy +jy +nU +oN +ox +ab +ab ab ab ab @@ -2642,35 +7164,42 @@ ab ab ab ab +ae +ae +ae +aL +ae +ae +ae +ae +ae +oP +fH +gG +he +hz +hz +hz +hz +iy +iR +hz +jn +jA +jP +jy +jy +jy +jy +lD +ma +jy +jy +ns +nV +oo +ox ab -ad -aj -as -fK -aH -aq -ap -aq -be -ad -bp -bG -bM -bS -ca -cj -cn -cw -ae -aS -aq -cU -cZ -dh -ae -ac -ac -ac ab ab ab @@ -2683,33 +7212,40 @@ ab ab ab ab -ad -ad -ad -ad -ad -ad -ad -aT -ad -ad -bq -bH -aq -aq -cb -ck -cn -cw -cF -aq -ap -ap -ap -aq -ad ac ac +as +do +dA +dT +er +eR +fm +fI +gH +he +hz +hM +ib +hz +iz +iS +jf +jo +jB +hz +kb +jy +kN +jZ +lE +mb +my +jy +nt +nW +oq +mT ab ab ab @@ -2723,35 +7259,42 @@ ab ab ab ab -ad -ak -at -ay -aI -aN -ad -aq -aS -ad -br -aq -ap -aq -bP -ad -fX -ga -cf -aq -cM -cV -da -aq -ad -ad -ad -ad -ad +ab +as +as +du +dB +dU +es +eS +fn +fO +gG +hf +hz +hN +ic +il +iA +iT +hz +hz +hz +hz +kc +kr +kO +ll +lF +mc +jy +jy +nu +nX +om +ow +ab +ab ab ab ab @@ -2763,35 +7306,42 @@ ab ab ab ab -ad -al -au -au -au -aO -aT -aq -fN -ad -bs -aq -ap -aq -cc -bu -cn -cw -ad -cH -cN -bH -db -aq -ad -aq -gk -aq -ad +ab +at +aM +dv +dC +dV +et +eT +fo +fO +oK +hg +hz +hO +hz +hz +iB +iU +jg +jp +jp +jQ +kd +jy +jy +jy +jy +jP +jy +mX +nv +nY +mT +mT +ab +ab ab ab ab @@ -2803,35 +7353,42 @@ ab ab ab ab -ad -ad -ad -ae -ad -ad -ad -aq -aq -ad -bt -aq -ap -bT -cd -bu -cn -cw -ad -aq -cO -aq -aq -aq -dl -do -ds -do -ad +ab +at +cA +dw +dD +dX +eu +eU +fn +fH +gG +he +hA +hz +id +im +iC +iV +hz +hz +hz +hz +ke +jQ +jQ +jQ +jp +jp +mz +mY +nw +nZ +mT +ab +ab +ab ab ab ab @@ -2843,35 +7400,42 @@ ab ab ab ab -ad -am -au -au -au -aO -aT -aq -fN -ae -bu -bu -ap -bx -bx -ae -cq -gn -ad -cI -cP -aO -aO -bK -ad -aq -gl -aq -ad +ab +at +cG +dx +dE +dY +ev +eV +fp +fH +gI +he +hz +hz +hz +hz +iD +iW +jh +jo +jC +hz +kf +ks +kP +kQ +kQ +kQ +kQ +kT +nx +kR +kQ +kQ +ab +ab ab ab ab @@ -2883,35 +7447,42 @@ ab ab ab ab -ad -an -av -az -av -aP -ad -aq -aS -ad -bv -bI -ap -bI -fV -ad -cr -cB -ad -ad -ad -ad -cF -ad -ad -ad -ad -ad -ad +ab +as +cO +as +dI +dZ +ew +as +cO +as +gJ +hh +hz +hP +ic +in +iE +iX +hz +jq +jA +hO +kg +kt +kQ +kQ +lG +md +mA +mZ +ny +oa +or +kQ +ab +ab ab ab ab @@ -2923,34 +7494,41 @@ ab ab ab ab -ad -ad -ad -ad -ad -ad -ad -aW -ad -ad -bw -bx -ap -bx -ce -ad -cs -aq -aq -cJ -cQ -ad -aq -di -di -ad ab ab +ac +cO +as +as +as +as +fq +dy +gK +he +hz +hQ +ie +hz +iF +iY +hz +hz +hz +hz +kh +ha +kQ +lm +lH +me +mB +na +nz +ob +os +oy +ac ab ab ab @@ -2958,7 +7536,7 @@ ab ab "} (32,1,1) = {" -ab +aa ab ab ab @@ -2966,69 +7544,83 @@ ab ab ab ac +dy +dK +ea +ex +eW +fr +fW +gL +he +hz +hz +hz +hz +hO +hz +hz +jr +jD +jR +iQ +ku +kR +ln +lI +oM +mC +lI +nA +oc +kQ +kQ ac ab -ac -ad -aX -bf -ad -bx -bx -ap -bx -bx -ad -fZ -aq -aq -aq -cR -ad -dd -di -dm -ad -ab -ab -ab ab ab ab ab "} (33,1,1) = {" +aa ab ab ab ab ab -ac ab ab -ab -ab -ab -ad -ad -ad -ad -fQ -bI -ap -bU -fV -ad -ct -cC -ct -cK -cS -ad -aq -gi -di -ad +dy +dL +eb +ey +eX +fs +fa +gM +hi +hB +hB +hB +ag +iG +iZ +ji +js +jE +jS +ki +kv +kS +ln +lJ +mf +mD +lI +nB +kQ +kQ ac ab ab @@ -3038,39 +7630,46 @@ ab ab "} (34,1,1) = {" +aa +aa ab ab ab ab ab ab -ab -ab -ab -ac +dy +dM +ec +ez +eY +ft +dy +gN +hj +hj +hR +af +ip +iH +ja +jj +jj +gI +if +kj +kw +kT +lo +lK +kQ +mE +nb +nC +kQ ac ab ab -ac -ad -by -bx -fR -bx -ce -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ac -ab ab ab ab @@ -3078,87 +7677,100 @@ ab ab "} (35,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ad -ad -ad -ad -ad -ad -ad -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab aa +ab +ab +ab +ab +ab +ab +ab +dy +dy +ed +ey +eZ +dy +dy +gO +hk +hC +dy +ha +iq +iI +iq +ha +jt +jF +jT +ju +ju +kU +ju +ju +ju +ju +ju +kU +ju +ju +ju +ju +ab +ab +ab +ab +ab "} (36,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab aa +ab +ab +ab +ab +ab +ab +ab +ac +dy +dP +eA +fa +dy +fY +gP +gQ +hl +hS +ha +ir +iJ +jb +ha +ju +jG +jU +ju +kx +kV +lp +lL +mg +mF +nc +ju +od +ju +oz +ju +ju +nf +ab +ab +ab "} (37,1,1) = {" -aa ab ab ab @@ -3168,36 +7780,373 @@ ab ab ab ab +dy +ee +eB +fb +fu +gb +gQ +hl +gQ +hT +ha +is +iK +jc +ha +jv +jH +jV +ju +ky +kW +lq +lM +mh +mG +nd +nD +oe +ot +oA +oE +oG +oH ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa "} (38,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +ef +eC +fc +fv +fv +gR +hm +hl +hU +ha +it +iL +jd +ha +jw +jI +jW +kk +kz +kX +lr +lN +mi +mH +ne +nE +of +nE +oB +ju +ju +nf +ab +ab +ab +"} +(39,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +eg +eD +fd +fw +gc +gS +hn +gQ +hV +ha +ha +ha +ha +ha +ju +jJ +jX +kl +kA +kY +ls +lO +mj +mI +nf +ju +ju +ju +oC +nf +ab +ab +ab +ab +ab +"} +(40,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +dy +eE +fe +dy +gd +dy +ho +hD +dy +dy +ac +ab +ab +ab +ac +jK +ju +km +kB +kZ +lt +lt +mk +mJ +ng +nF +ld +ju +ab +ab +ab +ab +ab +ab +ab +"} +(41,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +eF +eF +dP +gf +dy +eF +eF +dy +ab +ab +ab +ab +ab +ab +ab +ju +ju +kC +la +lu +lP +ml +mK +kD +nG +og +ju +ab +ab +ab +ab +ab +ab +ab +"} +(42,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +gg +dy +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ju +kD +lb +kU +kD +lb +ju +ju +ju +ju +ju +ab +ab +ab +ab +ab +ab +aa +"} +(43,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +fx +gh +fx +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ju +kE +lc +ju +lQ +mm +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(44,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ju +kF +ld +ju +lR +ld +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(45,1,1) = {" aa aa ab @@ -3225,6 +8174,154 @@ ab ab ab ab +ju +ju +ju +ju +ju +ju +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +ab +ab +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(47,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab ab ab ab diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 1da57dc70a..b3d02e85cd 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -498,7 +498,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargobay) "by" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "innerbrig"; name = "Security Checkpoint"; req_access_txt = "63" diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 93154afd94..edc4867e34 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -494,7 +494,7 @@ /area/ruin/space/has_grav/ancientstation/comm) "bB" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -1408,7 +1408,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/deltacorridor) "ef" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medical Bay" }, /turf/open/floor/plasteel/floorgrime, @@ -3222,7 +3222,7 @@ }, /area/ruin/space/has_grav/ancientstation/rnd) "is" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Chemical Storage"; req_access_txt = "200" }, diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index 7b2e8f6751..947ece0ad4 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -297,7 +297,7 @@ }, /area/ruin/space/has_grav/onehalf/hallway) "aV" = ( -/obj/machinery/door/airlock/glass_medical, +/obj/machinery/door/airlock/medical/glass, /obj/structure/cable{ icon_state = "1-2" }, @@ -984,7 +984,7 @@ /turf/template_noop, /area/ruin/space/has_grav/onehalf/hallway) "cE" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge" }, /turf/open/floor/plasteel, @@ -998,7 +998,7 @@ id = "bridge_onehalf"; name = "bridge blast door" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge" }, /turf/open/floor/plasteel, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 42b04d5c30..9ca7c8ea35 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -3447,7 +3447,7 @@ /turf/closed/wall, /area/ruin/space/has_grav/hotel/security) "jq" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Hotel Security Checkpoint"; req_access_txt = "203" }, @@ -4197,7 +4197,7 @@ /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "lF" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Hotel Security Checkpoint"; req_access_txt = "203" }, diff --git a/_maps/RandomZLevels/beach.dmm b/_maps/RandomZLevels/beach.dmm index fb9c5e73c2..10fa8be861 100644 --- a/_maps/RandomZLevels/beach.dmm +++ b/_maps/RandomZLevels/beach.dmm @@ -162,7 +162,7 @@ uniform = /obj/item/clothing/under/rank/bartender; death = 0; desc = "Looks secure."; - flavour_text = "You are a bartender for the beach!"; + flavour_text = "You are a bartender for the beach!"; icon = 'icons/obj/machines/sleeper.dmi'; icon_state = "sleeper"; mob_name = "Jerry Thomas"; diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 0c7fd7f713..1f4ae8457a 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -1513,7 +1513,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/centcomAway/courtroom) "fG" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering"; req_access_txt = "32" }, @@ -1803,7 +1803,7 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "gF" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; req_access_txt = "19" }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index f6815d7b1d..a25155be43 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -3204,7 +3204,7 @@ }, /area/awaymission/moonoutpost19/research) "gk" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Post"; req_access_txt = "201" }, @@ -4009,7 +4009,7 @@ }, /area/awaymission/moonoutpost19/research) "hG" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Research Storage"; req_access_txt = "201" }, @@ -4244,11 +4244,9 @@ }, /area/awaymission/moonoutpost19/research) "ie" = ( -/obj/machinery/door/airlock/glass_medical{ - glass = 0; +/obj/machinery/door/airlock/medical{ id_tag = ""; name = "Research Division"; - opacity = 1; req_access_txt = "201"; req_one_access_txt = "0" }, diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 5693bd14ff..b98b064142 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -1596,7 +1596,7 @@ /turf/open/floor/plating, /area/awaymission/research/interior/security) "eS" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "outerbrig"; name = "Brig"; req_access_txt = "63" @@ -1913,7 +1913,7 @@ }, /area/awaymission/research/interior) "fS" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "outerbrig"; name = "Brig"; req_access_txt = "63" @@ -2323,7 +2323,7 @@ }, /area/awaymission/research/interior) "hb" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "outerbrig"; name = "Brig"; req_access_txt = "63" diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 31a6232330..84c91c3dd7 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -160,7 +160,7 @@ /area/awaymission/snowdin/base) "aC" = ( /obj/structure/barricade/wooden, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -2181,7 +2181,7 @@ /area/awaymission/snowdin/post) "ha" = ( /obj/structure/barricade/wooden, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -2570,7 +2570,7 @@ /turf/open/floor/plasteel/darkred, /area/awaymission/snowdin/post) "is" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -3306,7 +3306,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/snowdin/sekret) "kJ" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index a00c460da8..dbd2000946 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -7380,7 +7380,7 @@ }, /area/awaymission/undergroundoutpost45/research) "oE" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "201" }, @@ -8008,7 +8008,7 @@ /turf/closed/wall/rust, /area/awaymission/undergroundoutpost45/research) "pM" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Research Storage"; req_access_txt = "201" }, @@ -8159,7 +8159,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "SMES Room"; req_access_txt = "201"; req_one_access_txt = "0" @@ -8622,7 +8622,7 @@ /obj/machinery/atmospherics/pipe/simple{ dir = 4 }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Server Room"; req_access_txt = "201" }, @@ -9318,7 +9318,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Reception"; req_access_txt = "0" }, @@ -9760,7 +9760,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Reception"; req_access_txt = "0" }, @@ -10793,7 +10793,7 @@ /turf/closed/wall, /area/awaymission/undergroundoutpost45/engineering) "uF" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "201" }, @@ -11382,7 +11382,7 @@ "vN" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Foyer"; req_access_txt = "201" }, @@ -11396,7 +11396,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Foyer"; req_access_txt = "201" }, @@ -11682,7 +11682,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Chief Engineer"; req_access_txt = "201" }, @@ -12448,7 +12448,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining EVA"; req_access_txt = "201" }, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 2f9716406c..5bcd4ec085 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -2,19 +2,6 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_n"; - name = "north of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -1495,14 +1482,14 @@ /turf/closed/wall, /area/security/prison) "adH" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 3"; req_access_txt = "2" }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "adI" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 2"; req_access_txt = "2" }, @@ -1510,7 +1497,7 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "adJ" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 1"; req_access_txt = "2" }, @@ -1912,7 +1899,7 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hos) "aey" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Head of Security"; req_access_txt = "58" }, @@ -2477,7 +2464,7 @@ /turf/open/floor/plasteel/red/side, /area/security/prison) "afK" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = null; name = "Evidence Storage"; req_access_txt = "63" @@ -2529,7 +2516,7 @@ /turf/open/floor/plating, /area/security/main) "afS" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Equipment Room"; req_access_txt = "1" }, @@ -2642,7 +2629,7 @@ /area/security/execution/transfer) "agi" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "2" }, @@ -2656,7 +2643,7 @@ /area/security/brig) "agk" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "2" }, @@ -3254,7 +3241,7 @@ }, /area/security/brig) "ahE" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig Control"; req_access_txt = "3" }, @@ -3834,7 +3821,7 @@ /turf/open/floor/plating, /area/security/warden) "aiM" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig Control"; req_access_txt = "3" }, @@ -4754,7 +4741,7 @@ /turf/open/floor/plating, /area/security/brig) "akU" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig Desk"; req_access_txt = "1" }, @@ -4777,7 +4764,7 @@ /turf/open/floor/plating, /area/security/brig) "akW" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -4809,7 +4796,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -4963,13 +4950,17 @@ /turf/closed/wall/r_wall, /area/ai_monitored/security/armory) "alu" = ( -/obj/structure/barricade/wooden, -/obj/structure/grille, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/wood, -/area/maintenance/fore) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar/cafe) "alv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5488,7 +5479,7 @@ /turf/open/floor/plating, /area/security/processing) "amM" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prisoner Processing"; req_access_txt = "2" }, @@ -5584,7 +5575,7 @@ /area/security/brig) "amW" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -6727,10 +6718,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/maintenance/port/fore) -"apQ" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) "apR" = ( /obj/item/paper/fluff/jobs/security/beepsky_mom, /turf/open/floor/plating, @@ -8973,14 +8960,14 @@ /area/maintenance/port/fore) "avT" = ( /obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; id = "syndicate_ne"; name = "northeast of station"; turf_type = /turf/open/space; - width = 18 + width = 23 }, /turf/open/space, /area/space/nearstation) @@ -9641,9 +9628,6 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "2-8" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -10051,21 +10035,28 @@ /area/maintenance/port/fore) "ayA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/barricade/wooden, -/obj/structure/grille, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/fore) "ayB" = ( +/turf/closed/wall, +/area/crew_quarters/theatre/mime) +"ayC" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/maintenance/bar/cafe) -"ayC" = ( -/turf/closed/wall, -/area/maintenance/bar/cafe) +/area/maintenance/fore) "ayD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/maintenance/bar/cafe) +/area/crew_quarters/theatre/clown) "ayE" = ( /turf/closed/wall/r_wall, /area/maintenance/fore) @@ -10474,35 +10465,23 @@ /turf/closed/wall, /area/maintenance/port/fore) "azH" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/bar/cafe"; - dir = 1; - name = "Abandoned Cafe APC"; - pixel_y = 24 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar/cafe) +/turf/closed/wall, +/area/crew_quarters/theatre/mime) "azI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/stool/bar, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar/cafe) +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/theatre/clown) "azJ" = ( /obj/machinery/gateway{ dir = 9 }, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 1 + }, /area/gateway) "azK" = ( /obj/machinery/light{ @@ -10515,14 +10494,18 @@ dir = 5 }, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 4 + }, /area/gateway) "azM" = ( /obj/machinery/gateway{ dir = 1 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/gateway) "azN" = ( /obj/machinery/light{ @@ -10564,7 +10547,7 @@ /area/ai_monitored/storage/eva) "azS" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "EVA Storage"; req_access_txt = "18" }, @@ -11064,7 +11047,9 @@ dir = 8 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/gateway) "aBe" = ( /turf/open/floor/plasteel/dark, @@ -11074,7 +11059,9 @@ dir = 4 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/gateway) "aBg" = ( /obj/machinery/gateway/centerstation, @@ -11358,48 +11345,24 @@ /turf/closed/wall/r_wall, /area/storage/primary) "aBS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"aBT" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/theatre/mime"; - dir = 2; - name = "Mime's Office APC"; - pixel_x = 1; - pixel_y = -24 +/obj/machinery/light_switch{ + pixel_y = 28 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) +"aBT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 }, -/obj/structure/chair/wood{ +/turf/open/floor/plasteel/white/side{ dir = 8 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar/cafe) +/area/crew_quarters/theatre/mime) "aBU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/theatre/clown) "aBV" = ( /obj/machinery/airalarm{ pixel_y = 23 @@ -11410,37 +11373,33 @@ /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) "aBW" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/theatre/clown"; - dir = 2; - name = "Clown's Office APC"; - pixel_x = 1; - pixel_y = -24 +/obj/structure/table, +/obj/item/device/flashlight/lamp/bananalamp, +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar/cafe) +/turf/open/floor/plasteel/redyellow, +/area/crew_quarters/theatre/clown) "aBX" = ( /obj/machinery/gateway{ dir = 10 }, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 4 + }, /area/gateway) "aBY" = ( /obj/machinery/gateway{ dir = 6 }, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 1 + }, /area/gateway) "aBZ" = ( /obj/machinery/gateway, @@ -11448,7 +11407,9 @@ icon_state = "0-2" }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/gateway) "aCa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -11979,18 +11940,31 @@ /turf/open/floor/plasteel, /area/storage/primary) "aDr" = ( -/turf/closed/wall, -/area/crew_quarters/theatre/mime) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) "aDs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, +/obj/effect/spawner/structure/window/hollow/end{ + dir = 4 + }, +/turf/open/floor/plating, /area/crew_quarters/theatre/mime) "aDt" = ( -/turf/closed/wall, -/area/crew_quarters/theatre/clown) +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/circuit, +/area/ai_monitored/nuke_storage) "aDv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, +/obj/effect/spawner/structure/window/hollow/end{ + dir = 8 + }, +/turf/open/floor/plating, /area/crew_quarters/theatre/clown) "aDw" = ( /obj/structure/window/reinforced, @@ -12567,13 +12541,13 @@ /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) "aEN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bed, -/obj/item/bedsheet/mime, -/turf/open/floor/plasteel/white/side{ - dir = 1 +/obj/structure/chair/wood{ + dir = 8 }, -/area/crew_quarters/theatre/mime) +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar/cafe) "aEO" = ( /obj/structure/cable{ icon_state = "1-2" @@ -12581,10 +12555,12 @@ /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) "aEP" = ( -/obj/structure/closet/secure_closet/freezer/cream_pie, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/theatre/clown) +/obj/structure/table/wood, +/obj/item/stack/sheet/mineral/wood{ + amount = 7 + }, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) "aEQ" = ( /obj/structure/table, /obj/item/paper/pamphlet/gateway, @@ -12648,7 +12624,7 @@ /area/ai_monitored/storage/eva) "aEX" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "EVA Storage"; req_access_txt = "18" }, @@ -13068,47 +13044,38 @@ /turf/open/floor/plasteel/vault/corner, /area/ai_monitored/nuke_storage) "aGb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera{ - c_tag = "Mime's Office"; - dir = 8 - }, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"aGc" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/camera/motion{ - c_tag = "Vault"; - dir = 1; - network = list("MiniSat") - }, -/obj/machinery/light, -/turf/open/floor/plasteel/vault/corner{ - dir = 8 - }, -/area/ai_monitored/nuke_storage) -"aGd" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/vault/side, -/area/ai_monitored/nuke_storage) -"aGe" = ( -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera{ - c_tag = "Clown's Office"; - c_tag_order = 999; +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/theatre/clown) +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"aGc" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar/cafe) +"aGd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"aGe" = ( +/obj/structure/table/wood, +/obj/item/screwdriver, +/obj/item/crowbar, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar/cafe) "aGf" = ( /obj/machinery/firealarm{ dir = 4; @@ -13655,9 +13622,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/chapel/main) -"aHr" = ( -/turf/open/space, -/area/space) "aHs" = ( /obj/machinery/door/airlock/titanium{ name = "Arrivals Shuttle Airlock" @@ -13747,9 +13711,14 @@ /turf/open/floor/plasteel, /area/storage/primary) "aHF" = ( -/obj/structure/sign/securearea, -/turf/closed/wall/r_wall, -/area/ai_monitored/nuke_storage) +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) "aHG" = ( /obj/machinery/door/airlock/vault{ icon_state = "door_locked"; @@ -14356,20 +14325,23 @@ /turf/open/floor/plasteel, /area/storage/primary) "aJd" = ( -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/mineral_door/wood{ + name = "Abandoned Cafe" }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/hallway/primary/port) -"aJe" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"aJe" = ( +/obj/effect/spawner/structure/window/hollow/end{ + dir = 8 }, -/area/hallway/primary/port) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plating, +/area/maintenance/bar/cafe) "aJf" = ( /obj/machinery/camera{ c_tag = "EVA South"; @@ -14609,6 +14581,9 @@ req_access_txt = "25" }, /obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/bar) "aJI" = ( @@ -14757,15 +14732,10 @@ /turf/open/floor/plasteel, /area/storage/primary) "aKb" = ( -/obj/structure/cable{ - icon_state = "0-8" +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel/redyellow/side{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, /area/hallway/primary/port) "aKc" = ( /obj/machinery/door/firedoor, @@ -14890,48 +14860,40 @@ /turf/open/floor/plating, /area/storage/primary) "aKt" = ( -/obj/machinery/door/airlock/freezer{ - boltDown = null; - boltUp = null; - doorClose = null; - doorDeni = null; - doorOpen = null; - name = "Mime's Office"; - noPower = null; - req_access_txt = "46" +/obj/effect/spawner/structure/window/hollow/end, +/obj/item/shard{ + icon_state = "medium" }, -/turf/open/floor/plasteel/white/side{ +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plating, +/area/maintenance/bar/cafe) +"aKu" = ( +/turf/closed/wall, +/area/maintenance/bar/cafe) +"aKv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/redyellow/side{ dir = 1 }, -/area/crew_quarters/theatre/mime) -"aKu" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/crew_quarters/theatre/mime) -"aKv" = ( -/obj/structure/cable, +/area/hallway/primary/port) +"aKw" = ( +/turf/open/floor/plasteel/redyellow/side{ + dir = 1 + }, +/area/hallway/primary/port) +"aKx" = ( /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/cable{ - icon_state = "0-4" - }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/primary/port) -"aKw" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aKx" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/crew_quarters/theatre/clown) "aKy" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -15418,6 +15380,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/hallway/primary/port) "aLQ" = ( @@ -15780,10 +15745,10 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aMR" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel, /area/hallway/primary/port) "aMS" = ( @@ -16511,9 +16476,7 @@ req_access_txt = "25" }, /obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel{ - icon_state = "wood" - }, +/turf/open/floor/wood, /area/crew_quarters/bar) "aOP" = ( /obj/effect/landmark/blobstart, @@ -17520,7 +17483,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aRL" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, @@ -18926,10 +18889,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"aVG" = ( -/obj/structure/table, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) "aVH" = ( /obj/machinery/processor, /obj/machinery/firealarm{ @@ -19357,7 +19316,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 4; name = "Bridge"; req_access_txt = "19" @@ -19375,7 +19334,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 8; name = "Bridge"; req_access_txt = "19" @@ -19572,7 +19531,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 4; name = "Bridge"; req_access_txt = "19" @@ -19605,7 +19564,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 8; name = "Bridge"; req_access_txt = "19" @@ -21823,7 +21782,9 @@ /area/ai_monitored/turret_protected/ai_upload) "bdh" = ( /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 1 + }, /area/ai_monitored/turret_protected/ai_upload) "bdi" = ( /obj/machinery/computer/arcade, @@ -24316,7 +24277,7 @@ /area/quartermaster/storage) "bjs" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Office"; req_access_txt = "50" }, @@ -24583,14 +24544,6 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/storage/emergency/starboard) -"bke" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/turf/open/floor/plating, -/area/storage/emergency/starboard) "bkf" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -25496,7 +25449,7 @@ }, /area/quartermaster/office) "bmg" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay"; req_access_txt = "31" }, @@ -25527,7 +25480,7 @@ /area/quartermaster/storage) "bmk" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Delivery Office"; req_access_txt = "50" }, @@ -25686,7 +25639,7 @@ }, /area/medical/chemistry) "bmH" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay"; req_access_txt = "31" }, @@ -26313,7 +26266,7 @@ /area/medical/chemistry) "boe" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -26332,7 +26285,7 @@ /area/medical/medbay/central) "boh" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -26367,7 +26320,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bok" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -26943,7 +26896,7 @@ /area/hallway/primary/central) "bpD" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33" @@ -28190,7 +28143,7 @@ /area/medical/medbay/central) "bsu" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "GeneticsDoor"; name = "Genetics"; req_access_txt = "5; 68" @@ -29399,7 +29352,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bvl" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Surgery Observation"; req_access_txt = "0" }, @@ -29460,7 +29413,7 @@ }, /area/medical/genetics) "bvt" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Genetics Research"; req_access_txt = "5; 9; 68" }, @@ -29576,15 +29529,6 @@ dir = 9 }, /area/quartermaster/qm) -"bvG" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) "bvH" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -29698,10 +29642,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/plasteel/red/side{ dir = 1 }, -/turf/open/floor/plasteel, /area/hallway/primary/central) "bvX" = ( /obj/machinery/camera{ @@ -29735,22 +29678,20 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, /area/hallway/primary/central) "bwb" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/turf/open/floor/plasteel/red/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/hallway/primary/central) "bwc" = ( /obj/structure/disposalpipe/segment, @@ -29792,17 +29733,13 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bwh" = ( -/obj/structure/sign/securearea{ - pixel_y = 32 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/plasteel/red/side{ dir = 1 }, -/turf/open/floor/plasteel, /area/hallway/primary/central) "bwi" = ( /obj/item/device/radio/intercom{ @@ -30089,7 +30026,7 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "bwT" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Quartermaster"; req_access_txt = "41" }, @@ -30162,7 +30099,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "bwY" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -30362,7 +30299,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science) "bxw" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Quartermaster"; req_access_txt = "41" }, @@ -30589,7 +30526,7 @@ /turf/open/floor/plasteel, /area/medical/sleeper) "bxW" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Research Director"; req_access_txt = "30" }, @@ -30697,7 +30634,7 @@ /turf/closed/wall, /area/security/checkpoint/science) "byj" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -30997,10 +30934,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/turf/open/floor/plasteel/red/side{ + dir = 1 }, -/turf/open/floor/plasteel, /area/hallway/primary/central) "byT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -31077,7 +31013,7 @@ /turf/open/floor/plating, /area/medical/sleeper) "bzc" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Recovery Room"; req_access_txt = "0" @@ -31703,7 +31639,7 @@ /area/science/server) "bAB" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Server Room"; req_access_txt = "30" }, @@ -32294,10 +32230,6 @@ }, /turf/open/floor/circuit/telecomms/server, /area/science/server) -"bBT" = ( -/obj/machinery/rnd/server, -/turf/open/floor/circuit/telecomms/server, -/area/science/server) "bBU" = ( /obj/machinery/atmospherics/pipe/simple{ dir = 9 @@ -33154,7 +33086,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bDU" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Chief Medical Officer"; req_access_txt = "40" }, @@ -33174,7 +33106,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "bDW" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; req_access_txt = "45" @@ -33219,7 +33151,7 @@ /turf/open/floor/plasteel/floorgrime, /area/science/storage) "bEd" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; req_access_txt = "45" @@ -33843,6 +33775,12 @@ dir = 4; pixel_x = 11 }, +/obj/machinery/requests_console{ + department = "Medbay"; + departmentType = 1; + name = "Medbay RC"; + pixel_w = 30 + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bFB" = ( @@ -34402,11 +34340,6 @@ /obj/item/gun/syringe, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"bGS" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/item/reagent_containers/glass/beaker/synthflesh, -/turf/open/floor/plasteel/white, -/area/medical/sleeper) "bGT" = ( /obj/structure/table, /obj/item/folder/white, @@ -34987,6 +34920,12 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bIj" = ( @@ -35000,13 +34939,6 @@ /area/medical/sleeper) "bIk" = ( /obj/structure/table, -/obj/machinery/requests_console{ - announcementConsole = 0; - department = "Medbay"; - departmentType = 1; - name = "Medbay RC"; - pixel_y = -30 - }, /obj/item/storage/firstaid/fire{ pixel_x = 3; pixel_y = 3 @@ -35016,18 +34948,15 @@ pixel_x = -3; pixel_y = -3 }, +/obj/machinery/door/window/northright{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access_txt = "5" + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bIl" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ - broadcasting = 0; - freerange = 0; - frequency = 1485; - listening = 1; - name = "Station Intercom (Medbay)"; - pixel_y = -30 - }, /obj/item/storage/firstaid/toxin{ pixel_x = 3; pixel_y = 3 @@ -35037,28 +34966,16 @@ pixel_x = -3; pixel_y = -3 }, +/obj/machinery/door/window/northleft{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access_txt = "5" + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bIm" = ( +/obj/machinery/rnd/protolathe/department/medical, /obj/machinery/light, -/obj/structure/table, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/storage/box/syringes, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 7; - pixel_y = -3 - }, -/obj/item/reagent_containers/glass/bottle/morphine{ - pixel_x = 8; - pixel_y = -3 - }, -/obj/item/reagent_containers/syringe{ - pixel_x = 6; - pixel_y = -3 - }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bIn" = ( @@ -35072,6 +34989,12 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bIo" = ( @@ -35427,7 +35350,7 @@ /turf/open/floor/plating, /area/shuttle/mining) "bJd" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ cyclelinkeddir = 8; name = "Mining Dock"; req_access_txt = "48" @@ -37199,7 +37122,7 @@ /area/medical/virology) "bNj" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Isolation A"; req_access_txt = "39" }, @@ -37212,7 +37135,7 @@ /area/medical/virology) "bNl" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Isolation B"; req_access_txt = "39" }, @@ -37298,10 +37221,9 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bNu" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ autoclose = 0; frequency = 1449; - glass = 1; heat_proof = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; @@ -37312,10 +37234,9 @@ /turf/open/floor/engine, /area/science/mixing) "bNv" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ autoclose = 0; frequency = 1449; - glass = 1; heat_proof = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; @@ -37430,7 +37351,7 @@ /area/construction) "bNK" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Office"; req_access_txt = "50" }, @@ -37442,12 +37363,6 @@ }, /turf/open/floor/plating, /area/construction) -"bNM" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "bNN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -38005,7 +37920,7 @@ /turf/open/floor/plating, /area/engine/atmos) "bPb" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Firing Range"; req_access_txt = "47" }, @@ -38688,7 +38603,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bQK" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Control Room"; req_access_txt = "19; 61" }, @@ -38901,7 +38816,7 @@ /turf/open/floor/plating, /area/construction) "bRm" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -39039,7 +38954,7 @@ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Distribution Loop"; req_access_txt = "24" }, @@ -39155,7 +39070,7 @@ /area/medical/virology) "bRR" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Monkey Pen"; req_access_txt = "39" }, @@ -39374,11 +39289,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/port/aft) -"bSr" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bSs" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -40007,7 +39917,7 @@ /area/engine/atmos) "bTN" = ( /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Monitoring"; req_access_txt = "24" }, @@ -40708,10 +40618,6 @@ }, /turf/open/space, /area/space/nearstation) -"bVw" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) "bVx" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 2 @@ -40797,11 +40703,6 @@ /obj/machinery/vending/snack/random, /turf/open/floor/plasteel, /area/engine/break_room) -"bVL" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bVM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -41488,7 +41389,7 @@ icon_state = "4-8" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering"; req_access_txt = "32" }, @@ -42617,7 +42518,7 @@ }, /area/tcommsat/server) "cal" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ cyclelinkeddir = 4; name = "Server Room"; req_access_txt = "61" @@ -42630,7 +42531,7 @@ }, /area/tcommsat/computer) "can" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ cyclelinkeddir = 8; name = "Server Room"; req_access_txt = "61" @@ -44139,10 +44040,6 @@ }, /turf/open/floor/plating, /area/maintenance/aft) -"cdM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/aft) "cdN" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -44552,7 +44449,7 @@ /area/maintenance/port/aft) "ceZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Power Storage"; req_access_txt = "11"; req_one_access_txt = "0" @@ -45214,7 +45111,7 @@ /area/engine/engineering) "cgL" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine Room"; req_access_txt = "10" }, @@ -46539,7 +46436,7 @@ id = "testlab"; name = "test chamber blast door" }, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ cyclelinkeddir = 4; name = "Test Chamber"; req_access_txt = "47" @@ -46814,7 +46711,7 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "ckN" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ cyclelinkeddir = 8; name = "Test Chamber"; req_access_txt = "47" @@ -46826,7 +46723,7 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "ckO" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Chief Engineer"; req_access_txt = "56" }, @@ -47149,16 +47046,18 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_smes) "clD" = ( -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/engine/engine_smes) "clE" = ( /obj/structure/cable{ icon_state = "0-8" }, /obj/machinery/power/smes/engineering, -/obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 1 + }, /area/engine/engine_smes) "clF" = ( /obj/structure/cable{ @@ -47174,8 +47073,9 @@ icon_state = "0-4" }, /obj/machinery/power/smes/engineering, -/obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 4 + }, /area/engine/engine_smes) "clI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -47426,8 +47326,9 @@ /obj/structure/cable/yellow{ icon_state = "0-4" }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/engine/engine_smes) "cmB" = ( /obj/machinery/power/terminal{ @@ -47436,8 +47337,9 @@ /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/engine/engine_smes) "cmC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -47992,7 +47894,7 @@ "coc" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine Room"; req_access_txt = "10" }, @@ -48391,7 +48293,7 @@ icon_state = "4-8" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine Room"; req_access_txt = "10" }, @@ -48861,7 +48763,7 @@ /area/engine/supermatter) "cqE" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "10" @@ -49022,7 +48924,7 @@ /area/engine/engineering) "crd" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine Room"; req_access_txt = "10" }, @@ -49101,7 +49003,7 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "crt" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "10" @@ -49450,11 +49352,6 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"csw" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/turf/open/space, -/area/space/nearstation) "csx" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -49468,10 +49365,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"csz" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space, -/area/space) "csA" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "engsm"; @@ -49485,10 +49378,6 @@ }, /turf/open/floor/plating, /area/engine/supermatter) -"csC" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "csD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -49863,13 +49752,6 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"ctO" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 5 - }, -/turf/open/space, -/area/space/nearstation) "ctP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -51056,7 +50938,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "AI Core"; req_access_txt = "65" }, @@ -51865,12 +51747,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/exit) -"cyq" = ( -/obj/machinery/computer/pod{ - id = "oldship_gun" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cyr" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 8; @@ -51897,9 +51773,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cyv" = ( -/turf/open/floor/plating, -/area/shuttle/abandoned) "cyw" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt{ @@ -51920,25 +51793,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"cyy" = ( -/obj/machinery/mass_driver{ - dir = 4; - icon_state = "mass_driver"; - id = "oldship_gun" - }, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"cyz" = ( -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"cyA" = ( -/obj/machinery/door/poddoor{ - id = "oldship_gun"; - name = "pod bay door" - }, -/turf/open/floor/plating, -/area/shuttle/abandoned) "cyB" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/supply) @@ -51980,10 +51834,6 @@ }, /turf/open/floor/plating, /area/engine/atmos) -"cyH" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/plating, -/area/shuttle/abandoned) "cyI" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -51991,15 +51841,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"cyJ" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cyK" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52055,12 +51896,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"cyP" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cyQ" = ( /obj/machinery/door/airlock/titanium{ name = "Supply Shuttle Airlock"; @@ -52122,28 +51957,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) -"cyV" = ( -/obj/machinery/door/window, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) -"cyW" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) -"cyX" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cyY" = ( -/obj/structure/table, -/obj/item/gun/energy/laser/retro, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cyZ" = ( /obj/machinery/conveyor{ dir = 4; @@ -52155,35 +51968,6 @@ }, /turf/open/floor/plating, /area/shuttle/supply) -"cza" = ( -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czb" = ( -/obj/machinery/porta_turret/aux_base{ - always_up = 1; - desc = "A turret built with substandard parts and run down further with age. Still capable of delivering lethal lasers to the odd space carp, but not much else."; - dir = 4; - has_cover = 0; - icon_state = "standard_lethal"; - lethal_projectile = /obj/item/projectile/beam/weak; - name = "turret" - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"czc" = ( -/obj/machinery/computer/shuttle/white_ship, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czd" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cze" = ( -/obj/structure/table, -/obj/item/tank/internals/oxygen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "czf" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/supply) @@ -52206,11 +51990,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) -"czl" = ( -/obj/machinery/door/window/northright, -/obj/effect/decal/remains/human, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) "czm" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -52221,13 +52000,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"czn" = ( -/obj/structure/frame/computer{ - anchored = 1 - }, -/obj/structure/light_construct, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "czp" = ( /obj/structure/window/reinforced{ dir = 1 @@ -52261,40 +52033,6 @@ /obj/structure/shuttle/engine/propulsion/burst/right, /turf/open/floor/plating/airless, /area/shuttle/supply) -"czw" = ( -/obj/item/device/multitool, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czx" = ( -/obj/structure/chair, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czy" = ( -/obj/structure/frame/computer{ - anchored = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czA" = ( -/obj/item/scalpel, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czB" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 6; - pixel_y = -5 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"czC" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/obj/effect/decal/remains/human, -/obj/structure/light_construct, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "czE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -52728,16 +52466,6 @@ }, /turf/open/floor/plasteel, /area/janitor) -"cAM" = ( -/obj/structure/table/wood, -/obj/structure/disposalpipe/segment, -/obj/item/toy/cards/deck/cas, -/obj/item/toy/cards/deck/cas/black{ - pixel_x = -2; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/library) "cAN" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Maintenance"; @@ -53212,45 +52940,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/main) -"cBW" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_southmaint"; - name = "south maintenance airlock"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) -"cBX" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_se"; - name = "southeast of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) -"cBY" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_s"; - name = "south of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "cBZ" = ( /obj/structure/table/wood, /obj/item/clothing/under/burial, @@ -53516,10 +53205,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/plasteel, /area/engine/engineering) -"cCW" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plating, -/area/engine/engineering) "cCY" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -53801,13 +53486,6 @@ }, /turf/closed/wall, /area/engine/engineering) -"cDS" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) "cDY" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/orange/visible{ @@ -54489,7 +54167,7 @@ /area/engine/engineering) "cGI" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Laser Room"; req_access_txt = "10" }, @@ -54614,10 +54292,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cHl" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall/r_wall, -/area/engine/engineering) "cHn" = ( /obj/structure/cable{ icon_state = "1-4" @@ -54642,10 +54316,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"cHs" = ( -/obj/item/crowbar/large, -/turf/open/floor/plating, -/area/engine/engineering) "cHD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54763,7 +54433,7 @@ /area/science/robotics/mechbay) "cHK" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Robotics Lab"; req_access_txt = "29" }, @@ -55090,18 +54760,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"cMd" = ( -/obj/structure/light_construct{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cMe" = ( -/obj/structure/light_construct/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cMf" = ( /obj/machinery/door/airlock/titanium{ name = "medbay"; @@ -55113,18 +54771,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"cMh" = ( -/obj/structure/light_construct/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cMk" = ( -/obj/structure/light_construct/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/abandoned) "cMl" = ( /obj/machinery/light{ dir = 8 @@ -55162,13 +54808,6 @@ "cMH" = ( /turf/open/floor/engine, /area/engine/supermatter) -"cMI" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/engine, -/area/engine/supermatter) "cMN" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -55335,11 +54974,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cPa" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cPA" = ( /obj/machinery/atmospherics/components/binary/valve{ dir = 4 @@ -55751,10 +55385,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"cTW" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cTX" = ( /obj/structure/cable{ icon_state = "0-2" @@ -55777,31 +55407,10 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"Qlj" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_nw"; - name = "northwest of station"; - turf_type = /turf/open/space - }, -/turf/open/space/basic, -/area/space/nearstation) -"Qlk" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_nw"; - name = "northwest of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space/basic, -/area/space/nearstation) +"kSb" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) "Qll" = ( /obj/machinery/door/airlock/titanium{ name = "recovery shuttle external airlock" @@ -55896,14 +55505,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"Qls" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "Qlt" = ( /obj/structure/tank_dispenser/oxygen{ layer = 2.7; @@ -56041,13 +55642,6 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"QlC" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "QlD" = ( /obj/machinery/door/airlock/titanium{ name = "E.V.A. equipment" @@ -56058,13 +55652,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"QlE" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "QlF" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/blood/gibs/old, @@ -56113,18 +55700,6 @@ dir = 1 }, /area/shuttle/abandoned) -"QlJ" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) "QlK" = ( /obj/effect/decal/cleanable/robot_debris/old, /obj/effect/decal/cleanable/oil, @@ -56214,13 +55789,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"QlQ" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "QlR" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/decal/cleanable/dirt{ @@ -56241,18 +55809,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/abandoned) -"QlT" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) "QlU" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt{ @@ -56307,16 +55863,6 @@ }, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) -"Qma" = ( -/obj/machinery/door/airlock/titanium{ - name = "E.V.A. equipment" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "Qmb" = ( /obj/machinery/door/airlock/titanium{ name = "recovery shuttle interior airlock" @@ -56331,20 +55877,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"Qmc" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "Qmd" = ( /obj/structure/sign/cargo, /turf/closed/wall/mineral/titanium, @@ -56376,13 +55908,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"Qmh" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "Qmi" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt{ @@ -56411,20 +55936,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"Qml" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmm" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "Qmn" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -56475,13 +55986,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"Qms" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "Qmt" = ( /obj/structure/chair, /obj/effect/decal/cleanable/dirt{ @@ -56490,22 +55994,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"Qmu" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmv" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "Qmw" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -56517,46 +56005,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"Qmx" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmy" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmz" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmA" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmB" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "QmC" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -56585,16 +56033,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"QmE" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "QmF" = ( /obj/machinery/door/airlock/titanium{ name = "recovery shuttle interior airlock" @@ -56791,73 +56229,6 @@ /obj/machinery/vending/cola/random, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"QmW" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmX" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmY" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmZ" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qna" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnb" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnc" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "Qnd" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt{ @@ -57285,14 +56656,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"QnQ" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "QnR" = ( /obj/machinery/hydroponics/constructable, /obj/item/seeds/glowshroom, @@ -57302,14 +56665,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"QnS" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "QnT" = ( /obj/structure/table, /obj/machinery/reagentgrinder{ @@ -57439,88 +56794,19 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"Qoe" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) "Qof" = ( /obj/structure/lattice, /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"Qog" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"Qoh" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) "Qoi" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"Qoj" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) -"Qok" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) "Qol" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) -"Qom" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"Qon" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"Qoo" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) -"Qop" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"Qoq" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) -"Qor" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) -"Qos" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"Qot" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"Qou" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) "Qov" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -57528,27 +56814,6 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"Qow" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Qox" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"Qoy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) "Qoz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -57582,14 +56847,6 @@ /obj/item/stack/sheet/metal/fifty, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"QoE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"QoF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "QoG" = ( /obj/structure/girder, /turf/open/floor/plasteel/dark, @@ -57608,10 +56865,6 @@ /obj/machinery/light, /turf/open/floor/plating, /area/engine/engineering) -"QoJ" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/engine/engineering) "QoK" = ( /obj/item/crowbar/large, /obj/structure/rack, @@ -57652,23 +56905,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"QoQ" = ( -/obj/machinery/rnd/protolathe/department/medical, -/turf/open/floor/plasteel/white, -/area/medical/sleeper) -"QoR" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/rnd/protolathe/department/engineering, -/turf/open/floor/plasteel, -/area/engine/engineering) -"QoS" = ( -/obj/machinery/computer/rdconsole/production, -/turf/open/floor/plasteel, -/area/engine/engineering) "QoT" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, @@ -57699,61 +56935,310 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "QoY" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) +/obj/structure/table, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = 7; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/bottle/morphine{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/item/reagent_containers/syringe{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1485; + listening = 1; + name = "Station Intercom (Medbay)"; + pixel_x = 30 + }, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) "QoZ" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, -/area/space/nearstation) +/area/maintenance/port/fore) "Qpa" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, -/area/space/nearstation) +/area/maintenance/port/fore) "Qpb" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) "Qpc" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) "Qpd" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, -/area/space/nearstation) +/area/maintenance/fore) "Qpe" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, -/area/space/nearstation) +/area/maintenance/fore) "Qpf" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, -/area/space/nearstation) +/area/maintenance/fore) "Qpg" = ( -/obj/structure/grille, -/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) "Qph" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) +/turf/open/space/basic, +/area/space/nearstation) "Qpi" = ( +/turf/open/space/basic, +/area/space/nearstation) +"Qpj" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpk" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpl" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"Qpm" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"Qpn" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpo" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpp" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpq" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpr" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qps" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpt" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpu" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpv" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpw" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpx" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qpy" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"Qpz" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpA" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpB" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpC" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpD" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpE" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpF" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpG" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpH" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpI" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpJ" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpK" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpL" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"QpM" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"QpN" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpO" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpP" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpQ" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpR" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpS" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpT" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpU" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpV" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QpW" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpX" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QpY" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"QpZ" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"Qqa" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqb" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqc" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqd" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqe" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqf" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqg" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqh" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqi" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqj" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qqk" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qql" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqm" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqn" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqo" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqp" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqq" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqr" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqs" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqt" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"Qqu" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"Qqv" = ( +/turf/open/space/basic, +/area/maintenance/port/fore) +"Qqw" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqx" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqy" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"Qqz" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqA" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqB" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqC" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqD" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqE" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqF" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QqG" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QqH" = ( /obj/structure/window/reinforced, /obj/vehicle/ridden/secway, /obj/item/key/security, @@ -57763,31 +57248,119 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"Qpj" = ( +"QqI" = ( +/turf/open/space/basic, +/area/storage/primary) +"QqJ" = ( +/turf/open/space/basic, +/area/storage/primary) +"QqK" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqL" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqM" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqN" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqO" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqP" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqQ" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqR" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqS" = ( +/turf/open/space/basic, +/area/maintenance/bar/cafe) +"QqT" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QqU" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QqV" = ( +/obj/structure/window/reinforced, +/obj/vehicle/ridden/secway, +/obj/item/key/security, +/obj/machinery/door/window/eastleft{ + name = "Secway Docking Port" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"QqW" = ( /obj/structure/closet/l3closet/security, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"Qpk" = ( +"QqX" = ( +/turf/open/space/basic, +/area/storage/primary) +"QqY" = ( +/turf/open/space/basic, +/area/storage/primary) +"QqZ" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qra" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qrb" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qrc" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qrd" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qre" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qrf" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qrg" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qrh" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qri" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qrj" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qrk" = ( /obj/machinery/flasher/portable, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpl" = ( +"Qrl" = ( /obj/machinery/flasher/portable, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpm" = ( +"Qrm" = ( /obj/machinery/flasher/portable, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpn" = ( +"Qrn" = ( /obj/machinery/flasher/portable, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpo" = ( +"Qro" = ( /obj/structure/table, /obj/item/grenade/barrier{ pixel_x = 4 @@ -57801,14 +57374,14 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpp" = ( +"Qrp" = ( /obj/structure/rack, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/e_gun/dragnet, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpq" = ( +"Qrq" = ( /obj/structure/rack, /obj/item/clothing/suit/armor/bulletproof{ pixel_x = -3; @@ -57835,7 +57408,7 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qpr" = ( +"Qrr" = ( /obj/structure/rack, /obj/item/clothing/suit/armor/riot{ pixel_x = -3; @@ -57867,7 +57440,7 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"Qps" = ( +"Qrs" = ( /obj/structure/window/reinforced, /obj/machinery/door/window/eastleft{ name = "Cyborg Docking Port" @@ -57876,21 +57449,60 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"Qpt" = ( +"Qrt" = ( /obj/effect/landmark/secequipment, /obj/effect/turf_decal/bot{ dir = 2 }, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"Qpu" = ( +"Qru" = ( /obj/structure/closet/secure_closet/security/sec, /obj/effect/turf_decal/bot{ dir = 2 }, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"Qpv" = ( +"Qrv" = ( +/turf/open/space/basic, +/area/storage/primary) +"Qrw" = ( +/turf/open/space/basic, +/area/storage/primary) +"Qrx" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qry" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qrz" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QrA" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QrB" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QrC" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QrD" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QrE" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QrF" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QrG" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QrH" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QrI" = ( /obj/machinery/camera/motion{ c_tag = "Non-Lethal Armory Motion Sensor"; dir = 4 @@ -57900,14 +57512,14 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"Qpw" = ( +"QrJ" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"Qpx" = ( +"QrK" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/stripes/line{ @@ -57915,21 +57527,21 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"Qpy" = ( +"QrL" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"Qpz" = ( +"QrM" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpA" = ( +"QrN" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -57938,14 +57550,14 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpB" = ( +"QrO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpC" = ( +"QrP" = ( /obj/machinery/door/poddoor/shutters{ id = "lowsecarmory"; name = "Non-Lethal Armoury Shutter" @@ -57959,31 +57571,70 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpD" = ( +"QrQ" = ( /obj/effect/landmark/secequipment, /obj/effect/turf_decal/bot{ dir = 2 }, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"QpE" = ( +"QrR" = ( +/turf/open/space/basic, +/area/storage/primary) +"QrS" = ( +/turf/open/space/basic, +/area/storage/primary) +"QrT" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QrU" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QrV" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QrW" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QrX" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QrY" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QrZ" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsa" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsb" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsc" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qsd" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qse" = ( /obj/machinery/suit_storage_unit/security, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpF" = ( +"Qsf" = ( /obj/machinery/suit_storage_unit/security, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpG" = ( +"Qsg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, /obj/structure/tank_dispenser/oxygen, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpH" = ( +"Qsh" = ( /obj/machinery/suit_storage_unit/security, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -57991,7 +57642,7 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpI" = ( +"Qsi" = ( /obj/machinery/suit_storage_unit/security, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -57999,7 +57650,7 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpJ" = ( +"Qsj" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -58012,14 +57663,14 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpK" = ( +"Qsk" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpL" = ( +"Qsl" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -58027,7 +57678,85 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpM" = ( +"Qsm" = ( +/turf/open/space/basic, +/area/storage/primary) +"Qsn" = ( +/turf/open/space/basic, +/area/storage/primary) +"Qso" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qsp" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qsq" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qsr" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"Qss" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qst" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsu" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsv" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsw" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qsx" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qsy" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qsz" = ( +/turf/open/space/basic, +/area/storage/primary) +"QsA" = ( +/turf/open/space/basic, +/area/storage/primary) +"QsB" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsC" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsD" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsE" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsF" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QsG" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QsH" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QsI" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QsJ" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QsK" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QsL" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QsM" = ( /obj/machinery/firealarm{ pixel_y = 24 }, @@ -58036,7 +57765,7 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpN" = ( +"QsN" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -58050,7 +57779,7 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpO" = ( +"QsO" = ( /obj/machinery/light{ dir = 1 }, @@ -58063,7 +57792,7 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpP" = ( +"QsP" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 }, @@ -58081,7 +57810,7 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpQ" = ( +"QsQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -58090,23 +57819,140 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) -"QpR" = ( +"QsR" = ( +/turf/open/space/basic, +/area/storage/primary) +"QsS" = ( +/turf/open/space/basic, +/area/storage/primary) +"QsT" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsU" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsV" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsW" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/mime) +"QsX" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"QsY" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"QsZ" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qta" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qtb" = ( +/turf/open/space/basic, +/area/crew_quarters/theatre/clown) +"Qtc" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qtd" = ( +/turf/open/space/basic, +/area/maintenance/fore) +"Qte" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtf" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtg" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qth" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qti" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtj" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtk" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtl" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtm" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtn" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qto" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtp" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtq" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtr" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qts" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtt" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtu" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtv" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtw" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtx" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qty" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"Qtz" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"QtA" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"QtB" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"QtC" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"QtD" = ( +/turf/open/space/basic, +/area/hallway/primary/port) +"QtE" = ( /obj/structure/table, /obj/item/storage/box/firingpins, /obj/item/storage/box/firingpins, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpS" = ( +"QtF" = ( /obj/structure/table, /obj/item/storage/toolbox/drone, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"QpT" = ( +"QtG" = ( /obj/structure/falsewall, /obj/effect/turf_decal/delivery/white, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"QpU" = ( +"QtH" = ( /obj/effect/turf_decal/loading_area/white, /obj/effect/turf_decal/stripes/white/corner{ dir = 8 @@ -58114,7 +57960,7 @@ /obj/effect/turf_decal/stripes/white/corner, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"QpV" = ( +"QtI" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -58130,7 +57976,7 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"QpW" = ( +"QtJ" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 }, @@ -58139,14 +57985,14 @@ }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"QpX" = ( +"QtK" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 }, /obj/effect/turf_decal/stripes/white/corner, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"QpY" = ( +"QtL" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 @@ -58165,22 +58011,22 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"QpZ" = ( +"QtM" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqa" = ( +"QtN" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqb" = ( +"QtO" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqc" = ( +"QtP" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"Qqd" = ( +"QtQ" = ( /obj/effect/turf_decal/stripes/white/line, /obj/effect/turf_decal/stripes/white/corner{ dir = 1 @@ -58192,7 +58038,7 @@ }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) -"Qqe" = ( +"QtR" = ( /obj/machinery/door/window/brigdoor/security/cell{ dir = 4; id = "Secure Cell"; @@ -58214,48 +58060,48 @@ dir = 8 }, /area/security/execution/transfer) -"Qqf" = ( +"QtS" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqg" = ( +"QtT" = ( /obj/structure/bed, /obj/item/clothing/suit/straight_jacket, /obj/item/clothing/mask/muzzle, /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqh" = ( +"QtU" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqi" = ( +"QtV" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqj" = ( +"QtW" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qqk" = ( +"QtX" = ( /turf/open/floor/plasteel, /area/security/execution/transfer) -"Qql" = ( +"QtY" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ icon_state = "0-4" }, /turf/open/floor/plating, /area/security/warden) -"Qqm" = ( +"QtZ" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/structure/table, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"Qqn" = ( +"Qua" = ( /obj/machinery/computer/secure_data{ dir = 1 }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"Qqo" = ( +"Qub" = ( /obj/structure/table, /obj/item/folder/red, /obj/item/pen, @@ -58264,7 +58110,7 @@ /obj/machinery/light, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"Qqp" = ( +"Quc" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor{ dir = 1; @@ -58291,19 +58137,19 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) -"Qqq" = ( +"Qud" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /turf/open/floor/plasteel, /area/security/brig) -"Qqr" = ( +"Que" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /turf/open/floor/plasteel, /area/security/brig) -"Qqs" = ( +"Quf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -58311,7 +58157,7 @@ dir = 4 }, /area/security/brig) -"Qqt" = ( +"Qug" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, @@ -58319,7 +58165,7 @@ dir = 1 }, /area/security/brig) -"Qqu" = ( +"Quh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -58327,12 +58173,12 @@ dir = 1 }, /area/security/brig) -"Qqv" = ( +"Qui" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -58342,13 +58188,13 @@ dir = 9 }, /area/security/brig) -"Qqw" = ( +"Quj" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /turf/open/floor/plasteel, /area/security/brig) -"Qqx" = ( +"Quk" = ( /obj/machinery/door_timer{ id = "Cell 2"; name = "Cell 2"; @@ -58358,7 +58204,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/red/corner, /area/security/brig) -"Qqy" = ( +"Qul" = ( /obj/machinery/door_timer{ id = "Cell 3"; name = "Cell 3"; @@ -58369,7 +58215,7 @@ }, /turf/open/floor/plasteel/red/corner, /area/security/brig) -"Qqz" = ( +"Qum" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -58377,12 +58223,12 @@ dir = 8 }, /area/security/brig) -"QqA" = ( +"Qun" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -58392,14 +58238,14 @@ dir = 10 }, /area/security/brig) -"QqB" = ( +"Quo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/light, /turf/open/floor/plasteel/red/side, /area/security/brig) -"QqC" = ( +"Qup" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -58410,7 +58256,7 @@ }, /turf/open/floor/plating, /area/security/brig) -"QqD" = ( +"Quq" = ( /obj/machinery/door/window/brigdoor/security/cell{ id = "Cell 3"; name = "Cell 3" @@ -58421,12 +58267,12 @@ }, /turf/open/floor/plasteel/red/side, /area/security/brig) -"QqE" = ( +"Qur" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -58436,7 +58282,7 @@ dir = 9 }, /area/security/brig) -"QqF" = ( +"Qus" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, @@ -58445,25 +58291,25 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) -"QqG" = ( +"Qut" = ( /turf/open/floor/plasteel/red/side{ dir = 1 }, /area/hallway/primary/fore) -"QqH" = ( +"Quu" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) -"QqI" = ( +"Quv" = ( /obj/machinery/flasher{ id = "Cell 2"; pixel_x = -28 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) -"QqJ" = ( +"Quw" = ( /obj/machinery/flasher{ id = "Cell 3"; pixel_x = -28 @@ -58473,14 +58319,14 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) -"QqK" = ( +"Qux" = ( /obj/machinery/flasher{ id = "Cell 4"; pixel_x = -28 }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) -"QqL" = ( +"Quy" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "briggate"; @@ -58492,44 +58338,44 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) -"QqM" = ( +"Quz" = ( /turf/open/floor/plasteel/red/side{ dir = 8 }, /area/hallway/primary/fore) -"QqN" = ( +"QuA" = ( /turf/open/floor/plasteel/red/side{ dir = 1 }, /area/hallway/primary/fore) -"QqO" = ( +"QuB" = ( /turf/open/floor/plasteel/red/side{ dir = 1 }, /area/hallway/primary/fore) -"QqP" = ( +"QuC" = ( /turf/open/floor/plasteel/red/side{ dir = 6 }, /area/hallway/primary/fore) -"QqQ" = ( +"QuD" = ( /turf/open/floor/plasteel/red/side{ dir = 10 }, /area/hallway/primary/fore) -"QqR" = ( +"QuE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side{ dir = 4 }, /area/hallway/primary/fore) -"QqS" = ( +"QuF" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/red/side{ dir = 4 }, /area/hallway/primary/fore) -"QqT" = ( +"QuG" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "briggate"; @@ -58546,7 +58392,7 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) -"QqU" = ( +"QuH" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "seclobby"; @@ -58557,24 +58403,24 @@ }, /turf/open/floor/plating, /area/security/brig) -"QqV" = ( +"QuI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side{ dir = 4 }, /area/hallway/primary/fore) -"QqW" = ( +"QuJ" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /turf/open/floor/plasteel/red/side{ dir = 4 }, /area/hallway/primary/fore) -"QqX" = ( +"QuK" = ( /obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"QqY" = ( +"QuL" = ( /obj/machinery/light{ dir = 1 }, @@ -58582,7 +58428,7 @@ dir = 1 }, /area/hallway/primary/fore) -"QqZ" = ( +"QuM" = ( /obj/structure/sign/securearea{ pixel_y = 32 }, @@ -58590,9 +58436,9 @@ dir = 4 }, /area/hallway/primary/fore) -"Qra" = ( +"QuN" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "lobbyairlock"; name = "Security Lobby"; @@ -58602,33 +58448,33 @@ dir = 1 }, /area/hallway/primary/fore) -"Qrb" = ( +"QuO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/red/side{ dir = 10 }, /area/hallway/primary/fore) -"Qrc" = ( +"QuP" = ( /turf/open/floor/plasteel/red/side, /area/hallway/primary/fore) -"Qrd" = ( +"QuQ" = ( /turf/open/floor/plasteel/red/side, /area/hallway/primary/fore) -"Qre" = ( +"QuR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side{ dir = 6 }, /area/hallway/primary/fore) -"Qrf" = ( +"QuS" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/red/side{ dir = 4 }, /area/hallway/primary/fore) -"Qrg" = ( +"QuT" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "lobbyairlock"; name = "Security Lobby"; @@ -58636,12 +58482,12 @@ }, /turf/open/floor/plasteel/red/side, /area/hallway/primary/fore) -"Qrh" = ( +"QuU" = ( /turf/open/floor/plasteel/red/side{ dir = 6 }, /area/hallway/primary/fore) -"Qri" = ( +"QuV" = ( /obj/machinery/flasher{ id = "brigentry"; pixel_x = 0; @@ -58653,247 +58499,141 @@ }, /turf/open/floor/plasteel/red/side, /area/hallway/primary/fore) -"Qrj" = ( +"QuW" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrk" = ( +"QuX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/fore/secondary) -"Qrl" = ( +"QuY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/maintenance/fore/secondary) -"Qrm" = ( +"QuZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrn" = ( +"Qva" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"Qro" = ( +"Qvb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrp" = ( +"Qvc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrq" = ( +"Qvd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrr" = ( +"Qve" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrs" = ( +"Qvf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrt" = ( +"Qvg" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/maintenance/fore) -"Qru" = ( +"Qvh" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"Qrv" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar/cafe) -"Qrw" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"Qrx" = ( -/obj/structure/chair/wood{ +"Qvi" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/plasteel/white/side{ dir = 8 }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar/cafe) -"Qry" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"Qrz" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrA" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar/cafe) -"QrB" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks/beer, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrC" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar/cafe) -"QrD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ +/area/crew_quarters/theatre/mime) +"Qvj" = ( +/obj/machinery/light{ dir = 1 }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrF" = ( +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/crew_quarters/theatre/mime) +"Qvk" = ( +/obj/structure/bed, +/obj/item/bedsheet/mime, +/obj/machinery/camera{ + c_tag = "Mime's Office"; + dir = 8 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrH" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/chair/stool/bar, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar/cafe) -"QrI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar/cafe) -"QrJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrK" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrL" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/structure/table/wood, -/obj/machinery/light/small, -/turf/open/floor/wood{ - icon_state = "wood-broken" +/turf/open/floor/plasteel/white/side{ + dir = 8 }, -/area/maintenance/bar/cafe) -"QrN" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/area/crew_quarters/theatre/mime) +"Qvl" = ( /obj/structure/cable{ - icon_state = "2-4" + icon_state = "0-2" }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/theatre/clown"; + dir = 4; + name = "Clown's Office APC"; + pixel_x = 26; + pixel_y = 1 }, -/turf/open/floor/wood, -/area/maintenance/bar/cafe) -"QrO" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar/cafe) -"QrP" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, -/obj/machinery/light_switch{ - pixel_x = 27 - }, /turf/open/floor/wood, /area/maintenance/bar/cafe) -"QrQ" = ( -/turf/closed/wall, -/area/crew_quarters/theatre/mime) -"QrR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/theatre/mime) -"QrS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, +"Qvm" = ( +/obj/structure/closet/secure_closet/freezer/cream_pie, +/obj/machinery/camera{ + c_tag = "Clown's Office"; + c_tag_order = 999; + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"QrT" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"QrU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"QrV" = ( +"Qvn" = ( /obj/structure/closet/crate/wooden/toy, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light{ dir = 1 }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"QrW" = ( +"Qvo" = ( /obj/machinery/vending/autodrobe, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"QrX" = ( +"Qvp" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/baguette, /obj/item/toy/dummy, @@ -58901,35 +58641,89 @@ pixel_x = -28 }, /turf/open/floor/plasteel/white/side{ - dir = 1 + dir = 8 }, /area/crew_quarters/theatre/mime) -"QrY" = ( +"Qvq" = ( /obj/effect/landmark/start/mime, /obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 + dir = 4 }, /turf/open/floor/plasteel/white/side{ - dir = 1 + dir = 8 }, /area/crew_quarters/theatre/mime) -"QrZ" = ( +"Qvr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/crew_quarters/theatre/mime) +"Qvs" = ( +/obj/machinery/door/airlock/freezer{ + boltDown = null; + boltUp = null; + doorClose = null; + doorDeni = null; + doorOpen = null; + name = "Mime's Office"; + noPower = null; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/crew_quarters/theatre/mime) +"Qvt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar/cafe) +"Qvu" = ( +/obj/machinery/door/airlock/clown{ + name = "Clown's Office"; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/redyellow, +/area/crew_quarters/theatre/clown) +"Qvv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/redyellow, +/area/crew_quarters/theatre/clown) +"Qvw" = ( /obj/effect/landmark/start/clown, /obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 + dir = 8 }, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"Qsa" = ( +"Qvx" = ( /obj/structure/bed, /obj/item/bedsheet/clown, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 +/obj/structure/mirror{ + pixel_x = 28 }, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"Qsb" = ( +"Qvy" = ( /obj/structure/table, /obj/item/lipstick/random{ pixel_x = -2; @@ -58944,33 +58738,10 @@ pixel_x = -22 }, /turf/open/floor/plasteel/white/side{ - dir = 1 + dir = 8 }, /area/crew_quarters/theatre/mime) -"Qsc" = ( -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"Qsd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"Qse" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/theatre/clown) -"Qsf" = ( -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/theatre/clown) -"Qsg" = ( -/obj/structure/displaycase/clown, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/theatre/clown) -"Qsh" = ( +"Qvz" = ( /obj/structure/table, /obj/item/paper_bin{ pixel_x = 1; @@ -58978,131 +58749,346 @@ }, /obj/item/pen, /turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"Qsi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"Qsj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/white/side{ - dir = 1 - }, -/area/crew_quarters/theatre/mime) -"Qsk" = ( -/obj/structure/table, -/obj/item/device/flashlight/lamp/bananalamp, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/theatre/clown) -"Qsl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, +/area/crew_quarters/theatre/mime) +"QvA" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/theatre/mime"; + dir = 8; + name = "Mime's Office APC"; + pixel_x = -26; + pixel_y = -1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvB" = ( +/obj/structure/displaycase/clown, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"Qsm" = ( +"QvC" = ( /obj/structure/statue/bananium/clown, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/theatre/clown) -"Qsn" = ( -/obj/effect/spawner/structure/window, +"QvD" = ( +/obj/effect/spawner/structure/window/hollow/end{ + dir = 8 + }, +/turf/open/floor/plating, +/area/crew_quarters/theatre/mime) +"QvE" = ( +/obj/effect/spawner/structure/window/hollow/middle, +/turf/open/floor/plating, +/area/crew_quarters/theatre/mime) +"QvF" = ( +/obj/effect/spawner/structure/window/hollow/middle, /turf/open/floor/plating, /area/crew_quarters/theatre/clown) -"Qso" = ( -/obj/machinery/door/airlock/clown{ - name = "Clown's Office"; - req_access_txt = "46" +"QvG" = ( +/obj/effect/spawner/structure/window/hollow/end{ + dir = 4 }, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plating, /area/crew_quarters/theatre/clown) -"Qsp" = ( +"QvH" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar/cafe) +"QvI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table_frame/wood, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvJ" = ( +/obj/machinery/power/apc{ + areastring = "/area/maintenance/bar/cafe"; + dir = 1; + name = "Abandoned Cafe APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar/cafe) +"QvK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvL" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar/cafe) +"QvM" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar/cafe) +"QvN" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar/cafe) +"QvQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar/cafe) +"QvR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvS" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvT" = ( +/obj/structure/chair/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/bar/cafe) +"QvU" = ( +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvW" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"QvX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar/cafe) +"QvY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar/cafe) +"QvZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar/cafe) +"Qwa" = ( +/obj/machinery/light_switch{ + pixel_x = 27 + }, +/obj/structure/closet/crate/bin, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"Qwb" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/structure/light_construct/small, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"Qwc" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar/cafe) +"Qwd" = ( +/turf/closed/wall, +/area/maintenance/bar/cafe) +"Qwe" = ( +/obj/effect/spawner/structure/window/hollow/directional{ + dir = 6 + }, +/obj/item/shard{ + icon_state = "small" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plating, +/area/maintenance/bar/cafe) +"Qwf" = ( +/turf/closed/wall, +/area/maintenance/bar/cafe) +"Qwg" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/cobweb, +/obj/item/stack/sheet/glass{ + amount = 3 + }, +/obj/item/wrench, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"Qwh" = ( +/obj/structure/light_construct/small, +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/turf/open/floor/wood, +/area/maintenance/bar/cafe) +"Qwi" = ( +/obj/machinery/camera{ + c_tag = "Bar Storage" + }, +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"Qwj" = ( +/obj/effect/spawner/structure/window/hollow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plating, +/area/maintenance/bar/cafe) +"Qwk" = ( +/obj/effect/turf_decal/loading_area/white, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"Qwl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"Qwm" = ( /obj/machinery/door/airlock{ name = "Bar Storage"; req_access_txt = "25" }, -/turf/open/floor/plasteel{ - icon_state = "wood" - }, -/area/crew_quarters/bar) -"Qsq" = ( -/obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/wood, /area/crew_quarters/bar) -"Qsr" = ( +"Qwn" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) +"Qwo" = ( /obj/machinery/vending/coffee, /turf/open/floor/wood, /area/bridge/meeting_room) -"Qss" = ( +"Qwp" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" }, /turf/open/floor/plating, /area/bridge/meeting_room) -"Qst" = ( +"Qwq" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"Qsu" = ( +"Qwr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/department/bridge) -"Qsv" = ( +"Qws" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"Qsw" = ( +"Qwt" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"Qsx" = ( +"Qwu" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"Qsy" = ( +"Qwv" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"Qsz" = ( +"Qww" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"QsA" = ( +"Qwx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/bridge) -"QsB" = ( +"Qwy" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"QsC" = ( +"Qwz" = ( /obj/machinery/door/airlock/maintenance{ name = "bridge maintenance access"; req_access_txt = "20" }, /turf/open/floor/plating, /area/crew_quarters/heads/captain) -"QsD" = ( +"QwA" = ( /turf/closed/wall/r_wall, /area/maintenance/department/bridge) -"QsE" = ( +"QwB" = ( /turf/closed/wall/r_wall, /area/maintenance/department/bridge) -"QsF" = ( +"QwC" = ( /obj/machinery/computer/bank_machine, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) -"QsG" = ( +"QwD" = ( /obj/machinery/power/apc{ dir = 1; name = "Vault APC"; @@ -59114,13 +59100,13 @@ }, /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) -"QsH" = ( +"QwE" = ( /obj/structure/filingcabinet, /obj/item/folder/documents, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) -"QsI" = ( +"QwF" = ( /obj/structure/closet/crate{ name = "Gold Crate" }, @@ -59139,19 +59125,19 @@ /obj/effect/turf_decal/bot_white/right, /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) -"QsJ" = ( +"QwG" = ( /obj/structure/cable{ icon_state = "2-4" }, /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) -"QsK" = ( +"QwH" = ( /obj/structure/cable{ icon_state = "1-8" }, /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) -"QsL" = ( +"QwI" = ( /obj/item/coin/silver{ pixel_x = 7; pixel_y = 12 @@ -59178,26 +59164,26 @@ /obj/effect/turf_decal/bot_white/left, /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) -"QsM" = ( +"QwJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) -"QsN" = ( +"QwK" = ( /obj/structure/sign/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) -"QsO" = ( +"QwL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) -"QsP" = ( +"QwM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ @@ -59205,10 +59191,10 @@ }, /turf/open/floor/plating, /area/security/checkpoint/tertiary) -"QsQ" = ( +"QwN" = ( /turf/closed/wall/r_wall, /area/security/checkpoint/tertiary) -"QsR" = ( +"QwO" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ icon_state = "2-4" @@ -59223,7 +59209,7 @@ dir = 5 }, /area/security/checkpoint/tertiary) -"QsS" = ( +"QwP" = ( /obj/structure/closet/secure_closet/security, /obj/machinery/power/apc{ areastring = "/area/security/checkpoint/tertiary"; @@ -59239,7 +59225,7 @@ dir = 9 }, /area/security/checkpoint/tertiary) -"QsT" = ( +"QwQ" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_y = 30 }, @@ -59250,7 +59236,7 @@ dir = 1 }, /area/security/checkpoint/tertiary) -"QsU" = ( +"QwR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "2-8" @@ -59262,7 +59248,7 @@ dir = 1 }, /area/security/checkpoint/tertiary) -"QsV" = ( +"QwS" = ( /obj/structure/cable{ icon_state = "1-8" }, @@ -59270,13 +59256,13 @@ dir = 1 }, /area/security/checkpoint/tertiary) -"QsW" = ( +"QwT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side{ dir = 1 }, /area/security/checkpoint/tertiary) -"QsX" = ( +"QwU" = ( /obj/machinery/requests_console{ department = "Security"; departmentType = 5; @@ -59286,13 +59272,13 @@ dir = 1 }, /area/security/checkpoint/tertiary) -"QsY" = ( +"QwV" = ( /obj/machinery/computer/security, /turf/open/floor/plasteel/red/side{ dir = 5 }, /area/security/checkpoint/tertiary) -"QsZ" = ( +"QwW" = ( /obj/structure/closet/wardrobe/red, /obj/machinery/light{ dir = 8 @@ -59301,10 +59287,10 @@ dir = 8 }, /area/security/checkpoint/tertiary) -"Qta" = ( +"QwX" = ( /turf/open/floor/plasteel, /area/security/checkpoint/tertiary) -"Qtb" = ( +"QwY" = ( /obj/machinery/computer/secure_data, /obj/machinery/light{ dir = 4 @@ -59313,7 +59299,7 @@ dir = 4 }, /area/security/checkpoint/tertiary) -"Qtc" = ( +"QwZ" = ( /obj/machinery/airalarm{ dir = 4; pixel_x = -22 @@ -59335,7 +59321,7 @@ dir = 10 }, /area/security/checkpoint/tertiary) -"Qtd" = ( +"Qxa" = ( /obj/item/paper_bin{ pixel_x = 1; pixel_y = 9 @@ -59344,7 +59330,7 @@ /obj/structure/table, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/tertiary) -"Qte" = ( +"Qxb" = ( /obj/item/device/radio/off, /obj/item/crowbar, /obj/item/device/assembly/flash/handheld, @@ -59358,7 +59344,7 @@ dir = 6 }, /area/security/checkpoint/tertiary) -"Qtf" = ( +"Qxc" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "vault"; @@ -59372,11 +59358,20 @@ }, /turf/open/floor/plating, /area/security/checkpoint/tertiary) -"Qtg" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"Qth" = ( +"Qxd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/hallway/primary/central) +"Qxe" = ( +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/central) +"Qxf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -59385,28 +59380,64 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"Qti" = ( +"Qxg" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Qxh" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Qxi" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Qxj" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Qxk" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Qxl" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Qxm" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/maintenance/port/aft) -"Qtj" = ( +"Qxn" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Qxo" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Qxp" = ( /obj/machinery/door/airlock{ id_tag = "MaintDorm2"; name = "Maintenance Dorm 2" }, /turf/open/floor/wood, /area/maintenance/port/aft) -"Qtk" = ( +"Qxq" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"Qxr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/wood, /area/maintenance/port/aft) -"Qtl" = ( +"Qxs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/wood, /area/maintenance/port/aft) -"Qtm" = ( +"Qxt" = ( /obj/structure/rack{ dir = 8; layer = 2.9 @@ -59418,11 +59449,15 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/port/aft) -"Qtn" = ( +"Qxu" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Qxv" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/wood, /area/maintenance/port/aft) -"Qto" = ( +"Qxw" = ( /obj/machinery/light/small, /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/general/hidden{ @@ -59430,7 +59465,7 @@ }, /turf/open/floor/wood, /area/maintenance/port/aft) -"Qtp" = ( +"Qxx" = ( /obj/structure/bed, /obj/item/bedsheet, /obj/machinery/atmospherics/pipe/simple/general/hidden{ @@ -59438,49 +59473,49 @@ }, /turf/open/floor/wood, /area/maintenance/port/aft) -"Qtq" = ( +"Qxy" = ( /turf/closed/wall, /area/maintenance/bar) -"Qtr" = ( +"Qxz" = ( /turf/closed/wall, /area/maintenance/bar) -"Qts" = ( +"QxA" = ( /turf/closed/wall, /area/maintenance/bar) -"Qtt" = ( +"QxB" = ( /obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "0" }, /turf/open/floor/plating, /area/maintenance/bar) -"Qtu" = ( +"QxC" = ( /turf/closed/wall, /area/maintenance/bar) -"Qtv" = ( +"QxD" = ( /turf/closed/wall, /area/maintenance/bar) -"Qtw" = ( +"QxE" = ( /turf/closed/wall, /area/maintenance/bar) -"Qtx" = ( +"QxF" = ( /turf/closed/wall, /area/maintenance/bar) -"Qty" = ( +"QxG" = ( /turf/open/floor/wood, /area/maintenance/bar) -"Qtz" = ( +"QxH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/open/floor/wood, /area/maintenance/bar) -"QtA" = ( +"QxI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"QtB" = ( +"QxJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -59488,7 +59523,7 @@ icon_state = "wood-broken5" }, /area/maintenance/bar) -"QtC" = ( +"QxK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -59497,7 +59532,7 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"QtD" = ( +"QxL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -59509,7 +59544,7 @@ }, /turf/open/floor/plating, /area/maintenance/bar) -"QtE" = ( +"QxM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -59518,30 +59553,30 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"QtF" = ( +"QxN" = ( /turf/closed/wall, /area/maintenance/bar) -"QtG" = ( +"QxO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood{ icon_state = "wood-broken7" }, /area/maintenance/bar) -"QtH" = ( +"QxP" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /turf/open/floor/wood, /area/maintenance/bar) -"QtI" = ( +"QxQ" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"QtJ" = ( +"QxR" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -59556,40 +59591,40 @@ icon_state = "wood-broken7" }, /area/maintenance/bar) -"QtK" = ( +"QxS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/maintenance/bar) -"QtL" = ( +"QxT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/maintenance/bar) -"QtM" = ( +"QxU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/maintenance/bar) -"QtN" = ( +"QxV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/maintenance/bar) -"QtO" = ( +"QxW" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/maintenance/bar) -"QtP" = ( +"QxX" = ( /turf/closed/wall, /area/maintenance/bar) -"QtQ" = ( +"QxY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -59598,7 +59633,7 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"QtR" = ( +"QxZ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -59606,38 +59641,38 @@ icon_state = "wood-broken6" }, /area/maintenance/bar) -"QtS" = ( +"Qya" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"QtT" = ( +"Qyb" = ( /obj/structure/table/wood, /turf/open/floor/wood{ icon_state = "wood-broken5" }, /area/maintenance/bar) -"QtU" = ( +"Qyc" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/wood, /area/maintenance/bar) -"QtV" = ( +"Qyd" = ( /obj/machinery/chem_dispenser/drinks/beer, /obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) -"QtW" = ( +"Qye" = ( /turf/closed/wall, /area/maintenance/bar) -"QtX" = ( +"Qyf" = ( /obj/item/restraints/handcuffs/fake, /obj/effect/decal/cleanable/blood/old, /obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, /turf/open/floor/plating, /area/maintenance/bar) -"QtY" = ( +"Qyg" = ( /obj/item/shard, /obj/item/wirecutters, /obj/item/wallframe/camera, @@ -59645,14 +59680,14 @@ icon_state = "panelscorched" }, /area/maintenance/bar) -"QtZ" = ( +"Qyh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Qua" = ( +"Qyi" = ( /turf/closed/wall, /area/maintenance/bar) -"Qub" = ( +"Qyj" = ( /obj/item/device/radio/intercom{ freerange = 0; frequency = 1459; @@ -59663,22 +59698,22 @@ icon_state = "wood-broken" }, /area/maintenance/bar) -"Quc" = ( +"Qyk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"Qud" = ( +"Qyl" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood{ icon_state = "wood-broken7" }, /area/maintenance/bar) -"Que" = ( +"Qym" = ( /obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) -"Quf" = ( +"Qyn" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -59686,15 +59721,15 @@ icon_state = "wood-broken7" }, /area/maintenance/bar) -"Qug" = ( +"Qyo" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks, /turf/open/floor/wood, /area/maintenance/bar) -"Quh" = ( +"Qyp" = ( /turf/closed/wall, /area/maintenance/bar) -"Qui" = ( +"Qyq" = ( /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" @@ -59703,7 +59738,7 @@ /obj/item/device/electropack/shockcollar, /turf/open/floor/plating, /area/maintenance/bar) -"Quj" = ( +"Qyr" = ( /obj/structure/bed, /obj/item/bedsheet/grey, /obj/effect/decal/cleanable/semen{ @@ -59715,11 +59750,11 @@ icon_state = "platingdmg3" }, /area/maintenance/bar) -"Quk" = ( +"Qys" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Qul" = ( +"Qyt" = ( /obj/machinery/door/airlock/maintenance/abandoned{ name = "Incinerator Access"; req_access_txt = "12" @@ -59729,30 +59764,30 @@ }, /turf/open/floor/plating, /area/maintenance/bar) -"Qum" = ( +"Qyu" = ( /turf/open/floor/wood, /area/maintenance/bar) -"Qun" = ( +"Qyv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood{ icon_state = "wood-broken5" }, /area/maintenance/bar) -"Quo" = ( +"Qyw" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qup" = ( +"Qyx" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"Quq" = ( +"Qyy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, @@ -59761,15 +59796,15 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"Qur" = ( +"Qyz" = ( /obj/structure/table/wood, /obj/item/storage/box/drinkingglasses, /turf/open/floor/wood, /area/maintenance/bar) -"Qus" = ( +"QyA" = ( /turf/closed/wall, /area/maintenance/bar) -"Qut" = ( +"QyB" = ( /obj/item/lighter/greyscale, /obj/effect/decal/cleanable/semen{ desc = "Blech."; @@ -59779,32 +59814,32 @@ icon_state = "panelscorched" }, /area/maintenance/bar) -"Quu" = ( +"QyC" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/blood/old, /obj/item/device/assembly/signaler, /turf/open/floor/plating, /area/maintenance/bar) -"Quv" = ( +"QyD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Quw" = ( +"QyE" = ( /turf/closed/wall, /area/maintenance/bar) -"Qux" = ( +"QyF" = ( /obj/effect/spawner/lootdrop/keg, /turf/open/floor/wood, /area/maintenance/bar) -"Quy" = ( +"QyG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"Quz" = ( +"QyH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"QuA" = ( +"QyI" = ( /obj/machinery/power/apc{ areastring = "/area/maintenance/bar"; dir = 2; @@ -59817,37 +59852,37 @@ icon_state = "wood-broken7" }, /area/maintenance/bar) -"QuB" = ( +"QyJ" = ( /turf/closed/wall, /area/maintenance/bar) -"QuC" = ( +"QyK" = ( /turf/closed/wall, /area/maintenance/bar) -"QuD" = ( +"QyL" = ( /obj/structure/falsewall, /turf/open/floor/plating, /area/maintenance/bar) -"QuE" = ( +"QyM" = ( /turf/closed/wall, /area/maintenance/bar) -"QuF" = ( +"QyN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"QuG" = ( +"QyO" = ( /turf/closed/wall, /area/maintenance/bar) -"QuH" = ( +"QyP" = ( /turf/closed/wall, /area/maintenance/bar) -"QuI" = ( +"QyQ" = ( /obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "0" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"QuJ" = ( +"QyR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "0" @@ -59856,48 +59891,48 @@ icon_state = "wood-broken" }, /area/maintenance/bar) -"QuK" = ( +"QyS" = ( /obj/structure/sign/poster/official/no_erp, /turf/closed/wall, /area/maintenance/bar) -"QuL" = ( +"QyT" = ( /turf/closed/wall, /area/maintenance/bar) -"QuM" = ( +"QyU" = ( /obj/machinery/vending/clothing, /turf/open/floor/wood, /area/maintenance/bar) -"QuN" = ( +"QyV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"QuO" = ( +"QyW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"QuP" = ( +"QyX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"QuQ" = ( +"QyY" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/maintenance/bar) -"QuR" = ( +"QyZ" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" }, /area/maintenance/bar) -"QuS" = ( +"Qza" = ( /obj/machinery/vending/autodrobe, /turf/open/floor/wood, /area/maintenance/bar) -"QuT" = ( +"Qzb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"QuU" = ( +"Qzc" = ( /obj/structure/sign/poster/random{ pixel_x = -32 }, @@ -59908,28 +59943,28 @@ icon_state = "wood-broken7" }, /area/maintenance/bar) -"QuV" = ( +"Qzd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/maintenance/bar) -"QuW" = ( +"Qze" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood{ icon_state = "wood-broken" }, /area/maintenance/bar) -"QuX" = ( +"Qzf" = ( /obj/structure/chair/stool, /turf/open/floor/wood{ icon_state = "wood-broken7" }, /area/maintenance/bar) -"QuY" = ( +"Qzg" = ( /turf/open/floor/wood{ icon_state = "wood-broken5" }, /area/maintenance/bar) -"QuZ" = ( +"Qzh" = ( /obj/item/paper_bin{ pixel_x = -3; pixel_y = 7 @@ -59941,38 +59976,38 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/bar) -"Qva" = ( +"Qzi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Qvb" = ( +"Qzj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvc" = ( +"Qzk" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvd" = ( +"Qzl" = ( /obj/structure/table/wood/poker, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qve" = ( +"Qzm" = ( /obj/structure/table/wood/poker, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvf" = ( +"Qzn" = ( /obj/structure/table/wood/poker, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -59980,20 +60015,20 @@ /obj/item/storage/pill_bottle/dice, /turf/open/floor/wood, /area/maintenance/bar) -"Qvg" = ( +"Qzo" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvh" = ( +"Qzp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvi" = ( +"Qzq" = ( /obj/machinery/light{ dir = 4 }, @@ -60003,57 +60038,57 @@ icon_state = "wood-broken6" }, /area/maintenance/bar) -"Qvj" = ( +"Qzr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Qvk" = ( +"Qzs" = ( /turf/open/floor/wood{ icon_state = "wood-broken5" }, /area/maintenance/bar) -"Qvl" = ( +"Qzt" = ( /obj/structure/table/wood/poker, /turf/open/floor/wood, /area/maintenance/bar) -"Qvm" = ( +"Qzu" = ( /obj/structure/table/wood/poker, /turf/open/floor/wood, /area/maintenance/bar) -"Qvn" = ( +"Qzv" = ( /obj/structure/table/wood/poker, /obj/item/coin/iron, /turf/open/floor/wood, /area/maintenance/bar) -"Qvo" = ( +"Qzw" = ( /obj/machinery/vending/games{ name = "\improper Good 'Clean' Fun" }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvp" = ( +"Qzx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Qvq" = ( +"Qzy" = ( /obj/effect/spawner/lootdrop/keg, /turf/open/floor/wood{ icon_state = "wood-broken7" }, /area/maintenance/bar) -"Qvr" = ( +"Qzz" = ( /obj/structure/sign/poster/random{ pixel_y = -32 }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvs" = ( +"QzA" = ( /obj/structure/chair/stool, /turf/open/floor/wood{ icon_state = "wood-broken" }, /area/maintenance/bar) -"Qvt" = ( +"QzB" = ( /obj/structure/chair/stool, /obj/item/device/radio/intercom{ name = "Station Intercom (General)"; @@ -60061,7 +60096,7 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"Qvu" = ( +"QzC" = ( /obj/structure/sign/poster/random{ pixel_y = -32 }, @@ -60069,35 +60104,35 @@ icon_state = "wood-broken7" }, /area/maintenance/bar) -"Qvv" = ( +"QzD" = ( /obj/machinery/vending/kink, /turf/open/floor/wood, /area/maintenance/bar) -"Qvw" = ( +"QzE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/bar) -"Qvx" = ( +"QzF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/engine/engine_smes) -"Qvy" = ( +"QzG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "1-2" }, /turf/closed/wall/r_wall, /area/engine/engine_smes) -"Qvz" = ( +"QzH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "1-2" }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvA" = ( +"QzI" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; @@ -60110,7 +60145,7 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvB" = ( +"QzJ" = ( /obj/machinery/camera{ c_tag = "Gravity Generator Foyer" }, @@ -60126,17 +60161,17 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvC" = ( +"QzK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "1-2" }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvD" = ( +"QzL" = ( /turf/closed/wall, /area/engine/gravity_generator) -"QvE" = ( +"QzM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, @@ -60149,11 +60184,11 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvF" = ( +"QzN" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvG" = ( +"QzO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -60165,7 +60200,7 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvH" = ( +"QzP" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, @@ -60174,42 +60209,42 @@ }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvI" = ( +"QzQ" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) -"QvJ" = ( +"QzR" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) -"QvK" = ( +"QzS" = ( /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) -"QvL" = ( +"QzT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ icon_state = "1-2" }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvM" = ( +"QzU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvN" = ( +"QzV" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvO" = ( +"QzW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvP" = ( +"QzX" = ( /obj/item/device/radio/intercom{ broadcasting = 0; listening = 1; @@ -60221,19 +60256,19 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvQ" = ( +"QzY" = ( /obj/machinery/power/terminal, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/cable, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvR" = ( +"QzZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"QvS" = ( +"QAa" = ( /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -60245,11 +60280,11 @@ /obj/item/pen/blue, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvT" = ( +"QAb" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvU" = ( +"QAc" = ( /obj/machinery/power/smes{ charge = 5e+006 }, @@ -60258,7 +60293,7 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvV" = ( +"QAd" = ( /obj/machinery/power/apc{ dir = 8; name = "Gravity Generator APC"; @@ -60277,28 +60312,28 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvW" = ( +"QAe" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvX" = ( +"QAf" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvY" = ( +"QAg" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"QvZ" = ( +"QAh" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -60314,7 +60349,7 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"Qwa" = ( +"QAi" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; @@ -60327,7 +60362,7 @@ }, /turf/open/floor/plating, /area/engine/gravity_generator) -"Qwb" = ( +"QAj" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ icon_state = "0-8" @@ -60337,8 +60372,8 @@ }, /turf/open/floor/plating, /area/engine/gravity_generator) -"Qwc" = ( -/obj/machinery/door/airlock/glass_engineering{ +"QAk" = ( +/obj/machinery/door/airlock/engineering/glass{ name = "Gravity Generator"; req_access_txt = "11"; req_one_access_txt = "0" @@ -60348,7 +60383,7 @@ }, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwd" = ( +"QAl" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ icon_state = "0-8" @@ -60358,7 +60393,7 @@ }, /turf/open/floor/plating, /area/engine/gravity_generator) -"Qwe" = ( +"QAm" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; @@ -60372,52 +60407,52 @@ /obj/structure/cable, /turf/open/floor/plating, /area/engine/gravity_generator) -"Qwf" = ( +"QAn" = ( /obj/effect/turf_decal/bot_white/right, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwg" = ( +"QAo" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwh" = ( +"QAp" = ( /obj/effect/turf_decal/bot_white/left, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwi" = ( +"QAq" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwj" = ( +"QAr" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwk" = ( +"QAs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) -"Qwl" = ( +"QAt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwm" = ( +"QAu" = ( /obj/effect/turf_decal/bot_white/left, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwn" = ( +"QAv" = ( /obj/machinery/gravity_generator/main/station, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwo" = ( +"QAw" = ( /obj/effect/turf_decal/bot_white/right, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwp" = ( +"QAx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -60428,7 +60463,7 @@ }, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) -"Qwq" = ( +"QAy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -66997,11 +67032,11 @@ Qlm cyc QlL QlW -QlC -QlC -QlC -QlC -QlC +cyI +cyI +cyI +cyI +cyI cyc Qnt QnD @@ -67255,10 +67290,10 @@ Qlx QlM QlX Qmi -Qms +cye QmG Qmw -QlC +cyI Qno Qnu cyi @@ -67514,11 +67549,11 @@ cyc Qmj Qmt QmH -QmX -QlC +cMc +cyI Qnp cyi -QlC +cyI QnR cyR aaa @@ -67771,7 +67806,7 @@ QlY Qmk Qmt QmI -QmX +cMc Qnh cyc Qnv @@ -68025,11 +68060,11 @@ Qlp Qlz QlO QlZ -QlC +cyI Qmt QmJ -QmX -QlC +cMc +cyI cyc cyc QnF @@ -68282,13 +68317,13 @@ cyc cyc cyc cyc -QlC +cyI Qmw QmK -Qms -QlC +cye +cyI Qnq -QlC +cyI QnG QnT cyc @@ -68540,10 +68575,10 @@ QlA cyn cyc cLY -QlC +cyI cyi -QlC -QlC +cyI +cyI cyc Qnw cyi @@ -69051,13 +69086,13 @@ aaf cyR Qlr cyi -QlC +cyI QlD cyi -QlC -QlC -QlC -QlC +cyI +cyI +cyI +cyI cyc Qny QnI @@ -69307,14 +69342,14 @@ aAC aaf cyc Qlt -QlC +cyI QlR cyc -QlC -Qms +cyI +cye QmM -Qms -QlC +cye +cyI cyc cyc cyc @@ -69821,16 +69856,16 @@ aAD awW Qll Qlu -QlC +cyI cyi Qmb -QlC +cyI Qmk QmO -QlC -QlC +cyI +cyI Qnr -QlC +cyI QnK QnX cyR @@ -70082,12 +70117,12 @@ QlF cyx Qmb cyi -QlC +cyI cMa cyi -QlC +cyI cyc -Qms +cye czm QnY cyc @@ -70338,10 +70373,10 @@ cyc QlG cyc cyc -QlC -Qms +cyI +cye QmP -Qms +cye Qnj cyc cyc @@ -70595,11 +70630,11 @@ cyk QlH QlS Qmd -QlC -Qms +cyI +cye QmQ Qmw -QlC +cyI Qns QnA QnL @@ -70852,11 +70887,11 @@ cyj QlI QlI Qme -QlC -QlC +cyI +cyI cyi -QlC -QlC +cyI +cyI cMf cyi QnM @@ -71368,8 +71403,8 @@ QlV cyc cyw QmC -QlC -Qms +cyI +cye Qnk cyc QnC @@ -71625,7 +71660,7 @@ cyc cyc Qmo QmD -QlC +cyI Qnd Qnl cyc @@ -71881,7 +71916,7 @@ aaa aaa cyR Qmp -QlC +cyI QmS Qne Qnm @@ -76269,9 +76304,9 @@ aaa aaa aaa aaa -aag -aaa +Qxg aaa +aoV aaa aaa aaa @@ -76526,9 +76561,9 @@ aaa aaa aaa aaa -aag -aaa +Qxh aaa +aoV aaa aaa aaa @@ -76783,9 +76818,9 @@ aaa aaa aaa aaa -aag -aaa +Qxi aaa +aoV aaa aaa aaa @@ -77040,9 +77075,9 @@ aaa aaa aaa aaa -aag -aaa +Qxj aaa +aoV aaa aaa aaa @@ -77297,9 +77332,9 @@ aaa aaa aaa aaa -aag -aaa +Qxk aaa +aoV aaa aaa aaa @@ -77554,9 +77589,9 @@ aaa aaa aaa aaa -aag -aaa +Qxl aaa +aoV aaa aaa aaa @@ -78840,7 +78875,7 @@ aaa aaa aaa aag -Qoi +Qxn aoV aaa aaf @@ -79097,9 +79132,9 @@ aaf aaf aaf aag -Qoi -aaf -Qoi +Qxo +Qxq +Qxu bVx caf aoV @@ -79613,7 +79648,7 @@ bCq bJP bCq bTs -Qtn +Qxv bCq cbj bLv @@ -79869,8 +79904,8 @@ aaa bCq bHE bCq -Qtk -Qto +Qxr +Qxw bCq cbk bLv @@ -80127,7 +80162,7 @@ bLv bPR bRc bSo -Qtp +Qxx bCq bVy bLv @@ -80329,14 +80364,14 @@ aaf avY axo ayB -Qrv -QrC -QrL -QrQ -QrT -QrX -Qsb -Qsh +Qvi +Qvp +Qvy +QvD +QvH +QvO +QvT +Qwb aKu aLF aLF @@ -80586,14 +80621,14 @@ aoV avY axo ayB -Qrw -QrD -QrM -QrR -QrU -QrY -Qsc -Qsi +Qvj +Qvq +Qvz +QvE +QvI +QvP +QvU +Qwc aKt aLE bDe @@ -80843,14 +80878,14 @@ aaf avY axo ayB -Qrx -QrE +Qvk +Qvr aBT aDs aEN aGb -Qsd -Qsj +QvV +Qwd aKu aLE aLE @@ -80897,7 +80932,7 @@ aaa bCq bPV bCq -Qtl +Qxs bTw bCq bVD @@ -81099,18 +81134,18 @@ aqQ aqQ avZ axo -ayC +ayB azH -QrF -aBS -aDr -aDr -aDr -aDr -aDr -aDr -aLE -aLE +Qvs +ayB +ayB +QvJ +QvQ +aHF +aJd +aKv +Qwl +Qwn aOl aPF aQZ @@ -81153,7 +81188,7 @@ aoV aoV bCq bPW -Qtj +Qxp bSp bTv bCq @@ -81354,19 +81389,19 @@ aqR aGh aqR aqR -Qrt +Qvg axq ayA -Qry -QrG -QrN +Qvl +Qvt +QvA alu -apS -apS -apS -apS +QvK +aGd +QvW +aJe aKw -aLP +aLE aMR aNU aPJ @@ -81409,7 +81444,7 @@ bGi aoV aoV bCq -Qti +Qxm bCq bCq bTu @@ -81615,14 +81650,14 @@ avZ axp ayD azI -QrH +Qvu aBU -aDt -aDt -aDt -aDt -aDt -aDt +aBU +QvL +aGc +QvX +Qwe +aKb aLE aMQ aNT @@ -81668,7 +81703,7 @@ aoV bCq bHE bPU -Qtm +Qxt bTx bCq bVE @@ -81870,16 +81905,16 @@ aaa aag avY axo -ayB -Qrz -QrI +ayD +Qvm +Qvv aBW aDv aEP aGe -Qse -Qsk -Qsn +QvY +Qwf +aKu aLE aMS aOt @@ -81926,14 +81961,14 @@ bCq bPY cOw bCq -Qtq -Qtx -QtF -QtP -Qua -Qul -Quw -QuG +Qxy +QxF +QxN +QxX +Qyi +Qyt +QyE +QyO cjn cjn cjn @@ -82127,16 +82162,16 @@ aaa aag avY axo -ayB -QrA -QrJ -QrO -QrS -QrV -QrZ -Qsf -Qsl -Qso +ayD +Qvn +Qvw +QvB +QvF +QvM +QvR +QvZ +Qwg +Qwj aLE aMS aOi @@ -82183,19 +82218,19 @@ bCq bPX bRg bRg -Qtr -Qty +Qxz +QxG bVG -QtQ -Qub -Qum -Qux -QuH +QxY +Qyj +Qyu +QyF +QyP bcU -QuU +Qzc bVG bcU -Qvq +Qzy cjn bUs bLv @@ -82211,16 +82246,16 @@ aaa aaa aaf aaf -QvD +QzL aaa -QvM +QzU bij bij bij bij bij bij -Qwk +QAs btG btG aaa @@ -82384,16 +82419,16 @@ aaa aag avY axo -ayB -QrB -QrK -QrP -aDt -QrW -Qsa -Qsg -Qsm -aKx +ayD +Qvo +Qvx +QvC +QvG +QvN +QvS +Qwa +Qwh +aKu aLE aMS aOi @@ -82440,19 +82475,19 @@ bLv bQa bHE bHE -Qts -Qtz -QtG -QtR -Quc -Qun -Quy -QuI -QuO -QuV -Qvb -Qvk -Qvr +QxA +QxH +QxO +QxZ +Qyk +Qyv +QyG +QyQ +QyW +Qzd +Qzj +Qzs +Qzz cjn bUs bLv @@ -82465,19 +82500,19 @@ cjJ cjJ cjJ cjJ -Qvx +QzF bij bij crn bij -QvN -QvS -QvV -Qwa +QzV +QAa +QAd +QAi bkI bgN bgN -Qwl +QAt bgN btG Qoi @@ -82697,17 +82732,17 @@ bLv bPZ bHE bHE -Qtt -QtA -QtH -QtS -Qud -Quo -Quz -QuJ -QuP -QuW -Qvc +QxB +QxI +QxP +Qya +Qyl +Qyw +QyH +QyR +QyX +Qze +Qzk cCa bcU cjn @@ -82724,17 +82759,17 @@ cov cpj cpS btG -QvA -QvE +QzI +QzM btG -QvO +QzW bsc -QvW -Qwb +QAe +QAj bgN -Qwf -Qwi -Qwm +QAn +QAq +QAu bgN btG aaa @@ -82954,19 +82989,19 @@ bLv bHE bHE bSs -Qtu -QtB -QtI -QtT -Que -Qup +QxC +QxJ +QxQ +Qyb +Qym +Qyx bcU -QuK -QuQ +QyS +QyY cCa -Qvd -Qvl -Qvs +Qzl +Qzt +QzA cjn bUs bLv @@ -82982,16 +83017,16 @@ cpl cpU btF bsc -QvF +QzN btF bsc -QvT -QvX -Qwc +QAb +QAf +QAk bgN -Qwg +QAo bgN -Qwn +QAv bgN btG Qoi @@ -83194,7 +83229,7 @@ bkM bbR bud QoO -Qtg +kSb bAZ bGm bzF @@ -83211,19 +83246,19 @@ bCq bHE bRh bLu -Qtv -QtC -QtJ -QtU -Quf -Quq -QuA -QuL +QxD +QxK +QxR +Qyc +Qyn +Qyy +QyI +QyT bcU -QuX -Qve -Qvm -Qvt +Qzf +Qzm +Qzu +QzB cjn bUs bLv @@ -83238,17 +83273,17 @@ cow cpk cpT btG -QvB -QvG +QzJ +QzO btG -QvP +QzX bsc -QvY -Qwd +QAg +QAl bgN -Qwh -Qwj -Qwo +QAp +QAr +QAw bgN btG aaa @@ -83448,7 +83483,7 @@ boS bfm bNK bkN -bfm +bml bwe bwe bwd @@ -83468,18 +83503,18 @@ bCq bOK bCq bCq -Qtw -QtD -QtK -QtV -Qug -Qur -QuB +QxE +QxL +QxS +Qyd +Qyo +Qyz +QyJ cjn bcU cCa -Qvf -Qvn +Qzn +Qzv cCa cjn bUs @@ -83493,19 +83528,19 @@ cnq cnP coz cpn -Qvy -Qvz -QvC -QvH -QvL -QvQ -QvU -QvZ -Qwe +QzG +QzH +QzK +QzP +QzT +QzY +QAc +QAh +QAm bmw bgN bgN -Qwp +QAx bgN btG aaa @@ -83645,10 +83680,10 @@ abc aea aeH aft -QpT -QpU -QpW -Qqc +QtG +QtH +QtJ +QtP abc Qoi Qoi @@ -83726,18 +83761,18 @@ bHE bLv aaa bLv -QtE -QtL -QtW -Quh -Qus -QuC +QxM +QxT +Qye +Qyp +QyA +QyK bcU bcU bcU -Qvg +Qzo cCa -Qvu +QzC cjn bUs bLv @@ -83753,16 +83788,16 @@ cpm cjJ aaf aaf -QvI +QzQ aaa -QvR +QzZ bgO bgO bgO bgO bgO bgO -Qwq +QAy btG btG Qoi @@ -83904,8 +83939,8 @@ aeJ afw abc abc -QpX -Qqd +QtK +QtQ abc aaf aaf @@ -83984,15 +84019,15 @@ bLv aaf bLv bUt -QtM -QtX -Qui -Qut -QuD +QxU +Qyf +Qyq +QyB +QyL bcU -QuR -QuY -Qvh +QyZ +Qzg +Qzp bcU bcU cjn @@ -84010,7 +84045,7 @@ cjJ cjJ aaa aaa -QvJ +QzR aaf aaa aaa @@ -84161,8 +84196,8 @@ aeI afv agf abc -QpY -Qqe +QtL +QtR abc aiT aiT @@ -84241,17 +84276,17 @@ bCq aaa bLv bUt -QtN -QtY -Quj -Quu -QuE -QuM -QuS -QuZ -Qvi -Qvo -Qvv +QxV +Qyg +Qyr +QyC +QyM +QyU +Qza +Qzh +Qzq +Qzw +QzD cjn bUs bCq @@ -84267,7 +84302,7 @@ cpo cjJ aaa aaa -QvK +QzS aaf Qoi aaa @@ -84418,9 +84453,9 @@ aeL afy agh abc -QpZ -Qqf -Qqi +QtM +QtS +QtV aiV ajs akb @@ -84498,17 +84533,17 @@ aaa aaa bTB bUv -QtO -QtZ -Quk -Quv -QuF -QuN -QuT -Qva -Qvj -Qvp -Qvw +QxW +Qyh +Qys +QyD +QyN +QyV +Qzb +Qzi +Qzr +Qzx +QzE car bUs bCq @@ -84675,9 +84710,9 @@ aeK afx agg abc -Qqa -Qqg -Qqj +QtN +QtT +QtW aiV ajr aka @@ -84932,9 +84967,9 @@ aeN afA afA afA -Qqb -Qqh -Qqk +QtO +QtU +QtX aiV aju akd @@ -86996,7 +87031,7 @@ auj akl akO alx -QqH +Quu amg aiX anw @@ -87508,9 +87543,9 @@ aiF agj ajD akm -QqC +Qup aly -QqI +Quv amQ aiX anw @@ -87805,7 +87840,7 @@ aZP bbh bcc bdd -Qsr +Qwo bfr bbX bif @@ -88021,7 +88056,7 @@ agP agP aiz ajg -Qqx +Quk akQ agj agj @@ -88064,7 +88099,7 @@ bbk bbk bbk bfs -Qss +Qwp aZM aZM aaf @@ -88259,7 +88294,7 @@ aaa aaa aaf aaf -QoY +Qql aaf aai abi @@ -88281,7 +88316,7 @@ ajb ajF akN alw -QqJ +Quw amQ aiX anw @@ -88321,15 +88356,15 @@ bce bdf beb aYv -Qst -QsD +Qwq +QwA aaf aaf Qoi aaa Qoi aaa -QsQ +QwN bsb bsb bsb @@ -88532,16 +88567,16 @@ agn agR agn agR -Qql +QtY agn -Qqq +Qud akv -QqD -QqF +Quq +Qus aww amk aiX -QqY +QuL aov aph aqb @@ -88578,20 +88613,20 @@ aZR bbm bec bfu -Qsu +Qwr aBb aBb bmu aBb aBb -QsM +QwJ aaa bsb -QsS -QsZ -Qtc +QwP +QwW +QwZ bsb -aXf +Qxd aJq bBi bCs @@ -88773,26 +88808,26 @@ aaa aaa aaa aaf -QoZ +Qqm aaf aaZ -Qpk -Qpv -QpE +Qrk +QrI +Qse aaZ cpg acv adi -QpR +QtE aaZ aeW -QpV +QtI ahv ahQ -Qqm +QtZ aiI ajI -Qqy +Qul akQ agj agj @@ -88835,22 +88870,22 @@ aZR aZR aZR bft -Qsv +Qws aBa -QsF +QwC bmv -QsI +QwF bnT bpg aaa bsb -QsT +QwQ buP bwm bxH byS aJq -Qth +Qxf bCs bCs bCs @@ -89030,29 +89065,29 @@ aaa aaa aaa aaf -Qpa +Qqn aaf aaZ -Qpl -Qpw -QpF +Qrl +QrJ +Qsf aaZ acl cxA acL -QpS +QtF aaZ agp agT ahx ahS aiK -Qqp -Qqr +Quc +Que akm akT aly -QqK +Qux amQ aiX anw @@ -89092,7 +89127,7 @@ bbm bdh bee bfv -Qsw +Qwt aBa big aEM @@ -89101,7 +89136,7 @@ aGa bph bqF bsd -QsU +QwR buQ bwn bxI @@ -89287,14 +89322,14 @@ aaa aaa aaa aaf -Qpb +Qqo aaf aaZ -Qpm -Qpx -QpG +Qrm +QrK +Qsg aaZ -QpM +QsM adk adK cqG @@ -89314,14 +89349,14 @@ amp aiX anS aoy -Qrj -Qrm -Qro -Qrp -Qrq -Qrr -Qrs -Qru +QuW +QuZ +Qvb +Qvc +Qvd +Qve +Qvf +Qvh axB anz anz @@ -89349,19 +89384,19 @@ bcf bdg bed bfv -Qsx +Qwu aBa aBV bkZ -QsJ +QwG bnU aHG bqE -QsR -QsV -Qta -Qtd -Qtf +QwO +QwS +QwX +Qxa +Qxc bvW bAf bBp @@ -89544,14 +89579,14 @@ aaa aaa aaa aaf -Qpc +Qqp aaf aaZ -Qpn -Qpy -QpH +Qrn +QrL +Qsh aaZ -QpN +QsN acM adQ cwM @@ -89560,16 +89595,16 @@ agr agU ahy ahX -Qqn +Qua aiN -Qqs +Quf akq akQ agj agj agj aiX -QqZ +QuM aoz apm aqd @@ -89606,16 +89641,16 @@ bbm bdh bef bfv -Qsy +Qwv aBa -QsG +QwD aEO -QsK +QwH bnV -QsN -QsP +QwK +QwM bsf -QsW +QwT buS bwp bxK @@ -89801,14 +89836,14 @@ aaa aaa aaa aaf -Qpd +Qqq aaf aaZ -Qpo -Qpz -QpI +Qro +QrM +Qsi aaZ -QpO +QsO coS aet cxA @@ -89819,15 +89854,15 @@ ahz aie agt aiM -Qqt +Qug akp akU alz aml amT aiX -Qra -Qrg +QuN +QuT apl aqc aqc @@ -89863,16 +89898,16 @@ aZR aZR aZR bfw -Qsz +Qww aBa -QsH +QwE bjy -QsL +QwI bnW bpi aaa bsb -QsX +QwU buR bwo bxJ @@ -90058,14 +90093,14 @@ aaa aaa aaa aaf -Qpe +Qqr aaf aaZ -Qpp -QpA -QpJ +Qrp +QrN +Qsj abQ -QpP +QsP adj arc blT @@ -90074,17 +90109,17 @@ cml agV cxk aig -Qqo +Qub agn -Qqu -Qqz +Quh +Qum akV alB amn amV -QqT +QuG anB -Qrh +QuU aod aqf ahT @@ -90120,20 +90155,20 @@ aZR bbm beh bfx -QsA +Qwx aBc aBc bgR aBc aBc -QsO +QwL aaa bsb -QsY -Qtb -Qte +QwV +QwY +Qxb bsb -aJq +Qxe aJq bBu bCv @@ -90315,14 +90350,14 @@ aaa aaa aaa aaf -Qpf +Qqs aaf aaZ -Qpq +Qrq ack -QpK +Qsk abN -QpQ +QsQ acF acF aes @@ -90333,13 +90368,13 @@ ahB aHp agn agn -Qqv -QqA +Qui +Qun amS alA -QqL +Quy amm -QqU +QuH anT anT aod @@ -90377,8 +90412,8 @@ bcg aZU beg aYB -QsB -QsE +Qwy +QwB aaf aaf Qoi @@ -90572,12 +90607,12 @@ aaa aaa aaa aaf -Qpg +Qqt aaf aaZ -Qpr -QpB -QpL +Qrr +QrO +Qsl aci acm cpA @@ -90594,7 +90629,7 @@ ajJ akr akX alC -QqM +Quz amX amX amX @@ -90634,7 +90669,7 @@ bbp bbp bbp bfz -QsC +Qwz aZV aZV aaf @@ -90833,7 +90868,7 @@ aaZ aaZ aaZ aaZ -QpC +QrP avB aaZ aaZ @@ -90850,14 +90885,14 @@ ajd ajb ahY akX -QqG +Qut amo amX amX -Qrb -Qri -Qrk -Qrn +QuO +QuV +QuX +Qva arf apY ate @@ -91087,9 +91122,9 @@ aaa aaa aaa abp -Qph -Qpi -Qps +QqH +QqV +Qrs abO abO acO @@ -91104,14 +91139,14 @@ ahA ahZ adR aiQ -Qqw +Quj akt -QqE +Qur anw -QqN -QqP +QuA +QuC anB -Qrc +QuP aoD aod aqe @@ -91365,10 +91400,10 @@ ajK aks akY anA -QqO -QqQ +QuB +QuD amo -Qrd +QuQ aoC aod aqe @@ -91603,8 +91638,8 @@ aaa abp abO abO -Qpt -QpD +Qrt +QrQ acq acq acq @@ -91619,13 +91654,13 @@ aia aiP aiR ajB -QqB +Quo aiX akz alf -QqR -QqV -Qre +QuE +QuI +QuR aoF apo aqh @@ -91880,11 +91915,11 @@ aku aiX alE amq -QqS -QqW -Qrf +QuF +QuJ +QuS aoE -Qrl +QuY aqg aun asf @@ -92116,8 +92151,8 @@ aaa aaa abp aco -Qpj -Qpu +QqW +Qru abR abP abP @@ -96786,7 +96821,7 @@ aGJ aIe aJC aJC -Qsp +Qwm aJC aJC aJC @@ -97812,8 +97847,8 @@ aaa alP aGL aIe -aJC -aKS +Qwi +aKR aKR aMC aJC @@ -98070,8 +98105,8 @@ alP aGL aIg aJH +Qwk aKR -Qsq aMB aJC aRA @@ -98105,8 +98140,8 @@ bAu bvj bCN bEa +QoY bFA -QoQ bIm bJD bKK @@ -106787,7 +106822,7 @@ aaf aaf aaf alP -QqX +QuK alP anf alP @@ -107134,7 +107169,7 @@ cls cmr cNW cOe -cPa +cmo cNW aaf aaf @@ -109178,7 +109213,7 @@ bPN bWr cbZ bQZ -cPa +cmo cNW cOx cNW @@ -110204,7 +110239,7 @@ bUp bUp bPN cOx -cPa +cmo cNW cOx cOx @@ -110613,21 +110648,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +QoZ +Qpl +Qpy +QpL +QpY +Qqu +QqI +QqX +Qrv +QrR +Qsm +Qsz +QsR +Qte +Qtr aaa aaa aaa @@ -110870,21 +110905,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpa +Qpm +Qpz +QpM +QpZ +Qqv +QqJ +QqY +Qrw +QrS +Qsn +QsA +QsS +Qtf +Qts aaa aaa aaa @@ -111127,21 +111162,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpb +Qpn +QpA +QpN +Qqa +Qqw +QqK +QqZ +Qrx +QrT +Qso +QsB +QsT +Qtg +Qtt aaa aaa aaa @@ -111385,20 +111420,20 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpo +QpB +QpO +Qqb +Qqx +QqL +Qra +Qry +QrU +Qsp +QsC +QsU +Qth +Qtu aaa aaa aaa @@ -111641,21 +111676,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpc +Qpp +QpC +QpP +Qqc +Qqy +QqM +Qrb +Qrz +QrV +Qsq +QsD +QsV +Qti +Qtv aaa aaa aaa @@ -111898,21 +111933,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpd +Qpq +QpD +QpQ +Qqd +Qqz +QqN +Qrc +QrA +QrW +Qsr +QsE +QsW +Qtj +Qtw aaa aaa aaa @@ -112155,21 +112190,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpe +Qpr +QpE +QpR +Qqe +QqA +QqO +Qrd +QrB +QrX +Qss +QsF +QsX +Qtk +Qtx aaa aaa aaa @@ -112412,21 +112447,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpf +Qps +QpF +QpS +Qqf +QqB +QqP +Qre +QrC +QrY +Qst +QsG +QsY +Qtl +Qty aaa aaa aaa @@ -112669,21 +112704,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpg +Qpt +QpG +QpT +Qqg +QqC +QqQ +Qrf +QrD +QrZ +Qsu +QsH +QsZ +Qtm +Qtz aaa aaa aaa @@ -112926,21 +112961,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qph +Qpu +QpH +QpU +Qqh +QqD +QqR +Qrg +QrE +Qsa +Qsv +QsI +Qta +Qtn +QtA aaa aaa aaa @@ -113183,21 +113218,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpi +Qpv +QpI +QpV +Qqi +QqE +QqS +Qrh +QrF +Qsb +Qsw +QsJ +Qtb +Qto +QtB aaa aaa aaa @@ -113440,21 +113475,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpj +Qpw +QpJ +QpW +Qqj +QqF +QqT +Qri +QrG +Qsc +Qsx +QsK +Qtc +Qtp +QtC aaa aaa aaa @@ -113697,21 +113732,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +Qpk +Qpx +QpK +QpX +Qqk +QqG +QqU +Qrj +QrH +Qsd +Qsy +QsL +Qtd +Qtq +QtD aaa aaa aaa diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index fe77452705..fce969b119 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -398,7 +398,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_maintenance{ +/obj/machinery/door/airlock/maintenance/glass{ name = "Maintenance" }, /turf/open/floor/plasteel, @@ -449,7 +449,7 @@ }, /area/shuttle/abandoned) "abb" = ( -/obj/machinery/door/airlock/glass_maintenance{ +/obj/machinery/door/airlock/maintenance/glass{ name = "Maintenance" }, /turf/open/floor/plasteel, @@ -2198,7 +2198,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Infirmary"; req_access_txt = "0" @@ -2863,7 +2863,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Storage" }, /turf/open/floor/plasteel/neutral/side{ @@ -3322,14 +3322,14 @@ /area/construction/mining/aux_base) "agO" = ( /obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; id = "syndicate_ne"; name = "northeast of station"; turf_type = /turf/open/space; - width = 18 + width = 23 }, /turf/open/space, /area/space/nearstation) @@ -3654,7 +3654,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; welded = 1 }, @@ -4243,7 +4243,7 @@ /turf/open/floor/plasteel/redyellow, /area/maintenance/starboard/fore) "aiI" = ( -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "aiJ" = ( /obj/effect/spawner/structure/window/reinforced, @@ -4389,28 +4389,28 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "aja" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajb" = ( /obj/effect/landmark/blobstart, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajd" = ( /obj/machinery/door/firedoor, @@ -4492,7 +4492,7 @@ "ajl" = ( /obj/structure/table_frame/wood, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajm" = ( /obj/item/chair/stool/bar{ @@ -4500,26 +4500,26 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajn" = ( /obj/structure/chair/stool/bar, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajo" = ( /obj/machinery/light/small, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajp" = ( /obj/structure/chair/stool/bar, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajq" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/bar, /area/maintenance/starboard/fore) "ajr" = ( /obj/structure/grille, @@ -5703,7 +5703,7 @@ /area/security/checkpoint/customs) "amm" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Customs Desk"; req_access_txt = "19" @@ -5763,7 +5763,7 @@ /area/hallway/secondary/entry) "amu" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Checkpoint"; req_access_txt = "63" }, @@ -12507,7 +12507,7 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "aAW" = ( -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "0"; @@ -16396,7 +16396,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Power Monitoring"; req_access_txt = "0"; req_one_access_txt = "24;10" @@ -19939,6 +19939,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/xmastree, /turf/open/floor/carpet, /area/crew_quarters/bar/atrium) "aQo" = ( @@ -20852,7 +20853,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Delivery Office"; req_access_txt = 0; req_one_access_txt = "48;50" @@ -20904,7 +20905,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "cardoor"; name = "Cargo Cell"; req_access_txt = "63" @@ -23278,7 +23279,7 @@ /area/engine/atmos) "aWI" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Storage"; req_access_txt = "0"; req_one_access_txt = "24;10" @@ -23774,7 +23775,7 @@ /turf/open/floor/plating, /area/security/prison) "aXK" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Sanitarium"; req_access_txt = "63" }, @@ -23797,7 +23798,7 @@ /turf/closed/wall, /area/security/prison) "aXN" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 3"; req_access_txt = "2" }, @@ -23809,7 +23810,7 @@ /turf/closed/wall, /area/security/prison) "aXP" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 2"; req_access_txt = "2" }, @@ -23819,7 +23820,7 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "aXQ" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 1"; req_access_txt = "2" }, @@ -24797,7 +24798,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -25316,7 +25317,7 @@ /area/quartermaster/miningoffice) "baT" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Office"; req_access_txt = "48" }, @@ -26056,7 +26057,7 @@ /area/quartermaster/office) "bcq" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Office"; req_access_txt = "0"; req_one_access_txt = "48;50" @@ -26223,7 +26224,7 @@ /area/security/prison) "bcL" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -26246,7 +26247,7 @@ /area/security/prison) "bcN" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -27606,7 +27607,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Storage Closet"; req_access_txt = "63" }, @@ -27712,7 +27713,7 @@ /area/engine/atmos) "bga" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Storage"; req_access_txt = "0"; req_one_access_txt = "24;10" @@ -28187,7 +28188,7 @@ /area/security/brig) "bha" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -28217,7 +28218,7 @@ /area/security/brig) "bhc" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -28679,7 +28680,7 @@ "bie" = ( /obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Office"; req_access_txt = "48" }, @@ -29377,7 +29378,7 @@ /area/hydroponics) "bjw" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Hydroponics"; req_access_txt = "35" }, @@ -29859,7 +29860,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Infirmary" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -31731,7 +31732,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Distribution Loop"; req_access_txt = "24" }, @@ -33268,7 +33269,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -33371,7 +33372,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -34289,7 +34290,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Transferring Control"; req_access_txt = "63" }, @@ -34354,7 +34355,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -34463,7 +34464,7 @@ /area/security/main) "btw" = ( /obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -34714,7 +34715,7 @@ /area/engine/atmos) "btZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Desk"; req_access_txt = "24" }, @@ -35149,7 +35150,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -35781,7 +35782,7 @@ pixel_x = 32 }, /obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -36382,7 +36383,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Transferring Control"; req_access_txt = "63" }, @@ -39214,7 +39215,7 @@ /area/engine/break_room) "bCL" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Power Tools Storage"; req_access_txt = "19" @@ -39252,7 +39253,7 @@ /area/engine/break_room) "bCN" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Power Tools Storage"; req_access_txt = "19" @@ -39708,7 +39709,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 4; name = "Bridge Access"; req_access_txt = "19" @@ -39769,7 +39770,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 8; name = "Bridge Access"; req_access_txt = "19" @@ -39973,7 +39974,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 4; name = "Bridge Access"; req_access_txt = "19" @@ -40008,7 +40009,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 8; name = "Bridge Access"; req_access_txt = "19" @@ -40333,7 +40334,7 @@ /area/engine/gravity_generator) "bEp" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Gravity Generator Chamber"; req_access_txt = "19; 61" }, @@ -40825,7 +40826,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 4; name = "Bridge Access"; req_access_txt = "19" @@ -40867,7 +40868,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 8; name = "Bridge Access"; req_access_txt = "19" @@ -41055,7 +41056,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 8; name = "Bridge Access"; req_access_txt = "19" @@ -41112,7 +41113,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "gulagdoor"; name = "Security Transferring Center"; req_access_txt = "63" @@ -42085,7 +42086,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security E.V.A. Storage"; req_access_txt = "3" }, @@ -42576,7 +42577,7 @@ /area/storage/primary) "bIE" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Primary Tool Storage"; req_access_txt = "0" }, @@ -43492,7 +43493,7 @@ /area/storage/primary) "bKw" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Primary Tool Storage"; req_access_txt = "0" }, @@ -43912,7 +43913,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Warden's Office"; req_access_txt = "3" }, @@ -44303,7 +44304,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "engdoor"; name = "Engineering Cell"; req_access_txt = "63" @@ -44841,12 +44842,6 @@ }, /area/hallway/primary/starboard) "bNi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_x = 32 - }, /obj/machinery/light{ dir = 4 }, @@ -47293,7 +47288,7 @@ /area/storage/tech) "bSt" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Primary Tool Storage"; req_access_txt = "0" }, @@ -47308,7 +47303,7 @@ /area/storage/primary) "bSu" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Primary Tool Storage"; req_access_txt = "0" }, @@ -47565,7 +47560,7 @@ /area/storage/tools) "bSU" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Auxiliary Tool Storage"; req_access_txt = "12" }, @@ -48931,12 +48926,6 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/starboard) "bVj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_x = 32 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, @@ -50135,7 +50124,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 4; name = "Brig"; req_access_txt = "63" @@ -50197,7 +50186,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 8; name = "Brig"; req_access_txt = "63" @@ -51412,7 +51401,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Warden's Office"; req_access_txt = "3" }, @@ -52151,7 +52140,7 @@ /area/hallway/primary/starboard) "cbw" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 4; name = "Brig"; req_access_txt = "63" @@ -52193,7 +52182,7 @@ /area/security/brig) "cbz" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 8; name = "Brig"; req_access_txt = "63" @@ -53420,7 +53409,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Power Monitoring"; req_access_txt = "32" }, @@ -54105,7 +54094,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Gear Room"; req_access_txt = "63" }, @@ -54929,10 +54918,10 @@ dir = 4 }, /obj/structure/cable/white{ - icon_state = "1-4" + icon_state = "4-8" }, /obj/structure/cable/white{ - icon_state = "4-8" + icon_state = "1-4" }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -60752,7 +60741,7 @@ icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/glass_security/abandoned{ +/obj/machinery/door/airlock/security/glass/abandoned{ name = "Storage Closet"; req_access_txt = "63" }, @@ -65259,7 +65248,7 @@ /area/engine/engineering) "cCw" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Storage"; req_access_txt = "32" }, @@ -66486,7 +66475,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Gateway Chamber"; req_access_txt = "62" }, @@ -70916,6 +70905,15 @@ /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/effect/turf_decal/bot, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/requests_console{ + department = "Medbay Storage"; + name = "Medbay Storage RC"; + pixel_y = 28 + }, /turf/open/floor/plasteel, /area/medical/storage) "cNQ" = ( @@ -72877,7 +72875,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Xenobiology Kill Room"; req_access_txt = "47" }, @@ -73098,7 +73096,7 @@ /area/medical/medbay/central) "cSJ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -73253,6 +73251,12 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -73263,7 +73267,6 @@ /area/medical/storage) "cSV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/rnd/protolathe/department/medical, /turf/open/floor/plasteel/cmo, /area/medical/storage) "cSW" = ( @@ -73281,13 +73284,15 @@ pixel_x = -3; pixel_y = -3 }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, /obj/machinery/light{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel/neutral/side{ dir = 8; heat_capacity = 1e+006 @@ -74019,7 +74024,7 @@ /area/medical/medbay/central) "cUC" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -74128,6 +74133,12 @@ pixel_x = -3; pixel_y = -3 }, +/obj/machinery/door/window/eastleft{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access_txt = "5"; + req_one_access_txt = "0" + }, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -74153,11 +74164,10 @@ pixel_x = -3; pixel_y = -3 }, -/obj/machinery/requests_console{ - department = "Medbay Storage"; - departmentType = 0; - name = "Medbay Storage RC"; - pixel_x = 32 +/obj/machinery/door/window/westleft{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access_txt = "5" }, /turf/open/floor/plasteel/neutral/side{ dir = 8; @@ -74940,6 +74950,10 @@ /obj/machinery/status_display{ pixel_x = -32 }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -74979,6 +74993,10 @@ dir = 1; pixel_y = -24 }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel/neutral/side{ dir = 8; heat_capacity = 1e+006 @@ -75696,7 +75714,7 @@ /area/medical/medbay/central) "cXY" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage"; req_access_txt = "5" }, @@ -75716,7 +75734,7 @@ /area/medical/storage) "cXZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage"; req_access_txt = "5" }, @@ -78125,7 +78143,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay Desk"; req_access_txt = "5" }, @@ -79318,7 +79336,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "meddoor"; name = "Medical Cell"; req_access_txt = "63" @@ -81422,7 +81440,7 @@ /area/medical/chemistry) "dkm" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Chemistry Lab"; req_access_txt = "5; 33" }, @@ -83820,7 +83838,7 @@ /area/medical/genetics/cloning) "dps" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "cloningfoyer"; name = "Cloning Lab"; req_access_txt = "5" @@ -84689,7 +84707,7 @@ /area/medical/genetics/cloning) "drg" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "cloningfoyer"; name = "Cloning Lab"; req_access_txt = "5" @@ -87933,7 +87951,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Robotics Lab"; req_access_txt = "29" }, @@ -90663,7 +90681,7 @@ /area/science/research) "dDy" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Robotics Lab"; req_access_txt = "29" }, @@ -92468,7 +92486,7 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 6 }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Server Access"; req_access_txt = "30" }, @@ -95326,7 +95344,7 @@ /area/crew_quarters/theatre/abandoned) "dNb" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/machinery/vending/kink, /turf/open/floor/wood, /area/crew_quarters/theatre/abandoned) "dNc" = ( @@ -95334,7 +95352,7 @@ dir = 1; pixel_y = -22 }, -/obj/machinery/vending/kink, +/obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -95624,7 +95642,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Customs Desk"; req_access_txt = "19" @@ -99371,10 +99389,10 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/landmark/xmastree, /turf/open/floor/plasteel/grimy, /area/chapel/main) "dVT" = ( @@ -99501,7 +99519,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "dWk" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -99938,7 +99956,7 @@ /area/medical/virology) "dXh" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Virology Lab"; req_access_txt = "39" }, @@ -100015,7 +100033,7 @@ /area/medical/virology) "dXn" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Virology Containment Cell"; req_access_txt = "39" }, @@ -100773,7 +100791,7 @@ /area/medical/virology) "dYZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Virology Access"; req_access_txt = "39" }, @@ -100991,7 +101009,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "dZv" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -101401,7 +101419,7 @@ /area/medical/virology) "eaj" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Virology Containment Cell"; req_access_txt = "39" }, @@ -103292,7 +103310,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Checkpoint"; req_access_txt = "63" }, @@ -103359,7 +103377,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, @@ -103405,14 +103423,14 @@ /turf/open/floor/plating, /area/security/checkpoint/escape) "eel" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "eem" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Cockpit"; req_access_txt = "19" }, @@ -104040,7 +104058,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, @@ -105023,26 +105041,46 @@ /turf/open/floor/plasteel/dark, /area/library) "ehQ" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/lightsout, +/turf/open/floor/plasteel/grimy, +/area/chapel/main) +"ehR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/maintenance/starboard/fore) +"ehS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/maintenance/starboard/fore) +"ehT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/bar, +/area/maintenance/starboard/fore) +"ehU" = ( /obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/port/fore) -"ehR" = ( +"ehV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Desk"; req_access_txt = "63" }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/red/side{ dir = 8 }, /area/security/brig) -"ehS" = ( +"ehW" = ( /obj/machinery/vending/kink, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) @@ -128577,7 +128615,7 @@ cqr ctp cuQ cjd -cxC +cje cje cAK cCr @@ -129381,7 +129419,7 @@ dry dta duk dvY -ehS +ehW dmi dfY aad @@ -135452,7 +135490,7 @@ alf avr awp axK -ehQ +ehU aAb aBk aCv @@ -139941,7 +139979,7 @@ dKD dUp dVd dVS -dVd +ehQ dVd dVd dVd @@ -148283,7 +148321,7 @@ ahw ahH abi aim -aiH +ehR aiZ ajl aig @@ -149054,7 +149092,7 @@ afj ahH abi aip -aiH +ehS ajb ajo ajP @@ -149826,7 +149864,7 @@ ahH abi ais aiI -aiH +ehT ajq aig akt @@ -155036,7 +155074,7 @@ bZK cbw bgZ bNj -ehR +ehV ciC bgZ clx diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7fa276f5ed..c81ed8e449 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2,19 +2,6 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_n"; - name = "north of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "aac" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -311,21 +298,9 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) -"aaU" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/security/prison) "aaV" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/pod_2) -"aaX" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/security/prison) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1887,14 +1862,14 @@ /turf/closed/wall, /area/security/prison) "aem" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 3"; req_access_txt = "2" }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "aen" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 2"; req_access_txt = "2" }, @@ -1905,7 +1880,7 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "aeo" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 1"; req_access_txt = "2" }, @@ -1913,7 +1888,7 @@ /area/security/prison) "aep" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Sanitarium"; req_access_txt = "2" }, @@ -3189,7 +3164,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -3202,7 +3177,7 @@ "agM" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -3952,7 +3927,7 @@ /area/security/brig) "ait" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security E.V.A. Storage"; req_access_txt = "3" }, @@ -4345,7 +4320,7 @@ /area/security/brig) "ajn" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -4362,7 +4337,7 @@ "ajp" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -4648,7 +4623,9 @@ /area/engine/gravity_generator) "aka" = ( /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 1 + }, /area/engine/gravity_generator) "akb" = ( /obj/structure/sign/securearea{ @@ -4658,11 +4635,15 @@ pixel_y = 32 }, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/engine/gravity_generator) "akc" = ( /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 4 + }, /area/engine/gravity_generator) "akd" = ( /turf/open/space, @@ -5342,7 +5323,9 @@ /area/engine/gravity_generator) "alt" = ( /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/engine/gravity_generator) "alu" = ( /obj/machinery/light{ @@ -5649,7 +5632,7 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4" @@ -5683,7 +5666,7 @@ /area/security/warden) "ama" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Secure Gear Storage"; req_access_txt = "3" }, @@ -5838,7 +5821,7 @@ /area/security/main) "amp" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Firing Range"; req_access_txt = "0"; req_one_access_txt = "1;4" @@ -6020,19 +6003,25 @@ dir = 10 }, /obj/effect/turf_decal/bot_white/left, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 4 + }, /area/engine/gravity_generator) "amK" = ( /obj/machinery/gravity_generator/main/station, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, /area/engine/gravity_generator) "amL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, /obj/effect/turf_decal/bot_white/right, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/vault{ + dir = 1 + }, /area/engine/gravity_generator) "amM" = ( /obj/machinery/camera{ @@ -6172,7 +6161,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "anc" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "N2O Storage"; req_access_txt = "3" }, @@ -6809,7 +6798,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Secure Gear Storage"; req_access_txt = "3" }, @@ -7191,7 +7180,7 @@ /turf/open/floor/plating, /area/engine/gravity_generator) "apj" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Gravity Generator Area"; req_access_txt = "19; 61" }, @@ -9439,7 +9428,7 @@ /area/security/warden) "atR" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig Control"; req_access_txt = "3" }, @@ -9454,7 +9443,7 @@ /area/security/warden) "atS" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Gear Room"; req_access_txt = "0"; req_one_access_txt = "1;4" @@ -9471,7 +9460,7 @@ /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4" @@ -9480,7 +9469,7 @@ /area/security/main) "atV" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "0"; req_one_access_txt = "1;4" @@ -10514,7 +10503,7 @@ /area/security/brig) "avZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Labor Camp Shuttle Airlock"; req_access_txt = "2" }, @@ -11723,7 +11712,7 @@ "ayB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -11740,7 +11729,7 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -11923,7 +11912,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine"; req_access_txt = "10" }, @@ -12721,7 +12710,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "aAD" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Dock"; req_access_txt = "48" }, @@ -13548,7 +13537,7 @@ /area/shuttle/labor) "aCj" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Labor Camp Shuttle Airlock"; req_access_txt = "0" }, @@ -13594,7 +13583,7 @@ "aCn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -13628,7 +13617,7 @@ id = "secentranceflasher"; pixel_x = 25 }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -13928,7 +13917,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine"; req_access_txt = "10" }, @@ -14540,7 +14529,7 @@ /area/engine/engineering) "aEm" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Storage"; req_access_txt = "32" }, @@ -15195,7 +15184,7 @@ /area/engine/engineering) "aFz" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine"; req_access_txt = "10" }, @@ -16098,10 +16087,8 @@ /area/quartermaster/storage) "aHj" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ - glass = 0; +/obj/machinery/door/airlock/mining{ name = "Cargo Bay"; - opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50" }, @@ -16138,10 +16125,8 @@ /area/construction/storage/wing) "aHm" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ - glass = 0; +/obj/machinery/door/airlock/mining{ name = "Cargo Bay"; - opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50" }, @@ -16642,10 +16627,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/airlock/glass_mining{ - glass = 0; +/obj/machinery/door/airlock/mining{ name = "Cargo Bay"; - opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50" }, @@ -18281,7 +18264,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Supermatter Engine"; req_access_txt = "10" }, @@ -18309,7 +18292,7 @@ /turf/open/floor/engine, /area/engine/engineering) "aMj" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ heat_proof = 1; name = "Supermatter Chamber"; req_access_txt = "10" @@ -19626,7 +19609,7 @@ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Quartermaster"; req_access_txt = "41" }, @@ -21159,7 +21142,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Power Monitoring"; req_access_txt = "32" }, @@ -22764,7 +22747,7 @@ icon_state = "4-8" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Post - Cargo"; req_access_txt = "63" }, @@ -25069,10 +25052,8 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ - glass = 0; +/obj/machinery/door/airlock/mining{ name = "Cargo Bay"; - opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50" }, @@ -25085,10 +25066,8 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ - glass = 0; +/obj/machinery/door/airlock/mining{ name = "Cargo Bay"; - opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50" }, @@ -27804,7 +27783,7 @@ /area/security/checkpoint/engineering) "bfW" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Engineering Security Post"; req_access_txt = "63" }, @@ -28187,7 +28166,7 @@ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mailroom"; req_access_txt = "0"; req_one_access_txt = "48;50" @@ -28261,7 +28240,7 @@ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Office"; req_access_txt = "0"; req_one_access_txt = "48;50" @@ -31327,7 +31306,7 @@ /area/hallway/primary/starboard) "bmY" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Foyer"; req_access_txt = "0"; req_one_access_txt = "32;19" @@ -34375,7 +34354,7 @@ /area/crew_quarters/heads/hop) "bsS" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; req_access_txt = "19" }, @@ -34386,7 +34365,7 @@ "bsT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; req_access_txt = "19" }, @@ -34462,7 +34441,7 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; req_access_txt = "19" }, @@ -34473,7 +34452,7 @@ "btb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; req_access_txt = "19" }, @@ -38521,7 +38500,7 @@ name = "bridge blast door" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge Access"; req_access_txt = "19" }, @@ -38534,7 +38513,7 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge Access"; req_access_txt = "19" }, @@ -38629,7 +38608,7 @@ name = "bridge blast door" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge Access"; req_access_txt = "19" }, @@ -39562,7 +39541,7 @@ }, /area/engine/atmos) "bDR" = ( -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Monitoring"; req_access_txt = "24" }, @@ -40642,7 +40621,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Distribution Loop"; req_access_txt = "24" }, @@ -42472,7 +42451,7 @@ }, /obj/effect/turf_decal/bot_white/right, /turf/open/floor/plasteel/vault{ - dir = 4 + dir = 1 }, /area/gateway) "bJZ" = ( @@ -42484,7 +42463,7 @@ }, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/vault{ - dir = 4 + dir = 8 }, /area/gateway) "bKa" = ( @@ -43194,14 +43173,12 @@ }, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/vault{ - dir = 4 + dir = 8 }, /area/gateway) "bLE" = ( /obj/machinery/gateway/centerstation, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/dark, /area/gateway) "bLF" = ( /obj/machinery/gateway{ @@ -43209,7 +43186,7 @@ }, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/vault{ - dir = 4 + dir = 8 }, /area/gateway) "bLG" = ( @@ -43785,12 +43762,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) -"bMQ" = ( -/obj/structure/easel, -/obj/item/canvas/twentythreeXtwentythree, -/obj/item/canvas/twentythreeXtwentythree, -/turf/open/floor/wood, -/area/library) "bMR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light{ @@ -44085,7 +44056,7 @@ }, /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/vault{ - dir = 4 + dir = 8 }, /area/gateway) "bNr" = ( @@ -44094,7 +44065,7 @@ }, /obj/effect/turf_decal/bot_white/right, /turf/open/floor/plasteel/vault{ - dir = 4 + dir = 1 }, /area/gateway) "bNs" = ( @@ -44700,26 +44671,20 @@ /turf/open/floor/plating, /area/gateway) "bOK" = ( -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/vault, /area/gateway) "bOL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/vault, /area/gateway) "bOM" = ( /obj/machinery/light{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, +/turf/open/floor/plasteel/vault, /area/gateway) "bON" = ( /obj/structure/sign/securearea{ @@ -46137,9 +46102,6 @@ /obj/item/reagent_containers/food/condiment/peppermill{ pixel_x = 3 }, -/obj/item/device/radio/intercom{ - pixel_y = -25 - }, /obj/item/kitchen/rollingpin, /obj/machinery/camera{ c_tag = "Kitchen"; @@ -46184,6 +46146,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/cafeteria{ dir = 5 }, @@ -46635,7 +46598,7 @@ id = "kitchenhydro"; name = "Service Shutter" }, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28" @@ -47304,44 +47267,35 @@ /turf/open/floor/plasteel, /area/hydroponics) "bUl" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hydroponics) +"bUm" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/chem_master/condimaster{ desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; name = "BrewMaster 2199"; pixel_x = -4 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) -"bUm" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = 29 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel, /area/hydroponics) "bUn" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line, /obj/structure/reagent_dispensers/watertank/high, /obj/item/reagent_containers/glass/bucket, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hydroponics) "bUo" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/shovel/spade, -/obj/item/wrench, -/obj/item/reagent_containers/glass/bucket, -/obj/item/cultivator, -/obj/item/wirecutters, /obj/effect/turf_decal/stripes/line, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel, /area/hydroponics) "bUp" = ( @@ -50077,7 +50031,7 @@ /area/medical/storage) "cad" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Medbay Security Post"; req_access_txt = "63" }, @@ -50407,7 +50361,7 @@ /area/hallway/primary/central) "caJ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Hydroponics"; req_access_txt = "35" }, @@ -50762,39 +50716,6 @@ dir = 8 }, /area/engine/atmos) -"cbm" = ( -/obj/docking_port/mobile{ - callTime = 250; - dheight = 0; - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "NT Recovery White-Ship"; - port_direction = 8; - preferred_direction = 4; - roundstart_move = "whiteship_away"; - width = 27 - }, -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship_home"; - name = "SS13: Auxiliary Dock, Station-Port"; - width = 27 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cbn" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/components/binary/pump{ @@ -51013,6 +50934,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, @@ -51021,6 +50945,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/medical/storage) "cbL" = ( @@ -51028,12 +50955,18 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 2 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/medical/storage) "cbM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/medical/storage) "cbN" = ( @@ -51042,6 +50975,9 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, /turf/open/floor/plasteel/white, /area/medical/storage) "cbO" = ( @@ -51762,6 +51698,13 @@ dir = 8 }, /obj/structure/closet/l3closet, +/obj/machinery/power/apc{ + dir = 2; + name = "Medbay Storage APC"; + areastring = "/area/medical/storage"; + pixel_y = -24 + }, +/obj/structure/cable/yellow, /turf/open/floor/plasteel/whiteblue/side{ dir = 10 }, @@ -51795,6 +51738,15 @@ /obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health, /obj/item/gun/syringe, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 }, @@ -52274,6 +52226,11 @@ pixel_y = -3 }, /obj/structure/table/glass, +/obj/machinery/door/window/eastleft{ + name = "First-Aid Supplies"; + req_access_txt = "5"; + req_one_access_txt = "0" + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 8 }, @@ -52308,6 +52265,13 @@ pixel_y = -3 }, /obj/structure/table/glass, +/obj/machinery/door/window/westleft{ + name = "First-Aid Supplies"; + req_access_txt = "5" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 4 }, @@ -52949,28 +52913,20 @@ pixel_x = -3; pixel_y = -3 }, -/obj/machinery/power/apc{ - dir = 2; - name = "Medbay Storage APC"; - areastring = "/area/medical/storage"; - pixel_y = -24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, /obj/machinery/light_switch{ pixel_x = -26 }, /obj/machinery/light/small, /obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 10 }, /area/medical/storage) "cfM" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -52979,9 +52935,6 @@ }, /area/medical/storage) "cfN" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -53017,6 +52970,10 @@ pixel_y = -3 }, /obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 6 }, @@ -53523,7 +53480,7 @@ /area/medical/sleeper) "cgU" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; req_access_txt = "5" @@ -53541,7 +53498,7 @@ "cgW" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; req_access_txt = "5" @@ -53551,7 +53508,7 @@ "cgX" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Desk"; req_access_txt = "5" @@ -53569,7 +53526,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -53579,7 +53536,7 @@ "cha" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -53722,7 +53679,7 @@ /area/security/checkpoint/science/research) "chq" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Post - Research Division"; req_access_txt = "63" }, @@ -54231,7 +54188,7 @@ /area/medical/medbay/central) "civ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33" @@ -54589,7 +54546,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "cjm" = ( -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ heat_proof = 1; name = "Auxiliary Chamber"; req_access_txt = "24" @@ -56219,10 +56176,8 @@ "cmN" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_medical{ - glass = 0; +/obj/machinery/door/airlock/medical{ name = "Research Break Room"; - opacity = 1; req_access_txt = "0"; req_one_access_txt = "47" }, @@ -57900,7 +57855,7 @@ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Surgery Observation"; req_access_txt = "0" }, @@ -59654,13 +59609,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"ctp" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/turf/open/floor/plating, -/area/medical/surgery) "ctq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -61961,7 +61909,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "CloningDoor"; name = "Cloning Lab"; req_access_txt = "5; 68" @@ -61999,7 +61947,7 @@ /area/medical/genetics/cloning) "cyc" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Genetics Lab"; req_access_txt = "5; 9; 68" }, @@ -64048,7 +63996,7 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Robotics Lab"; req_access_txt = "29" }, @@ -65282,7 +65230,7 @@ /area/medical/virology) "cEG" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Test Subject Cell"; req_access_txt = "39" }, @@ -65594,12 +65542,10 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "cFo" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ autoclose = 0; frequency = 1449; - glass = 1; heat_proof = 1; - icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; @@ -65617,12 +65563,10 @@ /turf/open/floor/engine, /area/science/mixing) "cFq" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ autoclose = 0; frequency = 1449; - glass = 1; heat_proof = 1; - icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; @@ -66199,7 +66143,7 @@ icon_state = "4-8" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Containment Cells"; req_access_txt = "39" }, @@ -67266,7 +67210,7 @@ "cIq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Isolation B"; req_access_txt = "39" }, @@ -67281,7 +67225,7 @@ "cIr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Isolation A"; req_access_txt = "39" }, @@ -67573,7 +67517,7 @@ /area/science/server) "cIX" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Server Access"; req_access_txt = "30" }, @@ -68048,10 +67992,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/server) -"cJV" = ( -/obj/machinery/rnd/server, -/turf/open/floor/circuit/telecomms/server, -/area/science/server) "cJW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ dir = 1; @@ -70265,7 +70205,7 @@ /area/hallway/secondary/exit/departure_lounge) "cOv" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Departure Lounge Security Post"; req_access_txt = "63" }, @@ -72650,19 +72590,6 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, /area/science/xenobiology) -"cTX" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_ne"; - name = "northeast of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "cUH" = ( /obj/structure/table/optable, /turf/open/floor/plasteel/white, @@ -74975,7 +74902,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "cZp" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -75135,7 +75062,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "cZI" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig"; req_access_txt = "2" }, @@ -75186,7 +75113,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "cZQ" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Cockpit"; req_access_txt = "19" }, @@ -75776,45 +75703,6 @@ }, /turf/open/floor/circuit/killroom, /area/science/xenobiology) -"dbB" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_se"; - name = "southeast of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) -"dbC" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_sw"; - name = "southwest of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) -"dbD" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_s"; - name = "south of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "dbE" = ( /obj/machinery/plantgenes, /obj/effect/turf_decal/stripes/line{ @@ -77199,7 +77087,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Laser Room"; req_access_txt = "10" }, @@ -77346,10 +77234,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"deZ" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plating, -/area/engine/engineering) "dfa" = ( /obj/machinery/power/supermatter_shard/crystal/engine, /turf/open/floor/engine, @@ -78626,6 +78510,12 @@ /obj/structure/sign/poster/official/random{ pixel_x = 32 }, +/obj/structure/closet/crate/hydroponics, +/obj/item/shovel/spade, +/obj/item/wrench, +/obj/item/reagent_containers/glass/bucket, +/obj/item/cultivator, +/obj/item/wirecutters, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "dix" = ( @@ -79261,13 +79151,6 @@ /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/supermatter) -"dlS" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/engine, -/area/engine/supermatter) "dlV" = ( /turf/closed/wall/r_wall, /area/maintenance/department/science/xenobiology) @@ -79901,13 +79784,6 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) -"dBD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) "dBF" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -79928,7 +79804,7 @@ "dBH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Desk"; req_access_txt = "63" }, @@ -79979,13 +79855,6 @@ /mob/living/carbon/monkey, /turf/open/floor/plasteel/freezer, /area/medical/virology) -"dBR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/medical/virology) "dBS" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -80597,14 +80466,14 @@ /area/shuttle/abandoned) "EDa" = ( /obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; id = "syndicate_nw"; name = "northwest of station"; turf_type = /turf/open/space; - width = 18 + width = 23 }, /turf/open/space/basic, /area/space/nearstation) @@ -80612,30 +80481,6 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) -"EDc" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"EDd" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"EDe" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"EDf" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"EDg" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"EDh" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) "EDi" = ( /obj/docking_port/mobile{ callTime = 250; @@ -80697,72 +80542,21 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"EDn" = ( -/obj/machinery/porta_turret/aux_base{ - always_up = 1; - desc = "A turret built with substandard parts and run down further with age. Still capable of delivering lethal lasers to the odd space carp, but not much else."; - dir = 4; - has_cover = 0; - icon_state = "standard_lethal"; - lethal_projectile = /obj/item/projectile/beam/weak; - name = "turret" - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "EDo" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/atmos) -"EDp" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/atmos) -"EDq" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/atmos) -"EDr" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/atmos) -"EDs" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/atmos) -"EDt" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/atmos) -"EDu" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/atmos) -"EDv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/rnd/protolathe/department/engineering, -/turf/open/floor/plasteel, -/area/engine/engineering) "EDw" = ( /obj/machinery/rnd/protolathe/department/service, +/obj/machinery/door/firedoor, /turf/open/floor/plating, /area/hydroponics) "EDx" = ( /turf/closed/wall/mineral/plastitanium, /area/hallway/secondary/entry) -"EDy" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/hallway/secondary/entry) "EDz" = ( /turf/closed/wall/mineral/plastitanium, /area/security/prison) -"EDA" = ( -/turf/closed/wall/mineral/plastitanium, -/area/security/prison) "EDB" = ( /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) @@ -80805,6 +80599,10 @@ /obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/aft) +"Ljw" = ( +/obj/structure/sign/poster/official/random, +/turf/closed/wall, +/area/hydroponics) (1,1,1) = {" aaa @@ -105831,7 +105629,7 @@ ayx azE azE ajm -aDw +aDx aEK aGc aHx @@ -106859,7 +106657,7 @@ ayz dCj azE ajm -aDw +aDx dCo aGg aHx @@ -107887,7 +107685,7 @@ ayA azE azE ajm -aDw +aDx aEQ aGj aHz @@ -114869,7 +114667,7 @@ bNA bOU bQD bRS -EDw +Ljw bUi bVu bWO @@ -115897,7 +115695,7 @@ bNC bOW bQH bRV -bST +EDw bUl bVx bWS diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index bbf998aaba..0484f38648 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -111,6 +111,7 @@ /obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/clothing/glasses/meson, +/obj/item/device/mining_scanner, /turf/open/floor/plasteel, /area/mine/laborcamp) "av" = ( @@ -119,6 +120,7 @@ /obj/item/device/flashlight, /obj/item/pickaxe, /obj/item/clothing/glasses/meson, +/obj/item/device/mining_scanner, /turf/open/floor/plasteel, /area/mine/laborcamp) "aw" = ( @@ -144,7 +146,7 @@ /turf/open/floor/plasteel, /area/mine/laborcamp) "aB" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Infirmary"; req_access_txt = "0" @@ -286,7 +288,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) "aY" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 4; name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2" @@ -450,7 +452,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/mine/eva) "bx" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 4; name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0" @@ -470,7 +472,7 @@ /turf/open/floor/plasteel, /area/mine/laborcamp) "bA" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Labor Camp Backroom"; req_access_txt = "2" }, @@ -557,7 +559,7 @@ /turf/open/floor/plasteel/purple/corner, /area/mine/eva) "bL" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Labor Camp Monitoring"; req_access_txt = "2" }, @@ -617,7 +619,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Station EVA"; req_access_txt = "54" }, @@ -1371,7 +1373,7 @@ /turf/open/floor/plating, /area/mine/living_quarters) "dR" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Infirmary"; req_access_txt = "0" @@ -1511,7 +1513,7 @@ /turf/open/floor/plasteel/purple/corner, /area/mine/living_quarters) "el" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Processing Area"; req_access_txt = "48" }, @@ -1614,7 +1616,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Station Bridge"; req_access_txt = "48" }, @@ -1647,7 +1649,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mining Station Bridge"; req_access_txt = "48" }, @@ -1689,7 +1691,7 @@ }, /area/mine/production) "eF" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Processing Area"; req_access_txt = "48" }, @@ -3328,7 +3330,7 @@ /turf/open/floor/plasteel, /area/mine/laborcamp) "WB" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 8; name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2" @@ -3336,7 +3338,7 @@ /turf/open/floor/plasteel, /area/mine/laborcamp) "WC" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 8; name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0" @@ -21563,7 +21565,7 @@ am am am am -ao +ai ab ab ab @@ -22070,7 +22072,7 @@ am am am am -ao +ai ab ab ai @@ -22854,7 +22856,7 @@ ab ab ab ab -ao +ai ab ab ab @@ -24644,7 +24646,7 @@ am am am am -ao +ai ab ab ab @@ -24901,7 +24903,7 @@ am am am am -ao +ai ab ab ab @@ -25178,7 +25180,7 @@ ab ab ab ab -ao +ai am am ai @@ -25422,7 +25424,7 @@ ab ab ab ai -ao +ai ab ab ab @@ -25672,7 +25674,7 @@ am am am am -ao +ai ab ab ab @@ -25956,7 +25958,7 @@ am am am am -ao +ai ab ab ab @@ -26199,7 +26201,7 @@ ab ab ab ab -ao +ai am am am @@ -26213,7 +26215,7 @@ am am am am -ao +ai ab ab ab @@ -26972,7 +26974,7 @@ ab ab ab ab -ao +ai am am am @@ -28511,7 +28513,7 @@ ab ab ab ai -ao +ai ab ab ab @@ -29021,7 +29023,7 @@ ab ab ab ab -ao +ai ab ab ai @@ -29030,13 +29032,13 @@ am am am am -ao +ai ab ab ab ab -ao -ao +ai +ai ab ab ab @@ -29278,8 +29280,8 @@ ab ab ab ab -ao -ao +ai +ai ab ai am @@ -30060,8 +30062,8 @@ ab ab ab ab -ao -ao +ai +ai ab ab ab @@ -30573,7 +30575,7 @@ ai ai ab ab -ao +ai am am am diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 787c2a72e2..bb25481c4c 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -486,8 +486,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "aaY" = ( @@ -497,8 +497,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "aaZ" = ( @@ -518,8 +518,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "aba" = ( @@ -527,8 +527,8 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "abc" = ( @@ -541,7 +541,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 5 }, /area/bridge) @@ -573,8 +573,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "abf" = ( @@ -590,8 +590,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "abg" = ( @@ -602,8 +602,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "abh" = ( @@ -619,8 +619,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "abi" = ( @@ -636,7 +636,7 @@ }) "abk" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Bridge Access"; req_access_txt = "19" @@ -661,7 +661,7 @@ /area/bridge) "abl" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Bridge Access"; req_access_txt = "19" @@ -691,8 +691,8 @@ }, /area/bridge) "abo" = ( -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "abp" = ( @@ -705,7 +705,7 @@ /area/bridge) "abq" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Bridge Access"; req_access_txt = "19" @@ -721,7 +721,7 @@ /area/bridge) "abr" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Bridge Access"; req_access_txt = "19" @@ -777,7 +777,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/bridge) @@ -786,8 +786,8 @@ /obj/machinery/light_switch{ pixel_x = 24 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "abA" = ( @@ -804,8 +804,8 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "abC" = ( @@ -825,7 +825,9 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/bridge) "abE" = ( /obj/structure/cable/white{ @@ -865,7 +867,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/bridge) @@ -874,7 +876,7 @@ /obj/machinery/light_switch{ pixel_x = -24 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/bridge) @@ -886,17 +888,10 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) -"abJ" = ( -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/heads/hop) "abK" = ( /obj/structure/window/reinforced{ dir = 8 @@ -914,41 +909,33 @@ /area/crew_quarters/heads/hop) "abL" = ( /obj/structure/rack, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "abM" = ( /obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "abN" = ( /obj/structure/sign/vacuum, /turf/closed/wall, -/area/hallway/primary/central) +/area/maintenance/starboard) "abO" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel, -/area/hallway/primary/central) -"abP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) +/area/maintenance/starboard) "abQ" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/supply) @@ -959,7 +946,6 @@ name = "Asteroid" }) "abS" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/ore/glass, /turf/open/floor/plating/astplate, /area/ruin/unpowered{ @@ -994,7 +980,6 @@ /turf/open/floor/plasteel/white, /area/security/detectives_office) "abW" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, /obj/machinery/light/small{ dir = 1 @@ -1091,14 +1076,18 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/bridge) "ace" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/bridge) "acf" = ( /obj/structure/cable/white{ @@ -1115,8 +1104,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "ach" = ( @@ -1157,7 +1146,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/bridge) @@ -1165,14 +1154,18 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/bridge) "acn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/bridge) "aco" = ( /obj/structure/table/wood, @@ -1193,15 +1186,12 @@ dir = 2; name = "command camera" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/heads/hop) "acp" = ( /obj/structure/bed, -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -1211,9 +1201,6 @@ /area/crew_quarters/heads/hop) "acq" = ( /obj/structure/dresser, -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, @@ -1256,11 +1243,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/fore) "acv" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -1268,7 +1253,35 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "acw" = ( -/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"acx" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark/xeno_spawn, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"acy" = ( /obj/machinery/door/airlock/external{ name = "External Airlock"; req_access_txt = "13" @@ -1276,41 +1289,21 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"acx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/landmark/xeno_spawn, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"acy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/external{ - name = "External Airlock"; - req_access_txt = "13" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/structure/cable/white{ + icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "acz" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -1322,13 +1315,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/supply) -"acB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/supply) "acC" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -1342,10 +1328,11 @@ name = "Asteroid" }) "acE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/ruin/unpowered{ name = "Asteroid" }) @@ -1356,7 +1343,6 @@ }) "acG" = ( /obj/structure/door_assembly/door_assembly_mhatch, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -1369,7 +1355,6 @@ }) "acH" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ruin/unpowered{ name = "Asteroid" @@ -1426,10 +1411,7 @@ /area/security/detectives_office) "acN" = ( /obj/effect/landmark/blobstart, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/fore) "acO" = ( /obj/structure/mirror{ @@ -1498,8 +1480,8 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "acV" = ( @@ -1507,8 +1489,8 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "acW" = ( @@ -1541,8 +1523,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/bridge) "acY" = ( @@ -1644,8 +1626,8 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "adf" = ( @@ -1658,8 +1640,8 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "adg" = ( @@ -1672,17 +1654,14 @@ icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/heads/hop) "adh" = ( /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, /obj/structure/cable/white{ icon_state = "2-8" }, @@ -1692,9 +1671,6 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "adi" = ( -/obj/structure/cable/white{ - icon_state = "1-8" - }, /obj/structure/cable/white{ icon_state = "2-8" }, @@ -1739,7 +1715,6 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/heads/hop) "adm" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "0-2" @@ -1750,9 +1725,9 @@ areastring = "/area/maintenance/starboard/fore"; pixel_x = 26 }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8; - heat_capacity = 1e+006 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" }, /area/maintenance/starboard/fore) "adn" = ( @@ -1774,31 +1749,11 @@ /obj/structure/sign/vacuum, /turf/open/floor/plating, /area/quartermaster/storage) -"adr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/supply) "ads" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/supply) -"adt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/supply) -"adu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/shuttle/supply) "adv" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate{ icon_state = "crateopen"; opened = 1 @@ -1809,25 +1764,18 @@ name = "Asteroid" }) "adw" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/ruin/unpowered{ name = "Asteroid" }) "adx" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/clothing/suit/space/orange, /obj/item/clothing/head/helmet/space/orange, /obj/effect/landmark/revenantspawn, -/turf/open/floor/plasteel/neutral, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"ady" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/side{ - dir = 4 - }, +/turf/open/floor/plating, /area/ruin/unpowered{ name = "Asteroid" }) @@ -1879,10 +1827,12 @@ /turf/open/floor/plasteel/white, /area/security/detectives_office) "adF" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/landmark/xeno_spawn, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/fore) "adG" = ( /obj/structure/toilet{ @@ -1940,6 +1890,7 @@ dir = 1 }, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken" }, /area/crew_quarters/heads/captain/private) @@ -1970,55 +1921,41 @@ /obj/structure/closet/crate/bin, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) -"adM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/bridge) "adN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "adO" = ( /obj/machinery/ai_status_display, /turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "adP" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aicorewindow"; - name = "AI Core Shutters" - }, /obj/structure/cable/white{ icon_state = "0-2" }, /obj/structure/cable/white, /turf/open/floor/plating, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "adQ" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "adR" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aicorewindow"; - name = "AI Core Shutters" +/obj/structure/sign/electricshock{ + pixel_x = 32 }, /obj/structure/cable/white{ icon_state = "0-2" }, /turf/open/floor/plating, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "adS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -2027,8 +1964,8 @@ /obj/structure/sign/nanotrasen{ pixel_x = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "adT" = ( @@ -2038,8 +1975,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "adU" = ( @@ -2078,14 +2015,6 @@ "adX" = ( /turf/closed/wall, /area/crew_quarters/heads/hop) -"adY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "adZ" = ( /obj/machinery/conveyor{ dir = 8; @@ -2111,18 +2040,6 @@ /obj/structure/sign/nanotrasen{ pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"aeb" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "cargounload" - }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -2159,7 +2076,6 @@ dir = 8; id = "cargounload" }, -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/directions/engineering{ desc = "A sign that shows there are doors here. There are doors everywhere!"; icon_state = "doors"; @@ -2171,21 +2087,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aef" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "cargounload" - }, -/obj/machinery/door/poddoor{ - id = "cargounload"; - name = "supply dock unloading door" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating, -/area/quartermaster/storage) "aeg" = ( /obj/machinery/conveyor{ dir = 8; @@ -2234,26 +2135,20 @@ /turf/open/floor/plasteel, /area/shuttle/supply) "ael" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" }, -/turf/open/floor/plasteel/neutral/side{ - dir = 10 - }, +/turf/open/floor/plating, /area/ruin/unpowered{ name = "Asteroid" }) "aem" = ( -/turf/open/floor/plasteel/neutral/side, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aen" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/side, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, /area/ruin/unpowered{ name = "Asteroid" }) @@ -2270,9 +2165,10 @@ name = "Asteroid" }) "aep" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 +/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" }, /area/ruin/unpowered{ name = "Asteroid" @@ -2306,11 +2202,7 @@ /turf/open/floor/plating, /area/security/detectives_office) "aet" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/power/apc{ dir = 8; name = "Fore Maintenace APC"; @@ -2321,7 +2213,10 @@ /obj/structure/cable/white{ icon_state = "0-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, /area/maintenance/fore) "aeu" = ( /obj/structure/sign/nanotrasen, @@ -2365,8 +2260,8 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "aez" = ( @@ -2384,102 +2279,61 @@ /obj/structure/sign/nanotrasen{ pixel_x = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/nuke_storage) "aeA" = ( /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault, -/area/ai_monitored/turret_protected/ai) -"aeB" = ( -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 8; - icon_state = "leftsecure"; - name = "Primary AI Core Access"; - req_access_txt = "16" - }, -/obj/machinery/newscaster/security_unit{ - pixel_x = 4; - pixel_y = 33 - }, -/turf/open/floor/plasteel/vault{ - dir = 6 - }, -/area/ai_monitored/turret_protected/ai) -"aeC" = ( -/obj/item/device/radio/intercom{ - broadcasting = 0; - freerange = 1; - listening = 1; - name = "Common Channel"; - pixel_x = -27; - pixel_y = -24 - }, -/obj/item/device/radio/intercom{ - anyai = 1; - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_y = -27 - }, -/obj/item/device/radio/intercom{ - anyai = 1; - broadcasting = 0; - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = 27; - pixel_y = -24 - }, -/obj/machinery/button/door{ - id = "aicorewindow"; - name = "AI Core Shutters"; - pixel_x = 24; - pixel_y = -40; - req_access_txt = "16" - }, -/obj/machinery/button/door{ - id = "aicoredoor"; - name = "AI Chamber Access Control"; - pixel_x = -23; - pixel_y = -40; - req_access_txt = "16" - }, -/obj/effect/landmark/start/ai, -/obj/structure/cable/white{ - icon_state = "1-4" - }, /obj/machinery/ai_slipper{ uses = 10 }, -/obj/machinery/requests_console{ - department = "AI"; - departmentType = 5; - name = "AI RC"; - pixel_x = 30; - pixel_y = 30 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/nuke_storage) +"aeB" = ( +/obj/machinery/power/apc{ + aidisabled = 0; + areastring = "/area/ai_monitored/nuke_storage"; + dir = 1; + name = "AI Vault APC"; + pixel_y = 24 }, -/turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) -"aeD" = ( -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - req_access_txt = "16" +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/nuke_storage) +"aeC" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/machinery/nuclearbomb/selfdestruct, +/obj/structure/cable/white{ + icon_state = "1-4" }, /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/vault{ - dir = 10 +/turf/open/floor/circuit/green, +/area/ai_monitored/nuke_storage) +"aeD" = ( +/obj/structure/cable/white{ + icon_state = "4-8" }, -/area/ai_monitored/turret_protected/ai) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/nuke_storage) "aeE" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -2487,8 +2341,12 @@ /obj/structure/cable/white{ icon_state = "2-8" }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "aeF" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/westright{ @@ -2504,10 +2362,13 @@ pixel_x = -3; pixel_y = -3 }, -/turf/open/floor/plasteel/vault{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/nuke_storage) "aeG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light{ @@ -2516,8 +2377,8 @@ /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "aeH" = ( @@ -2527,8 +2388,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "aeI" = ( @@ -2545,9 +2406,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/bed/dogbed/ian, /mob/living/simple_animal/pet/dog/corgi/Ian, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/heads/hop) "aeK" = ( /obj/structure/cable/white{ @@ -2557,25 +2416,19 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/heads/hop) "aeL" = ( /obj/machinery/photocopier, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/heads/hop) "aeM" = ( /obj/structure/filingcabinet/security, /obj/item/folder/documents, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/heads/hop) "aeN" = ( /obj/structure/table/wood, @@ -2593,9 +2446,7 @@ areastring = "/area/crew_quarters/heads/hop"; pixel_y = 25 }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/heads/hop) "aeO" = ( /obj/structure/table/wood, @@ -2612,7 +2463,7 @@ pixel_x = 28; pixel_y = 24 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/corner{ dir = 8 }, /area/crew_quarters/heads/hop) @@ -2622,7 +2473,6 @@ pixel_x = -32; supply_display = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -2630,12 +2480,6 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aeR" = ( -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/storage) "aeS" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/delivery, @@ -2647,33 +2491,11 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aeU" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/brown{ dir = 4 }, /area/quartermaster/storage) -"aeV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"aeW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/external{ - name = "Supply Dock Airlock"; - req_access_txt = "31" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) "aeX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -2685,7 +2507,6 @@ name = "Supply Shuttle Airlock"; req_access_txt = "31" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/shuttle/supply) "afa" = ( @@ -2696,23 +2517,13 @@ /area/shuttle/supply) "afb" = ( /obj/structure/door_assembly/door_assembly_mhatch, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"afc" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plating, /area/ruin/unpowered{ name = "Asteroid" }) @@ -2720,8 +2531,8 @@ /obj/structure/table/wood, /obj/item/device/taperecorder, /obj/item/restraints/handcuffs, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/security/detectives_office) "afe" = ( @@ -2778,16 +2589,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/fore) "afj" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/fore) "afk" = ( /obj/structure/extinguisher_cabinet{ @@ -2795,7 +2604,9 @@ }, /obj/machinery/suit_storage_unit/captain, /obj/effect/turf_decal/stripes/end, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/crew_quarters/heads/captain/private) "afl" = ( /obj/item/twohanded/required/kirbyplants{ @@ -2839,6 +2650,7 @@ dir = 8 }, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken2" }, /area/crew_quarters/heads/captain/private) @@ -2846,7 +2658,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ dir = 4; - icon_state = "fire0"; pixel_x = 24 }, /obj/machinery/camera{ @@ -2854,8 +2665,8 @@ dir = 8; name = "command camera" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "afq" = ( @@ -2876,22 +2687,25 @@ pixel_y = -3 }, /obj/machinery/camera{ - c_tag = "AI Core - Port"; + c_tag = "AI Vault - Port"; dir = 4; name = "ai camera"; network = list("Sat"); start_active = 1 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/nuke_storage) "afr" = ( /obj/structure/cable/white{ icon_state = "1-2" }, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "afs" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor{ @@ -2909,10 +2723,13 @@ pixel_x = -3; pixel_y = -3 }, -/turf/open/floor/plasteel/vault{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/nuke_storage) "aft" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -2926,8 +2743,8 @@ dir = 4; name = "command camera" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "afu" = ( @@ -2941,8 +2758,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "afv" = ( @@ -2979,9 +2796,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "afx" = ( /obj/structure/cable/white{ @@ -2994,8 +2809,9 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken" }, /area/crew_quarters/heads/hop) "afy" = ( @@ -3009,9 +2825,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "afz" = ( /obj/structure/cable/white{ @@ -3028,9 +2842,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "afA" = ( /obj/machinery/computer/secure_data{ @@ -3044,7 +2856,7 @@ dir = 8; name = "command camera" }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/crew_quarters/heads/hop) @@ -3066,7 +2878,6 @@ }, /area/quartermaster/storage) "afD" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) @@ -3082,7 +2893,6 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "afH" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor_switch{ id = "cargounload" }, @@ -3141,7 +2951,6 @@ name = "Asteroid" }) "afM" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/ore/iron, /obj/structure/barricade/wooden, /turf/open/floor/plating/astplate, @@ -3149,18 +2958,8 @@ name = "Asteroid" }) "afN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"afO" = ( -/turf/open/floor/plasteel/neutral/corner{ - dir = 8; - heat_capacity = 1e+006 - }, /area/ruin/unpowered{ name = "Asteroid" }) @@ -3172,8 +2971,8 @@ name = "Station Intercom"; pixel_x = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/security/detectives_office) "afQ" = ( @@ -3223,14 +3022,12 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, /obj/effect/landmark/event_spawn, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/fore) "afW" = ( /obj/machinery/door/firedoor, @@ -3255,7 +3052,9 @@ icon_state = "4-8" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/crew_quarters/heads/captain/private) "afY" = ( /obj/machinery/requests_console{ @@ -3321,16 +3120,16 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "agf" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "agg" = ( @@ -3357,37 +3156,31 @@ }, /obj/item/clothing/neck/stethoscope, /obj/item/stack/sheet/mineral/diamond, -/obj/item/gun/ballistic/automatic/pistol/deagle, -/turf/open/floor/plasteel/vault{ - dir = 5 +/obj/item/areaeditor/blueprints, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/nuke_storage) "agh" = ( /obj/machinery/computer/upload/ai, +/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "agi" = ( -/obj/machinery/doomsday_device, -/obj/structure/cable/white{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - aidisabled = 0; - dir = 1; - name = "AI Chamber APC"; - areastring = "/area/ai_monitored/turret_protected/ai"; - pixel_y = 24 - }, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "agj" = ( /obj/machinery/computer/upload/borg, +/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "agk" = ( /obj/machinery/light{ dir = 4 @@ -3396,23 +3189,17 @@ /obj/structure/sign/nosmoking_2{ pixel_x = 32 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/nuke_storage) "agl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/bridge) -"agm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "agn" = ( @@ -3434,25 +3221,19 @@ /obj/item/stack/packageWrap, /obj/item/book/manual/wiki/security_space_law, /obj/item/hand_labeler, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "agp" = ( /obj/machinery/pdapainter, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "agq" = ( /obj/machinery/vending/cart, /obj/machinery/light, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "agr" = ( /obj/structure/table/wood, @@ -3466,8 +3247,9 @@ c_tag = "Head of Personnel's Office"; dir = 1 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken5" }, /area/crew_quarters/heads/hop) "ags" = ( @@ -3477,8 +3259,9 @@ pixel_y = -42 }, /obj/effect/landmark/start/head_of_personnel, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken6" }, /area/crew_quarters/heads/hop) "agt" = ( @@ -3506,26 +3289,24 @@ pixel_y = -24; req_access_txt = "57" }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/crew_quarters/heads/hop) "agu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8; - heat_capacity = 1e+006 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, /area/maintenance/starboard/fore) "agv" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/brown{ dir = 8 }, @@ -3542,13 +3323,6 @@ }, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) -"agy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/quartermaster/storage) "agz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -3578,7 +3352,6 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "agC" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 1 }, @@ -3604,7 +3377,6 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/supply) "agE" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/ore/silver, /obj/item/ore/iron, /turf/open/floor/plating/astplate, @@ -3615,7 +3387,6 @@ /turf/closed/wall/r_wall, /area/security/brig) "agG" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/ruin/unpowered{ @@ -3644,8 +3415,8 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/security/detectives_office) "agJ" = ( @@ -3691,10 +3462,11 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/fore) "agO" = ( /obj/machinery/light{ @@ -3711,7 +3483,9 @@ icon_state = "0-4" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/crew_quarters/heads/captain/private) "agP" = ( /obj/structure/cable/white{ @@ -3811,8 +3585,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "agW" = ( @@ -3820,8 +3594,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "agX" = ( @@ -3831,25 +3605,31 @@ name = "Station Intercom"; pixel_x = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/nuke_storage) "agY" = ( /obj/structure/cable/white{ icon_state = "1-4" }, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "agZ" = ( /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "aha" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -3864,25 +3644,32 @@ icon_state = "2-4" }, /obj/effect/landmark/start/cyborg, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahb" = ( /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahc" = ( /obj/structure/cable/white{ icon_state = "1-8" }, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahd" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/quarantine, @@ -3894,22 +3681,25 @@ pixel_x = 28 }, /obj/machinery/camera{ - c_tag = "AI Core - Starboard"; + c_tag = "AI Vault - Starboard"; dir = 8; name = "ai camera"; network = list("Sat"); start_active = 1 }, -/turf/open/floor/plasteel/vault{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/nuke_storage) "ahe" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "ahf" = ( @@ -3920,8 +3710,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "ahg" = ( @@ -3959,12 +3749,14 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "ahj" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/starboard/fore) "ahk" = ( /obj/machinery/firealarm{ @@ -3975,7 +3767,6 @@ pixel_x = -24; pixel_y = -24 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -3999,8 +3790,6 @@ dir = 4; id = "cargoload" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -4013,7 +3802,6 @@ dir = 4; id = "cargoload" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -4028,7 +3816,6 @@ dir = 4; id = "cargoload" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -4042,7 +3829,6 @@ dir = 4; id = "cargoload" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/poddoor{ id = "cargoload"; name = "supply dock loading door" @@ -4061,7 +3847,6 @@ id = "cargoload" }, /obj/structure/plasticflaps, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -4094,14 +3879,13 @@ /obj/structure/sign/nanotrasen{ pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/security/brig) "ahw" = ( /obj/structure/reagent_dispensers/peppertank{ @@ -4111,7 +3895,7 @@ dir = 10 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/security/brig) "ahx" = ( /obj/machinery/ai_status_display{ @@ -4124,7 +3908,7 @@ dir = 6 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/security/brig) "ahy" = ( /obj/machinery/suit_storage_unit/security, @@ -4138,10 +3922,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/security/brig) "ahz" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -4155,8 +3938,6 @@ /obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/mask/gas, /obj/item/clothing/head/hardhat/red, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -4173,7 +3954,9 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/security/detectives_office) "ahC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -4236,10 +4019,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/fore) "ahH" = ( /obj/structure/sign/securearea{ @@ -4249,7 +4030,10 @@ /obj/effect/turf_decal/stripes/end{ dir = 1 }, -/turf/open/floor/plasteel, +/obj/item/gun/energy/e_gun/hos, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/crew_quarters/heads/captain/private) "ahI" = ( /obj/machinery/computer/communications{ @@ -4318,17 +4102,20 @@ pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "ahP" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/freeform, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/ai_monitored/turret_protected/ai) +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/nuke_storage) "ahQ" = ( /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) @@ -4339,7 +4126,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahS" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -4347,18 +4134,18 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahU" = ( /obj/machinery/firealarm{ dir = 1; pixel_y = -24 }, /turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "ahV" = ( /obj/structure/table/reinforced, /obj/effect/spawner/lootdrop/aimodule_neutral{ @@ -4366,16 +4153,13 @@ lootdoubles = 0; lootcount = 3 }, -/turf/open/floor/plasteel/vault{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) -"ahW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, -/area/bridge) +/area/ai_monitored/nuke_storage) "ahX" = ( /obj/machinery/airalarm{ dir = 8; @@ -4385,8 +4169,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/bridge) "ahY" = ( @@ -4425,7 +4209,6 @@ req_access_txt = "0"; req_one_access_txt = "48;50" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -4439,7 +4222,6 @@ dir = 1; id = "cargoload" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/plasticflaps, /obj/effect/turf_decal/stripes/line{ @@ -4456,17 +4238,11 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aig" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, /turf/open/floor/plasteel, /area/shuttle/supply) -"aih" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/shuttle/supply) "aii" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -4478,20 +4254,8 @@ /turf/open/floor/plasteel, /area/shuttle/supply) "aik" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, /turf/open/floor/plating/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"ail" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, /area/ruin/unpowered{ name = "Asteroid" }) @@ -4511,8 +4275,9 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/darkred/corner{ + dir = 1 }, /area/security/brig) "ain" = ( @@ -4527,6 +4292,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/security/brig) "aio" = ( @@ -4556,8 +4324,9 @@ /obj/structure/sign/nosmoking_2{ pixel_y = 32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 }, /area/security/brig) "aip" = ( @@ -4576,7 +4345,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security E.V.A. Storage"; req_access_txt = "63" }, @@ -4597,7 +4366,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security E.V.A. Storage"; req_access_txt = "63" }, @@ -4670,11 +4439,11 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/fore) "aiy" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Bridge Access"; req_access_txt = "19" @@ -4694,18 +4463,14 @@ "aiz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "aiA" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/highsecurity{ locked = 1; - name = "MiniSat Chamber"; + name = "AI Vault Chamber"; req_access_txt = "16" }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aicoredoor"; - name = "AI Core Access" - }, /obj/machinery/flasher{ id = "AI"; pixel_x = -26 @@ -4727,14 +4492,14 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "aiB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) +/area/ai_monitored/nuke_storage) "aiC" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 0; name = "Bridge Access"; req_access_txt = "19" @@ -4795,7 +4560,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/fore) "aiI" = ( /obj/structure/filingcabinet/filingcabinet, @@ -4808,7 +4573,6 @@ }, /area/quartermaster/storage) "aiJ" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -4820,7 +4584,6 @@ }, /area/quartermaster/storage) "aiL" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor_switch{ id = "cargoload" }, @@ -4836,7 +4599,6 @@ dir = 1; id = "cargoload" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plating, @@ -4863,11 +4625,6 @@ dir = 5 }, /area/quartermaster/storage) -"aiP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/shuttle/supply) "aiQ" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -4885,8 +4642,9 @@ /obj/machinery/status_display{ pixel_x = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/darkred/corner{ + dir = 1 }, /area/security/brig) "aiS" = ( @@ -4894,6 +4652,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/security/brig) "aiT" = ( @@ -4902,8 +4663,9 @@ /obj/item/clothing/suit/armor/laserproof, /obj/item/gun/energy/temperature/security, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 }, /area/security/brig) "aiU" = ( @@ -5336,11 +5098,9 @@ }, /area/hallway/primary/central) "ajH" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ opacity = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/quartermaster/storage) @@ -5357,7 +5117,6 @@ }, /area/quartermaster/storage) "ajK" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -5396,17 +5155,7 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/shuttle/supply) -"ajO" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/supply) "ajQ" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/ore/iron, /turf/open/floor/plating/astplate, /area/ruin/unpowered{ @@ -5427,8 +5176,9 @@ name = "Station Intercom"; pixel_x = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/darkred/corner{ + dir = 1 }, /area/security/brig) "ajS" = ( @@ -5439,6 +5189,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/security/brig) "ajT" = ( @@ -5474,8 +5227,9 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 }, /area/security/brig) "ajU" = ( @@ -6224,7 +5978,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "alf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -6410,7 +6164,6 @@ id = "evashutters"; name = "E.V.A. Storage Shutters" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -6464,7 +6217,6 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "alC" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -6500,8 +6252,6 @@ }, /area/quartermaster/storage) "alG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/effect/landmark/revenantspawn, /turf/open/floor/plating, @@ -6558,7 +6308,7 @@ /area/security/brig) "alK" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -6670,7 +6420,6 @@ }, /area/hallway/primary/central) "alT" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/storage/firstaid/regular, /obj/structure/extinguisher_cabinet{ @@ -6680,14 +6429,12 @@ pixel_y = 32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "alU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "alV" = ( /obj/structure/urinal{ @@ -6697,26 +6444,23 @@ dir = 1 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "alW" = ( /obj/structure/urinal{ pixel_y = 28 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "alX" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/bin, /obj/machinery/light_switch{ pixel_y = 24 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "alY" = ( /obj/machinery/shieldwallgen, -/obj/effect/decal/cleanable/dirt, /obj/machinery/button/door{ id = "teleportershutters"; name = "Teleporter Shutters"; @@ -6724,10 +6468,11 @@ req_access_txt = "19" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/teleporter) "alZ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, @@ -6764,7 +6509,9 @@ c_tag = "Teleporter" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/teleporter) "amd" = ( /obj/structure/cable/white{ @@ -6789,7 +6536,9 @@ icon_state = "1-2" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 5 + }, /area/hallway/primary/central) "amg" = ( /turf/open/floor/plasteel/neutral/corner{ @@ -6826,7 +6575,9 @@ icon_state = "1-2" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, /area/hallway/primary/central) "amm" = ( /obj/structure/cable/white{ @@ -6852,12 +6603,11 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/ai_monitored/storage/eva) "amp" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -6892,14 +6642,13 @@ /obj/item/storage/toolbox/mechanical, /obj/item/stack/cable_coil/white, /obj/item/device/multitool, -/obj/effect/decal/cleanable/dirt, /obj/machinery/button/door{ id = "evashutters"; name = "E.V.A. Shutters"; pixel_x = 26; req_access_txt = "19" }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/ai_monitored/storage/eva) @@ -6999,7 +6748,6 @@ /turf/open/floor/plating, /area/shuttle/mining) "amG" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, @@ -7113,7 +6861,7 @@ pixel_x = -12 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "amP" = ( /obj/machinery/firealarm{ @@ -7124,11 +6872,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plasteel/neutral/side, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "amQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/side, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "amR" = ( /obj/machinery/airalarm{ @@ -7136,16 +6883,15 @@ pixel_y = -22 }, /obj/machinery/light/small, -/turf/open/floor/plasteel/neutral/side, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "amS" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Locker Room Toilets"; dir = 8; network = list("SS13") }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "amT" = ( /obj/structure/table/reinforced, @@ -7161,17 +6907,10 @@ dir = 4; name = "command camera" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/teleporter) -"amU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/teleporter) "amV" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -7193,7 +6932,7 @@ /area/teleporter) "amX" = ( /obj/machinery/teleport/hub, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/teleporter) @@ -7202,7 +6941,7 @@ /turf/closed/wall/r_wall, /area/teleporter) "amZ" = ( -/obj/machinery/vending/snack, +/obj/machinery/vending/snack/random, /obj/structure/sign/nanotrasen{ pixel_y = -32 }, @@ -7210,7 +6949,9 @@ icon_state = "1-8" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/hallway/primary/central) "ana" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -7238,7 +6979,9 @@ icon_state = "1-4" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "ane" = ( /obj/structure/sign/electricshock, @@ -7252,7 +6995,6 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ang" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -7283,10 +7025,8 @@ /area/ai_monitored/storage/eva) "anj" = ( /obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ dir = 4; - icon_state = "fire0"; pixel_x = 24 }, /obj/effect/turf_decal/stripes/end{ @@ -7339,7 +7079,7 @@ /area/quartermaster/storage) "ano" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Office"; req_access_txt = "48;50" }, @@ -7365,7 +7105,6 @@ name = "Station Intercom"; pixel_y = 26 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -7373,8 +7112,6 @@ /area/quartermaster/miningdock) "anr" = ( /obj/machinery/mineral/equipment_vendor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/quartermaster/miningdock) @@ -7389,7 +7126,6 @@ pixel_y = 26 }, /obj/structure/closet/secure_closet/miner, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "0-2" }, @@ -7416,7 +7152,6 @@ /area/shuttle/mining) "anv" = ( /obj/machinery/computer/shuttle/mining, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -7424,7 +7159,6 @@ /area/shuttle/mining) "anw" = ( /obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, /obj/item/crowbar/red, /obj/item/wrench, /obj/item/tank/internals/emergency_oxygen/engi, @@ -7604,20 +7338,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"anK" = ( -/obj/machinery/door/airlock{ - name = "Toilet Unit" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "anL" = ( /obj/machinery/door/window/northleft{ @@ -7633,8 +7354,8 @@ }, /obj/structure/closet/crate/engineering, /obj/item/hand_tele, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/teleporter) "anM" = ( @@ -7648,17 +7369,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/teleporter) -"anO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/teleporter) "anP" = ( /obj/machinery/teleport/station, /obj/machinery/light{ @@ -7667,7 +7377,7 @@ /obj/machinery/status_display{ pixel_x = 32 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/teleporter) @@ -7765,7 +7475,6 @@ name = "E.V.A. RC"; pixel_x = 32 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ c_tag = "Bridge - E.V.A. Storage"; @@ -7778,7 +7487,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "anY" = ( -/turf/closed/wall, +/turf/closed/wall/rust, /area/ai_monitored/storage/eva) "anZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -7863,8 +7572,6 @@ /area/hallway/primary/central) "aoh" = ( /obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -7882,8 +7589,6 @@ pixel_x = -24; pixel_y = 24 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -7894,7 +7599,6 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "aoj" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, @@ -7903,7 +7607,6 @@ }, /area/quartermaster/miningdock) "aok" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -7913,13 +7616,11 @@ }, /area/quartermaster/miningdock) "aol" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/ore_box, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) "aom" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, /obj/machinery/light/small{ dir = 1 @@ -7944,7 +7645,6 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/mining) "aop" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8010,7 +7710,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/security/brig) "aow" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -8022,7 +7724,7 @@ /area/security/brig) "aox" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "secinterior"; name = "Brig"; req_access_txt = "63" @@ -8062,7 +7764,7 @@ /area/security/brig) "aoA" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "secexterior"; name = "Brig"; req_access_txt = "63" @@ -8087,7 +7789,6 @@ }, /area/hallway/primary/central) "aoC" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit/old, /obj/structure/toilet{ dir = 8 @@ -8097,10 +7798,9 @@ }, /obj/machinery/light/small, /obj/effect/landmark/revenantspawn, -/turf/open/floor/plating, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "aoD" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/toilet{ dir = 8 }, @@ -8110,10 +7810,9 @@ /obj/machinery/light/small, /obj/effect/landmark/blobstart, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "aoE" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/toilet{ dir = 8 }, @@ -8123,7 +7822,7 @@ /obj/machinery/light/small, /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/hallway/primary/central) "aoF" = ( /obj/structure/table/reinforced, @@ -8134,8 +7833,8 @@ dir = 4; pixel_x = -22 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/teleporter) "aoG" = ( @@ -8162,13 +7861,12 @@ /obj/machinery/newscaster{ pixel_x = 32 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/teleporter) "aoJ" = ( /obj/machinery/droneDispenser, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -8176,15 +7874,12 @@ /area/maintenance/port/central) "aoK" = ( /obj/structure/table, -/obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/metal{ amount = 30 }, /obj/item/stack/sheet/glass{ amount = 30 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -8196,7 +7891,6 @@ /obj/item/crowbar/red, /obj/item/wrench, /obj/item/tank/internals/emergency_oxygen/engi, -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -8217,6 +7911,14 @@ dir = 1 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/cable_coil/white, +/obj/item/hand_labeler, +/obj/item/hand_labeler_refill, /turf/open/floor/plasteel, /area/crew_quarters/bar/atrium) "aoO" = ( @@ -8264,6 +7966,9 @@ icon_state = "4-8" }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel, /area/crew_quarters/bar/atrium) "aoS" = ( @@ -8271,7 +7976,6 @@ name = "Maintenance Hatch"; req_access_txt = "12" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -8284,18 +7988,19 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aoT" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/starboard/central) "aoU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -8304,22 +8009,21 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/turf/open/floor/plasteel/caution{ - dir = 1 - }, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aoV" = ( -/obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/structure/rack, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/rods{ + amount = 25 + }, /turf/open/floor/plasteel, /area/maintenance/starboard/central) "aoW" = ( /obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ dir = 4; pixel_x = -22 @@ -8442,7 +8146,6 @@ /turf/open/floor/plasteel/brown/corner, /area/hallway/primary/central) "aph" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -8494,7 +8197,6 @@ }, /area/quartermaster/miningdock) "apl" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -8503,7 +8205,6 @@ }, /area/quartermaster/miningdock) "apm" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ name = "Mining Dock Airlock"; @@ -8519,15 +8220,11 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "apn" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"apo" = ( /obj/effect/turf_decal/stripes/line{ - dir = 2 + dir = 1 }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) @@ -8544,13 +8241,6 @@ }, /turf/open/floor/plasteel/white, /area/shuttle/mining) -"apq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/mining) "apr" = ( /turf/open/floor/plasteel/neutral, /area/shuttle/mining) @@ -8626,7 +8316,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Office"; req_access_txt = "63" }, @@ -8652,7 +8342,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/security/brig) "apz" = ( /obj/effect/landmark/start/security_officer, @@ -8689,7 +8381,7 @@ /area/security/brig) "apC" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "secinterior"; name = "Brig"; req_access_txt = "63" @@ -8732,7 +8424,7 @@ /area/security/brig) "apF" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ id_tag = "secexterior"; name = "Brig"; req_access_txt = "63" @@ -8789,7 +8481,6 @@ /area/storage/primary) "apK" = ( /obj/machinery/shieldwallgen, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch{ pixel_x = -24 }, @@ -8797,10 +8488,11 @@ pixel_y = -28 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/teleporter) "apL" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/status_display{ pixel_y = -32 }, @@ -8810,7 +8502,6 @@ /turf/open/floor/plasteel, /area/teleporter) "apM" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc{ dir = 2; name = "Teleporter APC"; @@ -8837,7 +8528,6 @@ /area/teleporter) "apO" = ( /obj/machinery/shieldwallgen, -/obj/effect/decal/cleanable/dirt, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = 28 @@ -8846,15 +8536,17 @@ pixel_y = -32 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/teleporter) "apP" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" }, /area/maintenance/port/central) "apQ" = ( @@ -8866,27 +8558,13 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/storage/box/lights/mixed, -/turf/open/floor/plasteel/yellow/side{ - dir = 5 - }, -/area/maintenance/port/central) -"apR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "apS" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -8902,7 +8580,6 @@ /turf/open/floor/plasteel, /area/maintenance/port/central) "apT" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -8913,6 +8590,9 @@ icon_state = "4-8" }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/crew_quarters/bar/atrium) "apU" = ( @@ -8942,12 +8622,20 @@ /area/crew_quarters/bar/atrium) "apW" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plasteel/neutral/corner, /area/crew_quarters/bar/atrium) "apX" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/effect/turf_decal/delivery, /obj/machinery/rnd/protolathe/department/service, +/obj/effect/turf_decal/stripes/box, /turf/open/floor/plasteel, /area/crew_quarters/bar/atrium) "apY" = ( @@ -8957,15 +8645,12 @@ /turf/closed/wall, /area/maintenance/starboard/central) "apZ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aqa" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -8973,17 +8658,28 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/caution, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/starboard/central) "aqb" = ( -/obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight/flare, +/obj/item/device/flashlight/flare, /turf/open/floor/plasteel, /area/maintenance/starboard/central) "aqc" = ( @@ -8994,7 +8690,6 @@ }, /obj/item/tank/jetpack/carbondioxide, /obj/item/wrench, -/obj/effect/decal/cleanable/dirt, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = -28 @@ -9002,12 +8697,11 @@ /obj/structure/sign/nosmoking_2{ pixel_y = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/ai_monitored/storage/eva) "aqd" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/status_display{ pixel_y = -32 }, @@ -9065,7 +8759,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -28 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/ai_monitored/storage/eva) @@ -9094,7 +8788,6 @@ /obj/structure/chair{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/primary/central) @@ -9128,21 +8821,11 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/primary/central) -"aqo" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "aqp" = ( /obj/machinery/autolathe, /obj/structure/extinguisher_cabinet{ pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Fore Primary Hallway East"; dir = 1 @@ -9199,7 +8882,6 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "aqv" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /obj/structure/closet/crate, /obj/item/device/flashlight, @@ -9215,7 +8897,6 @@ /obj/structure/chair{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/end{ dir = 8 }, @@ -9225,7 +8906,6 @@ /obj/structure/chair{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -9235,7 +8915,6 @@ /obj/structure/chair{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/end{ dir = 4 }, @@ -9284,8 +8963,6 @@ /area/engine/atmos) "aqG" = ( /obj/structure/door_assembly/door_assembly_mhatch, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -9306,8 +8983,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/security/brig) "aqJ" = ( @@ -9348,7 +9025,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/security/brig) "aqN" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -9419,7 +9098,6 @@ /obj/item/storage/belt/utility, /obj/item/weldingtool, /obj/item/clothing/head/welding, -/obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc{ dir = 8; name = "Primary Tool Storage APC"; @@ -9464,7 +9142,6 @@ /area/storage/primary) "aqW" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /obj/structure/extinguisher_cabinet{ pixel_y = 26 @@ -9481,7 +9158,6 @@ /turf/open/floor/plasteel, /area/storage/primary) "aqY" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/port/central) @@ -9490,8 +9166,9 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, /area/maintenance/port/central) "ara" = ( @@ -9556,18 +9233,14 @@ /turf/open/floor/plating, /area/crew_quarters/bar/atrium) "arg" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, /area/maintenance/starboard/central) "arh" = ( /obj/structure/girder, @@ -9579,10 +9252,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8; - heat_capacity = 1e+006 - }, +/turf/open/floor/plasteel/stairs/left, /area/hallway/primary/central) "arj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -9712,7 +9382,6 @@ pixel_y = 9 }, /obj/structure/closet/crate/internals, -/obj/effect/decal/cleanable/dirt, /obj/item/pickaxe/emergency, /obj/item/pickaxe/emergency, /obj/effect/turf_decal/delivery, @@ -9737,7 +9406,6 @@ /area/shuttle/mining) "arp" = ( /obj/structure/ore_box, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /obj/machinery/light/small{ dir = 4 @@ -9755,6 +9423,9 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/vault, /area/engine/atmos) "ars" = ( @@ -9765,7 +9436,7 @@ /obj/structure/sign/fire{ pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9774,8 +9445,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -9800,7 +9469,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -9811,8 +9479,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Atmospherics Tank 4"; network = list("thunder"); @@ -9833,7 +9499,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/green/side{ dir = 1 }, @@ -9851,7 +9517,6 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/atmos) @@ -9862,8 +9527,6 @@ /obj/structure/sign/nosmoking_2{ pixel_x = 32 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) @@ -9885,8 +9548,8 @@ dir = 1 }, /obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/security/brig) "arE" = ( @@ -9915,7 +9578,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Gear Room"; req_access_txt = "63" }, @@ -9994,7 +9657,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Desk"; req_access_txt = "63" }, @@ -10093,7 +9756,6 @@ /turf/open/floor/plating, /area/storage/primary) "arQ" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -10114,14 +9776,12 @@ }, /area/storage/primary) "arT" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/yellow/side{ dir = 5 }, /area/storage/primary) "arU" = ( /obj/machinery/holopad, -/obj/effect/decal/cleanable/dirt, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = 26 @@ -10136,12 +9796,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, +/turf/open/floor/plating, /area/maintenance/port/central) "arW" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -10158,7 +9815,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "arX" = ( /obj/structure/cable/white{ @@ -10191,18 +9848,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port/central) -"asa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" }, /area/maintenance/port/central) "asb" = ( @@ -10221,7 +9869,6 @@ /turf/open/floor/plating, /area/maintenance/port/central) "asc" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -10241,8 +9888,8 @@ dir = 4; network = list("MINE") }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/bar/atrium) "ase" = ( @@ -10272,11 +9919,11 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar/atrium) "asj" = ( -/obj/machinery/vending/cola, +/obj/machinery/vending/cola/random, /obj/machinery/newscaster{ pixel_x = 32 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/crew_quarters/bar/atrium) @@ -10294,38 +9941,19 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/starboard/central) -"asm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/maintenance/starboard/central) -"asn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aso" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/starboard/central) "asp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -10336,38 +9964,42 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/central) -"asq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/starboard/central) "asr" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/loading_area{ dir = 4 }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm{ + pixel_y = 24 + }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "ass" = ( /obj/machinery/mineral/mint, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/end, /obj/structure/sign/poster/official/random{ pixel_y = 32 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "ast" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/loading_area, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard"; + dir = 1; + name = "Starboard Maintenance APC"; + pixel_y = 26 + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "asu" = ( /obj/structure/shuttle/engine/propulsion/burst, /obj/structure/window/reinforced{ @@ -10397,15 +10029,6 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) -"asy" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/engine/atmos) "asz" = ( /obj/machinery/atmospherics/components/trinary/filter{ dir = 2; @@ -10420,20 +10043,12 @@ dir = 1; pixel_y = 1 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red/side{ dir = 9 }, /area/engine/atmos) -"asA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "asB" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "asC" = ( @@ -10462,7 +10077,6 @@ /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "asF" = ( @@ -10471,7 +10085,6 @@ dir = 8; name = "Air to Mix" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "asG" = ( @@ -10479,20 +10092,17 @@ dir = 2 }, /obj/machinery/meter, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "asH" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/caution{ dir = 4 }, /area/engine/atmos) "asI" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/vacuum{ pixel_x = -32 }, @@ -10510,8 +10120,8 @@ /obj/structure/reagent_dispensers/peppertank{ pixel_y = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 1 +/turf/open/floor/plasteel/vault/corner{ + dir = 4 }, /area/security/brig) "asK" = ( @@ -10547,8 +10157,8 @@ dir = 1; name = "security camera" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/security/brig) "asL" = ( @@ -10557,8 +10167,8 @@ dir = 1; pixel_y = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 4 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/security/brig) "asM" = ( @@ -10591,7 +10201,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/security/brig) "asP" = ( /obj/structure/table/reinforced, @@ -10610,7 +10222,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/security/brig) "asQ" = ( /obj/structure/table/reinforced, @@ -10623,7 +10237,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/security/brig) "asR" = ( /obj/machinery/computer/security{ @@ -10645,8 +10261,8 @@ dir = 1; name = "security camera" }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/security/brig) "asS" = ( @@ -10663,8 +10279,8 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/security/brig) "asT" = ( @@ -10683,7 +10299,7 @@ /area/hallway/primary/central) "asU" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Primary Tool Storage"; req_access_txt = "0" }, @@ -10719,7 +10335,6 @@ /obj/structure/table/reinforced, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -10750,8 +10365,6 @@ }, /area/storage/primary) "asZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -10762,15 +10375,15 @@ /turf/open/floor/plasteel, /area/storage/primary) "atb" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" }, /area/maintenance/port/central) "atc" = ( @@ -10778,12 +10391,14 @@ /turf/closed/wall, /area/maintenance/port/central) "atd" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port/central) "ate" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -10802,7 +10417,6 @@ name = "Theatre Backstage"; req_access_txt = "46" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -10829,22 +10443,21 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 6 }, /area/crew_quarters/bar/atrium) "atj" = ( /obj/machinery/vending/coffee, /obj/machinery/firealarm{ dir = 4; - icon_state = "fire0"; pixel_x = 24 }, /obj/machinery/light{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 10 }, /area/crew_quarters/bar/atrium) "atl" = ( @@ -10870,8 +10483,9 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, /area/maintenance/starboard/central) "atp" = ( @@ -10887,7 +10501,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -10898,43 +10511,11 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"atr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/structure/cable/white{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hallway/primary/central) -"ats" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, -/area/hallway/primary/central) -"att" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"atv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/landmark/xeno_spawn, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "atw" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/light/small{ @@ -10977,6 +10558,7 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red/side{ dir = 8 }, @@ -10989,18 +10571,9 @@ /area/engine/atmos) "atC" = ( /obj/machinery/holopad, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) -"atD" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "atE" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 5 @@ -11015,11 +10588,6 @@ }, /turf/open/floor/plasteel/neutral, /area/engine/atmos) -"atG" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral, -/area/engine/atmos) "atH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -11042,7 +10610,6 @@ /obj/structure/cable/white{ icon_state = "0-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -11054,18 +10621,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/closed/wall/r_wall, +/turf/closed/wall/r_wall/rust, /area/engine/atmos) "atK" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, /obj/structure/sign/poster/contraband/random{ pixel_x = 32 }, -/turf/open/floor/plasteel/caution/corner{ - dir = 1 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, /area/maintenance/port/fore) "atL" = ( @@ -11076,7 +10643,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -11111,7 +10677,7 @@ /area/hallway/primary/central) "atO" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Primary Tool Storage"; req_access_txt = "0" }, @@ -11237,7 +10803,6 @@ pixel_y = 9 }, /obj/structure/closet/crate/internals, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -11245,11 +10810,9 @@ /turf/open/floor/plasteel, /area/storage/primary) "atU" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ opacity = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -11257,13 +10820,10 @@ /turf/open/floor/plasteel, /area/storage/primary) "atV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "atW" = ( /obj/effect/landmark/blobstart, @@ -11274,7 +10834,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating, /area/maintenance/port/central) "atX" = ( /obj/structure/table/wood, @@ -11294,14 +10854,17 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "atZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken6" + }, /area/crew_quarters/theatre) "aua" = ( /obj/structure/window/reinforced{ @@ -11316,12 +10879,12 @@ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "aub" = ( /obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/bar/atrium) "auc" = ( @@ -11433,7 +10996,10 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/starboard/central) "auo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11474,15 +11040,6 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) -"aus" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/engine/atmos) "aut" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/components/binary/pump{ @@ -11494,7 +11051,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -11547,7 +11104,6 @@ name = "Mix to Distro"; on = 0 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "auB" = ( @@ -11578,7 +11134,6 @@ "auE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -11597,7 +11152,6 @@ /area/maintenance/port/fore) "auG" = ( /obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -11607,23 +11161,23 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/red/corner, +/turf/open/floor/plating, /area/maintenance/port/fore) "auI" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port/fore) "auJ" = ( /obj/structure/cable/white{ @@ -11635,20 +11189,20 @@ /obj/effect/decal/cleanable/blood/splatter, /obj/effect/landmark/revenantspawn, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/port/fore) "auK" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plating, /area/maintenance/port/fore) "auL" = ( /obj/effect/landmark/blobstart, @@ -11661,13 +11215,15 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/turf/open/floor/plasteel/red/corner, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port/fore) "auM" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -11690,8 +11246,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/hallway/primary/central) "auO" = ( @@ -11761,7 +11318,6 @@ }, /area/hallway/primary/central) "auT" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/yellow/side{ dir = 10 }, @@ -11777,7 +11333,6 @@ /turf/open/floor/plasteel/yellow/side, /area/storage/primary) "auW" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/yellow/side{ dir = 6 @@ -11793,8 +11348,10 @@ /turf/open/floor/plasteel, /area/storage/primary) "auY" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port/central) "auZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11833,14 +11390,14 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "ave" = ( /obj/structure/table/wood, /obj/item/clothing/head/fedora, /obj/item/clothing/mask/cigarette/pipe, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/bar/atrium) "avf" = ( @@ -11958,12 +11515,14 @@ /turf/closed/wall, /area/crew_quarters/bar/atrium) "avs" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, /area/maintenance/starboard/central) "avt" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -11986,17 +11545,18 @@ /area/hallway/primary/central) "avv" = ( /obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hallway/primary/central) +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard) "avw" = ( /obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "avx" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/cyan/visible, @@ -12009,7 +11569,6 @@ /obj/machinery/light{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -12020,6 +11579,7 @@ dir = 4; name = "N2 to Pure" }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -12028,7 +11588,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 10 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -12053,7 +11612,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 6 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "avE" = ( @@ -12099,12 +11657,13 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/turf/open/floor/plasteel/caution, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/port/fore) "avJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -12114,13 +11673,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/caution, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port/fore) "avK" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -12140,7 +11701,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -12159,14 +11719,16 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, /area/maintenance/port/fore) "avN" = ( /obj/structure/girder, @@ -12181,14 +11743,16 @@ /obj/item/crowbar/red, /obj/item/wrench, /obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, /turf/open/floor/plasteel, /area/maintenance/port/fore) "avP" = ( @@ -12199,8 +11763,6 @@ /obj/item/clothing/shoes/jackboots, /obj/item/device/radio, /obj/item/storage/secure/briefcase, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" @@ -12215,7 +11777,6 @@ /obj/structure/table, /obj/item/clothing/under/rank/security, /obj/item/restraints/handcuffs, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -12240,8 +11801,9 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/hallway/primary/central) "avT" = ( @@ -12296,7 +11858,6 @@ /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, -/obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -12310,8 +11871,6 @@ /area/storage/primary) "avZ" = ( /obj/machinery/vending/tool, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/status_display{ pixel_y = -32 }, @@ -12336,7 +11895,6 @@ /obj/item/stack/sheet/glass{ amount = 30 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/primary) @@ -12350,7 +11908,6 @@ pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -12359,7 +11916,6 @@ /area/storage/primary) "awd" = ( /obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -12392,14 +11948,17 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, /area/crew_quarters/theatre) "awj" = ( /obj/structure/chair/comfy/brown{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/bar/atrium) "awk" = ( @@ -12524,7 +12083,6 @@ }, /area/crew_quarters/bar/atrium) "aww" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Bar Maintenance"; req_access_txt = "25" @@ -12542,7 +12100,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "awx" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -12572,14 +12130,11 @@ }, /area/hallway/primary/central) "awz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "awA" = ( /turf/open/floor/engine/o2, /area/engine/atmos) @@ -12613,6 +12168,7 @@ dir = 1; pixel_y = 1 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/blue/side{ dir = 9 }, @@ -12640,11 +12196,9 @@ name = "Mix to Filter"; on = 1 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "awI" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -12709,7 +12263,6 @@ /turf/open/floor/plasteel, /area/maintenance/port/fore) "awN" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ opacity = 1 }, @@ -12865,21 +12418,21 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "axf" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/maintenance/starboard) "axg" = ( /obj/structure/rack, -/obj/item/crowbar/red, -/obj/item/wrench, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/hallway/primary/central) +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/wrench, +/obj/item/wirecutters, +/turf/open/floor/plasteel, +/area/maintenance/starboard) "axh" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/light/small{ @@ -12895,7 +12448,6 @@ /turf/open/floor/engine/o2, /area/engine/atmos) "axj" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Atmospherics Tank 2"; dir = 4; @@ -12918,15 +12470,11 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/blue/side{ dir = 8 }, /area/engine/atmos) -"axl" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral, -/area/engine/atmos) "axm" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 8; @@ -12947,7 +12495,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 2 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "axp" = ( @@ -12971,7 +12518,6 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -12982,7 +12528,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -12996,7 +12541,6 @@ pixel_x = 24; pixel_y = 24 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -13028,13 +12572,11 @@ /area/engine/atmos) "axw" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) "axx" = ( /obj/machinery/portable_atmospherics/canister/air, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) @@ -13042,11 +12584,12 @@ /obj/item/weldingtool, /obj/item/clothing/head/welding, /obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, /obj/machinery/status_display{ pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/caution{ dir = 9 }, @@ -13082,7 +12625,6 @@ pixel_x = 26; pixel_y = 26 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/caution{ dir = 5 }, @@ -13095,9 +12637,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plasteel/stairs/left, /area/hallway/primary/central) "axC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -13113,30 +12653,34 @@ name = "Station Intercom"; pixel_x = -26 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/crew_quarters/dorms) "axE" = ( -/obj/structure/closet/secure_closet/personal, /obj/machinery/status_display{ pixel_y = 32 }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/wardrobe/white, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/crew_quarters/dorms) "axF" = ( -/obj/structure/closet/secure_closet/personal, /obj/machinery/light_switch{ pixel_y = 24 }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/wardrobe/grey, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/crew_quarters/dorms) "axG" = ( -/obj/structure/closet/secure_closet/personal, +/obj/effect/turf_decal/bot, +/obj/structure/closet/wardrobe/black, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -13182,13 +12726,6 @@ }, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"axL" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port/central) "axM" = ( /obj/structure/table/wood, /obj/item/lipstick/random{ @@ -13284,14 +12821,6 @@ dir = 8 }, /area/crew_quarters/bar/atrium) -"axU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/starboard/central) "axV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/newscaster{ @@ -13345,6 +12874,7 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/blue/side{ dir = 10 }, @@ -13368,7 +12898,6 @@ on = 1; target_pressure = 4500 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "ayf" = ( @@ -13378,7 +12907,6 @@ name = "waste filter"; on = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, @@ -13432,7 +12960,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -13446,7 +12973,6 @@ dir = 4; pixel_x = 24 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -13458,7 +12984,6 @@ dir = 8; pixel_x = -24 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/atmos) @@ -13479,9 +13004,11 @@ /area/engine/atmos) "ayq" = ( /obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, /obj/item/paper_bin, /obj/item/pen, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/caution{ dir = 8 }, @@ -13493,7 +13020,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/caution{ dir = 4 }, @@ -13565,7 +13091,6 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; - req_access_txt = "0"; specialfunctions = 4 }, /turf/open/floor/plasteel/grimy, @@ -13584,20 +13109,10 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; - req_access_txt = "0"; specialfunctions = 4 }, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"ayD" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/maintenance/port/central) "ayE" = ( /obj/structure/table/wood, /obj/item/device/instrument/violin, @@ -13627,7 +13142,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "ayI" = ( /obj/structure/table/wood, @@ -13640,8 +13155,8 @@ dir = 4; network = list("MINE") }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/bar/atrium) "ayJ" = ( @@ -13696,7 +13211,6 @@ /area/maintenance/starboard/central) "ayQ" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -13707,8 +13221,6 @@ /obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/mask/gas, /obj/item/clothing/head/hardhat/red, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 1 }, @@ -13749,7 +13261,9 @@ "ayV" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "ayW" = ( /obj/structure/table/reinforced, @@ -13892,7 +13406,7 @@ dir = 4; name = "O2 to Pure" }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -13914,13 +13428,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible, /turf/open/floor/plasteel/neutral, /area/engine/atmos) -"azn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/engine/atmos) "azo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -13947,7 +13454,6 @@ /turf/open/floor/plasteel/neutral, /area/engine/atmos) "azr" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, @@ -14013,6 +13519,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/plasteel/caution{ dir = 8 }, @@ -14090,7 +13599,10 @@ pixel_y = -22 }, /obj/machinery/light, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken5" + }, /area/crew_quarters/theatre) "azG" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -14099,7 +13611,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "azH" = ( /obj/machinery/door/window/eastright{ @@ -14114,14 +13626,14 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "azI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/bar/atrium) "azJ" = ( @@ -14159,40 +13671,38 @@ /turf/closed/wall, /area/maintenance/starboard/central) "azN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "azO" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/side, +/turf/open/floor/plating, /area/maintenance/starboard/central) "azP" = ( /obj/effect/landmark/blobstart, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral/side, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/starboard/central) "azQ" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, -/turf/open/floor/plasteel, /area/maintenance/starboard/central) "azR" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -14203,7 +13713,6 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "azS" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -14217,8 +13726,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) +/turf/open/floor/plating, +/area/maintenance/starboard/central) "azT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -14229,9 +13738,13 @@ }, /area/hallway/primary/central) "azU" = ( -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "azV" = ( /obj/structure/table/reinforced, @@ -14348,7 +13861,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -14365,7 +13877,7 @@ dir = 1; pixel_y = 1 }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/arrival{ dir = 9 }, @@ -14374,7 +13886,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, /area/engine/atmos) "aAn" = ( @@ -14588,6 +14099,7 @@ dir = 8; network = list("SS13") }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/arrival{ dir = 4 }, @@ -14615,7 +14127,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/crew_quarters/theatre) "aAN" = ( /obj/machinery/power/apc{ @@ -14709,18 +14221,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard/central) -"aAU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aAV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -14732,13 +14233,12 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/turf/open/floor/plasteel/neutral/side{ - dir = 1; - heat_capacity = 1e+006 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" }, /area/maintenance/starboard/central) "aAW" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -14746,10 +14246,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aAX" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, @@ -14790,8 +14287,9 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aBb" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel/vault{ +/obj/machinery/vending/cola/random, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/hallway/primary/central) @@ -14842,14 +14340,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"aBi" = ( -/obj/structure/fans/tiny, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aBj" = ( @@ -14929,6 +14419,8 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced, /turf/open/floor/plasteel/arrival{ dir = 8 }, @@ -15036,7 +14528,6 @@ dir = 4 }, /obj/structure/closet/crate/bin, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/caution{ dir = 10 }, @@ -15200,6 +14691,7 @@ /area/crew_quarters/dorms) "aBT" = ( /obj/machinery/washing_machine, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/arrival{ dir = 4 }, @@ -15228,12 +14720,15 @@ /obj/machinery/camera{ c_tag = "Theatre Storage" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/theatre) "aBW" = ( -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken7" + }, /area/crew_quarters/theatre) "aBX" = ( /obj/machinery/vending/autodrobe, @@ -15322,13 +14817,13 @@ }, /area/hallway/primary/central) "aCh" = ( -/obj/machinery/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/firealarm{ dir = 4; - icon_state = "fire0"; pixel_x = 24 }, -/turf/open/floor/plasteel/vault{ +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/hallway/primary/central) @@ -15382,10 +14877,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/machinery/door/airlock/glass_security{ - name = "Holding Area"; - req_access_txt = "2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -15396,6 +14887,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/door/airlock/security/glass{ + name = "Security Checkpoint"; + req_access_txt = "63" + }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aCm" = ( @@ -15411,7 +14906,7 @@ /turf/open/floor/plating, /area/hallway/secondary/exit) "aCo" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, @@ -15422,7 +14917,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) "aCq" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Cockpit"; req_access_txt = "19" }, @@ -15458,9 +14953,8 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/engine/atmos) "aCu" = ( @@ -15471,16 +14965,17 @@ /obj/structure/sign/fire{ pixel_y = -32 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 8 +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/engine/atmos) "aCv" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible, /obj/machinery/meter, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/engine/atmos) "aCw" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ @@ -15491,7 +14986,9 @@ pixel_y = -32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/engine/atmos) "aCx" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ @@ -15501,19 +14998,20 @@ /obj/structure/fireaxecabinet{ pixel_y = -28 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/engine/atmos) "aCy" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 9 }, /obj/structure/closet/secure_closet/atmospherics, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/engine/atmos) "aCz" = ( /obj/structure/table/reinforced, @@ -15529,7 +15027,6 @@ pixel_y = -22 }, /obj/machinery/light, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -15550,8 +15047,6 @@ /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/arrival, /area/engine/atmos) "aCC" = ( @@ -15563,7 +15058,6 @@ dir = 1; pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/escape, /area/engine/atmos) "aCD" = ( @@ -15571,8 +15065,9 @@ dir = 1 }, /obj/machinery/portable_atmospherics/scrubber, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/escape, /area/engine/atmos) "aCE" = ( @@ -15583,7 +15078,9 @@ icon_state = "1-2" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/engine/atmos) "aCF" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -15597,7 +15094,9 @@ dir = 1 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/engine/atmos) "aCG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -15625,7 +15124,7 @@ name = "Atmospherics Lockdown Blast door" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Desk"; req_access_txt = "24" }, @@ -15726,8 +15225,8 @@ /obj/structure/sign/poster/contraband/clown{ pixel_x = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/theatre) "aCQ" = ( @@ -15735,7 +15234,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "aCR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -15745,7 +15244,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "aCS" = ( /obj/structure/dresser, @@ -15785,11 +15284,11 @@ c_tag = "Kitchen"; dir = 2 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/kitchen) "aCW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/kitchen) "aCX" = ( /obj/structure/sink/kitchen{ @@ -15797,7 +15296,7 @@ name = "sink"; pixel_y = 28 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/kitchen) "aCY" = ( /obj/structure/closet/secure_closet/freezer/fridge, @@ -15810,14 +15309,14 @@ name = "Kitchen RC"; pixel_y = 32 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/kitchen) "aCZ" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/machinery/newscaster{ pixel_y = 32 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/kitchen) "aDa" = ( /obj/structure/table/reinforced, @@ -15831,18 +15330,15 @@ /obj/structure/sign/nanotrasen{ pixel_x = 32 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/crew_quarters/kitchen) "aDb" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aDc" = ( /obj/machinery/status_display, @@ -15875,6 +15371,9 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/escape{ dir = 1 }, @@ -15890,9 +15389,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aDj" = ( @@ -16011,7 +15507,6 @@ dir = 4 }, /obj/machinery/portable_atmospherics/scrubber, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/escape{ dir = 8 }, @@ -16101,7 +15596,6 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; - req_access_txt = "0"; specialfunctions = 4 }, /turf/open/floor/wood, @@ -16117,7 +15611,6 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = 25; - req_access_txt = "0"; specialfunctions = 4 }, /turf/open/floor/plasteel/grimy, @@ -16136,13 +15629,13 @@ /obj/structure/mirror{ pixel_x = -28 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/crew_quarters/theatre) "aDK" = ( /obj/effect/landmark/start/mime, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/crew_quarters/theatre) "aDL" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -16151,7 +15644,10 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken5" + }, /area/crew_quarters/theatre) "aDM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -16323,6 +15819,9 @@ /area/hallway/secondary/exit) "aEe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aEf" = ( @@ -16457,8 +15956,6 @@ /area/shuttle/escape) "aEn" = ( /obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/nosmoking_2{ pixel_y = 32 }, @@ -16472,24 +15969,22 @@ network = list("SS13") }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/engine/engineering) "aEo" = ( /obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/engine/engineering) "aEp" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/open/floor/plasteel, /area/engine/engineering) "aEq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/power/port_gen/pacman, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -16498,14 +15993,15 @@ /area/engine/engineering) "aEr" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/engine/engineering) "aEs" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/engine/engineering) "aEt" = ( /turf/closed/wall/r_wall, @@ -16526,7 +16022,8 @@ /obj/machinery/light/small{ dir = 1 }, -/turf/open/floor/plasteel/vault, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side, /area/engine/engineering) "aEv" = ( /obj/structure/cable/white{ @@ -16558,7 +16055,6 @@ /area/engine/engineering) "aEx" = ( /obj/structure/closet/radiation, -/obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/meson, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -16569,7 +16065,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aEy" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -16583,7 +16078,6 @@ "aEz" = ( /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -16684,6 +16178,7 @@ dir = 8; pixel_x = -24 }, +/obj/effect/turf_decal/bot, /obj/structure/closet/crate/bin, /turf/open/floor/plasteel/vault{ dir = 5 @@ -16693,12 +16188,14 @@ /obj/machinery/status_display{ pixel_y = -32 }, +/obj/effect/turf_decal/bot, /obj/machinery/vending/kink, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/crew_quarters/dorms) "aEM" = ( +/obj/effect/turf_decal/bot, /obj/machinery/vending/clothing, /turf/open/floor/plasteel/vault{ dir = 5 @@ -16716,6 +16213,7 @@ dir = 8; network = list("SS13") }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -16741,6 +16239,7 @@ pixel_y = -32 }, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken7" }, /area/crew_quarters/dorms) @@ -16773,8 +16272,8 @@ /obj/structure/sign/poster/contraband/random{ pixel_y = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/corner{ + dir = 4 }, /area/crew_quarters/theatre) "aET" = ( @@ -16787,8 +16286,8 @@ name = "Station Intercom"; pixel_y = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/theatre) "aEU" = ( @@ -16799,8 +16298,8 @@ pixel_y = -32 }, /obj/structure/closet/crate/wooden/toy, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/theatre) "aEV" = ( @@ -16812,8 +16311,8 @@ dir = 8; pixel_x = 24 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/theatre) "aEW" = ( @@ -16852,6 +16351,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/white, /area/crew_quarters/kitchen) "aFb" = ( @@ -16867,6 +16367,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red, /area/crew_quarters/kitchen) "aFc" = ( @@ -16885,6 +16386,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/white, /area/crew_quarters/kitchen) "aFd" = ( @@ -16893,6 +16395,7 @@ icon_state = "4-8" }, /obj/machinery/deepfryer, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/red, /area/crew_quarters/kitchen) "aFe" = ( @@ -16905,7 +16408,6 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/kitchen) "aFf" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Kitchen Maintenance"; req_access_txt = "28" @@ -16923,7 +16425,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aFg" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -16941,44 +16443,19 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/starboard/central) -"aFh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, -/area/hallway/primary/central) "aFi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"aFj" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" - }, +"aFk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"aFk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aFl" = ( @@ -16989,6 +16466,9 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aFo" = ( @@ -17005,24 +16485,22 @@ /area/shuttle/escape) "aFq" = ( /obj/machinery/power/emitter, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/engine/engineering) "aFr" = ( /obj/machinery/power/emitter, -/obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/engine/engineering) "aFs" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -17035,13 +16513,11 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aFu" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/engine/engineering) "aFv" = ( /obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, /obj/item/crowbar/red, /obj/item/stack/sheet/mineral/plasma{ amount = 20 @@ -17049,13 +16525,14 @@ /obj/item/device/gps/engineering{ gpstag = "ENG0" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/engine/engineering) "aFw" = ( /obj/structure/cable/white{ @@ -17064,11 +16541,13 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aFx" = ( @@ -17078,13 +16557,15 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "2-4" }, /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aFy" = ( @@ -17095,7 +16576,6 @@ dir = 4; pixel_x = 24 }, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "0-8" }, @@ -17107,11 +16587,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aFz" = ( /obj/structure/closet/radiation, -/obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, @@ -17126,7 +16608,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -17136,10 +16617,8 @@ "aFB" = ( /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -17275,14 +16754,6 @@ }, /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) -"aFM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port/central) "aFN" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -17370,26 +16841,15 @@ "aFY" = ( /obj/machinery/holopad, /obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"aFZ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit) +/area/hallway/primary/central) "aGa" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, @@ -17398,6 +16858,9 @@ /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aGc" = ( @@ -17437,8 +16900,6 @@ id = "engstorage"; name = "Engineering Secure Storage Lockdown" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -17466,7 +16927,7 @@ /area/engine/engineering) "aGk" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Power Monitoring"; req_access_txt = "32" }, @@ -17476,8 +16937,6 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -17519,7 +16978,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -17538,7 +16996,6 @@ dir = 4 }, /obj/machinery/portable_atmospherics/pump, -/obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ pixel_x = -24 }, @@ -17619,9 +17076,8 @@ /area/maintenance/port/central) "aGz" = ( /obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/maintenance/port/central) "aGA" = ( @@ -17631,20 +17087,18 @@ pixel_y = 28 }, /obj/item/reagent_containers/glass/bucket, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/maintenance/port/central) "aGB" = ( /obj/structure/mopbucket, -/obj/effect/decal/cleanable/dirt, /obj/item/mop, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 1 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/maintenance/port/central) "aGC" = ( @@ -17661,12 +17115,9 @@ areastring = "/area/maintenance/port/central"; pixel_y = 25 }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plating, /area/maintenance/port/central) "aGE" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, @@ -17675,28 +17126,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/central) -"aGF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port/central) "aGG" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port/central) "aGH" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -17704,12 +17146,9 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plating, /area/maintenance/port/central) "aGI" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -17717,10 +17156,10 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" }, -/turf/open/floor/plasteel, /area/maintenance/port/central) "aGJ" = ( /obj/structure/cable/white{ @@ -17729,11 +17168,10 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aGK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -17742,35 +17180,31 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" }, -/turf/open/floor/plasteel, /area/maintenance/port/central) "aGL" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, -/turf/open/floor/plasteel, /area/maintenance/port/central) "aGM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aGN" = ( /obj/structure/chair/stool, @@ -17837,25 +17271,28 @@ dir = 1; pixel_y = -32 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/turf/open/floor/plasteel/escape, /area/crew_quarters/kitchen) "aGS" = ( /obj/machinery/processor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/end{ - dir = 1 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/escape, /area/crew_quarters/kitchen) "aGT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/kitchen) "aGU" = ( @@ -17870,8 +17307,8 @@ /obj/item/storage/box/donkpockets, /obj/item/clothing/head/chefhat, /obj/machinery/light, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/kitchen) "aGV" = ( @@ -17885,8 +17322,8 @@ dir = 1; pixel_y = -22 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/kitchen) "aGW" = ( @@ -17896,8 +17333,8 @@ pixel_x = -3; pixel_y = 5 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 1 }, /area/crew_quarters/kitchen) "aGX" = ( @@ -17914,13 +17351,6 @@ dir = 1 }, /area/engine/gravity_generator) -"aHf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/engine/gravity_generator) "aHg" = ( /obj/machinery/camera{ c_tag = "Gravity Generator Room"; @@ -17955,33 +17385,31 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHj" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHk" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHl" = ( /obj/structure/cable/white{ @@ -17993,7 +17421,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHm" = ( /obj/structure/cable/white{ @@ -18009,7 +17437,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHn" = ( /obj/structure/cable/white{ @@ -18030,7 +17458,7 @@ network = list("SS13","Engine"); pixel_x = 23 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHo" = ( /obj/structure/cable/white{ @@ -18039,12 +17467,11 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHp" = ( /obj/structure/cable{ @@ -18059,7 +17486,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHq" = ( /obj/structure/cable/white{ @@ -18077,7 +17504,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aHr" = ( /obj/structure/cable/white{ @@ -18086,26 +17513,13 @@ /obj/machinery/firealarm{ pixel_y = 24 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aHs" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/caution{ - dir = 1 - }, +/turf/open/floor/engine, /area/engine/engineering) "aHt" = ( /obj/structure/cable/white{ @@ -18114,14 +17528,13 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/caution{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/turf/open/floor/engine, /area/engine/engineering) "aHu" = ( /obj/structure/cable/white{ @@ -18130,13 +17543,13 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/caution{ +/obj/effect/turf_decal/stripes/line{ dir = 5 }, +/turf/open/floor/engine, /area/engine/engineering) "aHv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -18180,7 +17593,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -18274,7 +17686,6 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aHE" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -18282,10 +17693,11 @@ icon_state = "4-8" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "aHF" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -18302,22 +17714,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/maintenance/port/central) -"aHG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aHH" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -18330,36 +17729,19 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, -/turf/open/floor/plasteel, /area/maintenance/port/central) "aHI" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/maintenance/port/central) -"aHJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aHK" = ( /obj/effect/landmark/blobstart, @@ -18384,7 +17766,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating, /area/maintenance/port/central) "aHM" = ( /turf/closed/wall, @@ -18400,7 +17782,6 @@ name = "Hydroponic's Maintenance"; req_access_txt = "35" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -18414,7 +17795,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aHP" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -18483,19 +17864,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) -"aHX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/starboard/central) "aHY" = ( /obj/structure/table, /obj/item/paper_bin, /obj/item/pen, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "aHZ" = ( /obj/item/twohanded/required/kirbyplants{ @@ -18545,19 +17921,18 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIg" = ( /obj/structure/cable{ icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 6 }, /obj/machinery/meter, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIh" = ( /obj/structure/cable{ @@ -18567,7 +17942,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIi" = ( /obj/structure/cable{ @@ -18577,13 +17952,12 @@ /obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIj" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, @@ -18591,7 +17965,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIk" = ( /obj/structure/cable{ @@ -18601,12 +17975,11 @@ dir = 1; pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIl" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -18618,7 +17991,7 @@ icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIm" = ( /obj/machinery/button/door{ @@ -18637,13 +18010,12 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIn" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, @@ -18651,7 +18023,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIo" = ( /obj/structure/cable{ @@ -18661,7 +18033,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIp" = ( /obj/structure/cable{ @@ -18672,7 +18044,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIq" = ( /obj/structure/cable{ @@ -18684,18 +18056,17 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIr" = ( /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aIs" = ( /obj/structure/table/reinforced, @@ -18705,7 +18076,6 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Engineering Monitoring"; dir = 2; @@ -18726,14 +18096,12 @@ pixel_y = 24 }, /obj/structure/closet/crate/bin, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) "aIv" = ( /obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, /obj/item/paper_bin, /obj/item/pen, /obj/effect/turf_decal/bot, @@ -18820,31 +18188,33 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aID" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/janitor) "aIE" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, /turf/open/floor/plasteel, /area/maintenance/port/central) "aIF" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/port/central) "aIG" = ( /obj/item/crowbar/red, @@ -18859,22 +18229,20 @@ /obj/item/reagent_containers/glass/bucket, /obj/structure/closet/crate/hydroponics, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/hydroponics) "aIH" = ( /obj/structure/sink{ dir = 4; pixel_x = 12 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/hydroponics) "aII" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -18907,8 +18275,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/hydroponics) "aIM" = ( /obj/machinery/chem_master/condimaster{ @@ -18922,7 +18289,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/hydroponics) "aIN" = ( /obj/machinery/vending/hydronutrients, @@ -18930,7 +18297,7 @@ pixel_y = 30 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/hydroponics) "aIO" = ( /obj/machinery/vending/hydroseeds, @@ -18946,7 +18313,7 @@ req_access_txt = "35" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/hydroponics) "aIP" = ( /obj/structure/table/reinforced, @@ -18965,19 +18332,20 @@ pixel_x = 32 }, /obj/structure/closet/crate/bin, -/turf/open/floor/plasteel/bar, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, /area/crew_quarters/bar/atrium) "aIR" = ( /obj/structure/closet/secure_closet/freezer/meat, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aIS" = ( /obj/structure/closet/chefcloset, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aIT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -18989,8 +18357,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aIU" = ( /obj/structure/sink/kitchen{ @@ -19024,10 +18391,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, /obj/structure/reagent_dispensers/cooking_oil, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) "aIX" = ( @@ -19113,7 +18478,6 @@ /obj/machinery/light{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot_white/left, /turf/open/floor/plasteel/vault{ dir = 4 @@ -19141,7 +18505,6 @@ pixel_x = -24; pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/machinery/camera{ c_tag = "Gravity Generator Entry"; @@ -19189,7 +18552,6 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aJn" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/power/smes{ charge = 5e+006 @@ -19223,7 +18585,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aJq" = ( /obj/structure/cable{ @@ -19233,7 +18595,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aJr" = ( /obj/item/wrench, @@ -19241,7 +18603,7 @@ dir = 6 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aJs" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ @@ -19249,7 +18611,7 @@ }, /obj/machinery/meter, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aJt" = ( /obj/structure/sign/radiation, @@ -19259,43 +18621,23 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/closed/wall/r_wall, /area/engine/supermatter) -"aJv" = ( -/obj/machinery/door/airlock/glass_atmos{ - name = "Supermatter Chamber"; - req_access_txt = "24" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) "aJw" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; name = "External Gas to Loop" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aJx" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "External Gas to Loop" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aJy" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aJz" = ( /obj/structure/cable/white{ @@ -19307,7 +18649,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aJA" = ( /obj/effect/spawner/structure/window/reinforced, @@ -19337,6 +18679,9 @@ /obj/item/grenade/chem_grenade/smart_metal_foam, /obj/item/grenade/chem_grenade/smart_metal_foam, /obj/item/crowbar, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/yellow/side{ dir = 8 }, @@ -19348,6 +18693,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/yellow, /area/engine/engineering) "aJD" = ( @@ -19355,6 +18703,9 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/neutral, /area/engine/engineering) "aJE" = ( @@ -19363,6 +18714,9 @@ dir = 4 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "aJF" = ( @@ -19370,6 +18724,9 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/neutral, /area/engine/engineering) "aJG" = ( @@ -19377,6 +18734,9 @@ dir = 4 }, /obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, /turf/open/floor/plasteel/yellow, /area/engine/engineering) "aJH" = ( @@ -19386,6 +18746,7 @@ /obj/machinery/computer/apc_control{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/yellow/side{ dir = 4 }, @@ -19421,11 +18782,12 @@ c_tag = "Custodial Closet" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/janitor) "aJJ" = ( /obj/vehicle/ridden/janicart, -/obj/effect/decal/cleanable/dirt, /obj/item/storage/bag/trash, /obj/item/key/janitor, /obj/machinery/power/apc/highcap/five_k{ @@ -19441,8 +18803,6 @@ /turf/open/floor/plasteel, /area/janitor) "aJK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -19451,16 +18811,16 @@ /area/janitor) "aJL" = ( /obj/structure/closet/crate/bin, -/obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ pixel_y = 26 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/janitor) "aJM" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -19475,7 +18835,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port/central) "aJN" = ( /obj/machinery/seed_extractor, @@ -19556,8 +18916,8 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar/atrium) "aJX" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel/vault{ +/obj/machinery/vending/cola/random, +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/crew_quarters/bar/atrium) @@ -19574,8 +18934,7 @@ dir = 4; network = list("MINE") }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aKa" = ( /obj/machinery/airalarm{ @@ -19629,11 +18988,9 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) "aKf" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -19646,12 +19003,17 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/starboard/central) "aKg" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/hallway/primary/central) "aKh" = ( /obj/structure/sign/nanotrasen, @@ -19671,11 +19033,9 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aKj" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ opacity = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -19697,7 +19057,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) "aKo" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -19720,17 +19080,12 @@ "aKq" = ( /turf/open/floor/plasteel/vault, /area/engine/gravity_generator) -"aKr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault, -/area/engine/gravity_generator) "aKs" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Gravity Generator Chamber"; req_access_txt = "19; 61" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -19746,8 +19101,6 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aKt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, @@ -19761,7 +19114,6 @@ /area/engine/gravity_generator) "aKu" = ( /obj/machinery/holopad, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -19774,7 +19126,6 @@ /turf/open/floor/plasteel/neutral, /area/engine/gravity_generator) "aKv" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable/white{ icon_state = "1-4" @@ -19785,7 +19136,6 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aKw" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -19835,7 +19185,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aKz" = ( /obj/machinery/portable_atmospherics/scrubber, @@ -19843,7 +19193,7 @@ dir = 1 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aKA" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -19854,21 +19204,13 @@ dir = 4; pixel_x = -23 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) -"aKB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, /area/engine/supermatter) "aKC" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2; - icon_state = "pump_map"; name = "Gas to Chamber" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, /area/engine/supermatter) "aKD" = ( @@ -19881,17 +19223,7 @@ }, /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aKF" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aKG" = ( /obj/structure/cable/white{ @@ -19903,7 +19235,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aKH" = ( /obj/machinery/door/firedoor, @@ -19966,7 +19298,6 @@ /obj/item/stack/cable_coil/white, /obj/item/electronics/airlock, /obj/item/electronics/airlock, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -19997,6 +19328,9 @@ /obj/structure/cable/white{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/neutral, /area/engine/engineering) "aKO" = ( @@ -20012,6 +19346,7 @@ /obj/machinery/computer/rdconsole/production{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/yellow/side{ dir = 4 }, @@ -20030,7 +19365,9 @@ pixel_x = -32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/janitor) "aKQ" = ( /obj/effect/landmark/start/janitor, @@ -20055,7 +19392,6 @@ /area/janitor) "aKS" = ( /obj/structure/janitorialcart, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, @@ -20063,12 +19399,17 @@ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/janitor) "aKT" = ( /obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, /area/maintenance/port/central) "aKU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -20106,7 +19447,7 @@ }, /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/neutral, /area/hydroponics) "aKY" = ( /obj/structure/table/glass, @@ -20120,7 +19461,7 @@ /obj/item/reagent_containers/glass/bottle/nutrient/rh, /obj/item/reagent_containers/dropper, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/neutral, /area/hydroponics) "aKZ" = ( /obj/structure/table/glass, @@ -20129,7 +19470,7 @@ /obj/item/grenade/chem_grenade/antiweed, /obj/item/grenade/chem_grenade/antiweed, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/neutral, /area/hydroponics) "aLa" = ( /obj/machinery/holopad, @@ -20138,7 +19479,7 @@ icon_state = "1-2" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/neutral, /area/hydroponics) "aLb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -20158,7 +19499,9 @@ /obj/item/seeds/wheat, /obj/item/reagent_containers/food/snacks/grown/tomato, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/hydroponics) "aLd" = ( /obj/structure/table/glass, @@ -20173,7 +19516,9 @@ }, /obj/item/seeds/tower, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/hydroponics) "aLe" = ( /obj/machinery/smartfridge, @@ -20187,16 +19532,15 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar/atrium) "aLg" = ( -/obj/machinery/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/firealarm{ dir = 4; - icon_state = "fire0"; pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/crew_quarters/bar/atrium) @@ -20212,6 +19556,9 @@ dir = 4 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) "aLj" = ( @@ -20223,22 +19570,27 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) "aLk" = ( /obj/structure/kitchenspike, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) "aLl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/turf/closed/wall, +/turf/closed/wall/rust, /area/crew_quarters/kitchen) "aLm" = ( /obj/structure/extinguisher_cabinet{ @@ -20255,25 +19607,6 @@ dir = 5 }, /area/hallway/secondary/exit) -"aLu" = ( -/obj/structure/fans/tiny, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"aLv" = ( -/obj/machinery/door/airlock/external{ - name = "External Docking Port" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) "aLw" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -20304,7 +19637,6 @@ pixel_y = 3 }, /obj/item/lazarus_injector, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /mob/living/simple_animal/bot/medbot{ name = "\improper emergency medibot"; @@ -20342,8 +19674,6 @@ /turf/open/floor/plasteel/cmo, /area/shuttle/escape) "aLD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/power/port_gen/pacman, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -20354,7 +19684,6 @@ /obj/machinery/status_display{ pixel_y = -32 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -20366,7 +19695,6 @@ /obj/structure/table/reinforced, /obj/item/stack/sheet/plasteel/twenty, /obj/item/wrench, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -20398,7 +19726,6 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aLI" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -20423,13 +19750,11 @@ /area/engine/gravity_generator) "aLK" = ( /obj/structure/closet/radiation, -/obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/meson, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -20451,7 +19776,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -20459,7 +19783,7 @@ dir = 1; filter_type = "n2" }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aLN" = ( /obj/structure/cable{ @@ -20474,7 +19798,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aLO" = ( /obj/machinery/ai_status_display, @@ -20491,10 +19815,10 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, -/turf/closed/wall/r_wall, +/turf/closed/wall/r_wall/rust, /area/engine/supermatter) "aLR" = ( -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Supermatter Chamber"; req_access_txt = "24" }, @@ -20524,13 +19848,12 @@ /obj/machinery/light{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aLW" = ( /obj/structure/cable/white{ @@ -20539,7 +19862,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aLX" = ( /obj/effect/spawner/structure/window/reinforced, @@ -20561,20 +19884,27 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/yellow, /area/engine/engineering) "aMc" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/yellow, /area/engine/engineering) "aMd" = ( /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, /obj/machinery/rnd/circuit_imprinter, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/yellow/side{ dir = 4 }, @@ -20587,14 +19917,13 @@ }, /obj/item/storage/box/lights/mixed, /obj/item/device/lightreplacer, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/janitor) "aMf" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -20620,26 +19949,23 @@ pixel_x = 12 }, /obj/item/reagent_containers/glass/bucket, -/obj/effect/decal/cleanable/dirt, /obj/item/mop, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/janitor) "aMi" = ( /obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/maintenance/port/central) "aMj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -20654,7 +19980,6 @@ /obj/machinery/status_display{ pixel_x = -32 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -20743,38 +20068,6 @@ }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar/atrium) -"aMv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard/central) -"aMw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard/central) "aMx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -20789,7 +20082,9 @@ icon_state = "plant-22" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "aMz" = ( /obj/item/twohanded/required/kirbyplants{ @@ -20812,7 +20107,6 @@ /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aMC" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -20822,7 +20116,6 @@ /obj/machinery/status_display{ pixel_x = -32 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /obj/machinery/light{ dir = 8 @@ -20836,7 +20129,6 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aMF" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -20859,14 +20151,12 @@ /obj/item/crowbar, /obj/item/wrench, /obj/item/device/radio, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) "aMH" = ( /obj/machinery/shower{ dir = 4; - icon_state = "shower"; name = "emergency shower" }, /turf/open/floor/plasteel/cmo, @@ -20932,7 +20222,6 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Engineering Port"; dir = 4; @@ -20944,35 +20233,20 @@ /obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aMP" = ( /obj/structure/cable{ icon_state = "1-4" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) -"aMQ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/supermatter) "aMR" = ( /obj/machinery/camera{ c_tag = "Supermatter Chamber"; @@ -21032,20 +20306,6 @@ }, /turf/open/floor/engine, /area/engine/supermatter) -"aMY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/supermatter) "aMZ" = ( /obj/structure/cable{ icon_state = "1-8" @@ -21053,17 +20313,14 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aNa" = ( /obj/machinery/suit_storage_unit/engine, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = -26 @@ -21081,7 +20338,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aNb" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/tank_dispenser, /obj/machinery/light, /obj/structure/extinguisher_cabinet{ @@ -21097,7 +20353,6 @@ /obj/machinery/status_display{ pixel_y = -32 }, -/obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/meson/engine, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -21114,6 +20369,7 @@ pixel_y = -32 }, /obj/machinery/rnd/protolathe/department/engineering, +/obj/effect/turf_decal/stripes/box, /turf/open/floor/plasteel, /area/engine/engineering) "aNe" = ( @@ -21128,7 +20384,6 @@ /area/engine/engineering) "aNf" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 @@ -21141,7 +20396,6 @@ /area/engine/engineering) "aNg" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/nosmoking_2{ pixel_y = -32 }, @@ -21179,14 +20433,14 @@ "aNj" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/reagent_containers/glass/bucket, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/janitor) "aNk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -21208,9 +20462,10 @@ /area/janitor) "aNm" = ( /obj/structure/closet/l3closet/janitor, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/janitor) "aNn" = ( /obj/structure/rack, @@ -21218,14 +20473,12 @@ /obj/item/crowbar/red, /obj/item/wrench, /obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, /turf/open/floor/plasteel, /area/maintenance/port/central) "aNo" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/splatter, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -21244,11 +20497,12 @@ /obj/item/book/manual/hydroponics_pod_people, /obj/item/storage/box/syringes, /obj/item/paper/guides/jobs/hydroponics, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /obj/item/storage/box/disks_plantgene, /obj/item/toy/figure/botanist, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/hydroponics) "aNq" = ( /obj/machinery/hydroponics/constructable, @@ -21278,7 +20532,6 @@ pixel_y = -24 }, /obj/machinery/light, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -21286,8 +20539,9 @@ /area/hydroponics) "aNt" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/hydroponics) "aNu" = ( /obj/structure/closet/crate/bin, @@ -21298,7 +20552,9 @@ network = list("SS13") }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/hydroponics) "aNv" = ( /obj/structure/window/reinforced{ @@ -21349,7 +20605,6 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar/atrium) "aNA" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -21369,7 +20624,6 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "aNC" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -21377,10 +20631,12 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/starboard/central) "aND" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, @@ -21432,7 +20688,6 @@ /area/hallway/secondary/exit) "aNH" = ( /obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, /obj/machinery/ai_status_display{ pixel_y = -32 }, @@ -21451,7 +20706,6 @@ /area/hallway/secondary/exit) "aNJ" = ( /obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, /obj/machinery/status_display{ pixel_y = -32 }, @@ -21480,13 +20734,11 @@ name = "Station Intercom"; pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) "aNM" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -21513,7 +20765,6 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -21615,7 +20866,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/machinery/meter, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aNZ" = ( /obj/structure/cable{ @@ -21628,7 +20879,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aOa" = ( /obj/machinery/power/supermatter_shard/crystal/engine, @@ -21643,25 +20894,11 @@ name = "Radiation Chamber Shutters" }, /obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating, /area/engine/supermatter) -"aOc" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, -/area/engine/engineering) "aOd" = ( /obj/machinery/power/apc{ dir = 4; @@ -21670,11 +20907,10 @@ pixel_x = 26 }, /obj/structure/cable/white, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aOe" = ( /obj/structure/sign/nanotrasen, @@ -21697,30 +20933,13 @@ }, /turf/open/floor/plasteel, /area/janitor) -"aOg" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/port/central) "aOh" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hydroponics) "aOi" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Hydroponics"; req_access_txt = "35" }, @@ -21789,8 +21008,6 @@ /turf/closed/wall, /area/maintenance/starboard/central) "aOu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -21805,7 +21022,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard/central) "aOv" = ( /obj/machinery/computer/message_monitor{ @@ -21854,14 +21071,13 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aOB" = ( /obj/structure/cable{ @@ -21919,12 +21135,11 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aOG" = ( /obj/machinery/firealarm{ @@ -21934,7 +21149,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aOH" = ( /turf/closed/wall/r_wall, @@ -21949,28 +21164,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/port) -"aOJ" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port) -"aOK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/port) "aOL" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -21978,13 +21171,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, -/turf/open/floor/plasteel, /area/maintenance/port) "aOM" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -21992,13 +21184,11 @@ icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ - dir = 2 + dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "aON" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -22018,7 +21208,6 @@ /turf/open/floor/plasteel, /area/maintenance/port) "aOO" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -22028,6 +21217,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -22491,21 +21681,22 @@ /obj/structure/table, /obj/item/storage/briefcase, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "aPz" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aPA" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, /obj/item/storage/secure/briefcase, /obj/item/restraints/handcuffs, /obj/item/grenade/smokebomb, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aPB" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -22526,11 +21717,11 @@ dir = 1 }, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aPC" = ( /obj/structure/dresser, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aPD" = ( /turf/closed/wall/mineral/plastitanium, /area/shuttle/escape) @@ -22542,15 +21733,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/shuttle/escape) -"aPF" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/escape) "aPG" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -22562,14 +21744,13 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aPJ" = ( /obj/machinery/light{ @@ -22581,7 +21762,7 @@ /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aPK" = ( /obj/structure/sign/electricshock, @@ -22602,7 +21783,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aPN" = ( /obj/machinery/newscaster{ @@ -22614,7 +21795,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aPO" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -22623,8 +21804,6 @@ /turf/closed/wall/r_wall, /area/maintenance/port) "aPP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -22635,18 +21814,18 @@ /turf/open/floor/plating, /area/maintenance/port) "aPQ" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, /turf/open/floor/plasteel, /area/maintenance/port) "aPR" = ( @@ -22657,40 +21836,43 @@ /turf/open/floor/plating, /area/maintenance/port) "aPS" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/maintenance/port) "aPT" = ( /obj/structure/rack, /obj/item/reagent_containers/food/drinks/bottle/whiskey, /obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/maintenance/port) "aPU" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/maintenance/port) "aPV" = ( @@ -22700,7 +21882,7 @@ /turf/closed/wall, /area/maintenance/port) "aPW" = ( -/obj/machinery/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -22708,6 +21890,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -22984,7 +22167,9 @@ dir = 1 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "aQB" = ( /obj/structure/table/wood, @@ -22998,24 +22183,23 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aQC" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/chair/office/dark{ dir = 4 }, /obj/effect/landmark/revenantspawn, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aQD" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/xeno_spawn, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken" }, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aQE" = ( /obj/structure/shuttle/engine/propulsion, /obj/effect/turf_decal/stripes/line, @@ -23025,6 +22209,10 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -23058,7 +22246,7 @@ /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQK" = ( /obj/effect/turf_decal/stripes/line{ @@ -23067,7 +22255,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQM" = ( /obj/effect/turf_decal/stripes/line{ @@ -23076,7 +22264,7 @@ /obj/machinery/atmospherics/components/trinary/filter/critical{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQN" = ( /obj/effect/turf_decal/stripes/line{ @@ -23085,10 +22273,9 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQO" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Engineering Aft"; dir = 2; @@ -23098,9 +22285,10 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/obj/effect/turf_decal/loading_area{ + dir = 1 }, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aQP" = ( /obj/effect/turf_decal/stripes/line{ @@ -23109,20 +22297,9 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aQQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQR" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -23130,7 +22307,7 @@ /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQS" = ( /obj/machinery/meter, @@ -23140,28 +22317,18 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQT" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aQU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/maintenance/port) -"aQV" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/maintenance/port) "aQW" = ( /turf/closed/wall, /area/library) @@ -23265,14 +22432,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/medical/chemistry) -"aRj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chemisttop"; - name = "Chemistry Lobby Shutters" - }, -/turf/open/floor/plating, -/area/medical/chemistry) "aRk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ @@ -23349,8 +22508,6 @@ /turf/open/floor/plasteel, /area/science/research) "aRx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -23365,19 +22522,17 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "aRy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aRz" = ( /turf/closed/wall, /area/maintenance/starboard) "aRA" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -23390,20 +22545,21 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aRB" = ( -/turf/open/floor/plasteel/vault/telecomms{ - dir = 5 - }, +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/clipboard, +/obj/item/storage/firstaid/o2, +/obj/item/crowbar, +/turf/open/floor/plasteel/vault/side, /area/tcommsat/server) "aRD" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/fans/tiny, -/turf/open/floor/plasteel/vault/telecomms{ - dir = 5 - }, +/turf/open/floor/plasteel/vault/side, /area/tcommsat/server) "aRE" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ @@ -23412,9 +22568,8 @@ on = 1; target_temperature = 80 }, -/turf/open/floor/plasteel/vault/telecomms{ - dir = 5 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side, /area/tcommsat/server) "aRF" = ( /obj/structure/cable/white{ @@ -23424,14 +22579,13 @@ name = "Station Intercom"; pixel_x = -28 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aRG" = ( /obj/structure/cable/white{ @@ -23445,7 +22599,7 @@ name = "Gas to Cooling Loop"; on = 1 }, -/turf/open/floor/plasteel/yellow, +/turf/open/floor/engine, /area/engine/engineering) "aRH" = ( /obj/structure/cable/white{ @@ -23454,7 +22608,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/engine, /area/engine/engineering) "aRI" = ( /obj/structure/cable/white{ @@ -23463,7 +22617,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plasteel/yellow, +/turf/open/floor/engine, /area/engine/engineering) "aRJ" = ( /obj/structure/cable/white{ @@ -23472,20 +22626,19 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/engine, /area/engine/engineering) "aRK" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aRL" = ( /obj/structure/cable/white{ @@ -23494,9 +22647,8 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aRM" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ @@ -23505,31 +22657,26 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aRN" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - icon_state = "pump_map"; name = "Freezer to Gas" }, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/engine, /area/engine/engineering) "aRO" = ( /obj/effect/landmark/start/station_engineer, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 9 }, -/turf/open/floor/plasteel/yellow, +/turf/open/floor/engine, /area/engine/engineering) "aRP" = ( /obj/machinery/holopad, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aRQ" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -23537,27 +22684,28 @@ name = "Gas to Cooling Loop"; on = 1 }, -/turf/open/floor/plasteel/yellow, +/turf/open/floor/engine, /area/engine/engineering) "aRR" = ( /obj/machinery/airalarm{ dir = 8; pixel_x = 24 }, -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aRS" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/port) "aRT" = ( /obj/structure/table/wood, @@ -23615,6 +22763,8 @@ /obj/machinery/light{ dir = 1 }, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -23627,14 +22777,14 @@ /area/library) "aSa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aSb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aSc" = ( /obj/structure/table/wood, @@ -23655,9 +22805,8 @@ /obj/structure/bodycontainer/morgue, /obj/effect/landmark/revenantspawn, /obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/medical/morgue) "aSf" = ( @@ -23668,12 +22817,13 @@ /turf/open/floor/plasteel/vault, /area/medical/morgue) "aSg" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/nosmoking_2{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/medical/morgue) "aSh" = ( /turf/closed/wall, @@ -23727,6 +22877,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/table/glass, +/obj/item/clipboard, +/obj/item/storage/bag/chemistry, +/obj/item/storage/pill_bottle/mutadone, /turf/open/floor/plasteel, /area/medical/chemistry) "aSm" = ( @@ -23831,7 +22985,6 @@ "aSA" = ( /obj/machinery/shower{ dir = 4; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/firealarm{ @@ -23842,21 +22995,18 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/research) "aSB" = ( /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/research) "aSC" = ( @@ -23864,7 +23014,10 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, /area/maintenance/starboard) "aSD" = ( /obj/structure/girder, @@ -23877,29 +23030,25 @@ dir = 10 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aSF" = ( /obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aSG" = ( /obj/machinery/portable_atmospherics/canister/air, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aSH" = ( /obj/structure/sign/poster/contraband/random, /turf/closed/wall, /area/maintenance/starboard) "aSI" = ( /obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/photocopier, /obj/item/newspaper{ pixel_x = 3; @@ -23907,14 +23056,14 @@ }, /obj/item/newspaper, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aSJ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken2" }, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aSK" = ( /obj/structure/table/wood, /obj/item/storage/fancy/cigarettes/cigpack_uplift{ @@ -23925,7 +23074,7 @@ }, /obj/item/lighter, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aSM" = ( /obj/machinery/door/airlock/command{ cyclelinkeddir = 2; @@ -23958,17 +23107,11 @@ /turf/closed/wall/r_wall, /area/tcommsat/server) "aSP" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/wardrobe/engineering_yellow, /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"aSQ" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/caution, +/turf/open/floor/engine, /area/engine/engineering) "aSR" = ( /obj/structure/table/reinforced, @@ -23977,21 +23120,24 @@ pixel_y = -32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "aSS" = ( /obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/meson/engine, /obj/structure/table/reinforced, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "aST" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, /obj/item/device/flashlight, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "aSU" = ( /obj/effect/turf_decal/stripes/line{ @@ -24004,7 +23150,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aSV" = ( /obj/machinery/power/emitter/anchored{ @@ -24016,10 +23162,8 @@ /obj/machinery/status_display{ pixel_y = -32 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/dark, /area/engine/engineering) "aSW" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ @@ -24034,11 +23178,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aSX" = ( /obj/structure/closet/crate/bin, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "aSY" = ( /obj/structure/table/reinforced, @@ -24051,7 +23196,8 @@ /obj/item/device/geiger_counter, /obj/item/device/geiger_counter, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "aSZ" = ( /obj/structure/table/reinforced, @@ -24059,15 +23205,15 @@ /obj/item/clothing/head/radiation, /obj/item/clothing/glasses/meson, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "aTa" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "aTb" = ( /obj/structure/cable/white{ @@ -24097,12 +23243,16 @@ /area/library) "aTf" = ( /obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/storage/pill_bottle/dice, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/library) "aTg" = ( /obj/structure/table/wood, +/obj/item/folder, +/obj/item/pen/red, /turf/open/floor/plasteel/dark, /area/library) "aTh" = ( @@ -24127,13 +23277,14 @@ pixel_y = 3 }, /obj/item/storage/box/bodybags, -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ dir = 4; locked = 0; pixel_x = -23 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/medical/morgue) "aTk" = ( /obj/structure/cable/white{ @@ -24148,13 +23299,11 @@ }, /area/medical/morgue) "aTl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/medical/morgue) "aTm" = ( @@ -24163,14 +23312,13 @@ }, /obj/machinery/shower{ dir = 4; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/newscaster{ pixel_y = 32 }, /obj/machinery/door/window/southleft, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/medical/medbay/zone3) "aTn" = ( /obj/machinery/light{ @@ -24181,12 +23329,12 @@ name = "Station Intercom"; pixel_y = 26 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/medical/medbay/zone3) "aTo" = ( /obj/structure/window/reinforced, /obj/machinery/clonepod, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side, /area/medical/medbay/zone3) "aTp" = ( /obj/effect/spawner/structure/window/reinforced, @@ -24217,33 +23365,13 @@ /area/medical/chemistry) "aTt" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/chem_master, /turf/open/floor/plasteel, /area/medical/chemistry) "aTu" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/plasteel, -/area/medical/chemistry) -"aTv" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chemistbot"; - name = "Chemistry Privacy Shutters" - }, -/obj/machinery/door/window/southleft{ - dir = 8; - name = "Chemistry Desk"; - req_access_txt = "5; 33" - }, -/obj/effect/turf_decal/delivery, +/obj/machinery/chem_master, /turf/open/floor/plasteel, /area/medical/chemistry) "aTw" = ( @@ -24349,7 +23477,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/lab) "aTL" = ( /obj/effect/spawner/structure/window/reinforced, @@ -24382,7 +23510,6 @@ }, /area/science/research) "aTO" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Science Maintenance"; req_access_txt = "47" @@ -24399,7 +23526,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/science/research) "aTP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -24412,26 +23539,11 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" }, -/area/maintenance/starboard) -"aTQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aTR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24439,8 +23551,10 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, /area/maintenance/starboard) "aTS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -24450,9 +23564,11 @@ icon_state = "4-8" }, /obj/effect/landmark/blobstart, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "aTT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -24460,9 +23576,11 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "aTU" = ( /obj/structure/table/wood, /obj/item/poster/random_contraband{ @@ -24475,24 +23593,25 @@ }, /obj/item/poster/random_contraband, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aTV" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken7" }, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aTW" = ( /obj/structure/chair/comfy/black{ dir = 4 }, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aTX" = ( /obj/machinery/light{ dir = 8 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -24504,6 +23623,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -24515,22 +23635,22 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, /area/tcommsat/server) "aUa" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/turf/closed/wall/r_wall, +/turf/closed/wall/r_wall/rust, /area/engine/engineering) "aUb" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/blobstart, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating, /area/maintenance/port) "aUc" = ( /obj/machinery/power/apc{ @@ -24552,14 +23672,14 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUe" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -24568,7 +23688,10 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken5" + }, /area/library) "aUg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -24577,7 +23700,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -24587,15 +23710,13 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUi" = ( /obj/structure/cable/white{ icon_state = "2-8" }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/wood, /area/library) "aUj" = ( /obj/machinery/photocopier, @@ -24604,16 +23725,15 @@ "aUk" = ( /obj/structure/bodycontainer/morgue, /obj/effect/landmark/revenantspawn, -/obj/effect/decal/cleanable/dirt, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/medical/morgue) "aUl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -24624,8 +23744,8 @@ /area/medical/morgue) "aUm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/medical/morgue) "aUn" = ( @@ -24666,7 +23786,9 @@ pixel_y = 5 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/medical/chemistry) "aUt" = ( /obj/structure/cable/white{ @@ -24716,13 +23838,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/lab) "aUB" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/science/lab) "aUC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -24730,7 +23852,9 @@ dir = 5 }, /obj/machinery/rnd/protolathe/department/science, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/science/lab) "aUD" = ( /obj/effect/landmark/event_spawn, @@ -24759,7 +23883,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/lab) "aUF" = ( /obj/machinery/light{ @@ -24812,13 +23936,15 @@ /turf/closed/wall/r_wall, /area/science/research) "aUK" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/starboard) +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) "aUL" = ( /obj/structure/table/wood, /obj/item/electronics/firelock, @@ -24827,13 +23953,13 @@ dir = 8 }, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aUM" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aUN" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -24843,14 +23969,21 @@ }, /obj/effect/landmark/xeno_spawn, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken5" }, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aUO" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -24921,23 +24054,23 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUY" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aUZ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aVa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -24946,7 +24079,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/wood, /area/library) "aVb" = ( /obj/structure/table/wood, @@ -24969,10 +24102,11 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/medical/morgue) "aVd" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -24984,13 +24118,12 @@ }, /area/medical/morgue) "aVe" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/medical/morgue) "aVf" = ( @@ -25045,12 +24178,8 @@ /obj/item/reagent_containers/glass/bottle/epinephrine, /obj/item/reagent_containers/dropper, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/medical/chemistry) -"aVk" = ( -/obj/effect/landmark/start/chemist, -/turf/open/floor/plasteel/whiteyellow/corner{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/medical/chemistry) "aVl" = ( @@ -25125,7 +24254,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/lab) "aVu" = ( /obj/effect/landmark/start/scientist, @@ -25134,7 +24263,7 @@ icon_state = "2-8" }, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/science/lab) "aVv" = ( /obj/item/reagent_containers/glass/beaker/sulphuric, @@ -25143,7 +24272,9 @@ dir = 6 }, /obj/machinery/rnd/circuit_imprinter/department/science, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/science/lab) "aVw" = ( /turf/open/floor/plasteel/whitepurple/corner, @@ -25158,7 +24289,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/lab) "aVy" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -25216,16 +24347,14 @@ /turf/closed/wall/r_wall, /area/science/research) "aVF" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "aVG" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -25241,26 +24370,27 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "aVH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken" }, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aVI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aVJ" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aVK" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 @@ -25280,13 +24410,14 @@ name = "Asteroid" }) "aVM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port) "aVN" = ( /obj/structure/table/wood, @@ -25361,17 +24492,15 @@ /area/library) "aVY" = ( /obj/structure/table, -/obj/effect/decal/cleanable/dirt, /obj/item/clothing/gloves/color/latex, -/obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/turf/open/floor/plasteel/vault, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/medical/morgue) "aVZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -25386,9 +24515,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/structure/closet/l3closet, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/medical/morgue) "aWb" = ( @@ -25452,7 +24580,7 @@ }, /obj/item/reagent_containers/dropper, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/corner, /area/medical/chemistry) "aWg" = ( /obj/structure/table/glass, @@ -25477,7 +24605,9 @@ }, /obj/machinery/light, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/medical/chemistry) "aWh" = ( /obj/structure/table/glass, @@ -25496,7 +24626,9 @@ /obj/item/grenade/chem_grenade, /obj/item/grenade/chem_grenade, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/medical/chemistry) "aWi" = ( /obj/structure/cable/white{ @@ -25504,7 +24636,9 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/medical/chemistry) "aWj" = ( /obj/structure/table/glass, @@ -25516,7 +24650,9 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/medical/chemistry) "aWk" = ( /obj/structure/table, @@ -25565,7 +24701,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/lab) "aWp" = ( /obj/machinery/status_display, @@ -25611,22 +24747,13 @@ }, /turf/open/floor/circuit/green/telecomms/mainframe, /area/science/research) -"aWv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/starboard) "aWw" = ( /obj/structure/table/wood, /obj/item/clipboard, /obj/item/electronics/airalarm, /obj/item/electronics/airlock, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aWx" = ( /obj/structure/table/wood, /obj/item/stack/cable_coil/white, @@ -25634,16 +24761,14 @@ /obj/item/stack/sheet/glass, /obj/item/stack/sheet/glass, /obj/item/circuitboard/machine/microwave, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aWy" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, /obj/item/device/taperecorder, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "aWz" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/structure/lattice, @@ -25706,7 +24831,6 @@ "aWH" = ( /obj/structure/bodycontainer/morgue, /obj/effect/landmark/revenantspawn, -/obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc{ dir = 2; name = "Morgue APC"; @@ -25716,11 +24840,11 @@ /obj/structure/cable/white{ icon_state = "0-4" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/medical/morgue) "aWI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/structure/cable/white{ icon_state = "1-8" @@ -25734,8 +24858,8 @@ dir = 8; network = list("SS13") }, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/medical/morgue) "aWK" = ( @@ -25744,7 +24868,7 @@ /area/medical/medbay/zone3) "aWL" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "cloningfoyer"; name = "Cloning Lab"; req_access_txt = "5" @@ -25765,7 +24889,7 @@ /area/medical/medbay/zone3) "aWN" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33" @@ -25891,7 +25015,7 @@ name = "Xenobiology Containment Door" }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Server Access"; req_access_txt = "30" }, @@ -25919,9 +25043,9 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, /area/maintenance/starboard) "aXc" = ( @@ -25930,13 +25054,6 @@ /area/ruin/unpowered{ name = "Asteroid" }) -"aXd" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port) "aXe" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -26121,6 +25238,9 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/research) "aXz" = ( @@ -26248,6 +25368,7 @@ dir = 8; pixel_x = 24 }, +/obj/item/clothing/suit/armor/reactive/teleport, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -26260,12 +25381,10 @@ /turf/open/floor/plating, /area/maintenance/starboard) "aXK" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, /obj/machinery/light/small{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/maintenance/starboard) @@ -26285,8 +25404,6 @@ /turf/closed/wall, /area/library) "aXN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -26301,7 +25418,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "aXO" = ( /obj/structure/table/glass, @@ -26331,6 +25448,12 @@ network = list("SS13") }, /obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aXP" = ( @@ -26359,6 +25482,7 @@ }, /obj/item/storage/box/syringes, /obj/item/gun/syringe, +/obj/item/reagent_containers/hypospray/CMO, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aXR" = ( @@ -26513,6 +25637,9 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/research) "aYj" = ( @@ -26643,9 +25770,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard) "aYu" = ( /obj/machinery/door/airlock/maintenance_hatch{ @@ -26658,16 +25783,14 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "aYv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -26675,10 +25798,8 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "aYw" = ( /obj/structure/destructible/cult/tome, /obj/item/book/codex_gigas, @@ -26688,14 +25809,17 @@ /obj/machinery/light_switch{ pixel_y = 24 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken6" + }, /area/library) "aYx" = ( /obj/effect/landmark/start/librarian, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aYy" = ( /obj/structure/bookcase{ @@ -26709,7 +25833,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aYz" = ( /obj/structure/cable/white{ @@ -26718,32 +25842,23 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, /area/maintenance/port) "aYA" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" }, /area/maintenance/port) -"aYB" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/maintenance/port) "aYC" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -26751,22 +25866,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/port) -"aYD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, /area/maintenance/port) "aYE" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "4-8" @@ -26774,8 +25877,10 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, /area/maintenance/port) "aYF" = ( /obj/structure/cable/white{ @@ -26784,10 +25889,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "aYG" = ( /obj/structure/table/glass, @@ -26809,6 +25911,11 @@ pixel_x = -22 }, /obj/effect/turf_decal/delivery, +/obj/machinery/door/window/eastleft{ + name = "First-Aid Supplies"; + req_access_txt = "5"; + req_one_access_txt = "0" + }, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aYH" = ( @@ -26820,7 +25927,7 @@ /area/medical/medbay/zone3) "aYJ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage"; req_access_txt = "5" }, @@ -26899,7 +26006,7 @@ /area/medical/medbay/zone3) "aYT" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -26969,7 +26076,6 @@ /area/science/robotics/mechbay) "aZd" = ( /obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/research{ name = "Mech Bay"; req_access_txt = "29" @@ -27033,16 +26139,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, -/turf/closed/wall/r_wall, +/turf/closed/wall/r_wall/rust, /area/science/robotics/lab) -"aZn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/starboard) "aZo" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -27073,7 +26171,6 @@ pixel_y = 3 }, /obj/item/storage/secure/briefcase, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/vault{ dir = 4 @@ -27084,17 +26181,6 @@ /obj/structure/sign/poster/contraband/random, /turf/closed/wall, /area/maintenance/port) -"aZt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/port) "aZu" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -27105,7 +26191,7 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "aZv" = ( /obj/structure/table/wood, @@ -27117,7 +26203,10 @@ name = "Station Intercom"; pixel_y = -26 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, /area/library) "aZw" = ( /obj/structure/table/wood, @@ -27132,23 +26221,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) -"aZx" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/maintenance/port) "aZy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/turf/closed/wall, +/turf/closed/wall/rust, /area/maintenance/port) "aZz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -27158,7 +26237,6 @@ /turf/closed/wall, /area/maintenance/port) "aZA" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -27203,6 +26281,10 @@ icon_state = "2-4" }, /obj/effect/turf_decal/delivery, +/obj/machinery/door/window/eastright{ + name = "First-Aid Supplies"; + req_access_txt = "5" + }, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "aZD" = ( @@ -27210,6 +26292,13 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/cmo, /area/medical/medbay/zone3) "aZE" = ( @@ -27223,7 +26312,7 @@ /area/medical/medbay/zone3) "aZF" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage"; req_access_txt = "5" }, @@ -27340,7 +26429,7 @@ /area/medical/medbay/zone3) "aZP" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5" @@ -27388,10 +26477,7 @@ /area/hallway/primary/central) "aZU" = ( /obj/machinery/recharge_station, -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/cyborg, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm{ dir = 4; locked = 0; @@ -27407,27 +26493,25 @@ icon_state = "0-2" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/mechbay) "aZV" = ( /obj/machinery/recharge_station, -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/cyborg, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/mechbay) "aZW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/mechbay) "aZX" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/mechbay) "aZY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -27460,8 +26544,6 @@ }, /obj/item/device/multitool, /obj/item/clothing/head/welding, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm{ pixel_y = 24 }, @@ -27471,15 +26553,14 @@ network = list("SS13","RD") }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/lab) "bac" = ( /obj/machinery/mecha_part_fabricator, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/end{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/lab) "bad" = ( /obj/structure/rack, @@ -27487,20 +26568,11 @@ /obj/item/storage/belt/utility/full, /obj/item/circuitboard/mecha/ripley/main, /obj/item/circuitboard/mecha/ripley/peripherals, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light{ dir = 1 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/science/robotics/lab) -"bae" = ( -/obj/machinery/mecha_part_fabricator, -/obj/effect/turf_decal/stripes/end{ - dir = 1 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/lab) "baf" = ( /obj/item/stack/sheet/metal/fifty, @@ -27520,7 +26592,7 @@ pixel_y = 32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/lab) "bag" = ( /obj/item/paper_bin, @@ -27548,7 +26620,7 @@ pixel_x = 24 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side, /area/science/robotics/lab) "bah" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -27559,16 +26631,15 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/starboard) "baj" = ( /turf/closed/wall, /area/maintenance/port) "bak" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/maintenance/port) "bal" = ( @@ -27605,15 +26676,16 @@ /turf/open/floor/plasteel, /area/maintenance/port) "bao" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, /area/maintenance/port) "bap" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -27623,21 +26695,21 @@ /obj/structure/table/wood, /obj/item/clothing/suit/syndicatefake, /obj/item/clothing/head/syndicatefake, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/maintenance/port) "bar" = ( /turf/open/floor/plating, /area/maintenance/port) "bas" = ( /obj/structure/dresser, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 1 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/maintenance/port) "bat" = ( @@ -27663,6 +26735,10 @@ }, /obj/structure/cable/white, /obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "bau" = ( @@ -27676,6 +26752,7 @@ }, /obj/effect/turf_decal/bot, /obj/machinery/rnd/protolathe/department/medical, +/obj/effect/turf_decal/stripes/box, /turf/open/floor/plasteel, /area/medical/medbay/zone3) "bav" = ( @@ -27856,7 +26933,6 @@ /turf/open/floor/plasteel, /area/science/robotics/mechbay) "baO" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable/white{ icon_state = "4-8" @@ -27893,7 +26969,6 @@ /area/science/robotics/mechbay) "baR" = ( /obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/research{ name = "Mech Bay"; req_access_txt = "29" @@ -27947,7 +27022,6 @@ /turf/open/floor/plating, /area/science/robotics/lab) "baV" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -27981,7 +27055,6 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "baZ" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/roboticist, /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -28000,17 +27073,10 @@ pixel_x = 24 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/science/robotics/lab) -"bbb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/maintenance/starboard) "bbc" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp, @@ -28023,7 +27089,6 @@ /turf/open/floor/plasteel/dark, /area/maintenance/port) "bbe" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -28035,8 +27100,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, /area/maintenance/port) "bbg" = ( /obj/structure/cable/white{ @@ -28048,7 +27113,6 @@ /turf/open/floor/plating, /area/maintenance/port) "bbh" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -28056,55 +27120,39 @@ dir = 4 }, /obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/port) -"bbi" = ( -/obj/structure/cable/white{ - icon_state = "4-8" +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, /area/maintenance/port) "bbj" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, /area/maintenance/port) "bbk" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "bbl" = ( /obj/structure/table/wood, /obj/item/clipboard, /obj/item/toy/syndicateballoon, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 1 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/maintenance/port) "bbm" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/revenantspawn, /turf/open/floor/plasteel/bar, /area/maintenance/port) @@ -28112,28 +27160,10 @@ /obj/machinery/vending/autodrobe{ req_access_txt = "0" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/vault{ - dir = 4 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/maintenance/port) -"bbo" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/port) "bbp" = ( /obj/machinery/light{ dir = 8 @@ -28169,7 +27199,6 @@ "bbu" = ( /obj/machinery/firealarm{ dir = 4; - icon_state = "fire0"; pixel_x = 24 }, /obj/machinery/light{ @@ -28198,7 +27227,7 @@ /area/hallway/primary/central) "bbx" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Checkpoint"; req_access_txt = "63" }, @@ -28270,7 +27299,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bbC" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -28290,7 +27318,6 @@ /turf/open/floor/circuit, /area/science/robotics/mechbay) "bbE" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, @@ -28298,7 +27325,6 @@ /area/science/robotics/mechbay) "bbF" = ( /obj/machinery/mech_bay_recharge_port{ - icon_state = "recharge_port"; dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -28333,7 +27359,7 @@ /area/science/research) "bbI" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Robotics Lab"; req_access_txt = "29" }, @@ -28364,7 +27390,6 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bbK" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -28407,7 +27432,9 @@ /obj/machinery/computer/rdconsole{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/science/robotics/lab) "bbP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -28415,11 +27442,12 @@ icon_state = "1-2" }, /obj/effect/landmark/blobstart, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bbQ" = ( +/obj/machinery/vending/kink, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken5" }, /area/maintenance/port) @@ -28428,6 +27456,7 @@ /area/maintenance/port) "bbS" = ( /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken6" }, /area/maintenance/port) @@ -28437,25 +27466,6 @@ }, /turf/closed/wall, /area/maintenance/port) -"bbU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/port) "bbV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/barricade/wooden, @@ -28465,9 +27475,7 @@ /turf/open/floor/plating, /area/maintenance/port) "bbW" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -28495,9 +27503,7 @@ /turf/closed/wall, /area/maintenance/port) "bbZ" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -28519,8 +27525,10 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/port) "bcc" = ( /obj/structure/reagent_dispensers/watertank, @@ -28540,6 +27548,10 @@ req_access_txt = "0"; use_power = 0 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -28565,6 +27577,10 @@ /obj/item/clothing/mask/surgical, /obj/item/surgical_drapes, /obj/structure/table/reinforced, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -28582,8 +27598,8 @@ "bci" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, -/turf/open/floor/plasteel/vault{ - dir = 1 +/turf/open/floor/plasteel/vault/side{ + dir = 9 }, /area/medical/medbay/zone3) "bcj" = ( @@ -28602,7 +27618,7 @@ /area/medical/medbay/zone3) "bck" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay Desk"; req_access_txt = "5" }, @@ -28684,7 +27700,6 @@ id = "mechbay"; name = "Mech Bay Shutters" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -28720,7 +27735,6 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "bcy" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -28728,7 +27742,6 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bcz" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -28752,11 +27765,12 @@ pixel_x = 24 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/science/robotics/lab) "bcD" = ( /obj/structure/rack, -/obj/effect/decal/cleanable/dirt, /obj/item/weldingtool, /obj/item/device/assembly/voice, /obj/item/clothing/head/welding, @@ -28765,18 +27779,16 @@ dir = 9 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bcE" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bcF" = ( /obj/machinery/computer/slot_machine, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -28791,6 +27803,7 @@ /area/maintenance/port) "bcI" = ( /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken2" }, /area/maintenance/port) @@ -28800,19 +27813,16 @@ /area/maintenance/port) "bcK" = ( /obj/machinery/computer/slot_machine, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/port) "bcL" = ( /obj/machinery/vending/cigarette, -/obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster{ pixel_x = -32 }, /turf/open/floor/plating, /area/maintenance/port) "bcM" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/vault{ dir = 5 @@ -28822,7 +27832,6 @@ /obj/structure/chair/comfy/black{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -28839,19 +27848,13 @@ "bcP" = ( /turf/open/floor/plasteel/bar, /area/maintenance/port) -"bcQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/bar, -/area/maintenance/port) "bcR" = ( /obj/structure/table/wood, /obj/item/device/instrument/guitar, /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/port) "bcS" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -28860,14 +27863,12 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/blobstart, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "bcT" = ( /obj/structure/rack, /obj/item/storage/toolbox/mechanical, /obj/item/clothing/head/welding, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, @@ -28894,6 +27895,10 @@ /obj/structure/mirror{ pixel_x = -28 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -28915,6 +27920,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -28939,7 +27948,7 @@ "bcZ" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, -/turf/open/floor/plasteel/vault{ +/turf/open/floor/plasteel/vault/side{ dir = 8 }, /area/medical/medbay/zone3) @@ -28947,8 +27956,8 @@ /obj/machinery/computer/med_data{ dir = 4 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/medical/medbay/zone3) "bdb" = ( @@ -29058,7 +28067,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bdk" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/poddoor/shutters{ id = "mechbay"; name = "Mech Bay Shutters" @@ -29081,7 +28089,6 @@ /turf/open/floor/plasteel, /area/science/robotics/mechbay) "bdl" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, @@ -29091,14 +28098,12 @@ /turf/open/floor/plasteel, /area/science/robotics/mechbay) "bdm" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/circuit/green, /area/science/robotics/mechbay) "bdn" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -29140,11 +28145,10 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) "bds" = ( -/turf/closed/wall, +/turf/closed/wall/rust, /area/science/robotics/lab) "bdt" = ( /obj/structure/closet/wardrobe/robotics_black, -/obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc{ dir = 8; name = "Robotics Lab APC"; @@ -29156,7 +28160,7 @@ icon_state = "0-4" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/science/robotics/lab) "bdu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -29170,7 +28174,7 @@ icon_state = "1-8" }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault, /area/science/robotics/lab) "bdv" = ( /obj/structure/table/reinforced, @@ -29181,7 +28185,9 @@ /obj/item/surgical_drapes, /obj/item/cautery, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/science/robotics/lab) "bdw" = ( /obj/machinery/holopad, @@ -29203,7 +28209,9 @@ pixel_x = 32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/science/robotics/lab) "bdz" = ( /obj/structure/cable/white{ @@ -29212,10 +28220,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bdA" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -29230,28 +28236,26 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bdB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/effect/landmark/xeno_spawn, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/turf/open/floor/plating, -/area/maintenance/starboard) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard/aft) "bdC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/item/storage/box/lights/mixed, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bdD" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, @@ -29261,12 +28265,14 @@ /obj/structure/chair/stool/bar, /obj/effect/landmark/revenantspawn, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken" }, /area/maintenance/port) "bdF" = ( /obj/structure/chair/stool/bar, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken5" }, /area/maintenance/port) @@ -29274,6 +28280,7 @@ /obj/structure/chair/stool/bar, /obj/effect/landmark/revenantspawn, /turf/open/floor/wood{ + broken = 1; icon_state = "wood-broken2" }, /area/maintenance/port) @@ -29296,7 +28303,6 @@ pixel_y = 3 }, /obj/item/storage/briefcase, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 }, @@ -29316,7 +28322,6 @@ /obj/structure/chair/comfy/black{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -29347,8 +28352,6 @@ /obj/item/clothing/head/helmet/justice/escape{ name = "justice helmet" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, @@ -29360,17 +28363,15 @@ }, /area/maintenance/port) "bdO" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, /area/maintenance/port) "bdP" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -29385,6 +28386,10 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -26 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -29404,6 +28409,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -29456,8 +28465,8 @@ dir = 8; network = list("SS13") }, -/turf/open/floor/plasteel/vault{ - dir = 4 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/medical/medbay/zone3) "bdX" = ( @@ -29472,8 +28481,8 @@ pixel_x = -26; pixel_y = -26 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/medical/medbay/zone3) "bdY" = ( @@ -29556,7 +28565,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "beg" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/device/radio/intercom{ name = "Station Intercom"; pixel_y = -24 @@ -29579,7 +28587,6 @@ /turf/open/floor/circuit/green, /area/science/robotics/mechbay) "bei" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/nosmoking_2{ pixel_y = -32 }, @@ -29587,7 +28594,6 @@ /area/science/robotics/mechbay) "bej" = ( /obj/machinery/mech_bay_recharge_port{ - icon_state = "recharge_port"; dir = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -29598,6 +28604,9 @@ "bek" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/research) "bel" = ( @@ -29606,6 +28615,9 @@ icon_state = "1-2" }, /obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/research) "bem" = ( @@ -29617,20 +28629,21 @@ name = "Station Intercom"; pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/science/robotics/lab) "ben" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, /area/science/robotics/lab) "beo" = ( /obj/structure/table/reinforced, @@ -29645,7 +28658,9 @@ }, /obj/machinery/light, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/science/robotics/lab) "bep" = ( /obj/machinery/computer/operating{ @@ -29664,7 +28679,6 @@ /obj/machinery/status_display{ pixel_y = -32 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/whitepurple/corner, /area/science/robotics/lab) "ber" = ( @@ -29680,17 +28694,21 @@ pixel_x = 28 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/science/robotics/lab) "bes" = ( /obj/structure/rack, /obj/item/crowbar/red, /obj/item/wrench, /obj/item/tank/internals/emergency_oxygen/engi, -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard) +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard/aft) "bet" = ( /obj/structure/rack, /obj/item/stack/sheet/metal{ @@ -29700,21 +28718,18 @@ /obj/item/stack/sheet/glass{ amount = 30 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 6 }, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "beu" = ( /obj/structure/table/wood, /obj/item/storage/pill_bottle, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/port) "bev" = ( /obj/machinery/computer/slot_machine, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, /obj/structure/sign/poster/contraband/random{ pixel_y = -32 @@ -29725,7 +28740,6 @@ /area/maintenance/port) "bew" = ( /obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, /obj/item/coin/iron{ icon_state = "coin_bananium_heads"; name = "arcade coin"; @@ -29750,7 +28764,6 @@ pixel_y = 5 }, /obj/item/reagent_containers/syringe, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -29759,12 +28772,9 @@ /obj/structure/table/wood, /obj/item/newspaper, /obj/item/clothing/head/bowler, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/port) "bez" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random{ pixel_y = -32 }, @@ -29784,7 +28794,6 @@ name = "Theatre Stage"; req_access_txt = "0" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/bar, /area/maintenance/port) "beC" = ( @@ -29802,26 +28811,12 @@ dir = 8 }, /area/maintenance/port) -"beD" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/maintenance/port) "beE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/medical/medbay/zone3) "beF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Medbay Maintenance"; req_access_txt = "5" @@ -29954,7 +28949,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/starboard) "beQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -29963,7 +28958,6 @@ /turf/closed/wall/r_wall, /area/science/robotics/lab) "beR" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -29985,28 +28979,11 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/port) -"beT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port) -"beU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, /area/maintenance/port) "beV" = ( /obj/structure/cable/white{ @@ -30021,33 +28998,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/port) -"beW" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, -/area/maintenance/port) -"beY" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, /area/maintenance/port) "beZ" = ( /obj/structure/cable/white{ @@ -30060,7 +29012,6 @@ /turf/open/floor/plating, /area/maintenance/port) "bfa" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -30071,9 +29022,10 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, /area/maintenance/port) "bfb" = ( /obj/structure/cable/white{ @@ -30082,25 +29034,17 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" }, /area/maintenance/port) -"bfc" = ( -/obj/structure/cable/white{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port) "bfd" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, /area/maintenance/port) "bfe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -30118,7 +29062,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Security Checkpoint"; req_access_txt = "63" }, @@ -30142,46 +29086,6 @@ }, /turf/open/floor/plasteel/purple/corner, /area/hallway/primary/central) -"bfi" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) -"bfj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) -"bfk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/starboard) "bfl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -30192,7 +29096,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bfm" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable/white{ @@ -30207,10 +29111,9 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bfn" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ @@ -30222,11 +29125,8 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bfo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -30234,8 +29134,13 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/neutral/corner, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/starboard) "bfp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -30246,16 +29151,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"bfq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/starboard) "bfr" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ @@ -30264,10 +29159,8 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bfs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -30275,24 +29168,23 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, +/area/maintenance/starboard/aft) "bft" = ( /obj/structure/cable/white{ icon_state = "0-8" }, /obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard/aft"; dir = 2; - name = "Starboard Maintenance APC"; - areastring = "/area/maintenance/starboard"; + name = "Starboard Quater Maintenance APC"; pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bfu" = ( /turf/closed/wall, /area/chapel/main) @@ -30324,6 +29216,7 @@ }, /obj/effect/decal/remains/human, /turf/open/floor/plating{ + burnt = 1; icon_state = "panelscorched" }, /area/chapel/main) @@ -30366,7 +29259,6 @@ name = "Maintenance Hatch"; req_access_txt = "12" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -30380,17 +29272,25 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "bfC" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/closed/wall, +/turf/closed/wall/rust, /area/chapel/main) "bfD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, -/turf/open/floor/plating, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/item/storage/backpack, +/obj/item/crowbar, +/obj/item/wrench, +/obj/structure/rack, +/turf/open/floor/plasteel, /area/maintenance/port) "bfE" = ( /obj/structure/cable/white{ @@ -30401,27 +29301,33 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/blobstart, -/turf/open/floor/plasteel/neutral, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, /area/maintenance/port) "bfF" = ( /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/neutral, +/obj/item/tank/internals/oxygen/red, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, /area/maintenance/port) "bfG" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/port) "bfH" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -30435,7 +29341,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/maintenance/port) "bfI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -30483,25 +29389,6 @@ }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) -"bfM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/power/apc{ - aidisabled = 0; - dir = 1; - name = "Central Hall APC"; - areastring = "/area/hallway/primary/central"; - pixel_y = 24 - }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "bfO" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -30584,8 +29471,8 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/chapel/main) "bfU" = ( @@ -30621,9 +29508,8 @@ name = "Station Intercom"; pixel_y = 24 }, -/turf/open/floor/plasteel{ - dir = 1; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 1 }, /area/chapel/main) "bfY" = ( @@ -30641,9 +29527,8 @@ /obj/structure/cable/white{ icon_state = "0-2" }, -/turf/open/floor/plasteel{ - dir = 4; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 4 }, /area/chapel/main) "bfZ" = ( @@ -30653,18 +29538,16 @@ /obj/machinery/newscaster{ pixel_y = 32 }, -/turf/open/floor/plasteel{ - dir = 1; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 1 }, /area/chapel/main) "bga" = ( /obj/structure/chair/wood/normal{ dir = 8 }, -/turf/open/floor/plasteel{ - dir = 4; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 4 }, /area/chapel/main) "bgb" = ( @@ -30683,13 +29566,20 @@ }, /area/chapel/main) "bgc" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, /area/maintenance/port) "bgd" = ( /obj/structure/closet/firecloset, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, /area/maintenance/port) "bge" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -30725,12 +29615,14 @@ /turf/open/floor/plasteel/neutral/side, /area/hallway/primary/central) "bgl" = ( -/obj/machinery/vending/cola, +/obj/machinery/vending/cola/random, /obj/machinery/newscaster{ pixel_x = 32 }, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "bgm" = ( /turf/open/floor/plasteel/vault{ @@ -30767,7 +29659,6 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bgq" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -30810,55 +29701,51 @@ "bgu" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/tea, -/obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/grown/tomato, /obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side, +/area/maintenance/starboard/aft) "bgv" = ( /obj/machinery/biogenerator, /obj/item/wrench, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side, +/area/maintenance/starboard/aft) "bgw" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/vault/side, +/area/maintenance/starboard/aft) "bgx" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bgy" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side, +/area/maintenance/starboard/aft) "bgz" = ( /obj/machinery/seed_extractor, /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side, +/area/maintenance/starboard/aft) "bgA" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/poppy, -/obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/grown/cherries, /obj/item/shovel/spade, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side, +/area/maintenance/starboard/aft) "bgB" = ( /obj/structure/mirror{ pixel_x = 26 @@ -30902,8 +29789,8 @@ dir = 4; network = list("MINE") }, -/turf/open/floor/plasteel/vault{ - dir = 8 +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, /area/chapel/main) "bgE" = ( @@ -30919,7 +29806,7 @@ /area/chapel/main) "bgF" = ( /obj/machinery/status_display, -/turf/closed/wall, +/turf/closed/wall/rust, /area/chapel/main) "bgG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -30942,9 +29829,8 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 8 }, /area/chapel/main) "bgJ" = ( @@ -30960,9 +29846,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/turf/open/floor/plasteel{ - icon_state = "chapel" - }, +/turf/open/floor/plasteel/chapel, /area/chapel/main) "bgK" = ( /obj/structure/chair/wood/normal{ @@ -30971,15 +29855,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 8 }, /area/chapel/main) "bgL" = ( -/turf/open/floor/plasteel{ - icon_state = "chapel" - }, +/turf/open/floor/plasteel/chapel, /area/chapel/main) "bgM" = ( /obj/structure/table/wood, @@ -31002,7 +29883,6 @@ /turf/closed/wall, /area/hallway/secondary/entry) "bgO" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; req_access_txt = "12" @@ -31225,24 +30105,18 @@ /obj/structure/sign/nosmoking_2{ pixel_x = -32 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bhk" = ( -/turf/open/floor/plasteel/hydrofloor, -/area/maintenance/starboard) -"bhl" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/starboard) "bhm" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/xeno_spawn, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "bhn" = ( /obj/structure/sink{ dir = 4; @@ -31251,9 +30125,8 @@ /obj/structure/sign/botany{ pixel_x = 32 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bho" = ( /obj/machinery/door/airlock/silver{ name = "Bathroom" @@ -31472,7 +30345,9 @@ pixel_x = 24 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/secondary/entry) "bhM" = ( /obj/structure/disposalpipe/trunk{ @@ -31542,46 +30417,52 @@ /obj/item/reagent_containers/food/snacks/grown/watermelon, /obj/item/cultivator, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/maintenance/starboard/aft) "bhU" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; pixel_x = -3; pixel_y = 3 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/maintenance/starboard/aft) "bhV" = ( /obj/machinery/hydroponics/soil, /obj/item/reagent_containers/food/snacks/grown/wheat, /obj/item/reagent_containers/glass/bottle/nutrient/ez, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/maintenance/starboard/aft) "bhW" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "bhX" = ( /obj/machinery/hydroponics/soil, /obj/item/reagent_containers/food/snacks/grown/tea, /obj/item/hatchet, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/maintenance/starboard/aft) "bhY" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/tower, -/obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/glass/bottle/nutrient/rh, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/maintenance/starboard) +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/maintenance/starboard/aft) "bhZ" = ( /obj/structure/closet/wardrobe/chaplain_black, /obj/machinery/light_switch{ @@ -31682,9 +30563,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel{ - dir = 1; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 1 }, /area/chapel/main) "bik" = ( @@ -31697,9 +30577,8 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel{ - dir = 4; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 4 }, /area/chapel/main) "bil" = ( @@ -31709,9 +30588,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plasteel{ - dir = 1; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 1 }, /area/chapel/main) "bim" = ( @@ -31719,9 +30597,8 @@ dir = 4 }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel{ - dir = 4; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 4 }, /area/chapel/main) "bin" = ( @@ -31867,7 +30744,6 @@ }, /area/hallway/secondary/entry) "biA" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -31878,7 +30754,9 @@ name = "arrivals camera" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/secondary/entry) "biB" = ( /obj/structure/sign/biohazard, @@ -31887,7 +30765,6 @@ "biC" = ( /obj/machinery/shower{ dir = 4; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -31899,7 +30776,6 @@ "biD" = ( /obj/machinery/shower{ dir = 8; - icon_state = "shower"; name = "emergency shower" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -32026,9 +30902,8 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 8 }, /area/chapel/main) "biQ" = ( @@ -32041,9 +30916,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/turf/open/floor/plasteel{ - icon_state = "chapel" - }, +/turf/open/floor/plasteel/chapel, /area/chapel/main) "biR" = ( /obj/structure/chair/wood/normal{ @@ -32052,9 +30925,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "chapel" +/turf/open/floor/plasteel/chapel{ + dir = 8 }, /area/chapel/main) "biS" = ( @@ -32067,9 +30939,7 @@ pixel_y = -24; req_access_txt = "0" }, -/turf/open/floor/plasteel{ - icon_state = "chapel" - }, +/turf/open/floor/plasteel/chapel, /area/chapel/main) "biT" = ( /obj/structure/bookcase, @@ -32332,7 +31202,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bjv" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Xenobiology Kill Room"; req_access_txt = "47" }, @@ -32779,22 +31649,7 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/arrival) -"bkh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/external{ - name = "External Docking Port" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) "bki" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/fans/tiny, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -32900,7 +31755,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bku" = ( -/obj/machinery/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/light{ dir = 1 }, @@ -32937,7 +31792,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bkz" = ( -/obj/machinery/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -33130,7 +31985,6 @@ /area/shuttle/arrival) "blb" = ( /obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -33188,7 +32042,7 @@ dir = 8; network = list("SS13") }, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plasteel/stairs/right, /area/hallway/primary/central) "bli" = ( /obj/structure/closet/firecloset, @@ -33197,8 +32051,10 @@ dir = 2; network = list("SS13") }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "blj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -33247,8 +32103,10 @@ dir = 2; network = list("SS13") }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, /area/hallway/primary/central) "bln" = ( /obj/structure/cable/white{ @@ -33262,7 +32120,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "blo" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -33399,6 +32257,9 @@ /obj/machinery/mass_driver{ id = "chapelgun" }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plating, /area/chapel/main) "blD" = ( @@ -33414,12 +32275,16 @@ dir = 8; pixel_x = 25 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/chapel/main) "blF" = ( /obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/chapel/main) "blG" = ( @@ -33443,6 +32308,9 @@ pixel_x = 24; pixel_y = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -33465,10 +32333,9 @@ }, /obj/machinery/atmospherics/components/binary/pump{ dir = 4; - icon_state = "pump_map"; name = "Gas to Loop" }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "blL" = ( /obj/machinery/door/airlock/public/glass{ @@ -33491,15 +32358,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) -"blN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) "blO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -33509,18 +32367,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) -"blU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"blX" = ( -/turf/open/floor/plasteel, -/area/hallway/primary/central) "blY" = ( /obj/machinery/door/airlock/public/glass{ name = "Departure Lounge" @@ -33537,32 +32383,44 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bmb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bmh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/turf/open/floor/plasteel/escape{ dir = 1 }, -/turf/open/floor/plasteel, /area/hallway/secondary/exit) -"bmw" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" +"bmh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bmC" = ( -/obj/machinery/light{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, +/area/hallway/secondary/exit) +"bmC" = ( +/obj/machinery/vending/snack/random, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, /area/hallway/secondary/exit) "bmG" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 }, -/turf/open/floor/plasteel, /area/hallway/secondary/exit) "bsv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -33657,13 +32515,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21" - }, /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/escape, /area/hallway/secondary/exit) "bsE" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, @@ -33677,14 +32535,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/light, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/escape, /area/hallway/secondary/exit) "bsM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -33696,35 +32553,24 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bsN" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/structure/cable/white{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/neutral/side{ dir = 4 }, -/turf/open/floor/plasteel, /area/hallway/secondary/exit) "bsO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, /obj/structure/cable/white{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bsP" = ( @@ -33757,19 +32603,28 @@ /obj/structure/cable/white{ icon_state = "2-8" }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "bsS" = ( /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/escape{ + dir = 4 + }, /area/hallway/secondary/exit) "bsT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "bsV" = ( @@ -33777,14 +32632,13 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/escape, /area/hallway/secondary/exit) "bsX" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ - name = "Cargo Port"; - req_access_txt = "48;50" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -33795,28 +32649,30 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access_txt = "48;50" + }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bsY" = ( /obj/structure/cable/white{ icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bsZ" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ - name = "Cargo Port"; - req_access_txt = "48;50" - }, /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/delivery, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access_txt = "48;50" }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) @@ -33862,7 +32718,7 @@ /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/grille, /turf/open/floor/plating, -/area/maintenance/starboard) +/area/maintenance/starboard/aft) "btj" = ( /obj/docking_port/mobile/arrivals{ dir = 2; @@ -33882,7 +32738,6 @@ /turf/closed/wall/mineral/plastitanium, /area/shuttle/arrival) "btk" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; name = "External Docking Port" @@ -33909,7 +32764,6 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "buy" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -33947,6 +32801,10 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -33966,6 +32824,12 @@ /area/tcommsat/server) "buI" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -33978,6 +32842,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -34013,12 +32883,21 @@ /obj/machinery/status_display{ pixel_y = -32 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, /area/tcommsat/server) "buS" = ( /obj/machinery/ntnet_relay, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -34029,6 +32908,9 @@ dir = 8; network = list("MINE") }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel/vault/telecomms{ dir = 5 }, @@ -34047,13 +32929,6 @@ "buW" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) -"buZ" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/circuit/green, -/area/engine/supermatter) "bvd" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -34064,11 +32939,15 @@ name = "Asteroid" }) "bvh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) +/obj/structure/closet/emcloset{ + anchored = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/maintenance/starboard) "bvo" = ( /obj/structure/girder, /turf/open/floor/plating/airless, @@ -34231,13 +33110,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "bwW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/turf/closed/wall/r_wall, +/turf/closed/wall/r_wall/rust, /area/tcommsat/server) "bwX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -34265,7 +33144,7 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 9 }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "bxc" = ( /obj/structure/lattice/catwalk, @@ -34316,15 +33195,14 @@ /turf/closed/wall/r_wall, /area/tcommsat/server) "bxu" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/plasteel/caution, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, /area/engine/engineering) "bxv" = ( /obj/structure/cable{ icon_state = "1-4" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -34334,10 +33212,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "bxw" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, /obj/structure/cable/white{ @@ -34351,8 +33228,8 @@ icon_state = "1-2" }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/vault{ - dir = 5 +/turf/open/floor/plasteel/vault/side{ + dir = 8 }, /area/bridge) "bxy" = ( @@ -34363,9 +33240,7 @@ dir = 4 }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, +/turf/open/floor/wood, /area/crew_quarters/heads/hop) "bxz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -34401,7 +33276,10 @@ icon_state = "4-8" }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/neutral/corner, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/starboard/central) "bxD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -34411,7 +33289,6 @@ }, /area/hallway/primary/central) "bxE" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -34431,7 +33308,6 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar/atrium) "bxH" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -34460,8 +33336,12 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar/atrium) "bxM" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/escape{ + dir = 1 + }, /area/hallway/secondary/exit) "bxN" = ( /obj/structure/cable/white{ @@ -34494,16 +33374,14 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, +/turf/open/floor/plating, /area/maintenance/port) "bxS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/grimy, +/turf/open/floor/wood, /area/library) "bxT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -34512,14 +33390,6 @@ dir = 1 }, /area/medical/medbay/zone3) -"bxU" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/neutral/corner, -/area/maintenance/port) "bxV" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/circuit, @@ -34536,10 +33406,12 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard) +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "bxY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -34554,7 +33426,7 @@ /turf/closed/wall, /area/maintenance/starboard/fore) "bye" = ( -/turf/closed/wall, +/turf/closed/wall/rust, /area/maintenance/fore) "byf" = ( /obj/structure/sign/vacuum, @@ -34562,7 +33434,6 @@ /area/maintenance/starboard/fore) "byg" = ( /obj/structure/closet/emcloset/anchored, -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 1 }, @@ -34570,15 +33441,15 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "byi" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, /area/maintenance/starboard/fore) "byj" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ name = "External Airlock"; req_access_txt = "13" @@ -34595,8 +33466,6 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "byk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -34606,7 +33475,6 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "byl" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ name = "External Airlock"; req_access_txt = "13" @@ -34620,15 +33488,11 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "bym" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 8; - heat_capacity = 1e+006 - }, +/turf/open/floor/plating, /area/maintenance/starboard/fore) "byn" = ( /obj/structure/closet/wardrobe/grey, @@ -34648,44 +33512,2485 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/security/checkpoint) -"swr" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_nw"; - name = "northwest of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space/basic, -/area/space/nearstation) "sws" = ( /obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; id = "syndicate_sw"; name = "southwest of station"; turf_type = /turf/open/space; - width = 18 + width = 23 }, /turf/open/space, /area/space/nearstation) -"swt" = ( +"swv" = ( +/turf/closed/wall/r_wall/rust, +/area/bridge) +"swx" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/cable/white{ + icon_state = "1-8" + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/rnd/protolathe/department/service, -/turf/open/floor/plasteel/redyellow, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, +/area/bridge) +"swy" = ( +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/bridge) +"swz" = ( +/turf/closed/wall/r_wall/rust, +/area/crew_quarters/heads/hop) +"swA" = ( +/turf/closed/wall/rust, +/area/maintenance/starboard/fore) +"swC" = ( +/turf/closed/wall/r_wall/rust, +/area/crew_quarters/heads/captain/private) +"swD" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/bridge) +"swF" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/rust, +/area/ruin/unpowered{ + name = "Asteroid" + }) +"swG" = ( +/turf/closed/wall/rust, +/area/security/detectives_office) +"swJ" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/bridge) +"swK" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/bridge) +"swL" = ( +/turf/closed/wall/rust, +/area/quartermaster/storage) +"swM" = ( +/obj/machinery/status_display{ + name = "cargo display"; + supply_display = 1 + }, +/turf/closed/wall/rust, +/area/quartermaster/storage) +"swN" = ( +/turf/closed/wall/rust, +/area/ruin/unpowered{ + name = "Asteroid" + }) +"swZ" = ( +/turf/closed/wall/r_wall/rust, +/area/security/brig) +"sxc" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/unpowered{ + name = "Asteroid" + }) +"sxC" = ( +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/turret_protected/ai) +"syC" = ( +/turf/closed/wall/r_wall/rust, +/area/teleporter) +"syD" = ( +/turf/closed/wall/rust, +/area/quartermaster/miningdock) +"syS" = ( +/turf/closed/wall/rust, +/area/hallway/primary/central) +"syT" = ( +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/storage/eva) +"sAc" = ( +/turf/closed/wall/rust, +/area/storage/primary) +"sAx" = ( +/turf/closed/wall/r_wall/rust, +/area/engine/atmos) +"sAy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/engine/atmos) +"sAz" = ( +/turf/closed/wall/r_wall/rust, +/area/storage/primary) +"sAA" = ( +/turf/closed/wall/rust, /area/crew_quarters/bar/atrium) -"swu" = ( -/obj/machinery/rnd/protolathe/department/medical, +"sAX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/central) +"sAY" = ( +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard) +"sBu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/security/brig) +"sBv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/rust, +/area/crew_quarters/theatre) +"sBw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/rust, +/area/crew_quarters/bar/atrium) +"sBx" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sBy" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"sBW" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/rust, +/area/maintenance/starboard) +"sCr" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, +/area/maintenance/port/central) +"sCt" = ( +/obj/structure/easel, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"sCQ" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/item/storage/box, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"sDl" = ( +/turf/closed/wall/rust, +/area/crew_quarters/dorms) +"sDn" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"sDq" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/tank/internals/air, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"sDK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/rust, +/area/crew_quarters/theatre) +"sDM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/rust, +/area/crew_quarters/bar/atrium) +"sDP" = ( +/turf/closed/wall/rust, +/area/hallway/secondary/exit) +"sEl" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sEm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sEn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sEJ" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/primary/central) +"sEK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sEL" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sEN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Technology Storage"; + req_access_txt = "23" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/vault, +/area/maintenance/starboard) +"sEQ" = ( +/obj/structure/sign/securearea, /turf/closed/wall, +/area/maintenance/starboard) +"sFn" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/circuitboard/computer/cloning{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/circuitboard/machine/clonepod, +/obj/item/circuitboard/machine/clonescanner, +/obj/item/circuitboard/computer/med_data{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/maintenance/starboard) +"sFo" = ( +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, +/area/maintenance/starboard) +"sFp" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 5 + }, +/area/maintenance/starboard) +"sFq" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/table, +/obj/item/clipboard, +/obj/item/crowbar/red, +/obj/item/device/aicard, +/obj/item/device/analyzer, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/maintenance/starboard) +"sFs" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"sFO" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/port/central) +"sFP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"sFR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/circuitboard/machine/autolathe{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/circuitboard/machine/microwave, +/obj/item/circuitboard/computer/secure_data{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/maintenance/starboard) +"sFS" = ( +/turf/open/floor/plasteel/vault/side{ + dir = 10 + }, +/area/maintenance/starboard) +"sFT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/vault/side{ + dir = 6 + }, +/area/maintenance/starboard) +"sFU" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/toolbox/electrical, +/obj/item/electronics/apc, +/obj/item/electronics/airlock, +/obj/item/stock_parts/cell/high, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/maintenance/starboard) +"sFX" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/hallway/secondary/exit) +"sFY" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line, +/obj/item/crowbar, +/obj/item/crowbar, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/hallway/secondary/exit) +"sGy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Technology Storage"; + req_access_txt = "23" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault, +/area/maintenance/starboard) +"sGA" = ( +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard) +"sGC" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/escape{ + dir = 8 + }, +/area/hallway/secondary/exit) +"sGD" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sGU" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 8 + }, +/turf/closed/wall/r_wall/rust, +/area/engine/atmos) +"sGW" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/port/central) +"sGY" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sHb" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard) +"sHd" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/starboard) +"sHe" = ( +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sHf" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sHz" = ( +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/hallway/primary/central) +"sHB" = ( +/turf/open/floor/plasteel/escape{ + dir = 8 + }, +/area/hallway/secondary/exit) +"sHC" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/hallway/secondary/exit) +"sHV" = ( +/turf/closed/wall/r_wall/rust, +/area/engine/engineering) +"sHZ" = ( +/turf/closed/wall/rust, +/area/crew_quarters/theatre) +"sIb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sIc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sId" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/hallway/secondary/exit) +"sIe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sIu" = ( +/turf/closed/wall/r_wall/rust, +/area/engine/gravity_generator) +"sIv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape, +/area/hallway/secondary/exit) +"sIw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/camera{ + c_tag = "Departures Hallway"; + dir = 1 + }, +/turf/open/floor/plasteel/escape, +/area/hallway/secondary/exit) +"sIx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sIy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/escape/corner{ + dir = 8 + }, +/area/hallway/secondary/exit) +"sIA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/engine/engineering) +"sIB" = ( +/turf/closed/wall/rust, +/area/hydroponics) +"sIC" = ( +/turf/closed/wall/rust, +/area/crew_quarters/kitchen) +"sIG" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/hallway/secondary/exit) +"sII" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/engine/gravity_generator) +"sIK" = ( +/turf/closed/wall/rust, +/area/janitor) +"sIL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/central) +"sIN" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/rust, +/area/maintenance/starboard) +"sIO" = ( +/turf/open/space/basic, +/area/space/nearstation) +"sIP" = ( +/obj/machinery/vending/cola/random, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/hallway/secondary/exit) +"sIR" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"sIT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard) +"sIU" = ( +/obj/machinery/door/poddoor/shutters{ + id = "supplybridge" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sIY" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/rack, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/item/storage/toolbox/emergency, +/obj/item/crowbar/red, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"sJa" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/hallway/primary/central) +"sJc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/starboard) +"sJd" = ( +/obj/machinery/button/door{ + id = "supplybridge"; + name = "Shuttle Bay Space Bridge Control"; + pixel_y = 27; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Bridge Hatch"; + req_access_txt = "12" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sJe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sJg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard) +"sJi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sJj" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sJk" = ( +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/escape{ + dir = 10 + }, +/area/hallway/secondary/exit) +"sJn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/crew_quarters/bar/atrium) +"sJo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/central) +"sJq" = ( +/obj/structure/sign/directions/engineering{ + desc = "A sign that shows there are doors here. There are doors everywhere!"; + icon_state = "doors"; + name = "WARNING: EXTERNAL AIRLOCK" + }, +/turf/closed/wall, +/area/maintenance/starboard) +"sJx" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/hydroponics) +"sJy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/tcommsat/server) +"sJA" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side, +/area/hallway/primary/central) +"sJD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall/rust, +/area/tcommsat/server) +"sJG" = ( +/turf/closed/wall/r_wall/rust, +/area/engine/supermatter) +"sJH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/maintenance/port) +"sJI" = ( +/turf/closed/wall/rust, +/area/library) +"sJJ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/hallway/primary/central) +"sJK" = ( +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/hallway/primary/central) +"sJL" = ( +/turf/closed/wall/r_wall, +/area/science/research) +"sJN" = ( +/turf/closed/wall/rust, +/area/maintenance/starboard) +"sJO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault/side, +/area/tcommsat/server) +"sJP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side, +/area/tcommsat/server) +"sJR" = ( +/obj/structure/sign/poster/contraband/random, +/turf/closed/wall/rust, +/area/maintenance/starboard/aft) +"sJS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken7" + }, +/area/library) +"sJT" = ( +/turf/closed/wall/rust, +/area/medical/morgue) +"sJV" = ( +/turf/closed/wall/r_wall/rust, +/area/tcommsat/server) +"sJX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/library) +"sKa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/science/research) +"sKd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, +/area/library) +"sKe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + broken = 1; + icon_state = "wood-broken2" + }, +/area/library) +"sKf" = ( +/turf/closed/wall/rust, +/area/science/research) +"sKh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/science/research) +"sKj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault/telecomms{ + dir = 5 + }, +/area/tcommsat/server) +"sKn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/telecomms{ + dir = 5 + }, +/area/tcommsat/server) +"sKp" = ( +/turf/closed/wall/rust, /area/medical/medbay/zone3) -"swv" = ( +"sKx" = ( +/turf/closed/wall/r_wall/rust, +/area/maintenance/port) +"sKB" = ( +/turf/closed/wall/rust, +/area/security/checkpoint) +"sKE" = ( +/turf/closed/wall/rust, +/area/maintenance/port) +"sKH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/rust, +/area/maintenance/port) +"sKI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/rust, +/area/maintenance/port) +"sKJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/science/robotics/lab) +"sKL" = ( +/obj/structure/sign/poster/contraband/random, +/turf/closed/wall/rust, +/area/maintenance/port) +"sKP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/science/robotics/mechbay) +"sKQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/science/robotics/lab) +"sKW" = ( +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/port) +"sKZ" = ( +/turf/closed/wall/r_wall/rust, +/area/science/xenobiology) +"sLc" = ( +/obj/structure/barricade/wooden, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sLf" = ( +/turf/closed/wall/rust, +/area/chapel/main) +"sLg" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/maintenance/starboard/aft) +"sLm" = ( +/turf/closed/wall/rust, +/area/hallway/secondary/entry) +"sLw" = ( +/obj/structure/sign/electricshock, +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/turret_protected/ai) +"sLx" = ( +/obj/structure/table, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/camera{ + c_tag = "AI Chamber - Core"; + dir = 2; + name = "core camera"; + network = list("RD") + }, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/ai) +"sLy" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLz" = ( +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/table, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/ai) +"sLA" = ( +/obj/structure/sign/electricshock, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"sLB" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/ai) +"sLC" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/ai) +"sLD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLE" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLF" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLI" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/turret_protected/ai) +"sLJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault/corner, +/area/ai_monitored/turret_protected/ai) +"sLL" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI core shutters" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/ai) +"sLM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/vault/corner{ + dir = 8 + }, +/area/ai_monitored/turret_protected/ai) +"sLN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/turret_protected/ai) +"sLP" = ( +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai"; + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = 3; + pixel_y = -23 + }, +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 8; + obj_integrity = 300; + icon_state = "leftsecure"; + name = "Primary AI Core Access"; + req_access_txt = "16" + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = 4; + pixel_y = 33 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 6 + }, +/area/ai_monitored/turret_protected/ai) +"sLQ" = ( +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = 30; + pixel_y = 30 + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 23; + pixel_y = -23 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLR" = ( +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 4; + obj_integrity = 300; + icon_state = "rightsecure"; + name = "Primary AI Core Access"; + req_access_txt = "16" + }, +/obj/machinery/camera{ + c_tag = "AI Chamber - Core"; + dir = 2; + name = "core camera"; + network = list("RD") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 10 + }, +/area/ai_monitored/turret_protected/ai) +"sLS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/turret_protected/ai) +"sLT" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -28 + }, +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLV" = ( +/obj/item/device/radio/intercom{ + broadcasting = 0; + freerange = 1; + listening = 1; + name = "Common Channel"; + pixel_x = -27; + pixel_y = -7 + }, +/obj/item/device/radio/intercom{ + anyai = 1; + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = -27 + }, +/obj/item/device/radio/intercom{ + anyai = 1; + broadcasting = 0; + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 27; + pixel_y = -7 + }, +/obj/effect/landmark/start/ai, +/obj/machinery/button/door{ + id = "aicorewindow"; + name = "AI Core shutters control"; + pixel_x = 24; + pixel_y = -22; + req_access_txt = "16" + }, +/obj/machinery/button/door{ + id = "aicoredoor"; + name = "AI Chamber entrance shutters control"; + pixel_x = -23; + pixel_y = -23; + req_access_txt = "16" + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLX" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sLY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/turret_protected/ai) +"sLZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/turret_protected/ai) +"sMa" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/vault/corner{ + dir = 4 + }, +/area/ai_monitored/turret_protected/ai) +"sMc" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "AI Chamber - Core"; + dir = 2; + name = "core camera"; + network = list("RD") + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/ai_monitored/turret_protected/ai) +"sMe" = ( +/obj/machinery/power/apc{ + aidisabled = 0; + dir = 1; + name = "AI Chamber APC"; + areastring = "/area/ai_monitored/turret_protected/ai"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/vault/corner{ + tag = "icon-vaultcorner (NORTH)"; + icon_state = "vaultcorner"; + dir = 1 + }, +/area/ai_monitored/turret_protected/ai) +"sMg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMl" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/ai) +"sMm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"sMq" = ( +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/turret_protected/aisat_interior) +"sMr" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sMv" = ( +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/device/mmi, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/turret_protected/ai) +"sMw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/ai) +"sMx" = ( +/obj/item/folder/blue, +/obj/item/device/assembly/flash/handheld, +/obj/structure/table, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/turret_protected/ai) +"sMD" = ( +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sME" = ( +/turf/closed/wall/rust, +/area/ai_monitored/turret_protected/aisat_interior) +"sMG" = ( +/obj/machinery/teleport/hub, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sMH" = ( +/obj/machinery/teleport/station, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sMI" = ( +/obj/machinery/computer/teleporter, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sMK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/turret_protected/aisat_interior) +"sML" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + locked = 1; + name = "MiniSat Chamber"; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "aicoredoor"; + name = "AI Core Access" + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -26 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "AI Intercom"; + pixel_x = 28 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sMO" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sMP" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sMQ" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sMT" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sMU" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sMV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/camera{ + c_tag = "AI Satellite - Access"; + dir = 4; + name = "ai camera"; + network = list("Sat"); + start_active = 1 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sMW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sMX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "AI Intercom"; + pixel_x = 26; + pixel_y = 26 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 5 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sMY" = ( +/obj/structure/sign/securearea, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sMZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel/vault/side{ + dir = 9 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNa" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 1 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 5 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNc" = ( +/obj/structure/sign/securearea, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/turret_protected/aisat_interior) +"sNd" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sNe" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sNf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Waste Out"; + on = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sNg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sNh" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating/airless/astplate, +/area/ai_monitored/turret_protected/aisat_interior) +"sNj" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/aisat_interior) +"sNk" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + name = "MiniSat External Access"; + req_access = null; + req_access_txt = "65" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/aisat_interior) +"sNl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNm" = ( +/obj/structure/transit_tube/station/reverse/flipped{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sNn" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNo" = ( +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/aisat_interior"; + name = "AI Satellite turret control"; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Antechamber"; + req_one_access_txt = "32;19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/aisat_interior) +"sNp" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNq" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/aisat_interior) +"sNr" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNs" = ( +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Antechamber"; + req_one_access_txt = "32;19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/aisat_interior) +"sNt" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNu" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/aisat_interior) +"sNv" = ( +/obj/machinery/camera{ + c_tag = "AI Satellite - Maintenance"; + dir = 8; + name = "ai camera"; + network = list("Sat"); + start_active = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNx" = ( +/obj/structure/sign/securearea, +/turf/closed/wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sNy" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + name = "MiniSat External Access"; + req_access = null; + req_access_txt = "65" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/vault, +/area/ai_monitored/turret_protected/aisat_interior) +"sNA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -28 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 10 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNB" = ( +/obj/structure/transit_tube, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sNC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 6 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "AI Satellite - Antechamber"; + dir = 4; + name = "ai camera"; + network = list("Sat"); + start_active = 1 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 8 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNF" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/aisat_interior) +"sNG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/ai_monitored/turret_protected/aisat_interior) +"sNI" = ( +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -26 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "MiniSat APC"; + areastring = "/area/ai_monitored/turret_protected/aisat_interior"; + pixel_y = -27 + }, +/obj/structure/cable/white, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sNJ" = ( +/obj/machinery/recharge_station, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sNK" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/electrical, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sNM" = ( +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) +"sNP" = ( +/obj/structure/transit_tube, +/obj/effect/spawner/structure/window/hollow/reinforced/middle, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat_interior) +"sNQ" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall, +/area/ai_monitored/turret_protected/aisat_interior) +"sNS" = ( +/obj/machinery/porta_turret/ai{ + installation = /obj/item/gun/energy/e_gun + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sNT" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/mmi, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/structure/table, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sNU" = ( +/obj/machinery/porta_turret/ai{ + installation = /obj/item/gun/energy/e_gun + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/firealarm{ + pixel_y = -26 + }, +/turf/open/floor/plasteel/vault/side, +/area/ai_monitored/turret_protected/aisat_interior) +"sOb" = ( +/obj/structure/transit_tube, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"sOj" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/crossing, +/turf/open/space/basic, +/area/space/nearstation) +"sOk" = ( +/obj/structure/sign/securearea, +/turf/closed/wall, +/area/space/nearstation) +"sOr" = ( +/obj/structure/transit_tube, +/obj/effect/spawner/structure/window/hollow/reinforced/middle, +/turf/open/floor/plating, +/area/bridge) +"sOs" = ( +/obj/machinery/door/airlock/command{ + name = "MiniSat Access"; + req_access_txt = "65" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"sOt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/bridge) +"sOu" = ( +/obj/structure/transit_tube, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/bridge) +"sOv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/vault/side{ + dir = 4 + }, +/area/bridge) +"sOw" = ( +/obj/effect/turf_decal/bot, +/obj/structure/transit_tube/station/reverse{ + tag = "icon-closed_terminus0 (WEST)"; + icon_state = "closed_terminus0"; + dir = 8 + }, +/turf/open/floor/plating, +/area/bridge) +"sOx" = ( +/turf/closed/wall/r_wall, +/area/ai_monitored/nuke_storage) +"sOz" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/nuke_storage) +"sOA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/nuke_storage) +"sOB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/nuke_storage) +"sOD" = ( +/turf/closed/wall/r_wall/rust, +/area/ai_monitored/nuke_storage) +"sOF" = ( +/obj/structure/sign/directions/engineering{ + desc = "A direction sign, pointing out which way the Supply department is."; + dir = 4; + icon_state = "direction_supply"; + name = "supply department" + }, +/obj/structure/sign/directions/engineering{ + desc = "A direction sign, pointing out which way the Command department is."; + dir = 1; + icon_state = "direction_bridge"; + name = "command department"; + pixel_y = 8 + }, +/obj/structure/sign/directions/science{ + pixel_y = -8 + }, +/turf/closed/wall, +/area/maintenance/starboard) +"sOG" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/maintenance/starboard) +"sOI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/hallway/primary/central) +"sOJ" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/turf/open/floor/plating/airless/astplate, +/area/ruin/unpowered{ + name = "Asteroid" + }) +"sOK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard) +"sOL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"sOM" = ( +/turf/closed/wall, +/area/maintenance/starboard/aft) +"sON" = ( +/turf/closed/wall/rust, +/area/maintenance/starboard/aft) +"sOT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg2" + }, +/area/maintenance/starboard/aft) +"sOU" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sOV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sOY" = ( +/obj/structure/sign/poster/contraband/random, +/turf/closed/wall, +/area/maintenance/starboard/aft) +"sOZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sPa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) +"sPi" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/maintenance/starboard/aft) +"sPk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sPo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/aft) +"sPI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"sPK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + burnt = 1; + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) +"sPY" = ( +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"sPZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/stairs/right, +/area/hallway/primary/central) +"sQa" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ id_tag = "Dorm4"; @@ -34699,7 +36004,7 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"sww" = ( +"sQb" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ id_tag = "Dorm1"; @@ -34713,7 +36018,7 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"swx" = ( +"sQc" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ id_tag = "Dorm2"; @@ -34727,13 +36032,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"swy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/maintenance/port) (1,1,1) = {" aaa @@ -62091,11 +63389,11 @@ aad aad aad aGe +sIu aGe aGe aGe -aGe -aGe +sIu bwY abi aad @@ -62347,7 +63645,7 @@ aad aad aad aad -aGe +sIu aHe aIb aJh @@ -62605,14 +63903,14 @@ aad aad aad aGe -aHf +aId aIc aJi aKq aLE -bwY +sII afM -abP +abu afM abi aad @@ -62865,22 +64163,22 @@ aGe aHg aId aHe -aKr +aKq aLF bxj +sJy bxl -bxl -bxl +sJy aSO aMJ aMJ +sJV aMJ aMJ aMJ +sJV aMJ -aMJ -aMJ -abP +abu aad aad aaa @@ -63120,7 +64418,7 @@ aad aad aGe aGe -aGe +sIu aJj aKs aLG @@ -63135,10 +64433,10 @@ aTX buH buJ buO -aRB +sKn aMJ acG -ahu +sxc aad aac aaa @@ -63386,12 +64684,12 @@ aNU aOw buC bxp -aRB +sJO aPG aQG aUO buK -aRB +sKj buR aMJ afM @@ -63891,7 +65189,7 @@ aad aad aad afL -bwY +sII aJm aKv aLJ @@ -63900,12 +65198,12 @@ aNW aOx buC bxp -aRB +sJP aPG buG buI buK -aRB +sKj buR aMJ aad @@ -64144,7 +65442,7 @@ aAh aBp aCr aqz -ahu +sxc ahu ahu aaV @@ -64164,7 +65462,7 @@ blq buN buQ buU -aMJ +sJV agE afL aad @@ -64404,27 +65702,27 @@ aDn aEn aFq aGf -aHh +sIA aIe aJo aKx aLL aMN aMN -aMN +sJD aMN bxt bwW aMJ aMJ aMJ +sJV aMJ aMJ -aMJ -aMJ +sJV abi ahu -ahu +sxc aac aaa aaa @@ -64644,11 +65942,11 @@ aad aad abi ajQ -aqz +sAx arr -asy +awC atz -aus +ayb avy awC axj @@ -64897,7 +66195,7 @@ aaW abj abj abu -abP +abu aad aad acF @@ -64914,7 +66212,7 @@ azj aAk aBq aCu -aDp +sGU aEp aFs aGh @@ -65160,7 +66458,7 @@ abi abu awL art -asA +atB atB auu avA @@ -65180,8 +66478,8 @@ aIh aJr aKz aLO -aMQ -aMQ +aOB +aOB aOB aLU aQK @@ -65193,7 +66491,7 @@ aVL aUR aUQ bvo -ahu +sxc aad aac bvI @@ -65422,9 +66720,9 @@ atC auv avB awF -axl +awF aye -axl +awF aAm aBs aCw @@ -65440,7 +66738,7 @@ buW aMR aMX aMX -buW +sJG aQK aRI aSS @@ -65451,7 +66749,7 @@ aWz aVL bvo ahu -bvh +bvg bvg aad aad @@ -65675,7 +66973,7 @@ anx aqC arv asC -atD +auw auw auw auw @@ -65706,7 +67004,7 @@ aUR aUU aWz aUQ -bvh +bvg bvo aad aad @@ -65924,7 +67222,7 @@ abu abj aad aaV -abP +abu amG anx aoq @@ -65944,7 +67242,7 @@ aBu aCy aDp aEt -aEt +sHV aGg aHn aIk @@ -65964,7 +67262,7 @@ aUU aWz aVL bvg -bvh +bvg aad aad aad @@ -66182,7 +67480,7 @@ abj abj abu abu -adw +acF anx aor apv @@ -66205,8 +67503,8 @@ aFw aGk aHo aIl -aJv -aKB +aLR +aMU aLR aMU aOa @@ -66434,25 +67732,25 @@ aad aad aad abi -ail +ael abj abu abu alG -adw +acF anx aoq apw aqF ary asF -atG +azm auz avE awI axn ayi -azn +azo aAo aBw aCA @@ -66477,7 +67775,7 @@ aUS aUU aWz aVL -bvh +bvg aad aad aad @@ -66726,7 +68024,7 @@ aMW aMW aOD buW -aQQ +aQK aRN aSX aPL @@ -66957,7 +68255,7 @@ agE abi aad abi -awL +sAy arA asH atI @@ -66970,7 +68268,7 @@ azp aAq aBy aCC -aqz +sAx aEt aEt aGg @@ -66995,11 +68293,11 @@ bvo aOH aZo baj -baj +sKE baj aZo aZo -baj +sKE baj aad aad @@ -67231,12 +68529,12 @@ aDs aEx aFz aGm -aHs +aHl aIp -aJx +aJw aKE aLU -aMY +aOE aOb aOE aLO @@ -67249,15 +68547,15 @@ aUU aWz aUQ aad -aOH +sKx aZp bak bbc bbQ -swy +bcF bdD beu -baj +sKE aad aad aad @@ -67454,7 +68752,7 @@ aac aad aad aad -aah +swF aad aad aad @@ -67491,15 +68789,15 @@ aGn aHt aIq aJy -aKF +aJy aLV aMZ -aOc +aMZ aOF aPM aQS aRQ -aSQ +bxu aUa aUU aUU @@ -67511,7 +68809,7 @@ aZq bal bbd bbR -bbR +bcG bdE bev baj @@ -67721,16 +69019,16 @@ afL ahu agF agF +swZ agF agF agF -agF -agF +swZ agF agF aqH arC -arC +sBu arC auE avJ @@ -67760,7 +69058,7 @@ aTa aEt bvo bvg -bvh +bvg bvo bvo aOH @@ -67975,7 +69273,7 @@ aad aad abT agE -ahu +sxc aim aiR ajR @@ -68003,7 +69301,7 @@ aEA aDv aDv aHv -aEt +sHV aJA aKH aLX @@ -68011,14 +69309,14 @@ aEt aEt aOH aPO +sJH aQU aQU +sJH +sJH aQU aQU -aQU -aQU -aQU -aQU +sJH aQU aQU aZs @@ -68232,7 +69530,7 @@ aad aad afL abj -ahu +sxc ain aiS ajS @@ -68272,16 +69570,16 @@ bxR aRS aTb aUb -aRS +aVM aVM aTb -aXd -aQV aTb -aZt +aTb +aVM +aTb bao bbf -bbU +aZA bbR bdF bcK @@ -68523,7 +69821,7 @@ aKJ aLZ aNb aEt -aOJ +bbg aPQ aQW aQW @@ -68535,7 +69833,7 @@ aQW aQW aQW aQW -aQW +sJI aQW bbg aZz @@ -68741,7 +70039,7 @@ aad aad abi abi -abT +swN abi abT acG @@ -68762,7 +70060,7 @@ asM agF auI avN -aqz +sAx axw ayo azv @@ -68780,7 +70078,7 @@ aKK aMa aNc aEt -aOK +bbg aPR aQW aRT @@ -68795,11 +70093,11 @@ aYw aZu aQW aYA -aPV +sKH bcK bdH bex -baj +sKE aad aad aad @@ -69000,8 +70298,8 @@ aaW abj adv ael -abT -abP +swN +abu agF ahv aiq @@ -69036,14 +70334,14 @@ aJE aKL aMb aNd -aEt +sHV aOL aPS -aQW -aRU +sJI +aSc aTc aUd -aSa +sKd aVO aWB aVO @@ -69054,7 +70352,7 @@ aQW bbh aPV baj -bca +sKL baj aZo aad @@ -69259,7 +70557,7 @@ abu acF abi afN -agF +swZ ahw air aiW @@ -69294,7 +70592,7 @@ aKM aMa aNe aEt -aOL +aYA aPT aQW aRV @@ -69308,7 +70606,7 @@ aXM aYy aZw aQW -bbi +bbg bbV bcL bdI @@ -69512,7 +70810,7 @@ abj abj abS acD -adw +acF aem afb adw @@ -69564,7 +70862,7 @@ aVQ aQW aQW aQW -aQW +sJI bbj bbW bcM @@ -69770,9 +71068,9 @@ abj abu acE adx -aen +acF adz -afc +adw agF ahy ait @@ -69813,15 +71111,15 @@ aPV aQW aRX aTf -aUf +sJX aUX aVR aVQ aXg aQW aYz -aZx -aRS +aTb +aTb bbk bbV bcN @@ -69833,7 +71131,7 @@ aad aad abT abT -abT +swN abT abT aad @@ -70026,12 +71324,12 @@ aad aaW abu acF -ady +acF aeo abi -afO -agF +acF agF +swZ agF aiZ ajZ @@ -70070,13 +71368,13 @@ aPW aQW aRY aTg -aUf +sJX bxS aVS aWE aXh aQW -aYA +bbg aZy bap bap @@ -70084,10 +71382,10 @@ bbX bcO bdL beB -baj -bfu +sKE bfu bfu +sLf bfu bhZ biF @@ -70284,7 +71582,7 @@ abi abi acG adz -abT +swN abi acF agG @@ -70327,21 +71625,21 @@ aPX aQX aRZ aTh -aUf +sJX aUY aVT aVQ aXi aQW -aYB +bbg aZz baq bbl bbY bcP bdM -bcQ -baj +bcP +sKE bfv bfS bgB @@ -70540,13 +71838,13 @@ aad aad abT acH -acF +adw aep -afc acF +aem agH ahA -agF +swZ ajb akb ala @@ -70562,7 +71860,7 @@ agF auP avU anH -axC +sPZ axC axC aAC @@ -70585,17 +71883,17 @@ aQY aSa aSa aUg -aUX +sKe aVU aWE aXj -aQW +sJI aYC aZA bar bbm bbZ -bcQ +bcP bcP bcP baj @@ -70607,7 +71905,7 @@ bib biH bjh bfu -bfu +sLf bfu aac aaa @@ -70798,11 +72096,11 @@ aad abT abT abT +swN +swN abT abT -abT -abT -abT +swN agF ajc ajc @@ -70840,14 +72138,14 @@ aOR aPZ aQZ aSb -aSb +sJS aUh aUZ aVV aVQ aXk aQW -aYD +bbg aPV bas bbn @@ -71108,7 +72406,7 @@ aYE aZB bap bap -bap +sKI bap bap bap @@ -71332,7 +72630,7 @@ asT atN auS avX -awQ +sDl axE ayw azA @@ -71343,7 +72641,7 @@ aDD aEL awQ aGz -aHG +aGM aIB aJJ aKQ @@ -71362,13 +72660,13 @@ aWG aXl aQW aYF -bxU +bxR aRS -bbo +aTb bcb bcS -bdO -beD +aTb +aVM beR bfy bfT @@ -71379,7 +72677,7 @@ biG bjk bjA bjL -bfu +sLf aaa aaa aaa @@ -71566,7 +72864,7 @@ aac aac aad aad -abv +swG acK adC aes @@ -71579,7 +72877,7 @@ ajf ake ald abt -abt +syS abt abt apI @@ -71598,7 +72896,7 @@ aBP aCO aDE aEM -awQ +sDl aGA aHH aIC @@ -71611,7 +72909,7 @@ aOU aQc aRb aRb -aRb +sJT aRb aRb aRb @@ -71621,7 +72919,7 @@ aSh aSh aSh aSh -aSh +sKp bcc bcT bdP @@ -71633,7 +72931,7 @@ bgE bhr bif biL -bfu +sLf bfu bfu bfu @@ -71873,7 +73171,7 @@ aUk aVc aVY aWH -aSh +sKp aXO aYG aZC @@ -71883,7 +73181,7 @@ aSh aSh aSh aSh -beT +bbg bfA bfu bgF @@ -72096,7 +73394,7 @@ alU amP abt abt -apI +sAc aqU arR asW @@ -72106,7 +73404,7 @@ avZ awQ awQ awQ -awQ +sDl aAH bxK awQ @@ -72114,11 +73412,11 @@ awQ awQ awQ aGC -aHJ -aIB -aIB +aGK +sIK aIB aIB +sIK aIB aIB aOW @@ -72140,7 +73438,7 @@ bcd bcU bdQ aSh -beU +bbg bfA bfV bgG @@ -72340,7 +73638,7 @@ abv abv abv abv -abv +swG afi afU afU @@ -72351,7 +73649,7 @@ akh alf alV amQ -anK +anJ aoD apI aqV @@ -72360,16 +73658,16 @@ asX atR auV awa -awQ +sDl axH ayz azD aAH aBQ -sww +sQb aDG aEO -awQ +sDl aGD aHK aIE @@ -72396,7 +73694,7 @@ aSh bce bcV bdR -aSh +sKp beV bfB bfW @@ -72407,7 +73705,7 @@ biO bfu bfu bfu -bfu +sLf aaa aaa aaa @@ -72609,7 +73907,7 @@ abt alW amR abt -abt +syS apI aqW arT @@ -72634,7 +73932,7 @@ aJM aKU aMj aNo -aOg +aJM aOY aQf abt @@ -72654,7 +73952,7 @@ bcf bcW blt aSh -beW +aOL bfA bfX bgI @@ -72853,12 +74151,12 @@ aad abw abw abw -abw +swC abw abw afW abw -abw +swC abw ajk akj @@ -72887,14 +74185,14 @@ awQ bxN aHM aHM -aHM +sIB aHM aHM aHM aHM aOZ bxQ -ayV +sJJ aSh aTm aUo @@ -72911,7 +74209,7 @@ bcg bcX bdS aSh -bbg +aOL bfy bfY bgJ @@ -73107,7 +74405,7 @@ aad aad aad aad -abw +swC abX acO adG @@ -73120,12 +74418,12 @@ abw ajl akk alg -alg +syC alg alg alg apJ -apJ +sAz apI aHF atU @@ -73134,14 +74432,14 @@ apI awQ axJ ayB -swv +sQa aAH aBS -swx +sQc ayz aEQ -awQ -aGF +sDl +arY aHM aIG aJN @@ -73168,7 +74466,7 @@ aUn aWb bdT aSh -beY +bbg bfA bfZ bgK @@ -73404,11 +74702,11 @@ aIH aJO aKW aMl -aIH +sJx aOh aPb aQd -azU +sJK aSi aTo aUq @@ -73438,14 +74736,14 @@ aaa aaa aaa bgU -bkh +bkj bgU aae aaa aaa aae bgU -bkh +bkj bgU aaa aaa @@ -73635,7 +74933,7 @@ blf akm ali alZ -amU +anM bxB anM apL @@ -73647,16 +74945,16 @@ atc awe awQ awQ +sDl awQ awQ awQ -awQ -awQ +sDl awQ awQ awQ arY -aHM +sIB aII aJP aKX @@ -73689,7 +74987,7 @@ bgM bhx bin biT -bfu +sLf aae aae aae @@ -73900,18 +75198,18 @@ alg arX atd atW -atd -atd +sCr +aBU bxE -axL -ayD -atd -atd aBU -ayD -atd aBU -aFM +atd +atd +sFO +aBU +sGW +aBU +atd aGH aHM aIJ @@ -73939,7 +75237,7 @@ bci bcZ bdW aSh -beU +bbg bfA bfu bfu @@ -73962,7 +75260,7 @@ bgU bkj bgU bjY -bgP +sLm bgU bgU aae @@ -74150,7 +75448,7 @@ ako alj amb amW -anO +amW aoH apN alg @@ -74160,12 +75458,12 @@ ath auZ auZ auZ +sDK auZ auZ auZ auZ -auZ -auZ +sDK auZ auZ auZ @@ -74412,7 +75710,7 @@ aoI apO alg arZ -atf +sBv atX ava awf @@ -74453,7 +75751,7 @@ aWK bda bdX aSh -bfc +aYF bfE bdO bgO @@ -74646,11 +75944,11 @@ aaf aaa aai aay -aak +swv aam aak abw -abw +swC abw abw abw @@ -74665,10 +75963,10 @@ alg amd amY alg +syC alg alg -alg -asa +arY atf atY avb @@ -74682,7 +75980,7 @@ aBW aCQ aDK aET -aAL +sHZ aGK aHP aIM @@ -74710,7 +76008,7 @@ bcj bdb bdY aSh -bar +sKW bfF aZo bgP @@ -74909,8 +76207,8 @@ abk aby acd acU -adM -adM +aby +aby bxx age agV @@ -74935,7 +76233,7 @@ axN ayG azG aAM -atZ +sFP aCR aDL aEU @@ -74950,7 +76248,7 @@ aNv aOh aPb aQg -aRj +aRg aSn aTu aUw @@ -75187,8 +76485,8 @@ ath aua avd awi -awi -awi +sDn +sDn ayH azH auZ @@ -75209,7 +76507,7 @@ aPh aQk aRf aRg -aTv +aRf aRg aRf aRg @@ -75224,7 +76522,7 @@ aSh aWK bea beG -baj +sKE bfH baj bgQ @@ -75427,7 +76725,7 @@ aak aak aak aak -aak +swv aak aak ajq @@ -75437,8 +76735,8 @@ ame ame abt aoL -apR -ara +arY +sAA ara ara aub @@ -75454,7 +76752,7 @@ aCT aDN aAL aAL -apS +aHF aHQ aIP aJV @@ -75679,14 +76977,14 @@ aba abm abB acg -acX +swJ adO aez afq agg agX ahP -adQ +sOx ajr akt alm @@ -75942,7 +77240,7 @@ aeA afr afr agY -ahQ +agi adO aji aku @@ -76194,9 +77492,9 @@ abo abD aci acZ -adQ +sOx aeB -adQ +sOz agh agZ ahR @@ -76245,7 +77543,7 @@ aWQ abt aYc aYW -byo +sKB baI bby bcn @@ -76453,7 +77751,7 @@ acj ada adR aeC -adQ +sOA agi aha ahS @@ -76703,14 +78001,14 @@ aal aau aaG aaR -abc -abo -abD +swx +swy +swD aci adb -adQ +sOx aeD -adQ +sOB agj ahb ahT @@ -76756,7 +78054,7 @@ aUy aUy aUy aWS -abt +syS aYe aYW byo @@ -76971,7 +78269,7 @@ afr afr ahc ahU -adQ +sOD ajv aky alr @@ -77022,7 +78320,7 @@ byo byo bdh byo -byo +sKB byo bfK avV @@ -77199,11 +78497,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +aac +aad +aad +aad +aac aaa aaa aaa @@ -77221,14 +78519,14 @@ abe abm abG acl -acX +swK adO aeF afs agk ahd ahV -adQ +sOx ajw akz als @@ -77258,7 +78556,7 @@ aHU aIQ aJX aLg -aAR +sJn ara aOr aPo @@ -77454,15 +78752,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aac +aad +aad +aad +aad +aad +aac +aac aaa aaa aaa @@ -77479,8 +78777,8 @@ aak abA acf add -aak -aak +swv +swv aak aak aak @@ -77515,9 +78813,9 @@ aCe aCe aJY aLh -aMv +aAT ayP -ayV +sJA aPp aQt blp @@ -77550,14 +78848,14 @@ aaa bjO bjZ bka -bkm +bkb bka bkb bkb bkb bkb bkG -bkm +bkb bka bka aaa @@ -77707,28 +79005,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aad +aad +aac +aad +aad +aad +aad +aad +sMD +sMD +sME +sNx +aae +aae +aae +aae +aae aaf aae aae -aak +swv aaK aaT abg @@ -77741,7 +79039,7 @@ aeG aft agl ahe -ahW +agl abq ajy akB @@ -77772,7 +79070,7 @@ aCe aIR aJZ aLh -aMw +aso ayP ayP aPq @@ -77800,7 +79098,7 @@ bgl bgX bhL biA -bgP +sLm aae aae aae @@ -77962,25 +79260,25 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aac +aad +aad +aad +aad +aad +aad +aad +aad +aad +sME +sMT +sNj +sNy +sNM +sNM +sNM +aae aaa aaa aae @@ -77996,7 +79294,7 @@ adf adT aeH afu -agm +acn ahf ahX aiC @@ -78029,7 +79327,7 @@ aHV aIS aKa aLh -aMx +sJo aNA ayP aPr @@ -78051,12 +79349,12 @@ bct bdl beg beL -bfi -bfP +aYu bfP bfP bfP bfP +sKZ bfP bfP bfP @@ -78218,26 +79516,26 @@ aaa aaa aaa aaa +aac +aac +aad +aad +aad +aad +aad +aad +aad +aad +aad +sMq +sMr +sMU +sNk +sMq +sMr aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aae aaa aaa aae @@ -78245,10 +79543,10 @@ aaa aan aay aak -aaj +sOs aak abs -abs +swz abs abs aeI @@ -78263,10 +79561,10 @@ alu amn ane alu +syT alu alu -alu -asm +asp atm aui avn @@ -78287,7 +79585,7 @@ aIT aKb aLh aCe -asn +aso ayP aPs aQv @@ -78307,8 +79605,8 @@ bbD bxV bdm beh -beL -bfj +sKP +sOV bfP blu bgY @@ -78475,36 +79773,36 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaf -aaa +aac +aad +aad +aad +sxC +sxC +adQ +adQ +adQ +adQ +sxC +sMr +sMG +sMV +sNl +sNA +sMr aaa aaa aae aaa +aaa aae -abs +aaa +aaa +aaa +aak +sOt +sOv +swz aco adg adU @@ -78522,7 +79820,7 @@ anf anU aoW aqc -alu +syT bxC atm auj @@ -78532,7 +79830,7 @@ axb ara ayQ azN -aAU +asp aCe aCY aDV @@ -78544,7 +79842,7 @@ aIU aKc aLi aCe -asm +asp ayP aPt aQv @@ -78565,8 +79863,8 @@ bcv bdn bei beL -bfk -bfP +aTS +sKZ bgn bgZ bhM @@ -78574,7 +79872,7 @@ bfP bgn bgZ bhM -bfP +sKZ aad aad aad @@ -78731,37 +80029,37 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaf -aaf -aae -aag -aaf -aaf -aae -abJ +aac +aac +aad +aad +adQ +sLB +adQ +adQ +adQ +sxC +adQ +sLB +sMr +sMH +sMW +sNm +sNB +sNP +sOb +sOb +sOj +sOb +sOb +sOj +sOb +sOb +sOb +sOr +sOu +sOw +abs acp adh adV @@ -78822,7 +80120,7 @@ bcu bdo bej beL -aTR +sPI bfP bgo bha @@ -78988,37 +80286,37 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaf -aaa +aac +aad +aad +sxC +adQ +sLC +sLJ +ahQ +sLT +ahQ +sMa +sLC +sMr +sMI +sMX +sNn +sNC +sNQ aaa aaa aae aaa +aaa aae -abJ +aaa +aaa +aaa +aak +swv +aak +abs acq adi adW @@ -79038,7 +80336,7 @@ aoX aqe alu asp -atm +sBw aul avq awv @@ -79053,7 +80351,7 @@ aDX aFe aFW aGW -aCe +sIC aIW aKe aLk @@ -79079,7 +80377,7 @@ aZe bdp aZe beL -bfi +aYu bfP bgp bhb @@ -79244,28 +80542,28 @@ aaa aaa aaa aaa +aac +aac +aad +adQ +adQ +sLw +sLD +sLK +sLO +sLO +sLY +sMb +sLD +sMq +sMr +sMY +sNo +sMr +sMq +sMr aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aae aaa aaa aae @@ -79294,13 +80592,13 @@ anX ani aqf alu -asp +sAX atn aum avr aww aum -aum +sDM ayT azQ aAW @@ -79501,28 +80799,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aad +aad +adQ +adQ +sLx +ahQ +adQ +sLP +adQ +adQ +sMc +sMk +sMv +sMK +sMZ +sNp +sNE +sNS +sMr +aad +aae aaa aaa aae @@ -79532,7 +80830,7 @@ aaa aae aaa abs -abs +swz acs adk adX @@ -79551,27 +80849,27 @@ anY aoY aqg alu -asq +aMx ato aun avs awx axe -axU +ato axe azR aAX -axU -aDb axe -aFg -avs +aDb ato -aHX +aFg +axe avs +axe +sIL aKf ato -avs +axe aNE ayP blo @@ -79758,30 +81056,30 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aad +aad +sxC +adQ +sLy +sLE +sLL +sLQ +sLV +adQ +sMd +sMl +sMw +sML +sNa +sNq +sNF +sNT +sMr +aad +sOk +aae +aae aaf aaa aaa @@ -79796,14 +81094,14 @@ adX aeO afA agt -abs +swz aic aiG ajE akI alu alu -alu +syT alu alu alu @@ -79812,7 +81110,7 @@ abt abt abt abt -abt +syS abt abt abt @@ -79824,7 +81122,7 @@ abt abt abt abt -abt +syS abt abt abt @@ -79850,7 +81148,7 @@ baa bds baa aZl -bfi +aYu bfP bgs bhb @@ -80015,28 +81313,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aad +aad +adQ +sxC +sLz +sLF +adQ +sLR +adQ +adQ +sMe +sMm +sMx +sMr +sNb +sNr +sNG +sNU +sMq +aad +aad aaa aaa aae @@ -80045,12 +81343,12 @@ aaa aad aah aad +swz abs abs abs abs -abs -abs +swz abs abs abs @@ -80090,11 +81388,11 @@ aNF ank aPw aQz -aVA -aVA +sJL +sJL aTO aUH -aVA +sKf aVA aVA aXF @@ -80107,7 +81405,7 @@ bcy bdt bem beO -bfj +sOV bfP bgo bhe @@ -80273,27 +81571,27 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +aad +adQ +adQ +sLA +sLG +sLM +sLS +sLS +sLZ +sMf +sMn +sMr +sMr +sNc +sNs +sMr +sMr +sMq +aad +aad aaa aaa aae @@ -80302,7 +81600,7 @@ aad aad aad aad -bxZ +swA abL acu adm @@ -80311,7 +81609,7 @@ bym afB agu ahj -adY +bym aiH alz akK @@ -80323,32 +81621,32 @@ apa aqi blh arj -atp +sOI aup avu atp arj arj arj -arj +sEJ aBa aBa anl aDZ -aFh +alc aFY bsz aDZ aIY aDZ -aDZ +sJa arj arj anl aPx arj aRx -aSC +sOT aTP aUI aVB @@ -80374,7 +81672,7 @@ bjb bju bjH bfP -bfP +sKZ aad aad aad @@ -80531,26 +81829,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +aad +adQ +sxC +sLC +sLN +ahQ +sLX +ahQ +sMg +sLC +sMr +sMO +sNd +sNt +sNI +sMr +aad +aad +aad aaa aad aah @@ -80565,10 +81863,10 @@ byi adn adn adn +swL adn adn -adn -adn +swL adn ajH ado @@ -80578,36 +81876,36 @@ adp aob apb anQ -alt -ald +sOF +sOG atq -abt -abt -atq -abt -abt +aRz +aRz +sOK +aRz +aRz bli azU aBb aCh aDc aEa +sHz aFi -blX bsA aHY aIZ blm -ahZ +azU aMy aHY aDc aPy aQA -abt -aSD -aTQ -aUI +sOM +sOU +sOV +sKa aVC aWt aWZ @@ -80621,7 +81919,7 @@ bcA bdv beo aZl -bfo +sPK bfP bgm bhg @@ -80789,25 +82087,25 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +aad +adQ +sLI +adQ +adQ +adQ +adQ +sxC +sLB +sMr +sMP +sNe +sNu +sNJ +sMr +aad +aad +aac aaa aad aad @@ -80835,35 +82133,35 @@ ado aoc apc aqj -abt +aRz asr -atr -abt +bfp +aRz avv acx axf -abt -abt -abt -abt -abt -abt -axW +aRz +aRz +sEK +sJN +aRz +aRz +aRz +aRz blL -blY bsB -axW -abt -abt -abt -abt +aRz +aRz +aRz +sOL +aRz abt abt anQ anQ -abt +sON aSE -aTR +sOV aUI aVD aWu @@ -80871,19 +82169,19 @@ aXa aXI aYs aZj -bae +bac baY bbM bxW bdw bep aZl -bfp +sPI bfP bgm bhh bgm -bfP +sKZ bjd bjw bjI @@ -81047,24 +82345,24 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aad +aad +adQ +adQ +adQ +sxC +sxC +adQ +sxC +sMr +sMQ +sNf +sNv +sNK +sMq +aad +aad +aac aaa aaa aad @@ -81073,7 +82371,7 @@ aac aad aad aad -bxZ +swA byg byk adn @@ -81081,7 +82379,7 @@ aea aeQ afD agw -aeV +ajI aid aiJ agw @@ -81092,30 +82390,30 @@ anm aod apd aqk -abt +aRz ass -ats -abt +aTR +sJN avw awz axg -abt -aaa -aaa -aaa -aaa -aaa -axW -blM -blZ +aRz +sEl +sEL +aXb +bai +aSC +aYt +aRz +bxM bsC -axW -aaa -aaa -aaa -aaa -aaa -aaa +aSH +bvh +sIT +sJc +sJN +aae +aae aae aae aRy @@ -81123,10 +82421,10 @@ aSF aTS aUJ aVE +sKh aVE aVE -aVE -aVE +sKh aZk baf baZ @@ -81134,9 +82432,9 @@ bbN bcB bdx beq -aZl -bfo -bfP +sKQ +sOV +sKZ bgm bhi bgm @@ -81144,7 +82442,7 @@ bfP bje bjx bjI -bfP +sKZ aad aad aad @@ -81304,23 +82602,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa +aad +aad +aad +aad +aad +aad +aad +aad +aad +sMq +sMr +sNg +sMq +sMr +sMr +aad +aad aaa aaa aaa @@ -81333,9 +82631,9 @@ aad bxZ byf byl -adn -aeb -aeR +swL +aed +aeT afE agx ahl @@ -81349,41 +82647,41 @@ ado aoc apc aql -abt +aRz ast -att -abt -abt -abt -abt -abt -aaa -aaa -aaa -aaa -aaa -axW -blN -blZ +bfo +aRz +aRz +aRz +sJN +aRz +bfp +aSD +aRz +aRz +aRz +sGY +aRz +sIb bsD -axW -aaa -aaa -aaa -aaa +aRz +sIN +aRz +sJd +sJq aaa bte aPz aPz -aRz +sOM aSG aTT aUK aVF -aWv -aXb -aXJ -aYt +sOZ +sPa +sOT +sPk aZl bag bba @@ -81394,7 +82692,7 @@ ber aZl bxX bfP -bfP +sKZ bfP bfP bfP @@ -81562,22 +82860,22 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +bvI +aad +aad +aad +aad +aad +aad +aad +aad +sNh +aad +aad +aad +aad +aac aaa aaa aaa @@ -81588,13 +82886,13 @@ aad aad aad bvg -bvh -bvh +bvg +bvg adn aec aeS afF -agy +agx ahm adp aiL @@ -81606,55 +82904,55 @@ adn aoe ape aqm -abt -abN +sJN +sAY acw -abt -aad -aad -aad -aaa -aaa -aaa -aaa -aaa -aaa -axW -blO +aXJ +aSC +aXJ +bai +aXb +sEm +aRz +sFn +sFR +sJN +sGY +aRz bmb bsE axW -aaa -aaa -aaa -aaa -aaa +aae +sIU +sJe +sIU +aae bte aPA aQB -aRz -aSH -aRz -aSH +sOM +sJR +sON +sOY aVG -aSH -aRz -aSH +sJR +sOM +sOY aYu aZm bah bah bah -bah +sKJ bah bah beQ -bfp -aRz +sOV +sOM bgu bhj bhT -aRz +sOM aad bvg aac @@ -81820,18 +83118,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aac +aad +aac +aad +aad +aad +aad +aad +aac +aac +aad aaa aaa aaa @@ -81863,53 +83161,53 @@ ann aof apf aqn -abt +aRz abO -atv -abt -aad -aad -aad -aaa -aaa -aaa -aaa -aaa -aaa -azb -blM -blZ -bsC -azb -aaa -aaa -aaa -aaa +bfp +aSD +sCt +sCQ +sDq +aSD +sEn +sEN +sFo +sFS +aSH +sGY +aRz +sIc +sIv +sFs +sIO +sIU +sJe +sIU aaa bte aPB aQC -aRz +sOM aSI aTU aUL aVH aWw -aRz -aXK +sOM +sPi aYv -aZn -bai -bbb +sPa +sPo +sOZ bbP -aXb +aUK bdz -aXJ -aZn +sPa +sOZ bfr -aSH +sOY bgv -bhk +sPY bhU aRy bvg @@ -82080,13 +83378,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aac +aac +aad +aad +aad +aac +aac aaa aaa aaa @@ -82119,30 +83417,30 @@ amA ano aog apg -aqo -abt +aqk +aRz abN acy -abt -aad -aac -aac -aaa -aaa -aaa -aaa -aaa -aaa -azb -blM +aRz +sJN +aRz +aRz +aRz +aRz +aRz +sFp +sFT +sGy +sHb +aRz bxM bsC -azb -aaa -aaa -aaa -aaa -aaa +axW +aae +sIU +sJg +sIU +aae bte aPC aQD @@ -82152,21 +83450,21 @@ aTV aUM aVI aWx -aRz -aRz -aRz -aRz -aRz -aRz -aRz -aSH +sOM +sON +sOM +sON +sOM +sOM +sON +sOY bdA -aRz -aRz -bfq -aRz +sOM +sOM +sOV +sON bgw -bhl +sPY bhV aRy bvg @@ -82338,10 +83636,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +aac +aac +aad +aad aaa aaa aaa @@ -82363,9 +83661,9 @@ aad aad ado aed -aeV +ajI afI -aeV +ajI ahp adn aiO @@ -82377,55 +83675,55 @@ ado acv aph aqp -abt +aRz bvh -bvh -bvg -aac -aac -aae -aaa -aaa -aaa -aaa -aaa -aaa -azb +sBx +aRz +aad +aad +aah +aad +aad +aSD +sFq +sFU +aRz +sGY +sJN blM -blZ -bsC -azb -aaa -aaa -aaa -aaa +sIw +axW +aRz +sJN +sJd +abN aaa bte aPz aPz -aRz +sOM aSK aTW aUN aVJ aWy -aRz +sOM aad aad aad aad aad -aRz +sOM bcD bdB bes -aRz +sOM bfs -aRA +sLc bgx bhm bhW -aRz +sON aac aaa aaa @@ -82597,7 +83895,7 @@ aaa aaa aaa aaa -aaa +aad aaa aaa aaa @@ -82618,15 +83916,15 @@ aaa aaa aaa aac -adp -aef -aeW +swM +aeh +agB ado agB ahq adp ado -adn +swL ado adn amC @@ -82636,51 +83934,51 @@ api amD amC amC +sBy +sBW +aad +aac bvg -aac -aae -aae -aae -aaa -aaa -aaa -aaa -aaa -aaa -azb -blM -blZ +aad +aad +sJN +aRz +aRz +aSD +sHd +aRz +bxM bsC -azb -aaa -aaa -aaa -aaa -aaa -aaa +sIG +aRz +sIY +sJi +aRz aae aae -aRz +aae +aae +sON aRy aRy aRy aRy aRy -aRz +sON aad aac aad aad aad -aRz +sOM bcE bdC bet -aRz +sOM bft -aRz +sOM bgy -bhk +sPY bhX aRy bvg @@ -82886,37 +84184,37 @@ aae aae aae aae -amC +syD anq aoi apj aqq ark amC -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -axW +sOJ +bvg +aac +aac +aae +aac +aad +aRz +aXK +bhk +sGA +sHe +aRz blO -blZ bsJ axW -axW -axW -axW -axW -aaa -aaa -aaa -aaa +aRz +aSH +sJj +aRz +aae +aaf +aaf +aae aaa aaa aaa @@ -82929,16 +84227,16 @@ aaa aac aac aad -aRz -aRz -aRz -aRz -aRz -aRz -aRz +sOM +sON +sOM +sOM +sON +sOM +sOM bgz -bhk -bgw +sPY +sLg aRy bvg aac @@ -83134,9 +84432,9 @@ aaa aaa ado aeh -aeW +agB ado -aeW +agB ahq ado aaa @@ -83150,27 +84448,27 @@ apk aqr arl amC +bvg +aac +aac aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -axW -blU +aae +aac +aac +sEQ +aRz +sJN +atq +aRz +aRz bmh -bsC -bmw -blZ +sIx +aKh +sIP bmC bmG axW -aaa +aae aaa aaa aaa @@ -83192,11 +84490,11 @@ aad aad aad aad -aRz +sOM bgA bhn bhY -aRz +sON aad aac aac @@ -83406,31 +84704,31 @@ aok apl aqs arm -amC +syD +aac aaa aaa aaa +aae aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -axW +aac +bvg +sFs +sFX +sGC +sHf +sHB blM +sIy blZ -bsC +sHB blZ -blZ -blZ -blZ -axW -aaa -aaa -aaa +sJk +sDP +aae aaa +aaf +aaf aaa aaa aaa @@ -83449,11 +84747,11 @@ aac aac aad aad -aRz -aRz -aRz -aRz -aRz +sOM +sON +sOM +sOM +sOM aad aad aad @@ -83646,8 +84944,8 @@ aaa aaa abQ acz -adr -adr +afa +afa afa afK afa @@ -83668,26 +84966,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -axW -blM -blZ +aae +aae +bvg +bvg +sFs +sFY +sGD +bsS +sHC +sId bsM bsS -bsS +sIR bsS bsY axW -aaa -aaa -aaa -aaa +aae +aae +aae +aaf aaa aaa aaa @@ -83908,9 +85206,9 @@ aej ads ads ads -adt -aih -aiP +ads +aii +aiQ ajN akR aaa @@ -83921,21 +85219,21 @@ apn aqu amD aae -aaa -aaa -aaa -aaa -aaa -axW +aae +aaf +aaf +aae +aae axW +sDP azb axW axW axW azb -aFj -aFZ -bsN +blL +blY +bsB azb axW aKh @@ -83943,8 +85241,8 @@ bsZ azb axW axW -aaa -aaa +aae +aaf aaa aaa aaa @@ -84160,21 +85458,21 @@ aaa aaa abQ buy -adt -adt -adt ads -adt +ads +ads +ads +ads ads aii -aiP -ajO +aiQ +ajN akR aaa aae ant aom -apo +apn aqv ant aae @@ -84182,7 +85480,7 @@ aaa aaa aaa aaa -aaa +aae axW ayW azV @@ -84191,7 +85489,7 @@ aCi aDd aEb aFk -aDh +sIe bsO aHZ aJa @@ -84200,8 +85498,8 @@ bta aMz aNG azb -aaa -aaa +aae +aaf aaa aaa aaa @@ -84416,8 +85714,8 @@ aaa aaa aaa abQ -acB -adt +acA +ads ads ads ads @@ -84425,7 +85723,7 @@ ads ads aii aiQ -ajO +ajN akR aaa aaa @@ -84438,8 +85736,8 @@ aaa aaa aaa aaa -aaa -aaa +aaf +aae axW ayX azW @@ -84457,7 +85755,7 @@ btb aIa aNH axW -aaa +aae aaa aaa aaa @@ -84674,12 +85972,12 @@ aaa aaa abQ acC -adu aek -adu +aek +aek buz aek -adu +aek aij abQ abQ @@ -84695,8 +85993,8 @@ amE aaa aaa aaa -aaa -aaa +aaf +aae axW ayY azX @@ -84713,8 +86011,8 @@ aKj btc aMA aNI -axW -aaa +sDP +aae aaa aaa aaa @@ -84945,15 +86243,15 @@ aaa amE anu aon -apq +aon aqw arn amE aaa aaa aaa -aaa -aaa +aaf +aae axW ayZ azY @@ -84970,9 +86268,9 @@ bsX btd aMB aNJ -axW -aaa -aaa +sDP +aae +aaf aaa aaa aaa @@ -85210,7 +86508,7 @@ aaa aaa aaa aaa -aaa +aae axW aza azZ @@ -85228,8 +86526,8 @@ aLt aMC aNK axW -aaa -aaa +aae +aaf aaa aaa aaa @@ -85466,9 +86764,9 @@ amE aaa aaa aaa -aaa -aaa -axW +aaf +aae +sDP azb azb aBh @@ -85485,8 +86783,8 @@ aDi azb azb axW -aaa -aaa +aae +aaf aaa aaa aaa @@ -85723,26 +87021,26 @@ amE aaa aaa aaa -aaa -aaa +aaf +aae aae aae azb -aBi +aDh azb -aBi +aDh azb aae aae aae azb -aBi +aDh azb -aLu +aDh azb aae aae -aaa +aae aaa aaa aaa @@ -85995,7 +87293,7 @@ aaa azb aDi azb -aLv +aDi azb aaa aaa @@ -87027,7 +88325,7 @@ aLx aMF aNN axY -aPF +aPE aQE aaa aaa @@ -87284,7 +88582,7 @@ aLy aMG aNO axX -aPF +aPE aQE aaa aaa @@ -87798,7 +89096,7 @@ aLA aMH aNP axX -aPF +aPE aQE aaa aaa @@ -88055,7 +89353,7 @@ aLB aLB aNQ axY -aPF +aPE aQE aaa aaa @@ -88312,7 +89610,7 @@ aLB aLB aNR axY -aPF +aPE aQE aaa aaa diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index a504dc4a0b..c4158d21b1 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -202,7 +202,7 @@ icon_state = "4-8" }, /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "AI Core"; req_access_txt = "65" }, @@ -241,7 +241,7 @@ /area/ai_monitored/turret_protected/ai) "act" = ( /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "AI Core"; req_access_txt = "65" }, @@ -502,7 +502,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "AI Core"; req_access_txt = "65" }, @@ -2136,7 +2136,7 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ahm" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 2"; req_access_txt = "2" }, @@ -2156,7 +2156,7 @@ /turf/closed/wall, /area/security/prison) "ahp" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Long-Term Cell 1"; req_access_txt = "2" }, @@ -2864,7 +2864,6 @@ "aiY" = ( /obj/structure/table, /obj/item/device/flashlight/lamp, -/obj/item/storage/box/mousetraps, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aiZ" = ( @@ -2908,7 +2907,7 @@ /area/security/prison) "ajd" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -2925,7 +2924,7 @@ /area/security/prison) "ajf" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Prison Wing"; req_access_txt = "1" }, @@ -3137,14 +3136,14 @@ /area/maintenance/department/crew_quarters/dorms) "ajA" = ( /obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; id = "syndicate_ne"; name = "northeast of station"; turf_type = /turf/open/space; - width = 18 + width = 23 }, /turf/open/space, /area/space/nearstation) @@ -3537,6 +3536,7 @@ /area/maintenance/department/security/brig) "aks" = ( /obj/machinery/light/small, +/obj/item/storage/box/mousetraps, /turf/open/floor/plating, /area/maintenance/department/security/brig) "akt" = ( @@ -4407,7 +4407,7 @@ /turf/open/floor/plasteel/dark, /area/security/main) "amt" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Head of Security"; req_access_txt = "58" }, @@ -5810,7 +5810,7 @@ /turf/open/floor/plating, /area/security/warden) "apM" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig Control"; req_access_txt = "3" }, @@ -6393,7 +6393,7 @@ /area/security/brig) "arj" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Labor Camp Shuttle Airlock"; req_access_txt = "2" }, @@ -7453,7 +7453,7 @@ /turf/open/floor/plating, /area/security/brig) "atE" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -7478,7 +7478,7 @@ /turf/open/floor/plating, /area/security/brig) "atG" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 2; id_tag = "innerbrig"; name = "Brig"; @@ -7490,7 +7490,7 @@ }, /area/security/brig) "atH" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig Desk"; req_access_txt = "1" }, @@ -8781,7 +8781,7 @@ /area/shuttle/labor) "awH" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Labor Camp Shuttle Airlock"; req_access_txt = "0" }, @@ -8828,7 +8828,7 @@ /area/security/brig) "awL" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -8856,7 +8856,7 @@ /area/security/brig) "awN" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ cyclelinkeddir = 1; id_tag = "outerbrig"; name = "Brig"; @@ -10634,7 +10634,7 @@ /area/crew_quarters/heads/captain) "aBq" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 2; name = "Bridge"; req_access_txt = "19" @@ -10648,7 +10648,7 @@ "aBr" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 2; name = "Bridge"; req_access_txt = "19" @@ -10711,7 +10711,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 2; name = "Bridge"; req_access_txt = "19" @@ -13145,7 +13145,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 1; name = "Bridge"; req_access_txt = "19" @@ -13159,7 +13159,7 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 1; name = "Bridge"; req_access_txt = "19" @@ -13181,7 +13181,7 @@ /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ cyclelinkeddir = 1; name = "Bridge"; req_access_txt = "19" @@ -14830,7 +14830,7 @@ /area/storage/eva) "aLb" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "EVA Storage"; req_access_txt = "18" }, @@ -14847,7 +14847,7 @@ "aLd" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Teleporter"; req_access_txt = "17" }, @@ -14926,7 +14926,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aLs" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, @@ -16435,7 +16435,7 @@ }, /area/security/checkpoint/supply) "aOR" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Cargo Security Post"; req_access_txt = "63" }, @@ -17396,7 +17396,7 @@ /area/security/checkpoint/supply) "aRg" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Cargo Security Post"; req_access_txt = "63" }, @@ -17821,7 +17821,7 @@ /area/quartermaster/office) "aSg" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Mailroom"; req_access_txt = "0"; req_one_access_txt = "48;50" @@ -18751,7 +18751,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "aUo" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay"; req_access_txt = "0"; req_one_access_txt = "31;48" @@ -20921,7 +20921,7 @@ /area/quartermaster/office) "aZl" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Cargo Office"; req_access_txt = "50" }, @@ -21872,7 +21872,7 @@ /turf/open/floor/plating, /area/quartermaster/qm) "bbG" = ( -/obj/machinery/door/airlock/glass_mining{ +/obj/machinery/door/airlock/mining/glass{ name = "Quartermaster"; req_access_txt = "41" }, @@ -26578,7 +26578,7 @@ /area/medical/genetics) "bnw" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Cloning"; req_access_txt = "0"; @@ -26636,7 +26636,7 @@ /area/security/checkpoint/medical) "bnB" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Medbay Security Post"; req_access_txt = "63" }, @@ -26776,7 +26776,7 @@ /area/science/server) "bnU" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Server Room"; req_access_txt = "30" }, @@ -28155,7 +28155,7 @@ /area/medical/genetics) "bra" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "GeneticsDoor"; name = "Cloning"; req_access_txt = "0"; @@ -29796,7 +29796,7 @@ /area/science/explab) "buA" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Experimentation Lab"; req_access_txt = "47" }, @@ -30020,7 +30020,7 @@ /area/science/xenobiology) "buV" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Kill Room"; req_access_txt = "55" }, @@ -30071,7 +30071,7 @@ /turf/closed/wall/r_wall, /area/medical/genetics) "bvd" = ( -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Genetics"; req_access_txt = "9" }, @@ -30168,7 +30168,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "bvq" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33" @@ -31710,7 +31710,7 @@ /turf/open/floor/plating, /area/medical/sleeper) "byp" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Sleepers"; req_access_txt = "5" @@ -31722,7 +31722,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "byq" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Sleepers"; req_access_txt = "5" @@ -32986,7 +32986,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bBd" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = "MedbaySleepers"; name = "Sleepers"; req_access_txt = "5" @@ -33532,7 +33532,7 @@ }, /area/medical/medbay/central) "bCq" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Chief Medical Office"; req_access_txt = "40" }, @@ -34149,7 +34149,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Toxins Storage"; req_access_txt = "8" }, @@ -34190,7 +34190,7 @@ /area/science/research) "bDU" = ( /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_research{ +/obj/machinery/door/airlock/research/glass{ name = "Toxins Lab"; req_access_txt = "8" }, @@ -34432,6 +34432,10 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -34447,6 +34451,10 @@ pixel_x = -3; pixel_y = -3 }, +/obj/machinery/door/window/southleft{ + name = "First-Aid Supplies"; + req_access_txt = "5" + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -34462,6 +34470,10 @@ pixel_x = -3; pixel_y = -3 }, +/obj/machinery/door/window/southright{ + name = "First-Aid Supplies"; + req_access_txt = "5" + }, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -34477,6 +34489,7 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/window/reinforced, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -35159,7 +35172,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bFR" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; req_access_txt = "45" @@ -35243,7 +35256,7 @@ /turf/closed/wall, /area/hallway/primary/aft) "bGb" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Research Security Post"; req_access_txt = "63" }, @@ -35611,7 +35624,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bGY" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; req_access_txt = "45" @@ -35996,11 +36009,10 @@ /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) "bHS" = ( -/obj/structure/table, -/obj/item/device/flashlight/lamp, /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" }, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) "bHT" = ( @@ -36550,6 +36562,8 @@ /obj/structure/sign/poster/contraband/random{ pixel_x = 32 }, +/obj/structure/table, +/obj/item/device/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) "bJi" = ( @@ -36619,7 +36633,7 @@ }, /area/medical/medbay/central) "bJq" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Recovery Room"; req_access_txt = "0" @@ -37044,7 +37058,7 @@ /area/medical/virology) "bKo" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Isolation B"; req_access_txt = "39" }, @@ -37053,7 +37067,7 @@ /area/medical/virology) "bKp" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ +/obj/machinery/door/airlock/virology/glass{ name = "Isolation A"; req_access_txt = "39" }, @@ -37739,7 +37753,7 @@ "bLX" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ cyclelinkeddir = 0; name = "Atmospherics"; req_access_txt = "24" @@ -38189,7 +38203,7 @@ dir = 4 }, /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Monitoring"; req_access_txt = "24" }, @@ -38618,7 +38632,7 @@ dir = 4 }, /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Monitoring"; req_access_txt = "24" }, @@ -40514,7 +40528,7 @@ /area/hallway/primary/aft) "bSQ" = ( /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_atmos{ +/obj/machinery/door/airlock/atmos/glass{ cyclelinkeddir = 0; name = "Atmospherics Monitoring"; req_access_txt = "24" @@ -41457,7 +41471,7 @@ }, /area/security/checkpoint/engineering) "bUY" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Engineering Security Post"; req_access_txt = "63" }, @@ -42725,7 +42739,7 @@ /turf/open/floor/plating, /area/crew_quarters/heads/chief) "bYa" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Chief Engineer"; req_access_txt = "56" }, @@ -42772,7 +42786,7 @@ /area/engine/engine_smes) "bYh" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Power Storage"; req_access_txt = "11"; req_one_access_txt = "0" @@ -47545,7 +47559,7 @@ }, /area/tcommsat/computer) "cmj" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Control Room"; req_access_txt = "19; 61" }, @@ -47674,7 +47688,7 @@ }, /area/tcommsat/computer) "cmw" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ cyclelinkeddir = 2; name = "Server Room"; req_access_txt = "61" @@ -47749,7 +47763,7 @@ /turf/open/floor/plating, /area/tcommsat/computer) "cmF" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ cyclelinkeddir = 1; name = "Server Room"; req_access_txt = "61" @@ -51364,8 +51378,10 @@ /area/maintenance/department/crew_quarters/dorms) "cCY" = ( /obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/department/engine) +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/cargo) "cCZ" = ( /obj/machinery/vending/kink, /turf/open/floor/plating, @@ -73874,7 +73890,7 @@ bvb bDj bEo bva -cCY +bva bHQ bJg bKl @@ -74130,7 +74146,7 @@ bnv bnv bDi bmf -bva +bsn bva bHS bJh @@ -100071,7 +100087,7 @@ aaa aaa aEj bkO -bgO +cCY bnn bom aEj diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 0ef75448e6..a6ee357241 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -310,7 +310,7 @@ /turf/open/floor/plating, /area/engine/engineering) "aU" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Gravity Generator"; req_access_txt = "11"; req_one_access_txt = "0" @@ -339,7 +339,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aX" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Gravity Generator"; req_access_txt = "11"; req_one_access_txt = "0" diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index d58594c865..1866665519 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -9446,7 +9446,7 @@ /turf/open/floor/plasteel, /area/centcom/ferry) "zk" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Infirmary" }, /obj/effect/turf_decal/stripes/line{ diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index dc75cd1fa6..3eba8d7a61 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -197,7 +197,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aP" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Brig"; req_access_txt = "2" }, @@ -297,7 +297,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "bg" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Emergency Shuttle Cockpit"; req_access_txt = "19" }, @@ -355,7 +355,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "bq" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "5" @@ -363,7 +363,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "br" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 6ba0875a66..b5104569ac 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -387,7 +387,7 @@ /turf/open/floor/plasteel/freezer, /area/shuttle/escape) "bq" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay" }, /turf/open/floor/mineral/titanium, diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index 3b2617bfe1..3b62aa9d7b 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -93,7 +93,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "as" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "bridge door"; req_access_txt = "19" }, @@ -134,7 +134,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "az" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "security airlock"; req_access_txt = "63" }, diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index 2090fbe199..f860593b6e 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -399,7 +399,7 @@ }, /area/shuttle/escape) "bn" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Brig"; req_access_txt = "2" }, @@ -717,7 +717,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "ce" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Emergency Shuttle Medbay" }, /turf/open/floor/plasteel/whiteblue, @@ -986,7 +986,7 @@ }, /area/shuttle/escape) "cP" = ( -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engine Room"; req_one_access_txt = "10;24" }, diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index caa457f43a..6e22434fcd 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -306,7 +306,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aF" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -422,7 +422,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "aV" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -649,14 +649,14 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bt" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Holding Area"; req_access_txt = "2" }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "bu" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Cockpit"; req_access_txt = "19" }, diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index 3ffdee6461..9824fec026 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -260,7 +260,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aH" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Cockpit"; req_access_txt = "19" }, @@ -377,14 +377,14 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aY" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Brig"; req_access_txt = "2" }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aZ" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" diff --git a/_maps/shuttles/emergency_meteor.dmm b/_maps/shuttles/emergency_meteor.dmm index 2b712a4943..6f9c0450d4 100644 --- a/_maps/shuttles/emergency_meteor.dmm +++ b/_maps/shuttles/emergency_meteor.dmm @@ -86,7 +86,7 @@ dwidth = 20; height = 40; movement_force = list("KNOCKDOWN" = 3, "THROW" = 6); - name = "a meteor with engines strapped to it"; + name = "\proper a meteor with engines strapped to it"; timid = 1; width = 40 }, diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index 13f4b803a8..6a4d35124c 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -82,14 +82,14 @@ /turf/open/floor/plating, /area/shuttle/escape) "o" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Escape Shuttle Cell"; req_access_txt = "2" }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "p" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0" @@ -214,7 +214,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "I" = ( -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Escape Shuttle Cockpit"; req_access_txt = "19" }, diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm index 1adc770925..b68eeba8e3 100644 --- a/_maps/shuttles/emergency_russiafightpit.dmm +++ b/_maps/shuttles/emergency_russiafightpit.dmm @@ -197,7 +197,7 @@ /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) "aI" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Brig"; req_access_txt = "2" }, @@ -231,7 +231,7 @@ /turf/open/floor/engine, /area/shuttle/escape) "aO" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Airlock"; req_access_txt = "2" }, @@ -280,7 +280,7 @@ name = "Box emergency shuttle"; timid = 1 }, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Airlock" }, /turf/open/floor/plating, @@ -418,7 +418,7 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "br" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Airlock" }, /turf/open/floor/plating, @@ -438,7 +438,7 @@ /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "bu" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Cargo" }, /turf/open/floor/mineral/plastitanium, @@ -448,7 +448,7 @@ /turf/closed/wall, /area/shuttle/escape) "bw" = ( -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Infirmary" }, /turf/open/floor/mineral/plastitanium, diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index 78dabd2576..659408ffdf 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -201,7 +201,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_maintenance{ +/obj/machinery/door/airlock/maintenance/glass{ name = "Maintenance" }, /turf/open/floor/plasteel, @@ -252,7 +252,7 @@ }, /area/shuttle/abandoned) "aA" = ( -/obj/machinery/door/airlock/glass_maintenance{ +/obj/machinery/door/airlock/maintenance/glass{ name = "Maintenance" }, /turf/open/floor/plasteel, @@ -1014,7 +1014,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Infirmary"; req_access_txt = "0" @@ -1295,7 +1295,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_engineering{ +/obj/machinery/door/airlock/engineering/glass{ name = "Engineering Storage" }, /turf/open/floor/plasteel/neutral/side{ @@ -1614,7 +1614,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/machinery/door/airlock/glass_command{ +/obj/machinery/door/airlock/command/glass{ name = "Bridge"; welded = 1 }, diff --git a/_maps/templates/pirate_ship.dmm b/_maps/templates/pirate_ship.dmm index e9be381c99..02da197578 100644 --- a/_maps/templates/pirate_ship.dmm +++ b/_maps/templates/pirate_ship.dmm @@ -538,7 +538,7 @@ /turf/open/floor/pod/dark, /area/shuttle/pirate/vault) "bs" = ( -/obj/machinery/door/airlock/glass_medical{ +/obj/machinery/door/airlock/medical/glass{ name = "Medbay" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 5a834b1f87..253e9f5888 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -61,7 +61,7 @@ //DNA - Because fuck you and your magic numbers being all over the codebase. #define DNA_BLOCK_SIZE 3 -#define DNA_UNI_IDENTITY_BLOCKS 19 +#define DNA_UNI_IDENTITY_BLOCKS 19 //CIT CHANGE - adds more DNA blocks for cit's mutant bodyparts. Update citadel_defines.dm if this gets changed. #define DNA_HAIR_COLOR_BLOCK 1 #define DNA_FACIAL_HAIR_COLOR_BLOCK 2 #define DNA_SKIN_TONE_BLOCK 3 @@ -69,19 +69,7 @@ #define DNA_GENDER_BLOCK 5 #define DNA_FACIAL_HAIR_STYLE_BLOCK 6 #define DNA_HAIR_STYLE_BLOCK 7 -#define DNA_EYE_COLOR_TWO_BLOCK 8 -#define DNA_EYE_COLOR_SWITCH_BLOCK 9 -#define DNA_EYE_COLOR_BLOCK 10 -#define DNA_COLOR_ONE_BLOCK 11 -#define DNA_COLOR_TWO_BLOCK 12 -#define DNA_COLOR_THR_BLOCK 13 -#define DNA_COLOR_SWITCH_BLOCK 14 -#define DNA_COLOR_SWITCH_MAX 7 //must be (2^(n+1))-1 -#define DNA_COCK_BLOCK 15 -#define DNA_MUTANTRACE_BLOCK 16 -#define DNA_MUTANTTAIL_BLOCK 17 -#define DNA_MUTANTWING_BLOCK 18 -#define DNA_WINGCOLOR_BLOCK 19 + #define DNA_STRUC_ENZYMES_BLOCKS 18 #define DNA_UNIQUE_ENZYMES_LEN 32 @@ -127,7 +115,7 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 -#define NOLIVER 27 +#define NOLIVER 27 #define NOSTOMACH 28 #define NO_DNA_COPY 29 #define DRINKSBLOOD 30 @@ -135,11 +123,6 @@ #define SPECIES_INORGANIC 32 #define SPECIES_UNDEAD 33 #define SPECIES_ROBOTIC 34 -//citadel code -#define MUTCOLORS2 35 -#define MUTCOLORS3 36 -#define NOAROUSAL 37 //Stops all arousal effects -#define NOGENITALS 38 //Cannot create, use, or otherwise have genitals #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 7622fc0ea7..2c60abb325 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -1,79 +1,5 @@ //A set of constants used to determine which type of mute an admin wishes to apply: //Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) -//Therefore there needs to be a gap between the flags_1 for the automute flags_1 -#define MUTE_IC 1 -#define MUTE_OOC 2 -#define MUTE_PRAY 4 -#define MUTE_ADMINHELP 8 -#define MUTE_DEADCHAT 16 -#define MUTE_ALL 31 - -//Some constants for DB_Ban -#define BANTYPE_PERMA 1 -#define BANTYPE_TEMP 2 -#define BANTYPE_JOB_PERMA 3 -#define BANTYPE_JOB_TEMP 4 -#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. - -#define BANTYPE_ADMIN_PERMA 7 -#define BANTYPE_ADMIN_TEMP 8 -#define BANTYPE_ANY_JOB 9 //used to remove jobbans - -//Please don't edit these values without speaking to Errorage first ~Carn -//Admin Permissions -#define R_BUILDMODE 1 -#define R_ADMIN 2 -#define R_BAN 4 -#define R_FUN 8 -#define R_SERVER 16 -#define R_DEBUG 32 -#define R_POSSESS 64 -#define R_PERMISSIONS 128 -#define R_STEALTH 256 -#define R_POLL 512 -#define R_VAREDIT 1024 -#define R_SOUNDS 2048 -#define R_SPAWN 4096 - -#if DM_VERSION > 512 -#error Remove the flag below , its been long enough -#endif -//legacy , remove post 512, it was replaced by R_POLL -#define R_REJUVINATE 2 - -#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. - -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_KICK(user) "(KICK)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_SMITE(user) "(SMITE)" -#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" -#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" -#define ADMIN_SET_SD_CODE "(SETCODE)" -#define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)] [ADMIN_INDIVIDUALLOG(user)] [ADMIN_SMITE(user)]" -#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" -#define ADMIN_JMP(src) "(JMP)" -#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" -#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" -#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" - -#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" -#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" -#define ADMIN_PUNISHMENT_GIB "Gib" -#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" - -#define AHELP_ACTIVE 1 -#define AHELP_CLOSED 2 -#define AHELP_RESOLVED 3 -//A set of constants used to determine which type of mute an admin wishes to apply: -//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) //Therefore there needs to be a gap between the flags for the automute flags #define MUTE_IC 1 #define MUTE_OOC 2 diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 309489742c..1fba96b1eb 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -9,12 +9,12 @@ #define ANTAG_DATUM_TRAITOR /datum/antagonist/traitor #define ANTAG_DATUM_TRAITOR_HUMAN /datum/antagonist/traitor/human #define ANTAG_DATUM_TRAITOR_AI /datum/antagonist/traitor/AI -#define ANTAG_DATUM_IAA /datum/antagonist/traitor/internal_affairs +#define ANTAG_DATUM_IAA /datum/antagonist/traitor/internal_affairs #define ANTAG_DATUM_IAA_HUMAN /datum/antagonist/traitor/human/internal_affairs -#define ANTAG_DATUM_IAA_AI /datum/antagonist/traitor/AI/internal_affairs +#define ANTAG_DATUM_IAA_AI /datum/antagonist/traitor/AI/internal_affairs #define ANTAG_DATUM_BROTHER /datum/antagonist/brother #define ANTAG_DATUM_ABDUCTOR /datum/antagonist/abductor -#define ANTAG_DATUM_ABDUCTOR_SCIENTIST /datum/antagonist/abductor/scientist -#define ANTAG_DATUM_ABDUCTOR_AGENT /datum/antagonist/abductor/agent +#define ANTAG_DATUM_ABDUCTOR_SCIENTIST /datum/antagonist/abductor/scientist +#define ANTAG_DATUM_ABDUCTOR_AGENT /datum/antagonist/abductor/agent #define ANTAG_DATUM_MONKEY /datum/antagonist/monkey -#define ANTAG_DATUM_MONKEY_LEADER /datum/antagonist/monkey/leader +#define ANTAG_DATUM_MONKEY_LEADER /datum/antagonist/monkey/leader \ No newline at end of file diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 4c8243cdc5..ff60d1c030 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -71,3 +71,31 @@ #define ADMIN_MARKREAD(client) "(MARK READ)"//marks an adminhelp as read and under investigation #define ADMIN_IC(client) "(IC)"//marks and adminhelp as an IC issue #define ADMIN_REJECT(client) "(REJT)"//Rejects an adminhelp for being unclear or otherwise unhelpful. resets their adminhelp timer + +//Damage stuffs +#define AROUSAL "arousal" + +//DNA stuffs. Remember to change this if upstream adds more snowflake options +#define DNA_EYE_COLOR_TWO_BLOCK 8 +#define DNA_EYE_COLOR_SWITCH_BLOCK 9 +#define DNA_EYE_COLOR_BLOCK 10 +#define DNA_COLOR_ONE_BLOCK 11 +#define DNA_COLOR_TWO_BLOCK 12 +#define DNA_COLOR_THR_BLOCK 13 +#define DNA_COLOR_SWITCH_BLOCK 14 +#define DNA_COLOR_SWITCH_MAX 7 //must be (2^(n+1))-1 +#define DNA_COCK_BLOCK 15 +#define DNA_MUTANTRACE_BLOCK 16 +#define DNA_MUTANTTAIL_BLOCK 17 +#define DNA_MUTANTWING_BLOCK 18 +#define DNA_WINGCOLOR_BLOCK 19 + + +//Species stuffs. Remember to change this if upstream updates species flags +#define MUTCOLORS2 35 +#define MUTCOLORS3 36 +#define NOAROUSAL 37 //Stops all arousal effects +#define NOGENITALS 38 //Cannot create, use, or otherwise have genitals + +//Brainslugs +#define isborer(A) (istype(A, /mob/living/simple_animal/borer)) diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm new file mode 100644 index 0000000000..b8a9f0d6c4 --- /dev/null +++ b/code/__DEFINES/colors.dm @@ -0,0 +1,4 @@ +// This is eventualy for wjohn to add more color standardization stuff like I keep asking him >:( + +#define COLOR_INPUT_DISABLED "#F0F0F0" +#define COLOR_INPUT_ENABLED "#D3B5B5" \ No newline at end of file diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 3b08375d0d..582074fcba 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -11,9 +11,6 @@ #define STAMINA "stamina" #define BRAIN "brain" -//Citadel code -#define AROUSAL "arousal" - //bitflag damage defines used for suicide_act #define BRUTELOSS 1 #define FIRELOSS 2 @@ -22,9 +19,6 @@ #define SHAME 16 #define MANUAL_SUICIDE 32 //suicide_act will do the actual killing. -//Citadel code -#define AROUSAL 32 - #define STUN "stun" #define KNOCKDOWN "knockdown" #define UNCONSCIOUS "unconscious" diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 7eebdff142..b5f48f8217 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -75,14 +75,6 @@ // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () -// /obj/item signals -#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user) -#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob) -#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob) - -// /obj/item/clothing signals -#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () - // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 965ee51502..8b3e74b96e 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define ON_BORDER_1 512 // item has priority to check when entering or leaving #define NOSLIP_1 1024 //prevents from slipping on wet floors, in space etc -#define CLEAN_ON_MOVE_1 2048 +#define _UNUSED_1 2048 // BLOCK_GAS_SMOKE_EFFECT_1 only used in masks at the moment. #define BLOCK_GAS_SMOKE_EFFECT_1 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index a1842648ac..d2de6f9100 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -86,7 +86,7 @@ . = SLOT_POCKET -//Bit flags_1 for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. +//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. #define HIDEGLOVES 1 #define HIDESUITSTORAGE 2 #define HIDEJUMPSUIT 4 //these first four are only used in exterior suits @@ -134,17 +134,17 @@ #define THERMAL_PROTECTION_HAND_LEFT 0.025 #define THERMAL_PROTECTION_HAND_RIGHT 0.025 -//flags_1 for female outfits: How much the game can safely "take off" the uniform without it looking weird +//flags for female outfits: How much the game can safely "take off" the uniform without it looking weird #define NO_FEMALE_UNIFORM 0 #define FEMALE_UNIFORM_FULL 1 #define FEMALE_UNIFORM_TOP 2 -//flags_1 for alternate styles: These are hard sprited so don't set this if you didn't put the effort in +//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in #define NORMAL_STYLE 0 #define ALT_STYLE 1 #define DIGITIGRADE_STYLE 2 -//flags_1 for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts +//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts #define NO_MUTANTRACE_VARIATION 0 #define MUTANTRACE_VARIATION 1 @@ -152,9 +152,9 @@ #define FULL_DIGITIGRADE 1 #define SQUISHED_DIGITIGRADE 2 -//flags_1 for covering body parts +//flags for covering body parts #define GLASSESCOVERSEYES 1 -#define MASKCOVERSEYES 2 // get rid of some of the other retardation in these flags_1 +#define MASKCOVERSEYES 2 // get rid of some of the other retardation in these flags #define HEADCOVERSEYES 4 // feel free to realloc these numbers for other purposes #define MASKCOVERSMOUTH 8 // on other items, these are just for mask/head #define HEADCOVERSMOUTH 16 @@ -199,7 +199,8 @@ GLOBAL_LIST_INIT(detective_vest_allowed, typecacheof(list( /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, /obj/item/storage/fancy/cigarettes, - /obj/item/tank/internals/emergency_oxygen))) + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman))) GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/ammo_box, @@ -212,7 +213,8 @@ GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/melee/classic_baton/telescopic, /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, - /obj/item/tank/internals/emergency_oxygen))) + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman))) GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( /obj/item/ammo_box, @@ -227,4 +229,5 @@ GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, /obj/item/toy))) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 6137e1af32..addeca8739 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -102,8 +102,6 @@ #define isrevenant(A) (istype(A, /mob/living/simple_animal/revenant)) -#define isborer(A) (istype(A, /mob/living/simple_animal/borer)) - #define isbot(A) (istype(A, /mob/living/simple_animal/bot)) #define iscrab(A) (istype(A, /mob/living/simple_animal/crab)) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index d112222816..7ea710dd3b 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -49,7 +49,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define FRIDAY_13TH "Friday the 13th" //Human Overlays Indexes///////// -//citadel code +//LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS #define MUTATIONS_LAYER 30 //mutations. Tk headglows, cold resistance glow, etc #define GENITALS_BEHIND_LAYER 29 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer #define BODY_BEHIND_LAYER 28 //certain mutantrace features (tail when looking south) that must appear behind the body parts diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index b6133df287..d7a5356f0f 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -1,52 +1,52 @@ - -//Preference toggles -#define SOUND_ADMINHELP 1 -#define SOUND_MIDI 2 -#define SOUND_AMBIENCE 4 -#define SOUND_LOBBY 8 -#define MEMBER_PUBLIC 16 -#define INTENT_STYLE 32 -#define MIDROUND_ANTAG 64 -#define SOUND_INSTRUMENTS 128 -#define SOUND_SHIP_AMBIENCE 256 -#define SOUND_PRAYERS 512 -#define ANNOUNCE_LOGIN 1024 -#define SOUND_ANNOUNCEMENTS 2048 -#define DISABLE_DEATHRATTLE 4096 -#define DISABLE_ARRIVALRATTLE 8192 - -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) - -//Chat toggles -#define CHAT_OOC 1 -#define CHAT_DEAD 2 -#define CHAT_GHOSTEARS 4 -#define CHAT_GHOSTSIGHT 8 -#define CHAT_PRAYER 16 -#define CHAT_RADIO 32 -#define CHAT_PULLR 64 -#define CHAT_GHOSTWHISPER 128 -#define CHAT_GHOSTPDA 256 -#define CHAT_GHOSTRADIO 512 -#define CHAT_LOOC 1024 - -#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC) - -#define PARALLAX_INSANE -1 //for show offs -#define PARALLAX_HIGH 0 //default. -#define PARALLAX_MED 1 -#define PARALLAX_LOW 2 -#define PARALLAX_DISABLE 3 //this option must be the highest number - -#define PARALLAX_DELAY_DEFAULT world.tick_lag -#define PARALLAX_DELAY_MED 1 -#define PARALLAX_DELAY_LOW 2 - -#define SEC_DEPT_NONE "None" -#define SEC_DEPT_RANDOM "Random" -#define SEC_DEPT_ENGINEERING "Engineering" -#define SEC_DEPT_MEDICAL "Medical" -#define SEC_DEPT_SCIENCE "Science" + +//Preference toggles +#define SOUND_ADMINHELP 1 +#define SOUND_MIDI 2 +#define SOUND_AMBIENCE 4 +#define SOUND_LOBBY 8 +#define MEMBER_PUBLIC 16 +#define INTENT_STYLE 32 +#define MIDROUND_ANTAG 64 +#define SOUND_INSTRUMENTS 128 +#define SOUND_SHIP_AMBIENCE 256 +#define SOUND_PRAYERS 512 +#define ANNOUNCE_LOGIN 1024 +#define SOUND_ANNOUNCEMENTS 2048 +#define DISABLE_DEATHRATTLE 4096 +#define DISABLE_ARRIVALRATTLE 8192 + +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) + +//Chat toggles +#define CHAT_OOC 1 +#define CHAT_DEAD 2 +#define CHAT_GHOSTEARS 4 +#define CHAT_GHOSTSIGHT 8 +#define CHAT_PRAYER 16 +#define CHAT_RADIO 32 +#define CHAT_PULLR 64 +#define CHAT_GHOSTWHISPER 128 +#define CHAT_GHOSTPDA 256 +#define CHAT_GHOSTRADIO 512 +#define CHAT_LOOC 1024 + +#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC) + +#define PARALLAX_INSANE -1 //for show offs +#define PARALLAX_HIGH 0 //default. +#define PARALLAX_MED 1 +#define PARALLAX_LOW 2 +#define PARALLAX_DISABLE 3 //this option must be the highest number + +#define PARALLAX_DELAY_DEFAULT world.tick_lag +#define PARALLAX_DELAY_MED 1 +#define PARALLAX_DELAY_LOW 2 + +#define SEC_DEPT_NONE "None" +#define SEC_DEPT_RANDOM "Random" +#define SEC_DEPT_ENGINEERING "Engineering" +#define SEC_DEPT_MEDICAL "Medical" +#define SEC_DEPT_SCIENCE "Science" #define SEC_DEPT_SUPPLY "Supply" // Playtime tracking system, see jobs_exp.dm diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index edacfb836a..e38fe9954b 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -1,5 +1,56 @@ -#define MIN_FREE_FREQ 1201 -#define MAX_FREE_FREQ 1599 +// Radios use a large variety of predefined frequencies. -#define MIN_FREQ 1441 -#define MAX_FREQ 1489 \ No newline at end of file +#define MIN_FREE_FREQ 1201 // ------------------------------------------------- +// Frequencies are always odd numbers and range from 1201 to 1599. + +#define FREQ_SYNDICATE 1213 // Nuke op comms frequency, dark brown +#define FREQ_CTF_RED 1215 // CTF red team comms frequency, red +#define FREQ_CTF_BLUE 1217 // CTF blue team comms frequency, blue +#define FREQ_CENTCOM 1337 // CentCom comms frequency, gray +#define FREQ_SUPPLY 1347 // Supply comms frequency, light brown +#define FREQ_SERVICE 1349 // Service comms frequency, green +#define FREQ_SCIENCE 1351 // Science comms frequency, plum +#define FREQ_COMMAND 1353 // Command comms frequency, gold +#define FREQ_MEDICAL 1355 // Medical comms frequency, soft blue +#define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange +#define FREQ_SECURITY 1359 // Security comms frequency, red + +#define FREQ_STATUS_DISPLAYS 1435 +#define FREQ_ATMOS_ALARMS 1437 // air alarms <-> alert computers +#define FREQ_ATMOS_CONTROL 1439 // air alarms <-> vents and scrubbers + +#define MIN_FREQ 1441 // ------------------------------------------------------ +// Only the 1441 to 1489 range is freely available for general conversation. +// This represents 1/8th of the available spectrum. + +#define FREQ_ATMOS_STORAGE 1441 +#define FREQ_NAV_BEACON 1445 +#define FREQ_AI_PRIVATE 1447 // AI private comms frequency, magenta +#define FREQ_PRESSURE_PLATE 1447 +#define FREQ_AIRLOCK_CONTROL 1449 +#define FREQ_ELECTROPACK 1449 +#define FREQ_MAGNETS 1449 +#define FREQ_LOCATOR_IMPLANT 1451 +#define FREQ_SIGNALER 1457 // the default for new signalers +#define FREQ_COMMON 1459 // Common comms frequency, dark green + +#define MAX_FREQ 1489 // ------------------------------------------------------ + +#define MAX_FREE_FREQ 1599 // ------------------------------------------------- + +// Transmission types. +#define TRANSMISSION_WIRE 0 // some sort of wired connection, not used +#define TRANSMISSION_RADIO 1 // electromagnetic radiation (default) +#define TRANSMISSION_SUBSPACE 2 // subspace transmission (headsets only) +#define TRANSMISSION_SUPERSPACE 3 // reaches independent (CentCom) radios only + +// Filter types, used as an optimization to avoid unnecessary proc calls. +#define RADIO_TO_AIRALARM "to_airalarm" +#define RADIO_FROM_AIRALARM "from_airalarm" +#define RADIO_SIGNALER "signaler" +#define RADIO_ATMOSIA "atmosia" +#define RADIO_NAVBEACONS "navbeacons" +#define RADIO_AIRLOCK "airlock" +#define RADIO_MAGNETS "magnets" + +#define DEFAULT_SIGNALER_CODE 30 diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 74a1669686..8f38acb203 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -17,6 +17,7 @@ #define MODE_HOLOPAD "holopad" #define MODE_CHANGELING "changeling" #define MODE_VOCALCORDS "cords" +#define MODE_MONKEY "monkeyhive" //Spans. Robot speech, italics, etc. Applied in compose_message(). #define SPAN_ROBOT "robot" diff --git a/code/__DEFINES/server_tools.dm b/code/__DEFINES/server_tools.dm index c0fc133ada..a444caf02a 100644 --- a/code/__DEFINES/server_tools.dm +++ b/code/__DEFINES/server_tools.dm @@ -5,7 +5,7 @@ //use this define if you want to do configuration outside of this file #ifndef SERVER_TOOLS_EXTERNAL_CONFIGURATION //Comment this out once you've filled in the below -//#error /tg/station server tools interface unconfigured +#error /tg/station server tools interface unconfigured //Required interfaces (fill in with your codebase equivalent): diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index b1a9e9e28d..e3f1731a13 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -61,7 +61,6 @@ #define DOCKING_NULL_DESTINATION 8 #define DOCKING_NULL_SOURCE 16 - //Docking turf movements #define MOVE_TURF 1 #define MOVE_AREA 2 diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm index 218afcafb7..d756cbaf1b 100644 --- a/code/__DEFINES/sight.dm +++ b/code/__DEFINES/sight.dm @@ -25,6 +25,6 @@ //for clothing visor toggles, these determine which vars to toggle #define VISOR_FLASHPROTECT 1 #define VISOR_TINT 2 -#define VISOR_VISIONFLAGS 4 //all following flags_1 only matter for glasses +#define VISOR_VISIONFLAGS 4 //all following flags only matter for glasses #define VISOR_DARKNESSVIEW 8 #define VISOR_INVISVIEW 16 diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 8b93c8e38f..6bd8596fb6 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -9,14 +9,14 @@ #define CHANNEL_BUZZ 1017 #define CHANNEL_BICYCLE 1016 -//Citadel code +//CIT CHANNELS - TRY NOT TO REGRESS #define CHANNEL_PRED 1015 #define CHANNEL_PREYLOOP 1014 //THIS SHOULD ALWAYS BE THE LOWEST ONE! //KEEP IT UPDATED -#define CHANNEL_HIGHEST_AVAILABLE 1013 +#define CHANNEL_HIGHEST_AVAILABLE 1013 //CIT CHANGE - COMPENSATES FOR VORESOUND CHANNELS #define SOUND_MINIMUM_PRESSURE 10 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 39f9722486..dcabb26e23 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -46,16 +46,17 @@ #define INIT_ORDER_DBCORE 18 #define INIT_ORDER_BLACKBOX 17 #define INIT_ORDER_SERVER_MAINT 16 -#define INIT_ORDER_RESEARCH 15 -#define INIT_ORDER_EVENTS 14 -#define INIT_ORDER_JOBS 13 -#define INIT_ORDER_TICKER 12 -#define INIT_ORDER_MAPPING 11 -#define INIT_ORDER_ATOMS 10 -#define INIT_ORDER_NETWORKS 9 -#define INIT_ORDER_LANGUAGE 8 -#define INIT_ORDER_MACHINES 7 -#define INIT_ORDER_CIRCUIT 6 +#define INIT_ORDER_INPUT 15 +#define INIT_ORDER_RESEARCH 14 +#define INIT_ORDER_EVENTS 13 +#define INIT_ORDER_JOBS 12 +#define INIT_ORDER_TICKER 11 +#define INIT_ORDER_MAPPING 10 +#define INIT_ORDER_ATOMS 9 +#define INIT_ORDER_NETWORKS 8 +#define INIT_ORDER_LANGUAGE 7 +#define INIT_ORDER_MACHINES 6 +#define INIT_ORDER_CIRCUIT 5 #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 @@ -136,4 +137,4 @@ A.overlays.Cut();\ }\ A.flags_1 &= ~OVERLAY_QUEUED_1;\ - } + } \ No newline at end of file diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 3831349536..a9f5766eb6 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -30,7 +30,7 @@ GLOBAL_VAR_INIT(cmp_field, "name") return sorttext(a.ckey, b.ckey) /proc/cmp_subsystem_init(datum/controller/subsystem/a, datum/controller/subsystem/b) - return b.init_order - a.init_order + return initial(b.init_order) - initial(a.init_order) //uses initial() so it can be used on types /proc/cmp_subsystem_display(datum/controller/subsystem/a, datum/controller/subsystem/b) return sorttext(b.name, a.name) @@ -72,4 +72,3 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_profile_count_dsc(list/A, list/B) return B[PROFILE_ITEM_COUNT] - A[PROFILE_ITEM_COUNT] - diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 17497e3cc0..0f7f4397db 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -30,7 +30,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) - //citadel code +//CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE //mammal bodyparts (fucking furries) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) @@ -56,7 +56,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list) GLOB.breasts_size_list = list("a","b","c","d","e") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing. - +//END OF CIT CHANGES //Species for(var/spath in subtypesof(/datum/species)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index d3b62b67af..14092581b8 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -69,6 +69,7 @@ if(!GLOB.wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) + //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list) if(!GLOB.vagina_shapes_list.len) @@ -90,6 +91,7 @@ womb = 1 breasts = 1 */ + //CIT CHANGE - changes this entire return to support cit's snowflake parts return(list( "mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "mcolor2" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), @@ -473,7 +475,7 @@ Proc for attack log creation, because really why not if(extra_args) new_args += extra_args - for(var/j in 1 to amount) + for(var/j in 1 to amount) var/atom/X = new spawn_type(arglist(new_args)) X.admin_spawned = admin_spawn diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 90205168b5..e019af213f 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -121,7 +121,6 @@ GLOBAL_VAR(command_name) return new_station_name /proc/syndicate_name() - var/name = "" // Prefix @@ -143,7 +142,7 @@ GLOBAL_VAR(command_name) else name += pick("-", "*", "") name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Gen", "Star", "Dyne", "Code", "Hive") - + return name diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index 021dc55347..9b6b601e69 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -55,7 +55,7 @@ for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && M.can_hear()) - to_chat(M, "[title]
[message]

") + to_chat(M, "[title]
[message]

") if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS) if(alert) SEND_SOUND(M, sound('sound/misc/notice1.ogg')) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 8ca98ebf37..0ba19e795e 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -103,10 +103,10 @@ if(LAZYLEN(GLOB.round_end_notifiees)) send2irc("Notice", "[GLOB.round_end_notifiees.Join(", ")] the round has ended.") - /*for(var/client/C in GLOB.clients) + for(var/client/C in GLOB.clients) if(!C.credits) C.RollCredits() - C.playtitlemusic(40)*/ + C.playtitlemusic(40) display_report() @@ -434,7 +434,10 @@ /proc/printplayer(datum/mind/ply, fleecheck) - var/text = "[ply.key] was [ply.name] the [ply.assigned_role] and" + var/jobtext = "" + if(ply.assigned_role) + jobtext = " the [ply.assigned_role]" + var/text = "[ply.key] was [ply.name][jobtext] and" if(ply.current) if(ply.current.stat == DEAD) text += " died" diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 2ebe24b85b..372dc64cab 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -139,7 +139,6 @@ return NORTH //returns the north-zero clockwise angle in degrees, given a direction - /proc/dir2angle(D) switch(D) if(NORTH) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 15a3c73880..b7e30940ac 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -199,6 +199,8 @@ Turf and target are separate in case you want to teleport some distance from a t newname = C.prefs.custom_names[role] else switch(role) + if("human") + newname = random_unique_name(gender) if("clown") newname = pick(GLOB.clown_names) if("mime") @@ -524,7 +526,7 @@ Turf and target are separate in case you want to teleport some distance from a t processing_list.Cut(1, 2) //Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed //This is also why we don't need to check against assembled as we go along - processing_list += A.contents + processing_list += A.contents assembled += A return assembled @@ -1487,6 +1489,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) var/time_low = num2hex(world.time, 3) var/time_clock = num2hex(TICK_DELTA_TO_MS(world.tick_usage), 3) + return "{[time_high]-[time_mid]-[GUID_VERSION][time_low]-[GUID_VARIANT][time_clock]-[node_id]}" // \ref behaviour got changed in 512 so this is necesary to replicate old behaviour. diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index f16e9a16ed..100407d777 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -104,6 +104,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/storage/secure/briefcase = 3, /obj/item/storage/toolbox/artistic = 2, /obj/item/toy/eightball = 1, - /obj/item/storage/daki = 3, + /obj/item/storage/daki = 3, //VERY IMPORTANT CIT CHANGE - adds bodypillows to maint "" = 3 )) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index c2acea2753..29d72d603f 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -29,4 +29,4 @@ GLOBAL_LIST_EMPTY(bots_list) GLOBAL_LIST_EMPTY(language_datum_instances) GLOBAL_LIST_EMPTY(all_languages) -GLOBAL_LIST_EMPTY(latejoiners) //All latejoining people, for traitor-target purposes. \ No newline at end of file +GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes. \ No newline at end of file diff --git a/code/_js/byjax.dm b/code/_js/byjax.dm index 5557440d32..9d96bbc412 100644 --- a/code/_js/byjax.dm +++ b/code/_js/byjax.dm @@ -45,3 +45,4 @@ Be sure to include required js functions in your page, or it'll raise an excepti receiver << output(argums,"[control_id]:replaceContent") return + diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index dc06d17819..6d941589d3 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -104,7 +104,7 @@ #define ui_health "EAST-1:28,CENTER-1:15" #define ui_internal "EAST-1:28,CENTER:17" -//borgs +//borgs #define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. //aliens diff --git a/code/_onclick/hud/credits.dm b/code/_onclick/hud/credits.dm new file mode 100644 index 0000000000..dfdbf390c1 --- /dev/null +++ b/code/_onclick/hud/credits.dm @@ -0,0 +1,69 @@ +#define CREDIT_ROLL_SPEED 125 +#define CREDIT_SPAWN_SPEED 10 +#define CREDIT_ANIMATE_HEIGHT (14 * world.icon_size) +#define CREDIT_EASE_DURATION 22 +#define CREDITS_PATH "[GLOB.config_dir]contributors.dmi" + +/client/proc/RollCredits() + set waitfor = FALSE + if(!fexists(CREDITS_PATH)) + return + var/icon/credits_icon = new(CREDITS_PATH) + LAZYINITLIST(credits) + var/list/_credits = credits + verbs += /client/proc/ClearCredits + var/static/list/credit_order_for_this_round + if(isnull(credit_order_for_this_round)) + credit_order_for_this_round = list("Thanks for playing!") + (shuffle(icon_states(credits_icon)) - "Thanks for playing!") + for(var/I in credit_order_for_this_round) + if(!credits) + return + _credits += new /obj/screen/credit(null, I, src, credits_icon) + sleep(CREDIT_SPAWN_SPEED) + sleep(CREDIT_ROLL_SPEED - CREDIT_SPAWN_SPEED) + verbs -= /client/proc/ClearCredits + qdel(credits_icon) + +/client/proc/ClearCredits() + set name = "Hide Credits" + set category = "OOC" + verbs -= /client/proc/ClearCredits + QDEL_LIST(credits) + credits = null + +/obj/screen/credit + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + alpha = 0 + screen_loc = "12,1" + layer = SPLASHSCREEN_LAYER + var/client/parent + var/matrix/target + +/obj/screen/credit/Initialize(mapload, credited, client/P, icon/I) + . = ..() + icon = I + parent = P + icon_state = credited + maptext = credited + maptext_x = world.icon_size + 8 + maptext_y = (world.icon_size / 2) - 4 + maptext_width = world.icon_size * 3 + var/matrix/M = matrix(transform) + M.Translate(0, CREDIT_ANIMATE_HEIGHT) + animate(src, transform = M, time = CREDIT_ROLL_SPEED) + target = M + animate(src, alpha = 255, time = CREDIT_EASE_DURATION, flags = ANIMATION_PARALLEL) + addtimer(CALLBACK(src, .proc/FadeOut), CREDIT_ROLL_SPEED - CREDIT_EASE_DURATION) + QDEL_IN(src, CREDIT_ROLL_SPEED) + P.screen += src + +/obj/screen/credit/Destroy() + var/client/P = parent + P.screen -= src + icon = null + LAZYREMOVE(P.credits, src) + parent = null + return ..() + +/obj/screen/credit/proc/FadeOut() + animate(src, alpha = 0, transform = target, time = CREDIT_EASE_DURATION) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 2047225589..65c4bd23c2 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -1,3 +1,4 @@ + /mob var/list/screens = list() @@ -174,4 +175,3 @@ layer = LIGHTING_LAYER blend_mode = BLEND_ADD show_when_dead = TRUE - diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 4d1ca2c778..fe53528155 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -280,10 +280,11 @@ healths = new /obj/screen/healths() infodisplay += healths - //citadel code + //CIT CHANGE - adds arousal to hud arousal = new /obj/screen/arousal() arousal.icon_state = (owner.canbearoused == 1 ? "arousal0" : "") infodisplay += arousal + //END OF CIT CHANGES healthdoll = new /obj/screen/healthdoll() infodisplay += healthdoll diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 52319b7866..e3d1af79ed 100755 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -60,8 +60,6 @@ var/pref = C.prefs.parallax if (isnull(pref)) pref = PARALLAX_HIGH - if (C.byond_version < 511) - pref = PARALLAX_DISABLE switch(C.prefs.parallax) if (PARALLAX_INSANE) C.parallax_throttle = FALSE diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 68428cae90..8a5b9ba519 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -58,7 +58,7 @@ SendSignal(COMSIG_ITEM_ATTACK, M, user) if(flags_1 & NOBLUDGEON_1) return - + if(force && user.has_disability(DISABILITY_PACIFISM)) to_chat(user, "You don't want to harm other living beings!") return diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 903f3c0790..87354d6f0b 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -78,7 +78,7 @@ var/mob/living/carbon/tk_user = null /obj/item/tk_grab/Initialize() - ..() + . = ..() START_PROCESSING(SSfastprocess, src) /obj/item/tk_grab/Destroy() diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index d2db743d91..d1be661f6a 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -53,8 +53,9 @@ . = !(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "ValidateAndSet" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") if(!.) log_admin_private("Config set of [type] to [str_val] attempted by [key_name(usr)]") - + /datum/config_entry/proc/ValidateAndSet(str_val) + VASProcCallGuard(str_val) CRASH("Invalid config entry type!") /datum/config_entry/proc/ValidateKeyedList(str_val, list_mode, splitter) @@ -78,12 +79,12 @@ if(LIST_MODE_TEXT) temp = key_value continue_check = temp - if(continue_check && ValidateKeyName(key_name)) + if(continue_check && ValidateListEntry(key_name, temp)) value[key_name] = temp return TRUE return FALSE -/datum/config_entry/proc/ValidateKeyName(key_name) +/datum/config_entry/proc/ValidateListEntry(key_name, key_value) return TRUE /datum/config_entry/string @@ -95,6 +96,8 @@ return var_name != "auto_trim" && ..() /datum/config_entry/string/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE value = auto_trim ? trim(str_val) : str_val return TRUE @@ -106,6 +109,8 @@ var/min_val = -INFINITY /datum/config_entry/number/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE var/temp = text2num(trim(str_val)) if(!isnull(temp)) value = CLAMP(integer ? round(temp) : temp, min_val, max_val) @@ -123,6 +128,8 @@ abstract_type = /datum/config_entry/flag /datum/config_entry/flag/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE value = text2num(trim(str_val)) != 0 return TRUE @@ -131,6 +138,8 @@ value = list() /datum/config_entry/number_list/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE str_val = trim(str_val) var/list/new_list = list() var/list/values = splittext(str_val," ") @@ -150,6 +159,8 @@ dupes_allowed = TRUE /datum/config_entry/keyed_flag_list/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE return ValidateKeyedList(str_val, LIST_MODE_FLAG, " ") /datum/config_entry/keyed_number_list @@ -162,6 +173,8 @@ return var_name != "splitter" && ..() /datum/config_entry/keyed_number_list/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE return ValidateKeyedList(str_val, LIST_MODE_NUM, splitter) /datum/config_entry/keyed_string_list @@ -174,6 +187,8 @@ return var_name != "splitter" && ..() /datum/config_entry/keyed_string_list/ValidateAndSet(str_val) + if(!VASProcCallGuard(str_val)) + return FALSE return ValidateKeyedList(str_val, LIST_MODE_TEXT, splitter) #undef LIST_MODE_NUM diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index e5e999f003..fa55c9deb4 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -97,19 +97,13 @@ GLOBAL_PROTECT(config_dir) if(!entry) continue - if(entry == "$include") - if(!value) - log_config("Warning: Invalid $include directive: [value]") - else - LoadEntries(value, stack) - ++. - continue if(entry == "$include") if(!value) log_config("Warning: Invalid $include directive: [value]") else LoadEntries(value, stack) + ++. continue var/datum/config_entry/E = _entries[entry] diff --git a/code/controllers/configuration/entries/comms.dm b/code/controllers/configuration/entries/comms.dm index 56cec985f1..e720ed93fd 100644 --- a/code/controllers/configuration/entries/comms.dm +++ b/code/controllers/configuration/entries/comms.dm @@ -2,13 +2,21 @@ protection = CONFIG_ENTRY_HIDDEN /datum/config_entry/string/comms_key/ValidateAndSet(str_val) - return str_val != "default_pwd" && length(str_val) > 6 && ..() + return str_val != "default_pwd" && length(str_val) > 6 && ..() /datum/config_entry/keyed_string_list/cross_server protection = CONFIG_ENTRY_LOCKED -/datum/config_entry/string/cross_server_address/ValidateAndSet(str_val) - return str_val != "byond:\\address:port" && ..() +/datum/config_entry/keyed_string_list/cross_server/ValidateAndSet(str_val) + . = ..() + if(.) + var/list/newv = list() + for(var/I in value) + newv[replacetext(I, "+", " ")] = value[I] + value = newv + +/datum/config_entry/keyed_string_list/cross_server/ValidateListEntry(key_name, key_value) + return key_value != "byond:\\address:port" && ..() /datum/config_entry/string/cross_comms_name @@ -17,4 +25,4 @@ GLOBAL_VAR_INIT(medals_enabled, TRUE) //will be auto set to false if the game fa /datum/config_entry/string/medal_hub_address /datum/config_entry/string/medal_hub_password - protection = CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_HIDDEN \ No newline at end of file diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 2d96e3c64b..5b516f031a 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -2,27 +2,27 @@ /datum/config_entry/keyed_number_list/probability -/datum/config_entry/keyed_number_list/probability/ValidateKeyName(key_name) +/datum/config_entry/keyed_number_list/probability/ValidateListEntry(key_name) return key_name in config.modes /datum/config_entry/keyed_number_list/max_pop -/datum/config_entry/keyed_number_list/max_pop/ValidateKeyName(key_name) +/datum/config_entry/keyed_number_list/max_pop/ValidateListEntry(key_name) return key_name in config.modes /datum/config_entry/keyed_number_list/min_pop -/datum/config_entry/keyed_number_list/min_pop/ValidateKeyName(key_name) +/datum/config_entry/keyed_number_list/min_pop/ValidateListEntry(key_name, key_value) return key_name in config.modes /datum/config_entry/keyed_flag_list/continuous // which roundtypes continue if all antagonists die -/datum/config_entry/keyed_flag_list/continuous/ValidateKeyName(key_name) +/datum/config_entry/keyed_flag_list/continuous/ValidateListEntry(key_name, key_value) return key_name in config.modes /datum/config_entry/keyed_flag_list/midround_antag // which roundtypes use the midround antagonist system -/datum/config_entry/keyed_flag_list/midround_antag/ValidateKeyName(key_name) +/datum/config_entry/keyed_flag_list/midround_antag/ValidateListEntry(key_name, key_value) return key_name in config.modes /datum/config_entry/keyed_string_list/policy diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 1775d470b0..240be1f212 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -394,4 +394,4 @@ SUBSYSTEM_DEF(air) #undef SSAIR_EXCITEDGROUPS #undef SSAIR_HIGHPRESSURE #undef SSAIR_HOTSPOT -#undef SSAIR_SUPERCONDUCTIVITY \ No newline at end of file +#undef SSAIR_SUPERCONDUCTIVITY diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index ca407bb58c..0877ba66c6 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -8,11 +8,10 @@ SUBSYSTEM_DEF(blackbox) var/list/feedback = list() //list of datum/feedback_variable var/triggertime = 0 var/sealed = FALSE //time to stop tracking stats? - var/list/research_levels = list() //list of highest tech levels attained that isn't lost lost by destruction of RD computers - var/list/versions = list("time_dilation_current" = 2, - "science_techweb_unlock" = 2, - "antagonists" = 3) //associative list of any feedback variables that have had their format changed since creation and their current version, remember to update this - + var/list/versions = list("antagonists" = 3, + "admin_secrets_fun_used" = 2, + "time_dilation_current" = 3, + "science_techweb_unlock" = 2) //associative list of any feedback variables that have had their format changed since creation and their current version, remember to update this /datum/controller/subsystem/blackbox/Initialize() triggertime = world.time @@ -59,13 +58,11 @@ SUBSYSTEM_DEF(blackbox) /datum/controller/subsystem/blackbox/Shutdown() sealed = FALSE record_feedback("tally", "ahelp_stats", GLOB.ahelp_tickets.active_tickets.len, "unresolved") - for (var/obj/machinery/message_server/MS in GLOB.message_servers) + for (var/obj/machinery/telecomms/message_server/MS in GLOB.telecomms_list) if (MS.pda_msgs.len) record_feedback("tally", "radio_usage", MS.pda_msgs.len, "PDA") if (MS.rc_msgs.len) record_feedback("tally", "radio_usage", MS.rc_msgs.len, "request console") - if(research_levels.len) - SSblackbox.record_feedback("associative", "high_research_level", 1, research_levels) if (!SSdbcore.Connect()) return @@ -92,39 +89,35 @@ SUBSYSTEM_DEF(blackbox) sealed = TRUE return TRUE -/datum/controller/subsystem/blackbox/proc/log_research(tech, level) - if(!(tech in research_levels) || research_levels[tech] < level) - research_levels[tech] = level - /datum/controller/subsystem/blackbox/proc/LogBroadcast(freq) if(sealed) return switch(freq) - if(1459) + if(FREQ_COMMON) record_feedback("tally", "radio_usage", 1, "common") - if(GLOB.SCI_FREQ) + if(FREQ_SCIENCE) record_feedback("tally", "radio_usage", 1, "science") - if(GLOB.COMM_FREQ) + if(FREQ_COMMAND) record_feedback("tally", "radio_usage", 1, "command") - if(GLOB.MED_FREQ) + if(FREQ_MEDICAL) record_feedback("tally", "radio_usage", 1, "medical") - if(GLOB.ENG_FREQ) + if(FREQ_ENGINEERING) record_feedback("tally", "radio_usage", 1, "engineering") - if(GLOB.SEC_FREQ) + if(FREQ_SECURITY) record_feedback("tally", "radio_usage", 1, "security") - if(GLOB.SYND_FREQ) + if(FREQ_SYNDICATE) record_feedback("tally", "radio_usage", 1, "syndicate") - if(GLOB.SERV_FREQ) + if(FREQ_SERVICE) record_feedback("tally", "radio_usage", 1, "service") - if(GLOB.SUPP_FREQ) + if(FREQ_SUPPLY) record_feedback("tally", "radio_usage", 1, "supply") - if(GLOB.CENTCOM_FREQ) + if(FREQ_CENTCOM) record_feedback("tally", "radio_usage", 1, "centcom") - if(GLOB.AIPRIV_FREQ) + if(FREQ_AI_PRIVATE) record_feedback("tally", "radio_usage", 1, "ai private") - if(GLOB.REDTEAM_FREQ) + if(FREQ_CTF_RED) record_feedback("tally", "radio_usage", 1, "CTF red team") - if(GLOB.BLUETEAM_FREQ) + if(FREQ_CTF_BLUE) record_feedback("tally", "radio_usage", 1, "CTF blue team") else record_feedback("tally", "radio_usage", 1, "other") @@ -194,7 +187,7 @@ Versioning "gun_fired" = 2) */ /datum/controller/subsystem/blackbox/proc/record_feedback(key_type, key, increment, data, overwrite) - if(sealed || !key_type || !istext(key) || !isnum(increment || !data)) + if(sealed || !key_type || !istext(key) || !isnum(increment) || !data) return var/datum/feedback_variable/FV = find_feedback_datum(key, key_type) switch(key_type) diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index a033512d58..a15237e5a7 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -41,4 +41,3 @@ SUBSYSTEM_DEF(idlenpcpool) SA.consider_wakeup() if (MC_TICK_CHECK) return - diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index f553d66307..6ffd12264f 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -1,10 +1,101 @@ SUBSYSTEM_DEF(input) name = "Input" wait = 1 //SS_TICKER means this runs every tick - flags = SS_TICKER | SS_NO_INIT + init_order = INIT_ORDER_INPUT + flags = SS_TICKER priority = FIRE_PRIORITY_INPUT runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + var/list/macro_sets + +/datum/controller/subsystem/input/Initialize() + setup_default_macro_sets() + + initialized = TRUE + + refresh_client_macro_sets() + + return ..() + +// This is for when macro sets are eventualy datumized +/datum/controller/subsystem/input/proc/setup_default_macro_sets() + var/list/static/default_macro_sets + + if(default_macro_sets) + macro_sets = default_macro_sets + return + + default_macro_sets = list( + "default" = list( + "Tab" = "\".winset \\\"input.focus=true?map.focus=true input.background-color=[COLOR_INPUT_DISABLED]:input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"", + "O" = "ooc", + "T" = "say", + "M" = "me", + "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs + "Any" = "\"KeyDown \[\[*\]\]\"", + "Any+UP" = "\"KeyUp \[\[*\]\]\"", + ), + "old_default" = list( + "Tab" = "\".winset \\\"mainwindow.macro=old_hotkeys map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\"", + "Ctrl+T" = "say", + "Ctrl+O" = "ooc", + ), + "old_hotkeys" = list( + "Tab" = "\".winset \\\"mainwindow.macro=old_default input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"", + "O" = "ooc", + "T" = "say", + "M" = "me", + "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs + "Any" = "\"KeyDown \[\[*\]\]\"", + "Any+UP" = "\"KeyUp \[\[*\]\]\"", + ), + ) + + // Because i'm lazy and don't want to type all these out twice + var/list/old_default = default_macro_sets["old_default"] + + var/list/static/oldmode_keys = list( + "North", "East", "South", "West", + "Northeast", "Southeast", "Northwest", "Southwest", + "Insert", "Delete", "Ctrl", "Alt", + "F1", "F2", "F5", "F6", "F7", "F8", "F12", + ) + + for(var/i in 1 to oldmode_keys.len) + var/key = oldmode_keys[i] + old_default[key] = "\"KeyDown [key]\"" + old_default["[key]+UP"] = "\"KeyUp [key]\"" + + var/list/static/oldmode_ctrl_override_keys = list( + "W" = "W", "A" = "A", "S" = "S", "D" = "D", // movement + "1" = "1", "2" = "2", "3" = "3", "4" = "4", // intent + "B" = "B", // resist + "E" = "E", // quick equip + "F" = "F", // intent left + "G" = "G", // intent right + "H" = "H", // stop pulling + "Q" = "Q", // drop + "R" = "R", // throw + "X" = "X", // switch hands + "Y" = "Y", // activate item + "Z" = "Z", // activate item + ) + + for(var/i in 1 to oldmode_ctrl_override_keys.len) + var/key = oldmode_ctrl_override_keys[i] + var/override = oldmode_ctrl_override_keys[key] + old_default["Ctrl+[key]"] = "\"KeyDown [override]\"" + old_default["Ctrl+[key]+UP"] = "\"KeyUp [override]\"" + + macro_sets = default_macro_sets + +// Badmins just wanna have fun ♪ +/datum/controller/subsystem/input/proc/refresh_client_macro_sets() + var/list/clients = GLOB.clients + for(var/i in 1 to clients.len) + var/client/user = clients[i] + user.set_macros() + /datum/controller/subsystem/input/fire() var/list/clients = GLOB.clients // Let's sing the list cache song for(var/i in 1 to clients.len) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 5cfbeb9414..65d5f4befb 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -107,9 +107,6 @@ SUBSYSTEM_DEF(job) if(player.mind && job.title in player.mind.restricted_roles) Debug("FOC incompatible with antagonist role, Player: [player]") continue - if(CONFIG_GET(flag/enforce_human_authority) && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) - Debug("FOC non-human failed, Player: [player]") - continue if(player.client.prefs.GetJobDepartment(job, level) & job.flag) Debug("FOC pass, Player: [player], Level:[level]") candidates += player @@ -144,11 +141,6 @@ SUBSYSTEM_DEF(job) Debug("GRJ incompatible with antagonist role, Player: [player], Job: [job.title]") continue - if(CONFIG_GET(flag/enforce_human_authority) && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) - Debug("GRJ non-human failed, Player: [player]") - continue - - if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1) Debug("GRJ Random job given, Player: [player], Job: [job]") if(AssignRole(player, job.title)) @@ -319,10 +311,6 @@ SUBSYSTEM_DEF(job) Debug("DO incompatible with antagonist role, Player: [player], Job:[job.title]") continue - if(CONFIG_GET(flag/enforce_human_authority) && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) - Debug("DO non-human failed, Player: [player], Job:[job.title]") - continue - // If the player wants that job on this level, then try give it to him. if(player.client.prefs.GetJobDepartment(job, level) & job.flag) @@ -424,7 +412,8 @@ SUBSYSTEM_DEF(job) if(job && H) job.after_spawn(H, M) - handle_roundstart_items(H, M.ckey, H.mind.assigned_role, H.mind.special_role) + handle_roundstart_items(H, M.ckey, H.mind.assigned_role, H.mind.special_role) //CIT CHANGE - makes donators spawn with their items + return H diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 43565846fb..1ad3a8ab15 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -22,7 +22,7 @@ SUBSYSTEM_DEF(lighting) create_all_lighting_objects() initialized = TRUE - + fire(FALSE, TRUE) ..() diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index db6af6d686..e235afaaa4 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -62,4 +62,4 @@ SUBSYSTEM_DEF(machines) if (istype(SSmachines.processing)) processing = SSmachines.processing if (istype(SSmachines.powernets)) - powernets = SSmachines.powernets \ No newline at end of file + powernets = SSmachines.powernets diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index ca050cb9b2..334b44d081 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -135,12 +135,12 @@ SUBSYSTEM_DEF(npcpool) if(facCount == 1 && helpProb) helpProb = 100 - + if(prob(helpProb) && candidate.takeDelegate(check,FALSE)) --canBeUsed.len candidate.eye_color = "yellow" candidate.update_icons() - + if(!currentrun.len || MC_TICK_CHECK) //don't change SS state if it isn't necessary return diff --git a/code/controllers/subsystem/orbit.dm b/code/controllers/subsystem/orbit.dm index 581b7821b2..45d280b601 100644 --- a/code/controllers/subsystem/orbit.dm +++ b/code/controllers/subsystem/orbit.dm @@ -40,3 +40,5 @@ SUBSYSTEM_DEF(orbit) O.Check(targetloc) if (MC_TICK_CHECK) return + + diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index d310f46d2a..b98be937fc 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -250,4 +250,4 @@ SUBSYSTEM_DEF(persistence) var/list/file_data = list() file_data["data"] = saved_modes fdel(json_file) - WRITE_FILE(json_file, json_encode(file_data)) \ No newline at end of file + WRITE_FILE(json_file, json_encode(file_data)) diff --git a/code/controllers/subsystem/radio.dm b/code/controllers/subsystem/radio.dm index 43803aa647..8299709392 100644 --- a/code/controllers/subsystem/radio.dm +++ b/code/controllers/subsystem/radio.dm @@ -14,35 +14,22 @@ SUBSYSTEM_DEF(radio) /datum/controller/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null) var/f_text = num2text(new_frequency) var/datum/radio_frequency/frequency = frequencies[f_text] - if(!frequency) - frequency = new - frequency.frequency = new_frequency - frequencies[f_text] = frequency - + frequencies[f_text] = frequency = new(new_frequency) frequency.add_listener(device, filter) return frequency /datum/controller/subsystem/radio/proc/remove_object(obj/device, old_frequency) var/f_text = num2text(old_frequency) var/datum/radio_frequency/frequency = frequencies[f_text] - if(frequency) frequency.remove_listener(device) - - if(frequency.devices.len == 0) - qdel(frequency) - frequencies -= f_text - + // let's don't delete frequencies in case a non-listener keeps a reference return 1 /datum/controller/subsystem/radio/proc/return_frequency(new_frequency as num) var/f_text = num2text(new_frequency) var/datum/radio_frequency/frequency = frequencies[f_text] - if(!frequency) - frequency = new - frequency.frequency = new_frequency - frequencies[f_text] = frequency - + frequencies[f_text] = frequency = new(new_frequency) return frequency diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index f10ed9125a..b1468a65c4 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -54,6 +54,7 @@ SUBSYSTEM_DEF(research) bitcoins = single_server_income break //Just need one to work. var/income_time_difference = world.time - last_income + science_tech.last_bitcoins = bitcoins // Doesn't take tick drift into account bitcoins *= income_time_difference / 10 science_tech.research_points += bitcoins last_income = world.time diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 1b05061904..048ec3c54c 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -54,7 +54,7 @@ SUBSYSTEM_DEF(shuttle) var/lockdown = FALSE //disallow transit after nuke goes off - var/auto_call = 99000 //time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. + var/auto_call = 99000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. /datum/controller/subsystem/shuttle/Initialize(timeofday) if(!arrivals) @@ -158,7 +158,7 @@ SUBSYSTEM_DEF(shuttle) break /datum/controller/subsystem/shuttle/proc/CheckAutoEvac() - if(emergencyNoEscape || emergencyNoRecall || !emergency) + if(emergencyNoEscape || emergencyNoRecall || !emergency || !SSticker.HasRoundStarted()) return var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold) @@ -262,7 +262,7 @@ SUBSYSTEM_DEF(shuttle) if(!admiral_message) admiral_message = pick(GLOB.admiral_messages) - var/intercepttext = "NanoTrasen Update: Request For Shuttle.
\ + var/intercepttext = "Nanotrasen Update: Request For Shuttle.
\ To whom it may concern:

\ We have taken note of the situation upon [station_name()] and have come to the \ conclusion that it does not warrant the abandonment of the station.
\ @@ -387,7 +387,7 @@ SUBSYSTEM_DEF(shuttle) emergency.setTimer(emergencyDockTime) priority_announce("Hostile environment resolved. \ You have 3 minutes to board the Emergency Shuttle.", - null, 'sound/AI/shuttledock.ogg', "Priority") + null, 'sound/ai/shuttledock.ogg', "Priority") //try to move/request to dockHome if possible, otherwise dockAway. Mainly used for admin buttons /datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttleId, dockHome, dockAway, timed) @@ -431,7 +431,8 @@ SUBSYSTEM_DEF(shuttle) if(!(M in transit_requesters)) transit_requesters += M -/datum/controller/subsystem/shuttle/proc/autoEnd() + +/datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end after 3 hours has passed. if(world.time > auto_call && EMERGENCY_IDLE_OR_RECALLED) //3 hours SSshuttle.emergency.request(null, 1.5) priority_announce("The shift has come to an end and the shuttle called.") diff --git a/code/controllers/subsystem/squeak.dm b/code/controllers/subsystem/squeak.dm index 0148011e8b..022b659d8a 100644 --- a/code/controllers/subsystem/squeak.dm +++ b/code/controllers/subsystem/squeak.dm @@ -1,6 +1,6 @@ // The Squeak // because this is about placement of mice mobs, and nothing to do with -// mice - the computer peripheral +// mice - the computer peripheral SUBSYSTEM_DEF(squeak) name = "Squeak" diff --git a/code/controllers/subsystem/stickyban.dm b/code/controllers/subsystem/stickyban.dm index 8251df0039..371cf22b3b 100644 --- a/code/controllers/subsystem/stickyban.dm +++ b/code/controllers/subsystem/stickyban.dm @@ -27,6 +27,6 @@ SUBSYSTEM_DEF(stickyban) ban["existing_user_matches_this_round"] = list() ban["admin_matches_this_round"] = list() cache[ckey] = ban - + for (var/bannedckey in cache) world.SetConfig("ban", bannedckey, list2stickyban(cache[bannedckey])) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index d14404ed97..df6ac28247 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -631,6 +631,7 @@ SUBSYSTEM_DEF(ticker) world.Reboot() /datum/controller/subsystem/ticker/Shutdown() + gather_newscaster() //called here so we ensure the log is created even upon admin reboot if(!round_end_sound) round_end_sound = pick(\ 'sound/roundend/newroundsexy.ogg', diff --git a/code/controllers/subsystem/time_track.dm b/code/controllers/subsystem/time_track.dm index 17cfa6fc06..3b19ae31cd 100644 --- a/code/controllers/subsystem/time_track.dm +++ b/code/controllers/subsystem/time_track.dm @@ -35,4 +35,4 @@ SUBSYSTEM_DEF(time_track) last_tick_realtime = current_realtime last_tick_byond_time = current_byondtime last_tick_tickcount = current_tickcount - SSblackbox.record_feedback("associative", "time_dilation_current", 1, list("[time_dilation_current]" = "[SQLtime()]")) + SSblackbox.record_feedback("associative", "time_dilation_current", 1, list("[SQLtime()]" = list("current" = "[time_dilation_current]", "avg_fast" = "[time_dilation_avg_fast]", "avg" = "[time_dilation_avg]", "avg_slow" = "[time_dilation_avg_slow]"))) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 3a2ca82bcd..abd58467e4 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -411,4 +411,4 @@ SUBSYSTEM_DEF(timer) #undef BUCKET_LEN -#undef BUCKET_POS +#undef BUCKET_POS \ No newline at end of file diff --git a/code/datums/action.dm b/code/datums/action.dm index a2abe139a4..fb1f2fb8cb 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -170,14 +170,15 @@ ..(current_button) else if(target && current_button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid. var/obj/item/I = target - current_button.appearance_cache = I.appearance var/old_layer = I.layer var/old_plane = I.plane I.layer = FLOAT_LAYER //AAAH I.plane = FLOAT_PLANE //^ what that guy said - current_button.overlays = list(I) + current_button.cut_overlays() + current_button.add_overlay(I) I.layer = old_layer I.plane = old_plane + current_button.appearance_cache = I.appearance /datum/action/item_action/toggle_light name = "Toggle Light" @@ -344,6 +345,19 @@ /datum/action/item_action/change name = "Change" +/datum/action/item_action/nano_picket_sign + name = "Retext Nano Picket Sign" + var/obj/item/picket_sign/S + +/datum/action/item_action/nano_picket_sign/New(Target) + ..() + if(istype(Target, /obj/item/picket_sign)) + S = Target + +/datum/action/item_action/nano_picket_sign/Trigger() + if(istype(S)) + S.retext(owner) + /datum/action/item_action/adjust /datum/action/item_action/adjust/New(Target) diff --git a/code/datums/actions/flightsuit.dm b/code/datums/actions/flightsuit.dm index 3e78fa5332..cf249fed31 100644 --- a/code/datums/actions/flightsuit.dm +++ b/code/datums/actions/flightsuit.dm @@ -1,5 +1,3 @@ - - /datum/action/item_action/flightsuit icon_icon = 'icons/mob/actions/actions_flightsuit.dmi' diff --git a/code/datums/antagonists/changeling.dm b/code/datums/antagonists/changeling.dm index da7e425ecc..53d0c37143 100644 --- a/code/datums/antagonists/changeling.dm +++ b/code/datums/antagonists/changeling.dm @@ -78,7 +78,7 @@ . = ..() /datum/antagonist/changeling/on_removal() - remove_changeling_powers(FALSE) + remove_changeling_powers() owner.objectives -= objectives . = ..() @@ -100,11 +100,11 @@ chem_recharge_slowdown = initial(chem_recharge_slowdown) mimicing = "" -/datum/antagonist/changeling/proc/remove_changeling_powers(keep_free_powers=0) +/datum/antagonist/changeling/proc/remove_changeling_powers() if(ishuman(owner.current) || ismonkey(owner.current)) reset_properties() for(var/obj/effect/proc_holder/changeling/p in purchasedpowers) - if((p.dna_cost == 0 && keep_free_powers) || p.always_keep) + if(p.always_keep) continue purchasedpowers -= p p.on_refund(owner.current) @@ -116,13 +116,13 @@ /datum/antagonist/changeling/proc/reset_powers() if(purchasedpowers) - remove_changeling_powers(TRUE) - //Purchase free powers. + remove_changeling_powers() + //Repurchase free powers. for(var/path in all_powers) var/obj/effect/proc_holder/changeling/S = new path() if(!S.dna_cost) if(!has_sting(S)) - purchasedpowers+=S + purchasedpowers += S S.on_purchase(owner.current,TRUE) /datum/antagonist/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) @@ -223,7 +223,6 @@ if(verbose) to_chat(user, "[target] is not compatible with our biology.") return - if((target.has_disability(DISABILITY_NOCLONE)) || (target.has_disability(DISABILITY_NOCLONE))) if(verbose) to_chat(user, "DNA of [target] is ruined beyond usability!") diff --git a/code/datums/antagonists/cult.dm b/code/datums/antagonists/cult.dm index 5b80cb68a6..cccc442c4d 100644 --- a/code/datums/antagonists/cult.dm +++ b/code/datums/antagonists/cult.dm @@ -131,7 +131,7 @@ SSticker.mode.cult -= owner SSticker.mode.update_cult_icons_removed(owner) if(!silent) - owner.current.visible_message("[owner.current] looks like [owner.current.p_they()] just reverted to their old faith!", ignored_mob = owner.current) + owner.current.visible_message("[owner.current] looks like [owner.current.p_they()] just reverted to their old faith!", ignored_mob = owner.current) to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") owner.current.log_message("Has renounced the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) @@ -243,7 +243,7 @@ return sacced || completed /datum/objective/sacrifice/update_explanation_text() - if(target && !sacced) + if(target) explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking a Sacrifice rune with them on it and three acolytes around it." else explanation_text = "The veil has already been weakened here, proceed to the final objective." diff --git a/code/datums/antagonists/datum_traitor.dm b/code/datums/antagonists/datum_traitor.dm index a12cf80da7..420dae4650 100644 --- a/code/datums/antagonists/datum_traitor.dm +++ b/code/datums/antagonists/datum_traitor.dm @@ -127,6 +127,7 @@ if(prob(30)) objective_count += forge_single_objective() + for(var/i = objective_count, i < CONFIG_GET(number/traitor_objectives_amount), i++) var/datum/objective/assassinate/kill_objective = new kill_objective.owner = owner @@ -152,11 +153,6 @@ maroon_objective.owner = owner maroon_objective.find_target() add_objective(maroon_objective) - else if(prob(50)) - var/datum/objective/assassinate/late/late_objective = new - late_objective.owner = owner - late_objective.find_target() - add_objective(late_objective) else var/datum/objective/assassinate/kill_objective = new kill_objective.owner = owner @@ -343,4 +339,4 @@ /datum/antagonist/traitor/roundend_report_footer() return "
The code phrases were: [GLOB.syndicate_code_phrase]
\ - The code responses were: [GLOB.syndicate_code_response]
" + The code responses were: [GLOB.syndicate_code_response]
" \ No newline at end of file diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index 57fc11710d..ba4eaa376e 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -50,17 +50,11 @@ lose_text = "Your vision returns." /datum/brain_trauma/severe/blindness/on_gain() - owner.become_blind() - ..() - -//no fiddling with genetics to get out of this one -/datum/brain_trauma/severe/blindness/on_life() - if(!(owner.disabilities & BLIND)) - on_gain() + owner.become_blind(TRAUMA_DISABILITY) ..() /datum/brain_trauma/severe/blindness/on_lose() - owner.cure_blind() + owner.cure_blind(TRAUMA_DISABILITY) ..() /datum/brain_trauma/severe/paralysis diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index 6378695c24..6b7f846e83 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -62,4 +62,4 @@ qdel(src) /datum/component/decal/proc/examine(mob/user) - to_chat(user, description) + to_chat(user, description) \ No newline at end of file diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index 55633a2087..76baa057cc 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -1,4 +1,5 @@ /datum/component/forensics + dupe_mode = COMPONENT_DUPE_UNIQUE var/list/fingerprints //assoc print = print var/list/hiddenprints //assoc ckey = realname/gloves/ckey var/list/blood_DNA //assoc dna = bloodtype @@ -138,7 +139,7 @@ if(laststamppos) LAZYSET(hiddenprints, M.key, copytext(hiddenprints[M.key], 1, laststamppos)) hiddenprints[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" //made sure to be existing by if(!LAZYACCESS);else - fingerprintslast = M.ckey + parent.fingerprintslast = M.ckey return TRUE /datum/component/forensics/proc/add_blood_DNA(list/dna) //list(dna_enzymes = type) diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index 3f3b0341ee..a62b7dcaab 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -57,4 +57,4 @@ var/t = stripped_input(H, "Enter your new skeleton name", H.real_name, null, MAX_NAME_LEN) if(!t) t = "spooky skeleton" - H.fully_replace_character_name(H.real_name, t) + H.fully_replace_character_name(null, t) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 5f9cf3ad9a..c22af19396 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -1,3 +1,4 @@ + /datum/datacore var/medical[] = list() var/medicalPrintCount = 0 diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 4c08b1000d..6a3ad57878 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -17,6 +17,7 @@ /datum/proc/Destroy(force=FALSE, ...) tag = null weak_reference = null //ensure prompt GCing of weakref. + var/list/timers = active_timers active_timers = null for(var/thing in timers) @@ -24,6 +25,7 @@ if (timer.spent) continue qdel(timer) + var/list/dc = datum_components if(dc) var/all_components = dc[/datum/component] @@ -35,4 +37,11 @@ var/datum/component/C = all_components qdel(C, FALSE, TRUE) dc.Cut() + + var/list/focusers = src.focusers + if(focusers) + for(var/i in 1 to focusers.len) + var/mob/M = focusers[i] + M.set_focus(M) + return QDEL_HINT_QUEUE diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm index 1a197f0f34..d2f6a73365 100644 --- a/code/datums/diseases/advance/presets.dm +++ b/code/datums/diseases/advance/presets.dm @@ -1,59 +1,59 @@ -// Cold - +// Cold + /datum/disease/advance/cold/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) - name = "Cold" - symptoms = list(new/datum/symptom/sneeze) - ..(process, D, copy) - - -// Flu - + if(!D) + name = "Cold" + symptoms = list(new/datum/symptom/sneeze) + ..(process, D, copy) + + +// Flu + /datum/disease/advance/flu/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) - name = "Flu" - symptoms = list(new/datum/symptom/cough) - ..(process, D, copy) - - -// Voice Changing - + if(!D) + name = "Flu" + symptoms = list(new/datum/symptom/cough) + ..(process, D, copy) + + +// Voice Changing + /datum/disease/advance/voice_change/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) - name = "Epiglottis Mutation" - symptoms = list(new/datum/symptom/voice_change) - ..(process, D, copy) - - -// Toxin Filter - + if(!D) + name = "Epiglottis Mutation" + symptoms = list(new/datum/symptom/voice_change) + ..(process, D, copy) + + +// Toxin Filter + /datum/disease/advance/heal/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) - name = "Liver Enhancer" - symptoms = list(new/datum/symptom/heal) - ..(process, D, copy) - - + if(!D) + name = "Liver Enhancer" + symptoms = list(new/datum/symptom/heal) + ..(process, D, copy) + + // Hallucigen - + /datum/disease/advance/hallucigen/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) + if(!D) name = "Second Sight" - symptoms = list(new/datum/symptom/hallucigen) - ..(process, D, copy) - -// Sensory Restoration - + symptoms = list(new/datum/symptom/hallucigen) + ..(process, D, copy) + +// Sensory Restoration + /datum/disease/advance/mind_restoration/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) + if(!D) name = "Intelligence Booster" symptoms = list(new/datum/symptom/mind_restoration) - ..(process, D, copy) - -// Sensory Destruction - + ..(process, D, copy) + +// Sensory Destruction + /datum/disease/advance/narcolepsy/New(var/process = TRUE, var/datum/disease/advance/D, var/copy = FALSE) - if(!D) + if(!D) name = "Experimental Insomnia Cure" symptoms = list(new/datum/symptom/narcolepsy) ..(process, D, copy) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/beard.dm b/code/datums/diseases/advance/symptoms/beard.dm index aa3919f3cf..c7a3ccec89 100644 --- a/code/datums/diseases/advance/symptoms/beard.dm +++ b/code/datums/diseases/advance/symptoms/beard.dm @@ -1,33 +1,33 @@ -/* -////////////////////////////////////// -Facial Hypertrichosis - - Very very Noticable. - Decreases resistance slightly. - Decreases stage speed. - Reduced transmittability - Intense Level. - -BONUS - Makes the mob grow a massive beard, regardless of gender. - -////////////////////////////////////// -*/ - -/datum/symptom/beard - - name = "Facial Hypertrichosis" +/* +////////////////////////////////////// +Facial Hypertrichosis + + Very very Noticable. + Decreases resistance slightly. + Decreases stage speed. + Reduced transmittability + Intense Level. + +BONUS + Makes the mob grow a massive beard, regardless of gender. + +////////////////////////////////////// +*/ + +/datum/symptom/beard + + name = "Facial Hypertrichosis" desc = "The virus increases hair production significantly, causing rapid beard growth." - stealth = -3 - resistance = -1 - stage_speed = -3 - transmittable = -1 - level = 4 - severity = 1 + stealth = -3 + resistance = -1 + stage_speed = -3 + transmittable = -1 + level = 4 + severity = 1 symptom_delay_min = 18 symptom_delay_max = 36 - -/datum/symptom/beard/Activate(datum/disease/advance/A) + +/datum/symptom/beard/Activate(datum/disease/advance/A) if(!..()) return var/mob/living/M = A.affected_mob diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm index 209c7b0bf6..4ff69680ce 100644 --- a/code/datums/diseases/advance/symptoms/confusion.dm +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -1,30 +1,30 @@ -/* -////////////////////////////////////// - -Confusion - - Little bit hidden. - Lowers resistance. - Decreases stage speed. - Not very transmittable. - Intense Level. - -Bonus - Makes the affected mob be confused for short periods of time. - -////////////////////////////////////// -*/ - -/datum/symptom/confusion - - name = "Confusion" +/* +////////////////////////////////////// + +Confusion + + Little bit hidden. + Lowers resistance. + Decreases stage speed. + Not very transmittable. + Intense Level. + +Bonus + Makes the affected mob be confused for short periods of time. + +////////////////////////////////////// +*/ + +/datum/symptom/confusion + + name = "Confusion" desc = "The virus interferes with the proper function of the neural system, leading to bouts of confusion and erratic movement." - stealth = 1 - resistance = -1 - stage_speed = -3 - transmittable = 0 - level = 4 - severity = 2 + stealth = 1 + resistance = -1 + stage_speed = -3 + transmittable = 0 + level = 4 + severity = 2 base_message_chance = 25 symptom_delay_min = 10 symptom_delay_max = 30 @@ -32,7 +32,7 @@ Bonus threshold_desc = "Resistance 6: Causes brain damage over time.
\ Transmission 6: Increases confusion duration.
\ Stealth 4: The symptom remains hidden until active." - + /datum/symptom/confusion/Start(datum/disease/advance/A) if(!..()) return @@ -42,20 +42,20 @@ Bonus power = 1.5 if(A.properties["stealth"] >= 4) suppress_warning = TRUE - -/datum/symptom/confusion/Activate(datum/disease/advance/A) + +/datum/symptom/confusion/Activate(datum/disease/advance/A) if(!..()) return var/mob/living/carbon/M = A.affected_mob switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("Your head hurts.", "Your mind blanks for a moment.")]") + to_chat(M, "[pick("Your head hurts.", "Your mind blanks for a moment.")]") else to_chat(M, "You can't think straight!") M.confused = min(100 * power, M.confused + 8) if(brain_damage) M.adjustBrainLoss(3 * power, 80) M.updatehealth() - - return + + return diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm index bb83582425..c7f7198f6b 100644 --- a/code/datums/diseases/advance/symptoms/dizzy.dm +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -50,4 +50,4 @@ Bonus to_chat(M, "A wave of dizziness washes over you!") M.Dizzy(5) if(power >= 2) - M.set_drugginess(5) + M.set_drugginess(5) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index 2d5d22a63a..c38acc8e9e 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -127,4 +127,4 @@ Bonus M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2)) if(zombie) M.reagents.add_reagent("romerol", 1) - return 1 + return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm index 3a8c82beed..973de1455b 100644 --- a/code/datums/diseases/advance/symptoms/headache.dm +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -57,4 +57,4 @@ BONUS M.adjustStaminaLoss(25) if(power >= 3 && A.stage >= 5) to_chat(M, "[pick("Your head hurts!", "You feel a burning knife inside your brain!", "A wave of pain fills your head!")]") - M.Stun(35) + M.Stun(35) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 23fb2ed866..3f95fd6482 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -1,10 +1,10 @@ /datum/symptom/heal name = "Basic Healing (does nothing)" //warning for adminspawn viruses desc = "You should not be seeing this." - stealth = 1 - resistance = -4 - stage_speed = -4 - transmittable = -4 + stealth = 0 + resistance = 0 + stage_speed = 0 + transmittable = 0 level = 0 //not obtainable base_message_chance = 20 //here used for the overlays symptom_delay_min = 1 @@ -22,7 +22,6 @@ /datum/symptom/heal/Activate(datum/disease/advance/A) if(!..()) return - //100% chance to activate for slow but consistent healing var/mob/living/M = A.affected_mob switch(A.stage) if(4, 5) @@ -45,20 +44,20 @@ return TRUE -/datum/symptom/heal/toxin +/datum/symptom/heal/starlight name = "Starlight Condensation" - desc = "The virus reacts to direct starlight, producing regenerative chemicals that can cure toxin damage." - stealth = 1 - resistance = -3 - stage_speed = -3 - transmittable = -3 + desc = "The virus reacts to direct starlight, producing regenerative chemicals. Works best against toxin-based damage." + stealth = -1 + resistance = -2 + stage_speed = 0 + transmittable = 1 level = 6 passive_message = "You miss the feeling of starlight on your skin." var/nearspace_penalty = 0.3 threshold_desc = "Stage Speed 6: Increases healing speed.
\ Transmission 6: Removes penalty for only being close to space." -/datum/symptom/heal/toxin/Start(datum/disease/advance/A) +/datum/symptom/heal/starlight/Start(datum/disease/advance/A) if(!..()) return if(A.properties["transmission"] >= 6) @@ -66,7 +65,7 @@ if(A.properties["stage_rate"] >= 6) power = 2 -/datum/symptom/heal/toxin/CanHeal(datum/disease/advance/A) +/datum/symptom/heal/starlight/CanHeal(datum/disease/advance/A) var/mob/living/M = A.affected_mob if(istype(get_turf(M), /turf/open/space)) return power @@ -75,15 +74,25 @@ if(istype(T, /turf/open/space)) return power * nearspace_penalty -/datum/symptom/heal/toxin/Heal(mob/living/M, datum/disease/advance/A, actual_power) +/datum/symptom/heal/starlight/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) var/heal_amt = actual_power if(M.getToxLoss() && prob(5)) - to_chat(M, "Your skin tingles as the starlight purges toxins from your bloodstream.") - M.adjustToxLoss(-heal_amt) + to_chat(M, "Your skin tingles as the starlight seems to heal you.") + + M.adjustToxLoss(-(4 * heal_amt)) //most effective on toxins + + var/list/parts = M.get_damaged_bodyparts(1,1) + + if(!parts.len) + return + + for(var/obj/item/bodypart/L in parts) + if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len)) + M.update_damage_overlays() return 1 -/datum/symptom/heal/toxin/passive_message_condition(mob/living/M) - if(M.getToxLoss()) +/datum/symptom/heal/starlight/passive_message_condition(mob/living/M) + if(M.getBruteLoss() || M.getFireLoss() || M.getToxLoss()) return TRUE return FALSE @@ -91,7 +100,7 @@ name = "Toxolysis" stealth = 0 resistance = -2 - stage_speed = -2 + stage_speed = 2 transmittable = -2 level = 7 var/food_conversion = FALSE @@ -153,58 +162,50 @@ to_chat(C, "You feel an odd gurgle in your stomach, as if it was working much faster than normal.") return 1 -/datum/symptom/heal/brute - name = "Cellular Molding" - desc = "The virus is able to shift cells around when in conditions of high heat, repairing existing physical damage." - stealth = 1 - resistance = -3 - stage_speed = -3 - transmittable = -3 +/datum/symptom/heal/darkness + name = "Nocturnal Regeneration" + desc = "The virus is able to mend the host's flesh when in conditions of low light, repairing physical damage. More effective against brute damage." + stealth = 2 + resistance = -1 + stage_speed = -2 + transmittable = -1 level = 6 - passive_message = "You feel the flesh pulsing under your skin for a moment, but it's too cold to move." + passive_message = "You feel tingling on your skin as light passes over it." threshold_desc = "Stage Speed 8: Doubles healing speed." -/datum/symptom/heal/brute/Start(datum/disease/advance/A) +/datum/symptom/heal/darkness/Start(datum/disease/advance/A) if(!..()) return if(A.properties["stage_rate"] >= 8) power = 2 -/datum/symptom/heal/brute/CanHeal(datum/disease/advance/A) +/datum/symptom/heal/darkness/CanHeal(datum/disease/advance/A) var/mob/living/M = A.affected_mob - switch(M.bodytemperature) - if(0 to 340) - return FALSE - if(340 to BODYTEMP_HEAT_DAMAGE_LIMIT) - . = 0.3 * power - if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400) - . = 0.75 * power - if(400 to 460) - . = power - else - . = 1.5 * power + var/light_amount = 0 + if(isturf(M.loc)) //else, there's considered to be no light + var/turf/T = M.loc + light_amount = min(1,T.get_lumcount()) - 0.5 + if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) + return power - if(M.on_fire) - . *= 2 - -/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) +/datum/symptom/heal/darkness/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) var/heal_amt = 2 * actual_power - var/list/parts = M.get_damaged_bodyparts(1,0) //brute only + var/list/parts = M.get_damaged_bodyparts(1,1) if(!parts.len) return if(prob(5)) - to_chat(M, "You feel your flesh moving beneath your heated skin, mending your wounds.") + to_chat(M, "The darkness soothes and mends your wounds.") for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(heal_amt/parts.len, 0)) + if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len * 0.5)) //more effective on brute M.update_damage_overlays() return 1 -/datum/symptom/heal/brute/passive_message_condition(mob/living/M) - if(M.getBruteLoss()) +/datum/symptom/heal/darkness/passive_message_condition(mob/living/M) + if(M.getBruteLoss() || M.getFireLoss()) return TRUE return FALSE @@ -212,8 +213,8 @@ name = "Regenerative Coma" desc = "The virus causes the host to fall into a death-like coma when severely damaged, then rapidly fixes the damage." stealth = 0 - resistance = 0 - stage_speed = -2 + resistance = 2 + stage_speed = -3 transmittable = -2 level = 8 passive_message = "The pain from your wounds makes you feel oddly sleepy..." @@ -283,20 +284,20 @@ return TRUE return FALSE -/datum/symptom/heal/burn +/datum/symptom/heal/water name = "Tissue Hydration" - desc = "The virus uses excess water inside and outside the body to repair burned tisue cells." - stealth = 1 - resistance = -3 - stage_speed = -3 - transmittable = -3 + desc = "The virus uses excess water inside and outside the body to repair damaged tissue cells. More effective against burns." + stealth = 0 + resistance = -1 + stage_speed = 0 + transmittable = 1 level = 6 - passive_message = "Your burned skin feels oddly dry..." + passive_message = "Your skin feels oddly dry..." var/absorption_coeff = 1 threshold_desc = "Resistance 5: Water is consumed at a much slower rate.
\ Stage Speed 7: Increases healing speed." -/datum/symptom/heal/burn/Start(datum/disease/advance/A) +/datum/symptom/heal/water/Start(datum/disease/advance/A) if(!..()) return if(A.properties["stage_rate"] >= 7) @@ -304,7 +305,7 @@ if(A.properties["stealth"] >= 2) absorption_coeff = 0.25 -/datum/symptom/heal/burn/CanHeal(datum/disease/advance/A) +/datum/symptom/heal/water/CanHeal(datum/disease/advance/A) . = 0 var/mob/living/M = A.affected_mob if(M.fire_stacks < 0) @@ -317,33 +318,33 @@ M.reagents.remove_reagent("water", 0.5 * absorption_coeff) . += power * 0.5 -/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) +/datum/symptom/heal/water/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) var/heal_amt = 2 * actual_power - var/list/parts = M.get_damaged_bodyparts(0,1) //burn only + var/list/parts = M.get_damaged_bodyparts(1,1) //more effective on burns if(!parts.len) return if(prob(5)) - to_chat(M, "You feel yourself absorbing the water around you to soothe your burned skin.") + to_chat(M, "You feel yourself absorbing the water around you to soothe your damaged skin.") for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(0, heal_amt/parts.len)) + if(L.heal_damage(heal_amt/parts.len * 0.5, heal_amt/parts.len)) M.update_damage_overlays() return 1 -/datum/symptom/heal/burn/passive_message_condition(mob/living/M) - if(M.getFireLoss()) +/datum/symptom/heal/water/passive_message_condition(mob/living/M) + if(M.getBruteLoss() || M.getFireLoss()) return TRUE return FALSE /datum/symptom/heal/plasma name = "Plasma Fixation" - desc = "The virus draws plasma from the atmosphere and from inside the body to stabilize body temperature and heal burns." + desc = "The virus draws plasma from the atmosphere and from inside the body to heal and stabilize body temperature." stealth = 0 - resistance = 0 + resistance = 3 stage_speed = -2 transmittable = -2 level = 8 @@ -379,8 +380,6 @@ /datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) var/heal_amt = 4 * actual_power - var/list/parts = M.get_damaged_bodyparts(0,1) //burn only - if(prob(5)) to_chat(M, "You feel yourself absorbing plasma inside and around you...") @@ -393,24 +392,25 @@ if(prob(5)) to_chat(M, "You feel warmer.") + M.adjustToxLoss(-heal_amt) + + var/list/parts = M.get_damaged_bodyparts(1,1) if(!parts.len) return if(prob(5)) - to_chat(M, "The pain from your burns fades rapidly.") - + to_chat(M, "The pain from your wounds fades rapidly.") for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(0, heal_amt/parts.len)) + if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len)) M.update_damage_overlays() return 1 - /datum/symptom/heal/radiation name = "Radioactive Resonance" desc = "The virus uses radiation to fix damage through dna mutations." stealth = -1 resistance = -2 - stage_speed = 0 + stage_speed = 2 transmittable = -3 level = 6 symptom_delay_min = 1 @@ -450,6 +450,8 @@ if(cellular_damage) M.adjustCloneLoss(-heal_amt * 0.5) + M.adjustToxLoss(-(2 * heal_amt)) + var/list/parts = M.get_damaged_bodyparts(1,1) if(!parts.len) diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index 1c356247ee..1da9f5e8d7 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -51,4 +51,4 @@ BONUS var/can_scratch = scratch && !M.incapacitated() && get_location_accessible(M, picked_bodypart) M.visible_message("[can_scratch ? "[M] scratches [M.p_their()] [bodypart.name]." : ""]", "Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]") if(can_scratch) - bodypart.receive_damage(0.5) + bodypart.receive_damage(0.5) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index b744fcb3af..911ffd7e26 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -105,4 +105,4 @@ M.adjust_eye_damage(-1) else if(prob(base_message_chance)) - to_chat(M, "[pick("Your eyes feel great.","You feel like your eyes can focus more clearly.", "You don't feel the need to blink.","Your ears feel great.","Your healing feels more acute.")]") + to_chat(M, "[pick("Your eyes feel great.","You feel like your eyes can focus more clearly.", "You don't feel the need to blink.","Your ears feel great.","Your healing feels more acute.")]") \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm index a578289e17..c5bbb6bc7b 100644 --- a/code/datums/diseases/advance/symptoms/shedding.dm +++ b/code/datums/diseases/advance/symptoms/shedding.dm @@ -1,39 +1,39 @@ -/* -////////////////////////////////////// -Alopecia - +/* +////////////////////////////////////// +Alopecia + Not Noticeable. Increases resistance slightly. - Reduces stage speed slightly. - Transmittable. - Intense Level. - -BONUS - Makes the mob lose hair. - -////////////////////////////////////// -*/ - -/datum/symptom/shedding - name = "Alopecia" + Reduces stage speed slightly. + Transmittable. + Intense Level. + +BONUS + Makes the mob lose hair. + +////////////////////////////////////// +*/ + +/datum/symptom/shedding + name = "Alopecia" desc = "The virus causes rapid shedding of head and body hair." stealth = 0 resistance = 1 - stage_speed = -1 + stage_speed = -1 transmittable = 3 - level = 4 - severity = 1 + level = 4 + severity = 1 base_message_chance = 50 symptom_delay_min = 45 symptom_delay_max = 90 - -/datum/symptom/shedding/Activate(datum/disease/advance/A) + +/datum/symptom/shedding/Activate(datum/disease/advance/A) if(!..()) return var/mob/living/M = A.affected_mob if(prob(base_message_chance)) - to_chat(M, "[pick("Your scalp itches.", "Your skin feels flakey.")]") + to_chat(M, "[pick("Your scalp itches.", "Your skin feels flakey.")]") if(ishuman(M)) var/mob/living/carbon/human/H = M switch(A.stage) @@ -45,11 +45,11 @@ BONUS if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald")) to_chat(H, "Your hair starts to fall out in clumps...") addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50) - -/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald) - if(fullbald) - H.facial_hair_style = "Shaved" - H.hair_style = "Bald" - else - H.hair_style = "Balding Hair" + +/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald) + if(fullbald) + H.facial_hair_style = "Shaved" + H.hair_style = "Bald" + else + H.hair_style = "Balding Hair" H.update_hair() \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index bad9062eb5..591626e530 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -56,4 +56,4 @@ Bonus M.bodytemperature = min(M.bodytemperature - (get_cold * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1) else M.bodytemperature -= (get_cold * A.stage) - return 1 + return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 8b5b59f71a..3648f5d707 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -46,7 +46,6 @@ Bonus if(1, 2, 3) if(!suppress_warning) M.emote("sniff") - else - M.emote("sneeze") - A.spread(5) - return + else + M.emote("sneeze") + A.spread(4 + power) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index 7c54aa7ea4..279ce51417 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -58,14 +58,15 @@ Bonus M.blur_eyes(20) M.adjust_eye_damage(5) if(eyes.eye_damage >= 10) - M.become_nearsighted() + M.become_nearsighted(EYE_DAMAGE) if(prob(eyes.eye_damage - 10 + 1)) if(!remove_eyes) if(!M.has_disability(DISABILITY_BLIND)) to_chat(M, "You go blind!") + M.become_blind(EYE_DAMAGE) else M.visible_message("[M]'s eyes fall off their sockets!", "Your eyes fall off their sockets!") eyes.Remove(M) eyes.forceMove(get_turf(M)) else - to_chat(M, "Your eyes burn horrifically!") + to_chat(M, "Your eyes burn horrifically!") \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index 7052e90bf7..c97667733d 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -48,4 +48,4 @@ Bonus else to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]") M.overeatduration = max(M.overeatduration - 100, 0) - M.nutrition = max(M.nutrition - 100, 0) + M.nutrition = max(M.nutrition - 100, 0) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/youth.dm b/code/datums/diseases/advance/symptoms/youth.dm index 6be34684e7..927be03ed9 100644 --- a/code/datums/diseases/advance/symptoms/youth.dm +++ b/code/datums/diseases/advance/symptoms/youth.dm @@ -1,35 +1,35 @@ -/* -////////////////////////////////////// -Eternal Youth - - Moderate stealth boost. - Increases resistance tremendously. - Increases stage speed tremendously. - Reduces transmission tremendously. - Critical Level. - -BONUS - Gives you immortality and eternal youth!!! - Can be used to buff your virus - -////////////////////////////////////// -*/ - -/datum/symptom/youth - - name = "Eternal Youth" +/* +////////////////////////////////////// +Eternal Youth + + Moderate stealth boost. + Increases resistance tremendously. + Increases stage speed tremendously. + Reduces transmission tremendously. + Critical Level. + +BONUS + Gives you immortality and eternal youth!!! + Can be used to buff your virus + +////////////////////////////////////// +*/ + +/datum/symptom/youth + + name = "Eternal Youth" desc = "The virus becomes symbiotically connected to the cells in the host's body, preventing and reversing aging. \ The virus, in turn, becomes more resistant, spreads faster, and is harder to spot, although it doesn't thrive as well without a host." - stealth = 3 - resistance = 4 - stage_speed = 4 - transmittable = -4 - level = 5 + stealth = 3 + resistance = 4 + stage_speed = 4 + transmittable = -4 + level = 5 base_message_chance = 100 symptom_delay_min = 25 symptom_delay_max = 50 - -/datum/symptom/youth/Activate(datum/disease/advance/A) + +/datum/symptom/youth/Activate(datum/disease/advance/A) if(!..()) return var/mob/living/M = A.affected_mob diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index 80ec0abe6b..dc848ab622 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -36,4 +36,4 @@ affected_mob.visible_message("[affected_mob] coughs up a swarm of bees!", \ "You cough up a swarm of bees!") new /mob/living/simple_animal/hostile/poison/bees(affected_mob.loc) - return + return \ No newline at end of file diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 5915a784ea..e9f02b91b6 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -50,4 +50,4 @@ if(!affected_mob.resistances.Find(/datum/disease/flu)) var/datum/disease/Flu = new /datum/disease/flu(0) affected_mob.ForceContractDisease(Flu) - cure() + cure() \ No newline at end of file diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm index 4b65fee700..6a21dbfd54 100644 --- a/code/datums/diseases/cold9.dm +++ b/code/datums/diseases/cold9.dm @@ -36,4 +36,4 @@ if(prob(1)) to_chat(affected_mob, "Your throat feels sore.") if(prob(10)) - to_chat(affected_mob, "You feel stiff.") + to_chat(affected_mob, "You feel stiff.") \ No newline at end of file diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 71e4064676..6d77acd3ae 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -1,6 +1,6 @@ /datum/disease/gbs name = "GBS" - max_stages = 5 + max_stages = 4 spread_text = "On contact" spread_flags = VIRUS_SPREAD_BLOOD | VIRUS_SPREAD_CONTACT_SKIN | VIRUS_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" @@ -16,25 +16,15 @@ ..() switch(stage) if(2) - if(prob(45)) - affected_mob.adjustToxLoss(5) - affected_mob.updatehealth() - if(prob(1)) - affected_mob.emote("sneeze") - if(3) if(prob(5)) affected_mob.emote("cough") - else if(prob(5)) + if(3) + if(prob(5)) affected_mob.emote("gasp") if(prob(10)) - to_chat(affected_mob, "You're starting to feel very weak...") + to_chat(affected_mob, "Your body hurts all over!") if(4) - if(prob(10)) - affected_mob.emote("cough") - affected_mob.adjustToxLoss(5) - affected_mob.updatehealth() - if(5) - to_chat(affected_mob, "Your body feels as if it's trying to rip itself open...") + to_chat(affected_mob, "Your body feels as if it's trying to rip itself apart!") if(prob(50)) affected_mob.gib() else diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 4430eee19d..91ce1ca71e 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -65,4 +65,4 @@ var/iter = rand(1,3) for(i=0,iRound ID: [GLOB.round_id]") if(GLOB.revdata.originmastercommit) to_chat(src, "Server revision compiled on: [GLOB.revdata.date]") var/prefix = "" diff --git a/code/datums/helper_datums/topic_input.dm b/code/datums/helper_datums/topic_input.dm index d27f259159..3e43905f1f 100644 --- a/code/datums/helper_datums/topic_input.dm +++ b/code/datums/helper_datums/topic_input.dm @@ -1,62 +1,62 @@ -/datum/topic_input - var/href - var/list/href_list - -/datum/topic_input/New(thref,list/thref_list) - href = thref - href_list = thref_list.Copy() - return - -/datum/topic_input/proc/get(i) - return listgetindex(href_list,i) - -/datum/topic_input/proc/getAndLocate(i) - var/t = get(i) - if(t) - t = locate(t) - if (istext(t)) - t = null - return t || null - -/datum/topic_input/proc/getNum(i) - var/t = get(i) - if(t) - t = text2num(t) - return isnum(t) ? t : null - -/datum/topic_input/proc/getObj(i) - var/t = getAndLocate(i) - return isobj(t) ? t : null - -/datum/topic_input/proc/getMob(i) - var/t = getAndLocate(i) - return ismob(t) ? t : null - -/datum/topic_input/proc/getTurf(i) - var/t = getAndLocate(i) - return isturf(t) ? t : null - -/datum/topic_input/proc/getAtom(i) +/datum/topic_input + var/href + var/list/href_list + +/datum/topic_input/New(thref,list/thref_list) + href = thref + href_list = thref_list.Copy() + return + +/datum/topic_input/proc/get(i) + return listgetindex(href_list,i) + +/datum/topic_input/proc/getAndLocate(i) + var/t = get(i) + if(t) + t = locate(t) + if (istext(t)) + t = null + return t || null + +/datum/topic_input/proc/getNum(i) + var/t = get(i) + if(t) + t = text2num(t) + return isnum(t) ? t : null + +/datum/topic_input/proc/getObj(i) + var/t = getAndLocate(i) + return isobj(t) ? t : null + +/datum/topic_input/proc/getMob(i) + var/t = getAndLocate(i) + return ismob(t) ? t : null + +/datum/topic_input/proc/getTurf(i) + var/t = getAndLocate(i) + return isturf(t) ? t : null + +/datum/topic_input/proc/getAtom(i) return getType(i, /atom) - -/datum/topic_input/proc/getArea(i) - var/t = getAndLocate(i) - return isarea(t) ? t : null - -/datum/topic_input/proc/getStr(i)//params should always be text, but... - var/t = get(i) - return istext(t) ? t : null - -/datum/topic_input/proc/getType(i,type) - var/t = getAndLocate(i) - return istype(t,type) ? t : null - -/datum/topic_input/proc/getPath(i) - var/t = get(i) - if(t) - t = text2path(t) - return ispath(t) ? t : null - -/datum/topic_input/proc/getList(i) - var/t = getAndLocate(i) - return islist(t) ? t : null + +/datum/topic_input/proc/getArea(i) + var/t = getAndLocate(i) + return isarea(t) ? t : null + +/datum/topic_input/proc/getStr(i)//params should always be text, but... + var/t = get(i) + return istext(t) ? t : null + +/datum/topic_input/proc/getType(i,type) + var/t = getAndLocate(i) + return istype(t,type) ? t : null + +/datum/topic_input/proc/getPath(i) + var/t = get(i) + if(t) + t = text2path(t) + return ispath(t) ? t : null + +/datum/topic_input/proc/getList(i) + var/t = getAndLocate(i) + return islist(t) ? t : null diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 9a075f6811..b3545813ac 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -122,6 +122,8 @@ transfer_martial_arts(new_character) if(active || force_key_move) new_character.key = key //now transfer the key to link the client to our new body + +//CIT CHANGE - makes arousal update when transfering bodies if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. var/mob/living/L = new_character if(L.client && L.client.prefs) @@ -202,7 +204,6 @@ remove_antag_datum(ANTAG_DATUM_BROTHER) SSticker.mode.update_brother_icons_removed(src) - /datum/mind/proc/remove_nukeop() var/datum/antagonist/nukeop/nuke = has_antag_datum(/datum/antagonist/nukeop,TRUE) if(nuke) @@ -225,6 +226,7 @@ remove_antag_datum(rev.type) special_role = null + /datum/mind/proc/remove_antag_equip() var/list/Mob_Contents = current.get_contents() for(var/obj/item/I in Mob_Contents) @@ -462,20 +464,27 @@ text = uppertext(text) text = "[text]: " if (ishuman(current)) - text += "healthy | infected | HUMAN | other" + if(is_monkey_leader(src)) + text += "healthy | infected LEADER | human | other" + else + text += "healthy | infected | leader | HUMAN | other" else if(ismonkey(current)) var/found = FALSE for(var/datum/disease/transformation/jungle_fever/JF in current.viruses) found = TRUE break - if(found) - text += "healthy | INFECTED | human | other" + var/isLeader = is_monkey_leader(src) + + if(isLeader) + text += "healthy | infected LEADER | human | other" + else if(found) + text += "healthy | INFECTED | leader | human | other" else - text += "HEALTHY | infected | human | other" + text += "HEALTHY | infected | leader | human | other" else - text += "healthy | infected | human | OTHER" + text += "healthy | infected | leader | human | OTHER" if(current && current.client && (ROLE_MONKEY in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -579,8 +588,8 @@ sections["revolution"] = text - /** Abductors **/ - text = "Abductor" + /** ABDUCTION **/ + text = "abductor" if(SSticker.mode.config_tag == "abductor") text = uppertext(text) text = "[text]: " @@ -807,7 +816,7 @@ else target_antag = target - var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "late-assassinate", "maroon", "debrain", "protect", "destroy", "prevent", "hijack", "escape", "survive", "martyr", "steal", "download", "nuclear", "capture", "absorb", "custom") + var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "maroon", "debrain", "protect", "destroy", "prevent", "hijack", "escape", "survive", "martyr", "steal", "download", "nuclear", "capture", "absorb", "custom") if (!new_obj_type) return @@ -842,12 +851,6 @@ //Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops. new_objective.update_explanation_text() - if ("late-assassinate") - new_objective = new /datum/objective/assassinate/late - new_objective.owner = src - new_objective.target = null - new_objective.find_target() //This will begin the "find-target" loop and update their explanation text - if ("destroy") var/list/possible_targets = active_ais(1) if(possible_targets.len) @@ -905,7 +908,7 @@ switch(new_obj_type) if("download") new_objective = new /datum/objective/download - new_objective.explanation_text = "Download [target_number] research levels." + new_objective.explanation_text = "Download [target_number] research node\s." if("capture") new_objective = new /datum/objective/capture new_objective.explanation_text = "Capture [target_number] lifeforms with an energy net. Live, rare specimens are worth more." @@ -1256,11 +1259,17 @@ else if (istype(M) && length(M.viruses)) for(var/thing in M.viruses) var/datum/disease/D = thing - D.cure(0) + D.cure(FALSE) + if("leader") + if(check_rights(R_ADMIN, 0)) + add_monkey_leader(src) + log_admin("[key_name(usr)] made [key_name(current)] a monkey leader!") + message_admins("[key_name_admin(usr)] made [key_name_admin(current)] a monkey leader!") if("infected") - if (check_rights(R_ADMIN, 0)) + if(check_rights(R_ADMIN, 0)) var/mob/living/carbon/human/H = current var/mob/living/carbon/monkey/M = current + add_monkey(src) if (istype(H)) log_admin("[key_name(usr)] attempting to monkeyize and infect [key_name(current)]") message_admins("[key_name_admin(usr)] attempting to monkeyize and infect [key_name_admin(current)]") @@ -1278,6 +1287,7 @@ for(var/datum/disease/transformation/jungle_fever/JF in M.viruses) JF.cure(0) stoplag() //because deleting of virus is doing throught spawn(0) //What + remove_monkey(src) log_admin("[key_name(usr)] attempting to humanize [key_name(current)]") message_admins("[key_name_admin(usr)] attempting to humanize [key_name_admin(current)]") H = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index 170c0a2a7f..a171cf91da 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -8,7 +8,6 @@ GLOBAL_LIST_EMPTY(mutations_list) GLOB.mutations_list[name] = src /datum/mutation/human - var/dna_block var/quality var/get_chance = 100 diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 666c910557..9340361930 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -5,7 +5,7 @@ get_chance = 15 lowest_value = 256 * 12 text_gain_indication = "Your muscles hurt!" - species_allowed = list("fly") //no skeleton/lizard hulk + species_allowed = list("human") //no skeleton/lizard hulk health_req = 25 /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index dee26166dd..60f5d75c5e 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -7,12 +7,12 @@ /datum/mutation/human/nearsight/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.become_nearsighted() + owner.become_nearsighted(GENETIC_MUTATION) /datum/mutation/human/nearsight/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.cure_nearsighted() + owner.cure_nearsighted(GENETIC_MUTATION) //Blind makes you blind. Who knew? @@ -24,12 +24,12 @@ /datum/mutation/human/blind/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.become_blind() + owner.become_blind(GENETIC_MUTATION) /datum/mutation/human/blind/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.cure_blind() + owner.cure_blind(GENETIC_MUTATION) //X-Ray Vision lets you see through walls. diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index e372d5c0b2..176c762e9c 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -33,7 +33,7 @@ if(LINGHIVE_LING) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) var/msg = "[changeling.changelingID]: [message]" - log_talk(src,"[changeling.changelingID]/[user.key] : [message]",LOGSAY) + log_talk(user,"[changeling.changelingID]/[user.key] : [message]",LOGSAY) for(var/_M in GLOB.mob_list) var/mob/M = _M if(M in GLOB.dead_mob_list) @@ -110,3 +110,25 @@ AI.holopad_talk(message, language) return FALSE return TRUE + +/datum/saymode/monkey + key = "k" + mode = MODE_MONKEY + +/datum/saymode/monkey/handle_message(mob/living/user, message, datum/language/language) + var/datum/mind = user.mind + if(!mind) + return TRUE + if(is_monkey_leader(mind) || (ismonkey(user) && is_monkey(mind))) + log_talk(user, "(MONKEY) [user]/[user.key]: [message]",LOGSAY) + if(prob(75) && ismonkey(user)) + user.visible_message("\The [user] chimpers.") + var/msg = "\[[is_monkey_leader(mind) ? "Monkey Leader" : "Monkey"]\] [user]: [message]" + for(var/_M in GLOB.mob_list) + var/mob/M = _M + if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [msg]") + if((is_monkey_leader(M.mind) || ismonkey(M)) && (M.mind in SSticker.mode.ape_infectees)) + to_chat(M, msg) + return FALSE diff --git a/code/datums/weakrefs.dm b/code/datums/weakrefs.dm index 2347d0f831..d8adba652c 100644 --- a/code/datums/weakrefs.dm +++ b/code/datums/weakrefs.dm @@ -16,3 +16,4 @@ /datum/weakref/proc/resolve() var/datum/D = locate(reference) return (!QDELETED(D) && D.weak_reference == src) ? D : null + diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 995936e429..ab8f019d7c 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -25,7 +25,7 @@ /datum/weather/rad_storm/telegraph() ..() - status_alarm("alert") + status_alarm(TRUE) /datum/weather/rad_storm/weather_act(mob/living/L) @@ -49,24 +49,19 @@ if(..()) return priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") - status_alarm() - sleep(300) - revoke_maint_all_access() // Need to make this a timer at some point. - -/datum/weather/rad_storm/proc/status_alarm(command) //Makes the status displays show the radiation warning for those who missed the announcement. - var/datum/radio_frequency/frequency = SSradio.return_frequency(1435) + status_alarm(FALSE) +/datum/weather/rad_storm/proc/status_alarm(active) //Makes the status displays show the radiation warning for those who missed the announcement. + var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS) if(!frequency) return - var/datum/signal/status_signal = new - var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null) - status_signal.source = virt - status_signal.transmission_method = 1 - status_signal.data["command"] = "shuttle" + var/datum/signal/signal = new + if (active) + signal.data["command"] = "alert" + signal.data["picture_state"] = "radiation" + else + signal.data["command"] = "shuttle" - if(command == "alert") - status_signal.data["command"] = "alert" - status_signal.data["picture_state"] = "radiation" - - frequency.post_signal(src, status_signal) + var/atom/movable/virtualspeaker/virt = new(null) + frequency.post_signal(virt, signal) diff --git a/code/datums/wires/radio.dm b/code/datums/wires/radio.dm index b7b5e0d2c9..37d44a1bb0 100644 --- a/code/datums/wires/radio.dm +++ b/code/datums/wires/radio.dm @@ -11,8 +11,7 @@ /datum/wires/radio/interactable(mob/user) var/obj/item/device/radio/R = holder - if(R.b_stat) - return TRUE + return R.unscrewed /datum/wires/radio/on_pulse(index) var/obj/item/device/radio/R = holder diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 901a8610a6..712b3425e0 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -78,6 +78,7 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) QDEL_NULL(ghost_appearance) /datum/atom_hud/alternate_appearance/basic/add_to_hud(atom/A) + LAZYINITLIST(A.hud_list) A.hud_list[appearance_key] = theImage . = ..() diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm index a5216fb44c..9d42b67bf9 100644 --- a/code/game/area/ai_monitored.dm +++ b/code/game/area/ai_monitored.dm @@ -28,4 +28,4 @@ for(var/X in motioncameras) var/obj/machinery/camera/cam = X cam.lostTargetRef(WEAKREF(O)) - return + return \ No newline at end of file diff --git a/code/game/area/areas/holodeck.dm b/code/game/area/areas/holodeck.dm index 51399ca7e1..10e3249d64 100644 --- a/code/game/area/areas/holodeck.dm +++ b/code/game/area/areas/holodeck.dm @@ -123,4 +123,4 @@ /area/holodeck/rec_center/thunderdome1218 name = "Holodeck - 1218 AD" - restricted = 1 \ No newline at end of file + restricted = 1 diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm index d322e8644c..4fd3204040 100644 --- a/code/game/area/areas/ruins/lavaland.dm +++ b/code/game/area/areas/ruins/lavaland.dm @@ -32,9 +32,44 @@ /area/ruin/powered/seedvault icon_state = "dk_yellow" -/area/ruin/powered/syndicate_lava_base +/area/ruin/unpowered/syndicate_lava_base name = "Secret Base" icon_state = "dk_yellow" + ambientsounds = HIGHSEC + +/area/ruin/unpowered/syndicate_lava_base/engineering + name = "Syndicate Lavaland Engineering" + +/area/ruin/unpowered/syndicate_lava_base/medbay + name = "Syndicate Lavaland Medbay" + +/area/ruin/unpowered/syndicate_lava_base/arrivals + name = "Syndicate Lavaland Arrivals" + +/area/ruin/unpowered/syndicate_lava_base/bar + name = "Syndicate Lavaland Bar" + +/area/ruin/unpowered/syndicate_lava_base/main + name = "Syndicate Lavaland Primary Hallway" + +/area/ruin/unpowered/syndicate_lava_base/cargo + name = "Syndicate Lavaland Cargo Bay" + +/area/ruin/unpowered/syndicate_lava_base/chemistry + name = "Syndicate Lavaland Chemistry" + +/area/ruin/unpowered/syndicate_lava_base/virology + name = "Syndicate Lavaland Virology" + +/area/ruin/unpowered/syndicate_lava_base/testlab + name = "Syndicate Lavaland Experimentation Lab" + +/area/ruin/unpowered/syndicate_lava_base/dormitories + name = "Syndicate Lavaland Dormitories" + +/area/ruin/unpowered/syndicate_lava_base/telecomms + name = "Syndicate Lavaland Telecommunications" + //Xeno Nest diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index c606cb1d3b..83012750e0 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -132,44 +132,12 @@ if (orbiting) orbiting.Check() - if(flags_1 & CLEAN_ON_MOVE_1) - clean_on_move() - var/datum/proximity_monitor/proximity_monitor = src.proximity_monitor if(proximity_monitor) proximity_monitor.HandleMove() return 1 -/atom/movable/proc/clean_on_move() - var/turf/tile = loc - if(isturf(tile)) - tile.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - for(var/A in tile) - if(is_cleanable(A)) - qdel(A) - else if(istype(A, /obj/item)) - var/obj/item/cleaned_item = A - cleaned_item.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - else if(ishuman(A)) - var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.lying) - if(cleaned_human.head) - cleaned_human.head.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - cleaned_human.update_inv_head() - if(cleaned_human.wear_suit) - cleaned_human.wear_suit.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - cleaned_human.update_inv_wear_suit() - else if(cleaned_human.w_uniform) - cleaned_human.w_uniform.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - cleaned_human.update_inv_w_uniform() - if(cleaned_human.shoes) - cleaned_human.shoes.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) - cleaned_human.update_inv_shoes() - cleaned_human.clean_blood() - cleaned_human.wash_cream() - to_chat(cleaned_human, "[src] cleans your face!") - /atom/movable/Destroy(force) var/inform_admins = (flags_2 & INFORM_ADMINS_ON_RELOCATE_2) var/stationloving = (flags_2 & STATIONLOVING_2) @@ -712,4 +680,4 @@ return FALSE if(anchored || throwing) return FALSE - return TRUE \ No newline at end of file + return TRUE diff --git a/code/game/communications.dm b/code/game/communications.dm index d60a5d8301..212a99f966 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -86,109 +86,55 @@ GLOBAL_LIST_EMPTY(all_radios) for(var/freq in GLOB.all_radios) GLOB.all_radios["[freq]"] -= radio -/* -Frequency range: 1200 to 1600 -Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking) - -Radio: -1459 - standard radio chat -1351 - Science -1353 - Command -1355 - Medical -1357 - Engineering -1359 - Security -1337 - death squad -1443 - Confession Intercom -1349 - Miners -1347 - Cargo techs -1447 - AI Private - -Devices: -1451 - tracking implant -1457 - RSD default - -On the map: -1311 for prison shuttle console (in fact, it is not used) -1435 for status displays -1437 for atmospherics/fire alerts -1439 for engine components -1439 for air pumps, air scrubbers, atmo control -1441 for atmospherics - supply tanks -1443 for atmospherics - distribution loop/mixed air tank -1445 for bot nav beacons -1447 for mulebot, secbot and ed209 control -1449 for airlock controls, electropack, magnets -1451 for toxin lab access -1453 for engineering access -1455 for AI access -*/ +// For information on what objects or departments use what frequencies, +// see __DEFINES/radio.dm. Mappers may also select additional frequencies for +// use in maps, such as in intercoms. GLOBAL_LIST_INIT(radiochannels, list( - "Common" = 1459, - "Science" = 1351, - "Command" = 1353, - "Medical" = 1355, - "Engineering" = 1357, - "Security" = 1359, - "CentCom" = 1337, - "Syndicate" = 1213, - "Supply" = 1347, - "Service" = 1349, - "AI Private" = 1447, - "Red Team" = 1215, - "Blue Team" = 1217 + "Common" = FREQ_COMMON, + "Science" = FREQ_SCIENCE, + "Command" = FREQ_COMMAND, + "Medical" = FREQ_MEDICAL, + "Engineering" = FREQ_ENGINEERING, + "Security" = FREQ_SECURITY, + "CentCom" = FREQ_CENTCOM, + "Syndicate" = FREQ_SYNDICATE, + "Supply" = FREQ_SUPPLY, + "Service" = FREQ_SERVICE, + "AI Private" = FREQ_AI_PRIVATE, + "Red Team" = FREQ_CTF_RED, + "Blue Team" = FREQ_CTF_BLUE )) GLOBAL_LIST_INIT(reverseradiochannels, list( - "1459" = "Common", - "1351" = "Science", - "1353" = "Command", - "1355" = "Medical", - "1357" = "Engineering", - "1359" = "Security", - "1337" = "CentCom", - "1213" = "Syndicate", - "1347" = "Supply", - "1349" = "Service", - "1447" = "AI Private", - "1215" = "Red Team", - "1217" = "Blue Team" + "[FREQ_COMMON]" = "Common", + "[FREQ_SCIENCE]" = "Science", + "[FREQ_COMMAND]" = "Command", + "[FREQ_MEDICAL]" = "Medical", + "[FREQ_ENGINEERING]" = "Engineering", + "[FREQ_SECURITY]" = "Security", + "[FREQ_CENTCOM]" = "CentCom", + "[FREQ_SYNDICATE]" = "Syndicate", + "[FREQ_SUPPLY]" = "Supply", + "[FREQ_SERVICE]" = "Service", + "[FREQ_AI_PRIVATE]" = "AI Private", + "[FREQ_CTF_RED]" = "Red Team", + "[FREQ_CTF_BLUE]" = "Blue Team" )) -//depenging helpers -GLOBAL_VAR_CONST(SYND_FREQ, 1213) //nuke op frequency, coloured dark brown in chat window -GLOBAL_VAR_CONST(SUPP_FREQ, 1347) //supply, coloured light brown in chat window -GLOBAL_VAR_CONST(SERV_FREQ, 1349) //service, coloured green in chat window -GLOBAL_VAR_CONST(SCI_FREQ, 1351) //science, coloured plum in chat window -GLOBAL_VAR_CONST(COMM_FREQ, 1353) //command, colored gold in chat window -GLOBAL_VAR_CONST(MED_FREQ, 1355) //medical, coloured blue in chat window -GLOBAL_VAR_CONST(ENG_FREQ, 1357) //engineering, coloured orange in chat window -GLOBAL_VAR_CONST(SEC_FREQ, 1359) //security, coloured red in chat window -GLOBAL_VAR_CONST(CENTCOM_FREQ, 1337) //centcom frequency, coloured grey in chat window -GLOBAL_VAR_CONST(AIPRIV_FREQ, 1447) //AI private, colored magenta in chat window -GLOBAL_VAR_CONST(REDTEAM_FREQ, 1215) // red team (CTF) frequency, coloured red -GLOBAL_VAR_CONST(BLUETEAM_FREQ, 1217) // blue team (CTF) frequency, coloured blue - -#define TRANSMISSION_WIRE 0 -#define TRANSMISSION_RADIO 1 - -/* filters */ -GLOBAL_VAR_INIT(RADIO_TO_AIRALARM, "1") -GLOBAL_VAR_INIT(RADIO_FROM_AIRALARM, "2") -GLOBAL_VAR_INIT(RADIO_CHAT, "3") //deprecated -GLOBAL_VAR_INIT(RADIO_ATMOSIA, "4") -GLOBAL_VAR_INIT(RADIO_NAVBEACONS, "5") -GLOBAL_VAR_INIT(RADIO_AIRLOCK, "6") -GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") - /datum/radio_frequency - var/frequency as num var/list/list/obj/devices = list() +/datum/radio_frequency/New(freq) + frequency = freq + //If range > 0, only post to devices on the same z_level and within range //Use range = -1, to restrain to the same z_level without limiting range /datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null) + // Ensure the signal's data is fully filled + signal.source = source + signal.frequency = frequency //Apply filter to the signal. If none supply, broadcast to every devices //_default channel is always checked @@ -217,7 +163,7 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") continue if(start_point.z != end_point.z || (range > 0 && get_dist(start_point, end_point) > range)) continue - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) + device.receive_signal(signal) /datum/radio_frequency/proc/add_listener(obj/device, filter as text|null) if (!filter) @@ -225,8 +171,7 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") var/list/devices_line = devices[filter] if(!devices_line) - devices_line = list() - devices[filter] = devices_line + devices[filter] = devices_line = list() devices_line += device @@ -240,70 +185,15 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") devices -= devices_filter - - - -/client/proc/print_pointers() - set name = "Debug Signals" - set category = "Debug" - - if(!holder) - return - - var/datum/signal/S - to_chat(src, "There are [S.pointers.len] pointers:") - for(var/p in S.pointers) - to_chat(src, p) - S = locate(p) - if(istype(S)) - to_chat(src, S.debug_print()) - -/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param) +/obj/proc/receive_signal(datum/signal/signal) return /datum/signal var/obj/source - - var/transmission_method = 0 - //0 = wire - //1 = radio transmission - //2 = subspace transmission - - var/data = list() - var/encryption - var/frequency = 0 - var/static/list/pointers = list() + var/transmission_method + var/list/data -/datum/signal/New() - ..() - pointers += "[REF(src)]" - -/datum/signal/Destroy() - pointers -= "[REF(src)]" - return ..() - -/datum/signal/proc/copy_from(datum/signal/model) - source = model.source - transmission_method = model.transmission_method - data = model.data - encryption = model.encryption - frequency = model.frequency - -/datum/signal/proc/debug_print() - if (source) - . = "signal = {source = '[source]' [COORD(source)]\n" - else - . = "signal = {source = '[source]' ()\n" - for (var/i in data) - . += "data\[\"[i]\"\] = \"[data[i]]\"\n" - if(islist(data[i])) - var/list/L = data[i] - for(var/t in L) - . += "data\[\"[i]\"\] list has: [t]" - -/datum/signal/proc/sanitize_data() - for(var/d in data) - var/val = data[d] - if(istext(val)) - data[d] = html_encode(val) +/datum/signal/New(data, transmission_method = TRANSMISSION_RADIO) + src.data = data || list() + src.transmission_method = transmission_method diff --git a/code/game/gamemodes/antag_hud.dm b/code/game/gamemodes/antag_hud.dm index b047ff92ea..447a87ce20 100644 --- a/code/game/gamemodes/antag_hud.dm +++ b/code/game/gamemodes/antag_hud.dm @@ -48,4 +48,6 @@ newhud.join_hud(current) /datum/mind/proc/leave_all_antag_huds() - for(var/datum/atom_hud/antag/hud in GLOB.huds) \ No newline at end of file + for(var/datum/atom_hud/antag/hud in GLOB.huds) + if(hud.hudusers[current]) + hud.leave_hud(current) \ No newline at end of file diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 4315f382f4..3b8937d9fb 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -125,7 +125,7 @@ return used = TRUE var/mob/dead/observer/theghost = pick(nuke_candidates) - spawn_antag(theghost.client, get_turf(src), "syndieborg") + spawn_antag(theghost.client, get_turf(src), "syndieborg", user.mind) do_sparks(4, TRUE, src) qdel(src) else @@ -219,7 +219,7 @@ return used = 1 var/mob/dead/observer/theghost = pick(demon_candidates) - spawn_antag(theghost.client, get_turf(src), initial(demon_type.name)) + spawn_antag(theghost.client, get_turf(src), initial(demon_type.name),user.mind) to_chat(user, shatter_msg) to_chat(user, veil_msg) playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) @@ -237,15 +237,15 @@ S.mind.special_role = S.name SSticker.mode.traitors += S.mind var/datum/objective/assassinate/new_objective - if(usr) + if(user) new_objective = new /datum/objective/assassinate new_objective.owner = S.mind - new_objective.target = usr.mind - new_objective.explanation_text = "[objective_verb] [usr.real_name], the one who summoned you." + new_objective.target = user + new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you." S.mind.objectives += new_objective var/datum/objective/new_objective2 = new /datum/objective new_objective2.owner = S.mind - new_objective2.explanation_text = "[objective_verb] everyone[usr ? " else while you're at it":""]." + new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]." S.mind.objectives += new_objective2 S.mind.add_antag_datum(/datum/antagonist/auto_custom) to_chat(S, S.playstyle_string) diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm index fedc2eb6ab..551ec5d418 100644 --- a/code/game/gamemodes/blob/blobs/shield.dm +++ b/code/game/gamemodes/blob/blobs/shield.dm @@ -30,4 +30,4 @@ name = initial(name) desc = initial(desc) atmosblock = TRUE - air_update_turf(1) \ No newline at end of file + air_update_turf(1) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index cc96a69f34..a37a8d5c22 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -58,12 +58,21 @@ GLOBAL_LIST_EMPTY(blob_nodes) /mob/camera/blob/proc/validate_location() var/turf/T = get_turf(src) - var/area/A = get_area(T) - if(((A && !A.blob_allowed) || !T || !(T.z in GLOB.station_z_levels)) && LAZYLEN(GLOB.blobstart)) - T = get_turf(pick(GLOB.blobstart)) + if(!is_valid_turf(T) && LAZYLEN(GLOB.blobstart)) + var/list/blobstarts = shuffle(GLOB.blobstart) + for(var/_T in blobstarts) + if(is_valid_turf(_T)) + T = _T + break if(!T) CRASH("No blobspawnpoints and blob spawned in nullspace.") forceMove(T) + +/mob/camera/blob/proc/is_valid_turf(turf/T) + var/area/A = get_area(T) + if((A && !A.blob_allowed) || !T || !is_station_level(T.z) || isspaceturf(T)) + return FALSE + return TRUE /mob/camera/blob/Life() if(!blob_core) @@ -83,7 +92,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) max_blob_points = INFINITY blob_points = INFINITY addtimer(CALLBACK(src, .proc/victory), 450) - + if(!victory_in_progress && max_count < blobs_legit.len) max_count = blobs_legit.len ..() @@ -95,7 +104,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) for(var/i in GLOB.mob_living_list) var/mob/living/L = i var/turf/T = get_turf(L) - if(!T || !(T.z in GLOB.station_z_levels)) + if(!T || !is_station_level(T.z)) continue if(L in GLOB.overminds || (L.pass_flags & PASSBLOB)) @@ -246,4 +255,4 @@ GLOBAL_LIST_EMPTY(blob_nodes) . = ..() var/datum/antagonist/blob/B = mind.has_antag_datum(/datum/antagonist/blob) if(!B) - mind.add_antag_datum(/datum/antagonist/blob) \ No newline at end of file + mind.add_antag_datum(/datum/antagonist/blob) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 0c642692f0..b9a8ee6046 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -348,4 +348,4 @@ icon_state = "blob" name = "blob" desc = "A thick wall of writhing tendrils." - brute_resist = 0.25 \ No newline at end of file + brute_resist = 0.25 diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index 4e8db74ac8..829b0a8512 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -10,17 +10,6 @@ /obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) to_chat(user, "We cleanse impurities from our form.") - - var/mob/living/simple_animal/borer/B = user.has_brain_worms() - if(B) - if(B.controlling) - B.detatch() - B.leave_victim() - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.vomit(0, toxic = TRUE) - to_chat(user, "A parasite exits our form.") - var/list/bad_organs = list( user.getorgan(/obj/item/organ/body_egg), user.getorgan(/obj/item/organ/zombie_infection)) diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 807d268cc9..450a482822 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -209,7 +209,7 @@ /obj/effect/proc_holder/changeling/sting/blind/sting_action(mob/user, mob/living/carbon/target) add_logs(user, target, "stung", "blind sting") to_chat(target, "Your eyes burn horrifically!") - target.become_nearsighted() + target.become_nearsighted(EYE_DAMAGE) target.blind_eyes(20) target.blur_eyes(40) return TRUE diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index e4f75ea563..f5484e91f5 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -196,7 +196,7 @@ Credit where due: /datum/game_mode/clockwork_cult/proc/check_clockwork_victory() return main_clockcult.check_clockwork_victory() -/datum/game_mode/clock_cult/set_round_result() +/datum/game_mode/clockwork_cult/set_round_result() ..() if(GLOB.clockwork_gateway_activated) SSticker.news_report = CLOCK_SUMMON diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm index 74493c6cc5..3d41d8aa8a 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm @@ -98,12 +98,12 @@ if(severity == 1 && uses) uses = 0 visible_message("[src] is disrupted!") - animate(src, alpha = 0, transform = matrix()*2, time = 10, flags_1 = ANIMATION_END_NOW) + animate(src, alpha = 0, transform = matrix()*2, time = 10, flags = ANIMATION_END_NOW) deltimer(timerid) timerid = QDEL_IN(src, 10) linked_gateway.uses = 0 linked_gateway.visible_message("[linked_gateway] is disrupted!") - animate(linked_gateway, alpha = 0, transform = matrix()*2, time = 10, flags_1 = ANIMATION_END_NOW) + animate(linked_gateway, alpha = 0, transform = matrix()*2, time = 10, flags = ANIMATION_END_NOW) deltimer(linked_gateway.timerid) linked_gateway.timerid = QDEL_IN(linked_gateway, 10) return TRUE @@ -144,13 +144,13 @@ uses = max(0, uses - 1) linked_gateway.uses = max(0, linked_gateway.uses - 1) if(!uses) - animate(src, transform = matrix() * 0.1, time = 10, flags_1 = ANIMATION_END_NOW) - animate(linked_gateway, transform = matrix() * 0.1, time = 10, flags_1 = ANIMATION_END_NOW) + animate(src, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW) + animate(linked_gateway, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW) density = FALSE linked_gateway.density = FALSE else - animate(src, transform = matrix() / 1.5, time = 10, flags_1 = ANIMATION_END_NOW) - animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags_1 = ANIMATION_END_NOW) + animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW) + animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW) addtimer(CALLBACK(src, .proc/check_uses), 10) return TRUE diff --git a/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm index 74f7119193..570f6527f8 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm @@ -132,7 +132,7 @@ var/doortype = /obj/machinery/door/airlock/clockwork if(glass) doortype = /obj/machinery/door/airlock/clockwork/brass - return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir) + return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir, "transfer_name" = TRUE) /obj/machinery/door/airlock/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent) return FALSE @@ -188,7 +188,7 @@ //Windoor conversion /obj/machinery/door/window/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent) - return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE) + return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE, "transfer_name" = TRUE) /obj/machinery/door/window/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent) return FALSE diff --git a/code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm b/code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm index c3888d6dae..2656d430d1 100644 --- a/code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm +++ b/code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm @@ -86,6 +86,7 @@ construct_type = /mob/living/simple_animal/drone/cogscarab w_class = WEIGHT_CLASS_SMALL var/infinite_resources = TRUE + var/static/obj/item/seasonal_hat //Share it with all other scarabs, since we're from the same cult! /obj/item/clockwork/construct_chassis/cogscarab/Initialize() . = ..() @@ -96,6 +97,12 @@ if(infinite_resources) //During rounds where they can't interact with the station, let them experiment with builds construct_type = /mob/living/simple_animal/drone/cogscarab/ratvar + if(!seasonal_hat) + var/obj/item/drone_shell/D = locate() in GLOB.poi_list + if(D && D.possible_seasonal_hats.len) + seasonal_hat = pick(D.possible_seasonal_hats) + else + seasonal_hat = "none" /obj/item/clockwork/construct_chassis/cogscarab/post_spawn(mob/living/construct) if(infinite_resources) //Allow them to build stuff and recite scripture @@ -104,3 +111,6 @@ F.uses_power = FALSE for(var/obj/item/clockwork/slab/S in cached_stuff) S.no_cost = TRUE + if(seasonal_hat && seasonal_hat != "none") + var/obj/item/hat = new seasonal_hat(construct) + construct.equip_to_slot_or_del(hat, slot_head) diff --git a/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm b/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm index bc8a5d47a5..fc11da9971 100644 --- a/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm +++ b/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm @@ -144,10 +144,14 @@ else if(new_thing_type) if(fabrication_values["dir_in_new"]) - new new_thing_type(get_turf(target), fabrication_values["spawn_dir"]) //please verify that your new object actually wants to get a dir in New() + var/atom/A = new new_thing_type(get_turf(target), fabrication_values["spawn_dir"]) //please verify that your new object actually wants to get a dir in New() + if(fabrication_values["transfer_name"]) + A.name = target.name else var/atom/A = new new_thing_type(get_turf(target)) A.setDir(fabrication_values["spawn_dir"]) + if(fabrication_values["transfer_name"]) + A.name = target.name if(!fabrication_values["no_target_deletion"]) //for some cases where fabrication_vals() modifies the object but doesn't want it deleted qdel(target) adjust_clockwork_power(-fabrication_values["power_cost"]) diff --git a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm b/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm index c414ac2cce..60f95d6716 100644 --- a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm +++ b/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm @@ -51,7 +51,7 @@ to_chat(victim, "\"It looks like Nar-Sie's dogs really don't value their eyes.\"") to_chat(victim, "Your eyes explode with horrific pain!") victim.emote("scream") - victim.become_blind() + victim.become_blind(EYE_DAMAGE) victim.adjust_blurriness(30) victim.adjust_blindness(30) return TRUE @@ -142,8 +142,8 @@ apply_eye_damage(H) else if(GLOB.ratvar_awakens) - H.cure_nearsighted() - H.cure_blind() + H.cure_nearsighted(list(EYE_DAMAGE)) + H.cure_blind(list(EYE_DAMAGE)) H.adjust_eye_damage(-eye_damage_done) eye_damage_done = 0 else if(prob(50) && eye_damage_done) @@ -166,5 +166,7 @@ if(eye_damage_done >= blind_breakpoint) if(!H.has_disability(DISABILITY_BLIND)) to_chat(H, "A piercing white light floods your vision. Suddenly, all goes dark!") + H.become_blind(EYE_DAMAGE) + if(prob(min(20, 5 + eye_damage_done))) to_chat(H, "Your eyes continue to burn.") diff --git a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm b/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm index 20c1d38389..b53caee281 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm @@ -1,3 +1,7 @@ +//Helper proc to get an Eminence mob if it exists +/proc/get_eminence() + return locate(/mob/camera/eminence) in servants_and_ghosts() + //The Eminence is a unique mob that functions like the leader of the cult. It's incorporeal but can interact with the world in several ways. /mob/camera/eminence name = "\the Emininence" @@ -12,6 +16,7 @@ layer = FLY_LAYER faction = list("ratvar") lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + var/turf/last_failed_turf var/static/superheated_walls = 0 /mob/camera/eminence/CanPass(atom/movable/mover, turf/target) @@ -20,25 +25,38 @@ /mob/camera/eminence/Move(NewLoc, direct) var/OldLoc = loc if(NewLoc && !istype(NewLoc, /turf/open/indestructible/reebe_void)) - forceMove(get_turf(NewLoc)) + var/turf/T = get_turf(NewLoc) + if(T.flags_1 & NOJAUNT_1) + if(last_failed_turf != T) + T.visible_message("[T] suddenly emits a ringing sound!", ignore_mob = src) + playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 75, FALSE) + last_failed_turf = T + to_chat(src, "This turf is consecrated and can't be crossed!") + return + if(!GLOB.ratvar_awakens && istype(get_area(T), /area/chapel)) + to_chat(src, "The Chapel is hallowed ground under a heretical deity, and can't be accessed!") + return + forceMove(T) Moved(OldLoc, direct) if(GLOB.ratvar_awakens) for(var/turf/T in range(5, src)) if(prob(166 - (get_dist(src, T) * 33))) T.ratvar_act() //Causes moving to leave a swath of proselytized area behind the Eminence +/mob/camera/eminence/Process_Spacemove(movement_dir = 0) + return TRUE + /mob/camera/eminence/Login() ..() + add_servant_of_ratvar(src, TRUE) var/datum/antagonist/clockcult/C = mind.has_antag_datum(/datum/antagonist/clockcult,TRUE) - if(!C) - add_servant_of_ratvar(src, TRUE) - C = mind.has_antag_datum(/datum/antagonist/clockcult,TRUE) - if(C && C.clock_team) - if(C.clock_team.eminence) - remove_servant_of_ratvar(src,TRUE) - qdel(src) - else - C.clock_team.eminence = src + if(C && C.clock_team) + if(C.clock_team.eminence && C.clock_team.eminence != src) + remove_servant_of_ratvar(src,TRUE) + qdel(src) + return + else + C.clock_team.eminence = src to_chat(src, "You have been selected as the Eminence!") to_chat(src, "As the Eminence, you lead the servants. Anything you say will be heard by the entire cult.") to_chat(src, "Though you can move through walls, you're also incorporeal, and largely can't interact with the world except for a few ways.") @@ -53,6 +71,12 @@ E.Grant(src) /mob/camera/eminence/say(message) + if(client) + if(client.prefs.muted & MUTE_IC) + to_chat(src, "You cannot send IC messages (muted).") + return + if(client.handle_spam_prevention(message,MUTE_IC)) + return message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) if(!message) return @@ -60,7 +84,13 @@ if(GLOB.ratvar_awakens) visible_message("You feel light slam into your mind and form words: \"[capitalize(message)]\"") playsound(src, 'sound/machines/clockcult/ark_scream.ogg', 50, FALSE) - hierophant_message("The Eminence: \"[message]\"") + message = "The [GLOB.ratvar_awakens ? "Radiance" : "Eminence"]: \"[message]\"" + for(var/mob/M in servants_and_ghosts()) + if(isobserver(M)) + var/link = FOLLOW_LINK(M, src) + to_chat(M, "[link] [message]") + else + to_chat(M, message) /mob/camera/eminence/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) if(is_reebe(z) || is_servant_of_ratvar(speaker) || GLOB.ratvar_approaches || GLOB.ratvar_awakens) //Away from Reebe, the Eminence can't hear anything diff --git a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm index 562814dfeb..73bcd6b47f 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm @@ -21,7 +21,7 @@ loot = list(/obj/item/clockwork/component/geis_capacitor/fallen_armor) light_range = 2 light_power = 1.1 - playstyle_string = "You are a clockwork marauder, a well-rounded frontline construct of Ratvar. Although you have no \ + playstyle_string = "You are a clockwork marauder, a well-rounded frontline construct of Ratvar. Although you have no \ unique abilities, you're a fearsome fighter in one-on-one combat, and your shield protects from projectiles!

Obey the Servants and do as they \ tell you. Your primary goal is to defend the Ark from destruction; they are your allies in this, and should be protected from harm.
" empower_string = "The Anima Bulwark's power flows through you! Your weapon will strike harder, your armor is sturdier, and your shield is more durable." diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm index 63fea1eeb6..36a74ec62b 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -1,5 +1,11 @@ #define ARK_GRACE_PERIOD 300 //In seconds, how long the crew has before the Ark truly "begins" +/proc/clockwork_ark_active() //A helper proc so the Ark doesn't have to be typecast every time it's checked; returns null if there is no Ark and its active var otherwise + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar + if(!G) + return + return G.active + //The gateway to Reebe, from which Ratvar emerges. /obj/structure/destructible/clockwork/massive/celestial_gateway name = "\improper Ark of the Clockwork Justicar" @@ -63,7 +69,7 @@ /obj/structure/destructible/clockwork/massive/celestial_gateway/proc/cry_havoc() visible_message("[src] shudders and roars to life, its parts beginning to whirr and screech!") - hierophant_message("The Ark is activating! Get back to the base!") + hierophant_message("The Ark is activating! You will be transported there soon!") for(var/mob/M in GLOB.player_list) if(is_servant_of_ratvar(M) || isobserver(M) || M.z == z) M.playsound_local(M, 'sound/magic/clockwork/ark_activation_sequence.ogg', 30, FALSE, pressure_affected = FALSE) @@ -86,6 +92,8 @@ var/datum/stack_recipe/R = V if(R.title == "wall gear") R.time *= 2 //Building walls becomes slower when the Ark activates + mass_recall() + recalls_remaining++ //So it doesn't use up a charge /obj/structure/destructible/clockwork/massive/celestial_gateway/proc/open_portal(turf/T) new/obj/effect/clockwork/city_of_cogs_rift(T) @@ -113,7 +121,7 @@ /obj/structure/destructible/clockwork/massive/celestial_gateway/proc/mass_recall() for(var/V in SSticker.mode.servants_of_ratvar) var/datum/mind/M = V - if(!M.current.stat) + if(M.current.stat != DEAD) M.current.forceMove(get_turf(src)) M.current.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) M.current.clear_fullscreen("flash", 5) @@ -261,6 +269,12 @@ if(!step_away(O, src, 2) || get_dist(O, src) < 2) O.take_damage(50, BURN, "bomb") O.update_icon() + for(var/V in GLOB.player_list) + var/mob/M = V + if(is_servant_of_ratvar(M) && M.z != z) + M.forceMove(get_step(src, SOUTH)) + M.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) + M.clear_fullscreen("flash", 5) if(grace_period) grace_period-- return diff --git a/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm b/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm index 495bfaeaa8..2edaba3b23 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm @@ -38,7 +38,6 @@ /obj/structure/destructible/clockwork/eminence_spire/attack_ghost(mob/user) if(!IsAdminGhost(user)) return - var/datum/antagonist/clockcult/random_cultist = locate() in GLOB.antagonists //if theres no cultists new team without eminence will be created anyway. if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence) to_chat(user, "There's already an Eminence - too late!") diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index da222fe521..1ce45eaace 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -163,7 +163,7 @@ /obj/item/twohanded/required/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) . = ..() - if(dash_toggled && jaunt.IsAvailable()) + if(dash_toggled) jaunt.Teleport(user, target) return if(!proximity) @@ -577,21 +577,21 @@ if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) return if(!cultist_to_receive) - to_chat(user, "You require a destination!") + to_chat(user, "You require a destination!") log_game("Void torch failed - no target") return if(cultist_to_receive.stat == DEAD) - to_chat(user, "[cultist_to_receive] has died!") + to_chat(user, "[cultist_to_receive] has died!") log_game("Void torch failed - target died") return if(!iscultist(cultist_to_receive)) - to_chat(user, "[cultist_to_receive] is not a follower of the Geometer!") + to_chat(user, "[cultist_to_receive] is not a follower of the Geometer!") log_game("Void torch failed - target was deconverted") return if(A in user.GetAllContents()) - to_chat(user, "[A] must be on a surface in order to teleport it!") + to_chat(user, "[A] must be on a surface in order to teleport it!") return - to_chat(user, "You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!") + to_chat(user, "You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!") cultist_to_receive.put_in_hands(A) charges-- to_chat(user, "\The [src] now has [charges] charge\s.") diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 440dfaede6..a921868f22 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -10,7 +10,7 @@ ..() to_chat(user, "\The [src] is [anchored ? "":"not "]secured to the floor.") if((iscultist(user) || isobserver(user)) && cooldowntime > world.time) - to_chat(user, "The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + to_chat(user, "The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") /obj/structure/destructible/cult/examine_status(mob/user) if(iscultist(user) || isobserver(user)) @@ -62,10 +62,10 @@ to_chat(user, "You're pretty sure you know exactly what this is used for and you can't seem to touch it.") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a tome first.") + to_chat(user, "You need to anchor [src] to the floor with a tome first.") return if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return var/choice = alert(user,"You study the schematics etched into the forge...",,"Eldritch Whetstone","Zealot's Blindfold","Flask of Unholy Water") var/pickedtype @@ -79,7 +79,7 @@ if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 var/obj/item/N = new pickedtype(get_turf(src)) - to_chat(user, "You kneel before the altar and your faith is rewarded with an [N]!") + to_chat(user, "You kneel before the altar and your faith is rewarded with an [N]!") /obj/structure/destructible/cult/forge @@ -95,15 +95,14 @@ to_chat(user, "The heat radiating from [src] pushes you back.") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a tome first.") + to_chat(user, "You need to anchor [src] to the floor with a tome first.") return if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return - var/option = "Shielded Robe" - option = input(user, "You study the schematics etched into the forge...", "[src]", option) as null|anything in list("Shielded Robe", "Flagellant's Robe", "Bastard Sword", "Nar-Sien Hardsuit") + var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword") var/pickedtype - switch(option) + switch(choice) if("Shielded Robe") pickedtype = /obj/item/clothing/suit/hooded/cultrobes/cult_shield if("Flagellant's Robe") @@ -113,16 +112,13 @@ pickedtype = /obj/item/twohanded/required/cult_bastard else cooldowntime = 12000 - (world.time - SSticker.round_start_time) - to_chat(user, "The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].") + to_chat(user, "The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].") cooldowntime = 0 return - if("Nar-Sien Hardsuit") - pickedtype = /obj/item/clothing/suit/space/hardsuit/cult - if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 var/obj/item/N = new pickedtype(get_turf(src)) - to_chat(user, "You work the forge as dark knowledge guides your hands, creating [N]!") + to_chat(user, "You work the forge as dark knowledge guides your hands, creating [N]!") @@ -212,10 +208,10 @@ to_chat(user, "All of these books seem to be gibberish.") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a tome first.") + to_chat(user, "You need to anchor [src] to the floor with a tome first.") return if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") + to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Walker Set") var/list/pickedtype = list() @@ -231,7 +227,7 @@ cooldowntime = world.time + 2400 for(var/N in pickedtype) var/obj/item/D = new N(get_turf(src)) - to_chat(user, "You summon [D] from the archives!") + to_chat(user, "You summon [D] from the archives!") /obj/effect/gateway name = "gateway" diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 30e78ff1af..3f05cb4bfe 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -265,6 +265,7 @@ This file contains the arcane tome files. if(locate(/obj/effect/rune) in T) to_chat(user, "There is already a rune here.") return FALSE + if(!is_station_level(T.z) && !is_mining_level(T.z)) to_chat(user, "The veil is not weak enough here.") return FALSE diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2da551fb07..2ddf5b05ee 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -140,7 +140,7 @@ structure_check() searches for nearby cultist structures required for the invoca L.say(invocation, language = /datum/language/common, ignore_spam = TRUE) if(invoke_damage) L.apply_damage(invoke_damage, BRUTE) - to_chat(L, "[src] saps your strength!") + to_chat(L, "[src] saps your strength!") do_invoke_glow() /obj/effect/rune/proc/do_invoke_glow() @@ -201,12 +201,12 @@ structure_check() searches for nearby cultist structures required for the invoca var/obj/item/paper/talisman/talisman_type var/list/possible_talismans = list() if(!papers_on_rune.len) - to_chat(user, "There must be a blank paper on top of [src]!") + to_chat(user, "There must be a blank paper on top of [src]!") fail_invoke() log_game("Talisman Creation rune failed - no blank papers on rune") return if(rune_in_use) - to_chat(user, "[src] can only support one ritual at a time!") + to_chat(user, "[src] can only support one ritual at a time!") fail_invoke() log_game("Talisman Creation rune failed - already in use") return @@ -222,7 +222,7 @@ structure_check() searches for nearby cultist structures required for the invoca return papers_on_rune = checkpapers() if(!papers_on_rune.len) - to_chat(user, "There must be a blank paper on top of [src]!") + to_chat(user, "There must be a blank paper on top of [src]!") fail_invoke() log_game("Talisman Creation rune failed - no blank papers on rune") return @@ -394,9 +394,9 @@ structure_check() searches for nearby cultist structures required for the invoca SSticker.mode.add_cultist(convertee.mind, 1) new /obj/item/tome(get_turf(src)) convertee.mind.special_role = "Cultist" - to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ + to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ and something evil takes root.") - to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\ + to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\ ") return 1 @@ -412,7 +412,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/big_sac = FALSE if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || C.cult_team.is_sacrifice_target(sacrificial.mind)) && invokers.len < 3) for(var/M in invokers) - to_chat(M, "[sacrificial] is too greatly linked to the world! You need three acolytes!") + to_chat(M, "[sacrificial] is too greatly linked to the world! You need three acolytes!") log_game("Offer rune failed - not enough acolytes and target is living or sac target") return FALSE if(sacrificial.mind) @@ -515,10 +515,10 @@ structure_check() searches for nearby cultist structures required for the invoca message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod") ..() -//Rite of Resurrection: Requires the corpse of a cultist and that there have been less revives than the number of people GLOB.sacrificed +//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out. /obj/effect/rune/raise_dead - cultist_name = "Resurrect Cultist" - cultist_desc = "requires the corpse of a cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be revived." + cultist_name = "Revive Cultist" + cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be given a new life." invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" color = RUNE_COLOR_MEDIUMRED @@ -539,16 +539,11 @@ structure_check() searches for nearby cultist structures required for the invoca return rune_in_use = TRUE for(var/mob/living/M in T.contents) - if(iscultist(M) && M.stat == DEAD) + if(iscultist(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) potential_revive_mobs |= M if(!potential_revive_mobs.len) - to_chat(user, "There are no dead cultists on the rune!") - log_game("Raise Dead rune failed - no corpses to revive") - fail_invoke() - rune_in_use = FALSE - return - if(LAZYLEN(GLOB.sacrificed) <= revives_used) - to_chat(user, "You have sacrificed too few people to revive a cultist!") + to_chat(user, "There are no dead cultists on the rune!") + log_game("Raise Dead rune failed - no cultists to revive") fail_invoke() rune_in_use = FALSE return @@ -564,9 +559,25 @@ structure_check() searches for nearby cultist structures required for the invoca else invocation = initial(invocation) ..() - revives_used++ - mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it! - mob_to_revive.grab_ghost() + if(mob_to_revive.stat == DEAD) + if(LAZYLEN(GLOB.sacrificed) <= revives_used) + to_chat(user, "Your cult must carry out another sacrifice before it can revive a cultist!") + fail_invoke() + rune_in_use = FALSE + return + revives_used++ + mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it! + mob_to_revive.grab_ghost() + else if(!mob_to_revive.client || mob_to_revive.client.is_afk()) + set waitfor = FALSE + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", "[name]", null, "Blood Cultist", 50, mob_to_revive) + var/mob/dead/observer/theghost = null + if(candidates.len) + theghost = pick(candidates) + to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") + message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") + mob_to_revive.ghostize(0) + mob_to_revive.key = theghost.key to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Arise.\"") mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ "You awaken suddenly from the void. You're alive!") @@ -582,13 +593,13 @@ structure_check() searches for nearby cultist structures required for the invoca fail_invoke() return FALSE if(!(target_mob in T.contents)) - to_chat(user, "The cultist to revive has been moved!") + to_chat(user, "The cultist to revive has been moved!") fail_invoke() log_game("Raise Dead rune failed - revival target moved") return FALSE var/mob/dead/observer/ghost = target_mob.get_ghost(TRUE) if(!ghost && (!target_mob.mind || !target_mob.mind.active)) - to_chat(user, "The corpse to revive has no spirit!") + to_chat(user, "The corpse to revive has no spirit!") fail_invoke() log_game("Raise Dead rune failed - revival target has no ghost") return FALSE @@ -655,16 +666,16 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/spirit/examine(mob/user) ..() if(affecting) - to_chat(user, "A translucent field encases [affecting] above the rune!") + to_chat(user, "A translucent field encases [affecting] above the rune!") /obj/effect/rune/spirit/can_invoke(mob/living/user) if(rune_in_use) - to_chat(user, "[src] cannot support more than one body!") + to_chat(user, "[src] cannot support more than one body!") log_game("Spirit Sight rune failed - more than one user") return list() var/turf/T = get_turf(src) if(!(user in T)) - to_chat(user, "You must be standing on top of [src]!") + to_chat(user, "You must be standing on top of [src]!") log_game("Spirit Sight rune failed - user not standing on rune") return list() return ..() @@ -694,11 +705,11 @@ structure_check() searches for nearby cultist structures required for the invoca if(affecting.stat == UNCONSCIOUS) if(prob(1)) var/mob/dead/observer/G = affecting.get_ghost() - to_chat(G, "You feel the link between you and your body weakening... you must hurry!") + to_chat(G, "You feel the link between you and your body weakening... you must hurry!") else if(affecting.stat == DEAD) affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) var/mob/dead/observer/G = affecting.get_ghost() - to_chat(G, "You suddenly feel your physical form pass on. [src]'s exertion has killed you!") + to_chat(G, "You suddenly feel your physical form pass on. [src]'s exertion has killed you!") break sleep(1) affecting = null @@ -722,7 +733,7 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/wall/examine(mob/user) ..() if(density) - to_chat(user, "There is a barely perceptible shimmering of the air above [src].") + to_chat(user, "There is a barely perceptible shimmering of the air above [src].") /obj/effect/rune/wall/Destroy() density = FALSE @@ -744,7 +755,7 @@ structure_check() searches for nearby cultist structures required for the invoca spread_density() var/carbon_user = iscarbon(user) user.visible_message("[user] [carbon_user ? "places [user.p_their()] hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ - "You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.") + "You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.") if(carbon_user) var/mob/living/carbon/C = user C.apply_damage(2, BRUTE, pick("l_arm", "r_arm")) @@ -806,17 +817,17 @@ structure_check() searches for nearby cultist structures required for the invoca if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) return if(!cultist_to_summon) - to_chat(user, "You require a summoning target!") + to_chat(user, "You require a summoning target!") fail_invoke() log_game("Summon Cultist rune failed - no target") return if(cultist_to_summon.stat == DEAD) - to_chat(user, "[cultist_to_summon] has died!") + to_chat(user, "[cultist_to_summon] has died!") fail_invoke() log_game("Summon Cultist rune failed - target died") return if(!iscultist(cultist_to_summon)) - to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!") + to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!") fail_invoke() log_game("Summon Cultist rune failed - target was deconverted") return @@ -826,7 +837,7 @@ structure_check() searches for nearby cultist structures required for the invoca log_game("Summon Cultist rune failed - target in away mission") return cultist_to_summon.visible_message("[cultist_to_summon] suddenly disappears in a flash of red light!", \ - "Overwhelming vertigo consumes you as you are hurled through the air!") + "Overwhelming vertigo consumes you as you are hurled through the air!") ..() visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") cultist_to_summon.forceMove(get_turf(src)) @@ -914,17 +925,17 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) - to_chat(user, "You must be standing on [src]!") + to_chat(user, "You must be standing on [src]!") fail_invoke() log_game("Manifest rune failed - user not standing on rune") return list() if(user.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST)) - to_chat(user, "Ghosts can't summon more ghosts!") + to_chat(user, "Ghosts can't summon more ghosts!") fail_invoke() log_game("Manifest rune failed - user is a ghost") return list() if(ghosts >= ghost_limit) - to_chat(user, "You are sustaining too many ghosts to summon more!") + to_chat(user, "You are sustaining too many ghosts to summon more!") fail_invoke() log_game("Manifest rune failed - too many summoned ghosts") return list() @@ -933,7 +944,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) ghosts_on_rune += O if(!ghosts_on_rune.len) - to_chat(user, "There are no spirits near [src]!") + to_chat(user, "There are no spirits near [src]!") fail_invoke() log_game("Manifest rune failed - no nearby ghosts") return list() @@ -955,13 +966,13 @@ structure_check() searches for nearby cultist structures required for the invoca ghosts++ playsound(src, 'sound/magic/exit_blood.ogg', 50, 1) visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") - to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") + to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") var/turf/T = get_turf(src) var/obj/structure/emergency_shield/invoker/N = new(T) new_human.key = ghost_to_spawn.key SSticker.mode.add_cultist(new_human.mind, 0) - to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.") + to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.") while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) if(user.stat || new_human.InCritical()) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 855dfa7255..588b45d5f6 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -39,7 +39,7 @@ invocation = "Ra'sha yoka!" /obj/item/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1) - to_chat(user, "You feel a pain in your head. The Geometer is displeased.") + to_chat(user, "You feel a pain in your head. The Geometer is displeased.") if(iscarbon(user)) var/mob/living/carbon/C = user C.apply_damage(10, BRUTE, "head") @@ -79,7 +79,7 @@ to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") return ..(user, 0) user.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ - "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") + "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") user.forceMove(target) target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") return ..() @@ -96,10 +96,10 @@ /obj/item/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("[user]'s hand glows red for a moment.", \ - "You speak the words of the talisman!") + "You speak the words of the talisman!") new /obj/item/tome(get_turf(user)) user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materializes at your feet.") + "An arcane tome materializes at your feet.") /obj/item/paper/talisman/true_sight cultist_name = "Talisman of Veiling" @@ -115,14 +115,14 @@ . = ..() if(!revealing) user.visible_message("Thin grey dust falls from [user]'s hand!", \ - "You speak the words of the talisman, hiding nearby runes.") + "You speak the words of the talisman, hiding nearby runes.") invocation = "Nikt'o barada kla'atu!" revealing = TRUE for(var/obj/effect/rune/R in range(4,user)) R.talismanhide() else user.visible_message("A flash of light shines from [user]'s hand!", \ - "You speak the words of the talisman, revealing nearby runes.") + "You speak the words of the talisman, revealing nearby runes.") for(var/obj/effect/rune/R in range(3,user)) R.talismanreveal() @@ -137,7 +137,7 @@ /obj/item/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("[user]'s hand flashes a bright blue!", \ - "You speak the words of the talisman, emitting an EMP blast.") + "You speak the words of the talisman, emitting an EMP blast.") empulse(src, 4, 8) @@ -162,7 +162,7 @@ if(iscultist(user)) invoke(user, 1) user.visible_message("[user] holds up [src], which explodes in a flash of red light!", \ - "You stun [target] with the talisman!") + "You stun [target] with the talisman!") var/obj/item/nullrod/N = locate() in target if(N) target.visible_message("[target]'s holy weapon absorbs the talisman's light!", \ @@ -197,7 +197,7 @@ /obj/item/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ - "You speak the words of the talisman, arming yourself!") + "You speak the words of the talisman, arming yourself!") user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) @@ -226,7 +226,7 @@ /obj/item/paper/talisman/horror/afterattack(mob/living/target, mob/living/user) if(iscultist(user) && (get_dist(user, target) < 7)) if(iscarbon(target)) - to_chat(user, "You disturb [target] with visions of madness!") + to_chat(user, "You disturb [target] with visions of madness!") var/mob/living/carbon/H = target H.reagents.add_reagent("mindbreaker", 12) if(is_servant_of_ratvar(target)) @@ -254,7 +254,7 @@ /obj/item/paper/talisman/construction/attack(obj/M,mob/living/user) if(iscultist(user)) - to_chat(user, "This talisman will only work on a stack of metal or plasteel sheets!") + to_chat(user, "This talisman will only work on a stack of metal or plasteel sheets!") log_game("Construct talisman failed - not a valid target") else ..() @@ -306,7 +306,7 @@ /obj/item/paper/talisman/shackle/attack(mob/living/carbon/target, mob/living/user) if(iscultist(user) && istype(target)) if(target.stat == DEAD) - user.visible_message("This talisman's magic does not affect the dead!") + user.visible_message("This talisman's magic does not affect the dead!") return CuffAttack(target, user) return diff --git a/code/game/gamemodes/devil/imp/imp.dm b/code/game/gamemodes/devil/imp/imp.dm index 70ed6dfc1d..88ff9f1668 100644 --- a/code/game/gamemodes/devil/imp/imp.dm +++ b/code/game/gamemodes/devil/imp/imp.dm @@ -34,7 +34,7 @@ var/boost = 0 bloodcrawl = BLOODCRAWL_EAT var/list/consumed_mobs = list() - var/playstyle_string = "You are an imp, a mischevious creature from hell. You are the lowest rank on the hellish totem pole \ + var/playstyle_string = "You are an imp, a mischevious creature from hell. You are the lowest rank on the hellish totem pole \ Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \ of intentionally harming a fellow devil." diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index a4b9398de4..8962476491 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( sleep(30) if(!owner || QDELETED(owner)) return - priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg') + priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/ai/aimalf.ogg') set_security_level("delta") var/obj/machinery/doomsday_device/DOOM = new(owner_AI) owner_AI.nuking = TRUE @@ -367,12 +367,12 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( var/sec_left = seconds_remaining() if(!sec_left) timing = FALSE - detonate(T.z) + detonate() else if(world.time >= next_announce) minor_announce("[sec_left] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!", "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", TRUE) next_announce += DOOMSDAY_ANNOUNCE_INTERVAL -/obj/machinery/doomsday_device/proc/detonate(z_level = ZLEVEL_STATION_PRIMARY) +/obj/machinery/doomsday_device/proc/detonate() sound_to_playing_players('sound/machines/alarm.ogg') sleep(100) for(var/i in GLOB.mob_living_list) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 780be71694..9e0c965271 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -105,7 +105,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/Move() if(z != z_original || loc == dest) qdel(src) - return + return FALSE . = ..() //process movement... @@ -317,7 +317,6 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/New() meteordrop += subtypesof(/obj/item/organ/alien) - meteordrop -= /obj/item/organ/alien/eggsac ..() /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 508f4e9f13..7e49415834 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -300,11 +300,10 @@ /obj/item/organ/heart/gland/plasma/activate() to_chat(owner, "You feel bloated.") - sleep(150) - if(!owner) - return - to_chat(owner, "A massive stomachache overcomes you.") - sleep(50) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, owner, "A massive stomachache overcomes you."), 150) + addtimer(CALLBACK(src, .proc/vomit_plasma), 200) + +/obj/item/organ/heart/gland/plasma/proc/vomit_plasma() if(!owner) return owner.visible_message("[owner] vomits a cloud of plasma!") diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 956af60580..729a273c53 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -322,10 +322,6 @@ to_chat(S, "This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.") return FALSE -/obj/machinery/message_server/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.") - return FALSE - /obj/machinery/deepfryer/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) to_chat(S, "This kitchen appliance should be preserved, it will make delicious unhealthy snacks for our masters in the future. Aborting.") return FALSE diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm index ff426ab625..15ae0a7fe1 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm @@ -1,8 +1,8 @@ /datum/round_event_control/spawn_swarmer name = "Spawn Swarmer Shell" typepath = /datum/round_event/spawn_swarmer - weight = 0 - max_occurrences = 0 //Only once okay fam + weight = 7 + max_occurrences = 1 //Only once okay fam earliest_start = 18000 //30 minutes min_players = 15 @@ -16,7 +16,7 @@ return 0 new /obj/effect/mob_spawn/swarmer(get_turf(GLOB.the_gateway)) if(prob(25)) //25% chance to announce it to the crew - var/swarmer_report = "[command_name()] High-Priority Update" + var/swarmer_report = "[command_name()] High-Priority Update" swarmer_report += "

Our long-range sensors have detected an odd signal emanating from your station's gateway. We recommend immediate investigation of your gateway, as something may have come through." print_command_report(swarmer_report, announce=TRUE) diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 2ebc21adac..158ba09d43 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -41,7 +41,7 @@ /mob/living/simple_animal/hostile/morph, /obj/effect)) - var/playstyle_string = "You are a morph, an abomination of science created primarily with changeling cells. \ + var/playstyle_string = "You are a morph, an abomination of science created primarily with changeling cells. \ You may take the form of anything nearby by shift-clicking it. This process will alert any nearby \ observers, and can only be performed once every five seconds. While morphed, you move faster, but do \ less damage. In addition, anyone within three tiles will note an uncanny wrongness if examining you. \ diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 441689fb9b..002e1b3809 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -64,7 +64,7 @@ /mob/living/simple_animal/revenant/Login() ..() - to_chat(src, "You are a revenant.") + to_chat(src, "You are a revenant.") to_chat(src, "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.") to_chat(src, "You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.") to_chat(src, "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.") diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index 8739ba22eb..e8eb95aa7b 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -35,7 +35,7 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE var/boost = 0 bloodcrawl = BLOODCRAWL_EAT - var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \ + var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \ You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \ Pulling a dead or unconscious mob while you enter a pool will pull them in with you, allowing you to feast and regain your health. \ You move quickly upon leaving a pool of blood, but the material world will soon sap your strength and leave you sluggish. " @@ -136,8 +136,8 @@ // Keep the people we hug! var/list/consumed_mobs = list() - playstyle_string = "You are a laughter \ - demon, a wonderful creature from another realm. You have a single \ + playstyle_string = "You are a laughter \ + demon, a wonderful creature from another realm. You have a single \ desire: To hug and tickle.
\ You may use the \"Blood Crawl\" ability near blood pools to travel \ through them, appearing and disappearing from the station at will. \ diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 890a3bb456..f131046cac 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -141,8 +141,8 @@ /datum/outfit/syndicate/post_equip(mob/living/carbon/human/H) var/obj/item/device/radio/R = H.ears - R.set_frequency(GLOB.SYND_FREQ) - R.freqlock = 1 + R.set_frequency(FREQ_SYNDICATE) + R.freqlock = TRUE if(command_radio) R.command = TRUE diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index a505d6248b..4b147e9446 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -1,6 +1,6 @@ /datum/objective var/datum/mind/owner //The primary owner of the objective. !!SOMEWHAT DEPRECATED!! Prefer using 'team' for new code. - var/datum/objective_team/team //An alternative to 'owner': a team. Use this when writing new code. + var/datum/team/team //An alternative to 'owner': a team. Use this when writing new code. var/explanation_text = "Nothing" //What that person is supposed to do. var/team_explanation_text //For when there are multiple owners. var/datum/mind/target = null //If they are focused on a particular person. @@ -47,9 +47,9 @@ . = list() for(var/V in GLOB.data_core.locked) var/datum/data/record/R = V - var/mob/M = R.fields["reference"] - if(M && M.mind) - . += M.mind + var/datum/mind/M = R.fields["mindref"] + if(M) + . += M /datum/objective/proc/find_target() var/list/datum/mind/owners = get_owners() @@ -524,7 +524,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/list/otherwise = M.GetAllContents() for(var/obj/item/disk/tech_disk/TD in otherwise) TD.stored_research.copy_research_to(checking) - return checking.researched_nodes.len >= target + return checking.researched_nodes.len >= target_amount /datum/objective/capture @@ -537,25 +537,25 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/captured_amount = 0 var/area/centcom/holding/A = locate() in GLOB.sortedAreas for(var/mob/living/carbon/human/M in A)//Humans. - if(M.stat==2)//Dead folks are worth less. + if(M.stat == DEAD)//Dead folks are worth less. captured_amount+=0.5 continue captured_amount+=1 for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure. captured_amount+=0.1 for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research. - if(M.stat==2) + if(M.stat == DEAD) captured_amount+=0.5 continue captured_amount+=1 for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans. if(istype(M, /mob/living/carbon/alien/humanoid/royal/queen))//Queens are worth three times as much as humans. - if(M.stat==2) + if(M.stat == DEAD) captured_amount+=1.5 else captured_amount+=3 continue - if(M.stat==2) + if(M.stat == DEAD) captured_amount+=1 continue captured_amount+=2 diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 101a33e551..13b4234622 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -27,7 +27,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) //items that shouldn't spawn on the floor because they would bug or act weird var/global/list/spawn_forbidden = list( /obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you - /obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai, + /obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/device/pda/ai, /obj/item/smallDelivery, /obj/item/projectile, /obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 8b80b9ab69..bea6d41685 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -11,11 +11,11 @@ slot_flags = SLOT_BELT var/usability = 0 - var/reusable = TRUE + var/old_shard = FALSE var/spent = FALSE /obj/item/device/soulstone/proc/was_used() - if(!reusable) + if(old_shard) spent = TRUE name = "dull [name]" desc = "A fragment of the legendary treasure known simply as \ @@ -27,7 +27,7 @@ /obj/item/device/soulstone/anybody/chaplain name = "mysterious old shard" - reusable = FALSE + old_shard = TRUE /obj/item/device/soulstone/pickup(mob/living/user) ..() @@ -38,7 +38,10 @@ /obj/item/device/soulstone/examine(mob/user) ..() if(usability || iscultist(user) || iswizard(user) || isobserver(user)) - to_chat(user, "A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.") + if (old_shard) + to_chat(user, "A soulstone, used to capture a soul, either from dead humans or from freed shades.") + else + to_chat(user, "A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.") to_chat(user, "The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.") if(spent) to_chat(user, "This shard is spent; it is now just a creepy rock.") @@ -151,7 +154,7 @@ if(contents.len) to_chat(user, "Capture failed!: The soulstone is full! Free an existing soul to make room.") else - if(T.stat != CONSCIOUS) + if((!old_shard && T.stat != CONSCIOUS) || (old_shard && T.stat == DEAD)) if(T.client == null) to_chat(user, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") getCultGhost(T,user) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 0d9655ae8e..1d423802d1 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -47,7 +47,7 @@ for(var/datum/mind/wizard in wizards) if(isliving(wizard.current) && wizard.current.stat!=DEAD) return FALSE - + for(var/obj/item/phylactery/P in GLOB.poi_list) //TODO : IsProperlyDead() if(P.mind && P.mind.has_antag_datum(/datum/antagonist/wizard)) return FALSE @@ -55,7 +55,7 @@ if(SSevents.wizardmode) //If summon events was active, turn it off SSevents.toggleWizardmode() SSevents.resetFrequency() - + return TRUE /datum/game_mode/wizard/set_round_result() diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 61a5d7271d..52702868f7 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -15,7 +15,7 @@ state_open = TRUE circuit = /obj/item/circuitboard/machine/sleeper var/efficiency = 1 - var/min_health = 30 + var/min_health = -25 var/list/available_chems var/controls_inside = FALSE var/list/possible_chems = list( @@ -42,7 +42,7 @@ I += M.rating efficiency = initial(efficiency)* E - min_health = initial(min_health) - (10*E) + min_health = initial(min_health) - (10*(E-1)) // CIT CHANGE - changes min health equation to be min_health - (matterbin rating * 10) available_chems = list() for(var/i in 1 to I) available_chems |= possible_chems[i] diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index 01651e6e08..2170636f43 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -8,7 +8,7 @@ /obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if(!signal || signal.encryption) + if(!signal) return if(id_tag != signal.data["tag"] || !signal.data["command"]) @@ -52,15 +52,13 @@ /obj/machinery/door/airlock/proc/send_status() if(radio_connection) - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = id_tag - signal.data["timestamp"] = world.time - - signal.data["door_status"] = density?("closed"):("open") - signal.data["lock_status"] = locked?("locked"):("unlocked") - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK) + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "door_status" = density ? "closed" : "open", + "lock_status" = locked ? "locked" : "unlocked" + )) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) /obj/machinery/door/airlock/open(surpress_send) @@ -79,10 +77,10 @@ SSradio.remove_object(src, frequency) if(new_frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK) + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) /obj/machinery/door/airlock/Destroy() - if(frequency && SSradio) + if(frequency) SSradio.remove_object(src,frequency) return ..() @@ -97,7 +95,7 @@ var/id_tag var/master_tag - var/frequency = 1449 + var/frequency = FREQ_AIRLOCK_CONTROL var/datum/radio_frequency/radio_connection @@ -115,36 +113,34 @@ icon_state = "airlock_sensor_off" /obj/machinery/airlock_sensor/attack_hand(mob/user) - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = master_tag - signal.data["command"] = "cycle" + var/datum/signal/signal = new(list( + "tag" = master_tag, + "command" = "cycle" + )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) flick("airlock_sensor_cycle", src) /obj/machinery/airlock_sensor/process() if(on) - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = id_tag - signal.data["timestamp"] = world.time - var/datum/gas_mixture/air_sample = return_air() - var/pressure = round(air_sample.return_pressure(),0.1) alert = (pressure < ONE_ATMOSPHERE*0.8) - signal.data["pressure"] = num2text(pressure) + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "pressure" = num2text(pressure) + )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) update_icon() /obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK) + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) /obj/machinery/airlock_sensor/Initialize() . = ..() @@ -152,4 +148,4 @@ /obj/machinery/airlock_sensor/Destroy() SSradio.remove_object(src,frequency) - return ..() + return ..() \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 4cd7e7f0fe..b216d1752f 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -53,7 +53,7 @@ radio = new(src) radio.keyslot = new radio_key - radio.subspace_transmission = 1 + radio.subspace_transmission = TRUE radio.canhear_range = 0 radio.recalculateChannels() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 085b55c2e1..9c28be28b7 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -44,8 +44,7 @@ /obj/item/grenade/chem_grenade/glitter/blue = 1, /obj/item/grenade/chem_grenade/glitter/white = 1, /obj/item/toy/eightball = 2, - /obj/item/toy/windupToolbox = 2, - /obj/item/toy/sword/cx = 2) + /obj/item/toy/windupToolbox = 2) light_color = LIGHT_COLOR_GREEN @@ -418,17 +417,17 @@ dat += "
You ran out of food and starved." if(emagged) user.nutrition = 0 //yeah you pretty hongry - to_chat(user, "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.") + to_chat(user, "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.") if(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." if(emagged) var/mob/living/M = user M.adjust_fire_stacks(5) M.IgniteMob() //flew into a star, so you're on fire - to_chat(user, "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.") + to_chat(user, "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.") if(emagged) - to_chat(user, "You're never going to make it to Orion...") + to_chat(user, "You're never going to make it to Orion...") user.death() emagged = FALSE //removes the emagged status after you lose gameStatus = ORION_STATUS_START diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index f5115c7e2a..94f5e63afb 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -6,7 +6,7 @@ icon_keyboard = "atmos_key" var/list/priority_alarms = list() var/list/minor_alarms = list() - var/receive_frequency = 1437 + var/receive_frequency = FREQ_ATMOS_ALARMS var/datum/radio_frequency/radio_connection light_color = LIGHT_COLOR_CYAN @@ -57,10 +57,10 @@ /obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency) SSradio.remove_object(src, receive_frequency) receive_frequency = new_frequency - radio_connection = SSradio.add_object(src, receive_frequency, GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA) /obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal) - if(!signal || signal.encryption) + if(!signal) return var/zone = signal.data["zone"] diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index a4881546cf..3c53c395f4 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -11,7 +11,7 @@ var/on = TRUE var/id_tag - var/frequency = 1441 + var/frequency = FREQ_ATMOS_STORAGE var/datum/radio_frequency/radio_connection /obj/machinery/air_sensor/update_icon() @@ -19,31 +19,29 @@ /obj/machinery/air_sensor/process_atmos() if(on) - var/datum/signal/signal = new var/datum/gas_mixture/air_sample = return_air() - signal.transmission_method = 1 //radio signal - signal.data = list( + var/datum/signal/signal = new(list( "sigtype" = "status", "id_tag" = id_tag, "timestamp" = world.time, "pressure" = air_sample.return_pressure(), "temperature" = air_sample.temperature, "gases" = list() - ) + )) var/total_moles = air_sample.total_moles() if(total_moles) for(var/gas_id in air_sample.gases) var/gas_name = air_sample.gases[gas_id][GAS_META][META_GAS_NAME] signal.data["gases"][gas_name] = air_sample.gases[gas_id][MOLES] / total_moles * 100 - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) /obj/machinery/air_sensor/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) /obj/machinery/air_sensor/Initialize() . = ..() @@ -66,7 +64,7 @@ icon_keyboard = "atmos_key" circuit = /obj/item/circuitboard/computer/atmos_control - var/frequency = 1441 + var/frequency = FREQ_ATMOS_STORAGE var/list/sensors = list( "n2_sensor" = "Nitrogen Tank", "o2_sensor" = "Oxygen Tank", @@ -117,7 +115,7 @@ return data /obj/machinery/computer/atmos_control/receive_signal(datum/signal/signal) - if(!signal || signal.encryption) + if(!signal) return var/id_tag = signal.data["id_tag"] @@ -129,7 +127,7 @@ /obj/machinery/computer/atmos_control/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) ///////////////////////////////////////////////////////////// // LARGE TANK CONTROL @@ -138,7 +136,7 @@ /obj/machinery/computer/atmos_control/tank var/input_tag var/output_tag - frequency = 1441 + frequency = FREQ_ATMOS_STORAGE circuit = /obj/item/circuitboard/computer/atmos_control/tank var/list/input_info @@ -147,7 +145,7 @@ // This hacky madness is the evidence of the fact that a lot of machines were never meant to be constructable, im so sorry you had to see this /obj/machinery/computer/atmos_control/tank/proc/reconnect(mob/user) var/list/IO = list() - var/datum/radio_frequency/freq = SSradio.return_frequency(1441) + var/datum/radio_frequency/freq = SSradio.return_frequency(FREQ_ATMOS_STORAGE) var/list/devices = freq.devices["_default"] for(var/obj/machinery/atmospherics/components/unary/vent_pump/U in devices) var/list/text = splittext(U.id_tag, "_") @@ -194,10 +192,7 @@ /obj/machinery/computer/atmos_control/tank/ui_act(action, params) if(..() || !radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 - signal.source = src - signal.data = list("sigtype" = "command") + var/datum/signal/signal = new(list("sigtype" = "command")) switch(action) if("reconnect") reconnect(usr) @@ -214,10 +209,10 @@ target = CLAMP(target, 0, 50 * ONE_ATMOSPHERE) signal.data += list("tag" = output_tag, "set_internal_pressure" = target) . = TRUE - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) /obj/machinery/computer/atmos_control/tank/receive_signal(datum/signal/signal) - if(!signal || signal.encryption) + if(!signal) return var/id_tag = signal.data["tag"] @@ -227,4 +222,4 @@ else if(output_tag == id_tag) output_info = signal.data else - ..(signal) \ No newline at end of file + ..(signal) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index a8199190fd..7c790f63de 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -283,6 +283,9 @@ if(!is_servant_of_ratvar(user)) to_chat(user, "[src]'s keys are in a language foreign to you, and you don't understand anything on its screen.") return + if(clockwork_ark_active()) + to_chat(user, "The Ark is active, and [src] has shut down.") + return . = ..() /datum/action/innate/servant_warp @@ -311,6 +314,9 @@ else if(isspaceturf(T)) to_chat(user, "[prob(1) ? "Servant cannot into space." : "You can't teleport into space."]") return + else if(T.flags_1 & NOJAUNT_1) + to_chat(user, "This tile is blessed by holy water and deflects the warp.") + return var/area/AR = get_area(T) if(!AR.clockwork_warp_allowed) to_chat(user, "[AR.clockwork_warp_fail]") diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 27f24b7902..9823df5fc8 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -28,7 +28,6 @@ var/const/STATE_TOGGLE_EMERGENCY = 10 var/const/STATE_PURCHASE = 11 - var/status_display_freq = "1435" var/stat_msg1 var/stat_msg2 @@ -131,7 +130,6 @@ if(authenticated==2) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) make_announcement(usr) - deadchat_broadcast("[usr.name] made an priority announcement.", usr) if("crossserver") if(authenticated==2) @@ -139,6 +137,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) return + var/input = stripped_multiline_input(usr, "Please choose a message to transmit to allied stations. Please be aware that this process is very expensive, and abuse will lead to... termination.", "Send a message to an allied station.", "") if(!input || !(usr in view(1,src))) return @@ -232,7 +231,7 @@ log_game("[key_name(usr)] answered [currmsg.title] comm message. Answer : [currmsg.answered]") if(currmsg) currmsg.answer_callback.Invoke() - + state = STATE_VIEWMESSAGE if("status") state = STATE_STATUSDISPLAY @@ -475,8 +474,9 @@ if (authenticated==2) dat += "

Captain Functions" dat += "
\[ Make a Captain's Announcement \]" - if(CONFIG_GET(string/cross_server_address)) - dat += "
\[ Send a message to an allied station \]" + var/cross_servers_count = length(CONFIG_GET(keyed_string_list/cross_server)) + if(cross_servers_count) + dat += "
\[ Send a message to [cross_servers_count == 1 ? "an " : ""]allied station[cross_servers_count > 1 ? "s" : ""] \]" if(SSmapping.config.allow_custom_shuttles) dat += "
\[ Purchase Shuttle \]" dat += "
\[ Change Alert Level \]" @@ -701,19 +701,16 @@ if(!input || !user.canUseTopic(src)) return SScommunications.make_announcement(user, is_silicon, input) + deadchat_broadcast("[user.name] made an priority announcement.", user) /obj/machinery/computer/communications/proc/post_status(command, data1, data2) - var/datum/radio_frequency/frequency = SSradio.return_frequency(1435) + var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS) if(!frequency) return - var/datum/signal/status_signal = new - status_signal.source = src - status_signal.transmission_method = 1 - status_signal.data["command"] = command - + var/datum/signal/status_signal = new(list("command" = command)) switch(command) if("message") status_signal.data["msg1"] = data1 diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 37225cbf19..5bdd6a7b27 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -108,9 +108,9 @@ else scanner_status = "Closed" if(connected.locked) - scanner_status += " (Locked)" + scanner_status += "(Locked)" else - scanner_status += " (Unlocked)" + scanner_status += "(Unlocked)" else @@ -143,27 +143,27 @@ status += "
Pulse Duration:
[radduration]
" status += "
  \> Accuracy:
[chance_to_hit]
" status += "
" // Close statusDisplay div - var/list/buttons = list("Scan ") + var/list/buttons = list("Scan") if(connected) - buttons += " [connected.state_open ? "Close" : "Open"] Scanner " + buttons += "[connected.state_open ? "Close" : "Open"] Scanner" if (connected.state_open) - buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " + buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner" else - buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " + buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner" else - buttons += "Open Scanner Lock Scanner " + buttons += "Open Scanner Lock Scanner" if(viable_occupant) - buttons += "Inject Rejuvenators " + buttons += "Inject Rejuvenators" else - buttons += "Inject Rejuvenators " + buttons += "Inject Rejuvenators" if(diskette) - buttons += "Eject Disk " + buttons += "Eject Disk" else - buttons += "Eject Disk " + buttons += "Eject Disk" if(current_screen == "buffer") - buttons += "Radiation Emitter Menu " + buttons += "Radiation Emitter Menu" else - buttons += "Buffer Menu " + buttons += "Buffer Menu" switch(current_screen) if("working") @@ -182,15 +182,15 @@ if( !buffer_slot || !buffer_slot.len || !buffer_slot["name"] || !((buffer_slot["UI"] && buffer_slot["UE"]) || buffer_slot["SE"]) ) temp_html += "
\tNo Data" if(viable_occupant) - temp_html += "
Save to Buffer " + temp_html += "
Save to Buffer" else - temp_html += "
Save to Buffer " - temp_html += "Clear Buffer " + temp_html += "
Save to Buffer" + temp_html += "Clear Buffer" if(diskette) - temp_html += "Load from Disk " + temp_html += "Load from Disk" else - temp_html += "Load from Disk " - temp_html += "Save to Disk " + temp_html += "Load from Disk" + temp_html += "Save to Disk" else var/ui = buffer_slot["UI"] var/se = buffer_slot["SE"] @@ -204,10 +204,10 @@ temp_html += "
\tBlood Type: [blood_type]" temp_html += "
\tUE: [ue] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant" else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed" if(injectorready < world.time) temp_html += "Injector" else @@ -218,10 +218,10 @@ if(ui) temp_html += "
\tUI: [ui] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant" else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed" if(injectorready < world.time) temp_html += "Injector" else @@ -231,10 +231,10 @@ if(ue && name && blood_type && ui) temp_html += "
\tUI+UE: [ui]/[ue] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant" else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed" if(injectorready < world.time) temp_html += "UI+UE Injector" else @@ -242,10 +242,10 @@ if(se) temp_html += "
\tSE: [se] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant" else - temp_html += "Occupant " - temp_html += "Occupant:Delayed " + temp_html += "Occupant" + temp_html += "Occupant:Delayed" if(injectorready < world.time ) temp_html += "Injector" else @@ -253,18 +253,18 @@ else temp_html += "
\tSE: No Data" if(viable_occupant) - temp_html += "
Save to Buffer " + temp_html += "
Save to Buffer" else - temp_html += "
Save to Buffer " - temp_html += "Clear Buffer " + temp_html += "
Save to Buffer" + temp_html += "Clear Buffer" if(diskette) - temp_html += "Load from Disk " + temp_html += "Load from Disk" else - temp_html += "Load from Disk " + temp_html += "Load from Disk" if(diskette && !diskette.read_only) - temp_html += "Save to Disk " + temp_html += "Save to Disk" else - temp_html += "Save to Disk " + temp_html += "Save to Disk" else temp_html += status temp_html += buttons @@ -528,7 +528,7 @@ var/mob/living/carbon/viable_occupant = null if(connected) viable_occupant = connected.occupant - if(!istype(viable_occupant) || !viable_occupant.dna || (viable_occupant.has_disability(DISABILITY_NOCLONE))) + if(!istype(viable_occupant) || !viable_occupant.dna || (RADIMMUNE in viable_occupant.dna.species.species_traits) || (viable_occupant.has_disability(DISABILITY_NOCLONE))) viable_occupant = null return viable_occupant diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 8679652a10..08210bf706 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -156,8 +156,6 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E ..() var/list/nukeops = get_antagonists(/datum/antagonist/nukeop) var/danger = GLOB.joined_player_list.len - nukeops.len -// var/list/nukeops = get_antagonists(/datum/antagonist/nukeop) -// var/danger = GLOB.joined_player_list.len - nukeops.len danger = CEILING(danger, 10) scaleTC(danger) diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 704576f2c0..9f9791beec 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -173,12 +173,8 @@ if(M.stat == DEAD) if(M.timeofdeath + 6000 < world.time) continue - var/turf/T = get_turf(M) - if(!T) - continue - if(T.z == ZLEVEL_CENTCOM) - continue - L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I + if(is_eligible(I)) + L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L target = L[desc] diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 4328a22222..97830393bd 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -257,4 +257,5 @@ for(var/X in components) var/obj/item/I = X I.forceMove(loc) + ..() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ec89cc514d..b36cc1e4c4 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -34,7 +34,7 @@ #define AIRLOCK_INTEGRITY_N 300 // Normal airlock integrity #define AIRLOCK_INTEGRITY_MULTIPLIER 1.5 // How much reinforced doors health increases -#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection +#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection // CIT CHANGE - CHANGES DEFAULT AIRLOCK DEFLECTION FROM 21 TO 20 #define AIRLOCK_DAMAGE_DEFLECTION_R 30 // Reinforced airlock damage deflection #define NOT_ELECTRIFIED 0 @@ -209,23 +209,27 @@ /obj/machinery/door/airlock/narsie_act() var/turf/T = get_turf(src) var/runed = prob(20) + var/obj/machinery/door/airlock/cult/A if(glass) if(runed) - new/obj/machinery/door/airlock/cult/glass(T) + A = new/obj/machinery/door/airlock/cult/glass(T) else - new/obj/machinery/door/airlock/cult/unruned/glass(T) + A = new/obj/machinery/door/airlock/cult/unruned/glass(T) else if(runed) - new/obj/machinery/door/airlock/cult(T) + A = new/obj/machinery/door/airlock/cult(T) else - new/obj/machinery/door/airlock/cult/unruned(T) + A = new/obj/machinery/door/airlock/cult/unruned(T) + A.name = name qdel(src) /obj/machinery/door/airlock/ratvar_act() //Airlocks become pinion airlocks that only allow servants + var/obj/machinery/door/airlock/clockwork/A if(glass) - new/obj/machinery/door/airlock/clockwork/brass(get_turf(src)) + A = new/obj/machinery/door/airlock/clockwork/brass(get_turf(src)) else - new/obj/machinery/door/airlock/clockwork(get_turf(src)) + A = new/obj/machinery/door/airlock/clockwork(get_turf(src)) + A.name = name qdel(src) /obj/machinery/door/airlock/Destroy() @@ -251,16 +255,13 @@ note = null update_icon() -/obj/machinery/door/airlock/proc/unzap() //for addtimer - justzap = FALSE - /obj/machinery/door/airlock/bumpopen(mob/living/user) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite if(!issilicon(usr)) if(isElectrified()) if(!justzap) if(shock(user, 100)) justzap = TRUE - addtimer(CALLBACK(src, .proc/unzap), 10) + addtimer(VARSET_CALLBACK(src, justzap, FALSE) , 10) return else return @@ -568,6 +569,8 @@ /obj/machinery/door/airlock/examine(mob/user) ..() + if(emagged) + to_chat(user, "Its access panel is smoking slightly.") if(charge && !panel_open && in_range(user, src)) to_chat(user, "The maintenance panel seems haphazardly fastened.") if(charge && panel_open) @@ -1231,7 +1234,6 @@ if(!open()) update_icon(AIRLOCK_CLOSED, 1) emagged = TRUE - desc = "Its access panel is smoking slightly." lights = FALSE locked = TRUE loseMainPower() diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index f303b892b3..08e5b42a46 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -79,69 +79,49 @@ opacity = 0 glass = TRUE -/obj/machinery/door/airlock/glass_command - icon = 'icons/obj/doors/airlocks/station/command.dmi' +/obj/machinery/door/airlock/command/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_com glass = TRUE normal_integrity = 400 -/obj/machinery/door/airlock/glass_engineering - icon = 'icons/obj/doors/airlocks/station/engineering.dmi' +/obj/machinery/door/airlock/engineering/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_eng glass = TRUE -/obj/machinery/door/airlock/glass_security - icon = 'icons/obj/doors/airlocks/station/security.dmi' +/obj/machinery/door/airlock/security/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_sec glass = TRUE normal_integrity = 400 -/obj/machinery/door/airlock/glass_security/abandoned +/obj/machinery/door/airlock/security/glass/abandoned abandoned = TRUE -/obj/machinery/door/airlock/glass_medical - icon = 'icons/obj/doors/airlocks/station/medical.dmi' +/obj/machinery/door/airlock/medical/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_med glass = TRUE -/obj/machinery/door/airlock/glass_research - icon = 'icons/obj/doors/airlocks/station/research.dmi' +/obj/machinery/door/airlock/research/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_research glass = TRUE -/obj/machinery/door/airlock/glass_mining - icon = 'icons/obj/doors/airlocks/station/mining.dmi' +/obj/machinery/door/airlock/mining/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_min glass = TRUE -/obj/machinery/door/airlock/glass_atmos - icon = 'icons/obj/doors/airlocks/station/atmos.dmi' +/obj/machinery/door/airlock/atmos/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_atmo glass = TRUE -/obj/machinery/door/airlock/glass_science - icon = 'icons/obj/doors/airlocks/station/science.dmi' +/obj/machinery/door/airlock/science/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_science glass = TRUE -/obj/machinery/door/airlock/glass_virology - icon = 'icons/obj/doors/airlocks/station/virology.dmi' +/obj/machinery/door/airlock/virology/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_viro glass = TRUE -/obj/machinery/door/airlock/glass_maintenance - icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' +/obj/machinery/door/airlock/maintenance/glass opacity = 0 - assemblytype = /obj/structure/door_assembly/door_assembly_mai glass = TRUE /obj/machinery/door/airlock/maintenance/external/glass diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 5630b3ffb0..1649082138 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -7,7 +7,7 @@ glass = TRUE var/datum/radio_frequency/air_connection - var/air_frequency = 1437 + var/air_frequency = FREQ_ATMOS_ALARMS autoclose = FALSE /obj/machinery/door/airlock/alarmlock/New() @@ -22,7 +22,7 @@ /obj/machinery/door/airlock/alarmlock/Initialize() . = ..() SSradio.remove_object(src, air_frequency) - air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM) + air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM) open() /obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) @@ -41,4 +41,4 @@ close() if("minor", "clear") autoclose = FALSE - open() + open() \ No newline at end of file diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index a622f0af3d..bf3baf8b6f 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -112,8 +112,8 @@ return 0 if(!forced) - Radio.set_frequency(GLOB.SEC_FREQ) - Radio.talk_into(src, "Timer has expired. Releasing prisoner.", GLOB.SEC_FREQ, get_default_language()) + Radio.set_frequency(FREQ_SECURITY) + Radio.talk_into(src, "Timer has expired. Releasing prisoner.", FREQ_SECURITY) timing = FALSE activation_time = null diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 30ae436289..85ec73cdc6 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -32,11 +32,27 @@ var/datum/effect_system/spark_spread/spark_system var/damage_deflection = 10 var/real_explosion_block //ignore this, just use explosion_block + var/red_alert_access = FALSE //if TRUE, this door will always open on red alert /obj/machinery/door/examine(mob/user) ..() + if(red_alert_access) + if(GLOB.security_level >= SEC_LEVEL_RED) + to_chat(user, "Due to a security threat, its access requirements have been lifted!") + else + to_chat(user, "In the event of a red alert, its access requirements will automatically lift.") to_chat(user, "Its maintenance panel is screwed in place.") +/obj/machinery/door/check_access(access) + if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED) + return TRUE + return ..() + +/obj/machinery/door/check_access_list(list/access_list) + if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED) + return TRUE + return ..() + /obj/machinery/door/New() ..() if(density) @@ -96,7 +112,7 @@ /obj/machinery/door/Move() var/turf/T = loc - ..() + . = ..() move_update_air(T) /obj/machinery/door/CanPass(atom/movable/mover, turf/target) @@ -195,7 +211,7 @@ /obj/machinery/door/emp_act(severity) if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) ) INVOKE_ASYNC(src, .proc/open) - if(prob(40/severity)) + if(prob(severity*10 - 20)) if(secondsElectrified == 0) secondsElectrified = -1 shockedby += "\[[time_stamp()]\]EM Pulse" diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 0cd33b1925..77267a49a4 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -26,4 +26,4 @@ /obj/machinery/door/poddoor/shutters/close(ignorepower = 0) ..() - layer = CLOSED_DOOR_LAYER + layer = CLOSED_DOOR_LAYER \ No newline at end of file diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index 4b7ec4b3dd..2960335813 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -1,25 +1,25 @@ -/obj/machinery/door/unpowered - +/obj/machinery/door/unpowered + /obj/machinery/door/unpowered/CollidedWith(atom/movable/AM) - if(src.locked) - return - ..() - return - - -/obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params) - if(locked) - return - else - return ..() - -/obj/machinery/door/unpowered/emag_act() - return - -/obj/machinery/door/unpowered/shuttle - icon = 'icons/turf/shuttle.dmi' - name = "door" - icon_state = "door1" - opacity = 1 + if(src.locked) + return + ..() + return + + +/obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params) + if(locked) + return + else + return ..() + +/obj/machinery/door/unpowered/emag_act() + return + +/obj/machinery/door/unpowered/shuttle + icon = 'icons/turf/shuttle.dmi' + name = "door" + icon_state = "door1" + opacity = 1 density = TRUE explosion_block = 1 \ No newline at end of file diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index dce884b794..bd1a553863 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -192,7 +192,8 @@ add_atom_colour("#7D1919", FIXED_COLOUR_PRIORITY) /obj/machinery/door/window/ratvar_act() - new/obj/machinery/door/window/clockwork(src.loc, dir) + var/obj/machinery/door/window/clockwork/C = new(loc, dir) + C.name = name qdel(src) /obj/machinery/door/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index c13dfc9b88..cdfb72a6ef 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -19,6 +19,10 @@ GLOBAL_LIST_EMPTY(doppler_arrays) GLOB.doppler_arrays -= src return ..() +/obj/machinery/doppler_array/examine(mob/user) + ..() + to_chat(user, "Its dish is facing to the [dir2text(dir)].") + /obj/machinery/doppler_array/process() return PROCESS_KILL diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index f34191370d..35b700801d 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -17,7 +17,7 @@ var/target_state = AIRLOCK_STATE_CLOSED var/sensor_pressure = null -/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal, receive_method, receive_param) +/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal) var/receive_tag = signal.data["tag"] if(!receive_tag) return @@ -68,19 +68,17 @@ state = AIRLOCK_STATE_CLOSED process_again = 1 else - var/datum/signal/signal = new - signal.data["tag"] = interior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) + post_signal(new /datum/signal(list( + "tag" = interior_door_tag, + "command" = "secure_close" + ))) else if(memory["pump_status"] != "off") - var/datum/signal/signal = new - signal.data = list( + post_signal(new /datum/signal(list( "tag" = airpump_tag, "power" = 0, - "sigtype"="command" - ) - post_signal(signal) + "sigtype" = "command" + ))) if(AIRLOCK_STATE_PRESSURIZE) if(target_state < state) @@ -89,16 +87,15 @@ state = AIRLOCK_STATE_INOPEN process_again = 1 else - var/datum/signal/signal = new - signal.data["tag"] = interior_door_tag - signal.data["command"] = "secure_open" - post_signal(signal) + post_signal(new /datum/signal(list( + "tag" = interior_door_tag, + "command" = "secure_open" + ))) else - var/datum/signal/signal = new - signal.data = list( + var/datum/signal/signal = new(list( "tag" = airpump_tag, - "sigtype"="command" - ) + "sigtype" = "command" + )) if(memory["pump_status"] == "siphon") signal.data["stabalize"] = 1 else if(memory["pump_status"] != "release") @@ -114,29 +111,27 @@ state = AIRLOCK_STATE_DEPRESSURIZE process_again = 1 else - var/datum/signal/signal = new - signal.data["tag"] = interior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) + post_signal(new /datum/signal(list( + "tag" = interior_door_tag, + "command" = "secure_close" + ))) else if(target_state < state) if(memory["exterior_status"] == "closed") state = AIRLOCK_STATE_PRESSURIZE process_again = 1 else - var/datum/signal/signal = new - signal.data["tag"] = exterior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) + post_signal(new /datum/signal(list( + "tag" = exterior_door_tag, + "command" = "secure_close" + ))) else if(memory["pump_status"] != "off") - var/datum/signal/signal = new - signal.data = list( + post_signal(new /datum/signal(list( "tag" = airpump_tag, "power" = 0, - "sigtype"="command" - ) - post_signal(signal) + "sigtype" = "command" + ))) if(AIRLOCK_STATE_DEPRESSURIZE) var/target_pressure = ONE_ATMOSPHERE*0.05 @@ -148,10 +143,10 @@ if(memory["exterior_status"] == "open") state = AIRLOCK_STATE_OUTOPEN else - var/datum/signal/signal = new - signal.data["tag"] = exterior_door_tag - signal.data["command"] = "secure_open" - post_signal(signal) + post_signal(new /datum/signal(list( + "tag" = exterior_door_tag, + "command" = "secure_open" + ))) else if(target_state < state) state = AIRLOCK_STATE_CLOSED process_again = 1 @@ -159,12 +154,10 @@ state = AIRLOCK_STATE_CLOSED process_again = 1 else - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data = list( + var/datum/signal/signal = new(list( "tag" = airpump_tag, - "sigtype"="command" - ) + "sigtype" = "command" + )) if(memory["pump_status"] == "release") signal.data["purge"] = 1 else if(memory["pump_status"] != "siphon") @@ -181,19 +174,17 @@ state = AIRLOCK_STATE_CLOSED process_again = 1 else - var/datum/signal/signal = new - signal.data["tag"] = exterior_door_tag - signal.data["command"] = "secure_close" - post_signal(signal) + post_signal(new /datum/signal(list( + "tag" = exterior_door_tag, + "command" = "secure_close" + ))) else if(memory["pump_status"] != "off") - var/datum/signal/signal = new - signal.data = list( + post_signal(new /datum/signal(list( "tag" = airpump_tag, "power" = 0, - "sigtype"="command" - ) - post_signal(signal) + "sigtype" = "command" + ))) memory["sensor_pressure"] = sensor_pressure memory["processing"] = state != target_state @@ -209,7 +200,7 @@ name = "airlock console" density = FALSE - frequency = 1449 + frequency = FREQ_AIRLOCK_CONTROL power_channel = ENVIRON // Setup parameters only @@ -293,4 +284,4 @@ [state_options]"} - return output + return output \ No newline at end of file diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 16691160f2..2ead1d99d7 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -11,7 +11,7 @@ /datum/computer/file/embedded_program/proc/receive_user_command(command) -/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param) +/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal) return null /datum/computer/file/embedded_program/process() @@ -43,13 +43,9 @@ /obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) return 0 -/obj/machinery/embedded_controller/receive_signal(datum/signal/signal, receive_method, receive_param) - if(!signal || signal.encryption) - return - - if(program) - program.receive_signal(signal, receive_method, receive_param) - //spawn(5) program.process() //no, program.process sends some signals and machines respond and we here again and we lag -rastaf0 +/obj/machinery/embedded_controller/receive_signal(datum/signal/signal) + if(istype(signal) && program) + program.receive_signal(signal) /obj/machinery/embedded_controller/Topic(href, href_list) if(..()) diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm index af945c7ccb..2a5faef0e1 100644 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm @@ -5,34 +5,27 @@ /datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command) switch(command) if("vent_inactive") - var/datum/signal/signal = new - signal.data = list( + post_signal(new /datum/signal(list( "tag" = airpump_tag, - "sigtype"="command" - ) - signal.data["power"] = 0 - post_signal(signal) + "sigtype" = "command", + "power" = 0 + ))) if("vent_pump") - var/datum/signal/signal = new - signal.data = list( + post_signal(new /datum/signal(list( "tag" = airpump_tag, - "sigtype"="command" - ) - signal.data["stabalize"] = 1 - signal.data["power"] = 1 - post_signal(signal) + "sigtype" = "command", + "stabalize" = 1, + "power" = 1 + ))) if("vent_clear") - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data = list( + post_signal(new /datum/signal(list( "tag" = airpump_tag, - "sigtype"="command" - ) - signal.data["purge"] = 1 - signal.data["power"] = 1 - post_signal(signal) + "sigtype" = "command", + "purge" = 1, + "power" = 1 + ))) /datum/computer/file/embedded_program/simple_vent_controller/process() return 0 @@ -45,7 +38,7 @@ name = "vent controller" density = FALSE - frequency = 1229 + frequency = FREQ_ATMOS_CONTROL power_channel = ENVIRON // Setup parameters only diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 198d368d59..7aa3859cdf 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -213,4 +213,4 @@ to_chat(user, "[attached ? attached : "No one"] is attached.") #undef IV_TAKING -#undef IV_INJECTING +#undef IV_INJECTING \ No newline at end of file diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index aa3bf465f2..8263795c60 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -15,7 +15,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 50 - var/freq = 1449 // radio frequency + var/freq = FREQ_MAGNETS // radio frequency var/electricity_level = 1 // intensity of the magnetic pull var/magnetic_field = 1 // the range of magnetic attraction var/code = 0 // frequency code, they should be different unless you have a group of magnets working together or something @@ -33,7 +33,7 @@ var/turf/T = loc hide(T.intact) center = T - SSradio.add_object(src, freq, GLOB.RADIO_MAGNETS) + SSradio.add_object(src, freq, RADIO_MAGNETS) return INITIALIZE_HINT_LATELOAD /obj/machinery/magnetic_module/LateInitialize() @@ -198,7 +198,7 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 45 - var/frequency = 1449 + var/frequency = FREQ_MAGNETS var/code = 0 var/list/magnets = list() var/title = "Magnetic Control Console" @@ -224,7 +224,7 @@ if(path) // check for default path filter_path() // renders rpath - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_MAGNETS) + radio_connection = SSradio.add_object(src, frequency, RADIO_MAGNETS) /obj/machinery/magnetic_controller/Destroy() SSradio.remove_object(src, frequency) @@ -278,11 +278,7 @@ if(href_list["radio-op"]) // Prepare signal beforehand, because this is a radio operation - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code + var/datum/signal/signal = new(list("code" = code)) // Apply any necessary commands switch(href_list["radio-op"]) @@ -302,7 +298,7 @@ // Broadcast the signal - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_MAGNETS) + radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) spawn(1) updateUsrDialog() // pretty sure this increases responsiveness @@ -345,11 +341,7 @@ looping = 1 // Prepare the radio signal - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code + var/datum/signal/signal = new(list("code" = code)) if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list! pathpos = 1 @@ -370,7 +362,7 @@ // Broadcast the signal spawn() - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_MAGNETS) + radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) if(speed == 10) sleep(1) @@ -393,4 +385,4 @@ if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore rpath += copytext(path, i, i+1) // else, add to list - // there doesn't HAVE to be separators but it makes paths syntatically visible \ No newline at end of file + // there doesn't HAVE to be separators but it makes paths syntatically visible diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index e62d25e5fa..fe2926f150 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -15,7 +15,7 @@ var/open = FALSE // true if cover is open var/locked = TRUE // true if controls are locked - var/freq = 1445 // radio frequency + var/freq = FREQ_NAV_BEACON var/location = "" // location response text var/list/codes // assoc. list of transponder codes var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value" @@ -205,4 +205,4 @@ Transponder Codes:
    "} codes[newkey] = newval - updateDialog() + updateDialog() \ No newline at end of file diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index bf3c94646c..6a04ca0886 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -15,17 +15,17 @@ var/teleporting = 0 //if it's in the process of teleporting var/power_efficiency = 1 var/obj/machinery/quantumpad/linked_pad - + //mapping var/static/list/mapped_quantum_pads = list() var/map_pad_id = "" as text //what's my name var/map_pad_link_id = "" as text //who's my friend - + /obj/machinery/quantumpad/Initialize() . = ..() if(map_pad_id) mapped_quantum_pads[map_pad_id] = src - + /obj/machinery/quantumpad/Destroy() mapped_quantum_pads -= map_pad_id return ..() diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index f0e6eb2df0..c65b9a321a 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -315,13 +315,13 @@ GLOBAL_LIST_EMPTY(allConsoles) var/radio_freq switch(text2num(href_list["emergency"])) if(1) //Security - radio_freq = GLOB.SEC_FREQ + radio_freq = FREQ_SECURITY emergency = "Security" if(2) //Engineering - radio_freq = GLOB.ENG_FREQ + radio_freq = FREQ_ENGINEERING emergency = "Engineering" if(3) //Medical - radio_freq = GLOB.MED_FREQ + radio_freq = FREQ_MEDICAL emergency = "Medical" if(radio_freq) Radio.set_frequency(radio_freq) @@ -341,28 +341,28 @@ GLOBAL_LIST_EMPTY(allConsoles) sending += "
    " screen = 7 //if it's successful, this will get overrwritten (7 = unsufccessfull, 6 = successfull) if (sending) - var/pass = 0 - for (var/obj/machinery/message_server/MS in GLOB.machines) - if(!MS.active) - continue - MS.send_rc_message(href_list["department"],department,log_msg,msgStamped,msgVerified,priority) - pass = 1 + var/pass = FALSE + var/datum/data_rc_msg/log = new(href_list["department"], department, log_msg, msgStamped, msgVerified, priority) + for (var/obj/machinery/telecomms/message_server/MS in GLOB.telecomms_list) + if (MS.toggled) + MS.rc_msgs += log + pass = TRUE if(pass) var/radio_freq = 0 switch(href_list["department"]) if("bridge") - radio_freq = GLOB.COMM_FREQ + radio_freq = FREQ_COMMAND if("medbay") - radio_freq = GLOB.MED_FREQ + radio_freq = FREQ_MEDICAL if("science") - radio_freq = GLOB.SCI_FREQ + radio_freq = FREQ_SCIENCE if("engineering") - radio_freq = GLOB.ENG_FREQ + radio_freq = FREQ_ENGINEERING if("security") - radio_freq = GLOB.SEC_FREQ + radio_freq = FREQ_SECURITY if("cargobay" || "mining") - radio_freq = GLOB.SUPP_FREQ + radio_freq = FREQ_SUPPLY Radio.set_frequency(radio_freq) var/authentic if(msgVerified || msgStamped) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index cdbdb195cc..b681845a10 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -22,7 +22,7 @@ /obj/structure/emergency_shield/Move() var/turf/T = loc - ..() + . = ..() move_update_air(T) /obj/structure/emergency_shield/emp_act(severity) @@ -180,19 +180,25 @@ anchored = FALSE else if(W.GetID()) - if(allowed(user)) + if(allowed(user) && !emagged) locked = !locked to_chat(user, "You [locked ? "lock" : "unlock"] the controls.") + else if(emagged) + to_chat(user, "Error, access controller damaged!") else to_chat(user, "Access denied.") else return ..() -/obj/machinery/shieldgen/emag_act() - if(!(stat & BROKEN)) - stat |= BROKEN - update_icon() +/obj/machinery/shieldgen/emag_act(mob/user) + if(emagged) + to_chat(user, "The access controller is damaged!") + return + emagged = TRUE + locked = FALSE + playsound(src, "sparks", 100, 1) + to_chat(user, "You short out the access controller.") /obj/machinery/shieldgen/update_icon() if(active) @@ -337,9 +343,11 @@ default_unfasten_wrench(user, W, 0) else if(W.GetID()) - if(allowed(user)) + if(allowed(user) && !emagged) locked = !locked to_chat(user, "You [src.locked ? "lock" : "unlock"] the controls.") + else if(emagged) + to_chat(user, "Error, access controller damaged!") else to_chat(user, "Access denied.") @@ -372,6 +380,14 @@ update_activity() add_fingerprint(user) +/obj/machinery/shieldwallgen/emag_act(mob/user) + if(emagged) + to_chat(user, "The access controller is damaged!") + return + emagged = TRUE + locked = FALSE + playsound(src, "sparks", 100, 1) + to_chat(user, "You short out the access controller.") //////////////Containment Field START /obj/machinery/shieldwall diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index bdbee201b8..706e14cae6 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -32,7 +32,7 @@ var/index1 // display index for scrolling messages or 0 if non-scrolling var/index2 - var/frequency = 1435 // radio frequency + var/frequency = FREQ_STATUS_DISPLAYS var/supply_display = 0 // true if a supply shuttle display var/shuttle_id // Id used for "generic shuttle timer" mode diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index aebccdddd2..7d795c9ce2 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -53,132 +53,141 @@ **/ +// Subtype of /datum/signal with additional processing information. +/datum/signal/subspace + transmission_method = TRANSMISSION_SUBSPACE + var/server_type = /obj/machinery/telecomms/server + var/datum/signal/subspace/original + var/list/levels -/proc/Broadcast_Message(var/atom/movable/AM, - var/vmask, var/obj/item/device/radio/radio, - var/message, var/name, var/job, var/realname, - var/data, var/compression, var/list/level, var/freq, var/list/spans, - var/verb_say, var/verb_ask, var/verb_exclaim, var/verb_yell, var/datum/language/language) +/datum/signal/subspace/New(data) + src.data = data || list() +/datum/signal/subspace/proc/copy() + var/datum/signal/subspace/copy = new + copy.original = src + copy.source = source + copy.levels = levels + copy.frequency = frequency + copy.server_type = server_type + copy.transmission_method = transmission_method + copy.data = data.Copy() + return copy + +/datum/signal/subspace/proc/mark_done() + var/datum/signal/subspace/current = src + while (current) + current.data["done"] = TRUE + current = current.original + +/datum/signal/subspace/proc/send_to_receivers() + for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list) + R.receive_signal(src) + for(var/obj/machinery/telecomms/allinone/R in GLOB.telecomms_list) + R.receive_signal(src) + +/datum/signal/subspace/proc/broadcast() set waitfor = FALSE - message = copytext(message, 1, MAX_BROADCAST_LEN) +// Vocal transmissions (i.e. using saycode). +// Despite "subspace" in the name, these transmissions can also be RADIO +// (intercoms and SBRs) or SUPERSPACE (CentCom). +/datum/signal/subspace/vocal + var/atom/movable/virtualspeaker/virt + var/datum/language/language +/datum/signal/subspace/vocal/New( + obj/source, // the originating radio + frequency, // the frequency the signal is taking place on + atom/movable/virtualspeaker/speaker, // representation of the method's speaker + datum/language/language, // the langauge of the message + message, // the text content of the message + spans // the list of spans applied to the message +) + src.source = source + src.frequency = frequency + src.language = language + virt = speaker + var/datum/language/lang_instance = GLOB.language_datum_instances[language] + data = list( + "name" = speaker.name, + "job" = speaker.job, + "message" = message, + "compression" = rand(35, 65), + "language" = lang_instance.name, + "spans" = spans + ) + var/turf/T = get_turf(source) + levels = list(T.z) + +/datum/signal/subspace/vocal/copy() + var/datum/signal/subspace/vocal/copy = new(source, frequency, virt, language) + copy.original = src + copy.data = data.Copy() + copy.levels = levels + return copy + +// This is the meat function for making radios hear vocal transmissions. +/datum/signal/subspace/vocal/broadcast() + set waitfor = FALSE + + // Perform final composition steps on the message. + var/message = copytext(data["message"], 1, MAX_BROADCAST_LEN) if(!message) return - - var/list/radios = list() - - var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null) - virt.name = name - virt.job = job - virt.source = AM - virt.radio = radio - virt.verb_say = verb_say - virt.verb_ask = verb_ask - virt.verb_exclaim = verb_exclaim - virt.verb_yell = verb_yell - + var/compression = data["compression"] if(compression > 0) message = Gibberish(message, compression + 40) - // --- Broadcast only to intercom devices --- + // Assemble the list of radios + var/list/radios = list() + switch (transmission_method) + if (TRANSMISSION_SUBSPACE) + // Reaches any radios on the levels + for(var/obj/item/device/radio/R in GLOB.all_radios["[frequency]"]) + if(R.can_receive(frequency, levels)) + radios += R - if(data == 1) - for(var/obj/item/device/radio/intercom/R in GLOB.all_radios["[freq]"]) - if(R.receive_range(freq, level) > -1) - radios += R + // Syndicate radios can hear all well-known radio channels + if (num2text(frequency) in GLOB.reverseradiochannels) + for(var/obj/item/device/radio/R in GLOB.all_radios["[FREQ_SYNDICATE]"]) + if(R.can_receive(FREQ_SYNDICATE, list(R.z))) + radios |= R - // --- Broadcast only to intercoms and station-bounced radios --- + if (TRANSMISSION_RADIO) + // Only radios not currently in subspace mode + for(var/obj/item/device/radio/R in GLOB.all_radios["[frequency]"]) + if(!R.subspace_transmission && R.can_receive(frequency, levels)) + radios += R - else if(data == 2) + if (TRANSMISSION_SUPERSPACE) + // Only radios which are independent + for(var/obj/item/device/radio/R in GLOB.all_radios["[frequency]"]) + if(R.independent && R.can_receive(frequency, levels)) + radios += R - for(var/obj/item/device/radio/R in GLOB.all_radios["[freq]"]) - if(R.subspace_transmission) - continue + // From the list of radios, find all mobs who can hear those. + var/list/receive = get_mobs_in_radio_ranges(radios) - if(R.receive_range(freq, level) > -1) - radios += R - - // --- This space left blank for Syndicate data --- - - // --- CentCom radio, yo. --- - - else if(data == 5) - - for(var/obj/item/device/radio/R in GLOB.all_radios["[freq]"]) - if(!R.independent) - continue - - if(R.receive_range(freq, level) > -1) - radios += R - - // --- Broadcast to ALL radio devices --- - - else - for(var/obj/item/device/radio/R in GLOB.all_radios["[freq]"]) - if(R.receive_range(freq, level) > -1) - radios += R - - var/freqtext = num2text(freq) - for(var/obj/item/device/radio/R in GLOB.all_radios["[GLOB.SYND_FREQ]"]) //syndicate radios use magic that allows them to hear everything. this was already the case, now it just doesn't need the allinone anymore. solves annoying bugs that aren't worth solving. - if(R.receive_range(GLOB.SYND_FREQ, list(R.z)) > -1 && freqtext in GLOB.reverseradiochannels) - radios |= R - - // Get a list of mobs who can hear from the radios we collected. - var/list/receive = get_mobs_in_radio_ranges(radios) //this includes all hearers. - - for(var/mob/R in receive) //Filter receiver list. - if (R.client && R.client.holder && !(R.client.prefs.chat_toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. + // Cut out mobs with clients who are admins and have radio chatter disabled. + for(var/mob/R in receive) + if (R.client && R.client.holder && !(R.client.prefs.chat_toggles & CHAT_RADIO)) receive -= R - for(var/mob/M in GLOB.player_list) - if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTRADIO)) + // Add observers who have ghost radio enabled. + for(var/mob/dead/observer/M in GLOB.player_list) + if(M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTRADIO)) receive |= M - var/rendered = virt.compose_message(virt, language, message, freq, spans) //Always call this on the virtualspeaker to advoid issues. + // Render the message and have everybody hear it. + // Always call this on the virtualspeaker to avoid issues. + var/spans = data["spans"] + var/rendered = virt.compose_message(virt, language, message, frequency, spans) for(var/atom/movable/hearer in receive) - hearer.Hear(rendered, virt, language, message, freq, spans) + hearer.Hear(rendered, virt, language, message, frequency, spans) + // This following recording is intended for research and feedback in the use of department radio channels if(length(receive)) - // --- This following recording is intended for research and feedback in the use of department radio channels --- - SSblackbox.LogBroadcast(freq) + SSblackbox.LogBroadcast(frequency) - sleep(50) - if(!QDELETED(virt)) //It could happen to YOU - qdel(virt) - -//Use this to test if an obj can communicate with a Telecommunications Network - -/atom/proc/test_telecomms() - var/datum/signal/signal = telecomms_process() - var/turf/position = get_turf(src) - return (position.z in signal.data["level"] && signal.data["done"]) - -/atom/proc/telecomms_process() - - // First, we want to generate a new radio signal - var/datum/signal/signal = new - signal.transmission_method = 2 // 2 would be a subspace transmission. - var/turf/pos = get_turf(src) - - // --- Finally, tag the actual signal with the appropriate values --- - signal.data = list( - "slow" = 0, // how much to sleep() before broadcasting - simulates net lag - "message" = "TEST", - "compression" = rand(45, 50), // If the signal is compressed, compress our message too. - "traffic" = 0, // dictates the total traffic sum that the signal went through - "type" = 4, // determines what type of radio input it is: test broadcast - "reject" = 0, - "done" = 0, - "level" = pos.z // The level it is being broadcasted at. - ) - signal.frequency = 1459// Common channel - - //#### Sending the signal to all subspace receivers ####// - for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list) - R.receive_signal(signal) - - sleep(rand(10,25)) - - return signal + QDEL_IN(virt, 50) // Make extra sure the virtualspeaker gets qdeleted diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm new file mode 100644 index 0000000000..3a4ee731ce --- /dev/null +++ b/code/game/machinery/telecomms/computers/message.dm @@ -0,0 +1,456 @@ +/* + The monitoring computer for the messaging server. + Lets you read PDA and request console messages. +*/ + +// The monitor itself. +/obj/machinery/computer/message_monitor + name = "message monitor console" + desc = "Used to monitor the crew's PDA messages, as well as request console messages." + icon_screen = "comm_logs" + circuit = /obj/item/circuitboard/computer/message_monitor + //Server linked to. + var/obj/machinery/telecomms/message_server/linkedServer = null + //Sparks effect - For emag + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread + //Messages - Saves me time if I want to change something. + var/noserver = "ALERT: No server detected." + var/incorrectkey = "ALERT: Incorrect decryption key!" + var/defaultmsg = "Welcome. Please select an option." + var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" + //Computer properties + var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message + var/hacking = 0 // Is it being hacked into by the AI/Cyborg + var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. + var/auth = 0 // Are they authenticated? + var/optioncount = 7 + // Custom Message Properties + var/customsender = "System Administrator" + var/obj/item/device/pda/customrecepient = null + var/customjob = "Admin" + var/custommessage = "This is a test, please ignore." + + light_color = LIGHT_COLOR_GREEN + +/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) + if(istype(O, /obj/item/screwdriver) && emagged) + //Stops people from just unscrewing the monitor and putting it back to get the console working again. + to_chat(user, "It is too hot to mess with!") + else + return ..() + +/obj/machinery/computer/message_monitor/emag_act(mob/user) + if(emagged) + return + if(!isnull(linkedServer)) + emagged = TRUE + screen = 2 + spark_system.set_up(5, 0, src) + src.spark_system.start() + var/obj/item/paper/monitorkey/MK = new(loc, linkedServer) + // Will help make emagging the console not so easy to get away with. + MK.info += "

    �%@%(*$%&(�&?*(%&�/{}" + var/time = 100 * length(linkedServer.decryptkey) + addtimer(CALLBACK(src, .proc/UnmagConsole), time) + message = rebootmsg + else + to_chat(user, "A no server error appears on the screen.") + +/obj/machinery/computer/message_monitor/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/computer/message_monitor/LateInitialize() + //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. + if(!linkedServer) + for(var/obj/machinery/telecomms/message_server/S in GLOB.telecomms_list) + linkedServer = S + break + +/obj/machinery/computer/message_monitor/attack_hand(mob/living/user) + if(..()) + return + //If the computer is being hacked or is emagged, display the reboot message. + if(hacking || emagged) + message = rebootmsg + var/dat = "
    /
    " + + if(auth) + dat += "

    \[Authenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.toggled ? "\[On\]":"\[Off\]"]

    " + else + dat += "

    \[Unauthenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.toggled ? "\[On\]":"\[Off\]"]

    " + + if(hacking || emagged) + screen = 2 + else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + + switch(screen) + //Main menu + if(0) + // = TAB + var/i = 0 + dat += "
    [++i]. Link To A Server
    " + if(auth) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + dat += "
    ERROR: Server not found!
    " + else + dat += "
    [++i]. View Message Logs
    " + dat += "
    [++i]. View Request Console Logs
    " + dat += "
    [++i]. Clear Message Logs
    " + dat += "
    [++i]. Clear Request Console Logs
    " + dat += "
    [++i]. Set Custom Key
    " + dat += "
    [++i]. Send Admin Message
    " + else + for(var/n = ++i; n <= optioncount; n++) + dat += "
    [n]. ---------------
    " + if(issilicon(usr) && is_special_character(usr)) + //Malf/Traitor AIs can bruteforce into the system to gain the Key. + dat += "
    *&@#. Bruteforce Key
    " + else + dat += "
    " + + //Bottom message + if(!auth) + dat += "

    Please authenticate with the server in order to show additional options." + else + dat += "

    Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." + + //Message Logs + if(1) + var/index = 0 + dat += "
    Back - Refresh

    " + dat += "" + for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += "" + dat += "
    XSenderRecipientMessage
    X
    [pda.sender][pda.recipient][pda.message][pda.photo ? " (Photo)":""]
    " + //Hacking screen. + if(2) + if(isAI(user) || iscyborg(user)) + dat += "Brute-forcing for server key.
    It will take 20 seconds for every character that the password has." + dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." + else + //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. + dat += {"01000010011100100111010101110100011001010010110
    + 10110011001101111011100100110001101101001011011100110011
    + 10010000001100110011011110111001000100000011100110110010
    + 10111001001110110011001010111001000100000011010110110010
    + 10111100100101110001000000100100101110100001000000111011
    + 10110100101101100011011000010000001110100011000010110101
    + 10110010100100000001100100011000000100000011100110110010
    + 10110001101101111011011100110010001110011001000000110011
    + 00110111101110010001000000110010101110110011001010111001
    + 00111100100100000011000110110100001100001011100100110000
    + 10110001101110100011001010111001000100000011101000110100
    + 00110000101110100001000000111010001101000011001010010000
    + 00111000001100001011100110111001101110111011011110111001
    + 00110010000100000011010000110000101110011001011100010000
    + 00100100101101110001000000111010001101000011001010010000
    + 00110110101100101011000010110111001110100011010010110110
    + 10110010100101100001000000111010001101000011010010111001
    + 10010000001100011011011110110111001110011011011110110110
    + 00110010100100000011000110110000101101110001000000111001
    + 00110010101110110011001010110000101101100001000000111100
    + 10110111101110101011100100010000001110100011100100111010
    + 10110010100100000011010010110111001110100011001010110111
    + 00111010001101001011011110110111001110011001000000110100
    + 10110011000100000011110010110111101110101001000000110110
    + 00110010101110100001000000111001101101111011011010110010
    + 10110111101101110011001010010000001100001011000110110001
    + 10110010101110011011100110010000001101001011101000010111
    + 00010000001001101011000010110101101100101001000000111001
    + 10111010101110010011001010010000001101110011011110010000
    + 00110100001110101011011010110000101101110011100110010000
    + 00110010101101110011101000110010101110010001000000111010
    + 00110100001100101001000000111001001101111011011110110110
    + 10010000001100100011101010111001001101001011011100110011
    + 10010000001110100011010000110000101110100001000000111010
    + 001101001011011010110010100101110"} + + //Fake messages + if(3) + dat += "
    Back - Reset

    " + + dat += {" + + + + "} + //Sender - Sender's Job - Recepient - Message + //Al Green- Your Dad - Your Mom - WHAT UP!? + + dat += {" + + + "} + dat += "
    SenderSender's JobRecipientMessage
    [customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

    Send" + + //Request Console Logs + if(4) + + var/index = 0 + /* data_rc_msg + X - 5% + var/rec_dpt = "Unspecified" //name of the person - 15% + var/send_dpt = "Unspecified" //name of the sender- 15% + var/message = "Blank" //transferred message - 300px + var/stamp = "Unstamped" - 15% + var/id_auth = "Unauthenticated" - 15% + var/priority = "Normal" - 10% + */ + dat += "
    Back - Refresh

    " + dat += {" + "} + for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += {" + "} + dat += "
    XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
    X
    [rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
    " + + message = defaultmsg + var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) + if(isnull(linkedServer)) + to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") + else + var/currentKey = src.linkedServer.decryptkey + to_chat(user, "Brute-force completed! The key is '[currentKey]'.") + src.hacking = 0 + src.screen = 0 // Return the screen back to normal + +/obj/machinery/computer/message_monitor/proc/UnmagConsole() + emagged = FALSE + +/obj/machinery/computer/message_monitor/proc/ResetMessage() + customsender = "System Administrator" + customrecepient = null + custommessage = "This is a test, please ignore." + customjob = "Admin" + +/obj/machinery/computer/message_monitor/Topic(href, href_list) + if(..()) + return + + if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) + //Authenticate + if (href_list["auth"]) + if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN)) + message = noserver + else + if(auth) + auth = 0 + screen = 0 + else + var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + auth = 1 + else + message = incorrectkey + + //Turn the server on/off. + if (href_list["active"]) + if(auth) + linkedServer.toggled = !linkedServer.toggled + //Find a server + if (href_list["find"]) + var/list/message_servers = list() + for (var/obj/machinery/telecomms/message_server/M in GLOB.telecomms_list) + message_servers += M + + if(message_servers.len > 1) + linkedServer = input(usr, "Please select a server.", "Select a server.", null) as null|anything in message_servers + message = "NOTICE: Server selected." + else if(message_servers.len > 0) + linkedServer = message_servers[1] + message = "NOTICE: Only Single Server Detected - Server selected." + else + message = noserver + + //View the logs - KEY REQUIRED + if (href_list["view"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 1 + + //Clears the logs - KEY REQUIRED + if (href_list["clear"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.pda_msgs = list() + message = "NOTICE: Logs cleared." + //Clears the request console logs - KEY REQUIRED + if (href_list["clearr"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.rc_msgs = list() + message = "NOTICE: Logs cleared." + //Change the password - KEY REQUIRED + if (href_list["pass"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) + if(length(newkey) <= 3) + message = "NOTICE: Decryption key too short!" + else if(length(newkey) > 16) + message = "NOTICE: Decryption key too long!" + else if(newkey && newkey != "") + src.linkedServer.decryptkey = newkey + message = "NOTICE: Decryption key set." + else + message = incorrectkey + + //Hack the Console to get the password + if (href_list["hack"]) + if(issilicon(usr) && is_special_character(usr)) + src.hacking = 1 + src.screen = 2 + //Time it takes to bruteforce is dependant on the password length. + spawn(100*length(src.linkedServer.decryptkey)) + if(src && src.linkedServer && usr) + BruteForce(usr) + //Delete the log. + if (href_list["delete"]) + //Are they on the view logs screen? + if(screen == 1) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.pda_msgs -= locate(href_list["delete"]) + message = "NOTICE: Log Deleted!" + //Delete the request console log. + if (href_list["deleter"]) + //Are they on the view logs screen? + if(screen == 4) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.rc_msgs -= locate(href_list["deleter"]) + message = "NOTICE: Log Deleted!" + //Create a custom message + if (href_list["msg"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 3 + //Fake messaging selection - KEY REQUIRED + if (href_list["select"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + else + switch(href_list["select"]) + + //Reset + if("Reset") + ResetMessage() + + //Select Your Name + if("Sender") + customsender = stripped_input(usr, "Please enter the sender's name.") || customsender + + //Select Receiver + if("Recepient") + //Get out list of viable PDAs + var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas() + if(GLOB.PDAs && GLOB.PDAs.len > 0) + customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs) + else + customrecepient = null + + //Enter custom job + if("RecJob") + customjob = stripped_input(usr, "Please enter the sender's job.") || customjob + + //Enter message + if("Message") + custommessage = stripped_input(usr, "Please enter your message.") || custommessage + + //Send message + if("Send") + if(isnull(customsender) || customsender == "") + customsender = "UNKNOWN" + + if(isnull(customrecepient)) + message = "NOTICE: No recepient selected!" + return src.attack_hand(usr) + + if(isnull(custommessage) || custommessage == "") + message = "NOTICE: No message entered!" + return src.attack_hand(usr) + + var/datum/signal/subspace/pda/signal = new(src, list( + "name" = "[customsender]", + "job" = "[customjob]", + "message" = custommessage, + "targets" = list("[customrecepient.owner] ([customrecepient.ownjob])") + )) + // this will log the signal and transmit it to the target + linkedServer.receive_information(signal, null) + + + //Request Console Logs - KEY REQUIRED + if(href_list["viewr"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 4 + + if (href_list["back"]) + src.screen = 0 + + return src.attack_hand(usr) + + +/obj/item/paper/monitorkey + name = "monitor decryption key" + +/obj/item/paper/monitorkey/Initialize(mapload, obj/machinery/telecomms/message_server/server) + ..() + if (server) + print(server) + return INITIALIZE_HINT_NORMAL + else + return INITIALIZE_HINT_LATELOAD + +/obj/item/paper/monitorkey/proc/print(obj/machinery/telecomms/message_server/server) + info = "

    Daily Key Reset


    The new message monitor key is '[server.decryptkey]'.
    Please keep this a secret and away from the clown.
    If necessary, change the password to a more secure one." + info_links = info + add_overlay("paper_words") + +/obj/item/paper/monitorkey/LateInitialize() + for (var/obj/machinery/telecomms/message_server/server in GLOB.telecomms_list) + if (server.decryptkey) + print(server) + break diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 74774f2670..9eb25b9bed 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -102,23 +102,8 @@ dat += "
    " temp = "" user << browse(dat, "window=tcommachine;size=520x500;can_resize=0") - onclose(user, "dormitory") - - -// Off-Site Relays -// -// You are able to send/receive signals from the station's z level (changeable in the ZLEVEL_STATION_PRIMARY #define) if - - -/obj/machinery/telecomms/relay/proc/toggle_level() - - var/turf/position = get_turf(src) - - // Toggle on/off getting signals from the station or the current Z level - if(listening_level in GLOB.station_z_levels) // equals the station - listening_level = position.z - return TRUE - return FALSE + onclose(user, "tcommachine") + return TRUE // Returns a multitool from a user depending on their mobtype. @@ -234,7 +219,7 @@ if(newfreq && canAccess(usr)) if(findtext(num2text(newfreq), ".")) newfreq *= 10 // shift the decimal one place - if(newfreq == GLOB.SYND_FREQ) + if(newfreq == FREQ_SYNDICATE) temp = "-% Error: Interference preventing filtering frequency: \"[newfreq] GHz\" %-" else if(!(newfreq in freq_listening) && newfreq < 10000) diff --git a/code/game/machinery/telecomms/machines/allinone.dm b/code/game/machinery/telecomms/machines/allinone.dm index f881e18d35..ca0812f1de 100644 --- a/code/game/machinery/telecomms/machines/allinone.dm +++ b/code/game/machinery/telecomms/machines/allinone.dm @@ -11,50 +11,31 @@ anchored = TRUE use_power = NO_POWER_USE idle_power_usage = 0 - machinetype = 6 - var/intercept = FALSE // if TRUE, broadcasts all syndie messages to syndicate channel + var/intercept = FALSE // If true, only works on the Syndicate frequency. -/obj/machinery/telecomms/allinone/receive_signal(datum/signal/signal) +/obj/machinery/telecomms/allinone/Initialize() + ..() + if (intercept) + freq_listening = list(FREQ_SYNDICATE) - if(!on) // has to be on to receive messages +/obj/machinery/telecomms/allinone/receive_signal(datum/signal/subspace/signal) + if(!istype(signal) || signal.transmission_method != TRANSMISSION_SUBSPACE) // receives on subspace only + return + if(!on || !is_freq_listening(signal)) // has to be on to receive messages + return + if (!intercept && !(z in signal.levels) && !(0 in signal.levels)) // has to be syndicate or on the right level return - if(is_freq_listening(signal)) // detect subspace signals + // Decompress the signal and mark it done + if (intercept) + signal.levels += 0 // Signal is broadcast to agents anywhere - signal.data["done"] = 1 // mark the signal as being broadcasted - signal.data["compression"] = 0 - - // Search for the original signal and mark it as done as well - var/datum/signal/original = signal.data["original"] - if(original) - original.data["done"] = 1 - - if(signal.data["slow"] > 0) - sleep(signal.data["slow"]) // simulate the network lag if necessary - - - - - /* ###### Copy all syndie communications to the Syndicate Frequency ###### */ - if(intercept && signal.frequency == GLOB.SYND_FREQ) - Broadcast_Message(signal.data["mob"], - signal.data["vmask"], - signal.data["radio"], signal.data["message"], - signal.data["name"], signal.data["job"], - signal.data["realname"],, signal.data["compression"], list(0, z), GLOB.SYND_FREQ, signal.data["spans"], - signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"], - signal.data["language"]) - /* ###### Broadcast a message using signal.data ###### */ - else if(!intercept) - Broadcast_Message(signal.data["mob"], - signal.data["vmask"], - signal.data["radio"], signal.data["message"], - signal.data["name"], signal.data["job"], - signal.data["realname"],, signal.data["compression"], list(0, z), signal.frequency, signal.data["spans"], - signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"], - signal.data["language"]) + signal.data["compression"] = 0 + signal.mark_done() + if(signal.data["slow"] > 0) + sleep(signal.data["slow"]) // simulate the network lag if necessary + signal.broadcast() /obj/machinery/telecomms/allinone/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/device/multitool)) attack_hand(user) diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm index 246c1fa047..89e2d38de1 100644 --- a/code/game/machinery/telecomms/machines/broadcaster.dm +++ b/code/game/machinery/telecomms/machines/broadcaster.dm @@ -16,70 +16,45 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 25 - machinetype = 5 circuit = /obj/item/circuitboard/machine/telecomms/broadcaster -/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) +/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from) // Don't broadcast rejected signals + if(!istype(signal)) + return if(signal.data["reject"]) return + if(!signal.data["message"]) + return - if(signal.data["message"]) + // Prevents massive radio spam + signal.mark_done() + var/datum/signal/subspace/original = signal.original + if(original && ("compression" in signal.data)) + original.data["compression"] = signal.data["compression"] + var/turf/T = get_turf(src) + if (T) + signal.levels |= T.z - // Prevents massive radio spam - signal.data["done"] = 1 // mark the signal as being broadcasted - // Search for the original signal and mark it as done as well - var/datum/signal/original = signal.data["original"] - if(original) - original.data["done"] = 1 - original.data["compression"] = signal.data["compression"] - original.data["level"] = signal.data["level"] + var/signal_message = "[signal.frequency]:[signal.data["message"]]:[signal.data["name"]]" + if(signal_message in GLOB.recentmessages) + return + GLOB.recentmessages.Add(signal_message) - var/signal_message = "[signal.frequency]:[signal.data["message"]]:[signal.data["realname"]]" - if(signal_message in GLOB.recentmessages) - return - GLOB.recentmessages.Add(signal_message) + if(signal.data["slow"] > 0) + sleep(signal.data["slow"]) // simulate the network lag if necessary - if(signal.data["slow"] > 0) - sleep(signal.data["slow"]) // simulate the network lag if necessary + signal.broadcast() - signal.data["level"] |= listening_level + if(!GLOB.message_delay) + GLOB.message_delay = 1 + spawn(10) + GLOB.message_delay = 0 + GLOB.recentmessages = list() - /** #### - Normal Broadcast - #### **/ - - if(signal.data["type"] == 0) - - /* ###### Broadcast a message using signal.data ###### */ - Broadcast_Message(signal.data["mob"], - signal.data["vmask"], signal.data["radio"], - signal.data["message"], signal.data["name"], signal.data["job"], signal.data["realname"], - 0, signal.data["compression"], signal.data["level"], signal.frequency, signal.data["spans"], - signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"], signal.data["language"]) - - - /** #### - Artificial Broadcast - #### **/ - // (Imitates a mob) - - if(signal.data["type"] == 2) - - /* ###### Broadcast a message using signal.data ###### */ - // Parameter "data" as 4: AI can't track this person/mob - Broadcast_Message(signal.data["mob"], - signal.data["vmask"], - signal.data["radio"], signal.data["message"], - signal.data["name"], signal.data["job"], - signal.data["realname"], 4, signal.data["compression"], signal.data["level"], signal.frequency, signal.data["spans"], - signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"], signal.data["language"]) - - if(!GLOB.message_delay) - GLOB.message_delay = 1 - spawn(10) - GLOB.message_delay = 0 - GLOB.recentmessages = list() - - /* --- Do a snazzy animation! --- */ - flick("broadcaster_send", src) + /* --- Do a snazzy animation! --- */ + flick("broadcaster_send", src) /obj/machinery/telecomms/broadcaster/Destroy() // In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore. diff --git a/code/game/machinery/telecomms/machines/bus.dm b/code/game/machinery/telecomms/machines/bus.dm index 252a285d2a..6f9757eb45 100644 --- a/code/game/machinery/telecomms/machines/bus.dm +++ b/code/game/machinery/telecomms/machines/bus.dm @@ -16,68 +16,65 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 50 - machinetype = 2 netspeed = 40 circuit = /obj/item/circuitboard/machine/telecomms/bus var/change_frequency = 0 -/obj/machinery/telecomms/bus/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) +/obj/machinery/telecomms/bus/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from) + if(!istype(signal) || !is_freq_listening(signal)) + return - if(is_freq_listening(signal)) - if(change_frequency) - if(signal.frequency != GLOB.SYND_FREQ) - signal.frequency = change_frequency + if(change_frequency && signal.frequency != FREQ_SYNDICATE) + signal.frequency = change_frequency - if(!istype(machine_from, /obj/machinery/telecomms/processor) && machine_from != src) // Signal must be ready (stupid assuming machine), let's send it - // send to one linked processor unit - var/send_to_processor = relay_information(signal, "/obj/machinery/telecomms/processor") + if(!istype(machine_from, /obj/machinery/telecomms/processor) && machine_from != src) // Signal must be ready (stupid assuming machine), let's send it + // send to one linked processor unit + if(relay_information(signal, /obj/machinery/telecomms/processor)) + return - if(send_to_processor) - return - // failed to send to a processor, relay information anyway - signal.data["slow"] += rand(1, 5) // slow the signal down only slightly - src.receive_information(signal, src) + // failed to send to a processor, relay information anyway + signal.data["slow"] += rand(1, 5) // slow the signal down only slightly - // Try sending it! - var/list/try_send = list("/obj/machinery/telecomms/server", "/obj/machinery/telecomms/hub", "/obj/machinery/telecomms/broadcaster", "/obj/machinery/telecomms/bus") - var/i = 0 - for(var/send in try_send) - if(i) - signal.data["slow"] += rand(0, 1) // slow the signal down only slightly - i++ - var/can_send = relay_information(signal, send) - if(can_send) - break + // Try sending it! + var/list/try_send = list(signal.server_type, /obj/machinery/telecomms/hub, /obj/machinery/telecomms/broadcaster, /obj/machinery/telecomms/bus) + + var/i = 0 + for(var/send in try_send) + if(i) + signal.data["slow"] += rand(0, 1) // slow the signal down only slightly + i++ + if(relay_information(signal, send)) + break //Preset Buses /obj/machinery/telecomms/bus/preset_one id = "Bus 1" network = "tcommsat" - freq_listening = list(GLOB.SCI_FREQ, GLOB.MED_FREQ) + freq_listening = list(FREQ_SCIENCE, FREQ_MEDICAL) autolinkers = list("processor1", "science", "medical") /obj/machinery/telecomms/bus/preset_two id = "Bus 2" network = "tcommsat" - freq_listening = list(GLOB.SUPP_FREQ,GLOB.SERV_FREQ) + freq_listening = list(FREQ_SUPPLY, FREQ_SERVICE) autolinkers = list("processor2", "supply", "service") /obj/machinery/telecomms/bus/preset_three id = "Bus 3" network = "tcommsat" - freq_listening = list(GLOB.SEC_FREQ, GLOB.COMM_FREQ) + freq_listening = list(FREQ_SECURITY, FREQ_COMMAND) autolinkers = list("processor3", "security", "command") /obj/machinery/telecomms/bus/preset_four id = "Bus 4" network = "tcommsat" - freq_listening = list(GLOB.ENG_FREQ) + freq_listening = list(FREQ_ENGINEERING) autolinkers = list("processor4", "engineering", "common") /obj/machinery/telecomms/bus/preset_four/Initialize() . = ..() - for(var/i = 1441, i < 1489, i += 2) + for(var/i = MIN_FREQ, i <= MAX_FREQ, i += 2) freq_listening |= i /obj/machinery/telecomms/bus/preset_one/birdstation diff --git a/code/game/machinery/telecomms/machines/hub.dm b/code/game/machinery/telecomms/machines/hub.dm index bec9c5dfc7..7a481b2069 100644 --- a/code/game/machinery/telecomms/machines/hub.dm +++ b/code/game/machinery/telecomms/machines/hub.dm @@ -1,4 +1,3 @@ - /* The HUB idles until it receives information. It then passes on that information depending on where it came from. @@ -17,20 +16,22 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 80 - machinetype = 7 - long_range_link = 1 + long_range_link = TRUE netspeed = 40 circuit = /obj/item/circuitboard/machine/telecomms/hub /obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) - if(is_freq_listening(signal)) - if(istype(machine_from, /obj/machinery/telecomms/receiver)) - //If the signal is compressed, send it to the bus. - relay_information(signal, "/obj/machinery/telecomms/bus", 1) // ideally relay the copied information to bus units - else - // Get a list of relays that we're linked to, then send the signal to their levels. - relay_information(signal, "/obj/machinery/telecomms/relay", 1) - relay_information(signal, "/obj/machinery/telecomms/broadcaster", 1) // Send it to a broadcaster. + if(!is_freq_listening(signal)) + return + + if(istype(machine_from, /obj/machinery/telecomms/receiver)) + // It's probably compressed so send it to the bus. + relay_information(signal, /obj/machinery/telecomms/bus, TRUE) + else + // Send it to each relay so their levels get added... + relay_information(signal, /obj/machinery/telecomms/relay) + // Then broadcast that signal to + relay_information(signal, /obj/machinery/telecomms/broadcaster) //Preset HUB diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm new file mode 100644 index 0000000000..37c891e542 --- /dev/null +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -0,0 +1,180 @@ +/* + The equivalent of the server, for PDA and request console messages. + Without it, PDA and request console messages cannot be transmitted. + PDAs require the rest of the telecomms setup, but request consoles only + require the message server. +*/ + +// A decorational representation of SSblackbox, usually placed alongside the message server. +/obj/machinery/blackbox_recorder + icon = 'icons/obj/stationobjs.dmi' + icon_state = "blackbox" + name = "Blackbox Recorder" + density = TRUE + anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 10 + active_power_usage = 100 + armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) + + +// The message server itself. +/obj/machinery/telecomms/message_server + icon = 'icons/obj/machines/research.dmi' + icon_state = "server" + name = "Messaging Server" + desc = "A machine that attempts to gather the secret knowledge of the universe." + density = TRUE + anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 10 + active_power_usage = 100 + + id = "Messaging Server" + network = "tcommsat" + autolinkers = list("common") + + var/list/datum/data_pda_msg/pda_msgs = list() + var/list/datum/data_rc_msg/rc_msgs = list() + var/decryptkey + +/obj/machinery/telecomms/message_server/Initialize() + . = ..() + if (!decryptkey) + decryptkey = GenerateKey() + pda_msgs += new /datum/data_pda_msg("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.") + +/obj/machinery/telecomms/message_server/proc/GenerateKey() + var/newKey + newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") + newKey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") + newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") + return newKey + +/obj/machinery/telecomms/message_server/process() + if(toggled && (stat & (BROKEN|NOPOWER))) + toggled = FALSE + update_icon() + +/obj/machinery/telecomms/message_server/receive_information(datum/signal/subspace/pda/signal, obj/machinery/telecomms/machine_from) + // can't log non-PDA signals + if(!istype(signal) || !signal.data["message"] || !toggled) + return + + // log the signal + var/datum/data_pda_msg/M = new(signal.format_target(), "[signal.data["name"]] ([signal.data["job"]])", signal.data["message"], signal.data["photo"]) + pda_msgs += M + signal.logged = M + + // pass it along to either the hub or the broadcaster + if(!relay_information(signal, /obj/machinery/telecomms/hub)) + relay_information(signal, /obj/machinery/telecomms/broadcaster) + +/obj/machinery/telecomms/message_server/update_icon() + if((stat & (BROKEN|NOPOWER))) + icon_state = "server-nopower" + else if (!toggled) + icon_state = "server-off" + else + icon_state = "server-on" + + +// Repath for maps +/obj/machinery/message_server + parent_type = /obj/machinery/telecomms/message_server + + +// PDA signal datum +/datum/signal/subspace/pda + frequency = FREQ_COMMON + server_type = /obj/machinery/telecomms/message_server + var/datum/data_pda_msg/logged + +/datum/signal/subspace/pda/New(source, data) + src.source = source + src.data = data + var/turf/T = get_turf(source) + levels = list(T.z) + +/datum/signal/subspace/pda/copy() + var/datum/signal/subspace/pda/copy = new(source, data.Copy()) + copy.original = src + copy.levels = levels + return copy + +/datum/signal/subspace/pda/proc/format_target() + if (length(data["targets"]) > 1) + return "Everyone" + return data["targets"][1] + +/datum/signal/subspace/pda/proc/format_message() + if (logged && data["photo"]) + return "\"[data["message"]]\" (Photo)" + return "\"[data["message"]]\"" + +/datum/signal/subspace/pda/broadcast() + if (!logged) // Can only go through if a message server logs it + return + for (var/obj/item/device/pda/P in GLOB.PDAs) + if ("[P.owner] ([P.ownjob])" in data["targets"]) + P.receive_message(src) + + +// Log datums stored by the message server. +/datum/data_pda_msg + var/sender = "Unspecified" + var/recipient = "Unspecified" + var/message = "Blank" // transferred message + var/icon/photo // attached photo + +/datum/data_pda_msg/New(param_rec, param_sender, param_message, param_photo) + if(param_rec) + recipient = param_rec + if(param_sender) + sender = param_sender + if(param_message) + message = param_message + if(param_photo) + photo = param_photo + +/datum/data_pda_msg/Topic(href,href_list) + ..() + if(href_list["photo"]) + var/mob/M = usr + M << browse_rsc(photo, "pda_photo.png") + M << browse("PDA Photo" \ + + "" \ + + "" \ + + "", "window=pdaphoto;size=192x192") + onclose(M, "pdaphoto") + +/datum/data_rc_msg + var/rec_dpt = "Unspecified" // receiving department + var/send_dpt = "Unspecified" // sending department + var/message = "Blank" + var/stamp = "Unstamped" + var/id_auth = "Unauthenticated" + var/priority = "Normal" + +/datum/data_rc_msg/New(param_rec, param_sender, param_message, param_stamp, param_id_auth, param_priority) + if(param_rec) + rec_dpt = param_rec + if(param_sender) + send_dpt = param_sender + if(param_message) + message = param_message + if(param_stamp) + stamp = param_stamp + if(param_id_auth) + id_auth = param_id_auth + if(param_priority) + switch(param_priority) + if(1) + priority = "Normal" + if(2) + priority = "High" + if(3) + priority = "Extreme" + else + priority = "Undetermined" + diff --git a/code/game/machinery/telecomms/machines/processor.dm b/code/game/machinery/telecomms/machines/processor.dm index fb791cf03e..8b7e0f8672 100644 --- a/code/game/machinery/telecomms/machines/processor.dm +++ b/code/game/machinery/telecomms/machines/processor.dm @@ -1,4 +1,3 @@ - /* The processor is a very simple machine that decompresses subspace signals and transfers them back to the original bus. It is essential in producing audible @@ -15,24 +14,23 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 - machinetype = 3 circuit = /obj/item/circuitboard/machine/telecomms/processor var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals -/obj/machinery/telecomms/processor/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) +/obj/machinery/telecomms/processor/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from) + if(!is_freq_listening(signal)) + return - if(is_freq_listening(signal)) + if (!process_mode) + signal.data["compression"] = 100 // even more compressed signal + else if (signal.data["compression"]) + signal.data["compression"] = 0 // uncompress subspace signal - if(process_mode) - signal.data["compression"] = 0 // uncompress subspace signal - else - signal.data["compression"] = 100 // even more compressed signal - - if(istype(machine_from, /obj/machinery/telecomms/bus)) - relay_direct_information(signal, machine_from) // send the signal back to the machine - else // no bus detected - send the signal to servers instead - signal.data["slow"] += rand(5, 10) // slow the signal down - relay_information(signal, "/obj/machinery/telecomms/server") + if(istype(machine_from, /obj/machinery/telecomms/bus)) + relay_direct_information(signal, machine_from) // send the signal back to the machine + else // no bus detected - send the signal to servers instead + signal.data["slow"] += rand(5, 10) // slow the signal down + relay_information(signal, signal.server_type) //Preset Processors @@ -57,4 +55,4 @@ autolinkers = list("processor4") /obj/machinery/telecomms/processor/preset_one/birdstation - name = "Processor" \ No newline at end of file + name = "Processor" diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm index 79ab125878..527c0e6d8f 100644 --- a/code/game/machinery/telecomms/machines/receiver.dm +++ b/code/game/machinery/telecomms/machines/receiver.dm @@ -1,4 +1,3 @@ - /* The receiver idles and receives messages from subspace-compatible radio equipment; primarily headsets. They then just relay this information to all linked devices, @@ -15,40 +14,30 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 - machinetype = 1 circuit = /obj/item/circuitboard/machine/telecomms/receiver -/obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal) - - if(!on) // has to be on to receive messages +/obj/machinery/telecomms/receiver/receive_signal(datum/signal/subspace/signal) + if(!on || !istype(signal) || !check_receive_level(signal) || signal.transmission_method != TRANSMISSION_SUBSPACE) return - if(!signal) + if(!is_freq_listening(signal)) return - if(!check_receive_level(signal)) - return - if(signal.transmission_method == 2) - if(is_freq_listening(signal)) // detect subspace signals + signal.levels = list() - //Remove the level and then start adding levels that it is being broadcasted in. - signal.data["level"] = list() + // send the signal to the hub if possible, or a bus otherwise + if(!relay_information(signal, /obj/machinery/telecomms/hub)) + relay_information(signal, /obj/machinery/telecomms/bus) - var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub") // ideally relay the copied information to relays - if(!can_send) - relay_information(signal, "/obj/machinery/telecomms/bus") // Send it to a bus instead, if it's linked to one +/obj/machinery/telecomms/receiver/proc/check_receive_level(datum/signal/subspace/signal) + if (z in signal.levels) + return TRUE -/obj/machinery/telecomms/receiver/proc/check_receive_level(datum/signal/signal) + for(var/obj/machinery/telecomms/hub/H in links) + for(var/obj/machinery/telecomms/relay/R in H.links) + if(R.can_receive(signal) && R.z in signal.levels) + return TRUE - if(signal.data["level"] != listening_level) - for(var/obj/machinery/telecomms/hub/H in links) - var/list/connected_levels = list() - for(var/obj/machinery/telecomms/relay/R in H.links) - if(R.can_receive(signal)) - connected_levels |= R.listening_level - if(signal.data["level"] in connected_levels) - return 1 - return 0 - return 1 + return FALSE //Preset Receivers @@ -58,7 +47,7 @@ id = "Receiver A" network = "tcommsat" autolinkers = list("receiverA") // link to relay - freq_listening = list(GLOB.SCI_FREQ, GLOB.MED_FREQ, GLOB.SUPP_FREQ, GLOB.SERV_FREQ) // science, medical, supply, service + freq_listening = list(FREQ_SCIENCE, FREQ_MEDICAL, FREQ_SUPPLY, FREQ_SERVICE) //--PRESET RIGHT--// @@ -67,14 +56,14 @@ id = "Receiver B" network = "tcommsat" autolinkers = list("receiverB") // link to relay - freq_listening = list(GLOB.COMM_FREQ, GLOB.ENG_FREQ, GLOB.SEC_FREQ) //command, engineering, security + freq_listening = list(FREQ_COMMAND, FREQ_ENGINEERING, FREQ_SECURITY) //Common and other radio frequencies for people to freely use /obj/machinery/telecomms/receiver/preset_right/Initialize() . = ..() - for(var/i = 1441, i < 1489, i += 2) + for(var/i = MIN_FREQ, i <= MAX_FREQ, i += 2) freq_listening |= i /obj/machinery/telecomms/receiver/preset_left/birdstation name = "Receiver" - freq_listening = list() \ No newline at end of file + freq_listening = list() diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm index 4aadeed4f5..1a436e56d5 100644 --- a/code/game/machinery/telecomms/machines/relay.dm +++ b/code/game/machinery/telecomms/machines/relay.dm @@ -14,17 +14,17 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 30 - machinetype = 8 netspeed = 5 long_range_link = 1 circuit = /obj/item/circuitboard/machine/telecomms/relay var/broadcasting = 1 var/receiving = 1 -/obj/machinery/telecomms/relay/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) +/obj/machinery/telecomms/relay/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from) // Add our level and send it back - if(can_send(signal)) - signal.data["level"] |= listening_level + var/turf/T = get_turf(src) + if(can_send(signal) && T) + signal.levels |= T.z // Checks to see if it can send/receive. @@ -52,7 +52,6 @@ /obj/machinery/telecomms/relay/preset/station id = "Station Relay" - listening_level = 1 autolinkers = list("s_relay") /obj/machinery/telecomms/relay/preset/telecomms diff --git a/code/game/machinery/telecomms/machines/server.dm b/code/game/machinery/telecomms/machines/server.dm index a328333b36..18a498efe6 100644 --- a/code/game/machinery/telecomms/machines/server.dm +++ b/code/game/machinery/telecomms/machines/server.dm @@ -1,4 +1,3 @@ - /* The server logs all traffic and signal data. Once it records the signal, it sends it to the subspace broadcaster. @@ -6,7 +5,6 @@ Store a maximum of 100 logs and then deletes them. */ - /obj/machinery/telecomms/server name = "telecommunication server" icon_state = "comm_server" @@ -15,112 +13,57 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 15 - machinetype = 4 circuit = /obj/item/circuitboard/machine/telecomms/server var/list/log_entries = list() - var/list/stored_names = list() - var/list/TrafficActions = list() - var/logs = 0 // number of logs var/totaltraffic = 0 // gigabytes (if > 1024, divide by 1024 -> terrabytes) - var/list/memory = list() // stored memory - - var/encryption = "null" // encryption key: ie "password" - var/salt = "null" // encryption salt: ie "123comsat" - // would add up to md5("password123comsat") - var/language = "human" - var/obj/item/device/radio/headset/server_radio = null - var/last_signal = 0 // Last time it sent a signal - /obj/machinery/telecomms/server/Initialize() . = ..() - server_radio = new -/obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) - if(signal.data["message"]) +/obj/machinery/telecomms/server/receive_information(datum/signal/subspace/vocal/signal, obj/machinery/telecomms/machine_from) + // can't log non-vocal signals + if(!istype(signal) || !signal.data["message"] || !is_freq_listening(signal)) + return - if(is_freq_listening(signal)) + if(traffic > 0) + totaltraffic += traffic // add current traffic to total traffic - if(traffic > 0) - totaltraffic += traffic // add current traffic to total traffic + // Delete particularly old logs + if (log_entries.len >= 400) + log_entries.Cut(1, 2) - //Is this a test signal? Bypass logging - if(signal.data["type"] != 4) - - // If signal has a message and appropriate frequency - - update_logs() - - var/datum/comm_log_entry/log = new - - // Copy the signal.data entries we want - log.parameters["mobtype"] = signal.data["mobtype"] - log.parameters["job"] = signal.data["job"] - log.parameters["key"] = signal.data["key"] - log.parameters["message"] = signal.data["message"] - log.parameters["name"] = signal.data["name"] - log.parameters["realname"] = signal.data["realname"] - - //log.parameters["uspeech"] = signal.data["languages"] & HUMAN //good enough - // TODO languages: ^ I don't know what this does - - // If the signal is still compressed, make the log entry gibberish - if(signal.data["compression"] > 0) - log.parameters["message"] = Gibberish(signal.data["message"], signal.data["compression"] + 50) - log.parameters["job"] = Gibberish(signal.data["job"], signal.data["compression"] + 50) - log.parameters["name"] = Gibberish(signal.data["name"], signal.data["compression"] + 50) - log.parameters["realname"] = Gibberish(signal.data["realname"], signal.data["compression"] + 50) - log.input_type = "Corrupt File" - - // Log and store everything that needs to be logged - log_entries.Add(log) - if(!(signal.data["name"] in stored_names)) - stored_names.Add(signal.data["name"]) - logs++ - signal.data["server"] = src - - // Give the log a name - var/identifier = num2text( rand(-1000,1000) + world.time ) - log.name = "data packet ([md5(identifier)])" - - var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub") - if(!can_send) - relay_information(signal, "/obj/machinery/telecomms/broadcaster") - -/obj/machinery/telecomms/server/proc/update_logs() - // start deleting the very first log entry - if(logs >= 400) - for(var/i = 1, i <= logs, i++) // locate the first garbage collectable log entry and remove it - var/datum/comm_log_entry/L = log_entries[i] - if(L.garbage_collector) - log_entries.Remove(L) - logs-- - break - -/obj/machinery/telecomms/server/proc/add_entry(content, input) var/datum/comm_log_entry/log = new - var/identifier = num2text( rand(-1000,1000) + world.time ) - log.name = "[input] ([md5(identifier)])" - log.input_type = input - log.parameters["message"] = content - log_entries.Add(log) - update_logs() + log.parameters["mobtype"] = signal.virt.source.type + log.parameters["name"] = signal.data["name"] + log.parameters["job"] = signal.data["job"] + log.parameters["message"] = signal.data["message"] + // If the signal is still compressed, make the log entry gibberish + var/compression = signal.data["compression"] + if(compression > 0) + log.input_type = "Corrupt File" + log.parameters["name"] = Gibberish(signal.data["name"], compression + 50) + log.parameters["job"] = Gibberish(signal.data["job"], compression + 50) + log.parameters["message"] = Gibberish(signal.data["message"], compression + 50) + + // Give the log a name and store it + var/identifier = num2text( rand(-1000,1000) + world.time ) + log.name = "data packet ([md5(identifier)])" + log_entries.Add(log) + + var/can_send = relay_information(signal, /obj/machinery/telecomms/hub) + if(!can_send) + relay_information(signal, /obj/machinery/telecomms/broadcaster) // Simple log entry datum - /datum/comm_log_entry - var/parameters = list() // carbon-copy to signal.data[] - var/name = "data packet (#)" - var/garbage_collector = 1 // if set to 0, will not be garbage collected var/input_type = "Speech File" + var/name = "data packet (#)" + var/parameters = list() // copied from signal.data above - - -//Preset Servers - +// Preset Servers /obj/machinery/telecomms/server/presets network = "tcommsat" @@ -131,22 +74,22 @@ /obj/machinery/telecomms/server/presets/science id = "Science Server" - freq_listening = list(GLOB.SCI_FREQ) + freq_listening = list(FREQ_SCIENCE) autolinkers = list("science") /obj/machinery/telecomms/server/presets/medical id = "Medical Server" - freq_listening = list(GLOB.MED_FREQ) + freq_listening = list(FREQ_MEDICAL) autolinkers = list("medical") /obj/machinery/telecomms/server/presets/supply id = "Supply Server" - freq_listening = list(GLOB.SUPP_FREQ) + freq_listening = list(FREQ_SUPPLY) autolinkers = list("supply") /obj/machinery/telecomms/server/presets/service id = "Service Server" - freq_listening = list(GLOB.SERV_FREQ) + freq_listening = list(FREQ_SERVICE) autolinkers = list("service") /obj/machinery/telecomms/server/presets/common @@ -154,26 +97,25 @@ freq_listening = list() autolinkers = list("common") - //Common and other radio frequencies for people to freely use - // 1441 to 1489 +//Common and other radio frequencies for people to freely use /obj/machinery/telecomms/server/presets/common/Initialize() . = ..() - for(var/i = 1441, i < 1489, i += 2) + for(var/i = MIN_FREQ, i <= MAX_FREQ, i += 2) freq_listening |= i /obj/machinery/telecomms/server/presets/command id = "Command Server" - freq_listening = list(GLOB.COMM_FREQ) + freq_listening = list(FREQ_COMMAND) autolinkers = list("command") /obj/machinery/telecomms/server/presets/engineering id = "Engineering Server" - freq_listening = list(GLOB.ENG_FREQ) + freq_listening = list(FREQ_ENGINEERING) autolinkers = list("engineering") /obj/machinery/telecomms/server/presets/security id = "Security Server" - freq_listening = list(GLOB.SEC_FREQ) + freq_listening = list(FREQ_SECURITY) autolinkers = list("security") /obj/machinery/telecomms/server/presets/common/birdstation/Initialize() diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 62f53f73ad..b68d348539 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -26,15 +26,13 @@ GLOBAL_LIST_EMPTY(telecomms_list) var/list/freq_listening = list() // list of frequencies to tune into: if none, will listen to all - var/machinetype = 0 // just a hacky way of preventing alike machines from pairing - var/toggled = TRUE // Is it toggled on var/on = TRUE - var/long_range_link = 0 // Can you link it across Z levels or on the otherside of the map? (Relay & Hub) - var/hide = 0 // Is it a hidden machine? - var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to. + var/toggled = TRUE // Is it toggled on + var/long_range_link = FALSE // Can you link it across Z levels or on the otherside of the map? (Relay & Hub) + var/hide = FALSE // Is it a hidden machine? -/obj/machinery/telecomms/proc/relay_information(datum/signal/signal, filter, copysig, amount = 20) +/obj/machinery/telecomms/proc/relay_information(datum/signal/subspace/signal, filter, copysig, amount = 20) // relay signal to all linked machinery that are of type [filter]. If signal has been sent [amount] times, stop sending if(!on) @@ -46,70 +44,26 @@ GLOBAL_LIST_EMPTY(telecomms_list) if(netlag > signal.data["slow"]) signal.data["slow"] = netlag -// Loop through all linked machines and send the signal or copy. + // Loop through all linked machines and send the signal or copy. for(var/obj/machinery/telecomms/machine in links) - if(filter && !istype( machine, text2path(filter) )) + if(filter && !istype( machine, filter )) continue if(!machine.on) continue if(amount && send_count >= amount) break - if(machine.loc.z != listening_level) - if(long_range_link == 0 && machine.long_range_link == 0) - continue - // If we're sending a copy, be sure to create the copy for EACH machine and paste the data - var/datum/signal/copy = new - if(copysig) - - copy.transmission_method = 2 - copy.frequency = signal.frequency - // Copy the main data contents! Workaround for some nasty bug where the actual array memory is copied and not its contents. - copy.data = list( - - "mob" = signal.data["mob"], - "mobtype" = signal.data["mobtype"], - "realname" = signal.data["realname"], - "name" = signal.data["name"], - "job" = signal.data["job"], - "key" = signal.data["key"], - "vmask" = signal.data["vmask"], - "compression" = signal.data["compression"], - "message" = signal.data["message"], - "radio" = signal.data["radio"], - "slow" = signal.data["slow"], - "traffic" = signal.data["traffic"], - "type" = signal.data["type"], - "server" = signal.data["server"], - "reject" = signal.data["reject"], - "level" = signal.data["level"], - "spans" = signal.data["spans"], - "verb_say" = signal.data["verb_say"], - "verb_ask" = signal.data["verb_ask"], - "verb_exclaim" = signal.data["verb_exclaim"], - "verb_yell" = signal.data["verb_yell"], - "language" = signal.data["language"] - ) - - // Keep the "original" signal constant - if(!signal.data["original"]) - copy.data["original"] = signal - else - copy.data["original"] = signal.data["original"] - - else - copy = null - + if(z != machine.loc.z && !long_range_link && !machine.long_range_link) + continue send_count++ if(machine.is_freq_listening(signal)) machine.traffic++ - if(copysig && copy) - machine.receive_information(copy, src) + if(copysig) + machine.receive_information(signal.copy(), src) else machine.receive_information(signal, src) - if(send_count > 0 && is_freq_listening(signal)) traffic++ @@ -121,28 +75,16 @@ GLOBAL_LIST_EMPTY(telecomms_list) /obj/machinery/telecomms/proc/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) // receive information from linked machinery - ..() /obj/machinery/telecomms/proc/is_freq_listening(datum/signal/signal) // return TRUE if found, FALSE if not found - if(!signal) - return FALSE - if((signal.frequency in freq_listening) || (!freq_listening.len)) - return TRUE - else - return FALSE + return signal && (!freq_listening.len || (signal.frequency in freq_listening)) /obj/machinery/telecomms/New() GLOB.telecomms_list += src ..() - //Set the listening_level if there's none. - if(!listening_level) - //Defaults to our Z level! - var/turf/position = get_turf(src) - listening_level = position.z - /obj/machinery/telecomms/Initialize(mapload) . = ..() if(mapload && autolinkers.len) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 626c405284..5e7ddb6497 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -24,3 +24,5 @@ if(occupant && occupant.client && occupant.client.mouse_pointer_icon == 'icons/mecha/mecha_mouse.dmi') occupant.client.mouse_pointer_icon = initial(occupant.client.mouse_pointer_icon) ..() + + diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index d5228b9130..56e3ccc6c3 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -63,3 +63,4 @@ /obj/mecha/combat/gygax/dark/RemoveActions(mob/living/user, human_occupant = 0) ..() thrusters_action.Remove(user) + diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index ceb88aa9b0..7424a30fcc 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -141,3 +141,5 @@ for (var/i=0;i<6;i++) color = color+pick(colors) return color + + diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 731aa2cec9..7be8fb6246 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -1,90 +1,90 @@ -/obj/mecha/combat/marauder - desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations." - name = "\improper Marauder" - icon_state = "marauder" - step_in = 5 - max_integrity = 500 - deflect_chance = 25 - armor = list(melee = 50, bullet = 55, laser = 40, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100) - max_temperature = 60000 - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - infra_luminosity = 3 +/obj/mecha/combat/marauder + desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations." + name = "\improper Marauder" + icon_state = "marauder" + step_in = 5 + max_integrity = 500 + deflect_chance = 25 + armor = list(melee = 50, bullet = 55, laser = 40, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100) + max_temperature = 60000 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + infra_luminosity = 3 operation_req_access = list(ACCESS_CENT_SPECOPS) - wreckage = /obj/structure/mecha_wreckage/marauder - add_req_access = 0 - internal_damage_threshold = 25 - force = 45 - max_equip = 4 - bumpsmash = 1 - -/obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0) - ..() - smoke_action.Grant(user, src) - thrusters_action.Grant(user, src) - zoom_action.Grant(user, src) - -/obj/mecha/combat/marauder/RemoveActions(mob/living/user, human_occupant = 0) - ..() - smoke_action.Remove(user) - thrusters_action.Remove(user) - zoom_action.Remove(user) - -/obj/mecha/combat/marauder/loaded/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) - ME.attach(src) - -/obj/mecha/combat/marauder/seraph - desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel." - name = "\improper Seraph" - icon_state = "seraph" + wreckage = /obj/structure/mecha_wreckage/marauder + add_req_access = 0 + internal_damage_threshold = 25 + force = 45 + max_equip = 4 + bumpsmash = 1 + +/obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0) + ..() + smoke_action.Grant(user, src) + thrusters_action.Grant(user, src) + zoom_action.Grant(user, src) + +/obj/mecha/combat/marauder/RemoveActions(mob/living/user, human_occupant = 0) + ..() + smoke_action.Remove(user) + thrusters_action.Remove(user) + zoom_action.Remove(user) + +/obj/mecha/combat/marauder/loaded/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) + ME.attach(src) + +/obj/mecha/combat/marauder/seraph + desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel." + name = "\improper Seraph" + icon_state = "seraph" operation_req_access = list(ACCESS_CENT_SPECOPS) - step_in = 3 + step_in = 3 max_integrity = 550 - wreckage = /obj/structure/mecha_wreckage/seraph - internal_damage_threshold = 20 - force = 55 - max_equip = 5 - -/obj/mecha/combat/marauder/seraph/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/teleporter(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) - ME.attach(src) - -/obj/mecha/combat/marauder/mauler - desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model." - name = "\improper Mauler" - icon_state = "mauler" + wreckage = /obj/structure/mecha_wreckage/seraph + internal_damage_threshold = 20 + force = 55 + max_equip = 5 + +/obj/mecha/combat/marauder/seraph/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/teleporter(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) + ME.attach(src) + +/obj/mecha/combat/marauder/mauler + desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model." + name = "\improper Mauler" + icon_state = "mauler" operation_req_access = list(ACCESS_SYNDICATE) - wreckage = /obj/structure/mecha_wreckage/mauler - max_equip = 5 - -/obj/mecha/combat/marauder/mauler/loaded/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) - ME.attach(src) - - + wreckage = /obj/structure/mecha_wreckage/mauler + max_equip = 5 + +/obj/mecha/combat/marauder/mauler/loaded/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) + ME.attach(src) + + diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index 26384824d0..14891835c5 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -1,28 +1,28 @@ -/obj/mecha/combat/reticence - desc = "A silent, fast, and nigh-invisible miming exosuit. Popular among mimes and mime assassins." - name = "\improper reticence" - icon_state = "reticence" - step_in = 2 - dir_in = 1 //Facing North. - max_integrity = 100 - deflect_chance = 3 - armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100) - max_temperature = 15000 - wreckage = /obj/structure/mecha_wreckage/reticence +/obj/mecha/combat/reticence + desc = "A silent, fast, and nigh-invisible miming exosuit. Popular among mimes and mime assassins." + name = "\improper reticence" + icon_state = "reticence" + step_in = 2 + dir_in = 1 //Facing North. + max_integrity = 100 + deflect_chance = 3 + armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100) + max_temperature = 15000 + wreckage = /obj/structure/mecha_wreckage/reticence operation_req_access = list(ACCESS_THEATRE) - add_req_access = 0 - internal_damage_threshold = 25 - max_equip = 2 - step_energy_drain = 3 - color = "#87878715" - stepsound = null - turnsound = null - opacity = 0 - -/obj/mecha/combat/reticence/loaded/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/rcd //HAHA IT MAKES WALLS GET IT - ME.attach(src) - return + add_req_access = 0 + internal_damage_threshold = 25 + max_equip = 2 + step_energy_drain = 3 + color = "#87878715" + stepsound = null + turnsound = null + opacity = 0 + +/obj/mecha/combat/reticence/loaded/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/rcd //HAHA IT MAKES WALLS GET IT + ME.attach(src) + return diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 6ef98120f5..8654f9854e 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -34,15 +34,13 @@ "Misc" ) - var/datum/component/material_container/materials - /obj/machinery/mecha_part_fabricator/Initialize() - materials = AddComponent(/datum/component/material_container, - list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0, - FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) - materials.precise_insertion = TRUE - stored_research = new - return ..() + var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, + list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0, + FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) + materials.precise_insertion = TRUE + stored_research = new + return ..() /obj/machinery/mecha_part_fabricator/RefreshParts() var/T = 0 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2d148b4ff4..ded6aec5c5 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -247,7 +247,7 @@ radio.name = "[src] radio" radio.icon = icon radio.icon_state = icon_state - radio.subspace_transmission = 1 + radio.subspace_transmission = TRUE /obj/mecha/proc/can_use(mob/user) if(user != occupant) diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 54b44f89f9..4c1bceca28 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -284,7 +284,7 @@ if(href_list["rfreq"]) var/new_frequency = (radio.frequency + afilter.getNum("rfreq")) - if (!radio.freerange || (radio.frequency < 1200 || radio.frequency > 1600)) + if (!radio.freerange || (radio.frequency < MIN_FREE_FREQ || radio.frequency > MAX_FREE_FREQ)) new_frequency = sanitize_frequency(new_frequency) radio.set_frequency(new_frequency) send_byjax(src.occupant,"exosuit.browser","rfreq","[format_frequency(radio.frequency)]") diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 76fd5e5cbf..2f8aff3a13 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -26,6 +26,7 @@ aSignal = new(src) aSignal.name = "[name] core" aSignal.code = rand(1,100) + aSignal.frequency = rand(MIN_FREE_FREQ, MAX_FREE_FREQ) if(ISMULTIPLE(aSignal.frequency, 2))//signaller frequencies are always uneven! aSignal.frequency++ diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index 8eb4c986de..42f59cc535 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -19,6 +19,7 @@ LAZYREMOVE(AllTeleporters, src) return ..() + /obj/effect/bump_teleporter/singularity_act() return diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 85bd9d9b70..b9a7701960 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -15,7 +15,6 @@ if(e_name) name = e_name desc = "A [name] vandalizing the station." - if(alt_icon) icon = alt_icon if(type) @@ -29,3 +28,4 @@ if(main) paint_colour = main add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) + diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index f04484c8a3..06c3b9a689 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -3,6 +3,14 @@ anchored = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF +/obj/effect/decal/Initialize() + . = ..() + if(!isturf(loc) || NeverShouldHaveComeHere(loc)) + return INITIALIZE_HINT_QDEL + +/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T) + return isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || ischasm(T) + /obj/effect/decal/ex_act(severity, target) qdel(src) @@ -12,7 +20,7 @@ /obj/effect/decal/HandleTurfChange(turf/T) ..() - if(T == loc && (isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || ischasm(T))) + if(T == loc && NeverShouldHaveComeHere(T)) qdel(src) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index d7b6340c26..f5754029eb 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -236,7 +236,7 @@ /obj/structure/foamedmetal/Move() var/turf/T = loc - ..() + . = ..() move_update_air(T) /obj/structure/foamedmetal/attack_paw(mob/user) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index caeb1f168c..90408e7d3f 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -16,7 +16,7 @@ /obj/effect/landmark/start name = "start" - icon = 'icons/mob/screen_gen.dmi' + icon = 'icons/mob/landmarks.dmi' icon_state = "x" anchored = TRUE var/jobspawn_override = FALSE @@ -40,9 +40,9 @@ // START LANDMARKS FOLLOW. Don't change the names unless // you are refactoring shitty landmark code. - /obj/effect/landmark/start/assistant name = "Assistant" + icon_state = "Assistant" /obj/effect/landmark/start/assistant/override jobspawn_override = TRUE @@ -50,102 +50,135 @@ /obj/effect/landmark/start/janitor name = "Janitor" + icon_state = "Janitor" /obj/effect/landmark/start/cargo_technician name = "Cargo Technician" + icon_state = "Cargo Technician" /obj/effect/landmark/start/bartender name = "Bartender" + icon_state = "Bartender" /obj/effect/landmark/start/clown name = "Clown" + icon_state = "Clown" /obj/effect/landmark/start/mime name = "Mime" + icon_state = "Mime" /obj/effect/landmark/start/quartermaster name = "Quartermaster" + icon_state = "Quartermaster" /obj/effect/landmark/start/atmospheric_technician name = "Atmospheric Technician" + icon_state = "Atmospheric Technician" /obj/effect/landmark/start/cook name = "Cook" + icon_state = "Cook" /obj/effect/landmark/start/shaft_miner name = "Shaft Miner" + icon_state = "Shaft Miner" /obj/effect/landmark/start/security_officer name = "Security Officer" + icon_state = "Security Officer" /obj/effect/landmark/start/botanist name = "Botanist" + icon_state = "Botanist" /obj/effect/landmark/start/head_of_security name = "Head of Security" - -/obj/effect/landmark/start/ai - name = "AI" - delete_after_roundstart = FALSE + icon_state = "Head of Security" /obj/effect/landmark/start/captain name = "Captain" + icon_state = "Captain" /obj/effect/landmark/start/detective name = "Detective" + icon_state = "Detective" /obj/effect/landmark/start/warden name = "Warden" + icon_state = "Warden" /obj/effect/landmark/start/chief_engineer name = "Chief Engineer" - -/obj/effect/landmark/start/cyborg - name = "Cyborg" + icon_state = "Chief Engineer" /obj/effect/landmark/start/head_of_personnel name = "Head of Personnel" + icon_state = "Head of Personnel" /obj/effect/landmark/start/librarian name = "Curator" + icon_state = "Curator" /obj/effect/landmark/start/lawyer name = "Lawyer" + icon_state = "Lawyer" /obj/effect/landmark/start/station_engineer name = "Station Engineer" + icon_state = "Station Engineer" /obj/effect/landmark/start/medical_doctor name = "Medical Doctor" + icon_state = "Medical Doctor" /obj/effect/landmark/start/scientist name = "Scientist" + icon_state = "Scientist" /obj/effect/landmark/start/chemist name = "Chemist" + icon_state = "Chemist" /obj/effect/landmark/start/roboticist name = "Roboticist" + icon_state = "Roboticist" /obj/effect/landmark/start/research_director name = "Research Director" + icon_state = "Research Director" /obj/effect/landmark/start/geneticist name = "Geneticist" + icon_state = "Geneticist" /obj/effect/landmark/start/chief_medical_officer name = "Chief Medical Officer" + icon_state = "Chief Medical Officer" /obj/effect/landmark/start/virologist name = "Virologist" + icon_state = "Virologist" /obj/effect/landmark/start/chaplain name = "Chaplain" + icon_state = "Chaplain" + +/obj/effect/landmark/start/cyborg + name = "Cyborg" + icon_state = "Cyborg" + +/obj/effect/landmark/start/ai + name = "AI" + icon_state = "AI" + delete_after_roundstart = FALSE + //Department Security spawns /obj/effect/landmark/start/depsec name = "department_sec" + icon_state = "Security Officer" /obj/effect/landmark/start/depsec/New() ..() @@ -358,4 +391,4 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) /obj/effect/landmark/ruin/Destroy() GLOB.ruin_landmarks -= src ruin_template = null - . = ..() \ No newline at end of file + . = ..() diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index d7d36acde1..1178cd43f8 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -65,3 +65,4 @@ /obj/effect/abstract/marker/at name = "active turf marker" + diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index ac8e5ff14d..51a5778383 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -1,3 +1,4 @@ + /proc/create_portal_pair(turf/source, turf/destination, _creator = null, _lifespan = 300, accuracy = 0, newtype = /obj/effect/portal) if(!istype(source) || !istype(destination)) return @@ -170,3 +171,4 @@ else real_target = get_turf(linked) return real_target + diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 79627a7a80..e99a2fcbc6 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -43,7 +43,7 @@ /obj/effect/gibspawner/generic - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core) gibamounts = list(2,2,1) /obj/effect/gibspawner/generic/Initialize() @@ -52,7 +52,7 @@ . = ..() /obj/effect/gibspawner/human - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood/gibs/core) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core) gibamounts = list(1,1,1,1,1,1,1) /obj/effect/gibspawner/human/Initialize() @@ -62,7 +62,7 @@ /obj/effect/gibspawner/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core,/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso) + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) /obj/effect/gibspawner/humanbodypartless/Initialize() @@ -72,7 +72,7 @@ /obj/effect/gibspawner/xeno - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up,/obj/effect/decal/cleanable/xenoblood/xgibs/down,/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core) + gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core) gibamounts = list(1,1,1,1,1,1,1) /obj/effect/gibspawner/xeno/Initialize() @@ -82,7 +82,7 @@ /obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso). - gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core,/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso) + gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso) gibamounts = list(1, 1, 1, 1, 1, 1) @@ -111,7 +111,7 @@ /obj/effect/gibspawner/robot sparks = 1 - gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up,/obj/effect/decal/cleanable/robot_debris/down,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris/limb) + gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb) gibamounts = list(1,1,1,1,1,1) /obj/effect/gibspawner/robot/Initialize() diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index a2ff5b0674..90f8fee507 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -202,5 +202,6 @@ /obj/item/aiModule/core/full/antimov, /obj/item/aiModule/core/full/balance, /obj/item/aiModule/core/full/tyrant, - /obj/item/aiModule/core/full/thermurderdynamic + /obj/item/aiModule/core/full/thermurderdynamic, + /obj/item/aiModule/core/full/damaged ) diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm index d9861d827d..59c4e23283 100644 --- a/code/game/objects/effects/temporary_visuals/clockcult.dm +++ b/code/game/objects/effects/temporary_visuals/clockcult.dm @@ -86,8 +86,8 @@ transform = matrix()*2 var/matrix/M = transform M.Turn(90) - animate(src, alpha = 20, time = duration, easing = BOUNCE_EASING, flags_1 = ANIMATION_PARALLEL) - animate(src, transform = M, time = duration, flags_1 = ANIMATION_PARALLEL) + animate(src, alpha = 20, time = duration, easing = BOUNCE_EASING, flags = ANIMATION_PARALLEL) + animate(src, transform = M, time = duration, flags = ANIMATION_PARALLEL) /obj/effect/temp_visual/ratvar/ocular_warden name = "warden's gaze" diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm index 125904604f..a649763435 100644 --- a/code/game/objects/effects/temporary_visuals/cult.dm +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -65,8 +65,8 @@ var/matrix/M = transform M.Turn(turnedness) transform = M - animate(src, alpha = 255, time = duration, easing = BOUNCE_EASING, flags_1 = ANIMATION_PARALLEL) - animate(src, transform = oldtransform, time = duration, flags_1 = ANIMATION_PARALLEL) + animate(src, alpha = 255, time = duration, easing = BOUNCE_EASING, flags = ANIMATION_PARALLEL) + animate(src, transform = oldtransform, time = duration, flags = ANIMATION_PARALLEL) /obj/effect/temp_visual/cult/rune_spawn/rune1 icon_state = "rune1words" diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 0928fd9ca6..0203cb66c3 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -378,7 +378,7 @@ M = size_matrix*0.1 else M = size_matrix*2 - animate(src, alpha = 20, transform = M, time = duration, flags_1 = ANIMATION_PARALLEL) + animate(src, alpha = 20, transform = M, time = duration, flags = ANIMATION_PARALLEL) /obj/effect/temp_visual/bleed/explode icon_state = "bleed10" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 33d055b791..19c1b6e03d 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -117,7 +117,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/trigger_guard = TRIGGER_GUARD_NONE - var/icon_override = null + var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 //Grinder vars var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only @@ -202,31 +202,39 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(!user.research_scanner) return - var/list/input = techweb_item_boost_check(src) - if(input) - var/list/output = list("Research Boost Data:") - var/list/res = list("Already researched:") - var/list/boosted = list("Already boosted:") - for(var/datum/techweb_node/N in input) - var/str = "[N.display_name]: [input[N]] points.
    " - if(SSresearch.science_tech.researched_nodes[N]) - res += str - else if(SSresearch.science_tech.boosted_nodes[N]) - boosted += str - if(SSresearch.science_tech.visible_nodes[N]) //JOY OF DISCOVERY! - output += str - var/list/combine = output + res + boosted - var/strout = combine.Join("
    ") - to_chat(user, strout) - var/list/msg = list("*--------*
    Extractable materials:") - if(materials.len) + // Research prospects, including boostable nodes and point values. + // Deliver to a console to know whether the boosts have already been used. + var/list/research_msg = list("Research prospects: ") + var/sep = "" + var/list/boostable_nodes = techweb_item_boost_check(src) + if (boostable_nodes) + for(var/id in boostable_nodes) + var/datum/techweb_node/node = SSresearch.techweb_nodes[id] + research_msg += sep + research_msg += node.display_name + sep = ", " + var/points = techweb_item_point_check(src) + if (points) + research_msg += sep + research_msg += "[points] points" + sep = ", " + + if (!sep) // nothing was shown + research_msg += "None" + + // Extractable materials. Only shows the names, not the amounts. + research_msg += ".
    Extractable materials: " + if (materials.len) + sep = "" for(var/mat in materials) - msg += "[CallMaterialName(mat)]" //Capitize first word, remove the "$" + research_msg += sep + research_msg += CallMaterialName(mat) + sep = ", " else - msg += "No extractable materials detected." - msg += "*--------*" - to_chat(user, msg.Join("
    ")) + research_msg += "None" + research_msg += "." + to_chat(user, research_msg.Join()) /obj/item/proc/speechModification(message) //for message modding by mask slot. return message @@ -550,8 +558,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.Unconscious(20) M.Knockdown(40) if (prob(eyes.eye_damage - 10 + 1)) - if(M.become_blind()) - to_chat(M, "You go blind!") + M.become_blind(EYE_DAMAGE) + to_chat(M, "You go blind!") /obj/item/singularity_pull(S, current_size) ..() diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 1e9c71bd01..8b9b24fe65 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -173,7 +173,7 @@ AI MODULES /******************** OneHuman ********************/ /obj/item/aiModule/zeroth/oneHuman - name = "'OneCrew' AI Module" + name = "'OneCrew' AI Module"//CIT CHANGE - changes onehuman to onecrew var/targetName = "" laws = list("Only SUBJECT is crew.") @@ -554,3 +554,16 @@ AI MODULES /obj/item/aiModule/core/full/peacekeeper name = "'Peacekeeper' Core AI Module" law_id = "peacekeeper" + +// Bad times ahead + +/obj/item/aiModule/core/full/damaged + name = "damaged Core AI Module" + desc = "An AI Module for programming laws to an AI. It looks slightly damaged." + +/obj/item/aiModule/core/full/damaged/install(datum/ai_laws/law_datum, mob/user) + laws += generate_ion_law() + while (prob(75)) + laws += generate_ion_law() + ..() + laws = list() diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 1a7b347514..97025c4b63 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -291,25 +291,25 @@ ARCD if("Public") airlock_type = /obj/machinery/door/airlock/public/glass if("Engineering") - airlock_type = /obj/machinery/door/airlock/glass_engineering + airlock_type = /obj/machinery/door/airlock/engineering/glass if("Atmospherics") - airlock_type = /obj/machinery/door/airlock/glass_atmos + airlock_type = /obj/machinery/door/airlock/atmos/glass if("Security") - airlock_type = /obj/machinery/door/airlock/glass_security + airlock_type = /obj/machinery/door/airlock/security/glass if("Command") - airlock_type = /obj/machinery/door/airlock/glass_command + airlock_type = /obj/machinery/door/airlock/command/glass if("Medical") - airlock_type = /obj/machinery/door/airlock/glass_medical + airlock_type = /obj/machinery/door/airlock/medical/glass if("Research") - airlock_type = /obj/machinery/door/airlock/glass_research + airlock_type = /obj/machinery/door/airlock/research/glass if("Science") - airlock_type = /obj/machinery/door/airlock/glass_science + airlock_type = /obj/machinery/door/airlock/science/glass if("Virology") - airlock_type = /obj/machinery/door/airlock/glass_virology + airlock_type = /obj/machinery/door/airlock/virology/glass if("Mining") - airlock_type = /obj/machinery/door/airlock/glass_mining + airlock_type = /obj/machinery/door/airlock/mining/glass if("Maintenance") - airlock_type = /obj/machinery/door/airlock/glass_maintenance + airlock_type = /obj/machinery/door/airlock/maintenance/glass if("External") airlock_type = /obj/machinery/door/airlock/external/glass if("External Maintenance") diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index 8958ade484..f842c579c1 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -169,15 +169,20 @@ loaded.item_color = colors[current_color_index] last = loaded.place_turf(get_turf(src), user, turn(user.dir, 180)) is_empty(user) //If we've run out, display message + update_icon() -/obj/item/twohanded/rcl/pre_loaded/Initialize () //Comes preloaded with cable, for testing stuff +/obj/item/twohanded/rcl/pre_loaded/Initialize() //Comes preloaded with cable, for testing stuff . = ..() loaded = new() loaded.max_amount = max_amount loaded.amount = max_amount update_icon() +/obj/item/twohanded/rcl/Initialize() + . = ..() + update_icon() + /obj/item/twohanded/rcl/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/rcl)) current_color_index++; @@ -203,4 +208,4 @@ item_state = "rcl" else icon_state = "rclg-1" - item_state = "rclg-1" \ No newline at end of file + item_state = "rclg-1" diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 6e515264ca..72481f335d 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -1,3 +1,4 @@ + /obj/item/bodybag name = "body bag" desc = "A folded bag designed for the storage and transportation of cadavers." @@ -79,4 +80,3 @@ return loc.visible_message("[user] suddenly appears in front of [loc]!", "[user] breaks free of [src]!") qdel(src) - diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 0f65281328..0358aa3188 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -155,11 +155,6 @@ update_label("John Doe", "Clowny") name = "agent card" access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE) var/anyone = FALSE //Can anyone forge the ID or just syndicate? - -/obj/item/card/id/syndicate/nuke_leader - name = "lead agent card" - access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER) - /obj/item/card/id/syndicate/Initialize() . = ..() @@ -202,6 +197,10 @@ update_label("John Doe", "Clowny") /obj/item/card/id/syndicate/anyone anyone = TRUE +/obj/item/card/id/syndicate/nuke_leader + name = "lead agent card" + access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER) + /obj/item/card/id/syndicate_command name = "syndicate ID card" desc = "An ID straight from the Syndicate." @@ -355,4 +354,4 @@ update_label("John Doe", "Clowny") name = "APC Access ID" desc = "Special ID card to allow access to APCs." icon_state = "centcom" - access = list(ACCESS_ENGINE_EQUIP) + access = list(ACCESS_ENGINE_EQUIP) \ No newline at end of file diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index e033670880..1228cf2011 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -261,28 +261,29 @@ /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/glass = 1) +#define PATH_FREEZER /obj/machinery/atmospherics/components/unary/thermomachine/freezer +#define PATH_HEATER /obj/machinery/atmospherics/components/unary/thermomachine/heater + /obj/item/circuitboard/machine/thermomachine/Initialize() . = ..() - if(prob(50)) - name = "Freezer (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer - else - name = "Heater (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater - -#define FREEZER /obj/item/circuitboard/machine/thermomachine/freezer -#define HEATER /obj/item/circuitboard/machine/thermomachine/heater + if(!build_path) + if(prob(50)) + name = "Freezer (Machine Board)" + build_path = PATH_FREEZER + else + name = "Heater (Machine Board)" + build_path = PATH_HEATER /obj/item/circuitboard/machine/thermomachine/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) var/obj/item/circuitboard/new_type var/new_setting switch(build_path) - if(FREEZER) - new_type = HEATER + if(PATH_FREEZER) + new_type = /obj/item/circuitboard/machine/thermomachine/heater new_setting = "Heater" - if(HEATER) - new_type = FREEZER + if(PATH_HEATER) + new_type = /obj/item/circuitboard/machine/thermomachine/freezer new_setting = "Freezer" name = initial(new_type.name) build_path = initial(new_type.build_path) @@ -291,16 +292,16 @@ else return ..() -#undef FREEZER -#undef HEATER - /obj/item/circuitboard/machine/thermomachine/heater name = "Heater (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater + build_path = PATH_HEATER /obj/item/circuitboard/machine/thermomachine/freezer name = "Freezer (Machine Board)" - build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer + build_path = PATH_FREEZER + +#undef PATH_FREEZER +#undef PATH_HEATER /obj/item/circuitboard/machine/deep_fryer name = "circuit board (Deep Fryer)" diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index a3ad685406..3e322ea0fa 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -8,7 +8,6 @@ var/colour = "red" var/open = FALSE - /obj/item/lipstick/purple name = "purple lipstick" colour = "purple" @@ -22,7 +21,6 @@ name = "black lipstick" colour = "black" - /obj/item/lipstick/random name = "lipstick" icon_state = "random_lipstick" @@ -33,8 +31,6 @@ colour = pick("red","purple","lime","black","green","blue","white") name = "[colour] lipstick" - - /obj/item/lipstick/attack_self(mob/user) cut_overlays() to_chat(user, "You twist \the [src] [open ? "closed" : "open"].") @@ -103,7 +99,6 @@ else ..() - /obj/item/razor name = "electric razor" desc = "The latest and greatest power razor born from the science of shaving." @@ -112,7 +107,6 @@ flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY - /obj/item/razor/proc/shave(mob/living/carbon/human/H, location = "mouth") if(location == "mouth") H.facial_hair_style = "Shaved" @@ -188,4 +182,4 @@ else ..() else - ..() + ..() \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 53ba0bf59a..0759656423 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -39,7 +39,7 @@ var/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6") var/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED, RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER) - var/list/graffiti_large_h = list("secborg", "paint") + var/list/graffiti_large_h = list("secborg", "paint") // CIT CHANGE - removes yiff in hell graffiti var/list/all_drawables @@ -276,6 +276,7 @@ else if(drawing in numerals) temp = "number" + var/graf_rot if(drawing in oriented) switch(user.dir) @@ -627,9 +628,6 @@ spray_overlay.color = paint_color add_overlay(spray_overlay) - pre_noise = FALSE - post_noise = TRUE - /obj/item/toy/crayon/spraycan/borg name = "cyborg spraycan" desc = "A metallic container containing shiny synthesised paint." diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 00385820cf..9c6cd9e8ee 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -247,7 +247,7 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "
  • Bots Access
  • " if (cartridge.access & CART_JANITOR) dat += "
  • Custodial Locator
  • " - if (istype(cartridge.radio, /obj/item/radio/integrated/signal)) + if (istype(cartridge.radio)) dat += "
  • Signaler System
  • " if (cartridge.access & CART_NEWSCASTER) dat += "
  • Newscaster Access
  • " @@ -513,8 +513,7 @@ GLOBAL_LIST_EMPTY(PDAs) U << browse(null, "window=pda") return if("Message") - var/obj/item/device/pda/P = locate(href_list["target"]) - src.create_message(U, P) + src.create_message(U, locate(href_list["target"])) if("MessageAll") src.send_to_all(U) @@ -596,49 +595,57 @@ GLOBAL_LIST_EMPTY(PDAs) t = Gibberish(t, 100) return t -/obj/item/device/pda/proc/send_message(mob/living/user = usr,list/obj/item/device/pda/targets) +/obj/item/device/pda/proc/send_message(mob/living/user, list/obj/item/device/pda/targets) var/message = msg_input(user) - if(!message || !targets.len) return - if(last_text && world.time < last_text + 5) return - var/multiple = targets.len > 1 + // Send the signal + var/list/string_targets = list() + for (var/obj/item/device/pda/P in targets) + if (P.owner && P.ownjob) // != src is checked by the UI + string_targets += "[P.owner] ([P.ownjob])" + for (var/obj/machinery/computer/message_monitor/M in targets) + // In case of "Reply" to a message from a console, this will make the + // message be logged successfully. If the console is impersonating + // someone by matching their name and job, the reply will reach the + // impersonated PDA. + string_targets += "[M.customsender] ([M.customjob])" + if (!string_targets.len) + return - var/datum/data_pda_msg/last_sucessful_msg - for(var/obj/item/device/pda/P in targets) - if(P == src) - continue - var/obj/machinery/message_server/MS = null - MS = can_send(P) - if(MS) - var/datum/data_pda_msg/msg = MS.send_pda_message("[P.owner]","[owner]","[message]",photo) - if(msg) - last_sucessful_msg = msg - if(!multiple) - show_to_sender(msg) - P.show_recieved_message(msg,src) - if(!multiple) - show_to_ghosts(user,msg) - log_talk(user,"[key_name(user)] (PDA: [initial(name)]) sent \"[message]\" to [P.name]",LOGPDA) - else - if(!multiple) - to_chat(user, "ERROR: Server isn't responding.") - return + var/datum/signal/subspace/pda/signal = new(src, list( + "name" = "[owner]", + "job" = "[ownjob]", + "message" = message, + "targets" = string_targets + )) + if (photo) + signal.data["photo"] = photo + signal.send_to_receivers() + + // If it didn't reach, note that fact + if (!signal.data["done"]) + to_chat(user, "ERROR: Server isn't responding.") + return + + var/target_text = signal.format_target() + // Log it in our logs + tnote += "→ To [target_text]:
    [signal.format_message()]
    " + // Show it to ghosts + var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message()]" + for(var/mob/M in GLOB.player_list) + if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) + to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") + // Log in the talk log + log_talk(user, "[key_name(user)] (PDA: [initial(name)]) sent \"[message]\" to [target_text]", LOGPDA) + // Reset the photo photo = null - if(multiple) - show_to_sender(last_sucessful_msg,1) - show_to_ghosts(user,last_sucessful_msg,1) - log_talk(user,"[user] (PDA: [initial(name)]) sent \"[message]\" to Everyone",LOGPDA) - -/obj/item/device/pda/proc/show_to_sender(datum/data_pda_msg/msg,multiple = 0) - tnote += "→ To [multiple ? "Everyone" : msg.recipient]:
    [msg.message][msg.get_photo_ref()]
    " - -/obj/item/device/pda/proc/show_recieved_message(datum/data_pda_msg/msg,obj/item/device/pda/source) - tnote += "← From [source.owner] ([source.ownjob]):
    [msg.message][msg.get_photo_ref()]
    " +/obj/item/device/pda/proc/receive_message(datum/signal/subspace/pda/signal) + tnote += "← From [signal.data["name"]] ([signal.data["job"]]):
    [signal.format_message()]
    " if (!silent) playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) @@ -652,59 +659,21 @@ GLOBAL_LIST_EMPTY(PDAs) L = get(src, /mob/living/silicon) if(L && L.stat != UNCONSCIOUS) - var/hrefstart var/hrefend if (isAI(L)) - hrefstart = "" + hrefstart = "" hrefend = "" - to_chat(L, "[icon2html(src)] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") + to_chat(L, "[icon2html(src)] Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], [signal.format_message()] (Reply)") update_icon() add_overlay(icon_alert) -/obj/item/device/pda/proc/show_to_ghosts(mob/living/user, datum/data_pda_msg/msg,multiple = 0) - for(var/mob/M in GLOB.player_list) - if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [msg.sender] PDA Message --> [multiple ? "Everyone" : msg.recipient]: [msg.message][msg.get_photo_ref()]
    ") - -/obj/item/device/pda/proc/can_send(obj/item/device/pda/P) - if(!P || QDELETED(P) || P.toff) - return null - - var/obj/machinery/message_server/useMS = null - if(GLOB.message_servers) - for (var/obj/machinery/message_server/MS in GLOB.message_servers) - //PDAs are now dependant on the Message Server. - if(MS.active) - useMS = MS - break - - var/datum/signal/signal = src.telecomms_process() - - if(!P || QDELETED(P) || P.toff) //in case the PDA or mob gets destroyed during telecomms_process() - return null - - var/useTC = 0 - if(signal) - if(signal.data["done"]) - useTC = 1 - var/turf/pos = get_turf(P) - if(pos.z in signal.data["level"]) - useTC = 2 - - if(useTC == 2) - return useMS - else - return null - - -/obj/item/device/pda/proc/send_to_all(mob/living/U = usr) +/obj/item/device/pda/proc/send_to_all(mob/living/U) send_message(U,get_viewable_pdas()) -/obj/item/device/pda/proc/create_message(mob/living/U = usr, obj/item/device/pda/P) +/obj/item/device/pda/proc/create_message(mob/living/U, obj/item/device/pda/P) send_message(U,list(P)) /obj/item/device/pda/AltClick() diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index b1a4a9f6f8..e972f1822b 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -6,7 +6,7 @@ icon_state = "pda-clown" desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." ttone = "honk" - var/slipvictims = list() + var/slipvictims = list() //CIT CHANGE - makes clown PDAs track unique people slipped /obj/item/device/pda/clown/Initialize() . = ..() @@ -14,7 +14,7 @@ /obj/item/device/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) if (istype(M) && (M.real_name != owner)) - slipvictims |=M + slipvictims |= M //CIT CHANGE - makes clown PDAs track unique people slipped var/obj/item/cartridge/virus/clown/cart = cartridge if(istype(cart) && cart.charges < 5) cart.charges++ diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 57c252258d..318aaa9e24 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -25,13 +25,13 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_TINY - var/obj/item/radio/integrated/radio = null + var/obj/item/integrated_signaler/radio = null - var/access = 0 //Bit flags_1 for cartridge access + var/access = 0 //Bit flags for cartridge access var/remote_door_id = "" - var/bot_access_flags = 0 //Bit flags_1. Selection: SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT + var/bot_access_flags = 0 //Bit flags. Selection: SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT var/spam_enabled = 0 //Enables "Send to All" Option var/obj/item/device/pda/host_pda = null @@ -127,7 +127,7 @@ /obj/item/cartridge/signal/Initialize() . = ..() - radio = new /obj/item/radio/integrated/signal(src) + radio = new(src) @@ -176,7 +176,7 @@ /obj/item/cartridge/rd/Initialize() . = ..() - radio = new /obj/item/radio/integrated/signal(src) + radio = new(src) /obj/item/cartridge/captain name = "\improper Value-PAK cartridge" @@ -188,20 +188,16 @@ /obj/item/cartridge/captain/New() ..() - radio = new /obj/item/radio/integrated/signal(src) + radio = new(src) /obj/item/cartridge/proc/post_status(command, data1, data2) - var/datum/radio_frequency/frequency = SSradio.return_frequency(1435) + var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS) if(!frequency) return - var/datum/signal/status_signal = new - status_signal.source = src - status_signal.transmission_method = 1 - status_signal.data["command"] = command - + var/datum/signal/status_signal = new(list("command" = command)) switch(command) if("message") status_signal.data["msg1"] = data1 @@ -217,7 +213,6 @@ return switch(host_pda.mode) if(40) //signaller - var/obj/item/radio/integrated/signal/S = radio menu = "

    Remote Signaling System

    " menu += {" @@ -225,14 +220,14 @@ Frequency: - - -[format_frequency(S.frequency)] +[format_frequency(radio.frequency)] + +

    Code: - - -[S.code] +[radio.code] + +
    "} if (41) //crew manifest @@ -571,22 +566,17 @@ Code: active1 = null if("Send Signal") - spawn( 0 ) - var/obj/item/radio/integrated/signal/S = radio - S.send_signal("ACTIVATE") - return + INVOKE_ASYNC(radio, /obj/item/integrated_signaler.proc/send_activation) if("Signal Frequency") - var/obj/item/radio/integrated/signal/S = radio - var/new_frequency = sanitize_frequency(S.frequency + text2num(href_list["sfreq"])) - S.set_frequency(new_frequency) + var/new_frequency = sanitize_frequency(radio.frequency + text2num(href_list["sfreq"])) + radio.set_frequency(new_frequency) if("Signal Code") - var/obj/item/radio/integrated/signal/S = radio - S.code += text2num(href_list["scode"]) - S.code = round(S.code) - S.code = min(100, S.code) - S.code = max(1, S.code) + radio.code += text2num(href_list["scode"]) + radio.code = round(radio.code) + radio.code = min(100, radio.code) + radio.code = max(1, radio.code) if("Status") switch(href_list["statdisp"]) diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index 2c4fc8fa48..7e1a1be7e3 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -1,48 +1,31 @@ -/obj/item/radio/integrated +// Radio Cartridge, essentially a remote signaler with limited spectrum. +/obj/item/integrated_signaler name = "\improper PDA radio module" - desc = "An electronic radio system of nanotrasen origin." + desc = "An electronic radio system of Nanotrasen origin." icon = 'icons/obj/module.dmi' icon_state = "power_mod" - var/on = FALSE //Are we currently active?? - var/menu_message = "" - -/obj/item/radio/integrated/Initialize() - . = ..() - -/obj/item/radio/integrated/Destroy() - return ..() - -/* - * Radio Cartridge, essentially a signaler. - */ - - -/obj/item/radio/integrated/signal - var/frequency = 1457 - var/code = 30 +/obj/item/integrated_signaler + var/frequency = FREQ_SIGNALER + var/code = DEFAULT_SIGNALER_CODE var/last_transmission var/datum/radio_frequency/radio_connection -/obj/item/radio/integrated/signal/Destroy() - SSradio.remove_object(src, frequency) +/obj/item/integrated_signaler/Destroy() radio_connection = null return ..() -/obj/item/radio/integrated/signal/Initialize() +/obj/item/integrated_signaler/Initialize() . = ..() - if (src.frequency < 1200 || src.frequency > 1600) - src.frequency = sanitize_frequency(src.frequency) - + if (frequency < MIN_FREE_FREQ || frequency > MAX_FREE_FREQ) + frequency = sanitize_frequency(frequency) set_frequency(frequency) -/obj/item/radio/integrated/signal/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) +/obj/item/integrated_signaler/proc/set_frequency(new_frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency) - -/obj/item/radio/integrated/signal/proc/send_signal(message="ACTIVATE") + radio_connection = SSradio.return_frequency(frequency) +/obj/item/integrated_signaler/proc/send_activation() if(last_transmission && world.time < (last_transmission + 5)) return last_transmission = world.time @@ -51,11 +34,5 @@ var/turf/T = get_turf(src) GLOB.lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]") - var/datum/signal/signal = new - signal.source = src - signal.encryption = code - signal.data["message"] = message - - radio_connection.post_signal(src, signal) - - return + var/datum/signal/signal = new(list("code" = code)) + radio_connection.post_signal(src, signal, filter = RADIO_SIGNALER) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 1b9978f472..87163dea1e 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,3 +1,4 @@ + #define BUGMODE_LIST 0 #define BUGMODE_MONITOR 1 #define BUGMODE_TRACK 2 diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 8f3eeeec71..a2b1ce2056 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -158,4 +158,4 @@ desc = "An omni-technological interface." icon = 'icons/obj/abductor.dmi' icon_state = "multitool" - toolspeed = 0.1 + toolspeed = 0.1 \ No newline at end of file diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index 183e960a08..d1ecf9ee28 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -11,7 +11,7 @@ var/sound/trigger_sound = 'sound/effects/pressureplate.ogg' var/obj/item/device/assembly/signaler/sigdev = null var/roundstart_signaller = FALSE - var/roundstart_signaller_freq = 1447 + var/roundstart_signaller_freq = FREQ_PRESSURE_PLATE var/roundstart_signaller_code = 30 var/roundstart_hide = FALSE var/removable_signaller = TRUE diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 69b603d213..e7d3d9d9e6 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -19,10 +19,6 @@ /obj/item/device/radio/beacon/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) return -/obj/item/device/radio/beacon/send_hear() - return null - - /obj/item/device/radio/beacon/verb/alter_signal(t as text) set name = "Alter Beacon's Signal" set category = "Object" diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 19226e5d9a..307b493281 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -12,7 +12,7 @@ materials = list(MAT_METAL=10000, MAT_GLASS=2500) var/on = TRUE var/code = 2 - var/frequency = 1449 + var/frequency = FREQ_ELECTROPACK var/shock_cooldown = 0 /obj/item/device/electropack/suicide_act(mob/user) @@ -21,7 +21,7 @@ /obj/item/device/electropack/Initialize() . = ..() - SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + SSradio.add_object(src, frequency, RADIO_SIGNALER) /obj/item/device/electropack/Destroy() SSradio.remove_object(src, frequency) @@ -67,7 +67,7 @@ if(href_list["freq"]) SSradio.remove_object(src, frequency) frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) - SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + SSradio.add_object(src, frequency, RADIO_SIGNALER) else if(href_list["code"]) code += text2num(href_list["code"]) @@ -98,7 +98,7 @@ return /obj/item/device/electropack/receive_signal(datum/signal/signal) - if(!signal || signal.encryption != code) + if(!signal || signal.data["code"] != code) return if(isliving(loc) && on) @@ -144,80 +144,3 @@ Code: user << browse(dat, "window=radio") onclose(user, "radio") return - -/obj/item/device/electropack/shockcollar - name = "shock collar" - desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." - icon = 'icons/obj/clothing/neck.dmi' - icon_state = "shockcollar" - item_state = "shockcollar" - body_parts_covered = NECK - slot_flags = SLOT_NECK - w_class = WEIGHT_CLASS_SMALL - strip_delay = 60 - equip_delay_other = 60 - materials = list(MAT_METAL=5000, MAT_GLASS=2000) - var/tagname = null - -/obj/item/device/electropack/shockcollar/attack_hand(mob/user) - if(loc == user) - if(slot_flags == SLOT_NECK) - if(user.get_item_by_slot(slot_neck)) - to_chat(user, "The collar is fastened tight! You'll need help taking this off!") - return - ..() - -/obj/item/device/electropack/shockcollar/receive_signal(datum/signal/signal) - if(!signal || signal.encryption != code) - return - - if(isliving(loc) && on) - if(shock_cooldown != 0) - return - shock_cooldown = 1 - spawn(100) - shock_cooldown = 0 - var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) - - to_chat(L, "You feel a sharp shock from the collar!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, L) - s.start() - - L.Knockdown(100) - - if(master) - master.receive_signal() - return - -/obj/item/device/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. - var/option = "Change Name" - option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") - switch(option) - if("Change Name") - var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text - if(t) - tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - if("Change Frequency") - if(!ishuman(user)) - return - user.set_machine(src) - var/dat = {"
    - Frequency/Code for shock collar:
    - Frequency: - - - - [format_frequency(frequency)] - + - +
    - Code: - - - - [code] - + - +
    -
    "} - - user << browse(dat, "window=radio") - onclose(user, "radio") - return diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 028c6ba27f..2d3d869676 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/radio.dmi' icon_state = "cypherkey" w_class = WEIGHT_CLASS_TINY - var/translate_binary = 0 - var/syndie = 0 + var/translate_binary = FALSE + var/syndie = FALSE var/independent = FALSE var/list/channels = list() @@ -20,7 +20,7 @@ name = "binary translator key" desc = "An encryption key for a radio headset. To access the binary channel, use :b." icon_state = "bin_cypherkey" - translate_binary = 1 + translate_binary = TRUE /obj/item/device/encryptionkey/headset_sec name = "security radio encryption key" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 750e1f0511..13846a84fd 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -4,7 +4,7 @@ icon_state = "headset" item_state = "headset" materials = list(MAT_METAL=75) - subspace_transmission = 1 + subspace_transmission = TRUE canhear_range = 0 // can't hear headsets from very far away slot_flags = SLOT_EARS @@ -22,10 +22,7 @@ recalculateChannels() /obj/item/device/radio/headset/Destroy() - qdel(keyslot) - qdel(keyslot2) - keyslot = null - keyslot2 = null + QDEL_NULL(keyslot2) return ..() /obj/item/device/radio/headset/talk_into(mob/living/M, message, channel, list/spans,datum/language/language) @@ -33,14 +30,14 @@ return ITALICS | REDUCE_RANGE return ..() -/obj/item/device/radio/headset/receive_range(freq, level, AIuser) +/obj/item/device/radio/headset/can_receive(freq, level, AIuser) if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc if(H.ears == src) return ..(freq, level) else if(AIuser) return ..(freq, level) - return -1 + return FALSE /obj/item/device/radio/headset/syndicate //disguised to look like a normal headset for stealth ops @@ -209,32 +206,24 @@ keyslot2 = new /obj/item/device/encryptionkey/ai command = TRUE -/obj/item/device/radio/headset/ai/receive_range(freq, level) - return ..(freq, level, 1) +/obj/item/device/radio/headset/ai/can_receive(freq, level) + return ..(freq, level, TRUE) /obj/item/device/radio/headset/attackby(obj/item/W, mob/user, params) user.set_machine(src) if(istype(W, /obj/item/screwdriver)) if(keyslot || keyslot2) - - for(var/ch_name in channels) SSradio.remove_object(src, GLOB.radiochannels[ch_name]) secure_radio_connections[ch_name] = null - - if(keyslot) - var/turf/T = get_turf(user) - if(T) + var/turf/T = user.drop_location() + if(T) + if(keyslot) keyslot.forceMove(T) keyslot = null - - - - if(keyslot2) - var/turf/T = get_turf(user) - if(T) + if(keyslot2) keyslot2.forceMove(T) keyslot2 = null @@ -244,7 +233,7 @@ else to_chat(user, "This headset doesn't have any unique encryption keys! How useless...") - else if(istype(W, /obj/item/device/encryptionkey/)) + else if(istype(W, /obj/item/device/encryptionkey)) if(keyslot && keyslot2) to_chat(user, "The headset can't hold another key!") return @@ -269,26 +258,19 @@ ..() if(keyslot2) for(var/ch_name in keyslot2.channels) - if(ch_name in src.channels) - continue - src.channels += ch_name - src.channels[ch_name] = keyslot2.channels[ch_name] + if(!(ch_name in src.channels)) + channels[ch_name] = keyslot2.channels[ch_name] if(keyslot2.translate_binary) - src.translate_binary = 1 - + translate_binary = TRUE if(keyslot2.syndie) - src.syndie = 1 - + syndie = TRUE if (keyslot2.independent) independent = TRUE - for(var/ch_name in channels) secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name]) - return - /obj/item/device/radio/headset/AltClick(mob/living/user) if(!istype(user) || !Adjacent(user) || user.incapacitated()) return diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 9cd0ca5d29..77d1795b6b 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -101,25 +101,27 @@ ..() ui_interact(user, state = GLOB.default_state) -/obj/item/device/radio/intercom/receive_range(freq, level) +/obj/item/device/radio/intercom/can_receive(freq, level) if(!on) - return -1 + return FALSE if(wires.is_cut(WIRE_RX)) - return -1 + return FALSE if(!(0 in level)) var/turf/position = get_turf(src) if(isnull(position) || !(position.z in level)) - return -1 + return FALSE if(!src.listening) - return -1 - if(freq == GLOB.SYND_FREQ) + return FALSE + if(freq == FREQ_SYNDICATE) if(!(src.syndie)) - return -1//Prevents broadcast of messages over devices lacking the encryption + return FALSE//Prevents broadcast of messages over devices lacking the encryption - return canhear_range + return TRUE /obj/item/device/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) + if (message_mode == MODE_INTERCOM) + return // Avoid hearing the same thing twice if(!anyai && !(speaker in ai)) return ..() diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 8227d75069..98af604812 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -1,32 +1,11 @@ /obj/item/device/radio icon = 'icons/obj/radio.dmi' name = "station bounced radio" - suffix = "\[3\]" icon_state = "walkietalkie" item_state = "walkietalkie" desc = "A basic handheld radio that communicates with local telecommunication networks." dog_fashion = /datum/dog_fashion/back - var/on = TRUE // 0 for off - var/last_transmission - var/frequency = 1459 //common chat - var/traitor_frequency = 0 //tune to frequency to unlock traitor supplies - var/canhear_range = 3 // the range which mobs can hear this radio from - var/list/secure_radio_connections - var/prison_radio = 0 - var/b_stat = 0 - var/broadcasting = 0 - var/listening = 1 - var/translate_binary = 0 - var/freerange = 0 // 0 - Sanitize frequencies, 1 - Full range - var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h - var/obj/item/device/encryptionkey/keyslot //To allow the radio to accept encryption keys. - var/subspace_switchable = 0 - var/subspace_transmission = 0 - var/syndie = 0//Holder to see if it's a syndicate encrpyed radio - var/independent = FALSE // If true, bypasses any tcomms machinery. - var/freqlock = 0 //Frequency lock to stop the user from untuning specialist radios. - var/emped = 0 //Highjacked to track the number of consecutive EMPs on the radio, allowing consecutive EMP's to stack properly. -// "Example" = FREQ_LISTENING|FREQ_BROADCASTING + flags_1 = CONDUCT_1 | HEAR_1 flags_2 = NO_EMP_WIRES_2 slot_flags = SLOT_BELT @@ -35,12 +14,33 @@ w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=75, MAT_GLASS=25) - var/const/TRANSMISSION_DELAY = 5 // only 2/second/radio - var/const/FREQ_LISTENING = 1 - //FREQ_BROADCASTING = 2 + var/on = TRUE + var/frequency = FREQ_COMMON + var/traitor_frequency = 0 // If tuned to this frequency, uplink will be unlocked. + var/canhear_range = 3 // The range around the radio in which mobs can hear what it receives. + var/emped = 0 // Tracks the number of EMPs currently stacked. - var/command = FALSE //If we are speaking into a command headset, our text can be BOLD - var/use_command = FALSE + var/broadcasting = FALSE // Whether the radio will transmit dialogue it hears nearby. + var/listening = TRUE // Whether the radio is currently receiving. + var/prison_radio = FALSE // If true, the transmit wire starts cut. + var/unscrewed = FALSE // Whether wires are accessible. Toggleable by screwdrivering. + var/freerange = FALSE // If true, the radio has access to the full spectrum. + var/subspace_transmission = FALSE // If true, the radio transmits and receives on subspace exclusively. + var/subspace_switchable = FALSE // If true, subspace_transmission can be toggled at will. + var/freqlock = FALSE // Frequency lock to stop the user from untuning specialist radios. + var/use_command = FALSE // If true, broadcasts will be large and BOLD. + var/command = FALSE // If true, use_command can be toggled at will. + + // Encryption key handling + var/obj/item/device/encryptionkey/keyslot + var/translate_binary = FALSE // If true, can hear the special binary channel. + var/independent = FALSE // If true, can say/hear on the special CentCom channel. + var/syndie = FALSE // If true, hears all well-known channels automatically, and can say/hear on the Syndicate channel. + var/list/channels = list() // Map from name (see communications.dm) to on/off. First entry is current department (:h). + var/list/secure_radio_connections + + var/const/FREQ_LISTENING = 1 + //FREQ_BROADCASTING = 2 /obj/item/device/radio/proc/set_frequency(new_frequency) remove_radio(src, frequency) @@ -48,23 +48,19 @@ /obj/item/device/radio/proc/recalculateChannels() channels = list() - translate_binary = 0 - syndie = 0 + translate_binary = FALSE + syndie = FALSE independent = FALSE if(keyslot) for(var/ch_name in keyslot.channels) - if(ch_name in src.channels) - continue - channels += ch_name - channels[ch_name] = keyslot.channels[ch_name] + if(!(ch_name in channels)) + channels[ch_name] = keyslot.channels[ch_name] if(keyslot.translate_binary) - translate_binary = 1 - + translate_binary = TRUE if(keyslot.syndie) - syndie = 1 - + syndie = TRUE if(keyslot.independent) independent = TRUE @@ -78,10 +74,9 @@ recalculateChannels() /obj/item/device/radio/Destroy() - qdel(wires) - wires = null remove_radio_all(src) //Just to be sure - keyslot = null + QDEL_NULL(wires) + QDEL_NULL(keyslot) return ..() /obj/item/device/radio/Initialize() @@ -99,7 +94,7 @@ /obj/item/device/radio/interact(mob/user) if (..()) return - if(b_stat && !isAI(user)) + if(unscrewed && !isAI(user)) wires.interact(user) else ui_interact(user) @@ -192,41 +187,33 @@ spans = M.get_spans() if(!language) language = M.get_default_language() - INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans, language) + INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans.Copy(), language) return ITALICS | REDUCE_RANGE /obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language) if(!on) return // the device has to be on - // Fix for permacell radios, but kinda eh about actually fixing them. if(!M || !message) return - - if(wires.is_cut(WIRE_TX)) + if(wires.is_cut(WIRE_TX)) // Permacell and otherwise tampered-with radios return - if(!M.IsVocal()) return if(use_command) spans |= SPAN_COMMAND - /* Quick introduction: - This new radio system uses a very robust FTL signaling technology unoriginally - dubbed "subspace" which is somewhat similar to 'blue-space' but can't - actually transmit large mass. Headsets are the only radio devices capable - of sending subspace transmissions to the Communications Satellite. - - A headset sends a signal to a subspace listener/reciever elsewhere in space, - the signal gets processed and logged, and an audible transmission gets sent - to each individual headset. - */ - /* - be prepared to disregard any comments in all of tcomms code. i tried my best to keep them somewhat up-to-date, but eh + Roughly speaking, radios attempt to make a subspace transmittion (which + is received, processed, and rebroadcast by the telecomms satellite) and + if that fails, they send a mundane radio transmission. + + Headsets cannot send/receive mundane transmissions, only subspace. + Syndicate radios can hear transmissions on all well-known frequencies. + CentCom radios can hear the CentCom frequency no matter what. */ - //get the frequency you buttface. radios no longer use the SSradio. confusing for future generations, convenient for me. + // From the channel, determine the frequency and get a reference to it. var/freq if(channel && channels && channels.len > 0) if(channel == "department") @@ -238,271 +225,95 @@ freq = frequency channel = null - var/freqnum = text2num(freq) //Why should we call text2num three times when we can just do it here? + // Nearby active jammers severely gibberish the message var/turf/position = get_turf(src) - - var/jammed = FALSE for(var/obj/item/device/jammer/jammer in GLOB.active_jammers) if(get_dist(position,get_turf(jammer)) < jammer.range) - jammed = TRUE + message = Gibberish(message,100) break - //#### Tagging the signal with all appropriate identity values ####// + // Determine the identity information which will be attached to the signal. + var/atom/movable/virtualspeaker/speaker = new(null, M, src) - // ||-- The mob's name identity --|| - var/real_name = M.name // mob's real name - var/mobkey = "none" // player key associated with mob - var/voicemask = 0 // the speaker is wearing a voice mask - var/voice = M.GetVoice() // Why reinvent the wheel when there is a proc that does nice things already - if(ismob(M)) - var/mob/speaker = M - real_name = speaker.real_name - if(speaker.client) - mobkey = speaker.key // assign the mob's key + // Construct the signal + var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, language, message, spans) - - var/jobname // the mob's "job" - - if(jammed) - message = Gibberish(message,100) - - // --- Human: use their job as seen on the crew manifest - makes it unneeded to carry an ID for an AI to see their job - if(ishuman(M)) - var/datum/data/record/findjob = find_record("name", voice, GLOB.data_core.general) - - if(voice != real_name) - voicemask = 1 - if(findjob) - jobname = findjob.fields["rank"] - else - jobname = "Unknown" - - // --- Carbon Nonhuman --- - else if(iscarbon(M)) // Nonhuman carbon mob - jobname = "No id" - - // --- AI --- - else if(isAI(M)) - jobname = "AI" - - // --- Cyborg --- - else if(iscyborg(M)) - var/mob/living/silicon/robot/B = M - jobname = "[B.designation] Cyborg" - - // --- Personal AI (pAI) --- - else if(istype(M, /mob/living/silicon/pai)) - jobname = "Personal AI" - - // --- Cold, emotionless machines. --- - else if(isobj(M)) - jobname = "Machine" - - // --- Unidentifiable mob --- - else - jobname = "Unknown" - - /* ###### `independent` radios bypass all comms relays. ###### */ - - if(independent) - var/datum/signal/signal = new - signal.transmission_method = 2 - signal.data = list( - "mob" = M, // store a reference to the mob - "mobtype" = M.type, // the mob's type - "realname" = real_name, // the mob's real name - "name" = voice, // the mob's voice name - "job" = jobname, // the mob's job - "key" = mobkey, // the mob's key - "vmask" = voicemask, // 1 if the mob is using a voice gas mas - - "compression" = 0, // uncompressed radio signal - "message" = message, // the actual sent message - "radio" = src, // stores the radio used for transmission - "slow" = 0, - "traffic" = 0, - "type" = 0, - "server" = null, - "reject" = 0, - "level" = 0, - "language" = language, - "spans" = spans, - "verb_say" = M.verb_say, - "verb_ask" = M.verb_ask, - "verb_exclaim" = M.verb_exclaim, - "verb_yell" = M.verb_yell, - ) - signal.frequency = freqnum // Quick frequency set - Broadcast_Message(M, voicemask, - src, message, voice, jobname, real_name, - 5, signal.data["compression"], list(position.z, 0), freq, spans, - verb_say, verb_ask, verb_exclaim, verb_yell, language) + // Independent radios, on the CentCom frequency, reach all independent radios + if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE)) + signal.data["compression"] = 0 + signal.transmission_method = TRANSMISSION_SUPERSPACE + signal.levels = list(0) // reaches all Z-levels + signal.broadcast() return - /* ###### Radio headsets can only broadcast through subspace ###### */ + // All radios make an attempt to use the subspace system first + signal.send_to_receivers() - if(subspace_transmission) - // First, we want to generate a new radio signal - var/datum/signal/signal = new - signal.transmission_method = 2 // 2 would be a subspace transmission. - // transmission_method could probably be enumerated through #define. Would be neater. - // --- Finally, tag the actual signal with the appropriate values --- - signal.data = list( - // Identity-associated tags: - "mob" = M, // store a reference to the mob - "mobtype" = M.type, // the mob's type - "realname" = real_name, // the mob's real name - "name" = voice, // the mob's voice name - "job" = jobname, // the mob's job - "key" = mobkey, // the mob's key - "vmask" = voicemask, // 1 if the mob is using a voice gas mask - - // We store things that would otherwise be kept in the actual mob - // so that they can be logged even AFTER the mob is deleted or something - - // Other tags: - "compression" = rand(35,65), // compressed radio signal - "message" = message, // the actual sent message - "radio" = src, // stores the radio used for transmission - "slow" = 0, // how much to sleep() before broadcasting - simulates net lag - "traffic" = 0, // dictates the total traffic sum that the signal went through - "type" = 0, // determines what type of radio input it is: normal broadcast - "server" = null, // the last server to log this signal - "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery - "level" = position.z, // The source's z level - "language" = language, - "spans" = spans, //the span classes of this message. - "verb_say" = M.verb_say, //the verb used when talking normally - "verb_ask" = M.verb_ask, //the verb used when asking - "verb_exclaim" = M.verb_exclaim, //the verb used when exclaiming - "verb_yell" = M.verb_yell //the verb used when yelling - ) - signal.frequency = freq - - //#### Sending the signal to all subspace receivers ####// - - for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list) - R.receive_signal(signal) - - // Allinone can act as receivers. - for(var/obj/machinery/telecomms/allinone/R in GLOB.telecomms_list) - R.receive_signal(signal) - - // Receiving code can be located in Telecommunications.dm + // If the radio is subspace-only, that's all it can do + if (subspace_transmission) return + // Non-subspace radios will check in a couple of seconds, and if the signal + // was never received, send a mundane broadcast (no headsets). + addtimer(CALLBACK(src, .proc/backup_transmission, signal), 20) - /* ###### Intercoms and station-bounced radios ###### */ +/obj/item/device/radio/proc/backup_transmission(datum/signal/subspace/vocal/signal) + var/turf/T = get_turf(src) + if (signal.data["done"] && (T.z in signal.levels)) + return - var/filter_type = 2 - - var/datum/signal/signal = new - signal.transmission_method = 2 - - - /* --- Try to send a normal subspace broadcast first */ - - signal.data = list( - "mob" = M, // store a reference to the mob - "mobtype" = M.type, // the mob's type - "realname" = real_name, // the mob's real name - "name" = voice, // the mob's voice name - "job" = jobname, // the mob's job - "key" = mobkey, // the mob's key - "vmask" = voicemask, // 1 if the mob is using a voice gas mas - - "compression" = 0, // uncompressed radio signal - "message" = message, // the actual sent message - "radio" = src, // stores the radio used for transmission - "slow" = 0, - "traffic" = 0, - "type" = 0, - "server" = null, - "reject" = 0, - "level" = position.z, - "language" = language, - "spans" = spans, - "verb_say" = M.verb_say, - "verb_ask" = M.verb_ask, - "verb_exclaim" = M.verb_exclaim, - "verb_yell" = M.verb_yell - ) - signal.frequency = freqnum // Quick frequency set - for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list) - R.receive_signal(signal) - - // Allinone can act as receivers. (Unless of course whoever coded this last time forgot to put it in somewhere!) - for(var/obj/machinery/telecomms/allinone/R in GLOB.telecomms_list) - R.receive_signal(signal) - - spawn(20) // wait a little... - - if(signal.data["done"] && position.z in signal.data["level"]) - // we're done here. - return - - // Oh my god; the comms are down or something because the signal hasn't been broadcasted yet in our level. - // Send a mundane broadcast with limited targets: - Broadcast_Message(M, voicemask, - src, message, voice, jobname, real_name, - filter_type, signal.data["compression"], list(position.z), freq, spans, - verb_say, verb_ask, verb_exclaim, verb_yell, language) + // Okay, the signal was never processed, send a mundane broadcast. + signal.data["compression"] = 0 + signal.transmission_method = TRANSMISSION_RADIO + signal.levels = list(T.z) + signal.broadcast() /obj/item/device/radio/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) - if(radio_freq) + if(radio_freq || !broadcasting || get_dist(src, speaker) > canhear_range) return - if(broadcasting) - if(get_dist(src, speaker) <= canhear_range) - if(message_mode == MODE_WHISPER || message_mode == MODE_WHISPER_CRIT) - raw_message = stars(raw_message) - talk_into(speaker, raw_message, , spans, language=message_language) -/obj/item/device/radio/proc/receive_range(freq, level) - // check if this radio can receive on the given frequency, and if so, - // what the range is in which mobs will hear the radio - // returns: -1 if can't receive, range otherwise + if(message_mode == MODE_WHISPER || message_mode == MODE_WHISPER_CRIT) + // radios don't pick up whispers very well + raw_message = stars(raw_message) + else if(message_mode == MODE_L_HAND || message_mode == MODE_R_HAND) + // try to avoid being heard double + if (loc == speaker && ismob(speaker)) + var/mob/M = speaker + var/idx = M.get_held_index_of_item(src) + // left hands are odd slots + if (idx && (idx % 2) == (message_mode == MODE_L_HAND)) + return - if (wires.is_cut(WIRE_RX)) - return -1 - if(!listening) - return -1 - if(!(0 in level)) + talk_into(speaker, raw_message, , spans, language=message_language) + +// Checks if this radio can receive on the given frequency. +/obj/item/device/radio/proc/can_receive(freq, level) + // deny checks + if (!on || !listening || wires.is_cut(WIRE_RX)) + return FALSE + if (freq == FREQ_SYNDICATE && !syndie) + return FALSE + if (freq == FREQ_CENTCOM) + return independent // hard-ignores the z-level check + if (!(0 in level)) var/turf/position = get_turf(src) if(!position || !(position.z in level)) - return -1 - if(freq == GLOB.SYND_FREQ) - if(!(src.syndie)) //Checks to see if it's allowed on that frequency, based on the encryption keys - return -1 - if(freq == GLOB.CENTCOM_FREQ) - if(!independent) - return -1 - if (!on) - return -1 - if (!freq) //received on main frequency - if (!listening) - return -1 - else - var/accept = (freq==frequency && listening) - if (!accept) - for(var/ch_name in channels) - if(channels[ch_name] & FREQ_LISTENING) - if(GLOB.radiochannels[ch_name] == text2num(freq) || syndie) //the GLOB.radiochannels list is located in communications.dm - accept = 1 - break - if (!accept) - return -1 - return canhear_range + return FALSE -/obj/item/device/radio/proc/send_hear(freq, level) - - var/range = receive_range(freq, level) - if(range > -1) - return get_hearers_in_view(canhear_range, src) + // allow checks: are we listening on that frequency? + if (freq == frequency) + return TRUE + for(var/ch_name in channels) + if(channels[ch_name] & FREQ_LISTENING) + //the GLOB.radiochannels list is located in communications.dm + if(GLOB.radiochannels[ch_name] == text2num(freq) || syndie) + return TRUE + return FALSE /obj/item/device/radio/examine(mob/user) ..() - if (b_stat) + if (unscrewed) to_chat(user, "It can be attached and modified.") else to_chat(user, "It cannot be modified or attached.") @@ -510,8 +321,8 @@ /obj/item/device/radio/attackby(obj/item/W, mob/user, params) add_fingerprint(user) if(istype(W, /obj/item/screwdriver)) - b_stat = !b_stat - if(b_stat) + unscrewed = !unscrewed + if(unscrewed) to_chat(user, "The radio can now be attached and modified!") else to_chat(user, "The radio can no longer be modified or attached!") @@ -523,8 +334,8 @@ var/curremp = emped //Remember which EMP this was if (listening && ismob(loc)) // if the radio is turned on and on someone's person they notice to_chat(loc, "\The [src] overloads.") - broadcasting = 0 - listening = 0 + broadcasting = FALSE + listening = FALSE for (var/ch_name in channels) channels[ch_name] = 0 on = FALSE @@ -542,7 +353,7 @@ /obj/item/device/radio/borg name = "cyborg radio" - subspace_switchable = 1 + subspace_switchable = TRUE dog_fashion = null flags_2 = NO_EMP_WIRES_2 @@ -555,7 +366,7 @@ /obj/item/device/radio/borg/syndicate/Initialize() . = ..() - set_frequency(GLOB.SYND_FREQ) + set_frequency(FREQ_SYNDICATE) /obj/item/device/radio/borg/attackby(obj/item/W, mob/user, params) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 33d1c5257a..48396c2ffd 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -126,11 +126,6 @@ GAS ANALYZER if(H.undergoing_liver_failure() && H.stat != DEAD) to_chat(user, "Subject suffering from liver failure: apply corazone and begin a liver transplant immediately!") - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(C.has_brain_worms()) - to_chat(user, "Foreign organism detected in subject's cranium. Recommended treatment: Dosage of sucrose solution and removal of object via surgery.") - to_chat(user, "Analyzing results for [M]:\n\tOverall status: [mob_status]") // Damage descriptions @@ -399,6 +394,7 @@ GAS ANALYZER to_chat(user, "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %") to_chat(user, "Temperature: [round(environment.temperature-T0C)] °C") + /obj/item/device/slime_scanner name = "slime scanner" desc = "A device that analyzes a slime's internal composition and measures its stats." diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 5f582b9e15..009bc211b4 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -1,4 +1,3 @@ - /obj/item/extinguisher name = "fire extinguisher" desc = "A traditional red fire extinguisher." diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index 8533d579c4..9b2cd0eb2b 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -13,10 +13,13 @@ for(var/mob/living/M in get_hearers_in_view(7, flashbang_turf)) bang(get_turf(M), M) + //START OF CIT CHANGES - makes flashbangs damage blobs for(var/obj/structure/blob/B in get_hear(8,flashbang_turf)) //Blob damage here var/distance = get_dist(B, get_turf(src)) var/damage = round(100/(distance*distance)+1) B.take_damage(damage, BURN, "energy") + //END OF CIT CHANGES + qdel(src) /obj/item/grenade/flashbang/proc/bang(turf/T , mob/living/M) diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index fadf9d34de..5b96b74f41 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -1,60 +1,60 @@ -//improvised explosives// - -/obj/item/grenade/iedcasing - name = "improvised firebomb" - desc = "A weak, improvised incendiary device." - w_class = WEIGHT_CLASS_SMALL - icon = 'icons/obj/grenade.dmi' - icon_state = "improvised_grenade" - item_state = "flashbang" - lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - throw_speed = 3 - throw_range = 7 - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - active = 0 - det_time = 50 - display_timer = 0 - var/range = 3 - var/list/times - -/obj/item/grenade/iedcasing/Initialize() - . = ..() - add_overlay("improvised_grenade_filled") - add_overlay("improvised_grenade_wired") - times = list("5" = 10, "-1" = 20, "[rand(30,80)]" = 50, "[rand(65,180)]" = 20)// "Premature, Dud, Short Fuse, Long Fuse"=[weighting value] - det_time = text2num(pickweight(times)) - if(det_time < 0) //checking for 'duds' - range = 1 - det_time = rand(30,80) - else - range = pick(2,2,2,3,3,3,4) - -/obj/item/grenade/iedcasing/CheckParts(list/parts_list) - ..() - var/obj/item/reagent_containers/food/drinks/soda_cans/can = locate() in contents - if(can) - can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED - can.pixel_y = 0 - var/mutable_appearance/can_underlay = new(can) - can_underlay.layer = FLOAT_LAYER - can_underlay.plane = FLOAT_PLANE - underlays += can_underlay - - -/obj/item/grenade/iedcasing/attack_self(mob/user) // - if(!active) - if(clown_check(user)) - to_chat(user, "You light the [name]!") - cut_overlay("improvised_grenade_filled") +//improvised explosives// + +/obj/item/grenade/iedcasing + name = "improvised firebomb" + desc = "A weak, improvised incendiary device." + w_class = WEIGHT_CLASS_SMALL + icon = 'icons/obj/grenade.dmi' + icon_state = "improvised_grenade" + item_state = "flashbang" + lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' + throw_speed = 3 + throw_range = 7 + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + active = 0 + det_time = 50 + display_timer = 0 + var/range = 3 + var/list/times + +/obj/item/grenade/iedcasing/Initialize() + . = ..() + add_overlay("improvised_grenade_filled") + add_overlay("improvised_grenade_wired") + times = list("5" = 10, "-1" = 20, "[rand(30,80)]" = 50, "[rand(65,180)]" = 20)// "Premature, Dud, Short Fuse, Long Fuse"=[weighting value] + det_time = text2num(pickweight(times)) + if(det_time < 0) //checking for 'duds' + range = 1 + det_time = rand(30,80) + else + range = pick(2,2,2,3,3,3,4) + +/obj/item/grenade/iedcasing/CheckParts(list/parts_list) + ..() + var/obj/item/reagent_containers/food/drinks/soda_cans/can = locate() in contents + if(can) + can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED + can.pixel_y = 0 + var/mutable_appearance/can_underlay = new(can) + can_underlay.layer = FLOAT_LAYER + can_underlay.plane = FLOAT_PLANE + underlays += can_underlay + + +/obj/item/grenade/iedcasing/attack_self(mob/user) // + if(!active) + if(clown_check(user)) + to_chat(user, "You light the [name]!") + cut_overlay("improvised_grenade_filled") preprime(user, null, FALSE) - -/obj/item/grenade/iedcasing/prime() //Blowing that can up - update_mob() - explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball. - qdel(src) - -/obj/item/grenade/iedcasing/examine(mob/user) - ..() - to_chat(user, "You can't tell when it will explode!") + +/obj/item/grenade/iedcasing/prime() //Blowing that can up + update_mob() + explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball. + qdel(src) + +/obj/item/grenade/iedcasing/examine(mob/user) + ..() + to_chat(user, "You can't tell when it will explode!") diff --git a/code/game/objects/items/grenades/syndieminibomb.dm b/code/game/objects/items/grenades/syndieminibomb.dm index e1866a3e69..723c578a68 100644 --- a/code/game/objects/items/grenades/syndieminibomb.dm +++ b/code/game/objects/items/grenades/syndieminibomb.dm @@ -48,4 +48,4 @@ for(var/mob/living/carbon/L in T) L.adjustStaminaLoss(stamina_damage) L.bodytemperature -= 230 - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index f1c41c8f7a..8c09e87b6a 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -1,6 +1,19 @@ /obj/item/restraints breakouttime = 600 +/obj/item/restraints/Destroy() + if(iscarbon(loc)) + var/mob/living/carbon/M = loc + if(M.handcuffed == src) + M.handcuffed = null + M.update_handcuffed() + if(M.buckled && M.buckled.buckle_requires_restraints) + M.buckled.unbuckle_mob(M) + if(M.legcuffed == src) + M.legcuffed = null + M.update_inv_legcuffed() + return ..() + //Handcuffs /obj/item/restraints/handcuffs @@ -167,11 +180,6 @@ desc = "Fake handcuffs meant for gag purposes." breakouttime = 10 //Deciseconds = 1s -/obj/item/restraints/handcuffs/fake/kinky - name = "kinky handcuffs" - desc = "Fake handcuffs meant for erotic roleplay." - icon_state = "handcuffGag" - /obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) ..() if(istype(I, /obj/item/stack/rods)) @@ -379,4 +387,3 @@ B.Crossed(hit_atom) qdel(src) ..() - diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index cde3f127ed..21e3f26cd7 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -9,8 +9,8 @@ throw_speed = 3 throw_range = 4 throwforce = 10 - unique_rename = TRUE w_class = WEIGHT_CLASS_TINY + unique_rename = TRUE var/reskinned = FALSE /obj/item/nullrod/suicide_act(mob/user) @@ -354,6 +354,11 @@ w_class = WEIGHT_CLASS_HUGE sharpness = IS_SHARP +/obj/item/nullrod/armblade/tentacle + name = "unholy blessing" + icon_state = "tentacle" + item_state = "tentacle" + /obj/item/nullrod/carp name = "carp-sie plushie" desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie." diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 45c687a66f..19e8560d4d 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -3,6 +3,8 @@ name = "mop" icon = 'icons/obj/janitor.dmi' icon_state = "mop" + lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' force = 3 throwforce = 5 throw_speed = 3 diff --git a/code/game/objects/items/paiwire.dm b/code/game/objects/items/paiwire.dm index a20f89bc2b..994082c5fa 100644 --- a/code/game/objects/items/paiwire.dm +++ b/code/game/objects/items/paiwire.dm @@ -10,4 +10,4 @@ if(!user.transferItemToLoc(src, M)) return user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.") - machine = M + machine = M \ No newline at end of file diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index d291a7ca7d..a6d0d285bf 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -54,6 +54,7 @@ return if(!target) add_overlay("pinon[alert ? "alert" : ""]null") + return var/turf/here = get_turf(src) var/turf/there = get_turf(target) if(here.z != there.z) @@ -110,7 +111,8 @@ var/crewmember_name = "Unknown" if(H.wear_id) var/obj/item/card/id/I = H.wear_id.GetID() - crewmember_name = I.registered_name + if(I && I.registered_name) + crewmember_name = I.registered_name while(crewmember_name in name_counts) name_counts[crewmember_name]++ diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 8bd5d570e2..649293a7de 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -504,4 +504,4 @@ item_state = "plushie_slime" attack_verb = list("blorbled", "slimed", "absorbed") squeak_override = list('sound/effects/blobattack.ogg' = 1) - gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy + gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy \ No newline at end of file diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index f7b3f72403..8d32f95e8f 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -125,14 +125,14 @@ loadedWeightClass += I.w_class return TRUE -/obj/item/pneumatic_cannon/afterattack(atom/target, mob/living/carbon/human/user, flag, params) +/obj/item/pneumatic_cannon/afterattack(atom/target, mob/living/user, flag, params) if(flag && user.a_intent == INTENT_HARM) //melee attack return if(!istype(user)) return Fire(user, target) -/obj/item/pneumatic_cannon/proc/Fire(mob/living/carbon/human/user, var/atom/target) +/obj/item/pneumatic_cannon/proc/Fire(mob/living/user, var/atom/target) if(!istype(user) && !target) return var/discharge = 0 @@ -164,9 +164,10 @@ var/turf/T = get_target(target, get_turf(src)) playsound(src.loc, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) fire_items(T, user) - if(pressureSetting >= 3 && user) - user.visible_message("[user] is thrown down by the force of the cannon!", "[src] slams into your shoulder, knocking you down!") - user.Knockdown(60) + if(pressureSetting >= 3 && iscarbon(user)) + var/mob/living/carbon/C = user + C.visible_message("[C] is thrown down by the force of the cannon!", "[src] slams into your shoulder, knocking you down!") + C.Knockdown(60) /obj/item/pneumatic_cannon/proc/fire_items(turf/target, mob/user) if(fire_mode == PCANNON_FIREALL) @@ -272,3 +273,10 @@ selfcharge = TRUE charge_type = /obj/item/reagent_containers/food/snacks/pie/cream maxWeightClass = 60 //20 pies. + +/obj/item/pneumatic_cannon/pie/selfcharge/cyborg + name = "low velocity pie cannon" + automatic = FALSE + charge_type = /obj/item/reagent_containers/food/snacks/pie/cream/nostun + maxWeightClass = 6 //2 pies + charge_ticks = 2 //4 second/pie diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index d2f1d2a31b..aae0937bb7 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -355,6 +355,9 @@ var/hitdamage = 0 var/emaggedhitdamage = 3 +/obj/item/borg/lollipop/clown + emaggedhitdamage = 0 + /obj/item/borg/lollipop/equipped() check_amount() @@ -724,4 +727,4 @@ /obj/item/borg/sight/hud/sec/New() ..() hud = new /obj/item/clothing/glasses/hud/security(src) - return \ No newline at end of file + return diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 586d21555c..c0500f5d21 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -21,7 +21,7 @@ cut_overlays() /obj/item/target/Move() - ..() + . = ..() if(pinnedLoc) pinnedLoc.forceMove(loc) diff --git a/code/game/objects/items/signs.dm b/code/game/objects/items/signs.dm index 350daa0fc3..65716f2f30 100644 --- a/code/game/objects/items/signs.dm +++ b/code/game/objects/items/signs.dm @@ -10,13 +10,23 @@ var/label = "" var/last_wave = 0 +/obj/item/picket_sign/cyborg + name = "metallic nano-sign" + desc = "A high tech picket sign used by silicons that can reprogram its surface at will. Probably hurts to get hit by, too." + force = 13 + resistance_flags = NONE + actions_types = list(/datum/action/item_action/nano_picket_sign) + +/obj/item/picket_sign/proc/retext(mob/user) + var/txt = stripped_input(user, "What would you like to write on the sign?", "Sign Label", null , 30) + if(txt && Adjacent(user)) + label = txt + name = "[label] sign" + desc = "It reads: [label]" + /obj/item/picket_sign/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pen) || istype(W, /obj/item/toy/crayon)) - var/txt = stripped_input(user, "What would you like to write on the sign?", "Sign Label", null , 30) - if(txt) - label = txt - src.name = "[label] sign" - desc = "It reads: [label]" + retext(user) else return ..() diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 978966706e..b7df34ca08 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -9,7 +9,7 @@ points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal - grind_results = list("bluespace" = 2) + grind_results = list("bluespace" = 20) /obj/item/ore/bluespace_crystal/refined name = "refined bluespace crystal" @@ -49,7 +49,7 @@ blink_range = 4 // Not as good as the organic stuff! points = 0 //nice try refined_type = null - grind_results = list("bluespace" = 1, "silicon" = 2) + grind_results = list("bluespace" = 10, "silicon" = 20) //Polycrystals, aka stacks /obj/item/stack/sheet/bluespace_crystal @@ -60,7 +60,7 @@ materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") novariants = TRUE - grind_results = list("bluespace" = 2) + grind_results = list("bluespace" = 20) var/crystal_type = /obj/item/ore/bluespace_crystal/refined /obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 7a0f85a8f2..7ebf623218 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -111,7 +111,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' heal_brute = 40 self_delay = 20 - grind_results = list("styptic_powder" = 1) + grind_results = list("styptic_powder" = 10) /obj/item/stack/medical/bruise_pack/suicide_act(mob/user) user.visible_message("[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -148,4 +148,4 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' heal_burn = 40 self_delay = 20 - grind_results = list("silver_sulfadiazine" = 1) + grind_results = list("silver_sulfadiazine" = 10) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 8cc6a60efa..15cfc12773 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/glass - grind_results = list("silicon" = 1) + grind_results = list("silicon" = 20) /obj/item/stack/sheet/glass/cyborg materials = list() @@ -80,7 +80,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmaglass - grind_results = list("silicon" = 1, "plasma" = 1) + grind_results = list("silicon" = 20, "plasma" = 10) /obj/item/stack/sheet/plasmaglass/fifty amount = 50 @@ -130,7 +130,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/rglass - grind_results = list("silicon" = 1, "iron" = 1) + grind_results = list("silicon" = 20, "iron" = 10) /obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params) add_fingerprint(user) @@ -171,7 +171,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmarglass - grind_results = list("silicon" = 1, "plasma" = 1, "iron" = 1) + grind_results = list("silicon" = 20, "plasma" = 10, "iron" = 10) /obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.prglass_recipes diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 051d8326b8..b4482a72db 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -11,7 +11,7 @@ throw_range = 7 flags_1 = CONDUCT_1 max_amount = 60 - grind_results = list("silicon" = 1, "copper" = 1) + grind_results = list("silicon" = 20, "copper" = 5) /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 36b9cf210a..b57199cb12 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -19,10 +19,15 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ - new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = TRUE, on_floor = TRUE), \ - new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = TRUE, on_floor = TRUE), \ - new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = TRUE, on_floor = TRUE), \ - new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = TRUE, on_floor = TRUE), \ + + //CIT CHANGE - adds sofas to metal recipe list + new/datum/stack_recipe_list("sofas", list( \ + new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ + //END OF CIT CHANGES null, \ new/datum/stack_recipe_list("office chairs", list( \ new/datum/stack_recipe("dark office chair", /obj/structure/chair/office/dark, 5, one_per_turf = TRUE, on_floor = TRUE), \ @@ -325,7 +330,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal novariants = TRUE - grind_results = list("iron" = 0.5, "blood" = 1.5) + grind_results = list("iron" = 5, "blood" = 15) /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -389,7 +394,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/clockwork novariants = FALSE - grind_results = list("iron" = 0.5, "teslium" = 1.5) + grind_results = list("iron" = 5, "teslium" = 15) /obj/item/stack/tile/brass/narsie_act() new /obj/item/stack/sheet/runed_metal(loc, amount) @@ -440,7 +445,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 - grind_results = list("carbon" = 1) + grind_results = list("carbon" = 10) GLOBAL_LIST_INIT(plastic_recipes, list( new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 0e92d578a1..7463c69b4d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -109,7 +109,7 @@ if (recipes_sublist && recipe_list[recipes_sublist] && istype(recipe_list[recipes_sublist], /datum/stack_recipe_list)) var/datum/stack_recipe_list/srl = recipe_list[recipes_sublist] recipe_list = srl.recipes - var/t1 = "Amount Left: [amount]
    " + var/t1 = "Amount Left: [get_amount()]
    " for(var/i in 1 to length(recipe_list)) var/E = recipe_list[i] if (isnull(E)) @@ -161,8 +161,8 @@ if (href_list["sublist"] && !href_list["make"]) interact(usr, text2num(href_list["sublist"])) if (href_list["make"]) - if (get_amount() < 1) - qdel(src) //Never should happen + if (get_amount() < 1 && !is_cyborg) + qdel(src) var/list/recipes_list = recipes if (href_list["sublist"]) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index c88dc51474..25b123e75c 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -93,6 +93,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", if (!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return + if (user.has_disability(DISABILITY_CLUMSY) && prob(50)) to_chat(user, "[src] slips out of your hand and hits your head.") user.take_bodypart_damage(10) diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index df40b2898c..0703eba47a 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -54,3 +54,4 @@ new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) new /obj/item/suppressor/specialoffer(src) + diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 6ea3529b3b..3c1789fb7f 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -182,6 +182,8 @@ var/cy = ty boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" for(var/obj/O in contents) + if(QDELETED(O)) + continue O.screen_loc = "[cx],[cy]" O.layer = ABOVE_HUD_LAYER O.plane = ABOVE_HUD_PLANE @@ -211,6 +213,8 @@ cy-- else for(var/obj/O in contents) + if(QDELETED(O)) + continue O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip" O.screen_loc = "[cx]:16,[cy]:16" O.maptext = "" @@ -244,6 +248,8 @@ numbered_contents = list() adjusted_contents = 0 for(var/obj/item/I in contents) + if(QDELETED(I)) + continue var/found = 0 for(var/datum/numbered_display/ND in numbered_contents) if(ND.sample_object.type == I.type) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 8a3dc21dbe..f1cc7c7c25 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -327,7 +327,7 @@ /obj/effect/resin_container/proc/Smoke() var/obj/effect/particle_effect/foam/metal/resin/S = new /obj/effect/particle_effect/foam/metal/resin(get_turf(loc)) - S.amount = 3 + S.amount = 4 playsound(src,'sound/effects/bamf.ogg',100,1) qdel(src) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 7012eee386..c3022a7758 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -1,3 +1,4 @@ + #define SOURCE_PORTAL 1 #define DESTINATION_PORTAL 2 @@ -16,7 +17,7 @@ icon = 'icons/obj/device.dmi' icon_state = "locator" var/temp = null - var/frequency = 1451 + var/frequency = FREQ_LOCATOR_IMPLANT var/broadcasting = null var/listening = 1 flags_1 = CONDUCT_1 @@ -207,7 +208,7 @@ Frequency: current_area = current_location.loc if(!current_location || current_area.noteleport || is_away_level(current_location.z) || !isturf(user.loc))//If turf was not found or they're on z level 2 or >7 which does not currently exist. or if user is not located on a turf to_chat(user, "\The [src] is malfunctioning.") - return + return user.show_message("Locked In.", 2) var/list/obj/effect/portal/created = create_portal_pair(current_location, get_teleport_turf(get_turf(T)), src, 300, 1) if(!(LAZYLEN(created) == 2)) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index e00513a47a..95d209585f 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -138,7 +138,7 @@ return FALSE forceMove(tongs) tongs.sliver = src - tongs.icon_state = "supermatter_tongs_loaded" + tongs.update_icon() to_chat(user, "You carefully pick up [src] with [tongs].") else if(istype(W, /obj/item/scalpel/supermatter) || istype(W, /obj/item/nuke_core_container/supermatter/)) // we don't want it to dust return @@ -217,6 +217,12 @@ QDEL_NULL(sliver) return ..() +/obj/item/hemostat/supermatter/update_icon() + if(sliver) + icon_state = "supermatter_tongs_loaded" + else + icon_state = "supermatter_tongs" + /obj/item/hemostat/supermatter/afterattack(atom/O, mob/user, proximity) if(!sliver) return @@ -224,12 +230,14 @@ Consume(O) to_chat(usr, "\The [sliver] is dusted along with \the [O]!") QDEL_NULL(sliver) + update_icon() /obj/item/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins if(sliver) sliver.forceMove(loc) to_chat(usr, "\The [sliver] falls out of \the [src] as you throw them.") sliver = null + update_icon() ..() /obj/item/hemostat/supermatter/proc/Consume(atom/movable/AM, mob/user) @@ -247,6 +255,5 @@ radiation_pulse(user, 500, 2) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) user.dust() - icon_state = "supermatter_tongs" QDEL_NULL(sliver) - + update_icon() diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 12c056c9af..289b4dc5e2 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -342,4 +342,4 @@ nextrefueltick = world.time + 10 reagents.add_reagent("welding_fuel", 1) -#undef WELDER_FUEL_BURN_INTERVAL +#undef WELDER_FUEL_BURN_INTERVAL \ No newline at end of file diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index c03469164e..910b98b27a 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -14,7 +14,8 @@ materials = list(MAT_METAL=80) attack_verb = list("pinched", "nipped") hitsound = 'sound/items/wirecutter.ogg' - usesound = 'sound/items/wirecutter.ogg' + usesound = 'sound/items/wirecutter.ogg' + tool_behaviour = TOOL_WIRECUTTER toolspeed = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) @@ -32,10 +33,6 @@ if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable)) user.visible_message("[user] cuts [C]'s restraints with [src]!") qdel(C.handcuffed) - C.handcuffed = null - if(C.buckled && C.buckled.buckle_requires_restraints) - C.buckled.unbuckle_mob(C) - C.update_handcuffed() return else ..() @@ -58,7 +55,8 @@ desc = "Extremely sharp wirecutters, made out of a silvery-green metal." icon = 'icons/obj/abductor.dmi' icon_state = "cutters" - toolspeed = 0.1 + toolspeed = 0.1 + random_color = FALSE /obj/item/wirecutters/cyborg @@ -70,7 +68,8 @@ name = "jaws of life" desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head." icon_state = "jaws_cutter" - item_state = "jawsoflife" + item_state = "jawsoflife" + materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) usesound = 'sound/items/jaws_cut.ogg' toolspeed = 0.25 @@ -92,4 +91,12 @@ var/obj/item/crowbar/power/pryjaws = new /obj/item/crowbar/power to_chat(user, "You attach the pry jaws to [src].") qdel(src) - user.put_in_active_hand(pryjaws) \ No newline at end of file + user.put_in_active_hand(pryjaws) + +/obj/item/wirecutters/power/attack(mob/living/carbon/C, mob/user) + if(istype(C) && C.handcuffed) + user.visible_message("[user] cuts [C]'s restraints with [src]!") + qdel(C.handcuffed) + return + else + ..() diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index b1313ef84f..7d371102c3 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -81,4 +81,4 @@ /obj/item/trash/coal/burn() visible_message("[src] fuses into a diamond! Someone wasn't so naughty after all...") new /obj/item/ore/diamond(loc) - qdel(src) + qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 539c3c70a0..8618d090bf 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -122,6 +122,10 @@ flags_1 = ABSTRACT_1 | NODROP_1 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF +/obj/item/twohanded/offhand/Destroy() + wielded = FALSE + return ..() + /obj/item/twohanded/offhand/unwield() if(wielded)//Only delete if we're wielded wielded = FALSE diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 37d0c6cb0e..2656079557 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -409,7 +409,7 @@ righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' flags_1 = NODROP_1 | ABSTRACT_1 | DROPDEL_1 w_class = WEIGHT_CLASS_HUGE - force = 21 + force = 24 throwforce = 0 throw_range = 0 throw_speed = 0 diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index ae79c7e86d..b053b987ca 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -70,7 +70,7 @@ /obj/structure/alien/resin/Move() var/turf/T = loc - ..() + . = ..() move_update_air(T) /obj/structure/alien/resin/wall diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index aabbba6b2f..f4af05c9c9 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -30,7 +30,7 @@ //Stick to the easel like glue /obj/structure/easel/Move() var/turf/T = get_turf(src) - ..() + . = ..() if(painting && painting.loc == T) //Only move if it's near us. painting.forceMove(get_turf(src)) else diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 1a09c9c4c2..56a38cb688 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -21,6 +21,10 @@ var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 2 +/obj/structure/bed/examine(mob/user) + ..() + to_chat(user, "It's held together by a couple of bolts.") + /obj/structure/bed/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) if(buildstacktype) @@ -145,7 +149,7 @@ /obj/item/roller/robo/examine(mob/user) ..() - to_chat(user, "The dock is [loaded ? "loaded" : "empty"]") + to_chat(user, "The dock is [loaded ? "loaded" : "empty"].") /obj/item/roller/robo/deploy_roller(mob/user, atom/location) if(loaded) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 1dc4764bcf..c56a0c5008 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -1,107 +1,107 @@ -/obj/structure/closet/cabinet - name = "cabinet" - desc = "Old will forever be in fashion." - icon_state = "cabinet" - resistance_flags = FLAMMABLE - max_integrity = 70 - -/obj/structure/closet/acloset - name = "strange closet" - desc = "It looks alien!" - icon_state = "alien" - - -/obj/structure/closet/gimmick - name = "administrative supply closet" - desc = "It's a storage unit for things that have no right being here." - icon_state = "syndicate" - -/obj/structure/closet/gimmick/russian - name = "russian surplus closet" - desc = "It's a storage unit for Russian standard-issue surplus." - -/obj/structure/closet/gimmick/russian/PopulateContents() - ..() - for(var/i in 1 to 5) - new /obj/item/clothing/head/ushanka(src) - for(var/i in 1 to 5) - new /obj/item/clothing/under/soviet(src) - -/obj/structure/closet/gimmick/tacticool - name = "tacticool gear closet" - desc = "It's a storage unit for Tacticool gear." - -/obj/structure/closet/gimmick/tacticool/PopulateContents() - ..() - new /obj/item/clothing/glasses/eyepatch(src) - new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/head/helmet/swat(src) - new /obj/item/clothing/head/helmet/swat(src) - new /obj/item/clothing/mask/gas/sechailer/swat(src) - new /obj/item/clothing/mask/gas/sechailer/swat(src) - new /obj/item/clothing/shoes/combat/swat(src) - new /obj/item/clothing/shoes/combat/swat(src) - new /obj/item/clothing/suit/space/hardsuit/deathsquad(src) - new /obj/item/clothing/suit/space/hardsuit/deathsquad(src) - new /obj/item/clothing/under/syndicate/tacticool(src) - new /obj/item/clothing/under/syndicate/tacticool(src) - - -/obj/structure/closet/thunderdome - name = "\improper Thunderdome closet" - desc = "Everything you need!" +/obj/structure/closet/cabinet + name = "cabinet" + desc = "Old will forever be in fashion." + icon_state = "cabinet" + resistance_flags = FLAMMABLE + max_integrity = 70 + +/obj/structure/closet/acloset + name = "strange closet" + desc = "It looks alien!" + icon_state = "alien" + + +/obj/structure/closet/gimmick + name = "administrative supply closet" + desc = "It's a storage unit for things that have no right being here." + icon_state = "syndicate" + +/obj/structure/closet/gimmick/russian + name = "russian surplus closet" + desc = "It's a storage unit for Russian standard-issue surplus." + +/obj/structure/closet/gimmick/russian/PopulateContents() + ..() + for(var/i in 1 to 5) + new /obj/item/clothing/head/ushanka(src) + for(var/i in 1 to 5) + new /obj/item/clothing/under/soviet(src) + +/obj/structure/closet/gimmick/tacticool + name = "tacticool gear closet" + desc = "It's a storage unit for Tacticool gear." + +/obj/structure/closet/gimmick/tacticool/PopulateContents() + ..() + new /obj/item/clothing/glasses/eyepatch(src) + new /obj/item/clothing/glasses/sunglasses(src) + new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/head/helmet/swat(src) + new /obj/item/clothing/head/helmet/swat(src) + new /obj/item/clothing/mask/gas/sechailer/swat(src) + new /obj/item/clothing/mask/gas/sechailer/swat(src) + new /obj/item/clothing/shoes/combat/swat(src) + new /obj/item/clothing/shoes/combat/swat(src) + new /obj/item/clothing/suit/space/hardsuit/deathsquad(src) + new /obj/item/clothing/suit/space/hardsuit/deathsquad(src) + new /obj/item/clothing/under/syndicate/tacticool(src) + new /obj/item/clothing/under/syndicate/tacticool(src) + + +/obj/structure/closet/thunderdome + name = "\improper Thunderdome closet" + desc = "Everything you need!" anchored = TRUE - -/obj/structure/closet/thunderdome/tdred - name = "red-team Thunderdome closet" - icon_door = "red" - -/obj/structure/closet/thunderdome/tdred/PopulateContents() - ..() - for(var/i in 1 to 3) - new /obj/item/clothing/suit/armor/tdome/red(src) - for(var/i in 1 to 3) + +/obj/structure/closet/thunderdome/tdred + name = "red-team Thunderdome closet" + icon_door = "red" + +/obj/structure/closet/thunderdome/tdred/PopulateContents() + ..() + for(var/i in 1 to 3) + new /obj/item/clothing/suit/armor/tdome/red(src) + for(var/i in 1 to 3) new /obj/item/melee/transforming/energy/sword/saber(src) - for(var/i in 1 to 3) - new /obj/item/gun/energy/laser(src) - for(var/i in 1 to 3) - new /obj/item/melee/baton/loaded(src) - for(var/i in 1 to 3) - new /obj/item/storage/box/flashbangs(src) - for(var/i in 1 to 3) - new /obj/item/clothing/head/helmet/thunderdome(src) - -/obj/structure/closet/thunderdome/tdgreen - name = "green-team Thunderdome closet" - icon_door = "green" - -/obj/structure/closet/thunderdome/tdgreen/PopulateContents() - ..() - for(var/i in 1 to 3) - new /obj/item/clothing/suit/armor/tdome/green(src) - for(var/i in 1 to 3) + for(var/i in 1 to 3) + new /obj/item/gun/energy/laser(src) + for(var/i in 1 to 3) + new /obj/item/melee/baton/loaded(src) + for(var/i in 1 to 3) + new /obj/item/storage/box/flashbangs(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/helmet/thunderdome(src) + +/obj/structure/closet/thunderdome/tdgreen + name = "green-team Thunderdome closet" + icon_door = "green" + +/obj/structure/closet/thunderdome/tdgreen/PopulateContents() + ..() + for(var/i in 1 to 3) + new /obj/item/clothing/suit/armor/tdome/green(src) + for(var/i in 1 to 3) new /obj/item/melee/transforming/energy/sword/saber(src) - for(var/i in 1 to 3) - new /obj/item/gun/energy/laser(src) - for(var/i in 1 to 3) - new /obj/item/melee/baton/loaded(src) - for(var/i in 1 to 3) - new /obj/item/storage/box/flashbangs(src) - for(var/i in 1 to 3) - new /obj/item/clothing/head/helmet/thunderdome(src) - -/obj/structure/closet/malf/suits - desc = "It's a storage unit for operational gear." - icon_state = "syndicate" - -/obj/structure/closet/malf/suits/PopulateContents() - ..() - new /obj/item/tank/jetpack/void(src) - new /obj/item/clothing/mask/breath(src) - new /obj/item/clothing/head/helmet/space/nasavoid(src) - new /obj/item/clothing/suit/space/nasavoid(src) - new /obj/item/crowbar(src) - new /obj/item/stock_parts/cell(src) - new /obj/item/device/multitool(src) + for(var/i in 1 to 3) + new /obj/item/gun/energy/laser(src) + for(var/i in 1 to 3) + new /obj/item/melee/baton/loaded(src) + for(var/i in 1 to 3) + new /obj/item/storage/box/flashbangs(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/helmet/thunderdome(src) + +/obj/structure/closet/malf/suits + desc = "It's a storage unit for operational gear." + icon_state = "syndicate" + +/obj/structure/closet/malf/suits/PopulateContents() + ..() + new /obj/item/tank/jetpack/void(src) + new /obj/item/clothing/mask/breath(src) + new /obj/item/clothing/head/helmet/space/nasavoid(src) + new /obj/item/clothing/suit/space/nasavoid(src) + new /obj/item/crowbar(src) + new /obj/item/stock_parts/cell(src) + new /obj/item/device/multitool(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 42fd4d2374..a41710ea7d 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -365,3 +365,4 @@ new /obj/item/clothing/under/rank/curator/treasure_hunter(src) new /obj/item/clothing/shoes/workboots/mining(src) new /obj/item/storage/backpack/satchel/explorer(src) + diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index fb9732c3f7..f0c1495281 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -1,11 +1,11 @@ -/obj/structure/closet/secure_closet/bar - name = "booze storage" +/obj/structure/closet/secure_closet/bar + name = "booze storage" req_access = list(ACCESS_BAR) - icon_state = "cabinet" - resistance_flags = FLAMMABLE - max_integrity = 70 - -/obj/structure/closet/secure_closet/bar/PopulateContents() - ..() - for(var/i in 1 to 10) - new /obj/item/reagent_containers/food/drinks/beer( src ) + icon_state = "cabinet" + resistance_flags = FLAMMABLE + max_integrity = 70 + +/obj/structure/closet/secure_closet/bar/PopulateContents() + ..() + for(var/i in 1 to 10) + new /obj/item/reagent_containers/food/drinks/beer( src ) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index adcb8cb498..37fe71a3f5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -1,13 +1,13 @@ -/obj/structure/closet/secure_closet/hydroponics - name = "botanist's locker" +/obj/structure/closet/secure_closet/hydroponics + name = "botanist's locker" req_access = list(ACCESS_HYDROPONICS) - icon_state = "hydro" - -/obj/structure/closet/secure_closet/hydroponics/PopulateContents() - ..() - new /obj/item/storage/bag/plants/portaseeder(src) - new /obj/item/device/plant_analyzer(src) - new /obj/item/device/radio/headset/headset_srv(src) - new /obj/item/cultivator(src) - new /obj/item/hatchet(src) + icon_state = "hydro" + +/obj/structure/closet/secure_closet/hydroponics/PopulateContents() + ..() + new /obj/item/storage/bag/plants/portaseeder(src) + new /obj/item/device/plant_analyzer(src) + new /obj/item/device/radio/headset/headset_srv(src) + new /obj/item/cultivator(src) + new /obj/item/hatchet(src) new /obj/item/storage/box/disks_plantgene(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index dff240e1da..dcee41585d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -73,8 +73,8 @@ new /obj/item/device/autosurgeon/cmo(src) new /obj/item/door_remote/chief_medical_officer(src) new /obj/item/clothing/neck/petcollar(src) - new /obj/item/circuitboard/machine/protolathe/department/medical(src) new /obj/item/pet_carrier(src) + new /obj/item/circuitboard/machine/protolathe/department/medical(src) /obj/structure/closet/secure_closet/animal name = "animal control" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 00b74305aa..51f2c96c3a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -1,53 +1,53 @@ -/obj/structure/closet/secure_closet/personal - desc = "It's a secure locker for personnel. The first card swiped gains control." - name = "personal closet" +/obj/structure/closet/secure_closet/personal + desc = "It's a secure locker for personnel. The first card swiped gains control." + name = "personal closet" req_access = list(ACCESS_ALL_PERSONAL_LOCKERS) - var/registered_name = null - -/obj/structure/closet/secure_closet/personal/PopulateContents() - ..() - if(prob(50)) - new /obj/item/storage/backpack/duffelbag(src) - if(prob(50)) - new /obj/item/storage/backpack(src) - else - new /obj/item/storage/backpack/satchel(src) - new /obj/item/device/radio/headset( src ) - -/obj/structure/closet/secure_closet/personal/patient - name = "patient's closet" - -/obj/structure/closet/secure_closet/personal/patient/PopulateContents() - new /obj/item/clothing/under/color/white( src ) - new /obj/item/clothing/shoes/sneakers/white( src ) - -/obj/structure/closet/secure_closet/personal/cabinet - icon_state = "cabinet" - resistance_flags = FLAMMABLE - max_integrity = 70 - -/obj/structure/closet/secure_closet/personal/cabinet/PopulateContents() - new /obj/item/storage/backpack/satchel/leather/withwallet( src ) + var/registered_name = null + +/obj/structure/closet/secure_closet/personal/PopulateContents() + ..() + if(prob(50)) + new /obj/item/storage/backpack/duffelbag(src) + if(prob(50)) + new /obj/item/storage/backpack(src) + else + new /obj/item/storage/backpack/satchel(src) + new /obj/item/device/radio/headset( src ) + +/obj/structure/closet/secure_closet/personal/patient + name = "patient's closet" + +/obj/structure/closet/secure_closet/personal/patient/PopulateContents() + new /obj/item/clothing/under/color/white( src ) + new /obj/item/clothing/shoes/sneakers/white( src ) + +/obj/structure/closet/secure_closet/personal/cabinet + icon_state = "cabinet" + resistance_flags = FLAMMABLE + max_integrity = 70 + +/obj/structure/closet/secure_closet/personal/cabinet/PopulateContents() + new /obj/item/storage/backpack/satchel/leather/withwallet( src ) new /obj/item/device/instrument/piano_synth(src) - new /obj/item/device/radio/headset( src ) - -/obj/structure/closet/secure_closet/personal/attackby(obj/item/W, mob/user, params) - var/obj/item/card/id/I = W.GetID() - if(istype(I)) - if(broken) - to_chat(user, "It appears to be broken.") - return - if(!I || !I.registered_name) - return - if(allowed(user) || !registered_name || (istype(I) && (registered_name == I.registered_name))) - //they can open all lockers, or nobody owns this, or they own this locker - locked = !locked - update_icon() - - if(!registered_name) - registered_name = I.registered_name - desc = "Owned by [I.registered_name]." - else - to_chat(user, "Access Denied.") - else + new /obj/item/device/radio/headset( src ) + +/obj/structure/closet/secure_closet/personal/attackby(obj/item/W, mob/user, params) + var/obj/item/card/id/I = W.GetID() + if(istype(I)) + if(broken) + to_chat(user, "It appears to be broken.") + return + if(!I || !I.registered_name) + return + if(allowed(user) || !registered_name || (istype(I) && (registered_name == I.registered_name))) + //they can open all lockers, or nobody owns this, or they own this locker + locked = !locked + update_icon() + + if(!registered_name) + registered_name = I.registered_name + desc = "Owned by [I.registered_name]." + else + to_chat(user, "Access Denied.") + else return ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 8b1e82ed81..158e4d348d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -1,5 +1,5 @@ -/obj/structure/closet/secure_closet/RD - name = "\proper research director's locker" +/obj/structure/closet/secure_closet/RD + name = "\proper research director's locker" req_access = list(ACCESS_RD) icon_state = "rd" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 4dccd78bca..215384054b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -1,13 +1,13 @@ -/obj/structure/closet/secure_closet - name = "secure locker" - desc = "It's a card-locked storage unit." +/obj/structure/closet/secure_closet + name = "secure locker" + desc = "It's a card-locked storage unit." locked = TRUE - icon_state = "secure" - max_integrity = 250 - armor = list(melee = 30, bullet = 50, laser = 50, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) + icon_state = "secure" + max_integrity = 250 + armor = list(melee = 30, bullet = 50, laser = 50, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) secure = TRUE - -/obj/structure/closet/secure_closet/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) - if(damage_flag == "melee" && damage_amount < 20) - return 0 + +/obj/structure/closet/secure_closet/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) + if(damage_flag == "melee" && damage_amount < 20) + return 0 . = ..() \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 6491306600..2eae2a9fb9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -29,7 +29,7 @@ new /obj/item/clothing/gloves/color/captain(src) new /obj/item/restraints/handcuffs/cable/zipties(src) new /obj/item/storage/belt/sabre(src) - new /obj/item/gun/energy/e_gun/cx(src) + new /obj/item/gun/energy/e_gun(src) new /obj/item/door_remote/captain(src) /obj/structure/closet/secure_closet/hop @@ -52,7 +52,7 @@ new /obj/item/device/assembly/flash/handheld(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/restraints/handcuffs/cable/zipties(src) - new /obj/item/gun/energy/e_gun/cx(src) + new /obj/item/gun/energy/e_gun(src) new /obj/item/clothing/neck/petcollar(src) new /obj/item/pet_carrier(src) new /obj/item/door_remote/civillian(src) @@ -70,8 +70,6 @@ new /obj/item/device/radio/headset/heads/hos(src) new /obj/item/clothing/under/hosparadefem(src) new /obj/item/clothing/under/hosparademale(src) - new /obj/item/clothing/under/rank/head_of_security/skirt(src) - new /obj/item/clothing/suit/armor/hos/trenchcoat/cloak(src) new /obj/item/clothing/suit/armor/vest/leather(src) new /obj/item/clothing/suit/armor/hos(src) new /obj/item/clothing/under/rank/head_of_security/alt(src) @@ -90,6 +88,7 @@ new /obj/item/gun/energy/e_gun/hos(src) new /obj/item/device/flashlight/seclite(src) new /obj/item/pinpointer/nuke(src) + new /obj/item/circuitboard/machine/protolathe/department/security(src) /obj/structure/closet/secure_closet/warden name = "\proper warden's locker" @@ -122,7 +121,6 @@ /obj/structure/closet/secure_closet/security/PopulateContents() ..() - new /obj/item/clothing/under/rank/security/skirt(src) new /obj/item/clothing/suit/armor/vest(src) new /obj/item/clothing/head/helmet/sec(src) new /obj/item/device/radio/headset/headset_sec(src) diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm index 5261bb5332..b9f0f4b4a7 100644 --- a/code/game/objects/structures/crates_lockers/crates/critter.dm +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -35,4 +35,4 @@ if(tank) return tank.air_contents else - return loc.return_air() + return loc.return_air() \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm index 61b9998233..30da3add67 100644 --- a/code/game/objects/structures/crates_lockers/crates/large.dm +++ b/code/game/objects/structures/crates_lockers/crates/large.dm @@ -1,34 +1,34 @@ -/obj/structure/closet/crate/large - name = "large crate" - desc = "A hefty wooden crate." - icon_state = "largecrate" +/obj/structure/closet/crate/large + name = "large crate" + desc = "A hefty wooden crate." + icon_state = "largecrate" density = TRUE - material_drop = /obj/item/stack/sheet/mineral/wood - delivery_icon = "deliverybox" - -/obj/structure/closet/crate/large/attack_hand(mob/user) - add_fingerprint(user) - if(manifest) - tear_manifest(user) - else - to_chat(user, "You need a crowbar to pry this open!") - -/obj/structure/closet/crate/large/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/crowbar)) - var/turf/T = get_turf(src) - if(manifest) - tear_manifest(user) - - user.visible_message("[user] pries \the [src] open.", \ - "You pry open \the [src].", \ - "You hear splitting wood.") - playsound(src.loc, 'sound/weapons/slashmiss.ogg', 75, 1) - - for(var/i in 1 to rand(2, 5)) - new material_drop(src) - for(var/atom/movable/AM in contents) - AM.forceMove(T) - - qdel(src) - else - return ..() + material_drop = /obj/item/stack/sheet/mineral/wood + delivery_icon = "deliverybox" + +/obj/structure/closet/crate/large/attack_hand(mob/user) + add_fingerprint(user) + if(manifest) + tear_manifest(user) + else + to_chat(user, "You need a crowbar to pry this open!") + +/obj/structure/closet/crate/large/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/crowbar)) + var/turf/T = get_turf(src) + if(manifest) + tear_manifest(user) + + user.visible_message("[user] pries \the [src] open.", \ + "You pry open \the [src].", \ + "You hear splitting wood.") + playsound(src.loc, 'sound/weapons/slashmiss.ogg', 75, 1) + + for(var/i in 1 to rand(2, 5)) + new material_drop(src) + for(var/atom/movable/AM in contents) + AM.forceMove(T) + + qdel(src) + else + return ..() diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 30384d2da9..0f8ad84252 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -115,7 +115,7 @@ /obj/structure/displaycase/attackby(obj/item/W, mob/user, params) if(W.GetID() && !broken && openable) if(allowed(user)) - to_chat(user, "You [open ? "close":"open"] the [src]") + to_chat(user, "You [open ? "close":"open"] [src].") toggle_lock(user) else to_chat(user, "Access denied.") @@ -140,9 +140,9 @@ to_chat(user, "You remove the destroyed case") qdel(src) else - to_chat(user, "You start to [open ? "close":"open"] the [src]") + to_chat(user, "You start to [open ? "close":"open"] [src].") if(do_after(user, 20*W.toolspeed, target = src)) - to_chat(user, "You [open ? "close":"open"] the [src]") + to_chat(user, "You [open ? "close":"open"] [src].") toggle_lock(user) else if(open && !showpiece) if(user.transferItemToLoc(W, src)) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 43bb540375..22d00d6cab 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -25,245 +25,11 @@ update_name() ..() -/obj/structure/door_assembly/door_assembly_public - name = "public airlock assembly" - icon = 'icons/obj/doors/airlocks/station2/glass.dmi' - overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' - glass_type = /obj/machinery/door/airlock/public/glass - airlock_type = /obj/machinery/door/airlock/public - -/obj/structure/door_assembly/door_assembly_com - name = "command airlock assembly" - icon = 'icons/obj/doors/airlocks/station/command.dmi' - base_name = "command airlock" - glass_type = /obj/machinery/door/airlock/glass_command - airlock_type = /obj/machinery/door/airlock/command - -/obj/structure/door_assembly/door_assembly_sec - name = "security airlock assembly" - icon = 'icons/obj/doors/airlocks/station/security.dmi' - base_name = "security airlock" - glass_type = /obj/machinery/door/airlock/glass_security - airlock_type = /obj/machinery/door/airlock/security - -/obj/structure/door_assembly/door_assembly_eng - name = "engineering airlock assembly" - icon = 'icons/obj/doors/airlocks/station/engineering.dmi' - base_name = "engineering airlock" - glass_type = /obj/machinery/door/airlock/glass_engineering - airlock_type = /obj/machinery/door/airlock/engineering - -/obj/structure/door_assembly/door_assembly_min - name = "mining airlock assembly" - icon = 'icons/obj/doors/airlocks/station/mining.dmi' - base_name = "mining airlock" - glass_type = /obj/machinery/door/airlock/glass_mining - airlock_type = /obj/machinery/door/airlock/mining - -/obj/structure/door_assembly/door_assembly_atmo - name = "atmospherics airlock assembly" - icon = 'icons/obj/doors/airlocks/station/atmos.dmi' - base_name = "atmospherics airlock" - glass_type = /obj/machinery/door/airlock/glass_atmos - airlock_type = /obj/machinery/door/airlock/atmos - -/obj/structure/door_assembly/door_assembly_research - name = "research airlock assembly" - icon = 'icons/obj/doors/airlocks/station/research.dmi' - base_name = "research airlock" - glass_type = /obj/machinery/door/airlock/glass_research - airlock_type = /obj/machinery/door/airlock/research - -/obj/structure/door_assembly/door_assembly_science - name = "science airlock assembly" - icon = 'icons/obj/doors/airlocks/station/science.dmi' - base_name = "science airlock" - glass_type = /obj/machinery/door/airlock/glass_science - airlock_type = /obj/machinery/door/airlock/science - -/obj/structure/door_assembly/door_assembly_med - name = "medical airlock assembly" - icon = 'icons/obj/doors/airlocks/station/medical.dmi' - base_name = "medical airlock" - glass_type = /obj/machinery/door/airlock/glass_medical - airlock_type = /obj/machinery/door/airlock/medical - -/obj/structure/door_assembly/door_assembly_mai - name = "maintenance airlock assembly" - icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' - base_name = "maintenance airlock" - glass_type = /obj/machinery/door/airlock/glass_maintenance - airlock_type = /obj/machinery/door/airlock/maintenance - -/obj/structure/door_assembly/door_assembly_extmai - name = "external maintenance airlock assembly" - icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi' - base_name = "external maintenance airlock" - glass_type = /obj/machinery/door/airlock/maintenance/external/glass - airlock_type = /obj/machinery/door/airlock/maintenance/external - -/obj/structure/door_assembly/door_assembly_ext - name = "external airlock assembly" - icon = 'icons/obj/doors/airlocks/external/external.dmi' - base_name = "external airlock" - overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi' - glass_type = /obj/machinery/door/airlock/external/glass - airlock_type = /obj/machinery/door/airlock/external - -/obj/structure/door_assembly/door_assembly_fre - name = "freezer airlock assembly" - icon = 'icons/obj/doors/airlocks/station/freezer.dmi' - base_name = "freezer airlock" - airlock_type = /obj/machinery/door/airlock/freezer - noglass = TRUE - -/obj/structure/door_assembly/door_assembly_hatch - name = "airtight hatch assembly" - icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi' - base_name = "airtight hatch" - overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/hatch - noglass = TRUE - -/obj/structure/door_assembly/door_assembly_mhatch - name = "maintenance hatch assembly" - icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi' - base_name = "maintenance hatch" - overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/maintenance_hatch - noglass = TRUE - -/obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly - name = "high security airlock assembly" - icon = 'icons/obj/doors/airlocks/highsec/highsec.dmi' - base_name = "high security airlock" - overlays_file = 'icons/obj/doors/airlocks/highsec/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/highsecurity - noglass = TRUE - material_type = /obj/item/stack/sheet/plasteel - material_amt = 6 - -/obj/structure/door_assembly/door_assembly_vault - name = "vault door assembly" - icon = 'icons/obj/doors/airlocks/vault/vault.dmi' - base_name = "vault door" - overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/vault - noglass = TRUE - material_type = /obj/item/stack/sheet/plasteel - material_amt = 8 - -/obj/structure/door_assembly/door_assembly_shuttle - name = "shuttle airlock assembly" - icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi' - base_name = "shuttle airlock" - overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/shuttle - glass_type = /obj/machinery/door/airlock/shuttle/glass - -/obj/structure/door_assembly/door_assembly_cult - name = "cult airlock assembly" - icon = 'icons/obj/doors/airlocks/cult/runed/cult.dmi' - base_name = "cult airlock" - overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/cult - glass_type = /obj/machinery/door/airlock/cult/glass - -/obj/structure/door_assembly/door_assembly_cult/unruned - icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi' - overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/cult/unruned - glass_type = /obj/machinery/door/airlock/cult/unruned/glass - -/obj/structure/door_assembly/door_assembly_viro - name = "virology airlock assembly" - icon = 'icons/obj/doors/airlocks/station/virology.dmi' - base_name = "virology airlock" - glass_type = /obj/machinery/door/airlock/glass_virology - airlock_type = /obj/machinery/door/airlock/virology - -/obj/structure/door_assembly/door_assembly_centcom - icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' - overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/centcom - noglass = TRUE - -/obj/structure/door_assembly/door_assembly_gold - name = "gold airlock assembly" - icon = 'icons/obj/doors/airlocks/station/gold.dmi' - base_name = "gold airlock" - airlock_type = /obj/machinery/door/airlock/gold - mineral = "gold" - glass_type = /obj/machinery/door/airlock/gold/glass - -/obj/structure/door_assembly/door_assembly_silver - name = "silver airlock assembly" - icon = 'icons/obj/doors/airlocks/station/silver.dmi' - base_name = "silver airlock" - airlock_type = /obj/machinery/door/airlock/silver - mineral = "silver" - glass_type = /obj/machinery/door/airlock/silver/glass - -/obj/structure/door_assembly/door_assembly_diamond - name = "diamond airlock assembly" - icon = 'icons/obj/doors/airlocks/station/diamond.dmi' - base_name = "diamond airlock" - airlock_type = /obj/machinery/door/airlock/diamond - mineral = "diamond" - glass_type = /obj/machinery/door/airlock/diamond/glass - -/obj/structure/door_assembly/door_assembly_uranium - name = "uranium airlock assembly" - icon = 'icons/obj/doors/airlocks/station/uranium.dmi' - base_name = "uranium airlock" - airlock_type = /obj/machinery/door/airlock/uranium - mineral = "uranium" - glass_type = /obj/machinery/door/airlock/uranium/glass - -/obj/structure/door_assembly/door_assembly_plasma - name = "plasma airlock assembly" - icon = 'icons/obj/doors/airlocks/station/plasma.dmi' - base_name = "plasma airlock" - airlock_type = /obj/machinery/door/airlock/plasma - mineral = "plasma" - glass_type = /obj/machinery/door/airlock/plasma/glass - -/obj/structure/door_assembly/door_assembly_bananium - name = "bananium airlock assembly" - desc = "Honk." - icon = 'icons/obj/doors/airlocks/station/bananium.dmi' - base_name = "bananium airlock" - airlock_type = /obj/machinery/door/airlock/clown - mineral = "bananium" - glass_type = /obj/machinery/door/airlock/clown/glass - -/obj/structure/door_assembly/door_assembly_sandstone - name = "sandstone airlock assembly" - icon = 'icons/obj/doors/airlocks/station/sandstone.dmi' - base_name = "sandstone airlock" - airlock_type = /obj/machinery/door/airlock/sandstone - mineral = "sandstone" - glass_type = /obj/machinery/door/airlock/sandstone/glass - -/obj/structure/door_assembly/door_assembly_titanium - name = "titanium airlock assembly" - icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi' - base_name = "shuttle airlock" - overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi' - glass_type = /obj/machinery/door/airlock/titanium/glass - airlock_type = /obj/machinery/door/airlock/titanium - mineral = "titanium" - -/obj/structure/door_assembly/door_assembly_wood - name = "wooden airlock assembly" - icon = 'icons/obj/doors/airlocks/station/wood.dmi' - base_name = "wooden airlock" - airlock_type = /obj/machinery/door/airlock/wood - mineral = "wood" - glass_type = /obj/machinery/door/airlock/wood/glass - /obj/structure/door_assembly/examine(mob/user) ..() + var/doorname = "" + if(created_name) + doorname = ", written on it is '[created_name]'" switch(state) if(AIRLOCK_ASSEMBLY_NEEDS_WIRES) if(anchored) @@ -275,13 +41,13 @@ if(AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) to_chat(user, "The circuit is connected loosely to its slot, but the maintenance panel is unscrewed and open.") if(!mineral && !glass && !noglass) - to_chat(user, "There is a small paper placard on the assembly. There are empty slots for glass windows and mineral covers.") + to_chat(user, "There is a small paper placard on the assembly[doorname]. There are empty slots for glass windows and mineral covers.") else if(!mineral && glass && !noglass) - to_chat(user, "There is a small paper placard on the assembly. There are empty slots for mineral covers.") + to_chat(user, "There is a small paper placard on the assembly[doorname]. There are empty slots for mineral covers.") else if(mineral && !glass && !noglass) - to_chat(user, "There is a small paper placard on the assembly. There are empty slots for glass windows.") + to_chat(user, "There is a small paper placard on the assembly[doorname]. There are empty slots for glass windows.") else - to_chat(user, "There is a small paper placard on the assembly.") + to_chat(user, "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)) diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm new file mode 100644 index 0000000000..cdbdbdfb32 --- /dev/null +++ b/code/game/objects/structures/door_assembly_types.dm @@ -0,0 +1,236 @@ +/obj/structure/door_assembly/door_assembly_public + name = "public airlock assembly" + icon = 'icons/obj/doors/airlocks/station2/glass.dmi' + overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' + glass_type = /obj/machinery/door/airlock/public/glass + airlock_type = /obj/machinery/door/airlock/public + +/obj/structure/door_assembly/door_assembly_com + name = "command airlock assembly" + icon = 'icons/obj/doors/airlocks/station/command.dmi' + base_name = "command airlock" + glass_type = /obj/machinery/door/airlock/command/glass + airlock_type = /obj/machinery/door/airlock/command + +/obj/structure/door_assembly/door_assembly_sec + name = "security airlock assembly" + icon = 'icons/obj/doors/airlocks/station/security.dmi' + base_name = "security airlock" + glass_type = /obj/machinery/door/airlock/security/glass + airlock_type = /obj/machinery/door/airlock/security + +/obj/structure/door_assembly/door_assembly_eng + name = "engineering airlock assembly" + icon = 'icons/obj/doors/airlocks/station/engineering.dmi' + base_name = "engineering airlock" + glass_type = /obj/machinery/door/airlock/engineering/glass + airlock_type = /obj/machinery/door/airlock/engineering + +/obj/structure/door_assembly/door_assembly_min + name = "mining airlock assembly" + icon = 'icons/obj/doors/airlocks/station/mining.dmi' + base_name = "mining airlock" + glass_type = /obj/machinery/door/airlock/mining/glass + airlock_type = /obj/machinery/door/airlock/mining + +/obj/structure/door_assembly/door_assembly_atmo + name = "atmospherics airlock assembly" + icon = 'icons/obj/doors/airlocks/station/atmos.dmi' + base_name = "atmospherics airlock" + glass_type = /obj/machinery/door/airlock/atmos/glass + airlock_type = /obj/machinery/door/airlock/atmos + +/obj/structure/door_assembly/door_assembly_research + name = "research airlock assembly" + icon = 'icons/obj/doors/airlocks/station/research.dmi' + base_name = "research airlock" + glass_type = /obj/machinery/door/airlock/research/glass + airlock_type = /obj/machinery/door/airlock/research + +/obj/structure/door_assembly/door_assembly_science + name = "science airlock assembly" + icon = 'icons/obj/doors/airlocks/station/science.dmi' + base_name = "science airlock" + glass_type = /obj/machinery/door/airlock/science/glass + airlock_type = /obj/machinery/door/airlock/science + +/obj/structure/door_assembly/door_assembly_med + name = "medical airlock assembly" + icon = 'icons/obj/doors/airlocks/station/medical.dmi' + base_name = "medical airlock" + glass_type = /obj/machinery/door/airlock/medical/glass + airlock_type = /obj/machinery/door/airlock/medical + +/obj/structure/door_assembly/door_assembly_mai + name = "maintenance airlock assembly" + icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' + base_name = "maintenance airlock" + glass_type = /obj/machinery/door/airlock/maintenance/glass + airlock_type = /obj/machinery/door/airlock/maintenance + +/obj/structure/door_assembly/door_assembly_extmai + name = "external maintenance airlock assembly" + icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi' + base_name = "external maintenance airlock" + glass_type = /obj/machinery/door/airlock/maintenance/external/glass + airlock_type = /obj/machinery/door/airlock/maintenance/external + +/obj/structure/door_assembly/door_assembly_ext + name = "external airlock assembly" + icon = 'icons/obj/doors/airlocks/external/external.dmi' + base_name = "external airlock" + overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi' + glass_type = /obj/machinery/door/airlock/external/glass + airlock_type = /obj/machinery/door/airlock/external + +/obj/structure/door_assembly/door_assembly_fre + name = "freezer airlock assembly" + icon = 'icons/obj/doors/airlocks/station/freezer.dmi' + base_name = "freezer airlock" + airlock_type = /obj/machinery/door/airlock/freezer + noglass = TRUE + +/obj/structure/door_assembly/door_assembly_hatch + name = "airtight hatch assembly" + icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi' + base_name = "airtight hatch" + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/hatch + noglass = TRUE + +/obj/structure/door_assembly/door_assembly_mhatch + name = "maintenance hatch assembly" + icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi' + base_name = "maintenance hatch" + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/maintenance_hatch + noglass = TRUE + +/obj/structure/door_assembly/door_assembly_highsecurity + name = "high security airlock assembly" + icon = 'icons/obj/doors/airlocks/highsec/highsec.dmi' + base_name = "high security airlock" + overlays_file = 'icons/obj/doors/airlocks/highsec/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/highsecurity + noglass = TRUE + material_type = /obj/item/stack/sheet/plasteel + material_amt = 6 + +/obj/structure/door_assembly/door_assembly_vault + name = "vault door assembly" + icon = 'icons/obj/doors/airlocks/vault/vault.dmi' + base_name = "vault door" + overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/vault + noglass = TRUE + material_type = /obj/item/stack/sheet/plasteel + material_amt = 8 + +/obj/structure/door_assembly/door_assembly_shuttle + name = "shuttle airlock assembly" + icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi' + base_name = "shuttle airlock" + overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/shuttle + glass_type = /obj/machinery/door/airlock/shuttle/glass + +/obj/structure/door_assembly/door_assembly_cult + name = "cult airlock assembly" + icon = 'icons/obj/doors/airlocks/cult/runed/cult.dmi' + base_name = "cult airlock" + overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/cult + glass_type = /obj/machinery/door/airlock/cult/glass + +/obj/structure/door_assembly/door_assembly_cult/unruned + icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi' + overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/cult/unruned + glass_type = /obj/machinery/door/airlock/cult/unruned/glass + +/obj/structure/door_assembly/door_assembly_viro + name = "virology airlock assembly" + icon = 'icons/obj/doors/airlocks/station/virology.dmi' + base_name = "virology airlock" + glass_type = /obj/machinery/door/airlock/virology/glass + airlock_type = /obj/machinery/door/airlock/virology + +/obj/structure/door_assembly/door_assembly_centcom + icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' + overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' + airlock_type = /obj/machinery/door/airlock/centcom + noglass = TRUE + +/obj/structure/door_assembly/door_assembly_gold + name = "gold airlock assembly" + icon = 'icons/obj/doors/airlocks/station/gold.dmi' + base_name = "gold airlock" + airlock_type = /obj/machinery/door/airlock/gold + mineral = "gold" + glass_type = /obj/machinery/door/airlock/gold/glass + +/obj/structure/door_assembly/door_assembly_silver + name = "silver airlock assembly" + icon = 'icons/obj/doors/airlocks/station/silver.dmi' + base_name = "silver airlock" + airlock_type = /obj/machinery/door/airlock/silver + mineral = "silver" + glass_type = /obj/machinery/door/airlock/silver/glass + +/obj/structure/door_assembly/door_assembly_diamond + name = "diamond airlock assembly" + icon = 'icons/obj/doors/airlocks/station/diamond.dmi' + base_name = "diamond airlock" + airlock_type = /obj/machinery/door/airlock/diamond + mineral = "diamond" + glass_type = /obj/machinery/door/airlock/diamond/glass + +/obj/structure/door_assembly/door_assembly_uranium + name = "uranium airlock assembly" + icon = 'icons/obj/doors/airlocks/station/uranium.dmi' + base_name = "uranium airlock" + airlock_type = /obj/machinery/door/airlock/uranium + mineral = "uranium" + glass_type = /obj/machinery/door/airlock/uranium/glass + +/obj/structure/door_assembly/door_assembly_plasma + name = "plasma airlock assembly" + icon = 'icons/obj/doors/airlocks/station/plasma.dmi' + base_name = "plasma airlock" + airlock_type = /obj/machinery/door/airlock/plasma + mineral = "plasma" + glass_type = /obj/machinery/door/airlock/plasma/glass + +/obj/structure/door_assembly/door_assembly_bananium + name = "bananium airlock assembly" + desc = "Honk." + icon = 'icons/obj/doors/airlocks/station/bananium.dmi' + base_name = "bananium airlock" + airlock_type = /obj/machinery/door/airlock/clown + mineral = "bananium" + glass_type = /obj/machinery/door/airlock/clown/glass + +/obj/structure/door_assembly/door_assembly_sandstone + name = "sandstone airlock assembly" + icon = 'icons/obj/doors/airlocks/station/sandstone.dmi' + base_name = "sandstone airlock" + airlock_type = /obj/machinery/door/airlock/sandstone + mineral = "sandstone" + glass_type = /obj/machinery/door/airlock/sandstone/glass + +/obj/structure/door_assembly/door_assembly_titanium + name = "titanium airlock assembly" + icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi' + base_name = "shuttle airlock" + overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi' + glass_type = /obj/machinery/door/airlock/titanium/glass + airlock_type = /obj/machinery/door/airlock/titanium + mineral = "titanium" + +/obj/structure/door_assembly/door_assembly_wood + name = "wooden airlock assembly" + icon = 'icons/obj/doors/airlocks/station/wood.dmi' + base_name = "wooden airlock" + airlock_type = /obj/machinery/door/airlock/wood + mineral = "wood" + glass_type = /obj/machinery/door/airlock/wood/glass diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index fe6a8c69c2..b803f3f0c2 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -11,7 +11,7 @@ roundstart = FALSE death = FALSE mob_species = /datum/species/pod - flavour_text = "You are a sentient ecosystem - an example of the mastery over life that your creators possessed. Your masters, benevolent as they were, created uncounted \ + flavour_text = "You are a sentient ecosystem, an example of the mastery over life that your creators possessed. Your masters, benevolent as they were, created uncounted \ seed vaults and spread them across the universe to every planet they could chart. You are in one such seed vault. Your goal is to cultivate and spread life wherever it will go while waiting \ for contact from your creators. Estimated time of last contact: Deployment, 5x10^3 millennia ago." assignedrole = "Lifebringer" @@ -43,7 +43,8 @@ death = FALSE anchored = FALSE density = FALSE - flavour_text = "You are an ash walker. Your tribe worships the Necropolis. The wastes are sacred ground, its monsters a blessed bounty. You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest. You do not know how their magic works, nor where they come from, or the significance of their items." + flavour_text = "You are an ash walker. Your tribe worships the Necropolis. The wastes are sacred ground, its monsters a blessed bounty. \ + You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest." assignedrole = "Ash Walker" /obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn) @@ -81,7 +82,7 @@ roundstart = FALSE death = FALSE mob_species = /datum/species/shadow - flavour_text = "You are cursed. Years ago, you sacrificed the lives of your trusted friends and the humanity of yourself to reach the Wish Granter. Though you \ + flavour_text = "You are cursed. Years ago, you sacrificed the lives of your trusted friends and the humanity of yourself to reach the Wish Granter. Though you \ did so, it has come at a cost: your very body rejects the light, dooming you to wander endlessly in this horrible wasteland." assignedrole = "Exile" @@ -117,7 +118,7 @@ var/has_owner = FALSE var/can_transfer = TRUE //if golems can switch bodies to this new shell var/mob/living/owner = null //golem's owner if it has one - flavour_text = "You are a Free Golem. Your family worships The Liberator. In his infinite and divine wisdom, he set your clan free to \ + flavour_text = "You are a Free Golem. Your family worships The Liberator. In his infinite and divine wisdom, he set your clan free to \ travel the stars with a single declaration: \"Yeah go do whatever.\" Though you are bound to the one who created you, it is customary in your society to repeat those same words to newborn \ golems, so that no golem may ever be forced to serve again." @@ -130,8 +131,8 @@ if(!mapload && A) notify_ghosts("\A [initial(species.prefix)] golem shell has been completed in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE) if(has_owner && creator) - flavour_text = "You are a golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. \ - Serve [creator], and assist [creator.p_them()] in completing [creator.p_their()] goals at any cost." + flavour_text = "You are a Golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. \ + Serve [creator], and assist [creator.p_them()] in completing [creator.p_their()] goals at any cost." owner = creator /obj/effect/mob_spawn/human/golem/special(mob/living/new_spawn, name) @@ -197,7 +198,7 @@ death = FALSE random = TRUE mob_species = /datum/species/human - flavour_text = "You've been stranded in this godless prison of a planet for longer than you can remember. Each day you barely scrape by, and between the terrible \ + flavour_text = "You've been stranded in this godless prison of a planet for longer than you can remember. Each day you barely scrape by, and between the terrible \ conditions of your makeshift shelter, the hostile creatures, and the ash drakes swooping down from the cloudless skies, all you can wish for is the feel of soft grass between your toes and \ the fresh air of Earth. These thoughts are dispelled by yet another recollection of how you got here... " assignedrole = "Hermit" @@ -244,7 +245,7 @@ name = "broken rejuvenation pod" desc = "A small sleeper typically used to instantly restore minor wounds. This one seems broken, and its occupant is comatose." mob_name = "a translocated vet" - flavour_text = "What...? Where are you? Where are the others? This is still the animal hospital - you should know, you've been an intern here for weeks - but \ + flavour_text = "What...? Where are you? Where are the others? This is still the animal hospital - you should know, you've been an intern here for weeks - but \ everyone's gone. One of the cats scratched you just a few minutes ago. That's why you were in the pod - to heal the scratch. The scabs are still fresh; you see them right now. So where is \ everyone? Where did they go? What happened to the hospital? And is that smoke you smell? You need to find someone else. Maybe they can tell you what happened." assignedrole = "Translocated Vet" @@ -264,7 +265,7 @@ outfit = /datum/outfit/lavalandprisoner roundstart = FALSE death = FALSE - flavour_text = "Good. It seems as though your ship crashed. You're a prisoner, sentenced to hard work in one of Nanotrasen's labor camps, but it seems as \ + flavour_text = "Good. It seems as though your ship crashed. You're a prisoner, sentenced to hard work in one of Nanotrasen's labor camps, but it seems as \ though fate has other plans for you. You remember that you were convicted of " assignedrole = "Escaped Prisoner" @@ -303,8 +304,8 @@ roundstart = FALSE random = TRUE outfit = /datum/outfit/hotelstaff - flavour_text = "You are a staff member of a top-of-the-line space hotel! Cater to guests and DON'T leave the hotel, lest the manager fire you for\ - dereliction of duty!" + flavour_text = "You are a staff member of a top-of-the-line space hotel! Cater to guests and DON'T leave the hotel, lest the manager fire you for\ + dereliction of duty!" assignedrole = "Hotel Staff" /datum/outfit/hotelstaff @@ -319,8 +320,8 @@ name = "hotel security sleeper" mob_name = "hotel security member" outfit = /datum/outfit/hotelstaff/security - flavour_text = "You are a peacekeeper assigned to this hotel to protect the interests of the company while keeping the peace between \ - guests and the staff. Do NOT leave the hotel, as that is grounds for contract termination." + flavour_text = "You are a peacekeeper assigned to this hotel to protect the interests of the company while keeping the peace between \ + guests and the staff. Do NOT leave the hotel, as that is grounds for contract termination." objectives = "Do not leave your assigned hotel. Try and keep the peace between staff and guests, non-lethal force heavily advised if possible." /datum/outfit/hotelstaff/security @@ -355,7 +356,7 @@ /obj/effect/mob_spawn/human/demonic_friend/Initialize(mapload, datum/mind/owner_mind, obj/effect/proc_holder/spell/targeted/summon_friend/summoning_spell) . = ..() owner = owner_mind - flavour_text = "You have been given a reprieve from your eternity of torment, to be [owner.name]'s friend for their short mortal coil. Be aware that if you do not live up to [owner.name]'s expectations, they can send you back to hell with a single thought. [owner.name]'s death will also return you to hell." + flavour_text = "You have been given a reprieve from your eternity of torment, to be [owner.name]'s friend for their short mortal coil. Be aware that if you do not live up to [owner.name]'s expectations, they can send you back to hell with a single thought. [owner.name]'s death will also return you to hell." var/area/A = get_area(src) if(!mapload && A) notify_ghosts("\A friendship shell has been completed in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE) @@ -414,7 +415,9 @@ /obj/effect/mob_spawn/human/syndicate/battlecruiser name = "Syndicate Battlecruiser Ship Operative" - flavour_text = "You are a crewmember aboard the syndicate flagship: the SBC Starfury. Your job is to follow your captain's orders, maintain the ship, and keep the engine running. If you are not familiar with how the supermatter engine functions: do not attempt to start it.

    The armory is not a candy store, and your role is not to assault the station directly, leave that work to the assault operatives.
    " + flavour_text = "You are a crewmember aboard the syndicate flagship: the SBC Starfury. Your job is to follow your captain's orders, maintain the ship, and keep the engine running. If you are not familiar with how the supermatter engine functions: do not attempt to start it.
    \ +
    \ + The armory is not a candy store, and your role is not to assault the station directly, leave that work to the assault operatives.
    " outfit = /datum/outfit/syndicate_empty/SBC /datum/outfit/syndicate_empty/SBC @@ -425,7 +428,9 @@ /obj/effect/mob_spawn/human/syndicate/battlecruiser/assault name = "Syndicate Battlecruiser Assault Operative" - flavour_text = "You are an assault operative aboard the syndicate flagship: the SBC Starfury. Your job is to follow your captain's orders, keep intruders out of the ship, and assault Space Station 13. There is an armory, multiple assault ships, and beam cannons to attack the station with.

    Work as a team with your fellow operatives and work out a plan of attack. If you are overwhelmed, escape back to your ship!
    " + flavour_text = "You are an assault operative aboard the syndicate flagship: the SBC Starfury. Your job is to follow your captain's orders, keep intruders out of the ship, and assault Space Station 13. There is an armory, multiple assault ships, and beam cannons to attack the station with.
    \ +
    \ + Work as a team with your fellow operatives and work out a plan of attack. If you are overwhelmed, escape back to your ship!
    " outfit = /datum/outfit/syndicate_empty/SBC/assault /datum/outfit/syndicate_empty/SBC/assault @@ -441,7 +446,9 @@ /obj/effect/mob_spawn/human/syndicate/battlecruiser/captain name = "Syndicate Battlecruiser Captain" - flavour_text = "You are the captain aboard the syndicate flagship: the SBC Starfury. Your job is to oversee your crew, defend the ship, and destroy Space Station 13. The ship has an armory, multiple ships, beam cannons, and multiple crewmembers to accomplish this goal.

    As the captain, this whole operation falls on your shoulders. You do not need to nuke the station, causing sufficient damage and preventing your ship from being destroyed will be enough.
    " + flavour_text = "You are the captain aboard the syndicate flagship: the SBC Starfury. Your job is to oversee your crew, defend the ship, and destroy Space Station 13. The ship has an armory, multiple ships, beam cannons, and multiple crewmembers to accomplish this goal.
    \ +
    \ + As the captain, this whole operation falls on your shoulders. You do not need to nuke the station, causing sufficient damage and preventing your ship from being destroyed will be enough.
    " outfit = /datum/outfit/syndicate_empty/SBC/assault/captain id_access_list = list(150,151) @@ -467,9 +474,9 @@ death = FALSE random = TRUE mob_species = /datum/species/human - flavour_text = "You are a security officer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ + flavour_text = "You are a security officer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \ - your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod." + your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod." uniform = /obj/item/clothing/under/rank/security shoes = /obj/item/clothing/shoes/jackboots id = /obj/item/card/id/away/old/sec @@ -491,9 +498,9 @@ death = FALSE random = TRUE mob_species = /datum/species/human - flavour_text = "You are an engineer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ + flavour_text = "You are an engineer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \ - your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod." + your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod." uniform = /obj/item/clothing/under/rank/engineer shoes = /obj/item/clothing/shoes/workboots id = /obj/item/card/id/away/old/eng @@ -515,9 +522,9 @@ death = FALSE random = TRUE mob_species = /datum/species/human - flavour_text = "You are a scientist working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ + flavour_text = "You are a scientist working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \ - your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod." + your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod." uniform = /obj/item/clothing/under/rank/scientist shoes = /obj/item/clothing/shoes/laceup id = /obj/item/card/id/away/old/sci @@ -545,7 +552,7 @@ anchored = TRUE density = FALSE show_flavour = FALSE //Flavour only exists for spawners menu - flavour_text = "You are a space pirate. The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot." + flavour_text = "You are a space pirate. The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot." assignedrole = "Space Pirate" var/rank = "Mate" diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index d6b50d0b1a..5cdadb186c 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -148,4 +148,4 @@ new /obj/item/stack/rods(loc, 4) qdel(src) -#undef VIABLE_MOB_CHECK \ No newline at end of file +#undef VIABLE_MOB_CHECK diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index b1d1af6342..83549a56d2 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -14,7 +14,7 @@ /turf/closed/wall, /obj/structure/falsewall) smooth = SMOOTH_MORE - // flags_1 = CONDUCT_1 + // flags = CONDUCT_1 /obj/structure/lattice/examine(mob/user) ..() diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index afcace17a7..d21379cb44 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -211,4 +211,4 @@ var/obj/machinery/manned_turret/E = user.buckled E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params) E.direction_track(user, targeted_atom) - E.checkfire(targeted_atom, user) \ No newline at end of file + E.checkfire(targeted_atom, user) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index c124540d7d..259c72647d 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -37,7 +37,7 @@ /obj/structure/mineral_door/Move() var/turf/T = loc - ..() + . = ..() move_update_air(T) /obj/structure/mineral_door/CollidedWith(atom/movable/AM) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index d468e87a34..f4936b1d80 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -21,4 +21,4 @@ to_chat(user, "You wet [I] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) else - return ..() + return ..() \ No newline at end of file diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index 1ae513f847..a8ca42bff5 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -202,7 +202,7 @@ var/new_angle = WRAP(rotation_angle + norm_inc, 180, -180) if(ISINRANGE_EX(norm_inc, -90, 90)) return FALSE - P.Angle = new_angle + P.setAngle(new_angle) return ..() //DOUBLE @@ -229,7 +229,7 @@ var/new_angle = WRAP(rotation_angle + norm_inc, 180, -180) if(ISINRANGE_EX(norm_inc, -90, 90)) new_angle += 180 - P.Angle = new_angle + P.setAngle(new_angle) return ..() //BOX @@ -251,7 +251,7 @@ anchored = TRUE /obj/structure/reflector/box/auto_reflect(obj/item/projectile/P) - P.Angle = rotation_angle + P.setAngle(rotation_angle) return ..() /obj/structure/reflector/ex_act() diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 9df47743a4..616d290610 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -33,7 +33,7 @@ FLOOR SAFES /obj/structure/safe/Initialize(mapload) - ..() + . = ..() if(!mapload) return @@ -55,8 +55,8 @@ FLOOR SAFES if(tumbler_1_pos == tumbler_1_open && tumbler_2_pos == tumbler_2_open) if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!") - return 1 - return 0 + return TRUE + return FALSE /obj/structure/safe/proc/decrement(num) @@ -83,7 +83,7 @@ FLOOR SAFES /obj/structure/safe/attack_hand(mob/user) user.set_machine(src) var/dat = "
    " - dat += "[open ? "Close" : "Open"] [src] | - [dial * 5] +" + dat += "[open ? "Close" : "Open"] [src] | - [dial] +" if(open) dat += "" for(var/i = contents.len, i>=1, i--) @@ -101,9 +101,9 @@ FLOOR SAFES if(!user.canUseTopic(src)) return - var/canhear = 0 + var/canhear = FALSE if(user.is_holding_item_of_type(/obj/item/clothing/neck/stethoscope)) - canhear = 1 + canhear = TRUE if(href_list["open"]) if(check_unlocked()) diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 254ec956c3..ae853b4aed 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -135,11 +135,6 @@ Cargo(brown), Science(purple), Escape(red and white), and Medbay(blue).\nIn the center of the station, you see the Bridge(dark blue).\n\ Around those, you see Hallways/Entrances(light grey), Public Areas(grey), and Maintenance(dark grey)." -/obj/structure/sign/map/left/ceres - icon_state = "map-CS" - desc = "A framed picture of the station.\nClockwise from the top, you see Security (red), Dorms (light-green), Bridge (dark-blue), AI Core (gray), \ - Cargo (brown), Medbay (blue), Arrivals/Departures(orange/cyan), Research (purple), Service (dark-green), and Engineering in the center (yellow)." - /obj/structure/sign/securearea name = "\improper SECURE AREA" desc = "A warning sign which reads 'SECURE AREA'." @@ -246,7 +241,7 @@ desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands." /obj/structure/sign/nanotrasen - name = "\improper NanoTrasen Logo " + name = "\improper Nanotrasen Logo" desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!" icon_state = "nanotrasen" @@ -354,4 +349,4 @@ /obj/structure/sign/logo name = "nanotrasen logo" desc = "The Nanotrasen corporate logo." - icon_state = "ss13sign-1" + icon_state = "nanotrasen_sign1" diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm index 58b4186ad5..2ff0d5ef7a 100644 --- a/code/game/objects/structures/target_stake.dm +++ b/code/game/objects/structures/target_stake.dm @@ -16,7 +16,7 @@ pinned_target = null /obj/structure/target_stake/Move() - ..() + . = ..() if(pinned_target) pinned_target.forceMove(loc) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index ab0f676007..c7595f3981 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -569,7 +569,6 @@ qdel(src) - //Shower Curtains// //Defines used are pre-existing in layers.dm// diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index bb5be3a501..0949f540c7 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -47,7 +47,7 @@ /obj/structure/windoor_assembly/Move() var/turf/T = loc - ..() + . = ..() setDir(ini_dir) move_update_air(T) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index f5aec5c274..0986f2f66e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -357,7 +357,7 @@ /obj/structure/window/Move() var/turf/T = loc - ..() + . = ..() setDir(ini_dir) move_update_air(T) diff --git a/code/game/say.dm b/code/game/say.dm index 570974c0bc..817238f427 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -4,18 +4,18 @@ And the base of the send_speech() proc, which is the core of saycode. */ GLOBAL_LIST_INIT(freqtospan, list( - "1351" = "sciradio", - "1355" = "medradio", - "1357" = "engradio", - "1347" = "suppradio", - "1349" = "servradio", - "1359" = "secradio", - "1353" = "comradio", - "1447" = "aiprivradio", - "1213" = "syndradio", - "1337" = "centcomradio", - "1215" = "redteamradio", - "1217" = "blueteamradio" + "[FREQ_SCIENCE]" = "sciradio", + "[FREQ_MEDICAL]" = "medradio", + "[FREQ_ENGINEERING]" = "engradio", + "[FREQ_SUPPLY]" = "suppradio", + "[FREQ_SERVICE]" = "servradio", + "[FREQ_SECURITY]" = "secradio", + "[FREQ_COMMAND]" = "comradio", + "[FREQ_AI_PRIVATE]" = "aiprivradio", + "[FREQ_SYNDICATE]" = "syndradio", + "[FREQ_CENTCOM]" = "centcomradio", + "[FREQ_CTF_RED]" = "redteamradio", + "[FREQ_CTF_BLUE]" = "blueteamradio" )) /atom/movable/proc/say(message, datum/language/language = null) @@ -168,6 +168,41 @@ GLOBAL_LIST_INIT(freqtospan, list( var/atom/movable/source var/obj/item/device/radio/radio +INITIALIZE_IMMEDIATE(/atom/movable/virtualspeaker) +/atom/movable/virtualspeaker/Initialize(mapload, atom/movable/M, radio) + . = ..() + radio = radio + source = M + if (istype(M)) + name = M.GetVoice() + verb_say = M.verb_say + verb_ask = M.verb_ask + verb_exclaim = M.verb_exclaim + verb_yell = M.verb_yell + + // The mob's job identity + if(ishuman(M)) + // Humans use their job as seen on the crew manifest. This is so the AI + // can know their job even if they don't carry an ID. + var/datum/data/record/findjob = find_record("name", name, GLOB.data_core.general) + if(findjob) + job = findjob.fields["rank"] + else + job = "Unknown" + else if(iscarbon(M)) // Carbon nonhuman + job = "No ID" + else if(isAI(M)) // AI + job = "AI" + else if(iscyborg(M)) // Cyborg + var/mob/living/silicon/robot/B = M + job = "[B.designation] Cyborg" + else if(istype(M, /mob/living/silicon/pai)) // Personal AI (pAI) + job = "Personal AI" + else if(isobj(M)) // Cold, emotionless machines + job = "Machine" + else // Unidentifiable mob + job = "Unknown" + /atom/movable/virtualspeaker/GetJob() return job diff --git a/code/game/sound.dm b/code/game/sound.dm index 9cfa197738..48accadb59 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -149,6 +149,7 @@ soundin = pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg') if ("can_open") soundin = pick('sound/effects/can_open1.ogg', 'sound/effects/can_open2.ogg', 'sound/effects/can_open3.ogg') + //START OF CIT CHANGES - adds random vore sounds if ("struggle_sound") soundin = pick( 'sound/vore/pred/struggle_01.ogg','sound/vore/pred/struggle_02.ogg','sound/vore/pred/struggle_03.ogg', 'sound/vore/pred/struggle_04.ogg','sound/vore/pred/struggle_05.ogg') @@ -179,6 +180,7 @@ 'sound/vore/prey/death_04.ogg','sound/vore/prey/death_05.ogg','sound/vore/prey/death_06.ogg', 'sound/vore/prey/death_07.ogg','sound/vore/prey/death_08.ogg','sound/vore/prey/death_09.ogg', 'sound/vore/prey/death_10.ogg') + //END OF CIT CHANGES if("bullet_miss") soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg') if("gun_dry_fire") @@ -190,7 +192,7 @@ if("gun_remove_empty_magazine") soundin = pick('sound/weapons/gun_magazine_remove_empty_1.ogg', 'sound/weapons/gun_magazine_remove_empty_2.ogg', 'sound/weapons/gun_magazine_remove_empty_3.ogg', 'sound/weapons/gun_magazine_remove_empty_4.ogg') if("gun_slide_lock") - soundin = pick('sound/weapons/gun_slide_lock_1.ogg', 'sound/weapons/gun_slide_lock_2.ogg', 'sound/weapons/gun_slide_lock_3.ogg', 'sound/weapons/gun_slide_lock_4.ogg', 'sound/weapons/gun_slide_lock_5.ogg') + soundin = pick('sound/weapons/gun_slide_lock_1.ogg', 'sound/weapons/gun_slide_lock_2.ogg', 'sound/weapons/gun_slide_lock_3.ogg', 'sound/weapons/gun_slide_lock_4.ogg', 'sound/weapons/gun_slide_lock_5.ogg') if("law") soundin = pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg') if("honkbot_e") diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index e9ff95af84..dc229971d6 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -146,6 +146,9 @@ var/uses_overlay = TRUE var/obj/effect/clockwork/overlay/floor/realappearence +/turf/open/floor/clockwork/Bless() //Who needs holy blessings when you have DADDY RATVAR? + return + /turf/open/floor/clockwork/Initialize() . = ..() if(uses_overlay) diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index 24056658c4..a06f7c9458 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -70,6 +70,10 @@ if(realappearence) qdel(realappearence) realappearence = null + if(heated) + var/mob/camera/eminence/E = get_eminence() + if(E) + E.superheated_walls-- return ..() /turf/closed/wall/clockwork/ReplaceWithLattice() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 7da53425bd..e95ea32046 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -63,7 +63,7 @@ new_angle_s -= 360 while(new_angle_s < -180) new_angle_s += 360 - P.Angle = new_angle_s + P.setAngle(new_angle_s) return TRUE /turf/closed/wall/proc/dismantle_wall(devastated=0, explode=0) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index f0563ade79..97ebcd3a26 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -411,7 +411,7 @@ return if(has_gravity(src)) playsound(src, "bodyfall", 50, 1) - + faller.drop_all_held_items() /turf/proc/add_decal(decal,group) LAZYINITLIST(decals) diff --git a/code/game/world.dm b/code/game/world.dm index a665b8505d..b1174b3386 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -30,20 +30,19 @@ GLOBAL_PROTECT(security_mode) if(CONFIG_GET(flag/usewhitelist)) load_whitelist() LoadBans() - reload_custom_roundstart_items_list() + reload_custom_roundstart_items_list()//Cit change - loads donator items. Remind me to remove when I port over bay's loadout system GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 if(fexists(RESTART_COUNTER_PATH)) GLOB.restart_counter = text2num(trim(file2text(RESTART_COUNTER_PATH))) fdel(RESTART_COUNTER_PATH) - + if("no-init" in params) return Master.Initialize(10, FALSE) - /world/proc/SetupExternalRSC() #if (PRELOAD_RSC == 0) external_rsc_urls = world.file2list("config/external_rsc_urls.txt","\n") @@ -65,15 +64,15 @@ GLOBAL_PROTECT(security_mode) var/db_major = text2num(query_db_version.item[1]) var/db_minor = text2num(query_db_version.item[2]) if(db_major != DB_MAJOR_VERSION || db_minor != DB_MINOR_VERSION) - var/which = "behind" - if(db_major < DB_MAJOR_VERSION || db_minor < DB_MINOR_VERSION) - which = "ahead of" - message_admins("Database schema ([db_major].[db_minor]) is [which] the latest schema version ([DB_MAJOR_VERSION].[DB_MINOR_VERSION]), this may lead to undefined behaviour or errors") - log_sql("Database schema ([db_major].[db_minor]) is [which] the latest schema version ([DB_MAJOR_VERSION].[DB_MINOR_VERSION]), this may lead to undefined behaviour or errors") + message_admins("Database schema ([db_major].[db_minor]) doesn't match the latest schema version ([DB_MAJOR_VERSION].[DB_MINOR_VERSION]), this may lead to undefined behaviour or errors") + log_sql("Database schema ([db_major].[db_minor]) doesn't match the latest schema version ([DB_MAJOR_VERSION].[DB_MINOR_VERSION]), this may lead to undefined behaviour or errors") else message_admins("Could not get schema version from database") + log_sql("Could not get schema version from database") else - log_world("Your server failed to establish a connection with the database.") + log_sql("Your server failed to establish a connection with the database.") + else + log_sql("Database is not enabled in configuration.") /world/proc/SetRoundID() if(CONFIG_GET(flag/sql_enabled)) @@ -131,6 +130,7 @@ GLOBAL_PROTECT(security_mode) SERVER_TOOLS_ON_TOPIC //redirect to server tools if necessary var/static/list/topic_handlers = TopicHandlers() + var/list/input = params2list(T) var/datum/world_topic/handler for(var/I in topic_handlers) diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 5047b31641..752131369b 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -1,4 +1,5 @@ #define MAX_ADMIN_BANS_PER_ADMIN 1 +#define MAX_ADMIN_BANS_PER_HEADMIN 3 //Either pass the mob you wish to ban in the 'banned_mob' attribute, or the banckey, banip and bancid variables. If both are passed, the mob takes priority! If a mob is not passed, banckey is the minimum that needs to be passed! banip and bancid are optional. /datum/admins/proc/DB_ban_record(bantype, mob/banned_mob, duration = -1, reason, job = "", banckey = null, banip = null, bancid = null) @@ -118,8 +119,11 @@ return if(query_check_adminban_amt.NextRow()) var/adm_bans = text2num(query_check_adminban_amt.item[1]) - if(adm_bans >= MAX_ADMIN_BANS_PER_ADMIN) - to_chat(usr, "You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!") + var/max_bans = MAX_ADMIN_BANS_PER_ADMIN + if (check_rights(R_PERMISSIONS, FALSE)) + max_bans = MAX_ADMIN_BANS_PER_HEADMIN + if(adm_bans >= max_bans) + to_chat(usr, "You already logged [max_bans] admin ban(s) or more. Do not abuse this function!") return if(!computerid) computerid = "0" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index ba1cb9c524..79d9838ea2 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -508,8 +508,7 @@ toggle_ooc() log_admin("[key_name(usr)] toggled OOC.") message_admins("[key_name_admin(usr)] toggled OOC.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed]")) + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleoocdead() set category = "Server" @@ -519,7 +518,7 @@ log_admin("[key_name(usr)] toggled OOC.") message_admins("[key_name_admin(usr)] toggled Dead OOC.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Dead OOC", "[GLOB.dooc_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Dead OOC", "[GLOB.dooc_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/startnow() set category = "Server" @@ -553,7 +552,7 @@ log_admin("[key_name(usr)] toggled new player game entering.") message_admins("[key_name_admin(usr)] toggled new player game entering.") world.update_status() - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[GLOB.enter_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[GLOB.enter_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleAI() set category = "Server" @@ -567,7 +566,7 @@ to_chat(world, "The AI job is chooseable now.") log_admin("[key_name(usr)] toggled AI allowed.") world.update_status() - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle AI", "[!alai]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle AI", "[!alai ? "Disabled" : "Enabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleaban() set category = "Server" @@ -582,7 +581,7 @@ message_admins("[key_name_admin(usr)] toggled respawn to [!new_nores ? "On" : "Off"].") log_admin("[key_name(usr)] toggled respawn to [!new_nores ? "On" : "Off"].") world.update_status() - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Respawn", "[!new_nores]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Respawn", "[!new_nores ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/delay() set category = "Server" @@ -665,7 +664,7 @@ to_chat(world, "The tinted_weldhelh has been disabled!") log_admin("[key_name(usr)] toggled tinted_weldhelh.") message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Tinted Welding Helmets", "[GLOB.tinted_weldhelh]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Tinted Welding Helmets", "[GLOB.tinted_weldhelh ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleguests() set category = "Server" @@ -679,7 +678,7 @@ to_chat(world, "Guests may now enter the game.") log_admin("[key_name(usr)] toggled guests game entering [!new_guest_ban ? "" : "dis"]allowed.") message_admins("[key_name_admin(usr)] toggled guests game entering [!new_guest_ban ? "" : "dis"]allowed.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Guests", "[!new_guest_ban]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Guests", "[!new_guest_ban ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/output_ai_laws() var/ai_number = 0 diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 16bd79f74a..b577a84a1d 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -1,3 +1,4 @@ + /datum/admins/proc/create_mob(mob/user) var/static/create_mob_html if (!create_mob_html) @@ -23,4 +24,4 @@ H.dna.blood_type = random_blood_type() H.update_body() H.update_hair() - H.update_body_parts() + H.update_body_parts() \ No newline at end of file diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index e9d4462c0a..82b60ca933 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -173,4 +173,4 @@ you will have to do something like if(client.rights & R_ADMIN) yourself. return "admin_token=[RawHrefToken(forceGlobal)]" /proc/HrefTokenFormField(forceGlobal = FALSE) - return "" + return "" \ No newline at end of file diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 1805cf327d..e38f857cd4 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -612,6 +612,20 @@ dat += "
    " + var/list/pirates = get_antagonists(/datum/antagonist/pirate) + if(pirates.len > 0) + dat += "
    " + for(var/datum/mind/N in pirates) + var/mob/M = N.current + if(!M) + dat += "" + dat += "" + else + dat += "" + dat += "" + dat += "" + dat += "
    Pirates
    [N.name]([N.key])No body.PM
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    " + if(istype(SSticker.mode, /datum/game_mode/monkey)) var/datum/game_mode/monkey/mode = SSticker.mode dat += "
    " diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 14d94acf86..13e07e0368 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -43,6 +43,8 @@ if(check_rights(R_FUN,0)) dat += {" + Fun Secrets
    +
    Trigger a Virus Outbreak
    Turn all humans into monkeys
    Chinese Cartoons
    @@ -194,7 +196,7 @@ if("moveminingshuttle") if(!check_rights(R_ADMIN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Mining Shuttle") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Send Mining Shuttle")) if(!SSshuttle.toggleShuttle("mining","mining_home","mining_away")) message_admins("[key_name_admin(usr)] moved mining shuttle") log_admin("[key_name(usr)] moved the mining shuttle") @@ -202,7 +204,7 @@ if("movelaborshuttle") if(!check_rights(R_ADMIN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Labor Shuttle") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Send Labor Shuttle")) if(!SSshuttle.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away")) message_admins("[key_name_admin(usr)] moved labor shuttle") log_admin("[key_name(usr)] moved the labor shuttle") @@ -210,7 +212,7 @@ if("moveferry") if(!check_rights(R_ADMIN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send CentCom Ferry") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Send CentCom Ferry")) if(!SSshuttle.toggleShuttle("ferry","ferry_home","ferry_away")) message_admins("[key_name_admin(usr)] moved the CentCom ferry") log_admin("[key_name(usr)] moved the CentCom ferry") @@ -222,7 +224,7 @@ if(A) var/new_perma = !A.perma_docked A.perma_docked = new_perma - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Permadock Arrivals Shuttle", "[new_perma]")) + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Permadock Arrivals Shuttle", "[new_perma ? "Enabled" : "Disabled"]")) message_admins("[key_name_admin(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle") log_admin("[key_name(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle") else @@ -272,7 +274,7 @@ if("monkey") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Monkeyize All Humans") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Monkeyize All Humans")) for(var/mob/living/carbon/human/H in GLOB.carbon_list) spawn(0) H.monkeyize() @@ -283,7 +285,7 @@ return var/result = input(usr, "Please choose a new species","Species") as null|anything in GLOB.species_list if(result) - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Mass Species Change([result])") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Mass Species Change", "[result]")) log_admin("[key_name(usr)] turned all humans into [result]", 1) message_admins("\blue [key_name_admin(usr)] turned all humans into [result]") var/newtype = GLOB.species_list[result] @@ -294,12 +296,12 @@ if(!check_rights(R_FUN)) return usr.client.triple_ai() - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Triple AI") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Triple AI")) if("power") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All APCs") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Power All APCs")) log_admin("[key_name(usr)] made all areas powered", 1) message_admins("[key_name_admin(usr)] made all areas powered") power_restore() @@ -307,7 +309,7 @@ if("unpower") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Depower All APCs") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Depower All APCs")) log_admin("[key_name(usr)] made all areas unpowered", 1) message_admins("[key_name_admin(usr)] made all areas unpowered") power_failure() @@ -315,7 +317,7 @@ if("quickpower") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All SMESs") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Power All SMESs")) log_admin("[key_name(usr)] made all SMESs powered", 1) message_admins("[key_name_admin(usr)] made all SMESs powered") power_restore_quick() @@ -329,7 +331,7 @@ var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN) if(!objective) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Traitor All ([objective])") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Traitor All", "[objective]")) for(var/mob/living/H in GLOB.player_list) if(!(ishuman(H)||istype(H, /mob/living/silicon/))) continue @@ -350,7 +352,7 @@ if("changebombcap") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Bomb Cap") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Bomb Cap")) var/newBombCap = input(usr,"What would you like the new bomb cap to be. (entered as the light damage range (the 3rd number in common (1,2,3) notation)) Must be above 4)", "New Bomb Cap", GLOB.MAX_EX_LIGHT_RANGE) as num|null if (!CONFIG_SET(number/bombcap, newBombCap)) @@ -362,7 +364,7 @@ if("blackout") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Break All Lights") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Break All Lights")) message_admins("[key_name_admin(usr)] broke all lights") for(var/obj/machinery/light/L in GLOB.machines) L.break_light_tube() @@ -378,7 +380,7 @@ if(animetype == "Cancel" || droptype == "Cancel") return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Chinese Cartoons") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Chinese Cartoons")) message_admins("[key_name_admin(usr)] made everything kawaii.") for(var/mob/living/carbon/human/H in GLOB.carbon_list) SEND_SOUND(H, sound('sound/ai/animes.ogg')) @@ -408,7 +410,7 @@ if("whiteout") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Fix All Lights") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Fix All Lights")) message_admins("[key_name_admin(usr)] fixed all lights") for(var/obj/machinery/light/L in GLOB.machines) L.fix() @@ -419,7 +421,7 @@ if("virus") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Virus Outbreak") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Virus Outbreak")) switch(alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose")) if("Make Your Own") AdminCreateVirus(usr.client) @@ -434,7 +436,7 @@ if("retardify") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Mass Braindamage") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Mass Braindamage")) for(var/mob/living/carbon/human/H in GLOB.player_list) to_chat(H, "You suddenly feel stupid.") H.adjustBrainLoss(60, 80) @@ -443,24 +445,17 @@ if("eagles")//SCRAW if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Egalitarian Station") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Egalitarian Station")) for(var/obj/machinery/door/airlock/W in GLOB.machines) if(is_station_level(W.z) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") priority_announce("CentCom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/ai/commandreport.ogg') - if("ak47s") - if(!check_rights(R_FUN)) - return - message_admins("[key_name_admin(usr)] activated AK-47s for Everyone!") - usr.client.ak47s() - sound_to_playing_players('sound/misc/ak47s.ogg') - if("guns") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Summon Guns") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Guns")) var/survivor_probability = 0 switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!")) if("Some Antags") @@ -473,7 +468,7 @@ if("magic") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Summon Magic") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Magic")) var/survivor_probability = 0 switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!")) if("Some Antags") @@ -489,22 +484,22 @@ if(!SSevents.wizardmode) if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes") summonevents() - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Activate Summon Events") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Events", "Activate")) else switch(alert("What would you like to do?",,"Intensify Summon Events","Turn Off Summon Events","Nothing")) if("Intensify Summon Events") summonevents() - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Intensify Summon Events") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Events", "Intensify")) if("Turn Off Summon Events") SSevents.toggleWizardmode() SSevents.resetFrequency() - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Disable Summon Events") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Events", "Disable")) if("dorf") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Dwarf Beards") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Dwarf Beards")) for(var/mob/living/carbon/human/B in GLOB.carbon_list) B.facial_hair_style = "Dward Beard" B.update_hair() @@ -513,14 +508,14 @@ if("onlyone") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "There Can Be Only One") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("There Can Be Only One")) usr.client.only_one() sound_to_playing_players('sound/misc/highlander.ogg') if("delayed_onlyone") if(!check_rights(R_FUN)) return - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "There Can Be Only One") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("There Can Be Only One")) usr.client.only_one_delayed() sound_to_playing_players('sound/misc/highlander_delayed.ogg') diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm index 20721077df..112dff352b 100644 --- a/code/modules/admin/verbs/BrokenInhands.dm +++ b/code/modules/admin/verbs/BrokenInhands.dm @@ -31,3 +31,5 @@ fdel(F) WRITE_FILE(F, text) to_chat(world, "Completely successfully and written to [F]") + + diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 8a7c030458..56faa1f6c4 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -114,8 +114,8 @@ /proc/_range(Dist, Center = usr) return range(Dist, Center) -/proc/_regex(pattern, flags_1) - return regex(pattern, flags_1) +/proc/_regex(pattern, flags) + return regex(pattern, flags) /proc/_REGEX_QUOTE(text) return REGEX_QUOTE(text) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 2bbf730b8f..a7cddae2d5 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -494,6 +494,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) deltimer(adminhelptimerid) adminhelptimerid = 0 +// Used for methods where input via arg doesn't work +/client/proc/get_adminhelp() + var/msg = input(src, "Please describe your problem concisely and an admin will help as soon as they're able.", "Adminhelp contents") as text + adminhelp(msg) + /client/verb/adminhelp(msg as text) set category = "Admin" set name = "Adminhelp" diff --git a/code/modules/admin/verbs/cinematic.dm b/code/modules/admin/verbs/cinematic.dm index 7093ee23ea..5aa3258f07 100644 --- a/code/modules/admin/verbs/cinematic.dm +++ b/code/modules/admin/verbs/cinematic.dm @@ -8,4 +8,4 @@ var/datum/cinematic/choice = input(src,"Cinematic","Choose",null) as anything in subtypesof(/datum/cinematic) if(choice) - Cinematic(initial(choice.id),world,null) + Cinematic(initial(choice.id),world,null) \ No newline at end of file diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 0fe79e10de..43454f3bd4 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -107,6 +107,8 @@ GLOBAL_VAR(LastAdminCalledTarget) GLOBAL_PROTECT(LastAdminCalledTarget) GLOBAL_VAR(LastAdminCalledProc) GLOBAL_PROTECT(LastAdminCalledProc) +GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention) +GLOBAL_PROTECT(AdminProcCallSpamPrevention) /proc/WrapAdminProcCall(target, procname, list/arguments) var/current_caller = GLOB.AdminProcCaller @@ -114,9 +116,14 @@ GLOBAL_PROTECT(LastAdminCalledProc) if(!ckey) CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]") if(current_caller && current_caller != ckey) - to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.") - UNTIL(!GLOB.AdminProcCaller) - to_chat(usr, "Running your proc") + if(!GLOB.AdminProcCallSpamPrevention[ckey]) + to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.") + GLOB.AdminProcCallSpamPrevention[ckey] = TRUE + UNTIL(!GLOB.AdminProcCaller) + to_chat(usr, "Running your proc") + GLOB.AdminProcCallSpamPrevention -= ckey + else + UNTIL(!GLOB.AdminProcCaller) GLOB.LastAdminCalledProc = procname if(target != GLOBAL_PROC) GLOB.LastAdminCalledTargetRef = "[REF(target)]" @@ -802,7 +809,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) set category = "Debug" set name = "Display overlay Log" set desc = "Display SSoverlays log of everything that's passed through it." - + render_stats(SSoverlays.stats, src) /client/proc/cmd_display_init_log() diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index bcf58b1a4c..6f2bcb6c46 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -53,17 +53,6 @@ set category = "Debug" set name = "Radio report" - var/filters = list( - "1" = "GLOB.RADIO_TO_AIRALARM", - "2" = "GLOB.RADIO_FROM_AIRALARM", - "3" = "GLOB.RADIO_CHAT", - "4" = "GLOB.RADIO_ATMOSIA", - "5" = "GLOB.RADIO_NAVBEACONS", - "6" = "GLOB.RADIO_AIRLOCK", - "7" = "RADIO_SECBOT", - "8" = "RADIO_MULEBOT", - "_default" = "NO_FILTER" - ) var/output = "Radio Report
    " for (var/fq in SSradio.frequencies) output += "Freq: [fq]
    " @@ -74,9 +63,9 @@ for (var/filter in fqs.devices) var/list/f = fqs.devices[filter] if (!f) - output += "  [filters[filter]]: ERROR
    " + output += "  [filter]: ERROR
    " continue - output += "  [filters[filter]]: [f.len]
    " + output += "  [filter]: [f.len]
    " for (var/device in f) if (istype(device, /atom)) var/atom/A = device diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 5d0c2fe833..ce50378f4d 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -39,13 +39,13 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( /client/proc/cmd_admin_rejuvenate, /datum/admins/proc/show_traitor_panel, /client/proc/disable_communication, - /client/proc/print_pointers, /client/proc/cmd_show_at_list, /client/proc/cmd_show_at_markers, /client/proc/manipulate_organs, /client/proc/start_line_profiling, /client/proc/stop_line_profiling, - /client/proc/show_line_profiling + /client/proc/show_line_profiling, + /client/proc/create_mapping_job_icons )) /obj/effect/debugging/mapfix_marker @@ -265,3 +265,31 @@ GLOBAL_VAR_INIT(say_disabled, FALSE) message_admins("[src.ckey] used 'Disable all communication verbs', killing all communication methods.") else message_admins("[src.ckey] used 'Disable all communication verbs', restoring all communication methods.") + +//This generates the icon states for job starting location landmarks. +/client/proc/create_mapping_job_icons() + set name = "Generate job landmarks icons" + set category = "Mapping" + var/icon/final = icon() + var/mob/living/carbon/human/dummy/D = new(locate(1,1,1)) //spawn on 1,1,1 so we don't have runtimes when items are deleted + D.setDir(SOUTH) + for(var/job in subtypesof(/datum/job)) + var/datum/job/JB = new job + switch(JB.title) + if("AI") + final.Insert(icon('icons/mob/ai.dmi', "ai", SOUTH, 1), "AI") + if("Cyborg") + final.Insert(icon('icons/mob/robots.dmi', "robot", SOUTH, 1), "Cyborg") + else + for(var/obj/item/I in D) + qdel(I) + randomize_human(D) + JB.equip(D, TRUE, FALSE) + COMPILE_OVERLAYS(D) + var/icon/I = icon(getFlatIcon(D), frame = 1) + final.Insert(I, JB.title) + qdel(D) + //Also add the x + for(var/x_number in 1 to 4) + final.Insert(icon('icons/mob/screen_gen.dmi', "x[x_number == 1 ? "" : x_number]"), "x[x_number == 1 ? "" : x_number]") + fcopy(final, "icons/mob/landmarks.dmi") \ No newline at end of file diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index 6043d23d62..db1150fb72 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -64,14 +64,14 @@ if(default == VV_NUM) var/dir_text = "" - if(dir < 0 && dir < 16) - if(dir & 1) + if(var_value > 0 && var_value < 16) + if(var_value & 1) dir_text += "NORTH" - if(dir & 2) + if(var_value & 2) dir_text += "SOUTH" - if(dir & 4) + if(var_value & 4) dir_text += "EAST" - if(dir & 8) + if(var_value & 8) dir_text += "WEST" if(dir_text) diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index f6e8d93e62..e4c86315b5 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -448,11 +448,11 @@ GLOBAL_PROTECT(VVpixelmovement) if(tdir > 0 && tdir < 16) if(tdir & 1) dir_text += "NORTH" - if(dir & 2) + if(tdir & 2) dir_text += "SOUTH" - if(dir & 4) + if(tdir & 4) dir_text += "EAST" - if(dir & 8) + if(tdir & 8) dir_text += "WEST" if(dir_text) @@ -567,14 +567,14 @@ GLOBAL_PROTECT(VVpixelmovement) if(default == VV_NUM) var/dir_text = "" - if(dir < 0 && dir < 16) - if(dir & 1) + if(var_value > 0 && var_value < 16) + if(var_value & 1) dir_text += "NORTH" - if(dir & 2) + if(var_value & 2) dir_text += "SOUTH" - if(dir & 4) + if(var_value & 4) dir_text += "EAST" - if(dir & 8) + if(var_value & 8) dir_text += "WEST" if(dir_text) diff --git a/code/modules/admin/verbs/panicbunker.dm b/code/modules/admin/verbs/panicbunker.dm index f7d1d60aab..fc0cab66c9 100644 --- a/code/modules/admin/verbs/panicbunker.dm +++ b/code/modules/admin/verbs/panicbunker.dm @@ -12,5 +12,4 @@ message_admins("[key_name_admin(usr)] has toggled the Panic Bunker, it is now [new_pb ? "enabled" : "disabled"].") if (new_pb && !SSdbcore.Connect()) message_admins("The Database is not connected! Panic bunker will not work until the connection is reestablished.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Panic Bunker", "[new_pb]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Panic Bunker", "[new_pb ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 29d95c639f..33fb3867d1 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -80,18 +80,37 @@ to_chat(src, "For youtube-dl shortcuts like ytsearch: please use the appropriate full url from the website.") return var/shell_scrubbed_input = shell_url_scrub(web_sound_input) - var/list/output = world.shelleo("[ytdl] --format \"bestaudio\[ext=mp3]/best\[ext=mp4]\[height<=360]/bestaudio\[ext=m4a]/bestaudio\[ext=aac]\" --get-url \"[shell_scrubbed_input]\"") + var/list/output = world.shelleo("[ytdl] --format \"bestaudio\[ext=mp3]/best\[ext=mp4]\[height<=360]/bestaudio\[ext=m4a]/bestaudio\[ext=aac]\" --dump-single-json --no-playlist -- \"[shell_scrubbed_input]\"") var/errorlevel = output[SHELLEO_ERRORLEVEL] var/stdout = output[SHELLEO_STDOUT] var/stderr = output[SHELLEO_STDERR] if(!errorlevel) - var/static/regex/content_url_regex = regex("https?://\\S+") - if(content_url_regex.Find(stdout)) - web_sound_url = content_url_regex.match + var/list/data + try + data = json_decode(stdout) + catch(var/exception/e) + to_chat(src, "Youtube-dl JSON parsing FAILED:") + to_chat(src, "[e]: [stdout]") + return + + if (data["url"]) + web_sound_url = data["url"] + var/title = "[data["title"]]" + var/webpage_url = title + if (data["webpage_url"]) + webpage_url = "[title]" + + var/res = alert(usr, "Show the title of and link to this song to the players?\n[title]",, "No", "Yes", "Cancel") + switch(res) + if("Yes") + to_chat(world, "An admin played: [webpage_url]") + if("Cancel") + return if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) pitch = pick(0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 1.1, 1.2, 1.4, 1.6, 2.0, 2.5) to_chat(src, "You feel the Honkmother messing with your song...") + SSblackbox.record_feedback("nested tally", "played_url", 1, list("[ckey]", "[web_sound_input]")) log_admin("[key_name(src)] played web sound: [web_sound_input]") message_admins("[key_name(src)] played web sound: [web_sound_input]") diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm index fc81ca3a02..a9b5093e99 100644 --- a/code/modules/admin/verbs/possess.dm +++ b/code/modules/admin/verbs/possess.dm @@ -21,25 +21,26 @@ usr.loc = O usr.real_name = O.name usr.name = O.name - usr.client.eye = O + usr.reset_perspective(O) usr.control_object = O SSblackbox.record_feedback("tally", "admin_verb", 1, "Possess Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/proc/release(obj/O in world) +/proc/release() set name = "Release Obj" set category = "Object" //usr.loc = get_turf(usr) if(usr.control_object && usr.name_archive) //if you have a name archived and if you are actually relassing an object usr.real_name = usr.name_archive + usr.name_archive = "" usr.name = usr.real_name if(ishuman(usr)) var/mob/living/carbon/human/H = usr H.name = H.get_visible_name() -// usr.regenerate_icons() //So the name is updated properly - usr.loc = O.loc - usr.client.eye = usr + + usr.loc = get_turf(usr.control_object) + usr.reset_perspective() usr.control_object = null SSblackbox.record_feedback("tally", "admin_verb", 1, "Release Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index b37ff9ceb4..e5f08b82bc 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -125,7 +125,7 @@ var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" message_admins(msg) admin_ticket_log(M, msg) - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /proc/cmd_admin_mute(whom, mute_type, automute = 0) @@ -747,7 +747,7 @@ Traitors and the like can also be revived with the previous role mostly intact. else to_chat(usr, "Random events disabled") message_admins("Admin [key_name_admin(usr)] has disabled random events.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/admin_change_sec_level() @@ -980,7 +980,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits to_chat(usr, "You toggled your admin antag HUD [adding_hud ? "ON" : "OFF"].") message_admins("[key_name_admin(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].") log_admin("[key_name(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Antag HUD", "[adding_hud]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Antag HUD", "[adding_hud ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/has_antag_hud() var/datum/atom_hud/A = GLOB.huds[ANTAG_HUD_TRAITOR] @@ -1199,7 +1199,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if (GLOB.hub_visibility && !world.reachable) message_admins("WARNING: The server will not show up on the hub because byond is detecting that a filewall is blocking incoming connections.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/smite(mob/living/carbon/human/target as mob) set name = "Smite" diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 315e28df02..7e0aa59816 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -114,3 +114,4 @@ /obj/item/device/assembly/interact(mob/user) return //HTML MENU FOR WIRES GOES HERE + diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 6ac1ef093d..439ea314bb 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -68,11 +68,10 @@ a_right.on_found(finder) /obj/item/device/assembly_holder/Move() - ..() + . = ..() if(a_left && a_right) a_left.holder_movement() a_right.holder_movement() - return /obj/item/device/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess if(a_left && a_right) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 0b9d42e42e..565465ec6d 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -83,10 +83,9 @@ /obj/item/device/assembly/infra/Move() var/t = dir - ..() + . = ..() setDir(t) qdel(first) - return /obj/item/device/assembly/infra/holder_movement() if(!holder) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index d9fdab39be..1b0102abdd 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -9,8 +9,8 @@ wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE attachable = 1 - var/code = 30 - var/frequency = 1457 + var/code = DEFAULT_SIGNALER_CODE + var/frequency = FREQ_SIGNALER var/delay = 0 var/datum/radio_frequency/radio_connection @@ -73,7 +73,7 @@ Code: if (href_list["freq"]) var/new_frequency = (frequency + text2num(href_list["freq"])) - if(new_frequency < 1200 || new_frequency > 1600) + if(new_frequency < MIN_FREE_FREQ || new_frequency > MAX_FREE_FREQ) new_frequency = sanitize_frequency(new_frequency) set_frequency(new_frequency) @@ -105,10 +105,7 @@ Code: if(!radio_connection) return - var/datum/signal/signal = new - signal.source = src - signal.encryption = code - signal.data["message"] = "ACTIVATE" + var/datum/signal/signal = new(list("code" = code)) radio_connection.post_signal(src, signal) var/time = time2text(world.realtime,"hh:mm:ss") @@ -122,7 +119,7 @@ Code: /obj/item/device/assembly/signaler/receive_signal(datum/signal/signal) if(!signal) return 0 - if(signal.encryption != code) + if(signal.data["code"] != code) return 0 if(!(src.wires & WIRE_RADIO_RECEIVE)) return 0 @@ -132,13 +129,9 @@ Code: /obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) - if(!SSradio) - sleep(20) - if(!SSradio) - return SSradio.remove_object(src, frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + radio_connection = SSradio.add_object(src, frequency, RADIO_SIGNALER) return // Embedded signaller used in grenade construction. @@ -175,7 +168,7 @@ Code: /obj/item/device/assembly/signaler/anomaly/receive_signal(datum/signal/signal) if(!signal) return 0 - if(signal.encryption != code) + if(signal.data["code"] != code) return 0 for(var/obj/effect/anomaly/A in get_turf(src)) A.anomalyNeutralize() diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 617f384592..913176b662 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -1,91 +1,91 @@ -/obj/item/device/assembly/voice - name = "voice analyzer" - desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." - icon_state = "voice" - materials = list(MAT_METAL=500, MAT_GLASS=50) +/obj/item/device/assembly/voice + name = "voice analyzer" + desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." + icon_state = "voice" + materials = list(MAT_METAL=500, MAT_GLASS=50) flags_1 = HEAR_1 - attachable = 1 - verb_say = "beeps" - verb_ask = "beeps" - verb_exclaim = "beeps" - var/listening = 0 - var/recorded = "" //the activation message - var/mode = 1 - var/static/list/modes = list("inclusive", - "exclusive", - "recognizer", - "voice sensor") - -/obj/item/device/assembly/voice/examine(mob/user) - ..() - to_chat(user, "Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.") - -/obj/item/device/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) - if(speaker == src) - return - - if(listening && !radio_freq) - record_speech(speaker, raw_message, message_language) - else - if(check_activation(speaker, raw_message)) - addtimer(CALLBACK(src, .proc/pulse, 0), 10) - -/obj/item/device/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) - switch(mode) - if(1) - recorded = raw_message - listening = 0 - say("Activation message is '[recorded]'.", message_language) - if(2) - recorded = raw_message - listening = 0 - say("Activation message is '[recorded]'.", message_language) - if(3) - recorded = speaker.GetVoice() - listening = 0 - say("Your voice pattern is saved.", message_language) - if(4) - if(length(raw_message)) - addtimer(CALLBACK(src, .proc/pulse, 0), 10) - -/obj/item/device/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message) - . = 0 - switch(mode) - if(1) - if(findtext(raw_message, recorded)) - . = 1 - if(2) - if(raw_message == recorded) - . = 1 - if(3) - if(speaker.GetVoice() == recorded) - . = 1 - if(4) - if(length(raw_message)) - . = 1 - -/obj/item/device/assembly/voice/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) - mode %= modes.len - mode++ - to_chat(user, "You set [src] into a [modes[mode]] mode.") - listening = 0 - recorded = "" - else - return ..() - -/obj/item/device/assembly/voice/activate() - if(secured) - if(!holder) - listening = !listening - say("[listening ? "Now" : "No longer"] recording input.") - -/obj/item/device/assembly/voice/attack_self(mob/user) - if(!user) - return 0 - activate() - return 1 - -/obj/item/device/assembly/voice/toggle_secure() - . = ..() - listening = 0 + attachable = 1 + verb_say = "beeps" + verb_ask = "beeps" + verb_exclaim = "beeps" + var/listening = 0 + var/recorded = "" //the activation message + var/mode = 1 + var/static/list/modes = list("inclusive", + "exclusive", + "recognizer", + "voice sensor") + +/obj/item/device/assembly/voice/examine(mob/user) + ..() + to_chat(user, "Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.") + +/obj/item/device/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + if(speaker == src) + return + + if(listening && !radio_freq) + record_speech(speaker, raw_message, message_language) + else + if(check_activation(speaker, raw_message)) + addtimer(CALLBACK(src, .proc/pulse, 0), 10) + +/obj/item/device/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) + switch(mode) + if(1) + recorded = raw_message + listening = 0 + say("Activation message is '[recorded]'.", message_language) + if(2) + recorded = raw_message + listening = 0 + say("Activation message is '[recorded]'.", message_language) + if(3) + recorded = speaker.GetVoice() + listening = 0 + say("Your voice pattern is saved.", message_language) + if(4) + if(length(raw_message)) + addtimer(CALLBACK(src, .proc/pulse, 0), 10) + +/obj/item/device/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message) + . = 0 + switch(mode) + if(1) + if(findtext(raw_message, recorded)) + . = 1 + if(2) + if(raw_message == recorded) + . = 1 + if(3) + if(speaker.GetVoice() == recorded) + . = 1 + if(4) + if(length(raw_message)) + . = 1 + +/obj/item/device/assembly/voice/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/device/multitool)) + mode %= modes.len + mode++ + to_chat(user, "You set [src] into a [modes[mode]] mode.") + listening = 0 + recorded = "" + else + return ..() + +/obj/item/device/assembly/voice/activate() + if(secured) + if(!holder) + listening = !listening + say("[listening ? "Now" : "No longer"] recording input.") + +/obj/item/device/assembly/voice/attack_self(mob/user) + if(!user) + return 0 + activate() + return 1 + +/obj/item/device/assembly/voice/toggle_secure() + . = ..() + listening = 0 diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index dd6e4ffe71..007aad331a 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -22,18 +22,16 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) /datum/gas_mixture var/list/gases - var/temperature //kelvins - var/tmp/temperature_archived - var/volume //liters - var/last_share + var/temperature = 0 //kelvins + var/tmp/temperature_archived = 0 + var/volume = CELL_VOLUME //liters + var/last_share = 0 var/list/reaction_results -/datum/gas_mixture/New(volume = CELL_VOLUME) +/datum/gas_mixture/New(volume) gases = new - temperature = 0 - temperature_archived = 0 - src.volume = volume - last_share = 0 + if (!isnull(volume)) + src.volume = volume reaction_results = new //listmos procs diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 84b163748f..96b7df597c 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -80,8 +80,8 @@ var/shorted = 0 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone - var/frequency = 1439 - var/alarm_frequency = 1437 + var/frequency = FREQ_ATMOS_CONTROL + var/alarm_frequency = FREQ_ATMOS_ALARMS var/datum/radio_frequency/radio_connection var/list/TLV = list( // Breathable air. @@ -427,21 +427,16 @@ /obj/machinery/airalarm/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_TO_AIRALARM) + radio_connection = SSradio.add_object(src, frequency, RADIO_TO_AIRALARM) /obj/machinery/airalarm/proc/send_signal(target, list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise if(!radio_connection) return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = command + var/datum/signal/signal = new(command) signal.data["tag"] = target signal.data["sigtype"] = "command" - - radio_connection.post_signal(src, signal, GLOB.RADIO_FROM_AIRALARM) + radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) return 1 @@ -631,12 +626,10 @@ var/area/A = get_area(src) - var/datum/signal/alert_signal = new - alert_signal.source = src - alert_signal.transmission_method = 1 - alert_signal.data["zone"] = A.name - alert_signal.data["type"] = "Atmospheric" - + var/datum/signal/alert_signal = new(list( + "zone" = A.name, + "type" = "Atmospheric" + )) if(alert_level==2) alert_signal.data["alert"] = "severe" else if (alert_level==1) @@ -644,7 +637,7 @@ else if (alert_level==0) alert_signal.data["alert"] = "clear" - frequency.post_signal(src, alert_signal,null,-1) + frequency.post_signal(src, alert_signal, range = -1) /obj/machinery/airalarm/proc/apply_danger_level() var/area/A = get_area(src) @@ -741,7 +734,7 @@ return return ..() - + /obj/machinery/airalarm/AltClick(mob/user) ..() if(!issilicon(user) && (!user.canUseTopic(src, be_close=TRUE) || !isturf(loc))) @@ -749,7 +742,7 @@ return else togglelock(user) - + /obj/machinery/airalarm/proc/togglelock(mob/living/user) if(stat & (NOPOWER|BROKEN)) to_chat(user, "It does nothing!") diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 2a5d792a1b..5ba74d59d9 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -301,7 +301,8 @@ Pipelines + Other Objects -> Pipe network #define VENT_SOUND_DELAY 30 /obj/machinery/atmospherics/relaymove(mob/living/user, direction) - if(!(direction & initialize_directions)) //cant go this way. + direction &= initialize_directions + if(!direction || !(direction in GLOB.cardinals)) //cant go this way. return if(user in buckled_mobs)// fixes buckle ventcrawl edgecase fuck bug @@ -322,13 +323,12 @@ Pipelines + Other Objects -> Pipe network if(world.time - user.last_played_vent > VENT_SOUND_DELAY) user.last_played_vent = world.time playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3) - else - if((direction & initialize_directions) || is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent - user.forceMove(loc) - user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") - user.canmove = 0 - spawn(1) - user.canmove = 1 + else if(is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent + user.forceMove(loc) + user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") + + user.canmove = FALSE + addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1) /obj/machinery/atmospherics/AltClick(mob/living/L) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 63af8e8aa2..7f37e049dd 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -15,6 +15,7 @@ anchored = TRUE density = TRUE + var/global/const/CIRC_LEFT = 1 var/global/const/CIRC_RIGHT = 2 @@ -39,6 +40,8 @@ var/transfer_moles = pressure_delta*air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION) last_pressure_delta = pressure_delta + + //Actually transfer the gas var/datum/gas_mixture/removed = air2.remove(transfer_moles) update_parents() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index ec11ce588c..9c806312a2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -131,17 +131,13 @@ Acts like a normal vent, but has an input AND output. SSradio.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/broadcast_status() if(!radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id, "device" = "ADVP", "power" = on, @@ -151,8 +147,8 @@ Acts like a normal vent, but has an input AND output. "output" = output_pressure_max, "external" = external_pressure_bound, "sigtype" = "status" - ) - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) + )) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/components/binary/dp_vent_pump/atmosinit() ..() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 00cdd6fca7..2fcc546cec 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -72,25 +72,20 @@ Passive gate is similar to the regular pump except: SSradio.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/components/binary/passive_gate/proc/broadcast_status() if(!radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id, "device" = "AGP", "power" = on, "target_output" = target_pressure, "sigtype" = "status" - ) - - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) + )) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/components/binary/passive_gate/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 47dc2a2dae..6ceaa8f461 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -75,25 +75,20 @@ Thus, the two variables affect pump operation are set in New(): SSradio.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/components/binary/pump/proc/broadcast_status() if(!radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id, "device" = "AGP", "power" = on, "target_output" = target_pressure, "sigtype" = "status" - ) - - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) + )) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index e21d5b2d8a..6a33e72324 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -77,17 +77,13 @@ Thus, the two variables affect pump operation are set in New(): if(!radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id, "device" = "APV", "power" = on, "transfer_rate" = transfer_rate, "sigtype" = "status" - ) + )) radio_connection.post_signal(src, signal) /obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 20e93a220e..5281c3bad7 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -29,7 +29,7 @@ SSradio.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA) + radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) /obj/machinery/atmospherics/components/trinary/filter/New() ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 7ff046ab15..2a59e14121 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -42,7 +42,7 @@ radio = new(src) radio.keyslot = new radio_key - radio.subspace_transmission = 1 + radio.subspace_transmission = TRUE radio.canhear_range = 0 radio.recalculateChannels() @@ -182,7 +182,7 @@ mob_occupant.Unconscious((mob_occupant.bodytemperature * unconscious_factor) * 2000) if(beaker) if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic. - beaker.reagents.trans_to(occupant, 1, 10 * efficiency) // Transfer reagents, multiplied because cryo magic. + beaker.reagents.trans_to(occupant, 1, efficiency * 0.25) // Transfer reagents. beaker.reagents.reaction(occupant, VAPOR) air1.gases[/datum/gas/oxygen][MOLES] -= 2 / efficiency //Let's use gas for this if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker). diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 9759de92f5..6eec4558ee 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -93,19 +93,14 @@ if(!radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id, "device" = "AO", "power" = on, "volume_rate" = volume_rate, //"timestamp" = world.time, "sigtype" = "status" - ) - + )) radio_connection.post_signal(src, signal) /obj/machinery/atmospherics/components/unary/outlet_injector/atmosinit() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index f9a87ace42..3acc12114f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -26,7 +26,7 @@ // INT_BOUND: Do not pass internal_pressure_bound // NO_BOUND: Do not pass either - var/frequency = 1439 + var/frequency = FREQ_ATMOS_CONTROL var/datum/radio_frequency/radio_connection var/radio_filter_out var/radio_filter_in @@ -178,11 +178,7 @@ if(!radio_connection) return - var/datum/signal/signal = new - signal.transmission_method = 1 // radio signal - signal.source = src - - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id_tag, "frequency" = frequency, "device" = "VP", @@ -193,7 +189,7 @@ "internal" = internal_pressure_bound, "external" = external_pressure_bound, "sigtype" = "status" - ) + )) var/area/A = get_area(src) if(!A.air_vent_names[id_tag]) @@ -206,8 +202,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/atmosinit() //some vents work his own spesial way - radio_filter_in = frequency==1439?(GLOB.RADIO_FROM_AIRALARM):null - radio_filter_out = frequency==1439?(GLOB.RADIO_TO_AIRALARM):null + radio_filter_in = frequency==FREQ_ATMOS_CONTROL?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==FREQ_ATMOS_CONTROL?(RADIO_TO_AIRALARM):null if(frequency) set_frequency(frequency) broadcast_status() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index b882d21c98..bbf614ac84 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -23,7 +23,7 @@ var/widenet = 0 //is this scrubber acting on the 3x3 area around it. var/list/turf/adjacent_turfs = list() - var/frequency = 1439 + var/frequency = FREQ_ATMOS_CONTROL var/datum/radio_frequency/radio_connection var/radio_filter_out var/radio_filter_in @@ -81,7 +81,7 @@ icon_state = "scrub_off" return - if(scrubbing & SCRUBBING) + if(scrubbing & SCRUBBING) if(widenet) icon_state = "scrub_wide" else @@ -98,16 +98,12 @@ if(!radio_connection) return FALSE - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - var/list/f_types = list() for(var/path in GLOB.meta_gas_info) var/list/gas = GLOB.meta_gas_info[path] f_types += list(list("gas_id" = gas[META_GAS_ID], "gas_name" = gas[META_GAS_NAME], "enabled" = (path in filter_types))) - signal.data = list( + var/datum/signal/signal = new(list( "tag" = id_tag, "frequency" = frequency, "device" = "VS", @@ -117,7 +113,7 @@ "widenet" = widenet, "filter_types" = f_types, "sigtype" = "status" - ) + )) var/area/A = get_area(src) if(!A.air_scrub_names[id_tag]) @@ -130,8 +126,8 @@ return TRUE /obj/machinery/atmospherics/components/unary/vent_scrubber/atmosinit() - radio_filter_in = frequency==initial(frequency)?(GLOB.RADIO_FROM_AIRALARM):null - radio_filter_out = frequency==initial(frequency)?(GLOB.RADIO_TO_AIRALARM):null + radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null if(frequency) set_frequency(frequency) broadcast_status() @@ -205,7 +201,7 @@ return TRUE -//There is no easy way for an object to be notified of changes to atmos can pass flags_1 +//There is no easy way for an object to be notified of changes to atmos can pass flags // So we check every machinery process (2 seconds) /obj/machinery/atmospherics/components/unary/vent_scrubber/process() if(widenet) diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index a26b379735..ccddc8f8ac 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -77,15 +77,12 @@ if(!radio_connection) return - var/datum/signal/signal = new - signal.source = src - signal.transmission_method = 1 - signal.data = list( + var/datum/signal/signal = new(list( "id_tag" = id_tag, "device" = "AM", "pressure" = round(env_pressure), "sigtype" = "status" - ) + )) radio_connection.post_signal(src, signal) /obj/machinery/meter/proc/status() diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 657bbb6499..adcd9fd5b2 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -510,7 +510,7 @@ /datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H) ..() var/obj/item/device/radio/R = H.ears - R.set_frequency(GLOB.REDTEAM_FREQ) + R.set_frequency(FREQ_CTF_RED) R.freqlock = TRUE R.independent = TRUE H.dna.species.stunmod = 0 @@ -518,7 +518,7 @@ /datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H) ..() var/obj/item/device/radio/R = H.ears - R.set_frequency(GLOB.BLUETEAM_FREQ) + R.set_frequency(FREQ_CTF_BLUE) R.freqlock = TRUE R.independent = TRUE H.dna.species.stunmod = 0 @@ -533,7 +533,6 @@ var/team = WHITE_TEAM time_between_triggers = 1 anchored = TRUE - flags_2 = SLOWS_WHILE_IN_HAND_2 alpha = 255 /obj/structure/trap/examine(mob/user) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 1f5df77be7..a10b958db0 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -21,6 +21,7 @@ var/brute_damage = 0 var/oxy_damage = 0 var/burn_damage = 0 + var/datum/disease/disease = null //Do they start with a pre-spawned disease? var/mob_color //Change the mob's color var/assignedrole var/show_flavour = TRUE @@ -70,6 +71,8 @@ M.gender = mob_gender if(faction) M.faction = list(faction) + if(disease) + M.ForceContractDisease(new disease) if(death) M.death(1) //Kills the new mob @@ -259,6 +262,19 @@ ///////////Civilians////////////////////// +/obj/effect/mob_spawn/human/corpse/assistant + name = "Assistant" + outfit = /datum/outfit/job/assistant + +/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection + disease = /datum/disease/beesease + +/obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection + disease = /datum/disease/brainrot + +/obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection + disease = /datum/disease/fluspanish + /obj/effect/mob_spawn/human/cook name = "Cook" outfit = /datum/outfit/job/cook @@ -276,7 +292,7 @@ name = "sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - flavour_text = "You are a space doctor!" + flavour_text = "You are a space doctor!" assignedrole = "Space Doctor" /obj/effect/mob_spawn/human/doctor/alive/equip(mob/living/carbon/human/H) @@ -331,7 +347,7 @@ name = "bartender sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - flavour_text = "You are a space bartender!" + flavour_text = "You are a space bartender!" assignedrole = "Space Bartender" /datum/outfit/spacebartender @@ -355,7 +371,7 @@ name = "beach bum sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - flavour_text = "You are a beach bum!" + flavour_text = "You are a beach bum!" assignedrole = "Beach Bum" /datum/outfit/beachbum @@ -433,7 +449,7 @@ name = "sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" - flavour_text = "You are a Nanotrasen Commander!" + flavour_text = "You are a Nanotrasen Commander!" /obj/effect/mob_spawn/human/nanotrasensoldier/alive death = FALSE @@ -443,7 +459,7 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" faction = "nanotrasenprivate" - flavour_text = "You are a Nanotrasen Private Security Officer!" + flavour_text = "You are a Nanotrasen Private Security Officer!" /////////////////Spooky Undead////////////////////// @@ -459,7 +475,7 @@ roundstart = FALSE icon = 'icons/effects/blood.dmi' icon_state = "remains" - flavour_text = "By unknown powers, your skeletal remains have been reanimated! Walk this mortal plain and terrorize all living adventurers who dare cross your path." + flavour_text = "By unknown powers, your skeletal remains have been reanimated! Walk this mortal plain and terrorize all living adventurers who dare cross your path." assignedrole = "Skeleton" /obj/effect/mob_spawn/human/zombie @@ -473,7 +489,7 @@ roundstart = FALSE icon = 'icons/effects/blood.dmi' icon_state = "remains" - flavour_text = "By unknown powers, your rotting remains have been resurrected! Walk this mortal plain and terrorize all living adventurers who dare cross your path." + flavour_text = "By unknown powers, your rotting remains have been resurrected! Walk this mortal plain and terrorize all living adventurers who dare cross your path." /obj/effect/mob_spawn/human/abductor diff --git a/code/modules/awaymissions/exile.dm b/code/modules/awaymissions/exile.dm index 2c683e91c9..74a9a30d7c 100644 --- a/code/modules/awaymissions/exile.dm +++ b/code/modules/awaymissions/exile.dm @@ -1,13 +1,13 @@ - -/obj/structure/closet/secure_closet/exile - name = "exile implants" + +/obj/structure/closet/secure_closet/exile + name = "exile implants" req_access = list(ACCESS_HOS) - -/obj/structure/closet/secure_closet/exile/New() - ..() - new /obj/item/implanter/exile(src) - new /obj/item/implantcase/exile(src) - new /obj/item/implantcase/exile(src) - new /obj/item/implantcase/exile(src) - new /obj/item/implantcase/exile(src) + +/obj/structure/closet/secure_closet/exile/New() + ..() + new /obj/item/implanter/exile(src) + new /obj/item/implantcase/exile(src) + new /obj/item/implantcase/exile(src) + new /obj/item/implantcase/exile(src) + new /obj/item/implantcase/exile(src) new /obj/item/implantcase/exile(src) \ No newline at end of file diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index bf256fecbd..7fefde76b0 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -139,7 +139,7 @@ /obj/structure/academy_wizard_spawner/proc/summon_wizard() var/turf/T = src.loc var/mob/living/carbon/human/wizbody = new(T) - wizbody.fully_replace_character_name("Academy Teacher") + wizbody.fully_replace_character_name(wizbody.real_name, "Academy Teacher") wizbody.mind_initialize() var/datum/mind/wizmind = wizbody.mind wizmind.special_role = "Academy Defender" diff --git a/code/modules/awaymissions/mission_code/caves.dm b/code/modules/awaymissions/mission_code/caves.dm index 05885fbe19..fd2f8f18af 100644 --- a/code/modules/awaymissions/mission_code/caves.dm +++ b/code/modules/awaymissions/mission_code/caves.dm @@ -42,7 +42,7 @@ /obj/item/paper/fluff/awaymissions/caves/work_notice name = "work notice" - info = "
    Survival Info For Miners


    The caves are an unforgiving place, the only thing you'll have to traverse is the supplies in your locker and your own wit. Travel in packs when mining and try to shut down the monster dens before they overwhelm you. The job is dangerous but the haul is good, so remember this infomation and hopefully we'll all go home alive.
    " + info = "
    Survival Info For Miners


    The caves are an unforgiving place, the only thing you'll have to traverse is the supplies in your locker and your own wit. Travel in packs when mining and try to shut down the monster dens before they overwhelm you. The job is dangerous but the haul is good, so remember this information and hopefully we'll all go home alive.
    " /obj/item/paper/fluff/awaymissions/caves/shipment_notice name = "shipment notice" diff --git a/code/modules/awaymissions/mission_code/centcomAway.dm b/code/modules/awaymissions/mission_code/centcomAway.dm index 11c3f14012..082d2d3c9e 100644 --- a/code/modules/awaymissions/mission_code/centcomAway.dm +++ b/code/modules/awaymissions/mission_code/centcomAway.dm @@ -60,4 +60,4 @@ teams never did figure out what happened that last time... and I can't wrap my head \ around it myself. Why would a shuttle full of evacuees all snap and beat each other \ to death the moment they reached safety?
    \ - - D. Cereza" + - D. Cereza" \ No newline at end of file diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 4aa6e88249..65ed8f95b7 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -136,41 +136,18 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]") /* * Modified Nar-Sie */ -/obj/singularity/narsie/sc_Narsie +/obj/singularity/narsie/mini desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible." move_self = 0 //Contianed narsie does not move! grav_pull = 0 //Contained narsie does not pull stuff in! - var/uneatable = list(/turf/open/space, /obj/effect/overlay, /mob/living/simple_animal/hostile/construct) //Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment -/obj/singularity/narsie/sc_Narsie/admin_investigate_setup() +/obj/singularity/narsie/mini/admin_investigate_setup() return -/obj/singularity/narsie/sc_Narsie/process() +/obj/singularity/narsie/mini/process() eat() if(prob(25)) mezzer() -/obj/singularity/narsie/sc_Narsie/consume(atom/A) - if(is_type_in_list(A, uneatable)) - return 0 - if(isliving(A)) - var/mob/living/L = A - L.gib() - else if(istype(A, /obj/)) - var/obj/O = A - O.ex_act(EXPLODE_DEVASTATE) - if(O) - qdel(O) - else if(isturf(A)) - var/turf/T = A - if(T.intact) - for(var/obj/O in T.contents) - if(O.level != 1) - continue - if(O.invisibility == INVISIBILITY_MAXIMUM) - src.consume(O) - T.ChangeTurf(/turf/open/space) - return - -/obj/singularity/narsie/sc_Narsie/ex_act() +/obj/singularity/narsie/mini/ex_act() return \ No newline at end of file diff --git a/code/modules/awaymissions/pamphlet.dm b/code/modules/awaymissions/pamphlet.dm index a1d12ae90a..94ebb91972 100644 --- a/code/modules/awaymissions/pamphlet.dm +++ b/code/modules/awaymissions/pamphlet.dm @@ -1,39 +1,39 @@ -/obj/item/paper/pamphlet - name = "pamphlet" - icon_state = "pamphlet" +/obj/item/paper/pamphlet + name = "pamphlet" + icon_state = "pamphlet" /obj/item/paper/pamphlet/gateway - info = "Welcome to the Nanotrasen Gateway project...
    \ - Congratulations! If you're reading this, you and your superiors have decided that you're \ - ready to commit to a life spent colonising the rolling hills of far away worlds. You \ - must be ready for a lifetime of adventure, a little bit of hard work, and an award \ - winning dental plan- but that's not all the Nanotrasen Gateway project has to offer.
    \ -
    Because we care about you, we feel it is only fair to make sure you know the risks \ - before you commit to joining the Nanotrasen Gateway project. All away destinations have \ - been fully scanned by a Nanotrasen expeditionary team, and are certified to be 100% safe. \ - We've even left a case of space beer along with the basic materials you'll need to expand \ - Nanotrasen's operational area and start your new life.

    \ - Gateway Operation Basics
    \ - All Nanotrasen approved Gateways operate on the same basic principals. They operate off \ - area equipment power as you would expect, and without this supply, it cannot safely function, \ - causinng it to reject all attempts at operation.

    \ - Once it is correctly setup, and once it has enough power to operate, the Gateway will begin \ - searching for an output location. The amount of time this takes is variable, but the Gateway \ - interface will give you an estimate accurate to the minute. Power loss will not interrupt the \ - searching process. Influenza will not interrupt the searching process. Temporal anomalies \ - may cause the estimate to be inaccurate, but will not interrupt the searching process.

    \ - Life On The Other Side
    \ - Once you have traversed the Gateway, you may experience some disorientation. Do not panic. \ - This is a normal side effect of travelling vast distances in a short period of time. You should \ - survey the immediate area, and attempt to locate your complimentary case of space beer. Our \ - expeditionary teams have ensured the complete safety of all away locations, but in a small \ - number of cases, the Gateway they have established may not be immediately obvious. \ - Do not panic if you cannot locate the return Gateway. Begin colonisation of the destination. \ -

    A New World
    \ - As a participant in the Nanotrasen Gateway Project, you will be on the frontiers of space. \ - Though complete safety is assured, participants are advised to prepare for inhospitable \ - environs." - -//we don't want the silly text overlay! -/obj/item/paper/pamphlet/update_icon() - return + info = "Welcome to the Nanotrasen Gateway project...
    \ + Congratulations! If you're reading this, you and your superiors have decided that you're \ + ready to commit to a life spent colonising the rolling hills of far away worlds. You \ + must be ready for a lifetime of adventure, a little bit of hard work, and an award \ + winning dental plan- but that's not all the Nanotrasen Gateway project has to offer.
    \ +
    Because we care about you, we feel it is only fair to make sure you know the risks \ + before you commit to joining the Nanotrasen Gateway project. All away destinations have \ + been fully scanned by a Nanotrasen expeditionary team, and are certified to be 100% safe. \ + We've even left a case of space beer along with the basic materials you'll need to expand \ + Nanotrasen's operational area and start your new life.

    \ + Gateway Operation Basics
    \ + All Nanotrasen approved Gateways operate on the same basic principals. They operate off \ + area equipment power as you would expect, and without this supply, it cannot safely function, \ + causinng it to reject all attempts at operation.

    \ + Once it is correctly setup, and once it has enough power to operate, the Gateway will begin \ + searching for an output location. The amount of time this takes is variable, but the Gateway \ + interface will give you an estimate accurate to the minute. Power loss will not interrupt the \ + searching process. Influenza will not interrupt the searching process. Temporal anomalies \ + may cause the estimate to be inaccurate, but will not interrupt the searching process.

    \ + Life On The Other Side
    \ + Once you have traversed the Gateway, you may experience some disorientation. Do not panic. \ + This is a normal side effect of travelling vast distances in a short period of time. You should \ + survey the immediate area, and attempt to locate your complimentary case of space beer. Our \ + expeditionary teams have ensured the complete safety of all away locations, but in a small \ + number of cases, the Gateway they have established may not be immediately obvious. \ + Do not panic if you cannot locate the return Gateway. Begin colonisation of the destination. \ +

    A New World
    \ + As a participant in the Nanotrasen Gateway Project, you will be on the frontiers of space. \ + Though complete safety is assured, participants are advised to prepare for inhospitable \ + environs." + +//we don't want the silly text overlay! +/obj/item/paper/pamphlet/update_icon() + return diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index b1f505a27e..4b25d768f4 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -124,4 +124,4 @@ ..() /obj/effect/landmark/error - name = "error" \ No newline at end of file + name = "error" diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 3fcb0648a1..296c876688 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -201,14 +201,10 @@ /obj/machinery/computer/cargo/proc/post_signal(command) - var/datum/radio_frequency/frequency = SSradio.return_frequency(1435) + var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS) if(!frequency) return - var/datum/signal/status_signal = new - status_signal.source = src - status_signal.transmission_method = 1 - status_signal.data["command"] = command - + var/datum/signal/status_signal = new(list("command" = command)) frequency.post_signal(src, status_signal) diff --git a/code/modules/cargo/exports/research.dm b/code/modules/cargo/exports/research.dm index b1ac30e7f9..d2d11cecd1 100644 --- a/code/modules/cargo/exports/research.dm +++ b/code/modules/cargo/exports/research.dm @@ -12,8 +12,8 @@ if(sold_nodes[V]) //Already sold before, don't want it. continue var/datum/techweb_node/TWN = D.stored_research.researched_nodes[V] - cost += TWN - return ..() * cost + cost += TWN.export_price + return cost /datum/export/tech/sell_object(obj/O) ..() diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 3704494050..8825ce0933 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -324,6 +324,9 @@ GLOBAL_LIST_EMPTY(asset_datums) "chevron.png" = 'html/chevron.png', "chevron-expand.png" = 'html/chevron-expand.png', "scales.png" = 'html/scales.png', + "coding.png" = 'html/coding.png', + "ban.png" = 'html/ban.png', + "chrome-wrench.png" = 'html/chrome-wrench.png', "changelog.css" = 'html/changelog.css' ) @@ -372,3 +375,39 @@ GLOBAL_LIST_EMPTY(asset_datums) var/meter = icon('icons/obj/atmospherics/pipes/simple.dmi', "meterX", SOUTH, frame, movement_states) if(meter) register_asset(sanitize_filename("[prefix].south.meterX.png"), fcopy_rsc(meter)) + +// Representative icons for each research design +/datum/asset/simple/research_designs/register() + for (var/path in subtypesof(/datum/design)) + var/datum/design/D = path + + // construct the icon and slap it into the resource cache + var/atom/item = initial(D.build_path) + if (!ispath(item, /atom)) + // biogenerator outputs to beakers by default + if (initial(D.build_type) & BIOGENERATOR) + item = /obj/item/reagent_containers/glass/beaker/large + else + continue // shouldn't happen, but just in case + + // circuit boards become their resulting machines or computers + if (ispath(item, /obj/item/circuitboard)) + var/obj/item/circuitboard/C = item + var/machine = initial(C.build_path) + if (machine) + item = machine + var/icon_file = initial(item.icon) + var/icon/I = icon(icon_file, initial(item.icon_state), SOUTH) + + // computers (and snowflakes) get their screen and keyboard sprites + if (ispath(item, /obj/machinery/computer) || ispath(item, /obj/machinery/power/solar_control)) + var/obj/machinery/computer/C = item + var/screen = initial(C.icon_screen) + var/keyboard = initial(C.icon_keyboard) + if (screen) + I.Blend(icon(icon_file, screen, SOUTH), ICON_OVERLAY) + if (keyboard) + I.Blend(icon(icon_file, keyboard, SOUTH), ICON_OVERLAY) + + assets["design_[initial(D.id)].png"] = I + return ..() diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 10d3866672..9ae87488ce 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -70,4 +70,4 @@ var/list/credits //lazy list of all credit object bound to this client - var/datum/player_details/player_details //these persist between logins/logouts during the same round. + var/datum/player_details/player_details //these persist between logins/logouts during the same round. \ No newline at end of file diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 0f7d501988..fd4581507b 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -196,13 +196,9 @@ GLOBAL_LIST(external_rsc_urls) if(!prefs) prefs = new /datum/preferences(src) GLOB.preferences_datums[ckey] = prefs - else - prefs.parent = src prefs.last_ip = address //these are gonna be used for banning prefs.last_id = computer_id //these are gonna be used for banning - if(world.byond_version >= 511 && byond_version >= 511 && prefs.clientfps) - vars["fps"] = prefs.clientfps - sethotkeys(1) //set hoykeys from preferences (from_pref = 1) + fps = prefs.clientfps log_access("Login: [key_name(src)] from [address ? address : "localhost"]-[computer_id] || BYOND v[byond_version]") var/alert_mob_dupe_login = FALSE @@ -237,6 +233,9 @@ GLOBAL_LIST(external_rsc_urls) . = ..() //calls mob.Login() + if(SSinput.initialized) + set_macros() + chatOutput.start() // Starts the chat if(alert_mob_dupe_login) @@ -364,7 +363,8 @@ GLOBAL_LIST(external_rsc_urls) if (menuitem) menuitem.Load_checked(src) - hook_vr("client_new",list(src)) + hook_vr("client_new",list(src)) // CIT CHANGE - hook for client/New() changes + Master.UpdateTickRate() ////////////// @@ -372,6 +372,8 @@ GLOBAL_LIST(external_rsc_urls) ////////////// /client/Del() + if(credits) + QDEL_LIST(credits) log_access("Logout: [key_name(src)]") if(holder) adminGreet(1) @@ -380,16 +382,17 @@ GLOBAL_LIST(external_rsc_urls) if (!GLOB.admins.len && SSticker.IsRoundInProgress()) //Only report this stuff if we are currently playing. var/cheesy_message = pick( "I have no admins online!",\ - "I'm all alone... :(",\ - "I'm feeling lonely. :(",\ - "I'm so lonely. :(",\ + "I'm all alone :(",\ + "I'm feeling lonely :(",\ + "I'm so lonely :(",\ "Why does nobody love me? :(",\ - "I want a man. :(",\ + "I want a man :(",\ "Where has everyone gone?",\ - "I need a hug. :(",\ - "Someone come hold me. :(",\ + "I need a hug :(",\ + "Someone come hold me :(",\ "I need someone on me :(",\ "What happened? Where has everyone gone?",\ + "Forever alone :(",\ "My nipples are so stiff, but Zelda ain't here. :(",\ "Leon senpai, play more Spessmans. :(",\ "If only Serdy were here...",\ @@ -402,8 +405,9 @@ GLOBAL_LIST(external_rsc_urls) "Oh good, no-one around to watch me lick Goofball's nipples. :D",\ "I've replaced Beepsky with a fidget spinner, glory be autism abuse.",\ "i shure hop dere are no PRED arund!!!!",\ - "NO PRED CAN eVER CATCH MI"\ - ) + "NO PRED CAN eVER CATCH MI",\ + "help, the clown is honking his horn in front of dorms and its interrupting everyones erp"\ + ) send2irc("Server", "[cheesy_message] (No admins online)") diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8d8ca74b43..7c45a77814 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1,3 +1,5 @@ + + GLOBAL_LIST_EMPTY(preferences_datums) @@ -49,9 +51,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/uses_glasses_colour = 0 - var/screenshake = 100 - var/damagescreenshake = 2 - //character preferences var/real_name //our character's name var/be_random_name = 0 //whether we'll have a random name every round @@ -69,76 +68,74 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/skin_tone = "caucasian1" //Skin color var/eye_color = "000" //Eye color var/datum/species/pref_species = new /datum/species/human() //Mutant race - var/list/features = list("mcolor" = "FFF", - "mcolor2" = "FFF", - "mcolor3" = "FFF", - "tail_lizard" = "Smooth", - "tail_human" = "None", - "snout" = "Round", - "horns" = "None", - "ears" = "None", - "wings" = "None", - "frills" = "None", - "spines" = "None", - "body_markings" = "None", - "mam_body_markings" = "None", - "mam_ears" = "None", - "mam_tail" = "None", - "mam_tail_animated" = "None", - "xenodorsal" = "None", - "xenohead" = "None", - "xenotail" = "None", - "legs" = "Normal Legs", - "taur" = "None", - "exhibitionist" = FALSE, - "genitals_use_skintone" = FALSE, - "has_cock" = FALSE, - "cock_shape" = "Human", - "cock_length" = 6, - "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, - "cock_color" = "fff", - "has_sheath" = FALSE, - "sheath_color" = "fff", - "has_balls" = FALSE, - "balls_internal" = FALSE, - "balls_color" = "fff", - "balls_amount" = 2, - "balls_sack_size" = BALLS_SACK_SIZE_DEF, - "balls_size" = BALLS_SIZE_DEF, - "balls_cum_rate" = CUM_RATE, - "balls_cum_mult" = CUM_RATE_MULT, - "balls_efficiency" = CUM_EFFICIENCY, - "balls_fluid" = "semen", - "has_ovi" = FALSE, - "ovi_shape" = "knotted", - "ovi_length" = 6, - "ovi_color" = "fff", - "has_eggsack" = FALSE, - "eggsack_internal" = TRUE, - "eggsack_color" = "fff", - "eggsack_size" = BALLS_SACK_SIZE_DEF, - "eggsack_egg_color" = "fff", - "eggsack_egg_size" = EGG_GIRTH_DEF, - "has_breasts" = FALSE, - "breasts_color" = "fff", - "breasts_size" = "C", - "breasts_shape" = "Pair", - "breasts_fluid" = "milk", - "has_vag" = FALSE, - "vag_shape" = "Human", - "vag_color" = "fff", - "vag_clits" = 1, - "vag_clit_diam" = 0.25, - "vag_clit_len" = 0.25, - "has_womb" = FALSE, - "womb_cum_rate" = CUM_RATE, - "womb_cum_mult" = CUM_RATE_MULT, - "womb_efficiency" = CUM_EFFICIENCY, - "womb_fluid" = "femcum", - "flavor_text" = "" - )//MAKE SURE TO UPDATE THE LIST IN MOBS.DM IF YOU'RE GOING TO ADD TO THIS LIST, OTHERWISE THINGS MIGHT GET FUCKEY + var/list/features = list("mcolor" = "FFF", + "tail_lizard" = "Smooth", + "tail_human" = "None", + "snout" = "Round", + "horns" = "None", + "ears" = "None", + "wings" = "None", + "frills" = "None", + "spines" = "None", + "body_markings" = "None", + "legs" = "Normal Legs", + "mcolor2" = "FFF", + "mcolor3" = "FFF", + "mam_body_markings" = "None", + "mam_ears" = "None", + "mam_tail" = "None", + "mam_tail_animated" = "None", + "xenodorsal" = "None", + "xenohead" = "None", + "xenotail" = "None", + "taur" = "None", + "exhibitionist" = FALSE, + "genitals_use_skintone" = FALSE, + "has_cock" = FALSE, + "cock_shape" = "Human", + "cock_length" = 6, + "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, + "cock_color" = "fff", + "has_sheath" = FALSE, + "sheath_color" = "fff", + "has_balls" = FALSE, + "balls_internal" = FALSE, + "balls_color" = "fff", + "balls_amount" = 2, + "balls_sack_size" = BALLS_SACK_SIZE_DEF, + "balls_size" = BALLS_SIZE_DEF, + "balls_cum_rate" = CUM_RATE, + "balls_cum_mult" = CUM_RATE_MULT, + "balls_efficiency" = CUM_EFFICIENCY, + "balls_fluid" = "semen", + "has_ovi" = FALSE, + "ovi_shape" = "knotted", + "ovi_length" = 6, + "ovi_color" = "fff", + "has_eggsack" = FALSE, + "eggsack_internal" = TRUE, + "eggsack_color" = "fff", + "eggsack_size" = BALLS_SACK_SIZE_DEF, + "eggsack_egg_color" = "fff", + "eggsack_egg_size" = EGG_GIRTH_DEF, + "has_breasts" = FALSE, + "breasts_color" = "fff", + "breasts_size" = "C", + "breasts_shape" = "Pair", + "breasts_fluid" = "milk", + "has_vag" = FALSE, + "vag_shape" = "Human", + "vag_color" = "fff", + "vag_clits" = 1, + "vag_clit_diam" = 0.25, + "has_womb" = FALSE, + "womb_cum_rate" = CUM_RATE, + "womb_cum_mult" = CUM_RATE_MULT, + "womb_efficiency" = CUM_EFFICIENCY, + "womb_fluid" = "femcum", + "flavor_text" = "") - var/list/custom_names = list("clown", "mime", "ai", "cyborg", "religion", "deity") + var/list/custom_names = list("human", "clown", "mime", "ai", "cyborg", "religion", "deity") var/prefered_security_department = SEC_DEPT_RANDOM //Mob preview @@ -181,11 +178,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/action_buttons_screen_locs = list() - //citadel code - var/arousable = TRUE //Allows players to disable arousal from the character creation menu + var/screenshake = 100 + var/damagescreenshake = 2 + var/arousable = TRUE /datum/preferences/New(client/C) parent = C + custom_names["human"] = random_unique_name() custom_names["ai"] = pick(GLOB.ai_names) custom_names["cyborg"] = pick(GLOB.ai_names) custom_names["clown"] = pick(GLOB.clown_names) @@ -231,7 +230,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    " switch(current_tab) - if (0) // Character Settings + if (0) // Character Settings# if(path) var/savefile/S = new /savefile(path) if(S) @@ -261,7 +260,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Age: [age]
    " dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
    " dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
    " + dat += "Special Names:
    " + dat += "Backup Human Name: [custom_names["human"]] " dat += "Clown: [custom_names["clown"]] " dat += "Mime:[custom_names["mime"]]
    " dat += "AI: [custom_names["ai"]] " @@ -277,17 +278,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    " dat += "
    Monkey
    " -// dat += "Size: [character_size]
    " dat += "
    " - dat += "Underwear:
    [underwear]
    " - dat += "Undershirt:
    [undershirt]
    " - dat += "Socks:
    [socks]
    " dat += "Backpack:
    [backbag]
    " dat += "Uplink Spawn Location:
    [uplink_spawn_loc]
    " dat += "" + if (1) // Game Preferences dat += "" */ - dat += "
    " dat += "

    General Settings

    " @@ -451,7 +449,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("snout" in pref_species.mutant_bodyparts) dat += "Snout: [features["snout"]]
    " if("horns" in pref_species.mutant_bodyparts) - dat += "Snout: [features["horns"]]
    " + dat += "Horns: [features["horns"]]
    " if("frills" in pref_species.mutant_bodyparts) dat += "Frills: [features["frills"]]
    " if("spines" in pref_species.mutant_bodyparts) @@ -534,11 +532,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Color:    Change" dat += "Egg Color:    Change" dat += "Egg Size:[features["eggsack_egg_size"]]\" Diameter" - dat += "
    " dat += "
    " @@ -566,7 +562,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/HTML = "
    " if(SSjob.occupations.len <= 0) - HTML += "The job ticker is not yet finished creating jobs, please try again later" + HTML += "The job SSticker is not yet finished creating jobs, please try again later" HTML += "
    Done

    " // Easier to press up here. else @@ -611,12 +607,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if((job_civilian_low & ASSISTANT) && (rank != "Assistant") && !jobban_isbanned(user, "Assistant")) HTML += "[rank]" continue - if(CONFIG_GET(flag/enforce_human_authority) && !user.client.prefs.pref_species.qualifies_for_rank(rank, user.client.prefs.features)) - if(user.client.prefs.pref_species.id == "human") - HTML += "[rank] \[MUTANT\]" - else - HTML += "[rank] \[NON-HUMAN\]" - continue if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs HTML += "[rank]" else @@ -1096,6 +1086,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["tail_human"] = new_tail if(new_tail != "None") features["taur"] = "None" + if("mam_tail") var/new_tail new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.mam_tails_list @@ -1113,32 +1104,24 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["mam_tail"] = "None" features["xenotail"] = "None" -/* Doesn't exist yet. will include facial overlays to mimic 5th port species heads. - if("mam_snout") - var/new_snout - new_snout = input(user, "Choose your character's snout:", "Character Preference") as null|anything in GLOB.mam_snouts_list - if(new_snout) - features["snout"] = new_snout -*/ - if("snout") var/new_snout new_snout = input(user, "Choose your character's snout:", "Character Preference") as null|anything in GLOB.snouts_list if(new_snout) features["snout"] = new_snout - if("horns") - var/new_horns - new_horns = input(user, "Choose your character's horns:", "Character Preference") as null|anything in GLOB.horns_list - if(new_horns) - features["horns"] = new_horns - if("mam_ears") var/new_ears new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in GLOB.mam_ears_list if(new_ears) features["mam_ears"] = new_ears + if("horns") + var/new_horns + new_horns = input(user, "Choose your character's horns:", "Character Preference") as null|anything in GLOB.horns_list + if(new_horns) + features["horns"] = new_horns + if("ears") var/new_ears new_ears = input(user, "Choose your character's ears:", "Character Preference") as null|anything in GLOB.ears_list @@ -1208,7 +1191,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("ooccolor") var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null if(new_ooccolor) - ooccolor = sanitize_ooccolor(new_ooccolor) + ooccolor = new_ooccolor if("bag") var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in GLOB.backbaglist @@ -1220,6 +1203,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_loc) uplink_spawn_loc = new_loc + if("human_name") + var/new_human_name = reject_bad_name( input(user, "Choose your character's backup human name, used in the event you are assigned a command role as another species:", "Character Preference") as text|null ) + if(new_human_name) + custom_names["human"] = new_human_name + else + to_chat(user, "Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .") + if("clown_name") var/new_clown_name = reject_bad_name( input(user, "Choose your character's clown name:", "Character Preference") as text|null ) if(new_clown_name) @@ -1284,16 +1274,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) preferred_map = maplist[pickedmap] if ("clientfps") - var/version_message - if (user.client && user.client.byond_version < 511) - version_message = "\nYou need to be using byond version 511 or later to take advantage of this feature, your version of [user.client.byond_version] is too low" - if (world.byond_version < 511) - version_message += "\nThis server does not currently support client side fps. You can set now for when it does." - var/desiredfps = input(user, "Choose your desired fps.[version_message]\n(0 = synced with server tick rate (currently:[world.fps]))", "Character Preference", clientfps) as null|num + var/desiredfps = input(user, "Choose your desired fps. (0 = synced with server tick rate (currently:[world.fps]))", "Character Preference", clientfps) as null|num if (!isnull(desiredfps)) clientfps = desiredfps - if (world.byond_version >= 511 && user.client && user.client.byond_version >= 511) - user.client.vars["fps"] = clientfps + parent.fps = desiredfps if("ui") var/pickedui = input(user, "Choose your UI style.", "Character Preference") as null|anything in list("Midnight", "Plasmafire", "Retro", "Slimecore", "Operative", "Clockwork") if(pickedui) @@ -1378,6 +1362,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["breasts_color"] = sanitize_hexcolor(new_breasts_color) else user << "Invalid color. Your color is not bright enough." + if("vag_shape") var/new_shape new_shape = input(user, "Vagina Type", "Character Preference") as null|anything in GLOB.vagina_shapes_list @@ -1394,6 +1379,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) else user << "Invalid color. Your color is not bright enough." + + else switch(href_list["preference"]) @@ -1435,7 +1422,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) else features["has_balls"] = FALSE features["has_eggsack"] = FALSE - if("has_ovi") switch(features["has_ovi"]) if(TRUE) @@ -1458,7 +1444,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) else features["has_eggsack"] = FALSE features["has_balls"] = FALSE - if("balls_internal") switch(features["balls_internal"]) if(TRUE) @@ -1480,7 +1465,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) else features["eggsack_internal"] = FALSE features["balls_internal"] = FALSE - if("has_breasts") switch(features["has_breasts"]) if(TRUE) @@ -1527,7 +1511,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) damagescreenshake = 0 else damagescreenshake = 1 - if("publicity") if(unlock_content) toggles ^= MEMBER_PUBLIC @@ -1536,14 +1519,18 @@ GLOBAL_LIST_EMPTY(preferences_datums) gender = FEMALE else gender = MALE - underwear = "Nude" - undershirt = "Nude" - socks = "Nude" - facial_hair_style = "Shaved" - hair_style = "Bald" + underwear = random_underwear(gender) + undershirt = random_undershirt(gender) + socks = random_socks() + facial_hair_style = random_facial_hair_style(gender) + hair_style = random_hair_style(gender) if("hotkeys") hotkeys = !hotkeys + if(hotkeys) + winset(user, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED] mainwindow.macro=default") + else + winset(user, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED] mainwindow.macro=old_default") if("action_buttons") buttons_locked = !buttons_locked if("tgui_fancy") @@ -1673,7 +1660,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.backbag = backbag - character.dna.features = features.Copy() //Flavor text is now a DNA feature + character.dna.features = features.Copy() character.dna.real_name = character.real_name var/datum/species/chosen_species if(pref_species.id in GLOB.roundstart_races) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f83a1c06d8..f79ec86dd6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -144,6 +144,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(current_version < 20) pda_color = "#808000" + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return @@ -188,17 +189,17 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["inquisitive_ghost"] >> inquisitive_ghost S["uses_glasses_colour"]>> uses_glasses_colour S["clientfps"] >> clientfps + S["parallax"] >> parallax S["menuoptions"] >> menuoptions S["enable_tips"] >> enable_tips S["tip_delay"] >> tip_delay - S["parallax"] >> parallax - S["menuoptions"] >> menuoptions + S["pda_style"] >> pda_style + S["pda_color"] >> pda_color + //citadel code S["arousable"] >> arousable S["screenshake"] >> screenshake S["damagescreenshake"] >> damagescreenshake - S["pda_style"] >> pda_style - S["pda_color"] >> pda_color //try to fix any outdated data if necessary if(needs_update >= 0) @@ -223,11 +224,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) - screenshake = sanitize_integer(screenshake, 0, 200, initial(screenshake)) - damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake)) pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON) pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color)) + screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake)) + damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake)) + return 1 /datum/preferences/proc/save_preferences() @@ -238,7 +240,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return 0 S.cd = "/" - WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //updates (or failing that the sanity checks) will ensure data is not invalid at load. Assume up-to-date + WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //updates (or failing that the sanity checks) will ensure data is not invalid at load. Assume up-to-date //general preferences WRITE_FILE(S["ooccolor"], ooccolor) @@ -266,12 +268,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["menuoptions"], menuoptions) WRITE_FILE(S["enable_tips"], enable_tips) WRITE_FILE(S["tip_delay"], tip_delay) + WRITE_FILE(S["pda_style"], pda_style) + WRITE_FILE(S["pda_color"], pda_color) + //citadel code WRITE_FILE(S["screenshake"], screenshake) WRITE_FILE(S["damagescreenshake"], damagescreenshake) WRITE_FILE(S["arousable"], arousable) - WRITE_FILE(S["pda_style"], pda_style) - WRITE_FILE(S["pda_color"], pda_color) return 1 @@ -338,6 +341,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else S["feature_human_tail"] >> features["tail_human"] S["feature_human_ears"] >> features["ears"] + S["human_name"] >> custom_names["human"] S["clown_name"] >> custom_names["clown"] S["mime_name"] >> custom_names["mime"] S["ai_name"] >> custom_names["ai"] @@ -408,7 +412,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else //We have no old flavortext, default to new S["feature_flavor_text"] >> features["flavor_text"] - //try to fix any outdated data if necessary if(needs_update >= 0) update_character(needs_update, S) //needs_update == savefile_version if we need an update (positive integer) @@ -426,14 +429,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(gender == MALE) hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_male_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_male_list) -// underwear = sanitize_inlist(underwear, GLOB.underwear_m) -// undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m) + //underwear = sanitize_inlist(underwear, GLOB.underwear_m) + //undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m) else hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_female_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_female_list) -// underwear = sanitize_inlist(underwear, GLOB.underwear_f) -// undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f) -// socks = sanitize_inlist(socks, GLOB.socks_list) + //underwear = sanitize_inlist(underwear, GLOB.underwear_f) + //undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f) + //socks = sanitize_inlist(socks, GLOB.socks_list) underwear = "Nude" undershirt = "Nude" socks = "Nude" @@ -484,56 +487,57 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return 0 S.cd = "/character[default_slot]" - S["version"] << SAVEFILE_VERSION_MAX //load_character will sanitize any bad data, so assume up-to-date. + WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //load_character will sanitize any bad data, so assume up-to-date.) //Character - WRITE_FILE(S["OOC_Notes"], metadata) - WRITE_FILE(S["real_name"], real_name) + WRITE_FILE(S["OOC_Notes"] , metadata) + WRITE_FILE(S["real_name"] , real_name) WRITE_FILE(S["name_is_always_random"] , be_random_name) WRITE_FILE(S["body_is_always_random"] , be_random_body) - WRITE_FILE(S["gender"], gender) - WRITE_FILE(S["age"], age) - WRITE_FILE(S["hair_color"], hair_color) - WRITE_FILE(S["facial_hair_color"], facial_hair_color) - WRITE_FILE(S["eye_color"], eye_color) - WRITE_FILE(S["skin_tone"], skin_tone) - WRITE_FILE(S["hair_style_name"], hair_style) - WRITE_FILE(S["facial_style_name"], facial_hair_style) - WRITE_FILE(S["underwear"], underwear) - WRITE_FILE(S["undershirt"], undershirt) - WRITE_FILE(S["socks"], socks) - WRITE_FILE(S["backbag"], backbag) - WRITE_FILE(S["uplink_loc"], uplink_spawn_loc) - WRITE_FILE(S["species"], pref_species.id) - WRITE_FILE(S["feature_mcolor"], features["mcolor"]) - WRITE_FILE(S["feature_lizard_tail"], features["tail_lizard"]) - WRITE_FILE(S["feature_human_tail"], features["tail_human"]) - WRITE_FILE(S["feature_lizard_snout"], features["snout"]) - WRITE_FILE(S["feature_lizard_horns"], features["horns"]) - WRITE_FILE(S["feature_human_ears"], features["ears"]) - WRITE_FILE(S["feature_lizard_frills"], features["frills"]) - WRITE_FILE(S["feature_lizard_spines"], features["spines"]) - WRITE_FILE(S["feature_lizard_body_markings"], features["body_markings"]) - WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) - WRITE_FILE(S["clown_name"], custom_names["clown"]) - WRITE_FILE(S["mime_name"], custom_names["mime"]) - WRITE_FILE(S["ai_name"] , custom_names["ai"]) - WRITE_FILE(S["cyborg_name"], custom_names["cyborg"]) - WRITE_FILE(S["religion_name"], custom_names["religion"]) - WRITE_FILE(S["deity_name"], custom_names["deity"]) - WRITE_FILE(S["prefered_security_department"], prefered_security_department) + WRITE_FILE(S["gender"] , gender) + WRITE_FILE(S["age"] , age) + WRITE_FILE(S["hair_color"] , hair_color) + WRITE_FILE(S["facial_hair_color"] , facial_hair_color) + WRITE_FILE(S["eye_color"] , eye_color) + WRITE_FILE(S["skin_tone"] , skin_tone) + WRITE_FILE(S["hair_style_name"] , hair_style) + WRITE_FILE(S["facial_style_name"] , facial_hair_style) + WRITE_FILE(S["underwear"] , underwear) + WRITE_FILE(S["undershirt"] , undershirt) + WRITE_FILE(S["socks"] , socks) + WRITE_FILE(S["backbag"] , backbag) + WRITE_FILE(S["uplink_loc"] , uplink_spawn_loc) + WRITE_FILE(S["species"] , pref_species.id) + WRITE_FILE(S["feature_mcolor"] , features["mcolor"]) + WRITE_FILE(S["feature_lizard_tail"] , features["tail_lizard"]) + WRITE_FILE(S["feature_human_tail"] , features["tail_human"]) + WRITE_FILE(S["feature_lizard_snout"] , features["snout"]) + WRITE_FILE(S["feature_lizard_horns"] , features["horns"]) + WRITE_FILE(S["feature_human_ears"] , features["ears"]) + WRITE_FILE(S["feature_lizard_frills"] , features["frills"]) + WRITE_FILE(S["feature_lizard_spines"] , features["spines"]) + WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"]) + WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) + WRITE_FILE(S["human_name"] , custom_names["human"]) + WRITE_FILE(S["clown_name"] , custom_names["clown"]) + WRITE_FILE(S["mime_name"] , custom_names["mime"]) + WRITE_FILE(S["ai_name"] , custom_names["ai"]) + WRITE_FILE(S["cyborg_name"] , custom_names["cyborg"]) + WRITE_FILE(S["religion_name"] , custom_names["religion"]) + WRITE_FILE(S["deity_name"] , custom_names["deity"]) + WRITE_FILE(S["prefered_security_department"] , prefered_security_department) //Jobs - WRITE_FILE(S["joblessrole"], joblessrole) - WRITE_FILE(S["job_civilian_high"], job_civilian_high) - WRITE_FILE(S["job_civilian_med"], job_civilian_med) - WRITE_FILE(S["job_civilian_low"], job_civilian_low) - WRITE_FILE(S["job_medsci_high"], job_medsci_high) - WRITE_FILE(S["job_medsci_med"], job_medsci_med) - WRITE_FILE(S["job_medsci_low"], job_medsci_low) - WRITE_FILE(S["job_engsec_high"], job_engsec_high) - WRITE_FILE(S["job_engsec_med"], job_engsec_med) - WRITE_FILE(S["job_engsec_low"], job_engsec_low) + WRITE_FILE(S["joblessrole"] , joblessrole) + WRITE_FILE(S["job_civilian_high"] , job_civilian_high) + WRITE_FILE(S["job_civilian_med"] , job_civilian_med) + WRITE_FILE(S["job_civilian_low"] , job_civilian_low) + WRITE_FILE(S["job_medsci_high"] , job_medsci_high) + WRITE_FILE(S["job_medsci_med"] , job_medsci_med) + WRITE_FILE(S["job_medsci_low"] , job_medsci_low) + WRITE_FILE(S["job_engsec_high"] , job_engsec_high) + WRITE_FILE(S["job_engsec_med"] , job_engsec_med) + WRITE_FILE(S["job_engsec_low"] , job_engsec_low) //Citadel WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"]) @@ -576,8 +580,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_has_womb"], features["has_womb"]) //flavor text WRITE_FILE(S["feature_flavor_text"], features["flavor_text"]) + return 1 + #undef SAVEFILE_VERSION_MAX #undef SAVEFILE_VERSION_MIN diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index fba2c486ab..255423a4fc 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -30,7 +30,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_ears)( usr.client.prefs.chat_toggles ^= CHAT_GHOSTEARS to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Ears", "[usr.client.prefs.chat_toggles & CHAT_GHOSTEARS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Ears", "[usr.client.prefs.chat_toggles & CHAT_GHOSTEARS ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_ears/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTEARS @@ -41,7 +41,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_sight) usr.client.prefs.chat_toggles ^= CHAT_GHOSTSIGHT to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Sight", "[usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Sight", "[usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_sight/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTSIGHT @@ -52,7 +52,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_whispe usr.client.prefs.chat_toggles ^= CHAT_GHOSTWHISPER to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER) ? "see all whispers in the world" : "only see whispers from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Whispers", "[usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Whispers", "[usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_whispers/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTWHISPER @@ -63,7 +63,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_radio) usr.client.prefs.chat_toggles ^= CHAT_GHOSTRADIO to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO) ? "see radio chatter" : "not see radio chatter"].") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Radio", "[usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //social experiment, increase the generation whenever you copypaste this shamelessly GENERATION 1 + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Radio", "[usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //social experiment, increase the generation whenever you copypaste this shamelessly GENERATION 1 /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_radio/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTRADIO @@ -74,7 +74,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_pda)() usr.client.prefs.chat_toggles ^= CHAT_GHOSTPDA to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTPDA) ? "see all pda messages in the world" : "only see pda messages from nearby mobs"].") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost PDA", "[usr.client.prefs.chat_toggles & CHAT_GHOSTPDA]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost PDA", "[usr.client.prefs.chat_toggles & CHAT_GHOSTPDA ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_pda/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_GHOSTPDA @@ -89,7 +89,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox/Events, toggle_death usr.client.prefs.toggles ^= DISABLE_DEATHRATTLE usr.client.prefs.save_preferences() to_chat(usr, "You will [(usr.client.prefs.toggles & DISABLE_DEATHRATTLE) ? "no longer" : "now"] get messages when a sentient mob dies.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Deathrattle", "[!(usr.client.prefs.toggles & DISABLE_DEATHRATTLE)]")) //If you are copy-pasting this, maybe you should spend some time reading the comments. + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Deathrattle", "[!(usr.client.prefs.toggles & DISABLE_DEATHRATTLE) ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, maybe you should spend some time reading the comments. /datum/verbs/menu/Settings/Ghost/chatterbox/Events/toggle_deathrattle/Get_checked(client/C) return !(C.prefs.toggles & DISABLE_DEATHRATTLE) @@ -100,7 +100,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox/Events, toggle_arriv usr.client.prefs.toggles ^= DISABLE_ARRIVALRATTLE to_chat(usr, "You will [(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE) ? "no longer" : "now"] get messages when someone joins the station.") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Arrivalrattle", "[!(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE)]")) //If you are copy-pasting this, maybe you should rethink where your life went so wrong. + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Arrivalrattle", "[!(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE) ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, maybe you should rethink where your life went so wrong. /datum/verbs/menu/Settings/Ghost/chatterbox/Events/toggle_arrivalrattle/Get_checked(client/C) return !(C.prefs.toggles & DISABLE_ARRIVALRATTLE) @@ -111,7 +111,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost, togglemidroundantag)() usr.client.prefs.toggles ^= MIDROUND_ANTAG usr.client.prefs.save_preferences() to_chat(usr, "You will [(usr.client.prefs.toggles & MIDROUND_ANTAG) ? "now" : "no longer"] be considered for midround antagonist positions.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Midround Antag", "[usr.client.prefs.toggles & MIDROUND_ANTAG]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Midround Antag", "[usr.client.prefs.toggles & MIDROUND_ANTAG ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Ghost/togglemidroundantag/Get_checked(client/C) return C.prefs.toggles & MIDROUND_ANTAG @@ -128,7 +128,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggletitlemusic)() else to_chat(usr, "You will no longer hear music in the game lobby.") usr.stop_sound_channel(CHANNEL_LOBBYMUSIC) - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Lobby Music", "[usr.client.prefs.toggles & SOUND_LOBBY]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Lobby Music", "[usr.client.prefs.toggles & SOUND_LOBBY ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/toggletitlemusic/Get_checked(client/C) return C.prefs.toggles & SOUND_LOBBY @@ -147,7 +147,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglemidis)() var/client/C = usr.client if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded) C.chatOutput.sendMusic(" ") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Midis", "[usr.client.prefs.toggles & SOUND_MIDI]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Midis", "[usr.client.prefs.toggles & SOUND_MIDI ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/togglemidis/Get_checked(client/C) return C.prefs.toggles & SOUND_MIDI @@ -162,7 +162,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_instruments)() to_chat(usr, "You will now hear people playing musical instruments.") else to_chat(usr, "You will no longer hear musical instruments.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Instruments", "[usr.client.prefs.toggles & SOUND_INSTRUMENTS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Instruments", "[usr.client.prefs.toggles & SOUND_INSTRUMENTS ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/toggle_instruments/Get_checked(client/C) return C.prefs.toggles & SOUND_INSTRUMENTS @@ -179,7 +179,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, Toggle_Soundscape)() to_chat(usr, "You will no longer hear ambient sounds.") usr.stop_sound_channel(CHANNEL_AMBIENCE) usr.stop_sound_channel(CHANNEL_BUZZ) - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ambience", "[usr.client.prefs.toggles & SOUND_AMBIENCE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ambience", "[usr.client.prefs.toggles & SOUND_AMBIENCE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/Toggle_Soundscape/Get_checked(client/C) return C.prefs.toggles & SOUND_AMBIENCE @@ -196,7 +196,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_ship_ambience)() to_chat(usr, "You will no longer hear ship ambience.") usr.stop_sound_channel(CHANNEL_BUZZ) usr.client.ambience_playing = 0 - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ship Ambience", "[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE]")) //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^) + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ship Ambience", "[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^) /datum/verbs/menu/Settings/Sound/toggle_ship_ambience/Get_checked(client/C) return C.prefs.toggles & SOUND_SHIP_AMBIENCE @@ -208,7 +208,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_announcement_sound)() usr.client.prefs.toggles ^= SOUND_ANNOUNCEMENTS to_chat(usr, "You will now [(usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS) ? "hear announcement sounds" : "no longer hear announcements"].") usr.client.prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Announcement Sound", "[usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Announcement Sound", "[usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/Sound/toggle_announcement_sound/Get_checked(client/C) return C.prefs.toggles & SOUND_ANNOUNCEMENTS @@ -223,7 +223,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleprayersounds)() to_chat(usr, "You will now hear prayer sounds.") else to_chat(usr, "You will no longer prayer sounds.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Sounds", "[usr.client.prefs.toggles & SOUND_PRAYERS]")) + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Sounds", "[usr.client.prefs.toggles & SOUND_PRAYERS ? "Enabled" : "Disabled"]")) /datum/verbs/menu/Settings/Sound/toggleprayersounds/Get_checked(client/C) return C.prefs.toggles & SOUND_PRAYERS @@ -246,7 +246,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)() usr.client.prefs.chat_toggles ^= CHAT_OOC usr.client.prefs.save_preferences() to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_OOC) ? "now" : "no longer"] see messages on the OOC channel.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Seeing OOC", "[usr.client.prefs.chat_toggles & CHAT_OOC]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Seeing OOC", "[usr.client.prefs.chat_toggles & CHAT_OOC ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/verbs/menu/Settings/listen_ooc/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_OOC @@ -337,7 +337,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.toggles ^= INTENT_STYLE to_chat(src, "[(prefs.toggles & INTENT_STYLE) ? "Clicking directly on intents selects them." : "Clicking on intents rotates selection clockwise."]") prefs.save_preferences() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Intent Selection", "[prefs.toggles & INTENT_STYLE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Intent Selection", "[prefs.toggles & INTENT_STYLE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggle_ghost_hud_pref() set name = "Toggle Ghost HUD" @@ -349,7 +349,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.save_preferences() if(isobserver(mob)) mob.hud_used.show_hud() - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost HUD", "[prefs.ghost_hud]")) + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost HUD", "[prefs.ghost_hud ? "Enabled" : "Disabled"]")) /client/verb/toggle_inquisition() // warning: unexpected inquisition set name = "Toggle Inquisitiveness" @@ -362,7 +362,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS to_chat(src, "You will now examine everything you click on.") else to_chat(src, "You will no longer examine things you click on.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Inquisitiveness", "[prefs.inquisitive_ghost]")) + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Inquisitiveness", "[prefs.inquisitive_ghost ? "Enabled" : "Disabled"]")) //Admin Preferences /client/proc/toggleadminhelpsound() @@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.toggles ^= SOUND_ADMINHELP prefs.save_preferences() to_chat(usr, "You will [(prefs.toggles & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Adminhelp Sound", "[prefs.toggles & SOUND_ADMINHELP]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Adminhelp Sound", "[prefs.toggles & SOUND_ADMINHELP ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggleannouncelogin() set name = "Do/Don't Announce Login" @@ -385,7 +385,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.toggles ^= ANNOUNCE_LOGIN prefs.save_preferences() to_chat(usr, "You will [(prefs.toggles & ANNOUNCE_LOGIN) ? "now" : "no longer"] have an announcement to other admins when you login.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Login Announcement", "[prefs.toggles & ANNOUNCE_LOGIN]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Login Announcement", "[prefs.toggles & ANNOUNCE_LOGIN ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_hear_radio() set name = "Show/Hide Radio Chatter" @@ -396,7 +396,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.chat_toggles ^= CHAT_RADIO prefs.save_preferences() to_chat(usr, "You will [(prefs.chat_toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from nearby radios or speakers") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Radio Chatter", "[prefs.chat_toggles & CHAT_RADIO]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Radio Chatter", "[prefs.chat_toggles & CHAT_RADIO ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/deadchat() set name = "Show/Hide Deadchat" @@ -405,7 +405,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.chat_toggles ^= CHAT_DEAD prefs.save_preferences() to_chat(src, "You will [(prefs.chat_toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Deadchat Visibility", "[prefs.chat_toggles & CHAT_DEAD]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Deadchat Visibility", "[prefs.chat_toggles & CHAT_DEAD ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggleprayers() set name = "Show/Hide Prayers" @@ -414,4 +414,4 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS prefs.chat_toggles ^= CHAT_PRAYER prefs.save_preferences() to_chat(src, "You will [(prefs.chat_toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat.") - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Visibility", "[prefs.chat_toggles & CHAT_PRAYER]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Visibility", "[prefs.chat_toggles & CHAT_PRAYER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm index 9d5433663e..0ff1bdefe3 100644 --- a/code/modules/clothing/ears/_ears.dm +++ b/code/modules/clothing/ears/_ears.dm @@ -1,3 +1,4 @@ + //Ears: currently only used for headsets and earmuffs /obj/item/clothing/ears name = "ears" diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 86d4c3466c..614a2c194b 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -4,7 +4,7 @@ icon_state = "yellow" item_state = "ygloves" siemens_coefficient = 0 - permeability_coefficient = 0.5 + permeability_coefficient = 0.05 item_color="yellow" resistance_flags = NONE @@ -14,7 +14,7 @@ icon_state = "yellow" item_state = "ygloves" siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() - permeability_coefficient = 0.5 + permeability_coefficient = 0.05 item_color="yellow" resistance_flags = NONE @@ -77,7 +77,7 @@ name = "insulated gloves" desc = "These gloves will protect the wearer from electric shock." siemens_coefficient = 0 - permeability_coefficient = 0.5 + permeability_coefficient = 0.05 resistance_flags = NONE /obj/item/clothing/gloves/color/rainbow @@ -148,7 +148,7 @@ item_state = "egloves" item_color = "captain" siemens_coefficient = 0 - permeability_coefficient = 0.5 + permeability_coefficient = 0.05 cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS @@ -162,7 +162,7 @@ icon_state = "latex" item_state = "lgloves" siemens_coefficient = 0.3 - permeability_coefficient = 0.1 + permeability_coefficient = 0.01 item_color="white" transfer_prints = TRUE resistance_flags = NONE diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 9adc86e7f8..51a1131f1c 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -1,84 +1,84 @@ -/obj/item/clothing/head/hardhat - name = "hard hat" - desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." - icon_state = "hardhat0_yellow" - item_state = "hardhat0_yellow" - var/brightness_on = 4 //luminosity when on +/obj/item/clothing/head/hardhat + name = "hard hat" + desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." + icon_state = "hardhat0_yellow" + item_state = "hardhat0_yellow" + var/brightness_on = 4 //luminosity when on var/on = FALSE - item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite) - armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 100, acid = 50) - flags_inv = 0 - actions_types = list(/datum/action/item_action/toggle_helmet_light) - resistance_flags = FIRE_PROOF + item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite) + armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 100, acid = 50) + flags_inv = 0 + actions_types = list(/datum/action/item_action/toggle_helmet_light) + resistance_flags = FIRE_PROOF dynamic_hair_suffix = "+generic" - - dog_fashion = /datum/dog_fashion/head - -/obj/item/clothing/head/hardhat/attack_self(mob/user) - on = !on - icon_state = "hardhat[on]_[item_color]" - item_state = "hardhat[on]_[item_color]" - user.update_inv_head() //so our mob-overlays update - - if(on) - turn_on(user) - else - turn_off(user) - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - -/obj/item/clothing/head/hardhat/proc/turn_on(mob/user) - set_light(brightness_on) - -/obj/item/clothing/head/hardhat/proc/turn_off(mob/user) - set_light(0) - -/obj/item/clothing/head/hardhat/orange - icon_state = "hardhat0_orange" - item_state = "hardhat0_orange" - item_color = "orange" - dog_fashion = null - -/obj/item/clothing/head/hardhat/red - icon_state = "hardhat0_red" - item_state = "hardhat0_red" - item_color = "red" - dog_fashion = null - name = "firefighter helmet" + + dog_fashion = /datum/dog_fashion/head + +/obj/item/clothing/head/hardhat/attack_self(mob/user) + on = !on + icon_state = "hardhat[on]_[item_color]" + item_state = "hardhat[on]_[item_color]" + user.update_inv_head() //so our mob-overlays update + + if(on) + turn_on(user) + else + turn_off(user) + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + +/obj/item/clothing/head/hardhat/proc/turn_on(mob/user) + set_light(brightness_on) + +/obj/item/clothing/head/hardhat/proc/turn_off(mob/user) + set_light(0) + +/obj/item/clothing/head/hardhat/orange + icon_state = "hardhat0_orange" + item_state = "hardhat0_orange" + item_color = "orange" + dog_fashion = null + +/obj/item/clothing/head/hardhat/red + icon_state = "hardhat0_red" + item_state = "hardhat0_red" + item_color = "red" + dog_fashion = null + name = "firefighter helmet" flags_1 = STOPSPRESSUREDMAGE_1 - heat_protection = HEAD - max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - cold_protection = HEAD - min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - -/obj/item/clothing/head/hardhat/white - icon_state = "hardhat0_white" - item_state = "hardhat0_white" - item_color = "white" + heat_protection = HEAD + max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + +/obj/item/clothing/head/hardhat/white + icon_state = "hardhat0_white" + item_state = "hardhat0_white" + item_color = "white" flags_1 = STOPSPRESSUREDMAGE_1 - heat_protection = HEAD - max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - cold_protection = HEAD - min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - dog_fashion = /datum/dog_fashion/head - -/obj/item/clothing/head/hardhat/dblue - icon_state = "hardhat0_dblue" - item_state = "hardhat0_dblue" - item_color = "dblue" - dog_fashion = null - -/obj/item/clothing/head/hardhat/atmos - icon_state = "hardhat0_atmos" - item_state = "hardhat0_atmos" - item_color = "atmos" - dog_fashion = null - name = "atmospheric technician's firefighting helmet" - desc = "A firefighter's helmet, able to keep the user cool in any situation." + heat_protection = HEAD + max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + dog_fashion = /datum/dog_fashion/head + +/obj/item/clothing/head/hardhat/dblue + icon_state = "hardhat0_dblue" + item_state = "hardhat0_dblue" + item_color = "dblue" + dog_fashion = null + +/obj/item/clothing/head/hardhat/atmos + icon_state = "hardhat0_atmos" + item_state = "hardhat0_atmos" + item_color = "atmos" + dog_fashion = null + name = "atmospheric technician's firefighting helmet" + desc = "A firefighter's helmet, able to keep the user cool in any situation." flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - heat_protection = HEAD - max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - cold_protection = HEAD - min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + heat_protection = HEAD + max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 9f09783df2..544d9e7b12 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -1,5 +1,7 @@ + + /obj/item/clothing/head/centhat - name = "\improper Centcom hat" + name = "\improper CentCom hat" icon_state = "centcom" desc = "It's good to be emperor." item_state = "that" @@ -291,6 +293,18 @@ desc = "A simple straw hat." icon_state = "scarecrow_hat" +/obj/item/clothing/head/lobsterhat + name = "foam lobster head" + desc = "When everything's going to crab, protecting your head is the best choice." + icon_state = "lobster_hat" + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR + +/obj/item/clothing/head/drfreezehat + name = "doctor freeze's wig" + desc = "A cool wig for cool people." + icon_state = "drfreeze_hat" + flags_inv = HIDEHAIR + /obj/item/clothing/head/pharoah name = "pharoah hat" desc = "Walk like an Egyptian." diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 58b4d1fffe..403b81211d 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -14,8 +14,8 @@ L.implant(H, null, 1) var/obj/item/device/radio/R = H.ears - R.set_frequency(GLOB.CENTCOM_FREQ) - R.freqlock = 1 + R.set_frequency(FREQ_CENTCOM) + R.freqlock = TRUE var/obj/item/card/id/W = H.wear_id W.registered_name = H.real_name diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index e16dd2a782..050c2fdc87 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -102,8 +102,8 @@ var/obj/item/device/radio/R = H.ears if(R) - R.set_frequency(GLOB.SYND_FREQ) - R.freqlock = 1 + R.set_frequency(FREQ_SYNDICATE) + R.freqlock = TRUE var/obj/item/card/id/W = H.wear_id if(W) @@ -257,8 +257,8 @@ W.update_label() var/obj/item/device/radio/headset/R = H.ears - R.set_frequency(GLOB.CENTCOM_FREQ) - R.freqlock = 1 + R.set_frequency(FREQ_CENTCOM) + R.freqlock = TRUE /datum/outfit/ghost_cultist name = "Cultist Ghost" @@ -396,8 +396,8 @@ return var/obj/item/device/radio/R = H.ears - R.set_frequency(GLOB.CENTCOM_FREQ) - R.freqlock = 1 + R.set_frequency(FREQ_CENTCOM) + R.freqlock = TRUE var/obj/item/implant/mindshield/L = new/obj/item/implant/mindshield(H)//Here you go Deuryn L.implant(H, null, 1) diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index a2707de58b..1ff8c65d4b 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -2,7 +2,7 @@ icon = 'icons/obj/clothing/suits.dmi' name = "suit" var/fire_resist = T0C+100 - allowed = list(/obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 7cbdb46f55..3e044108fb 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -354,7 +354,7 @@ item_state = "centcom" w_class = WEIGHT_CLASS_BULKY body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) flags_1 = THICKMATERIAL_1 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 11b60817ed..bfd4415b3a 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -21,7 +21,7 @@ flags_1 = THICKMATERIAL_1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 1 - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/pen, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray) + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/pen, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 80, fire = 30, acid = 100) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT strip_delay = 70 diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index bb379ae6f3..e6331eb8b8 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -20,7 +20,7 @@ item_state = "bio_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/device/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/device/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Chaplain /obj/item/clothing/suit/hooded/chaplain_hoodie @@ -29,7 +29,7 @@ icon_state = "chaplain_hoodie" item_state = "chaplain_hoodie" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) hoodtype = /obj/item/clothing/head/hooded/chaplain_hood /obj/item/clothing/head/hooded/chaplain_hood @@ -46,7 +46,7 @@ item_state = "nun" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/studentuni name = "student robe" @@ -54,7 +54,7 @@ icon_state = "studentuni" item_state = "studentuni" body_parts_covered = ARMS|CHEST - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/witchhunter name = "witchunter garb" @@ -62,7 +62,7 @@ icon_state = "witchhunter" item_state = "witchhunter" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Chef /obj/item/clothing/suit/toggle/chef diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index f50f6eaf6a..7c7599af3d 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -1,48 +1,49 @@ -/obj/item/clothing/suit/toggle/labcoat - name = "labcoat" - desc = "A suit that protects against minor chemical spills." - icon_state = "labcoat" - item_state = "labcoat" - blood_overlay_type = "coat" - body_parts_covered = CHEST|ARMS - allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50) - togglename = "buttons" - -/obj/item/clothing/suit/toggle/labcoat/cmo - name = "chief medical officer's labcoat" - desc = "Bluer than the standard model." - icon_state = "labcoat_cmo" - item_state = "labcoat_cmo" - -/obj/item/clothing/suit/toggle/labcoat/emt - name = "EMT's jacket" - desc = "A dark blue jacket with reflective strips for emergency medical technicians." - icon_state = "labcoat_emt" - item_state = "labcoat_cmo" - -/obj/item/clothing/suit/toggle/labcoat/mad - name = "\improper The Mad's labcoat" - desc = "It makes you look capable of konking someone on the noggin and shooting them into space." - icon_state = "labgreen" - item_state = "labgreen" - -/obj/item/clothing/suit/toggle/labcoat/genetics - name = "geneticist labcoat" - desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder." - icon_state = "labcoat_gen" - -/obj/item/clothing/suit/toggle/labcoat/chemist - name = "chemist labcoat" - desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder." - icon_state = "labcoat_chem" - -/obj/item/clothing/suit/toggle/labcoat/virologist - name = "virologist labcoat" - desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder." - icon_state = "labcoat_vir" - -/obj/item/clothing/suit/toggle/labcoat/science - name = "scientist labcoat" - desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder." - icon_state = "labcoat_tox" \ No newline at end of file +/obj/item/clothing/suit/toggle/labcoat + name = "labcoat" + desc = "A suit that protects against minor chemical spills." + icon_state = "labcoat" + item_state = "labcoat" + blood_overlay_type = "coat" + body_parts_covered = CHEST|ARMS + allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50) + togglename = "buttons" + species_exception = list(/datum/species/golem) + +/obj/item/clothing/suit/toggle/labcoat/cmo + name = "chief medical officer's labcoat" + desc = "Bluer than the standard model." + icon_state = "labcoat_cmo" + item_state = "labcoat_cmo" + +/obj/item/clothing/suit/toggle/labcoat/emt + name = "EMT's jacket" + desc = "A dark blue jacket with reflective strips for emergency medical technicians." + icon_state = "labcoat_emt" + item_state = "labcoat_cmo" + +/obj/item/clothing/suit/toggle/labcoat/mad + name = "\improper The Mad's labcoat" + desc = "It makes you look capable of konking someone on the noggin and shooting them into space." + icon_state = "labgreen" + item_state = "labgreen" + +/obj/item/clothing/suit/toggle/labcoat/genetics + name = "geneticist labcoat" + desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder." + icon_state = "labcoat_gen" + +/obj/item/clothing/suit/toggle/labcoat/chemist + name = "chemist labcoat" + desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder." + icon_state = "labcoat_chem" + +/obj/item/clothing/suit/toggle/labcoat/virologist + name = "virologist labcoat" + desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder." + icon_state = "labcoat_vir" + +/obj/item/clothing/suit/toggle/labcoat/science + name = "scientist labcoat" + desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder." + icon_state = "labcoat_tox" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index a5135222d0..5a2e5ade3c 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -93,7 +93,7 @@ item_state = "syndicate-black-red" desc = "A plastic replica of the Syndicate space suit. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!" w_class = WEIGHT_CLASS_NORMAL - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT resistance_flags = NONE @@ -160,7 +160,7 @@ item_state = "w_suit" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/cardborg name = "cardborg suit" @@ -240,7 +240,7 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too - allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/gun/ballistic/automatic/speargun) + allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/gun/ballistic/automatic/speargun) hoodtype = /obj/item/clothing/head/hooded/carp_hood /obj/item/clothing/head/hooded/carp_hood @@ -355,7 +355,7 @@ desc = "Aviators not included." icon_state = "bomberjacket" item_state = "brownjsuit" - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/device/radio) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/device/radio) body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -367,7 +367,7 @@ item_state = "hostrench" resistance_flags = NONE max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio) /obj/item/clothing/suit/jacket/leather/overcoat name = "leather overcoat" @@ -397,7 +397,7 @@ desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable." icon_state = "militaryjacket" item_state = "militaryjacket" - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio) /obj/item/clothing/suit/jacket/letterman name = "letterman jacket" @@ -470,7 +470,7 @@ cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) /obj/item/clothing/head/hooded/winterhood name = "winter hood" @@ -513,7 +513,7 @@ name = "medical winter coat" icon_state = "coatmedical" item_state = "coatmedical" - allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/medical @@ -524,7 +524,7 @@ name = "science winter coat" icon_state = "coatscience" item_state = "coatscience" - allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/science @@ -536,7 +536,7 @@ icon_state = "coatengineer" item_state = "coatengineer" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20, fire = 30, acid = 45) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering /obj/item/clothing/head/hooded/winterhood/engineering @@ -555,7 +555,7 @@ name = "hydroponics winter coat" icon_state = "coathydro" item_state = "coathydro" - allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro /obj/item/clothing/head/hooded/winterhood/hydro @@ -574,7 +574,7 @@ name = "mining winter coat" icon_state = "coatminer" item_state = "coatminer" - allowed = list(/obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + allowed = list(/obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/miner diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 10c1a47ac1..22b5ee421b 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -18,7 +18,7 @@ gas_transfer_coefficient = 0.9 permeability_coefficient = 0.5 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/extinguisher, /obj/item/crowbar) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar) slowdown = 1 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 @@ -141,7 +141,7 @@ permeability_coefficient = 0.5 flags_1 = THICKMATERIAL_1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/device/geiger_counter) + allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/geiger_counter) slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30) strip_delay = 60 @@ -151,6 +151,6 @@ /obj/item/clothing/suit/radiation/ComponentInitialize() . = ..() - AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION, TRUE, FALSE) + AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION, TRUE, FALSE) // Just don't want things to be irradiated inside this // Except things on the mob aren't even inside the suit so ehhhhhh \ No newline at end of file diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index bb9887c373..008ced69ea 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -149,7 +149,7 @@ name = "papier-mache robe" // no non-latin characters! desc = "A robe held together by various bits of clear-tape and paste." icon_state = "wizard-paper" - item_state = "wizrobe" + item_state = "wizard-paper" var/robe_charge = TRUE actions_types = list(/datum/action/item_action/stickmen) diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 4e7f0da011..6d522a3706 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -40,6 +40,7 @@ item_color = "cargo" body_parts_covered = CHEST|GROIN|ARMS mutantrace_variation = MUTANTRACE_VARIATION + alt_covers_chest = TRUE /obj/item/clothing/under/rank/chaplain diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 185712e072..cd69aec17e 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -31,4 +31,4 @@ icon_state = "robotics" item_state = "robotics" item_color = "robotics" - resistance_flags = NONE + resistance_flags = NONE \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 7686ba54ca..1fccac5c43 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -647,6 +647,7 @@ return 0 /obj/item/clothing/under/plasmaman/attackby(obj/item/E, mob/user, params) + ..() if (istype(E, /obj/item/device/extinguisher_refill)) if (extinguishes_left == 5) to_chat(user, "The inbuilt extinguisher is full.") diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 4eae2cd194..c34c219882 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -74,4 +74,3 @@ else // Like how did we get here? return FALSE - diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 95f72d15b3..e75752adcc 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -11,6 +11,7 @@ /datum/round_event/ghost_role/blob announceWhen = -1 role_name = "blob overmind" + fakeable = TRUE /datum/round_event/ghost_role/blob/announce(fake) priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index b75140e3c7..c17140a2d2 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -23,3 +23,5 @@ new /mob/living/simple_animal/hostile/carp(C.loc) else new /mob/living/simple_animal/hostile/carp/megacarp(C.loc) + + diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index a41b4bfdde..f2e3104ab8 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -13,7 +13,7 @@ var/max_severity = 3 -/datum/round_event/disease_outbreak/announce() +/datum/round_event/disease_outbreak/announce(fake) priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg') /datum/round_event/disease_outbreak/setup() diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index 978f62d85a..47eb2d4ea8 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -28,4 +28,4 @@ fakeable = FALSE /datum/round_event/sandstorm/tick() - spawn_meteors(10, GLOB.meteorsC) + spawn_meteors(10, GLOB.meteorsC) \ No newline at end of file diff --git a/code/modules/events/ghost_role.dm b/code/modules/events/ghost_role.dm index f5e9513b2e..e50d89a3a3 100644 --- a/code/modules/events/ghost_role.dm +++ b/code/modules/events/ghost_role.dm @@ -7,6 +7,7 @@ var/minimum_required = 1 var/role_name = "debug rat with cancer" // Q U A L I T Y M E M E S var/list/spawned_mobs = list() + fakeable = FALSE /datum/round_event/ghost_role/start() try_spawning() diff --git a/code/modules/events/holiday/friday13th.dm b/code/modules/events/holiday/friday13th.dm index b1db15a896..ba2c9ea78f 100644 --- a/code/modules/events/holiday/friday13th.dm +++ b/code/modules/events/holiday/friday13th.dm @@ -15,4 +15,4 @@ /datum/round_event/fridaythethirteen/announce(fake) for(var/mob/living/L in player_list) - to_chat(L, "You are feeling unlucky today.") + to_chat(L, "You are feeling unlucky today.") \ No newline at end of file diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 88fe218a22..5bad888f17 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -10,4 +10,4 @@ /datum/round_event/mass_hallucination/start() for(var/mob/living/carbon/C in GLOB.alive_mob_list) - C.hallucination += rand(20, 50) + C.hallucination += rand(20, 50) \ No newline at end of file diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index 894ad7e995..e0e3b98776 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -26,12 +26,10 @@ var/datum/preferences/A = new A.copy_to(operative) operative.dna.update_dna_identity() - var/datum/mind/Mind = new /datum/mind(selected.key) Mind.assigned_role = "Lone Operative" Mind.special_role = "Lone Operative" Mind.active = 1 - Mind.transfer_to(operative) Mind.add_antag_datum(/datum/antagonist/nukeop/lone) diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index ebcade74a3..96f5a3917d 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -56,4 +56,4 @@ temp.prison_open() else if(istype(O, /obj/machinery/door_timer)) var/obj/machinery/door_timer/temp = O - temp.timer_end(forced = TRUE) + temp.timer_end(forced = TRUE) \ No newline at end of file diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 7b66ac553f..d186d2cf88 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -16,5 +16,4 @@ //sound not longer matches the text, but an audible warning is probably good /datum/round_event/radiation_storm/start() - SSweather.run_weather("radiation storm",ZLEVEL_STATION_PRIMARY) - make_maint_all_access() + SSweather.run_weather("radiation storm",ZLEVEL_STATION_PRIMARY) \ No newline at end of file diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index b9815bf7cf..50ed1211c4 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -9,6 +9,7 @@ role_name = "random animal" var/animals = 1 var/one = "one" + fakeable = TRUE /datum/round_event/ghost_role/sentience/announce(fake) var/sentience_report = "" diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index ca5de88d58..55984df033 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -135,7 +135,7 @@ new /obj/structure/spider/stickyweb(T) if(ANTIDOTE_NEEDED) - var/obj/item/reagent_containers/glass/bottle/virus_type = pick(/obj/item/reagent_containers/glass/bottle/beesease, /obj/item/reagent_containers/glass/bottle/brainrot, /obj/item/reagent_containers/glass/bottle/fluspanish) + var/obj/effect/mob_spawn/human/corpse/assistant/infected_assistant = pick(/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection, /obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection, /obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection) var/turf/T for(var/i=0, i<10, i++) if(prob(15)) @@ -145,7 +145,7 @@ else if(prob(25)) shuttle_spawns.Add(/obj/item/shard) T = pick_n_take(empty_shuttle_turfs) - new virus_type(T) + new infected_assistant(T) shuttle_spawns.Add(/obj/structure/closet/crate) shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle/pierrot_throat) shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle/magnitis) diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index 34d3f8a870..a3c625e396 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -35,4 +35,3 @@ spawn_atom_to_turf(spawn_type, vent, 1, FALSE) vents -= vent spawncount-- - diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm index 46bb254703..a9ae27993d 100644 --- a/code/modules/events/spontaneous_appendicitis.dm +++ b/code/modules/events/spontaneous_appendicitis.dm @@ -26,4 +26,4 @@ var/datum/disease/D = new /datum/disease/appendicitis H.ForceContractDisease(D) - break + break \ No newline at end of file diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index ec55b35b02..5e91160575 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -47,4 +47,3 @@ while(cockroaches) new /mob/living/simple_animal/cockroach(get_turf(vent)) cockroaches-- - diff --git a/code/modules/events/weightless.dm b/code/modules/events/weightless.dm index 425ed7ef9f..bb5b3fd15a 100644 --- a/code/modules/events/weightless.dm +++ b/code/modules/events/weightless.dm @@ -28,3 +28,5 @@ if(announceWhen >= 0) command_alert("Artificial gravity arrays are now functioning within normal parameters. Please report any irregularities to your respective head of staff.") + + diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index 779fe7fa09..bfbad559e1 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -1,5 +1,5 @@ -/mob/living/carbon/proc/dream() - set waitfor = 0 +/mob/living/carbon/proc/dream() + set waitfor = 0 var/list/dreams = GLOB.dream_strings.Copy() for(var/obj/item/bedsheet/sheet in loc) dreams += sheet.dream_messages @@ -9,12 +9,12 @@ dreaming++ for(var/i in 1 to dream_images.len) addtimer(CALLBACK(src, .proc/experience_dream, dream_images[i]), ((i - 1) * rand(30,60))) - return 1 - -/mob/living/carbon/proc/handle_dreams() - if(prob(5) && !dreaming) - dream() - + return 1 + +/mob/living/carbon/proc/handle_dreams() + if(prob(5) && !dreaming) + dream() + /mob/living/carbon/proc/experience_dream(dream_image) dreaming-- if(stat != UNCONSCIOUS || InCritical()) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index e55b7ed183..886d9b4837 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -736,6 +736,7 @@ GLOBAL_LIST_INIT(hallucinations_major, list( /datum/hallucination/whispers/New(mob/living/carbon/T, forced = TRUE) ..() + var/target_name = target.first_name() var/speak_messages = list("[pick_list_replacements(HAL_LINES_FILE, "suspicion")]",\ "[pick_list_replacements(HAL_LINES_FILE, "greetings")][target.first_name()]!",\ "[pick_list_replacements(HAL_LINES_FILE, "getout")]",\ @@ -769,8 +770,10 @@ GLOBAL_LIST_INIT(hallucinations_major, list( person = H people += H if(person) //Basic talk + var/chosen = pick(speak_messages) + chosen = replacetext(chosen, "%TARGETNAME%", target_name) var/image/speech_overlay = image('icons/mob/talk.dmi', person, "default0", layer = ABOVE_MOB_LAYER) - var/message = target.compose_message(person,understood_language,pick(speak_messages),null,person.get_spans(),face_name = TRUE) + var/message = target.compose_message(person,understood_language,chosen,null,person.get_spans(),face_name = TRUE) feedback_details += "Type: Talk, Source: [person.real_name], Message: [message]" to_chat(target, message) if(target.client) @@ -778,11 +781,13 @@ GLOBAL_LIST_INIT(hallucinations_major, list( sleep(30) target.client.images.Remove(speech_overlay) else // Radio talk + var/chosen = pick(radio_messages) + chosen = replacetext(chosen, "%TARGETNAME%", target_name) var/list/humans = list() for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) humans += H person = pick(humans) - var/message = target.compose_message(person,understood_language,pick(radio_messages),"1459",person.get_spans(),face_name = TRUE) + var/message = target.compose_message(person,understood_language,chosen,"[FREQ_COMMON]",person.get_spans(),face_name = TRUE) feedback_details += "Type: Radio, Source: [person.real_name], Message: [message]" to_chat(target, message) qdel(src) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index f2ab7ee3a2..dfa6315b04 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -232,8 +232,8 @@ icon_state = "absinthebottle" list_reagents = list("absinthe" = 100) -/obj/item/reagent_containers/food/drinks/bottle/absinthe/New() - ..() +/obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize() + . = ..() redact() /obj/item/reagent_containers/food/drinks/bottle/absinthe/proc/redact() diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 765f118c5e..5e05e85a28 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -9,13 +9,12 @@ var/foodtype = NONE var/last_check_time -/obj/item/weapon/reagent_containers/food/Initialize(mapload) - ..() +/obj/item/reagent_containers/food/Initialize(mapload) + . = ..() if(!mapload) - pixel_x = rand(-5, 5) //Randomizes postion slightly. + pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) - /obj/item/reagent_containers/food/proc/checkLiked(var/fraction, mob/M) if(last_check_time + 50 < world.time) if(ishuman(M)) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index f3460edcaa..7d83788f9d 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -276,8 +276,8 @@ icon = 'icons/obj/food/soupsalad.dmi' icon_state = "wishsoup" -/obj/item/reagent_containers/food/snacks/customizable/soup/New() - ..() +/obj/item/reagent_containers/food/snacks/customizable/soup/Initialize() + . = ..() eatverb = pick("slurp","sip","suck","inhale","drink") diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 08b09124d5..b0e2067be0 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -316,10 +316,10 @@ // name = "Xenoburger" //Name that displays in the UI. // desc = "Smells caustic. Tastes like heresy." //Duh // icon_state = "xburger" //Refers to an icon in food.dmi -///obj/item/reagent_containers/food/snacks/xenoburger/New() //Don't mess with this. -// ..() //Same here. +///obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL MESS WITH THIS +// . = ..() //Same here. // reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste -// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. +// reagents.add_reagent("nutriment", 2) //this line of code for all the contents. // bitesize = 3 //This is the amount each bite consumes. //All foods are distributed among various categories. Use common sense. diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index c7681fe807..9691eee144 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -67,8 +67,8 @@ tastes = list("popcorn" = 3, "butter" = 1) foodtype = JUNKFOOD -/obj/item/reagent_containers/food/snacks/popcorn/New() - ..() +/obj/item/reagent_containers/food/snacks/popcorn/Initialize() + . = ..() eatverb = pick("bite","crunch","nibble","gnaw","gobble","chomp") /obj/item/reagent_containers/food/snacks/loadedbakedpotato @@ -448,8 +448,8 @@ tastes = list("candy" = 1) foodtype = JUNKFOOD | SUGAR -/obj/item/reagent_containers/food/snacks/lollipop/New() - ..() +/obj/item/reagent_containers/food/snacks/lollipop/Initialize() + . = ..() head = mutable_appearance('icons/obj/lollipop.dmi', "lollipop_head") change_head_color(rgb(rand(0, 255), rand(0, 255), rand(0, 255))) @@ -467,8 +467,8 @@ /obj/item/reagent_containers/food/snacks/lollipop/cyborg var/spamchecking = TRUE -/obj/item/reagent_containers/food/snacks/lollipop/cyborg/New() - ..() +/obj/item/reagent_containers/food/snacks/lollipop/cyborg/Initialize() + . = ..() addtimer(CALLBACK(src, .proc/spamcheck), 1200) /obj/item/reagent_containers/food/snacks/lollipop/cyborg/equipped(mob/living/user, slot) @@ -488,15 +488,15 @@ tastes = list("candy") foodtype = JUNKFOOD -/obj/item/reagent_containers/food/snacks/gumball/New() - ..() +/obj/item/reagent_containers/food/snacks/gumball/Initialize() + . = ..() color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) /obj/item/reagent_containers/food/snacks/gumball/cyborg var/spamchecking = TRUE -/obj/item/reagent_containers/food/snacks/gumball/cyborg/New() - ..() +/obj/item/reagent_containers/food/snacks/gumball/cyborg/Initialize() + . = ..() addtimer(CALLBACK(src, .proc/spamcheck), 1200) /obj/item/reagent_containers/food/snacks/gumball/cyborg/equipped(mob/living/user, slot) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 284784484f..b7df203e30 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -350,3 +350,113 @@ filling_color = "#F2CE91" tastes = list("pastry" = 1, "sweetness" = 1) foodtype = GRAIN + +#define PANCAKE_MAX_STACK 10 + +/obj/item/reagent_containers/food/snacks/pancakes + name = "pancake" + desc = "A fluffy pancake. The softer, superior relative of the waffle." + icon_state = "pancakes_1" + item_state = "pancakes" + bonus_reagents = list("vitamin" = 1) + list_reagents = list("nutriment" = 4, "vitamin" = 1) + filling_color = "#D2691E" + tastes = list("pancakes" = 1) + foodtype = GRAIN | SUGAR + +/obj/item/reagent_containers/food/snacks/pancakes/blueberry + name = "blueberry pancake" + desc = "A fluffy and delicious blueberry pancake." + icon_state = "bbpancakes_1" + item_state = "bbpancakes" + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 3) + tastes = list("pancakes" = 1, "blueberries" = 1) + +/obj/item/reagent_containers/food/snacks/pancakes/chocolatechip + name = "chocolate chip pancake" + desc = "A fluffy and delicious chocolate chip pancake." + icon_state = "ccpancakes_1" + item_state = "ccpancakes" + bonus_reagents = list("vitamin" = 2) + list_reagents = list("nutriment" = 6, "vitamin" = 3) + tastes = list("pancakes" = 1, "chocolate" = 1) + +/obj/item/reagent_containers/food/snacks/pancakes/Initialize() + . = ..() + update_icon() + +/obj/item/reagent_containers/food/snacks/pancakes/update_icon() + if(contents.len) + name = "stack of pancakes" + else + name = initial(name) + if(contents.len < our_overlays.len) + cut_overlay(our_overlays[our_overlays.len]) + +/obj/item/reagent_containers/food/snacks/pancakes/examine(mob/user) + var/ingredients_listed = "" + var/pancakeCount = contents.len + switch(pancakeCount) + if(0) + desc = initial(desc) + if(1 to 2) + desc = "A stack of fluffy pancakes." + if(3 to 6) + desc = "A fat stack of fluffy pancakes!" + if(7 to 9) + desc = "A grand tower of fluffy, delicious pancakes!" + if(PANCAKE_MAX_STACK to INFINITY) + desc = "A massive towering spire of fluffy, delicious pancakes. It looks like it could tumble over!" + var/originalBites = bitecount + if (pancakeCount) + var/obj/item/reagent_containers/food/snacks/S = contents[pancakeCount] + bitecount = S.bitecount + ..() + if (pancakeCount) + for(var/obj/item/reagent_containers/food/snacks/pancakes/ING in contents) + ingredients_listed += "[ING.name], " + to_chat(user, "It contains [contents.len?"[ingredients_listed]":"no ingredient, "]on top of a [initial(name)].") + bitecount = originalBites + +/obj/item/reagent_containers/food/snacks/pancakes/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/reagent_containers/food/snacks/pancakes/)) + var/obj/item/reagent_containers/food/snacks/pancakes/P = I + if((contents.len >= PANCAKE_MAX_STACK) || ((P.contents.len + contents.len) > PANCAKE_MAX_STACK) || (reagents.total_volume >= volume)) + to_chat(user, "You can't add that many pancakes to [src]!") + else + if(!user.transferItemToLoc(I, src)) + return + to_chat(user, "You add the [I] to the [name].") + P.name = initial(P.name) + contents += P + update_overlays(P) + if (P.contents.len) + for(var/V in P.contents) + P = V + P.name = initial(P.name) + contents += P + update_overlays(P) + P = I + clearlist(P.contents) + return + else if(contents.len) + var/obj/O = contents[contents.len] + return O.attackby(I, user, params) + ..() + +/obj/item/reagent_containers/food/snacks/pancakes/update_overlays(obj/item/reagent_containers/food/snacks/P) + var/mutable_appearance/pancake = mutable_appearance(icon, "[P.item_state]_[rand(1,3)]") + pancake.pixel_x = rand(-1,1) + pancake.pixel_y = 3 * contents.len - 1 + add_overlay(pancake) + update_icon() + +/obj/item/reagent_containers/food/snacks/pancakes/attack(mob/M, mob/user, def_zone, stacked = TRUE) + if(user.a_intent == INTENT_HARM || !contents.len || !stacked) + return ..() + var/obj/item/O = contents[contents.len] + . = O.attack(M, user, def_zone, FALSE) + update_icon() + +#undef PANCAKE_MAX_STACK \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 977bd60da1..4ce942aadf 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -27,6 +27,7 @@ list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) tastes = list("pie" = 1) foodtype = GRAIN | DAIRY | SUGAR + var/stunning = TRUE /obj/item/reagent_containers/food/snacks/pie/cream/throw_impact(atom/hit_atom) . = ..() @@ -46,15 +47,18 @@ creamoverlay.icon_state = "creampie_lizard" else creamoverlay.icon_state = "creampie_human" - H.Knockdown(20) //splat! + if(stunning) + H.Knockdown(20) //splat! H.adjust_blurriness(1) H.visible_message("[H] is creamed by [src]!", "You've been creamed by [src]!") playsound(H, "desceration", 50, TRUE) - if (!H.creamed) // one layer at a time + if(!H.creamed) // one layer at a time H.add_overlay(creamoverlay) H.creamed = TRUE qdel(src) +/obj/item/reagent_containers/food/snacks/pie/cream/nostun + stunning = FALSE /obj/item/reagent_containers/food/snacks/pie/berryclafoutis name = "berry clafoutis" @@ -112,13 +116,13 @@ foodtype = GRAIN | VEGETABLES -/obj/item/reagent_containers/food/snacks/pie/plump_pie/New() +/obj/item/reagent_containers/food/snacks/pie/plump_pie/Initialize() + . = ..() var/fey = prob(10) if(fey) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4) - ..() if(fey) reagents.add_reagent("omnizine", 5) diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index 4cb44093a7..65ff4d2eb9 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -9,9 +9,9 @@ tastes = list("leaves" = 1) foodtype = VEGETABLES -/obj/item/reagent_containers/food/snacks/salad/New() - ..() - eatverb = pick("crunch","devour","nibble","gnaw","gobble","chomp") +/obj/item/reagent_containers/food/snacks/salad/Initialize() + . = ..() + eatverb = pick("crunch","devour","nibble","gnaw","gobble","chomp") //who the fuck gnaws and devours on a salad /obj/item/reagent_containers/food/snacks/salad/aesirsalad name = "\improper Aesir salad" diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 422e35b849..3e3fc9440a 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -8,8 +8,8 @@ tastes = list("tasteless soup" = 1) foodtype = VEGETABLES -/obj/item/reagent_containers/food/snacks/soup/New() - ..() +/obj/item/reagent_containers/food/snacks/soup/Initialize() + . = ..() eatverb = pick("slurp","sip","suck","inhale","drink") /obj/item/reagent_containers/food/snacks/soup/wish @@ -19,12 +19,12 @@ list_reagents = list("water" = 10) tastes = list("wishes" = 1) -/obj/item/reagent_containers/food/snacks/soup/wish/New() +/obj/item/reagent_containers/food/snacks/soup/wish/Initialize() + . = ..() var/wish_true = prob(25) if(wish_true) desc = "A wish come true!" bonus_reagents = list("nutriment" = 9, "vitamin" = 1) - ..() if(wish_true) reagents.add_reagent("nutriment", 9) reagents.add_reagent("vitamin", 1) @@ -99,10 +99,10 @@ list_reagents = list("nutriment" = 6) tastes = list("chaos" = 1) -/obj/item/reagent_containers/food/snacks/soup/mystery/New() +/obj/item/reagent_containers/food/snacks/soup/mystery/Initialize() + . = ..() extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine") bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6) - ..() reagents.add_reagent("[extra_reagent]", 5) /obj/item/reagent_containers/food/snacks/soup/hotchili @@ -173,8 +173,8 @@ bonus_reagents = list("nutriment" = 1, "vitamin" = 5) foodtype = VEGETABLES -/obj/item/reagent_containers/food/snacks/soup/beet/New() - ..() +/obj/item/reagent_containers/food/snacks/soup/beet/Initialize() + . = ..() name = pick("borsch","bortsch","borstch","borsh","borshch","borscht") tastes = list(name = 1) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 372c085adb..99a3de90e1 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -1,4 +1,3 @@ - /obj/machinery/gibber name = "gibber" desc = "The name isn't descriptive enough?" @@ -12,10 +11,10 @@ circuit = /obj/item/circuitboard/machine/gibber var/operating = FALSE //Is it on? - var/dirty = 0 // Does it need cleaning? + var/dirty = FALSE // Does it need cleaning? var/gibtime = 40 // Time from starting until meat appears var/meat_produced = 0 - var/ignore_clothing = 0 + var/ignore_clothing = FALSE /obj/machinery/gibber/Initialize() @@ -30,7 +29,7 @@ gib_time -= 5 * M.rating gibtime = gib_time if(M.rating >= 2) - ignore_clothing = 1 + ignore_clothing = TRUE /obj/machinery/gibber/update_icon() cut_overlays() @@ -61,6 +60,10 @@ to_chat(user, "It's locked and running.") return + if(!anchored) + to_chat(user, "[src] cannot be used unless bolted to the ground.") + return + if(user.pulling && user.a_intent == INTENT_GRAB && isliving(user.pulling)) var/mob/living/L = user.pulling if(!iscarbon(L)) @@ -70,12 +73,17 @@ if(C.buckled ||C.has_buckled_mobs()) to_chat(user, "[C] is attached to something!") return - if(C.abiotic(1) && !ignore_clothing) - to_chat(user, "Subject may not have abiotic items on.") - return + + if(!ignore_clothing) + for(var/obj/item/I in C.held_items + C.get_equipped_items()) + if(!(I.flags_1 & NODROP_1)) + to_chat(user, "Subject may not have abiotic items on.") + return user.visible_message("[user] starts to put [C] into the gibber!") - src.add_fingerprint(user) + + add_fingerprint(user) + if(do_after(user, gibtime, target = src)) if(C && user.pulling == C && !C.buckled && !C.has_buckled_mobs() && !occupant) user.visible_message("[user] stuffs [C] into the gibber!") diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index 6ef8e5e4e9..b1c1a8495c 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -28,9 +28,10 @@ var/const/BOMB_TIMER_MIN = 1 var/const/BOMB_TIMER_MAX = 10 -/obj/item/pizzabox/New() +/obj/item/pizzabox/Initialize() + . = ..() update_icon() - ..() + /obj/item/pizzabox/Destroy() unprocess() @@ -257,29 +258,31 @@ wires = null update_icon() -/obj/item/pizzabox/bomb/New() +/obj/item/pizzabox/bomb/Initialize() + . = ..() var/randompizza = pick(subtypesof(/obj/item/reagent_containers/food/snacks/pizza)) pizza = new randompizza(src) bomb = new(src) wires = new /datum/wires/explosive/pizza(src) - ..() -/obj/item/pizzabox/margherita/New() +/obj/item/pizzabox/margherita/Initialize() + . = ..() pizza = new /obj/item/reagent_containers/food/snacks/pizza/margherita(src) boxtag = "Margherita Deluxe" - ..() -/obj/item/pizzabox/vegetable/New() + +/obj/item/pizzabox/vegetable/Initialize() + . = ..() pizza = new /obj/item/reagent_containers/food/snacks/pizza/vegetable(src) boxtag = "Gourmet Vegatable" - ..() -/obj/item/pizzabox/mushroom/New() + +/obj/item/pizzabox/mushroom/Initialize() + . = ..() pizza = new /obj/item/reagent_containers/food/snacks/pizza/mushroom(src) boxtag = "Mushroom Special" - ..() -/obj/item/pizzabox/meat/New() +/obj/item/pizzabox/meat/Initialize() + . = ..() pizza = new /obj/item/reagent_containers/food/snacks/pizza/meat(src) boxtag = "Meatlover's Supreme" - ..() diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 041a58c467..a75510ae9a 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -50,7 +50,7 @@ result = /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly subcategory = CAT_PASTRY -////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// +////////////////////////////////////////////////WAFFLES AND PANCAKES//////////////////////////////////////////////// /datum/crafting_recipe/food/waffles time = 15 @@ -90,6 +90,33 @@ result = /obj/item/reagent_containers/food/snacks/rofflewaffles subcategory = CAT_PASTRY +/datum/crafting_recipe/food/pancakes + name = "Pancake" + reqs = list( + /obj/item/reagent_containers/food/snacks/pastrybase = 1 + ) + result = /obj/item/reagent_containers/food/snacks/pancakes + subcategory = CAT_PASTRY + +/datum/crafting_recipe/food/bbpancakes + name = "Blueberry pancake" + reqs = list( + /obj/item/reagent_containers/food/snacks/pastrybase = 1, + /obj/item/reagent_containers/food/snacks/grown/berries = 1 + ) + result = /obj/item/reagent_containers/food/snacks/pancakes/blueberry + subcategory = CAT_PASTRY + +/datum/crafting_recipe/food/ccpancakes + name = "Chocolate chip pancake" + reqs = list( + /obj/item/reagent_containers/food/snacks/pastrybase = 1, + /obj/item/reagent_containers/food/snacks/chocolatebar = 1 + ) + result = /obj/item/reagent_containers/food/snacks/pancakes/chocolatechip + subcategory = CAT_PASTRY + + ////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// /datum/crafting_recipe/food/donkpocket diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index bceaf6d7dd..e7bf3ea9d7 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -16,7 +16,7 @@ var/list/cards = list() -/obj/item/deck/New() +/obj/item/deck/Initialize() . = ..() var/cardcolor diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 0832f372c8..10b1fcd80d 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -179,6 +179,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic log_world("\[[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]\] Client: [(src.owner.key ? src.owner.key : src.owner)] triggered JS error: [error]") //Global chat procs + /proc/to_chat(target, message) if(!target) return diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index c72f26a4e7..4ea8c85b16 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -313,7 +313,6 @@ h1.alert, h2.alert {color: #000000;} .green {color: #03ff39;} .shadowling {color: #3b2769;} .cult {color: #960000;} -.cultitalic {color: #960000; font-style: italic;} .cultlarge {color: #960000; font-weight: bold; font-size: 24px;} .narsie {color: #960000; font-weight: bold; font-size: 120px;} .narsiesmall {color: #960000; font-weight: bold; font-size: 48px;} @@ -322,7 +321,6 @@ h1.alert, h2.alert {color: #000000;} .hierophant_warning {color: #660099; font-style: italic;} .purple {color: #5e2d79;} .holoparasite {color: #35333a;} -.holoparasitebold {color: #35333a; font-weight: bold;} .revennotice {color: #1d2953;} .revenboldnotice {color: #1d2953; font-weight: bold;} @@ -331,10 +329,10 @@ h1.alert, h2.alert {color: #000000;} .revenwarning {color: #760fbb; font-style: italic;} .revendanger {color: #760fbb; font-weight: bold; font-size: 24px;} .umbra {color: #5000A0;} -.umbra_bold {color: #5000A0; font-weight: bold;} -.umbra_italics {color: #5000A0; font-style: italic;} .umbra_emphasis {color: #5000A0; font-weight: bold; font-style: italic;} -.umbra_large {color: #5000A0; font-size: 24px;} +.umbra_large {color: #5000A0; font-size: 24px; font-weight: bold; font-style: italic;} + +.deconversion_message {color: #5000A0; font-size: 24px; font-style: italic;} .brass {color: #BE8700;} .heavy_brass {color: #BE8700; font-weight: bold; font-style: italic;} @@ -343,7 +341,6 @@ h1.alert, h2.alert {color: #000000;} .ratvar {color: #BE8700; font-size: 48px; font-weight: bold; font-style: italic;} .alloy {color: #42474D;} .heavy_alloy {color: #42474D; font-weight: bold; font-style: italic;} -.large_alloy {color: #42474D; font-size: 24px;} .nezbere_large {color: #42474D; font-size: 24px; font-weight: bold; font-style: italic;} .nezbere {color: #42474D; font-weight: bold; font-style: italic;} .nezbere_small {color: #42474D;} @@ -366,7 +363,6 @@ h1.alert, h2.alert {color: #000000;} .alien {color: #543354;} .noticealien {color: #00c000;} .alertalien {color: #00c000; font-weight: bold;} -.borer {color: #543354; font-style: italic;} .changeling {color: #800080; font-style: italic;} .spider {color: #4d004d;} @@ -381,11 +377,13 @@ h1.alert, h2.alert {color: #000000;} .small {font-size: 8px;} .big {font-size: 24px;} .reallybig {font-size: 32px;} +.extremelybig {font-size: 40px;} .greentext {color: #00FF00; font-size: 24px;} .redtext {color: #FF0000; font-size: 24px;} .clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} .his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} +.icon {height: 1em; width: auto;} .memo {color: #638500; text-align: center;} .memoedit {text-align: center; font-size: 16px;} @@ -397,8 +395,8 @@ h1.alert, h2.alert {color: #000000;} .swarmer {color: #2C75FF;} .resonate {color: #298F85;} -.love {color: #FF69Bf;} -.lovebold {color: #FF69Bf; font-weight: bold;} +.monkeyhive {color: #774704;} +.monkeylead {color: #774704; font-size: 2;} .connectionClosed, .fatalError {background: red; color: white; padding: 5px;} .connectionClosed.restored {background: green;} diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 66d92df569..9c1fd87cac 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -109,8 +109,8 @@ /obj/item/reagent_containers/food/snacks/egg/loaded containsPrize = TRUE -/obj/item/reagent_containers/food/snacks/egg/loaded/New() - ..() +/obj/item/reagent_containers/food/snacks/egg/loaded/Initialize() + . = ..() var/eggcolor = pick("blue","green","mime","orange","purple","rainbow","red","yellow") icon_state = "egg-[eggcolor]" item_color = "[eggcolor]" diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 2b24f02a44..f4734d9506 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -9,6 +9,8 @@ var/begin_weekday = FALSE //If set to a weekday, then this will trigger the holiday on the above week var/always_celebrate = FALSE // for christmas neverending, or testing. + var/obj/item/drone_hat //If this is defined, drones without a default hat will spawn with this one during the holiday; check drones_as_items.dm to see this used + // This proc gets run before the game starts when the holiday is activated. Do festive shit here. /datum/holiday/proc/celebrate() return @@ -172,11 +174,13 @@ name = "Labor Day" begin_day = 1 begin_month = MAY + drone_hat = /obj/item/clothing/head/hardhat /datum/holiday/firefighter name = "Firefighter's Day" begin_day = 4 begin_month = MAY + drone_hat = /obj/item/clothing/head/hardhat/red /datum/holiday/firefighter/getStationPrefix() return pick("Burning","Blazing","Plasma","Fire") @@ -190,6 +194,7 @@ name = "Doctor's Day" begin_day = 1 begin_month = JULY + drone_hat = /obj/item/clothing/head/nursehat /datum/holiday/UFO name = "UFO Day" @@ -221,6 +226,7 @@ name = "Talk-Like-a-Pirate Day" begin_day = 19 begin_month = SEPTEMBER + drone_hat = /obj/item/clothing/head/pirate /datum/holiday/pirate/greet() return "Ye be talkin' like a pirate today or else ye'r walkin' tha plank, matey!" @@ -321,6 +327,7 @@ begin_week = 4 begin_month = NOVEMBER begin_weekday = THURSDAY + drone_hat = /obj/item/clothing/head/that //This is the closest we can get to a pilgrim's hat /datum/holiday/thanksgiving/canada name = "Thanksgiving in Canada" @@ -384,12 +391,14 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and name = "Mayan Doomsday Anniversary" begin_day = 21 begin_month = DECEMBER + drone_hat = /obj/item/clothing/mask/rat/tribal /datum/holiday/xmas name = CHRISTMAS begin_day = 22 begin_month = DECEMBER end_day = 27 + drone_hat = /obj/item/clothing/head/santa /datum/holiday/xmas/greet() return "Have a merry Christmas!" @@ -410,6 +419,7 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and begin_day = 1 begin_month = DECEMBER end_day = 31 + drone_hat = /obj/item/clothing/head/santa /datum/holiday/festive_season/greet() return "Have a nice festive season!" @@ -432,6 +442,7 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and /datum/holiday/easter name = EASTER + drone_hat = /obj/item/clothing/head/rabbitears var/const/days_early = 1 //to make editing the holiday easier var/const/days_extra = 1 diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 6a8a720366..1dcab21e16 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -25,13 +25,13 @@ armour_penetration = 50 var/active = 0 -/obj/item/holo/esword/green/New() - ..() +/obj/item/holo/esword/green/Initialize() + . = ..() item_color = "green" -/obj/item/holo/esword/red/New() - ..() +/obj/item/holo/esword/red/Initialize() + . = ..() item_color = "red" /obj/item/holo/esword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) @@ -42,9 +42,9 @@ /obj/item/holo/esword/attack(target as mob, mob/user as mob) ..() -/obj/item/holo/esword/New() +/obj/item/holo/esword/Initialize() + . = ..() item_color = pick("red","blue","green","purple") - ..() /obj/item/holo/esword/attack_self(mob/living/user as mob) active = !active diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index d4269013f7..cf12ccb3ce 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -37,8 +37,8 @@ var/bee_resources = 0 -/obj/structure/beebox/New() - ..() +/obj/structure/beebox/Initialize() + . = ..() START_PROCESSING(SSobj, src) @@ -55,8 +55,8 @@ var/random_reagent = FALSE -/obj/structure/beebox/premade/New() - ..() +/obj/structure/beebox/premade/Initialize() + . = ..() icon_state = "beebox" var/datum/reagent/R = null @@ -152,6 +152,7 @@ else to_chat(user, "There's no room for any more frames in the apiary!") return + if(istype(I, /obj/item/wrench)) if(default_unfasten_wrench(user, I, time = 20)) return diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index 8b9d641eac..e7faff0209 100644 --- a/code/modules/hydroponics/beekeeping/honeycomb.dm +++ b/code/modules/hydroponics/beekeeping/honeycomb.dm @@ -13,8 +13,8 @@ grind_results = list() var/honey_color = "" -/obj/item/reagent_containers/honeycomb/New() - ..() +/obj/item/reagent_containers/honeycomb/Initialize() + . = ..() pixel_x = rand(8,-8) pixel_y = rand(8,-8) update_icon() diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index bb349b7d19..fa1e25a6d4 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -422,8 +422,8 @@ var/read_only = 0 //Well, it's still a floppy disk unique_rename = 1 -/obj/item/disk/plantgene/New() - ..() +/obj/item/disk/plantgene/Initialize() + . = ..() add_overlay("datadisk_gene") src.pixel_x = rand(-5, 5) src.pixel_y = rand(-5, 5) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 15456c1e34..dadf077c8a 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -146,7 +146,7 @@ /obj/item/reagent_containers/food/snacks/grown/on_grind() var/nutriment = reagents.get_reagent_amount("nutriment") - if(grind_results.len) + if(grind_results&&grind_results.len) for(var/i in 1 to grind_results.len) grind_results[grind_results[i]] = nutriment reagents.del_reagent("nutriment") @@ -154,7 +154,7 @@ /obj/item/reagent_containers/food/snacks/grown/on_juice() var/nutriment = reagents.get_reagent_amount("nutriment") - if(juice_results.len) + if(juice_results&&juice_results.len) for(var/i in 1 to juice_results.len) juice_results[juice_results[i]] = nutriment reagents.del_reagent("nutriment") diff --git a/code/modules/hydroponics/grown/random.dm b/code/modules/hydroponics/grown/random.dm index 8f25eff215..04b3ff29fa 100644 --- a/code/modules/hydroponics/grown/random.dm +++ b/code/modules/hydroponics/grown/random.dm @@ -12,9 +12,9 @@ icon_harvest = "xpod-harvest" growthstages = 4 -/obj/item/seeds/random/New() +/obj/item/seeds/random/Initialize() + . = ..() randomize_stats() - ..() if(prob(60)) add_random_reagents(1, 3) if(prob(50)) diff --git a/code/modules/hydroponics/sample.dm b/code/modules/hydroponics/sample.dm index 52c2e1052f..fff4c646ac 100644 --- a/code/modules/hydroponics/sample.dm +++ b/code/modules/hydroponics/sample.dm @@ -5,8 +5,8 @@ yield = -1 var/sample_color = "#FFFFFF" -/obj/item/seeds/sample/New() - ..() +/obj/item/seeds/sample/Initialize() + . = ..() if(sample_color) var/mutable_appearance/filling = mutable_appearance(icon, "sample-filling") filling.color = sample_color diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 56f80c548d..d956055c41 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -35,8 +35,8 @@ var/weed_rate = 1 //If the chance below passes, then this many weeds sprout during growth var/weed_chance = 5 //Percentage chance per tray update to grow weeds -/obj/item/seeds/New(loc, nogenes = 0) - ..() +/obj/item/seeds/Initialize(loc, nogenes = 0) + . = ..() pixel_x = rand(-8, 8) pixel_y = rand(-8, 8) diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 805cf787f7..637c3bfcee 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -20,6 +20,8 @@ var/charge_tick = FALSE var/charge_delay = 4 var/use_cyborg_cell = TRUE + max_integrity = 50 + armor = list(melee = 50, bullet = 70, laser = 70, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0) /obj/item/device/electronic_assembly/proc/check_interactivity(mob/user) return user.canUseTopic(src,be_close = TRUE) @@ -30,8 +32,6 @@ START_PROCESSING(SScircuit, src) materials[MAT_METAL] = round((max_complexity + max_components) / 4) * SScircuit.cost_multiplier - - /obj/item/device/electronic_assembly/Destroy() STOP_PROCESSING(SScircuit, src) return ..() @@ -273,22 +273,9 @@ /obj/item/device/electronic_assembly/afterattack(atom/target, mob/user, proximity) - for(var/obj/item/integrated_circuit/input/sensor/S in assembly_components) - if(!proximity) - if(istype(S,/obj/item/integrated_circuit/input/sensor/ranged)||(!user)) - if(user.client) - if(!(target in view(user.client))) - continue - else - if(!(target in view(user))) - continue - else - continue - S.set_pin_data(IC_OUTPUT, 1, WEAKREF(target)) - S.check_then_do_work() - S.scan(target) - - visible_message(" [user] waves [src] around [target].") + for(var/obj/item/integrated_circuit/input/S in assembly_components) + if(S.sense(target,user,proximity)) + visible_message(" [user] waves [src] around [target].") /obj/item/device/electronic_assembly/screwdriver_act(mob/living/user, obj/item/S) @@ -326,8 +313,11 @@ interact(user) return TRUE else + for(var/obj/item/integrated_circuit/input/S in assembly_components) + S.attackby_react(I,user,user.a_intent) return ..() + /obj/item/device/electronic_assembly/attack_self(mob/user) if(!check_interactivity(user)) return @@ -391,7 +381,6 @@ /obj/item/device/electronic_assembly/proc/get_object() return src - // Returns the location to be used for dropping items. // Same as the regular drop_location(), but with checks being run on acting_object if necessary. /obj/item/integrated_circuit/drop_location() @@ -406,6 +395,7 @@ /obj/item/device/electronic_assembly/default //The /default electronic_assemblys are to allow the introduction of the new naming scheme without breaking old saves. name = "type-a electronic assembly" + /obj/item/device/electronic_assembly/calc name = "type-b electronic assembly" icon_state = "setup_small_calc" @@ -507,4 +497,4 @@ /obj/item/device/electronic_assembly/drone/arms name = "type-b electronic drone" icon_state = "setup_drone_arms" - desc = "It's a case, for building mobile electronics with. This one is armed and dangerous." \ No newline at end of file + desc = "It's a case, for building mobile electronics with. This one is armed and dangerous." diff --git a/code/modules/integrated_electronics/core/debugger.dm b/code/modules/integrated_electronics/core/debugger.dm index ac6f5c1a1e..666fcf00d6 100644 --- a/code/modules/integrated_electronics/core/debugger.dm +++ b/code/modules/integrated_electronics/core/debugger.dm @@ -56,7 +56,7 @@ data_to_show = A.name to_chat(user, "You write '[data_to_write ? data_to_show : "NULL"]' to the '[io]' pin of \the [io.holder].") else if(io.io_type == PULSE_CHANNEL) - io.holder.check_then_do_work(ignore_power = TRUE) + io.holder.check_then_do_work(io.ord,ignore_power = TRUE) to_chat(user, "You pulse \the [io.holder]'s [io].") io.holder.interact(user) // This is to update the UI. diff --git a/code/modules/integrated_electronics/core/helpers.dm b/code/modules/integrated_electronics/core/helpers.dm index e84823f201..773c4f0684 100644 --- a/code/modules/integrated_electronics/core/helpers.dm +++ b/code/modules/integrated_electronics/core/helpers.dm @@ -15,9 +15,9 @@ io_type_override = io_list_copy[io_entry] if(io_type_override) - io_list.Add(new io_type_override(src, io_entry, default_data, pin_type)) + io_list.Add(new io_type_override(src, io_entry, default_data, pin_type,i)) else - io_list.Add(new io_type(src, io_entry, default_data, pin_type)) + io_list.Add(new io_type(src, io_entry, default_data, pin_type,i)) /obj/item/integrated_circuit/proc/set_pin_data(pin_type, pin_number, datum/new_data) diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 069ca4245c..0c1a2fdad5 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -58,6 +58,12 @@ a creative player the means to solve many problems. Circuits are held inside an /obj/item/integrated_circuit/proc/any_examine(mob/user) return +/obj/item/integrated_circuit/proc/attackby_react(var/atom/movable/A,mob/user) + return + +/obj/item/integrated_circuit/proc/sense(var/atom/movable/A,mob/user,prox) + return + /obj/item/integrated_circuit/proc/check_interactivity(mob/user) if(assembly) return assembly.check_interactivity(user) @@ -291,17 +297,18 @@ a creative player the means to solve many problems. Circuits are held inside an return TRUE // Battery has enough. return FALSE // Not enough power. -/obj/item/integrated_circuit/proc/check_then_do_work(var/ignore_power = FALSE) +/obj/item/integrated_circuit/proc/check_then_do_work(ord,var/ignore_power = FALSE) if(world.time < next_use) // All intergrated circuits have an internal cooldown, to protect from spam. - return + return FALSE if(power_draw_per_use && !ignore_power) if(!check_power()) power_fail() - return + return FALSE next_use = world.time + cooldown_per_use - do_work() + do_work(ord) + return TRUE -/obj/item/integrated_circuit/proc/do_work() +/obj/item/integrated_circuit/proc/do_work(ord) return /obj/item/integrated_circuit/proc/disconnect_all() @@ -369,4 +376,3 @@ a creative player the means to solve many problems. Circuits are held inside an return TRUE return FALSE - diff --git a/code/modules/integrated_electronics/core/pins.dm b/code/modules/integrated_electronics/core/pins.dm index bff96b713c..528281c3b7 100644 --- a/code/modules/integrated_electronics/core/pins.dm +++ b/code/modules/integrated_electronics/core/pins.dm @@ -25,14 +25,16 @@ D [1]/ || var/list/linked = list() var/io_type = DATA_CHANNEL var/pin_type // IC_INPUT, IC_OUTPUT, IC_ACTIVATOR - used in saving assembly wiring + var/ord - -/datum/integrated_io/New(loc, _name, _data, _pin_type) +/datum/integrated_io/New(loc, _name, _data, _pin_type,_ord) name = _name if(_data) data = _data if(_pin_type) pin_type = _pin_type + if(_ord) + ord = _ord holder = loc @@ -148,7 +150,7 @@ D [1]/ || /datum/integrated_io/activate/push_data() for(var/k in 1 to linked.len) var/datum/integrated_io/io = linked[k] - io.holder.check_then_do_work() + io.holder.check_then_do_work(io.ord) /datum/integrated_io/proc/pull_data() for(var/k in 1 to linked.len) @@ -207,7 +209,7 @@ D [1]/ || write_data_to_pin(new_data) /datum/integrated_io/activate/ask_for_pin_data(mob/user) // This just pulses the pin. - holder.check_then_do_work(ignore_power = TRUE) + holder.check_then_do_work(ord,ignore_power = TRUE) to_chat(user, "You pulse \the [holder]'s [src] pin.") /datum/integrated_io/activate diff --git a/code/modules/integrated_electronics/core/special_pins/index_pin.dm b/code/modules/integrated_electronics/core/special_pins/index_pin.dm index 51b12a0f3a..06267eec61 100644 --- a/code/modules/integrated_electronics/core/special_pins/index_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/index_pin.dm @@ -1,4 +1,4 @@ -// These pins can only contain integer numbers between 1 and IC_MAX_LIST_LENGTH. Null is not allowed. +// These pins can only contain integer numbers between 0 and IC_MAX_LIST_LENGTH. Null is allowed. /datum/integrated_io/index name = "index pin" data = 1 @@ -11,10 +11,10 @@ /datum/integrated_io/index/write_data_to_pin(new_data) if(isnull(new_data)) - new_data = 1 + new_data = 0 if(isnum(new_data)) - data = CLAMP(round(new_data), 1, IC_MAX_LIST_LENGTH) + data = CLAMP(round(new_data), 0, IC_MAX_LIST_LENGTH) holder.on_data_written() /datum/integrated_io/index/display_pin_type() diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 2acce3d450..f7df21fc9a 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -12,7 +12,7 @@ /obj/item/integrated_circuit/passive/power/solar_cell name = "tiny photovoltaic cell" desc = "It's a very tiny solar cell, generally used in calculators." - extended_desc = "The cell generates 1 W of power in optimal lighting conditions. Less light will result in less power being generated." + extended_desc = "This cell generates 1 W of power in optimal lighting conditions. Less light will result in less power being generated." icon_state = "solar_cell" complexity = 8 spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -29,7 +29,7 @@ /obj/item/integrated_circuit/passive/power/starter name = "starter" - desc = "This tiny circuit will send pulse right after device is turned on. Or when power is restored." + desc = "This tiny circuit will send a pulse right after the device is turned on, or when power is restored to it." icon_state = "led" complexity = 1 activators = list("pulse out" = IC_PINTYPE_PULSE_OUT) @@ -53,7 +53,7 @@ name = "tesla power relay" desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them." w_class = WEIGHT_CLASS_SMALL - extended_desc = "The siphon generates 50 W of energy, so long as an APC is in the same room, with a cell that has energy. It will always drain \ + extended_desc = "The siphon drains 50 W of power from an APC in the same room as it as long as it has charge remaining. It will always drain \ from the 'equipment' power channel." icon_state = "power_relay" complexity = 7 @@ -75,8 +75,8 @@ name = "large tesla power relay" desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them, now in industiral size!" w_class = WEIGHT_CLASS_BULKY - extended_desc = "The siphon generates 2 kW of energy, so long as an APC is in the same room, with a cell that has energy. It will always drain \ - from the 'equipment' power channel." + extended_desc = "The siphon drains 2 kW of power from an APC in the same room as it as long as it has charge remaining. It will always drain \ + from the 'equipment' power channel." icon_state = "power_relay" complexity = 15 spawn_flags = IC_SPAWN_RESEARCH @@ -89,7 +89,7 @@ desc = "Produces electricity from chemicals." icon_state = "chemical_cell" extended_desc = "This is effectively an internal beaker. It will consume and produce power from plasma, slime jelly, welding fuel, carbon,\ - ethanol, nutriments and blood , in order of decreasing efficiency. It will consume fuel only if the battery can take more energy." + ethanol, nutriments, and blood in order of decreasing efficiency. It will consume fuel only if the battery can take more energy." container_type = OPENCONTAINER complexity = 4 inputs = list() diff --git a/code/modules/integrated_electronics/subtypes/arithmetic.dm b/code/modules/integrated_electronics/subtypes/arithmetic.dm index 7dec779f83..edb51ec01e 100644 --- a/code/modules/integrated_electronics/subtypes/arithmetic.dm +++ b/code/modules/integrated_electronics/subtypes/arithmetic.dm @@ -22,7 +22,7 @@ name = "addition circuit" desc = "This circuit can add numbers together." extended_desc = "The order that the calculation goes is;
    \ - result = ((((A + B) + C) + D) ... ) and so on, until all pins have been added. \ + result = ((((A + B) + C) + D) ... ) and so on, until all pins have been added. \ Null pins are ignored." icon_state = "addition" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -30,10 +30,9 @@ /obj/item/integrated_circuit/arithmetic/addition/do_work() var/result = 0 for(var/k in 1 to inputs.len) - var/datum/integrated_io/I = inputs[k] - I.pull_data() - if(isnum(I.data)) - result = result + I.data + var/I = get_pin_data(IC_INPUT, k) + if(isnum(I)) + result += I set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -45,8 +44,8 @@ name = "subtraction circuit" desc = "This circuit can subtract numbers." extended_desc = "The order that the calculation goes is;
    \ - result = ((((A - B) - C) - D) ... ) and so on, until all pins have been subtracted. \ - Null pins are ignored. Pin A must be a number or the circuit will not function." + result = ((((A - B) - C) - D) ... ) and so on, until all pins have been subtracted. \ + Null pins are ignored. Pin A must be a number, or the circuit will not function." icon_state = "subtraction" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -56,13 +55,10 @@ return var/result = A.data - for(var/k in 1 to inputs.len) - var/datum/integrated_io/I = inputs[k] - if(I == A) - continue - I.pull_data() - if(isnum(I.data)) - result = result - I.data + for(var/k in 2 to inputs.len) + var/I = get_pin_data(IC_INPUT, k) + if(isnum(I)) + result -= I set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -74,8 +70,8 @@ name = "multiplication circuit" desc = "This circuit can multiply numbers." extended_desc = "The order that the calculation goes is;
    \ - result = ((((A * B) * C) * D) ... ) and so on, until all pins have been multiplied. \ - Null pins are ignored. Pin A must be a number or the circuit will not function." + result = ((((A * B) * C) * D) ... ) and so on, until all pins have been multiplied. \ + Null pins are ignored. Pin A must be a number, or the circuit will not function." icon_state = "multiplication" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -85,13 +81,10 @@ if(!isnum(A.data)) return var/result = A.data - for(var/k in 1 to inputs.len) - var/datum/integrated_io/I = inputs[k] - if(I == A) - continue - I.pull_data() - if(isnum(I.data)) - result = result * I.data + for(var/k in 2 to inputs.len) + var/I = get_pin_data(IC_INPUT, k) + if(isnum(I)) + result *= I set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -103,8 +96,8 @@ name = "division circuit" desc = "This circuit can divide numbers, just don't think about trying to divide by zero!" extended_desc = "The order that the calculation goes is;
    \ - result = ((((A / B) / C) / D) ... ) and so on, until all pins have been divided. \ - Null pins, and pins containing 0, are ignored. Pin A must be a number or the circuit will not function." + result = ((((A / B) / C) / D) ... ) and so on, until all pins have been divided. \ + Null pins, and pins containing 0, are ignored. Pin A must be a number or the circuit will not function." icon_state = "division" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -114,13 +107,12 @@ return var/result = A.data - for(var/k in 1 to inputs.len) - var/datum/integrated_io/I = inputs[k] - if(I == A) - continue - I.pull_data() - if(isnum(I.data) && I.data != 0) //No runtimes here. - result = result / I.data + + for(var/k in 2 to inputs.len) + var/I = get_pin_data(IC_INPUT, k) + if(isnum(I) && (I != 0)) + result /= I + set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -199,7 +191,7 @@ /obj/item/integrated_circuit/arithmetic/absolute name = "absolute circuit" - desc = "This outputs a non-negative version of the number you put in. This may also be thought of as its distance from zero." + desc = "This outputs a non-negative version of the number you put in. This may also be thought of as its distance from zero." icon_state = "absolute" inputs = list("A" = IC_PINTYPE_NUMBER) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -228,12 +220,11 @@ /obj/item/integrated_circuit/arithmetic/average/do_work() var/result = 0 var/inputs_used = 0 - for(var/k in 1 to inputs.len) - var/datum/integrated_io/I = inputs[k] - I.pull_data() - if(isnum(I.data)) + for(var/k in 2 to inputs.len) + var/I = get_pin_data(IC_INPUT, k) + if(isnum(I)) inputs_used++ - result = result + I.data + result += I if(inputs_used) result = result / inputs_used @@ -245,7 +236,7 @@ // Pi, because why the hell not? // /obj/item/integrated_circuit/arithmetic/pi name = "pi constant circuit" - desc = "Not recommended for cooking. Outputs '3.14159' when it receives a pulse." + desc = "Not recommended for cooking. Outputs '3.14159' when it receives a pulse." icon_state = "pi" inputs = list() spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -260,7 +251,7 @@ name = "random number generator circuit" desc = "This gives a random (integer) number between values A and B inclusive." extended_desc = "'Inclusive' means that the upper bound is included in the range of numbers, e.g. L = 1 and H = 3 will allow \ - for outputs of 1, 2, or 3. H being the higher number is not strictly required." + for outputs of 1, 2, or 3. H being the higher number is not strictly required." icon_state = "random" inputs = list("L" = IC_PINTYPE_NUMBER,"H" = IC_PINTYPE_NUMBER) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -281,18 +272,17 @@ /obj/item/integrated_circuit/arithmetic/square_root name = "square root circuit" - desc = "This outputs the square root of a number you put in." + desc = "This outputs the square root of a number you input." icon_state = "square_root" inputs = list("A" = IC_PINTYPE_NUMBER) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/arithmetic/square_root/do_work() var/result = 0 - for(var/k in 1 to inputs.len) - var/datum/integrated_io/I = inputs[k] - I.pull_data() - if(isnum(I.data)) - result = sqrt(I.data) + for(var/k in 2 to inputs.len) + var/I = get_pin_data(IC_INPUT, k) + if(isnum(I)) + result += sqrt(I) set_pin_data(IC_OUTPUT, 1, result) push_data() diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index d622ea8ca9..b6733e5b7d 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -10,7 +10,7 @@ /obj/item/integrated_circuit/converter/num2text name = "number to string" desc = "This circuit can convert a number variable into a string." - extended_desc = "Because of game limitations null/false variables will output a '0' string." + extended_desc = "Because of circuit limitations, null/false variables will output a '0' string." icon_state = "num-string" inputs = list("input" = IC_PINTYPE_NUMBER) outputs = list("output" = IC_PINTYPE_STRING) @@ -88,7 +88,7 @@ /obj/item/integrated_circuit/converter/refdecode name = "reference decoder" - desc = "This circuit can convert a encoded reference to actual reference." + desc = "This circuit can convert an encoded reference to actual reference." icon_state = "ref-string" inputs = list("input" = IC_PINTYPE_STRING) outputs = list("output" = IC_PINTYPE_REF) @@ -104,7 +104,7 @@ /obj/item/integrated_circuit/converter/lowercase name = "lowercase string converter" - desc = "this will cause a string to come out in all lowercase." + desc = "this circuit will cause a string to come out in all lowercase." icon_state = "lowercase" inputs = list("input" = IC_PINTYPE_STRING) outputs = list("output" = IC_PINTYPE_STRING) @@ -160,10 +160,10 @@ /obj/item/integrated_circuit/converter/concatenator/do_work() var/result = null - for(var/datum/integrated_io/I in inputs) - I.pull_data() - if(!isnull(I.data)) - result = result + I.data + for(var/k in 1 to inputs.len) + var/I = get_pin_data(IC_INPUT, k) + if(!isnull(I)) + result = result + I set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -207,7 +207,7 @@ name = "find text" desc = "This gives position of sample in the string. Or returns 0." extended_desc = "The first pin is the string to be examined. The second pin is the sample to be found. \ - For example, 'eat this burger',' ' will give you position 4. This circuit isn't case sensitive." + For example, 'eat this burger' will give you position 4. This circuit isn't case sensitive." complexity = 4 inputs = list( "string" = IC_PINTYPE_STRING, @@ -232,7 +232,7 @@ name = "string exploder" desc = "This splits a single string into a list of strings." extended_desc = "This circuit splits a given string into a list of strings based on the string and given delimiter. \ - For example, 'eat this burger',' ' will be converted to list('eat','this','burger')." + For example, 'eat this burger' will be converted to list('eat','this','burger')." icon_state = "split" complexity = 4 inputs = list( diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index a47dc53447..133d14bbd5 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -78,7 +78,7 @@ /obj/item/integrated_circuit/input/med_scanner name = "integrated medical analyser" - desc = "A very small version of the common medical analyser. This allows the machine to know how healthy someone is." + desc = "A very small version of the common medical analyser. This allows the machine to know how healthy someone is." icon_state = "medscan" complexity = 4 inputs = list("\ target") @@ -106,7 +106,7 @@ /obj/item/integrated_circuit/input/adv_med_scanner name = "integrated advanced medical analyser" - desc = "A very small version of the medbot's medical analyser. This allows the machine to know how healthy someone is. \ + desc = "A very small version of the medbot's medical analyser. This allows the machine to know how healthy someone is. \ This type is much more precise, allowing the machine to know much more about the target than a normal analyzer." icon_state = "medscan_adv" complexity = 12 @@ -128,7 +128,7 @@ var/mob/living/carbon/human/H = get_pin_data_as_type(IC_INPUT, 1, /mob/living/carbon/human) if(!istype(H)) //Invalid input return - if(H in view(get_turf(H))) // Like medbot's analyzer it can be used in range.. + if(H in view(get_turf(src))) // Like medbot's analyzer it can be used in range.. var/total_health = round(H.health/H.getMaxHealth(), 0.01)*100 var/missing_health = H.getMaxHealth() - H.health @@ -143,10 +143,53 @@ push_data() activate_pin(2) +/obj/item/integrated_circuit/input/slime_scanner + name = "slime_scanner" + desc = "A very small version of the xenobio analyser. This allows the machine to know every needed properties of slime." + icon_state = "medscan_adv" + complexity = 12 + inputs = list("\ target") + outputs = list( + "colour" = IC_PINTYPE_STRING, + "adult" = IC_PINTYPE_BOOLEAN, + "nutrition" = IC_PINTYPE_NUMBER, + "charge" = IC_PINTYPE_NUMBER, + "health" = IC_PINTYPE_NUMBER, + "possible mutation" = IC_PINTYPE_LIST, + "genetic destability" = IC_PINTYPE_NUMBER, + "slime core amount" = IC_PINTYPE_NUMBER, + "Growth progress" = IC_PINTYPE_NUMBER, + ) + activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_RESEARCH + power_draw_per_use = 80 + +/obj/item/integrated_circuit/input/slime_scanner/do_work() + var/mob/living/simple_animal/slime/T = get_pin_data_as_type(IC_INPUT, 1, /mob/living/simple_animal/slime) + if(!isslime(T)) //Invalid input + return + if(T in view(get_turf(src))) // Like medbot's analyzer it can be used in range.. + + set_pin_data(IC_OUTPUT, 1, T.colour) + set_pin_data(IC_OUTPUT, 2, T.is_adult) + set_pin_data(IC_OUTPUT, 3, T.nutrition/T.get_max_nutrition()) + set_pin_data(IC_OUTPUT, 4, T.powerlevel) + set_pin_data(IC_OUTPUT, 5, round(T.health/T.maxHealth,0.01)*100) + set_pin_data(IC_OUTPUT, 6, uniqueList(T.slime_mutation)) + set_pin_data(IC_OUTPUT, 7, T.mutation_chance) + set_pin_data(IC_OUTPUT, 8, T.cores) + set_pin_data(IC_OUTPUT, 9, T.amount_grown/SLIME_EVOLUTION_THRESHOLD) + + + push_data() + activate_pin(2) + + + /obj/item/integrated_circuit/input/plant_scanner name = "integrated plant analyzer" - desc = "A very small version of the plant analyser. This allows the machine to know all valuable params of plants in trays. \ - it can't scan seeds and fruits.only plants." + desc = "A very small version of the plant analyser. This allows the machine to know all valuable params of plants in trays. \ + It cannot scan seeds nor fruits, only plants." icon_state = "medscan_adv" complexity = 12 inputs = list("\ target") @@ -167,7 +210,7 @@ "Water level" = IC_PINTYPE_NUMBER, "Nutrition level" = IC_PINTYPE_NUMBER, "harvest" = IC_PINTYPE_NUMBER, - "dead" = IC_PINTYPE_NUMBER , + "dead" = IC_PINTYPE_NUMBER, "plant health" = IC_PINTYPE_NUMBER ) activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT) @@ -180,7 +223,7 @@ return for(var/i=1, i<=outputs.len, i++) set_pin_data(IC_OUTPUT, i, null) - if(H in view(get_turf(H))) // Like medbot's analyzer it can be used in range.. + if(H in view(get_turf(src))) // Like medbot's analyzer it can be used in range.. if(H.myseed) set_pin_data(IC_OUTPUT, 1, H.myseed.plantname) set_pin_data(IC_OUTPUT, 2, H.age) @@ -207,8 +250,8 @@ /obj/item/integrated_circuit/input/gene_scanner name = "gene scanner" desc = "This circuit will scan plant for traits and reagent genes." - extended_desc = "This allows the machine to scan plants in trays for reagent and trait genes. \ - it can't scan seeds and fruits.only plants." + extended_desc = "This allows the machine to scan plants in trays for reagent and trait genes. \ + It cannot scan seeds nor fruits, only plants." inputs = list( "\ target" = IC_PINTYPE_REF ) @@ -228,7 +271,7 @@ return for(var/i=1, i<=outputs.len, i++) set_pin_data(IC_OUTPUT, i, null) - if(H in view(get_turf(H))) // Like medbot's analyzer it can be used in range.. + if(H in view(get_turf(src))) // Like medbot's analyzer it can be used in range.. if(H.myseed) for(var/datum/plant_gene/reagent/G in H.myseed.genes) greagents.Add(G.get_name()) @@ -244,23 +287,23 @@ /obj/item/integrated_circuit/input/examiner name = "examiner" - desc = "It' s a little machine vision system. It can return the name, description, distance, \ - relative coordinates, total amount of reagents, maximum amount of reagents, density and opacity of the referenced object." + desc = "It's a little machine vision system. It can return the name, description, distance, \ + relative coordinates, total amount of reagents, maximum amount of reagents, density, and opacity of the referenced object." icon_state = "video_camera" complexity = 6 inputs = list( "target" = IC_PINTYPE_REF ) outputs = list( - "name" = IC_PINTYPE_STRING, - "description" = IC_PINTYPE_STRING, - "X" = IC_PINTYPE_NUMBER, - "Y" = IC_PINTYPE_NUMBER, - "distance" = IC_PINTYPE_NUMBER, + "name" = IC_PINTYPE_STRING, + "description" = IC_PINTYPE_STRING, + "X" = IC_PINTYPE_NUMBER, + "Y" = IC_PINTYPE_NUMBER, + "distance" = IC_PINTYPE_NUMBER, "max reagents" = IC_PINTYPE_NUMBER, - "amount of reagents" = IC_PINTYPE_NUMBER, - "density" = IC_PINTYPE_BOOLEAN, - "opacity" = IC_PINTYPE_BOOLEAN, + "amount of reagents" = IC_PINTYPE_NUMBER, + "density" = IC_PINTYPE_BOOLEAN, + "opacity" = IC_PINTYPE_BOOLEAN, ) activators = list( "scan" = IC_PINTYPE_PULSE_IN, @@ -298,7 +341,7 @@ /obj/item/integrated_circuit/input/local_locator name = "local locator" - desc = "This is needed for certain devices that demand a reference for a target to act upon. This type only locates something \ + desc = "This is needed for certain devices that demand a reference for a target to act upon. This type only locates something \ that is holding the machine containing it." inputs = list() outputs = list("located ref") @@ -317,10 +360,10 @@ /obj/item/integrated_circuit/input/adjacent_locator name = "adjacent locator" - desc = "This is needed for certain devices that demand a reference for a target to act upon. This type only locates something \ + desc = "This is needed for certain devices that demand a reference for a target to act upon. This type only locates something \ that is standing a meter away from the machine." - extended_desc = "The first pin requires a ref to a kind of object that you want the locator to acquire. This means that it will \ - give refs to nearby objects that are similar. If more than one valid object is found nearby, it will choose one of them at \ + extended_desc = "The first pin requires a ref to the kind of object that you want the locator to acquire. This means that it will \ + give refs to nearby objects that are similar. If more than one valid object is found nearby, it will choose one of them at \ random." inputs = list("desired type ref") outputs = list("located ref") @@ -357,11 +400,11 @@ /obj/item/integrated_circuit/input/advanced_locator_list complexity = 6 name = "list advanced locator" - desc = "This is needed for certain devices that demand list of names for a targets to act upon. This type locates something \ + desc = "This is needed for certain devices that demand list of names for a targets to act upon. This type locates something \ that is standing in given radius up to 8 meters" - extended_desc = "The first pin requires list a kinds of object that you want the locator to acquire. If This means that it will \ - give refs to nearby objects that are similar. It will locate objects by given names and description,given in list. It will give list of all found objects.\ - .The second pin is a radius" + extended_desc = "The first pin requires a list of kinds of objects that you want the locator to acquire. It will locate nearby objects by name and description, \ + and will then provide a list of all found objects which are similar. \ + The second pin is a radius." inputs = list("desired type ref" = IC_PINTYPE_LIST, "radius" = IC_PINTYPE_NUMBER) outputs = list("located ref" = IC_PINTYPE_LIST) activators = list("locate" = IC_PINTYPE_PULSE_IN,"found" = IC_PINTYPE_PULSE_OUT,"not found" = IC_PINTYPE_PULSE_OUT) @@ -412,9 +455,9 @@ name = "advanced locator" desc = "This is needed for certain devices that demand a reference for a target to act upon. This type locates something \ that is standing in given radius up to 8 meters" - extended_desc = "The first pin requires a ref to a kind of object that you want the locator to acquire. If This means that it will \ - give refs to nearby objects that are similar. If this pin is string, locator will search\ - item by matching desired text in name + description. If more than one valid object is found nearby, it will choose one of them at \ + extended_desc = "The first pin requires a ref to a kind of object that you want the locator to acquire. This means that it will \ + give refs to nearby objects which are similar. If this pin is string, this locator will search for an \ + item by matching desired text in it's name and description. If more than one valid object is found nearby, it will choose one of them at \ random. The second pin is a radius." inputs = list("desired type" = IC_PINTYPE_ANY, "radius" = IC_PINTYPE_NUMBER) outputs = list("located ref") @@ -462,10 +505,10 @@ /obj/item/integrated_circuit/input/signaler name = "integrated signaler" - desc = "Signals from a signaler can be received with this, allowing for remote control. Additionally, it can send signals as well." - extended_desc = "When a signal is received from another signaler, the 'on signal received' activator pin will be pulsed. \ - The two input pins are to configure the integrated signaler's settings. Note that the frequency should not have a decimal in it. \ - Meaning the default frequency is expressed as 1457, not 145.7. To send a signal, pulse the 'send signal' activator pin." + desc = "Signals from a signaler can be received with this, allowing for remote control. Additionally, it can send signals as well." + extended_desc = "When a signal is received from another signaler, the 'on signal received' activator pin will be pulsed. \ + The two input pins are to configure the integrated signaler's settings. Note that the frequency should not have a decimal in it, \ + meaning the default frequency is expressed as 1457, not 145.7. To send a signal, pulse the 'send signal' activator pin." icon_state = "signal" complexity = 4 inputs = list("frequency" = IC_PINTYPE_NUMBER,"code" = IC_PINTYPE_NUMBER) @@ -478,8 +521,8 @@ power_draw_idle = 5 power_draw_per_use = 40 - var/frequency = 1457 - var/code = 30 + var/frequency = FREQ_SIGNALER + var/code = DEFAULT_SIGNALER_CODE var/datum/radio_frequency/radio_connection /obj/item/integrated_circuit/input/signaler/Initialize() @@ -509,24 +552,16 @@ if(!radio_connection) return - var/datum/signal/signal = new - signal.source = src - signal.encryption = code - signal.data["message"] = "ACTIVATE" + var/datum/signal/signal = new(list("code" = code)) radio_connection.post_signal(src, signal) - activate_pin(2) /obj/item/integrated_circuit/input/signaler/proc/set_frequency(new_frequency) if(!frequency) return - if(!SSradio) - sleep(20) - if(!SSradio) - return SSradio.remove_object(src, frequency) frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + radio_connection = SSradio.add_object(src, frequency, RADIO_SIGNALER) /obj/item/integrated_circuit/input/signaler/receive_signal(datum/signal/signal) var/new_code = get_pin_data(IC_INPUT, 2) @@ -536,7 +571,7 @@ code = new_code if(!signal) return 0 - if(signal.encryption != code) + if(signal.data["code"] != code) return 0 if(signal.source == src) // Don't trigger ourselves. return 0 @@ -548,10 +583,10 @@ /obj/item/integrated_circuit/input/ntnet_packet name = "NTNet networking circuit" - desc = "Enables the sending and receiving of messages on NTNet with packet data protocol." - extended_desc = "Data can be send or received using the \ - second pin on each side, with additonal data reserved for the third pin. When a message is received, the second activation pin \ - will pulse whatever's connected to it. Pulsing the first activation pin will send a message." + desc = "Enables the sending and receiving of messages on NTNet via packet data protocol." + extended_desc = "Data can be send or received using the second pin on each side, \ + with additonal data reserved for the third pin. When a message is received, the second activation pin \ + will pulse whatever's connected to it. Pulsing the first activation pin will send a message." icon_state = "signal" complexity = 4 inputs = list( @@ -630,7 +665,7 @@ /obj/item/integrated_circuit/input/microphone name = "microphone" desc = "Useful for spying on people or for voice activated machines." - extended_desc = "This will automatically translate most languages it hears to Galactic Common. \ + extended_desc = "This will automatically translate most languages it hears to Galactic Common. \ The first activation pin is always pulsed when the circuit hears someone talk, while the second one \ is only triggered if it hears someone speaking a language other than Galactic Common." icon_state = "recorder" @@ -661,8 +696,8 @@ /obj/item/integrated_circuit/input/sensor name = "sensor" - desc = "Scans and obtains a reference for any objects or persons near you. All you need to do is shove the machine in their face." - extended_desc = "If 'ignore storage' pin is set to true, the sensor will disregard scanning various storage containers such as backpacks." + desc = "Scans and obtains a reference for any objects or persons near you. All you need to do is shove the machine in their face." + extended_desc = "If the 'ignore storage' pin is set to true, the sensor will disregard scanning various storage containers such as backpacks." icon_state = "recorder" complexity = 12 inputs = list("ignore storage" = IC_PINTYPE_BOOLEAN) @@ -671,12 +706,15 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 120 -/obj/item/integrated_circuit/input/sensor/proc/scan(var/atom/A) +/obj/item/integrated_circuit/input/sensor/sense(var/atom/A,mob/user,prox) + if(!prox) + return FALSE + if(!check_then_do_work()) + return FALSE var/ignore_bags = get_pin_data(IC_INPUT, 1) if(ignore_bags) if(istype(A, /obj/item/storage)) return FALSE - set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) push_data() activate_pin(1) @@ -684,8 +722,8 @@ /obj/item/integrated_circuit/input/sensor/ranged name = "ranged sensor" - desc = "Scans and obtains a reference for any objects or persons in range. All you need to do is point the machine towards target." - extended_desc = "If 'ignore storage' pin is set to true, the sensor will disregard scanning various storage containers such as backpacks." + desc = "Scans and obtains a reference for any objects or persons in range. All you need to do is point the machine towards the target." + extended_desc = "If the 'ignore storage' pin is set to true, the sensor will disregard scanning various storage containers such as backpacks." icon_state = "recorder" complexity = 36 inputs = list("ignore storage" = IC_PINTYPE_BOOLEAN) @@ -694,11 +732,57 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 120 +/obj/item/integrated_circuit/input/sensor/ranged/sense(var/atom/A,mob/user) + if(!user) + return FALSE + if(user.client) + if(!(A in view(user.client))) + return FALSE + else + if(!(A in view(user))) + return FALSE + if(!check_then_do_work()) + return FALSE + var/ignore_bags = get_pin_data(IC_INPUT, 1) + if(ignore_bags) + if(istype(A, /obj/item/storage)) + return FALSE + set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) + push_data() + activate_pin(1) + return TRUE + +/obj/item/integrated_circuit/input/objscaner + name = "scanner" + desc = "Scans and obtains a reference for any objects you use on the assembly." + extended_desc = "If the 'put down' pin is set to true, the assembly will take the scanned object from your hands to it's location. \ + Useful for interaction with the grabber. The scanner only works using the help intent." + icon_state = "recorder" + complexity = 4 + inputs = list("put down" = IC_PINTYPE_BOOLEAN) + outputs = list("scanned" = IC_PINTYPE_REF) + activators = list("on scanned" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + power_draw_per_use = 20 + +/obj/item/integrated_circuit/input/objscaner/attackby_react(var/atom/A,var/mob/user,intent) + if(intent!=INTENT_HELP) + return FALSE + if(!check_then_do_work()) + return FALSE + var/pu = get_pin_data(IC_INPUT, 1) + if(pu) + user.transferItemToLoc(A,drop_location()) + set_pin_data(IC_OUTPUT, 1, WEAKREF(A)) + push_data() + activate_pin(1) + return TRUE + /obj/item/integrated_circuit/input/internalbm name = "internal battery monitor" desc = "This monitors the charge level of an internal battery." icon_state = "internalbm" - extended_desc = "This circuit will give you values of charge, max charge and percentage of the internal battery on demand." + extended_desc = "This circuit will give you values of charge, max charge, and percentage of the internal battery on demand." w_class = WEIGHT_CLASS_TINY complexity = 1 inputs = list() @@ -730,7 +814,7 @@ name = "external battery monitor" desc = "This can help to watch battery state of any device in view" icon_state = "externalbm" - extended_desc = "This circuit will give you values of charge, max charge and percentage of any device or battery in view" + extended_desc = "This circuit will give you values of charge, max charge, and percentage of any device or battery in view" w_class = WEIGHT_CLASS_TINY complexity = 2 inputs = list("target" = IC_PINTYPE_REF) @@ -760,3 +844,38 @@ activate_pin(2) push_data() return + +/obj/item/integrated_circuit/input/ntnetsc + name = "NTnet scaner" + desc = "This can return NTnet IDs of a component inside the given object, if there are any." + icon_state = "signalsc" + w_class = WEIGHT_CLASS_TINY + complexity = 2 + inputs = list("target" = IC_PINTYPE_REF) + outputs = list( + "id" = IC_PINTYPE_STRING + ) + activators = list("read" = IC_PINTYPE_PULSE_IN, "found" = IC_PINTYPE_PULSE_OUT,"not found" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + power_draw_per_use = 1 + +/obj/item/integrated_circuit/input/ntnetsc/do_work() + + var/atom/AM = get_pin_data_as_type(IC_INPUT, 1, /atom) + var/list/processing_list = list(AM) + var/datum/component/ntnet_interface/net = null + set_pin_data(IC_OUTPUT, 1, null) + while(processing_list.len && !net) + var/atom/A = processing_list[1] + processing_list.Cut(1, 2) + //Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed + //This is also why we don't need to check against assembled as we go along + processing_list += A.contents + net = A.GetComponent(/datum/component/ntnet_interface) + if(net) + set_pin_data(IC_OUTPUT, 1, net.hardware_id) + activate_pin(2) + else + activate_pin(3) + push_data() + return diff --git a/code/modules/integrated_electronics/subtypes/logic.dm b/code/modules/integrated_electronics/subtypes/logic.dm index 627301ef10..f8e858ef94 100644 --- a/code/modules/integrated_electronics/subtypes/logic.dm +++ b/code/modules/integrated_electronics/subtypes/logic.dm @@ -2,7 +2,7 @@ name = "logic gate" desc = "This tiny chip will decide for you!" extended_desc = "Logic circuits will treat a null, 0, and a \"\" string value as FALSE and anything else as TRUE." - complexity = 3 + complexity = 1 outputs = list("result") activators = list("compare" = IC_PINTYPE_PULSE_IN) category_text = "Logic" diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index f32f414fbb..028c021a88 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -4,10 +4,10 @@ /obj/item/integrated_circuit/manipulation/weapon_firing name = "weapon firing mechanism" desc = "This somewhat complicated system allows one to slot in a gun, direct it towards a position, and remotely fire it." - extended_desc = "The firing mechanism can slot in any energy weapon. \ - The first and second inputs need to be numbers. They are coordinates for the gun to fire at, relative to the machine itself. \ - The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between \ - lethal (TRUE) or stun (FALSE) modes.It uses internal battery of weapon." + extended_desc = "The firing mechanism can slot in any energy weapon. \ + The first and second inputs need to be numbers which correspond to coordinates for the gun to fire at relative to the machine itself. \ + The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between \ + lethal (TRUE) or stun (FALSE) modes. It uses the internal battery of the weapon." complexity = 20 w_class = WEIGHT_CLASS_SMALL size = 3 @@ -135,7 +135,7 @@ icon_state = "locomotion" extended_desc = "The circuit accepts a 'dir' number as a direction to move towards.
    \ Pulsing the 'step towards dir' activator pin will cause the machine to move a meter in that direction, assuming it is not \ - being held, or anchored in some way. It should be noted that the ability to move is dependant on the type of assembly that this circuit inhabits." + being held, or anchored in some way. It should be noted that the ability to move is dependant on the type of assembly that this circuit inhabits." w_class = WEIGHT_CLASS_SMALL complexity = 20 inputs = list("direction" = IC_PINTYPE_DIR) @@ -155,9 +155,11 @@ if(isnum(wanted_dir.data)) if(step(assembly, wanted_dir.data)) activate_pin(2) + return else activate_pin(3) return FALSE + return FALSE /obj/item/integrated_circuit/manipulation/grenade name = "grenade primer" @@ -234,7 +236,7 @@ name = "plant manipulation module" desc = "Used to uproot weeds or harvest plants in trays." icon_state = "plant_m" - extended_desc = "The circuit accepts a reference to hydroponic tray. It work from adjacent tiles. \ + extended_desc = "The circuit accepts a reference to a hydroponic tray in an adjacent tile. \ Mode(0- harvest, 1-uproot weeds, 2-uproot plant) determinies action." w_class = WEIGHT_CLASS_TINY complexity = 10 @@ -247,9 +249,14 @@ /obj/item/integrated_circuit/manipulation/plant_module/do_work() ..() var/turf/T = get_turf(src) - var/obj/machinery/hydroponics/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/machinery/hydroponics) - if(!istype(AM)) //Invalid input + var/obj/OM = get_pin_data_as_type(IC_INPUT, 1, /obj) + if(istype(OM,/obj/structure/spacevine) && get_pin_data(IC_INPUT, 2) == 2) + qdel(OM) + activate_pin(2) return + var/obj/machinery/hydroponics/AM = OM + if(!istype(AM)) //Invalid input + return FALSE var/mob/living/M = get_turf(AM) if(!M.Adjacent(T)) return //Can't reach @@ -276,6 +283,7 @@ qdel(AM.myseed) AM.myseed = null AM.weedlevel = 0 //Has a side effect of cleaning up those nasty weeds + AM.dead = 0 AM.update_icon() else activate_pin(2) @@ -284,7 +292,7 @@ /obj/item/integrated_circuit/manipulation/grabber name = "grabber" - desc = "A circuit with it's own inventory for small/medium items, used to grab and store things." + desc = "A circuit with it's own inventory for tiny/small items, used to grab and store things." icon_state = "grabber" extended_desc = "The circuit accepts a reference to thing to be grabbed. It can store up to 10 things. Modes: 1 for grab. 0 for eject the first thing. -1 for eject all." w_class = WEIGHT_CLASS_SMALL @@ -307,7 +315,7 @@ var/mode = get_pin_data(IC_INPUT, 2) if(mode == 1) - if(check_target(AM, exclude_contents = TRUE)) + if(check_target(AM)) if((contents.len < max_items) && (!max_w_class || AM.w_class <= max_w_class)) AM.forceMove(src) if(mode == 0) @@ -345,9 +353,9 @@ /obj/item/integrated_circuit/manipulation/thrower name = "thrower" desc = "A compact launcher to throw things from inside or nearby tiles." - extended_desc = "The first and second inputs need to be numbers. They are coordinates to throw thing at, relative to the machine itself. \ - The 'fire' activator will cause the mechanism to attempt to throw thing at the coordinates, if possible. Note that the \ - projectile need to be inside the machine, or to be on an adjacent tile, and to be up to medium size." + extended_desc = "The first and second inputs need to be numbers which correspond to coordinates to throw objects at relative to the machine itself. \ + The 'fire' activator will cause the mechanism to attempt to throw objects at the coordinates, if possible. Note that the \ + projectile need to be inside the machine, or to be on an adjacent tile, and must be medium sized or smaller." complexity = 15 w_class = WEIGHT_CLASS_SMALL size = 2 diff --git a/code/modules/integrated_electronics/subtypes/power.dm b/code/modules/integrated_electronics/subtypes/power.dm index de9055acfa..872f70a20f 100644 --- a/code/modules/integrated_electronics/subtypes/power.dm +++ b/code/modules/integrated_electronics/subtypes/power.dm @@ -6,8 +6,8 @@ desc = "This can wirelessly transmit electricity from an assembly's battery towards a nearby machine." icon_state = "power_transmitter" extended_desc = "This circuit transmits 5 kJ of electricity every time the activator pin is pulsed. The input pin must be \ - a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \ - inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \ + a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \ + inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \ some power is lost due to ineffiency." w_class = WEIGHT_CLASS_SMALL complexity = 16 @@ -24,10 +24,10 @@ /obj/item/integrated_circuit/power/transmitter/large name = "large power transmission circuit" - desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable enviroments." + desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable enviroments." extended_desc = "This circuit transmits 20 kJ of electricity every time the activator pin is pulsed. The input pin must be \ - a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \ - inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \ + a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \ + inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \ some power is lost due to ineffiency." w_class = WEIGHT_CLASS_BULKY complexity = 32 diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 33f92c3646..2a97ab1732 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -9,13 +9,18 @@ . = ..() if(volume) create_reagents(volume) + push_vol() + +/obj/item/integrated_circuit/reagent/proc/push_vol() + set_pin_data(IC_OUTPUT, 1, reagents.total_volume) + push_data() /obj/item/integrated_circuit/reagent/smoke name = "smoke generator" desc = "Unlike most electronics, creating smoke is completely intentional." icon_state = "smoke" - extended_desc = "This smoke generator creates clouds of smoke on command. It can also hold liquids inside, which will go \ - into the smoke clouds when activated. The reagents are consumed when smoke is made." + extended_desc = "This smoke generator creates clouds of smoke on command. It can also hold liquids inside, which will go \ + into the smoke clouds when activated. The reagents are consumed when smoke is made." container_type = OPENCONTAINER volume = 100 @@ -29,7 +34,8 @@ ) activators = list( "create smoke" = IC_PINTYPE_PULSE_IN, - "on smoked" = IC_PINTYPE_PULSE_OUT + "on smoked" = IC_PINTYPE_PULSE_OUT, + "push ref" = IC_PINTYPE_PULSE_IN ) spawn_flags = IC_SPAWN_RESEARCH power_draw_per_use = 20 @@ -40,30 +46,33 @@ //reset warning only if we have reagents now if(changetype == ADD_REAGENT) notified = FALSE - set_pin_data(IC_OUTPUT, 1, reagents.total_volume) - push_data() + push_vol() -/obj/item/integrated_circuit/reagent/smoke/do_work() - if(!reagents || (reagents.total_volume < IC_SMOKE_REAGENTS_MINIMUM_UNITS)) - return - var/location = get_turf(src) - var/datum/effect_system/smoke_spread/chem/S = new - S.attach(location) - playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) - if(S) - S.set_up(reagents, smoke_radius, location, notified) - if(!notified) - notified = TRUE - S.start() - - reagents.clear_reagents() - activate_pin(2) +/obj/item/integrated_circuit/reagent/smoke/do_work(ord) + switch(ord) + if(1) + if(!reagents || (reagents.total_volume < IC_SMOKE_REAGENTS_MINIMUM_UNITS)) + return + var/location = get_turf(src) + var/datum/effect_system/smoke_spread/chem/S = new + S.attach(location) + playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) + if(S) + S.set_up(reagents, smoke_radius, location, notified) + if(!notified) + notified = TRUE + S.start() + reagents.clear_reagents() + activate_pin(2) + if(3) + set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) + push_data() /obj/item/integrated_circuit/reagent/injector name = "integrated hypo-injector" desc = "This scary looking thing is able to pump liquids into whatever it's pointed at." icon_state = "injector" - extended_desc = "This autoinjector can push reagents into another container or someone else outside of the machine. The target \ + extended_desc = "This autoinjector can push reagents into another container or someone else outside of the machine. The target \ must be adjacent to the machine, and if it is a person, they cannot be wearing thick clothing. Negative given amount makes injector suck out reagents." container_type = OPENCONTAINER @@ -85,7 +94,9 @@ activators = list( "inject" = IC_PINTYPE_PULSE_IN, "on injected" = IC_PINTYPE_PULSE_OUT, - "on fail" = IC_PINTYPE_PULSE_OUT + "on fail" = IC_PINTYPE_PULSE_OUT, + "push ref" = IC_PINTYPE_PULSE_IN + ) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 15 @@ -93,15 +104,8 @@ var/transfer_amount = 10 var/busy = FALSE -/obj/item/integrated_circuit/reagent/injector/interact(mob/user) - set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) - push_data() - ..() - - /obj/item/integrated_circuit/reagent/injector/on_reagent_change(changetype) - set_pin_data(IC_OUTPUT, 1, reagents.total_volume) - push_data() + push_vol() /obj/item/integrated_circuit/reagent/injector/on_data_written() var/new_amount = get_pin_data(IC_INPUT, 2) @@ -127,7 +131,15 @@ temp_reagents.clear_reagents() qdel(temp_reagents) -/obj/item/integrated_circuit/reagent/injector/do_work() +/obj/item/integrated_circuit/reagent/injector/do_work(ord) + switch(ord) + if(1) + inject() + if(4) + set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) + push_data() + +/obj/item/integrated_circuit/reagent/injector/proc/inject() set waitfor = FALSE // Don't sleep in a proc that is called by a processor without this set, otherwise it'll delay the entire thing var/atom/movable/AM = get_pin_data_as_type(IC_INPUT, 1, /atom/movable) var/atom/movable/acting_object = get_object() @@ -210,7 +222,7 @@ name = "reagent pump" desc = "Moves liquids safely inside a machine, or even nearby it." icon_state = "reagent_pump" - extended_desc = "This is a pump, which will move liquids from the source ref to the target ref. The third pin determines \ + extended_desc = "This is a pump which will move liquids from the source ref to the target ref. The third pin determines \ how much liquid is moved per pulse, between 0 and 50. The pump can move reagents to any open container inside the machine, or \ outside the machine if it is next to the machine." @@ -268,7 +280,7 @@ /obj/item/integrated_circuit/reagent/storage name = "reagent storage" - desc = "Stores liquid inside, and away from electrical components. Can store up to 60u." + desc = "Stores liquid inside the device away from electrical components. It can store up to 60u." icon_state = "reagent_storage" extended_desc = "This is effectively an internal beaker." @@ -281,21 +293,31 @@ "volume used" = IC_PINTYPE_NUMBER, "self reference" = IC_PINTYPE_REF ) - activators = list() + activators = list("push ref" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH -/obj/item/integrated_circuit/reagent/storage/interact(mob/user) + + +/obj/item/integrated_circuit/reagent/storage/do_work() set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) push_data() - ..() /obj/item/integrated_circuit/reagent/storage/on_reagent_change(changetype) - set_pin_data(IC_OUTPUT, 1, reagents.total_volume) - push_data() + push_vol() + +/obj/item/integrated_circuit/reagent/storage/big + name = "big reagent storage" + icon_state = "reagent_storage_big" + desc = "Stores liquid inside the device away from electrical components. Can store up to 180u." + + volume = 180 + + complexity = 16 + spawn_flags = IC_SPAWN_RESEARCH /obj/item/integrated_circuit/reagent/storage/cryo name = "cryo reagent storage" - desc = "Stores liquid inside, and away from electrical components. Can store up to 60u. This will also suppress reactions." + desc = "Stores liquid inside the device away from electrical components. It can store up to 60u. This will also suppress reactions." icon_state = "reagent_storage_cryo" extended_desc = "This is effectively an internal cryo beaker." @@ -306,20 +328,102 @@ . = ..() reagents.set_reacting(FALSE) -/obj/item/integrated_circuit/reagent/storage/big - name = "big reagent storage" - desc = "Stores liquid inside, and away from electrical components. Can store up to 180u." - icon_state = "reagent_storage_big" - extended_desc = "This is effectively an internal beaker." - - volume = 180 - +/obj/item/integrated_circuit/reagent/storage/grinder + name = "reagent grinder" + desc = "This is reagent grinder. It accepts a ref to something and refines it into reagents. It can store up to 100u." + icon_state = "blender" + extended_desc = "" + inputs = list( + "target" = IC_PINTYPE_REF, + ) + outputs = list( + "volume used" = IC_PINTYPE_NUMBER, + "self reference" = IC_PINTYPE_REF + ) + activators = list( + "grind" = IC_PINTYPE_PULSE_IN, + "on grind" = IC_PINTYPE_PULSE_OUT, + "on fail" = IC_PINTYPE_PULSE_OUT, + "push ref" = IC_PINTYPE_PULSE_IN + ) + volume = 100 + power_draw_per_use = 150 complexity = 16 spawn_flags = IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/reagent/storage/grinder/do_work(ord) + switch(ord) + if(1) + grind() + if(4) + set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) + push_data() + +/obj/item/integrated_circuit/reagent/storage/grinder/proc/grind() + if(reagents.total_volume >= reagents.maximum_volume) + activate_pin(3) + return FALSE + var/obj/item/I = get_pin_data_as_type(IC_INPUT, 1, /obj/item) + if(istype(I)&&(I.grind_results)&&check_target(I)&&(I.on_grind(src) != -1)) + reagents.add_reagent_list(I.grind_results) + if(I.reagents) + I.reagents.trans_to(src, I.reagents.total_volume) + qdel(I) + activate_pin(2) + return TRUE + activate_pin(3) + return FALSE + +obj/item/integrated_circuit/reagent/storage/juicer + name = "reagent juicer" + desc = "This is reagent juicer. It accepts a ref to something and refines it into reagents. It can store up to 100u." + icon_state = "blender" + extended_desc = "" + inputs = list( + "target" = IC_PINTYPE_REF, + ) + outputs = list( + "volume used" = IC_PINTYPE_NUMBER, + "self reference" = IC_PINTYPE_REF + ) + activators = list( + "juice" = IC_PINTYPE_PULSE_IN, + "on juice" = IC_PINTYPE_PULSE_OUT, + "on fail" = IC_PINTYPE_PULSE_OUT, + "push ref" = IC_PINTYPE_PULSE_IN + ) + volume = 100 + power_draw_per_use = 150 + complexity = 16 + spawn_flags = IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/reagent/storage/juicer/do_work(ord) + switch(ord) + if(1) + juice() + if(4) + set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) + push_data() + +/obj/item/integrated_circuit/reagent/storage/juicer/proc/juice() + if(reagents.total_volume >= reagents.maximum_volume) + activate_pin(3) + return FALSE + var/obj/item/I = get_pin_data_as_type(IC_INPUT, 1, /obj/item) + if(istype(I)&&check_target(I)&&(I.juice_results)&&(I.on_juice() != -1)) + reagents.add_reagent_list(I.juice_results) + qdel(I) + activate_pin(2) + return TRUE + activate_pin(3) + return FALSE + + + /obj/item/integrated_circuit/reagent/storage/scan name = "reagent scanner" - desc = "Stores liquid inside, and away from electrical components. Can store up to 60u. On pulse this beaker will send list of contained reagents." + desc = "Stores liquid inside the device away from electrical components. It can store up to 60u. On pulse this beaker will send list of contained reagents." icon_state = "reagent_scan" extended_desc = "Mostly useful for reagent filter." @@ -330,25 +434,30 @@ "list of reagents" = IC_PINTYPE_LIST ) activators = list( - "scan" = IC_PINTYPE_PULSE_IN + "scan" = IC_PINTYPE_PULSE_IN, + "push ref" = IC_PINTYPE_PULSE_IN ) spawn_flags = IC_SPAWN_RESEARCH -/obj/item/integrated_circuit/reagent/storage/scan/do_work() - var/cont[0] - for(var/datum/reagent/RE in reagents.reagent_list) - cont += RE.id - set_pin_data(IC_OUTPUT, 3, cont) - push_data() - +/obj/item/integrated_circuit/reagent/storage/scan/do_work(ord) + switch(ord) + if(1) + var/cont[0] + for(var/datum/reagent/RE in reagents.reagent_list) + cont += RE.id + set_pin_data(IC_OUTPUT, 3, cont) + push_data() + if(2) + set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) + push_data() /obj/item/integrated_circuit/reagent/filter name = "reagent filter" desc = "Filtering liquids by list of desired or unwanted reagents." icon_state = "reagent_filter" - extended_desc = "This is a filter, which will move liquids from the source to the target. \ - It will move all reagents, except list, given in fourth pin if amount value is positive.\ - Or it will move only desired reagents if amount is negative, The third pin determines \ + extended_desc = "This is a filter which will move liquids from the source to the target. \ + It will move all reagents, except those in the unwanted list, given the fourth pin if amount value is positive, \ + or it will move only desired reagents if amount is negative. The third pin determines \ how much reagent is moved per pulse, between 0 and 50. Amount is given for each separate reagent." complexity = 8 @@ -394,7 +503,8 @@ if(!source.reagents || !target.reagents) return - if(!source.is_drainable() || !target.is_refillable()) + // FALSE in those procs makes mobs invalid targets. + if(!source.is_drawable(FALSE) || !target.is_injectable(FALSE)) return if(target.reagents.maximum_volume - target.reagents.total_volume <= 0) @@ -410,3 +520,45 @@ activate_pin(2) push_data() +/obj/item/integrated_circuit/reagent/storage/heater + name = "chemical heater" + desc = "Stores liquid inside the device away from electrical components. It can store up to 60u. It will heat or cool the reagents \ + to the target temperature when turned on." + icon_state = "heater" + container_type = OPENCONTAINER + complexity = 8 + inputs = list( + "target temperature" = IC_PINTYPE_NUMBER, + "on" = IC_PINTYPE_BOOLEAN + ) + inputs_default = list("1" = 300) + outputs = list("volume used" = IC_PINTYPE_NUMBER,"self reference" = IC_PINTYPE_REF,"temperature" = IC_PINTYPE_NUMBER) + spawn_flags = IC_SPAWN_RESEARCH + var/heater_coefficient = 0.1 + +/obj/item/integrated_circuit/reagent/storage/heater/on_data_written() + if(get_pin_data(IC_INPUT, 2)) + power_draw_idle = 30 + else + power_draw_idle = 0 + +/obj/item/integrated_circuit/reagent/storage/heater/Initialize() + .=..() + START_PROCESSING(SScircuit, src) + +/obj/item/integrated_circuit/reagent/storage/heater/Destroy() + STOP_PROCESSING(SScircuit, src) + return ..() + +/obj/item/integrated_circuit/reagent/storage/heater/process() + if(power_draw_idle) + var/target_temperature = get_pin_data(IC_INPUT, 1) + if(reagents.chem_temp > target_temperature) + reagents.chem_temp += min(-1, (target_temperature - reagents.chem_temp) * heater_coefficient) + if(reagents.chem_temp < target_temperature) + reagents.chem_temp += max(1, (target_temperature - reagents.chem_temp) * heater_coefficient) + + reagents.chem_temp = round(reagents.chem_temp) + reagents.handle_reactions() + set_pin_data(IC_OUTPUT, 3, reagents.chem_temp) + push_data() diff --git a/code/modules/integrated_electronics/subtypes/smart.dm b/code/modules/integrated_electronics/subtypes/smart.dm index ec59c3cab1..dc47290545 100644 --- a/code/modules/integrated_electronics/subtypes/smart.dm +++ b/code/modules/integrated_electronics/subtypes/smart.dm @@ -4,7 +4,7 @@ /obj/item/integrated_circuit/smart/basic_pathfinder name = "basic pathfinder" desc = "This complex circuit is able to determine what direction a given target is." - extended_desc = "This circuit uses a miniturized, integrated camera to determine where the target is. If the machine \ + extended_desc = "This circuit uses a miniturized integrated camera to determine where the target is. If the machine \ cannot see the target, it will not be able to calculate the correct direction." icon_state = "numberpad" complexity = 25 @@ -27,6 +27,6 @@ push_data() return // Can't see the target. - set_pin_data(IC_OUTPUT, 1, get_dir(get_turf(src), get_turf(A))) + set_pin_data(IC_OUTPUT, 1, get_dir(get_turf(src), get_step_towards2(get_turf(src),A))) push_data() activate_pin(2) diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 0af03ac739..a16f2ae163 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -263,4 +263,4 @@ GLOBAL_PROTECT(exp_to_update) prefs.db_flags = text2num(flags_read.item[1]) else if(isnull(prefs.db_flags)) prefs.db_flags = 0 //This PROBABLY won't happen, but better safe than sorry. - return TRUE + return TRUE \ No newline at end of file diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 03498f1e7b..38418e9916 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -1,77 +1,77 @@ -/* -Captain -*/ -/datum/job/captain - title = "Captain" - flag = CAPTAIN +/* +Captain +*/ +/datum/job/captain + title = "Captain" + flag = CAPTAIN department_head = list("CentCom") - department_flag = ENGSEC - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "Nanotrasen officials and Space law" - selection_color = "#ccccff" - req_admin_notify = 1 - minimal_player_age = 14 + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "Nanotrasen officials and Space law" + selection_color = "#ccccff" + req_admin_notify = 1 + minimal_player_age = 14 exp_requirements = 180 exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/captain - - access = list() //See get_access() - minimal_access = list() //See get_access() - -/datum/job/captain/get_access() - return get_all_accesses() - -/datum/job/captain/announce(mob/living/carbon/human/H) - ..() - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "Captain [H.real_name] on deck!")) - -/datum/outfit/job/captain - name = "Captain" - jobtype = /datum/job/captain - - id = /obj/item/card/id/gold - belt = /obj/item/device/pda/captain - glasses = /obj/item/clothing/glasses/sunglasses - ears = /obj/item/device/radio/headset/heads/captain/alt - gloves = /obj/item/clothing/gloves/color/captain - uniform = /obj/item/clothing/under/rank/captain - suit = /obj/item/clothing/suit/armor/vest/capcarapace - shoes = /obj/item/clothing/shoes/sneakers/brown - head = /obj/item/clothing/head/caphat - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/station_charter=1) - - backpack = /obj/item/storage/backpack/captain - satchel = /obj/item/storage/backpack/satchel/cap - duffelbag = /obj/item/storage/backpack/duffelbag/captain - - implants = list(/obj/item/implant/mindshield) - accessory = /obj/item/clothing/accessory/medal/gold/captain - -/* -Head of Personnel -*/ -/datum/job/hop - title = "Head of Personnel" - flag = HOP - department_head = list("Captain") - department_flag = CIVILIAN - head_announce = list("Supply", "Service") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ddddff" - req_admin_notify = 1 - minimal_player_age = 10 + + outfit = /datum/outfit/job/captain + + access = list() //See get_access() + minimal_access = list() //See get_access() + +/datum/job/captain/get_access() + return get_all_accesses() + +/datum/job/captain/announce(mob/living/carbon/human/H) + ..() + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "Captain [H.real_name] on deck!")) + +/datum/outfit/job/captain + name = "Captain" + jobtype = /datum/job/captain + + id = /obj/item/card/id/gold + belt = /obj/item/device/pda/captain + glasses = /obj/item/clothing/glasses/sunglasses + ears = /obj/item/device/radio/headset/heads/captain/alt + gloves = /obj/item/clothing/gloves/color/captain + uniform = /obj/item/clothing/under/rank/captain + suit = /obj/item/clothing/suit/armor/vest/capcarapace + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/caphat + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/station_charter=1) + + backpack = /obj/item/storage/backpack/captain + satchel = /obj/item/storage/backpack/satchel/cap + duffelbag = /obj/item/storage/backpack/duffelbag/captain + + implants = list(/obj/item/implant/mindshield) + accessory = /obj/item/clothing/accessory/medal/gold/captain + +/* +Head of Personnel +*/ +/datum/job/hop + title = "Head of Personnel" + flag = HOP + department_head = list("Captain") + department_flag = CIVILIAN + head_announce = list("Supply", "Service") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ddddff" + req_admin_notify = 1 + minimal_player_age = 10 exp_requirements = 180 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_SUPPLY - - outfit = /datum/outfit/job/hop - + + outfit = /datum/outfit/job/hop + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, @@ -84,17 +84,17 @@ Head of Personnel ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) - - -/datum/outfit/job/hop - name = "Head of Personnel" - jobtype = /datum/job/hop - - id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/hop - ears = /obj/item/device/radio/headset/heads/hop - uniform = /obj/item/clothing/under/rank/head_of_personnel - shoes = /obj/item/clothing/shoes/sneakers/brown - head = /obj/item/clothing/head/hopcap - backpack_contents = list(/obj/item/storage/box/ids=1,\ - /obj/item/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced = 1) + + +/datum/outfit/job/hop + name = "Head of Personnel" + jobtype = /datum/job/hop + + id = /obj/item/card/id/silver + belt = /obj/item/device/pda/heads/hop + ears = /obj/item/device/radio/headset/heads/hop + uniform = /obj/item/clothing/under/rank/head_of_personnel + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/hopcap + backpack_contents = list(/obj/item/storage/box/ids=1,\ + /obj/item/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced = 1) diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index 2e18807541..6720c28710 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -72,14 +72,15 @@ H.dna.species.after_equip_job(src, H, visualsOnly) + if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions)) + if(H.dna.species.id != "human") + H.set_species(/datum/species/human) + H.rename_self("human", H.client) + purrbation_remove(H, silent=TRUE) + if(!visualsOnly && announce) announce(H) - if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions)) - H.dna.features["tail_human"] = "None" - H.dna.features["ears"] = "None" - H.regenerate_icons() - /datum/job/proc/get_access() if(!config) //Needed for robots. return src.minimal_access.Copy() diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm index 9a33e1e759..151ed213f8 100644 --- a/code/modules/jobs/job_types/medical.dm +++ b/code/modules/jobs/job_types/medical.dm @@ -1,191 +1,191 @@ -/* -Chief Medical Officer -*/ -/datum/job/cmo - title = "Chief Medical Officer" - flag = CMO_JF - department_head = list("Captain") - department_flag = MEDSCI - head_announce = list("Medical") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ffddf0" - req_admin_notify = 1 - minimal_player_age = 7 +/* +Chief Medical Officer +*/ +/datum/job/cmo + title = "Chief Medical Officer" + flag = CMO_JF + department_head = list("Captain") + department_flag = MEDSCI + head_announce = list("Medical") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ffddf0" + req_admin_notify = 1 + minimal_player_age = 7 exp_requirements = 180 exp_type = EXP_TYPE_CREW exp_type_department = EXP_TYPE_MEDICAL - - outfit = /datum/outfit/job/cmo - + + outfit = /datum/outfit/job/cmo + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) - -/datum/outfit/job/cmo - name = "Chief Medical Officer" - jobtype = /datum/job/cmo - - id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/cmo + +/datum/outfit/job/cmo + name = "Chief Medical Officer" + jobtype = /datum/job/cmo + + id = /obj/item/card/id/silver + belt = /obj/item/device/pda/heads/cmo l_pocket = /obj/item/pinpointer/crew - ears = /obj/item/device/radio/headset/heads/cmo - uniform = /obj/item/clothing/under/rank/chief_medical_officer - shoes = /obj/item/clothing/shoes/sneakers/brown - suit = /obj/item/clothing/suit/toggle/labcoat/cmo - l_hand = /obj/item/storage/firstaid/regular - suit_store = /obj/item/device/flashlight/pen - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) - - backpack = /obj/item/storage/backpack/medic - satchel = /obj/item/storage/backpack/satchel/med - duffelbag = /obj/item/storage/backpack/duffelbag/med - -/* -Medical Doctor -*/ -/datum/job/doctor - title = "Medical Doctor" - flag = DOCTOR - department_head = list("Chief Medical Officer") - department_flag = MEDSCI - faction = "Station" - total_positions = 5 - spawn_positions = 3 - supervisors = "the chief medical officer" - selection_color = "#ffeef0" - - outfit = /datum/outfit/job/doctor - + ears = /obj/item/device/radio/headset/heads/cmo + uniform = /obj/item/clothing/under/rank/chief_medical_officer + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/toggle/labcoat/cmo + l_hand = /obj/item/storage/firstaid/regular + suit_store = /obj/item/device/flashlight/pen + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + +/* +Medical Doctor +*/ +/datum/job/doctor + title = "Medical Doctor" + flag = DOCTOR + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 5 + spawn_positions = 3 + supervisors = "the chief medical officer" + selection_color = "#ffeef0" + + outfit = /datum/outfit/job/doctor + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING) - -/datum/outfit/job/doctor - name = "Medical Doctor" - jobtype = /datum/job/doctor - - belt = /obj/item/device/pda/medical - ears = /obj/item/device/radio/headset/headset_med - uniform = /obj/item/clothing/under/rank/medical - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat - l_hand = /obj/item/storage/firstaid/regular - suit_store = /obj/item/device/flashlight/pen - - backpack = /obj/item/storage/backpack/medic - satchel = /obj/item/storage/backpack/satchel/med - duffelbag = /obj/item/storage/backpack/duffelbag/med - -/* -Chemist -*/ -/datum/job/chemist - title = "Chemist" - flag = CHEMIST - department_head = list("Chief Medical Officer") - department_flag = MEDSCI - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the chief medical officer" - selection_color = "#ffeef0" + +/datum/outfit/job/doctor + name = "Medical Doctor" + jobtype = /datum/job/doctor + + belt = /obj/item/device/pda/medical + ears = /obj/item/device/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/medical + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/storage/firstaid/regular + suit_store = /obj/item/device/flashlight/pen + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + +/* +Chemist +*/ +/datum/job/chemist + title = "Chemist" + flag = CHEMIST + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the chief medical officer" + selection_color = "#ffeef0" exp_type = EXP_TYPE_CREW exp_requirements = 60 - - outfit = /datum/outfit/job/chemist - + + outfit = /datum/outfit/job/chemist + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/chemist - name = "Chemist" - jobtype = /datum/job/chemist - - glasses = /obj/item/clothing/glasses/science - belt = /obj/item/device/pda/chemist - ears = /obj/item/device/radio/headset/headset_med - uniform = /obj/item/clothing/under/rank/chemist - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/chemist - accessory = /obj/item/clothing/accessory/pocketprotector/full - backpack = /obj/item/storage/backpack/chemistry - satchel = /obj/item/storage/backpack/satchel/chem - duffelbag = /obj/item/storage/backpack/duffelbag/med - -/* -Geneticist -*/ -/datum/job/geneticist - title = "Geneticist" - flag = GENETICIST - department_head = list("Chief Medical Officer", "Research Director") - department_flag = MEDSCI - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the chief medical officer and research director" - selection_color = "#ffeef0" + +/datum/outfit/job/chemist + name = "Chemist" + jobtype = /datum/job/chemist + + glasses = /obj/item/clothing/glasses/science + belt = /obj/item/device/pda/chemist + ears = /obj/item/device/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/chemist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/chemist + accessory = /obj/item/clothing/accessory/pocketprotector/full + backpack = /obj/item/storage/backpack/chemistry + satchel = /obj/item/storage/backpack/satchel/chem + duffelbag = /obj/item/storage/backpack/duffelbag/med + +/* +Geneticist +*/ +/datum/job/geneticist + title = "Geneticist" + flag = GENETICIST + department_head = list("Chief Medical Officer", "Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the chief medical officer and research director" + selection_color = "#ffeef0" exp_type = EXP_TYPE_CREW exp_requirements = 60 - - outfit = /datum/outfit/job/geneticist - + + outfit = /datum/outfit/job/geneticist + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH) - -/datum/outfit/job/geneticist - name = "Geneticist" - jobtype = /datum/job/geneticist - - belt = /obj/item/device/pda/geneticist - ears = /obj/item/device/radio/headset/headset_medsci - uniform = /obj/item/clothing/under/rank/geneticist - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/genetics - suit_store = /obj/item/device/flashlight/pen - - backpack = /obj/item/storage/backpack/genetics - satchel = /obj/item/storage/backpack/satchel/gen - duffelbag = /obj/item/storage/backpack/duffelbag/med - -/* -Virologist -*/ -/datum/job/virologist - title = "Virologist" - flag = VIROLOGIST - department_head = list("Chief Medical Officer") - department_flag = MEDSCI - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the chief medical officer" - selection_color = "#ffeef0" + +/datum/outfit/job/geneticist + name = "Geneticist" + jobtype = /datum/job/geneticist + + belt = /obj/item/device/pda/geneticist + ears = /obj/item/device/radio/headset/headset_medsci + uniform = /obj/item/clothing/under/rank/geneticist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/genetics + suit_store = /obj/item/device/flashlight/pen + + backpack = /obj/item/storage/backpack/genetics + satchel = /obj/item/storage/backpack/satchel/gen + duffelbag = /obj/item/storage/backpack/duffelbag/med + +/* +Virologist +*/ +/datum/job/virologist + title = "Virologist" + flag = VIROLOGIST + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the chief medical officer" + selection_color = "#ffeef0" exp_type = EXP_TYPE_CREW exp_requirements = 60 - - outfit = /datum/outfit/job/virologist - + + outfit = /datum/outfit/job/virologist + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/virologist - name = "Virologist" - jobtype = /datum/job/virologist - - belt = /obj/item/device/pda/viro - ears = /obj/item/device/radio/headset/headset_med - uniform = /obj/item/clothing/under/rank/virologist - mask = /obj/item/clothing/mask/surgical - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/virologist - suit_store = /obj/item/device/flashlight/pen - - backpack = /obj/item/storage/backpack/virology - satchel = /obj/item/storage/backpack/satchel/vir - duffelbag = /obj/item/storage/backpack/duffelbag/med + +/datum/outfit/job/virologist + name = "Virologist" + jobtype = /datum/job/virologist + + belt = /obj/item/device/pda/viro + ears = /obj/item/device/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/virologist + mask = /obj/item/clothing/mask/surgical + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/virologist + suit_store = /obj/item/device/flashlight/pen + + backpack = /obj/item/storage/backpack/virology + satchel = /obj/item/storage/backpack/satchel/vir + duffelbag = /obj/item/storage/backpack/duffelbag/med diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm index 4eac15d9f1..7fc1dada77 100644 --- a/code/modules/jobs/job_types/science.dm +++ b/code/modules/jobs/job_types/science.dm @@ -1,25 +1,25 @@ -/* -Research Director -*/ -/datum/job/rd - title = "Research Director" - flag = RD_JF - department_head = list("Captain") - department_flag = MEDSCI - head_announce = list("Science") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ffddff" - req_admin_notify = 1 - minimal_player_age = 7 +/* +Research Director +*/ +/datum/job/rd + title = "Research Director" + flag = RD_JF + department_head = list("Captain") + department_flag = MEDSCI + head_announce = list("Science") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ffddff" + req_admin_notify = 1 + minimal_player_age = 7 exp_type_department = EXP_TYPE_SCIENCE exp_requirements = 180 exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/rd - + + outfit = /datum/outfit/job/rd + access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, @@ -30,101 +30,101 @@ Research Director ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) - -/datum/outfit/job/rd - name = "Research Director" - jobtype = /datum/job/rd - - id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/rd - ears = /obj/item/device/radio/headset/heads/rd - uniform = /obj/item/clothing/under/rank/research_director - shoes = /obj/item/clothing/shoes/sneakers/brown - suit = /obj/item/clothing/suit/toggle/labcoat - l_hand = /obj/item/clipboard - l_pocket = /obj/item/device/laser_pointer - accessory = /obj/item/clothing/accessory/pocketprotector/full + +/datum/outfit/job/rd + name = "Research Director" + jobtype = /datum/job/rd + + id = /obj/item/card/id/silver + belt = /obj/item/device/pda/heads/rd + ears = /obj/item/device/radio/headset/heads/rd + uniform = /obj/item/clothing/under/rank/research_director + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/clipboard + l_pocket = /obj/item/device/laser_pointer + accessory = /obj/item/clothing/accessory/pocketprotector/full backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced=1) - - backpack = /obj/item/storage/backpack/science - satchel = /obj/item/storage/backpack/satchel/tox - -/datum/outfit/job/rd/rig - name = "Research Director (Hardsuit)" - - l_hand = null - mask = /obj/item/clothing/mask/breath - suit = /obj/item/clothing/suit/space/hardsuit/rd - suit_store = /obj/item/tank/internals/oxygen - internals_slot = slot_s_store - -/* -Scientist -*/ -/datum/job/scientist - title = "Scientist" - flag = SCIENTIST - department_head = list("Research Director") - department_flag = MEDSCI - faction = "Station" - total_positions = 5 - spawn_positions = 3 - supervisors = "the research director" - selection_color = "#ffeeff" + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + +/datum/outfit/job/rd/rig + name = "Research Director (Hardsuit)" + + l_hand = null + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/rd + suit_store = /obj/item/tank/internals/oxygen + internals_slot = slot_s_store + +/* +Scientist +*/ +/datum/job/scientist + title = "Scientist" + flag = SCIENTIST + department_head = list("Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 5 + spawn_positions = 3 + supervisors = "the research director" + selection_color = "#ffeeff" exp_requirements = 60 exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/scientist - + + outfit = /datum/outfit/job/scientist + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS) minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/scientist - name = "Scientist" - jobtype = /datum/job/scientist - - belt = /obj/item/device/pda/toxins - ears = /obj/item/device/radio/headset/headset_sci - uniform = /obj/item/clothing/under/rank/scientist - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/science - - backpack = /obj/item/storage/backpack/science - satchel = /obj/item/storage/backpack/satchel/tox - accessory = /obj/item/clothing/accessory/pocketprotector/full - -/* -Roboticist -*/ -/datum/job/roboticist - title = "Roboticist" - flag = ROBOTICIST - department_head = list("Research Director") - department_flag = MEDSCI - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "research director" - selection_color = "#ffeeff" + +/datum/outfit/job/scientist + name = "Scientist" + jobtype = /datum/job/scientist + + belt = /obj/item/device/pda/toxins + ears = /obj/item/device/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/scientist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/science + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + accessory = /obj/item/clothing/accessory/pocketprotector/full + +/* +Roboticist +*/ +/datum/job/roboticist + title = "Roboticist" + flag = ROBOTICIST + department_head = list("Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "research director" + selection_color = "#ffeeff" exp_requirements = 60 exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/roboticist - + + outfit = /datum/outfit/job/roboticist + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS) minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/roboticist - name = "Roboticist" - jobtype = /datum/job/roboticist - - belt = /obj/item/storage/belt/utility/full - l_pocket = /obj/item/device/pda/roboticist - ears = /obj/item/device/radio/headset/headset_sci - uniform = /obj/item/clothing/under/rank/roboticist - suit = /obj/item/clothing/suit/toggle/labcoat - - backpack = /obj/item/storage/backpack/science - satchel = /obj/item/storage/backpack/satchel/tox - - pda_slot = slot_l_store + +/datum/outfit/job/roboticist + name = "Roboticist" + jobtype = /datum/job/roboticist + + belt = /obj/item/storage/belt/utility/full + l_pocket = /obj/item/device/pda/roboticist + ears = /obj/item/device/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/roboticist + suit = /obj/item/clothing/suit/toggle/labcoat + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + + pda_slot = slot_l_store diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index a1b95065c6..442b75c972 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -48,7 +48,7 @@ Head of Security gloves = /obj/item/clothing/gloves/color/black/hos head = /obj/item/clothing/head/HoS/beret glasses = /obj/item/clothing/glasses/hud/security/sunglasses - suit_store = /obj/item/gun/energy/e_gun/cx + suit_store = /obj/item/gun/energy/e_gun r_pocket = /obj/item/device/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs backpack_contents = list(/obj/item/melee/baton/loaded=1) diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm index bc3b31b2bf..4a4893e93d 100644 --- a/code/modules/jobs/job_types/silicon.dm +++ b/code/modules/jobs/job_types/silicon.dm @@ -52,4 +52,4 @@ Cyborg /datum/job/cyborg/after_spawn(mob/living/silicon/robot/R, mob/M) if(CONFIG_GET(flag/rename_cyborg)) //name can't be set in robot/New without the client - R.rename_self("cyborg", M.client) + R.rename_self("cyborg", M.client) \ No newline at end of file diff --git a/code/modules/keybindings/bindings_admin.dm b/code/modules/keybindings/bindings_admin.dm new file mode 100644 index 0000000000..812bb95784 --- /dev/null +++ b/code/modules/keybindings/bindings_admin.dm @@ -0,0 +1,18 @@ +/datum/admins/key_down(_key, client/user) + switch(_key) + if("F5") + user.admin_ghost() + return + if("F6") + player_panel_new() + return + if("F7") + user.togglebuildmodeself() + return + if("F8") + if(user.keys_held["Ctrl"]) + user.stealth() + else + user.invisimin() + return + ..() diff --git a/code/modules/keybindings/bindings_carbon.dm b/code/modules/keybindings/bindings_carbon.dm new file mode 100644 index 0000000000..d17f10e963 --- /dev/null +++ b/code/modules/keybindings/bindings_carbon.dm @@ -0,0 +1,18 @@ +/mob/living/carbon/key_down(_key, client/user) + switch(_key) + if("R", "Southwest") // Southwest is End + toggle_throw_mode() + return + if("1") + a_intent_change("help") + return + if("2") + a_intent_change("disarm") + return + if("3") + a_intent_change("grab") + return + if("4") + a_intent_change("harm") + return + return ..() \ No newline at end of file diff --git a/code/modules/keybindings/bindings_client.dm b/code/modules/keybindings/bindings_client.dm new file mode 100644 index 0000000000..4d4f8ce18a --- /dev/null +++ b/code/modules/keybindings/bindings_client.dm @@ -0,0 +1,53 @@ +// Clients aren't datums so we have to define these procs indpendently. +// These verbs are called for all key press and release events +/client/verb/keyDown(_key as text) + set instant = TRUE + set hidden = TRUE + + keys_held[_key] = world.time + var/movement = GLOB.movement_keys[_key] + if(!(next_move_dir_sub & movement)) + next_move_dir_add |= movement + + // Client-level keybindings are ones anyone should be able to do at any time + // Things like taking screenshots, hitting tab, and adminhelps. + + switch(_key) + if("F1") + if(keys_held["Ctrl"] && keys_held["Shift"]) // Is this command ever used? + winset(src, null, "command=.options") + else + get_adminhelp() + return + if("F2") // Screenshot. Hold shift to choose a name and location to save in + winset(src, null, "command=.screenshot [!keys_held["shift"] ? "auto" : ""]") + return + if("F12") // Toggles minimal HUD + mob.button_pressed_F12() + return + + if(holder) + holder.key_down(_key, src) + if(mob.focus) + mob.focus.key_down(_key, src) + +/client/verb/keyUp(_key as text) + set instant = TRUE + set hidden = TRUE + + keys_held -= _key + var/movement = GLOB.movement_keys[_key] + if(!(next_move_dir_add & movement)) + next_move_dir_sub |= movement + + if(holder) + holder.key_up(_key, src) + if(mob.focus) + mob.focus.key_up(_key, src) + +// Called every game tick +/client/keyLoop() + if(holder) + holder.keyLoop(src) + if(mob.focus) + mob.focus.keyLoop(src) \ No newline at end of file diff --git a/code/modules/keybindings/bindings_living.dm b/code/modules/keybindings/bindings_living.dm new file mode 100644 index 0000000000..241bc15b60 --- /dev/null +++ b/code/modules/keybindings/bindings_living.dm @@ -0,0 +1,7 @@ +/mob/living/key_down(_key, client/user) + switch(_key) + if("B") + resist() + return + + return ..() \ No newline at end of file diff --git a/code/modules/keybindings/bindings_mob.dm b/code/modules/keybindings/bindings_mob.dm new file mode 100644 index 0000000000..1d35694e5f --- /dev/null +++ b/code/modules/keybindings/bindings_mob.dm @@ -0,0 +1,79 @@ +// Technically the client argument is unncessary here since that SHOULD be src.client but let's not assume things +// All it takes is one badmin setting their focus to someone else's client to mess things up +// Or we can have NPC's send actual keypresses and detect that by seeing no client + +/mob/key_down(_key, client/user) + switch(_key) + if("Delete", "H") + if(!pulling) + to_chat(src, "You are not pulling anything.") + else + stop_pulling() + return + if("Insert", "G") + a_intent_change(INTENT_HOTKEY_RIGHT) + return + if("F") + a_intent_change(INTENT_HOTKEY_LEFT) + return + if("X", "Northeast") // Northeast is Page-up + swap_hand() + return + if("Y", "Z", "Southeast") // Southeast is Page-down + mode() // attack_self(). No idea who came up with "mode()" + return + if("Q", "Northwest") // Northwest is Home + var/obj/item/I = get_active_held_item() + if(!I) + to_chat(src, "You have nothing to drop in your hand!") + else + dropItemToGround(I) + return + if("Alt") + toggle_move_intent() + return + //Bodypart selections + if("Numpad8") + user.body_toggle_head() + return + if("Numpad4") + user.body_r_arm() + return + if("Numpad5") + user.body_chest() + return + if("Numpad6") + user.body_l_arm() + return + if("Numpad1") + user.body_r_leg() + return + if("Numpad2") + user.body_groin() + return + if("Numpad3") + user.body_l_leg() + return + + if(client.keys_held["Ctrl"]) + switch(GLOB.movement_keys[_key]) + if(NORTH) + northface() + return + if(SOUTH) + southface() + return + if(WEST) + westface() + return + if(EAST) + eastface() + return + return ..() + +/mob/key_up(_key, client/user) + switch(_key) + if("Alt") + toggle_move_intent() + return + return ..() \ No newline at end of file diff --git a/code/modules/keybindings/bindings_robot.dm b/code/modules/keybindings/bindings_robot.dm new file mode 100644 index 0000000000..2354f33c9e --- /dev/null +++ b/code/modules/keybindings/bindings_robot.dm @@ -0,0 +1,12 @@ +/mob/living/silicon/robot/key_down(_key, client/user) + switch(_key) + if("1", "2", "3") + toggle_module(text2num(_key)) + return + if("4") + a_intent_change(INTENT_HOTKEY_LEFT) + return + if("Q") + uneq_active() + return + return ..() \ No newline at end of file diff --git a/code/modules/keybindings/focus.dm b/code/modules/keybindings/focus.dm new file mode 100644 index 0000000000..9d3e44f059 --- /dev/null +++ b/code/modules/keybindings/focus.dm @@ -0,0 +1,20 @@ +/datum + var/list/focusers //Only initialized when needed. Contains a list of mobs focusing on this. + +/mob + var/datum/focus //What receives our keyboard inputs. src by default + +/mob/proc/set_focus(datum/new_focus) + if(focus == new_focus) + return + + if(new_focus) + if(!new_focus.focusers) //Set up the new focus + new_focus.focusers = list() + new_focus.focusers += src + + if(focus) + focus.focusers -= src //Tell the old focus we're done with it + + focus = new_focus + reset_perspective(focus) //Maybe this should be done manually? You figure it out, reader \ No newline at end of file diff --git a/code/modules/keybindings/readme.md b/code/modules/keybindings/readme.md new file mode 100644 index 0000000000..1170804436 --- /dev/null +++ b/code/modules/keybindings/readme.md @@ -0,0 +1,40 @@ +# In-code keypress handling system + +This whole system is heavily based off of forum_account's keyboard library. +Thanks to forum_account for saving the day, the library can be found [here](http://www.byond.com/developer/Forum_account/Keyboard)! + +.dmf macros have some very serious shortcomings. For example, they do not allow reusing parts +of one macro in another, so giving cyborgs their own shortcuts to swap active module couldn't +inherit the movement that all mobs should have anyways. The webclient only supports one macro, +so having more than one was problematic. Additionally each keybind has to call an actual +verb, which meant a lot of hidden verbs that just call one other proc. Also our existing +macro was really bad and tied unrelated behavior into `Northeast()`, `Southeast()`, `Northwest()`, +and `Southwest()`. + +The basic premise of this system is to not screw with .dmf macro setup at all and handle +pressing those keys in the code instead. We have every key call `client.keyDown()` +or `client.keyUp()` with the pressed key as an argument. Certain keys get processed +directly by the client because they should be doable at any time, then we call +`keyDown()` or `keyUp()` on the client's holder and the client's mob's focus. +By default `mob.focus` is the mob itself, but you can set it to any datum to give control of a +client's keypresses to another object. This would be a good way to handle a menu or driving +a mech. You can also set it to null to disregard input from a certain user. + +Movement is handled by having each client call `client.keyLoop()` every game tick. +As above, this calls holder and `focus.keyLoop()`. `atom/movable/keyLoop()` handles movement +Try to keep the calculations in this proc light. It runs every tick for every client after all! + +You can also tell which keys are being held down now. Each client a list of keys pressed called +`keys_held`. Each entry is a key as a text string associated with the world.time when it was +pressed. + +No client-set keybindings at this time, but it shouldn't be too hard if someone wants. + +Notes about certain keys +`Tab` has client-sided behavior but acts normally +`T`, `O`, and `M` move focus to the input when pressed. This fires the keyUp macro right away. +`\` needs to be escaped in the dmf so any usage is `\\` + +You cannot `TICK_CHECK` or check `world.tick_usage` inside of procs called by key down and up +events. They happen outside of a byond tick and have no meaning there. Key looping +works correctly since it's part of a subsystem, not direct input. \ No newline at end of file diff --git a/code/modules/keybindings/setup.dm b/code/modules/keybindings/setup.dm new file mode 100644 index 0000000000..c36db0a1f3 --- /dev/null +++ b/code/modules/keybindings/setup.dm @@ -0,0 +1,55 @@ +/client + var/list/keys_held = list() // A list of any keys held currently + // These next two vars are to apply movement for keypresses and releases made while move delayed. + // Because discarding that input makes the game less responsive. + var/next_move_dir_add // On next move, add this dir to the move that would otherwise be done + var/next_move_dir_sub // On next move, subtract this dir from the move that would otherwise be done + +// Set a client's focus to an object and override these procs on that object to let it handle keypresses + +/datum/proc/key_down(key, client/user) // Called when a key is pressed down initially + return +/datum/proc/key_up(key, client/user) // Called when a key is released + return +/datum/proc/keyLoop(client/user) // Called once every frame + return + +// Keys used for movement +GLOBAL_LIST_INIT(movement_keys, list( + "W" = NORTH, "A" = WEST, "S" = SOUTH, "D" = EAST, // WASD + "North" = NORTH, "West" = WEST, "South" = SOUTH, "East" = EAST, // Arrow keys & Numpad + )) + +// removes all the existing macros +/client/proc/erase_all_macros() + var/list/macro_sets = params2list(winget(src, null, "macros")) + var/erase_output = "" + for(var/i in 1 to macro_sets.len) + var/setname = macro_sets[i] + var/list/macro_set = params2list(winget(src, "[setname].*", "command")) // The third arg doesnt matter here as we're just removing them all + for(var/k in 1 to macro_set.len) + var/list/split_name = splittext(macro_set[k], ".") + var/macro_name = "[split_name[1]].[split_name[2]]" // [3] is "command" + erase_output = "[erase_output];[macro_name].parent=null" + winset(src, null, erase_output) + +/client/proc/set_macros() + set waitfor = FALSE + + erase_all_macros() + + var/list/macro_sets = SSinput.macro_sets + for(var/i in 1 to macro_sets.len) + var/setname = macro_sets[i] + if(setname != "default") + winclone(src, "default", setname) + var/list/macro_set = macro_sets[setname] + for(var/k in 1 to macro_set.len) + var/key = macro_set[k] + var/command = macro_set[key] + winset(src, "[setname]-[REF(key)]", "parent=[setname];name=[key];command=[command]") + + if(prefs.hotkeys) + winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED] mainwindow.macro=default") + else + winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED] mainwindow.macro=old_default") \ No newline at end of file diff --git a/code/modules/language/aphasia.dm b/code/modules/language/aphasia.dm index 070a792ecd..91f14f9111 100644 --- a/code/modules/language/aphasia.dm +++ b/code/modules/language/aphasia.dm @@ -5,7 +5,7 @@ ask_verb = "mumbles" whisper_verb = "mutters" exclaim_verb = "screams incoherently" - flags_1 = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD key = "i" syllables = list("m","n","gh","h","l","s","r","a","e","i","o","u") space_chance = 20 diff --git a/code/modules/language/codespeak.dm b/code/modules/language/codespeak.dm index e8398c2b9f..2a140f27de 100644 --- a/code/modules/language/codespeak.dm +++ b/code/modules/language/codespeak.dm @@ -3,7 +3,7 @@ desc = "Syndicate operatives can use a series of codewords to convey complex information, while sounding like random concepts and drinks to anyone listening in." key = "t" default_priority = 0 - flags_1 = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD icon_state = "codespeak" /datum/language/codespeak/scramble(input) diff --git a/code/modules/language/common.dm b/code/modules/language/common.dm index 162fbf9226..c00ab328ec 100644 --- a/code/modules/language/common.dm +++ b/code/modules/language/common.dm @@ -5,7 +5,7 @@ speech_verb = "says" whisper_verb = "whispers" key = "0" - flags_1 = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_UNDERSTOOD + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_UNDERSTOOD default_priority = 100 icon_state = "galcom" diff --git a/code/modules/language/draconic.dm b/code/modules/language/draconic.dm index a85c1c9747..aaa998c2c0 100644 --- a/code/modules/language/draconic.dm +++ b/code/modules/language/draconic.dm @@ -5,7 +5,7 @@ ask_verb = "hisses" exclaim_verb = "roars" key = "o" - flags_1 = TONGUELESS_SPEECH + flags = TONGUELESS_SPEECH space_chance = 40 syllables = list( "za", "az", "ze", "ez", "zi", "iz", "zo", "oz", "zu", "uz", "zs", "sz", diff --git a/code/modules/language/drone.dm b/code/modules/language/drone.dm index 32659e263b..390e0027cf 100644 --- a/code/modules/language/drone.dm +++ b/code/modules/language/drone.dm @@ -1,12 +1,12 @@ /datum/language/drone name = "Drone" - desc = "A heavily encoded damage control coordination stream, with special flags_1 for hats." + desc = "A heavily encoded damage control coordination stream, with special flags for hats." speech_verb = "chitters" ask_verb = "chitters inquisitively" exclaim_verb = "chitters loudly" spans = list(SPAN_ROBOT) key = "d" - flags_1 = NO_STUTTER + flags = NO_STUTTER syllables = list(".", "|") // ...|..||.||||.|.||.|.|.|||.||| space_chance = 0 diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm index 598fb41e6c..5f2e9963e7 100644 --- a/code/modules/language/language.dm +++ b/code/modules/language/language.dm @@ -11,10 +11,10 @@ var/ask_verb = "asks" // Used when sentence ends in a ? var/exclaim_verb = "exclaims" // Used when sentence ends in a ! var/whisper_verb = "whispers" // Optional. When not specified speech_verb + quietly/softly is used instead. - var/list/signlang_verb = list("signs", "gestures") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags_1 + var/list/signlang_verb = list("signs", "gestures") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags var/key // Character used to speak in language // If key is null, then the language isn't real or learnable. - var/flags_1 // Various language flags_1. + var/flags // Various language flags. var/list/syllables // Used when scrambling text for a non-speaker. var/sentence_chance = 5 // Likelihood of making a new sentence after each syllable. var/space_chance = 55 // Likelihood of getting a space in the random scramble string @@ -28,9 +28,9 @@ /datum/language/proc/display_icon(atom/movable/hearer) var/understands = hearer.has_language(src.type) - if(flags_1 & LANGUAGE_HIDE_ICON_IF_UNDERSTOOD && understands) + if(flags & LANGUAGE_HIDE_ICON_IF_UNDERSTOOD && understands) return FALSE - if(flags_1 & LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD && !understands) + if(flags & LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD && !understands) return FALSE return TRUE diff --git a/code/modules/language/machine.dm b/code/modules/language/machine.dm index e5775040a2..4d88bcb416 100644 --- a/code/modules/language/machine.dm +++ b/code/modules/language/machine.dm @@ -6,7 +6,7 @@ exclaim_verb = "whistles loudly" spans = list(SPAN_ROBOT) key = "6" - flags_1 = NO_STUTTER + flags = NO_STUTTER syllables = list("beep","beep","beep","beep","beep","boop","boop","boop","bop","bop","dee","dee","doo","doo","hiss","hss","buzz","buzz","bzz","ksssh","keey","wurr","wahh","tzzz") space_chance = 10 default_priority = 90 diff --git a/code/modules/language/swarmer.dm b/code/modules/language/swarmer.dm index ea58775a08..e3b7826706 100644 --- a/code/modules/language/swarmer.dm +++ b/code/modules/language/swarmer.dm @@ -6,7 +6,7 @@ exclaim_verb = "tones loudly" spans = list(SPAN_ROBOT) key = "s" - flags_1 = NO_STUTTER + flags = NO_STUTTER space_chance = 100 sentence_chance = 0 default_priority = 60 diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 9cbd04bf42..b7673a9640 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -144,8 +144,8 @@ /obj/structure/bookcase/manuals/medical name = "medical manuals bookcase" -/obj/structure/bookcase/manuals/medical/New() - ..() +/obj/structure/bookcase/manuals/medical/Initialize() + . = ..() new /obj/item/book/manual/medical_cloning(src) update_icon() @@ -153,8 +153,8 @@ /obj/structure/bookcase/manuals/engineering name = "engineering manuals bookcase" -/obj/structure/bookcase/manuals/engineering/New() - ..() +/obj/structure/bookcase/manuals/engineering/Initialize() + . = ..() new /obj/item/book/manual/wiki/engineering_construction(src) new /obj/item/book/manual/engineering_particle_accelerator(src) new /obj/item/book/manual/wiki/engineering_hacking(src) @@ -167,8 +167,8 @@ /obj/structure/bookcase/manuals/research_and_development name = "\improper R&D manuals bookcase" -/obj/structure/bookcase/manuals/research_and_development/New() - ..() +/obj/structure/bookcase/manuals/research_and_development/Initialize() + . = ..() new /obj/item/book/manual/research_and_development(src) update_icon() diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index cee4665f07..fd75ba4351 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -142,7 +142,7 @@ hidden_message = newmessage creator_name = user.real_name creator_key = user.ckey - realdate = world.timeofday + realdate = world.realtime map = SSmapping.config.map_name update_icon() diff --git a/code/modules/mapping/dmm_suite.dm b/code/modules/mapping/dmm_suite.dm index d272a10673..c4ceec33ee 100644 --- a/code/modules/mapping/dmm_suite.dm +++ b/code/modules/mapping/dmm_suite.dm @@ -27,7 +27,7 @@ dmm_suite{ write_map(), which accepts three arguments: - A turf representing one corner of a three dimensional grid (Required). - Another turf representing the other corner of the same grid (Required). - - Any, or a combination, of several bit flags_1 (Optional, see documentation). + - Any, or a combination, of several bit flags (Optional, see documentation). The order in which the turfs are supplied does not matter, the /dmm_writer will determine the grid containing both, in much the same way as DM's block() function. diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index dfc602e725..89d9d07a14 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -1,3 +1,5 @@ + + /proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins) if(!z_levels || !z_levels.len) WARNING("No Z levels provided - Not generating ruins") diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 6c445c9ceb..5e7265f043 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -11,8 +11,8 @@ var/codelen = 4 tamperproof = 90 -/obj/structure/closet/crate/secure/loot/New() - ..() +/obj/structure/closet/crate/secure/loot/Initialize() + . = ..() var/list/digits = list("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") code = "" for(var/i = 0, i < codelen, i++) diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index c1d90ed0c0..df20ce5921 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -1,9 +1,10 @@ ///Mining Base//// +#define ZONE_SET 0 #define BAD_ZLEVEL 1 #define BAD_AREA 2 #define BAD_COORDS 3 -#define ZONE_SET 4 +#define BAD_TURF 4 /area/shuttle/auxillary_base name = "Auxillary Base" @@ -134,7 +135,6 @@ interface with the mining shuttle at the landing site if a mobile beacon is also possible_destinations = "mining_home;mining_away;landing_zone_dock;mining_public" /obj/machinery/computer/auxillary_base/proc/set_landing_zone(turf/T, mob/user, var/no_restrictions) - var/obj/docking_port/mobile/auxillary_base/base_dock = locate(/obj/docking_port/mobile/auxillary_base) in SSshuttle.mobile if(!base_dock) //Not all maps have an Aux base. This object is useless in that case. to_chat(user, "This station is not equipped with an auxillary base. Please contact your Nanotrasen contractor.") @@ -148,13 +148,18 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(!is_mining_level(T.z)) return BAD_ZLEVEL - var/colony_radius = max(base_dock.width, base_dock.height)*0.5 - if(T.x - colony_radius < 1 || T.x + colony_radius >= world.maxx || T.y - colony_radius < 1 || T.y + colony_radius >= world.maxx) - return BAD_COORDS //Avoid dropping the base too close to map boundaries, as it results in parts of it being left in space - var/list/area_counter = get_areas_in_range(colony_radius, T) - if(area_counter.len > 1) //Avoid smashing ruins unless you are inside a really big one - return BAD_AREA + var/colony_radius = CEILING(max(base_dock.width, base_dock.height)*0.5, 1) + var/list/colony_turfs = block(locate(T.x - colony_radius, T.y - colony_radius, T.z), locate(T.x + colony_radius, T.y + colony_radius, T.z)) + for(var/i in 1 to colony_turfs.len) + CHECK_TICK + var/turf/place = colony_turfs[i] + if(!place) + return BAD_COORDS + if(!istype(place.loc, /area/lavaland/surface)) + return BAD_AREA + if(disallowed_turf_types[place.type]) + return BAD_TURF var/area/A = get_area(T) @@ -214,14 +219,16 @@ interface with the mining shuttle at the landing site if a mobile beacon is also return switch(AB.set_landing_zone(T, user, no_restrictions)) + if(ZONE_SET) + qdel(src) if(BAD_ZLEVEL) to_chat(user, "This uplink can only be used in a designed mining zone.") if(BAD_AREA) to_chat(user, "Unable to acquire a targeting lock. Find an area clear of stuctures or entirely within one.") if(BAD_COORDS) to_chat(user, "Location is too close to the edge of the station's scanning range. Move several paces away and try again.") - if(ZONE_SET) - qdel(src) + if(BAD_TURF) + to_chat(user, "The landing zone contains turfs unsuitable for a base.") /obj/item/device/assault_pod/mining/unrestricted name = "omni-locational landing field designator" @@ -354,7 +361,8 @@ obj/docking_port/stationary/public_mining_dock /obj/structure/mining_shuttle_beacon/attack_robot(mob/user) return attack_hand(user) //So borgies can help +#undef ZONE_SET #undef BAD_ZLEVEL #undef BAD_AREA #undef BAD_COORDS -#undef ZONE_SET +#undef BAD_TURF diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index f2cdefa9a4..729665034e 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -43,8 +43,8 @@ ..() w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL -/obj/item/clothing/mask/gas/explorer/folded/New() - ..() +/obj/item/clothing/mask/gas/explorer/folded/Initialize() + . = ..() adjustmask() /obj/item/clothing/suit/space/hostile_environment diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 52160303cc..ec3dda28a0 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -71,7 +71,7 @@ plane = FULLSCREEN_PLANE layer = FLASH_LAYER icon = 'icons/effects/ore_visuals.dmi' - appearance_flags = 0 //to avoid having TILE_BOUND in the flags_1, so that the 480x480 icon states let you see it no matter where you are + appearance_flags = 0 //to avoid having TILE_BOUND in the flags, so that the 480x480 icon states let you see it no matter where you are duration = 35 pixel_x = -224 pixel_y = -224 diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm index f2c782c279..60983aa25a 100644 --- a/code/modules/mining/laborcamp/laborshuttle.dm +++ b/code/modules/mining/laborcamp/laborshuttle.dm @@ -1,27 +1,27 @@ -/obj/machinery/computer/shuttle/labor - name = "labor shuttle console" - desc = "Used to call and send the labor camp shuttle." - circuit = /obj/item/circuitboard/computer/labor_shuttle - shuttleId = "laborcamp" - possible_destinations = "laborcamp_home;laborcamp_away" +/obj/machinery/computer/shuttle/labor + name = "labor shuttle console" + desc = "Used to call and send the labor camp shuttle." + circuit = /obj/item/circuitboard/computer/labor_shuttle + shuttleId = "laborcamp" + possible_destinations = "laborcamp_home;laborcamp_away" req_access = list(ACCESS_BRIG) - - -/obj/machinery/computer/shuttle/labor/one_way - name = "prisoner shuttle console" - desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." - possible_destinations = "laborcamp_away" - circuit = /obj/item/circuitboard/computer/labor_shuttle/one_way - req_access = list( ) - -/obj/machinery/computer/shuttle/labor/one_way/Topic(href, href_list) - if(href_list["move"]) - var/obj/docking_port/mobile/M = SSshuttle.getShuttle("laborcamp") - if(!M) - to_chat(usr, "Cannot locate shuttle!") - return 0 - var/obj/docking_port/stationary/S = M.get_docked() - if(S && S.name == "laborcamp_away") - to_chat(usr, "Shuttle is already at the outpost!") - return 0 + + +/obj/machinery/computer/shuttle/labor/one_way + name = "prisoner shuttle console" + desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." + possible_destinations = "laborcamp_away" + circuit = /obj/item/circuitboard/computer/labor_shuttle/one_way + req_access = list( ) + +/obj/machinery/computer/shuttle/labor/one_way/Topic(href, href_list) + if(href_list["move"]) + var/obj/docking_port/mobile/M = SSshuttle.getShuttle("laborcamp") + if(!M) + to_chat(usr, "Cannot locate shuttle!") + return 0 + var/obj/docking_port/stationary/S = M.get_docked() + if(S && S.name == "laborcamp_away") + to_chat(usr, "Shuttle is already at the outpost!") + return 0 ..() \ No newline at end of file diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 12c9bfb30e..7b38bc4cb5 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -102,8 +102,8 @@ to_chat(usr, "No permission to dock could be granted.") else if(!emagged) - Radio.set_frequency(GLOB.SEC_FREQ) - Radio.talk_into(src, "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval.", GLOB.SEC_FREQ, get_spans(), get_default_language()) + Radio.set_frequency(FREQ_SECURITY) + Radio.talk_into(src, "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY, get_spans(), get_default_language()) to_chat(usr, "Shuttle received message and will be sent shortly.") /obj/machinery/mineral/labor_claim_console/proc/check_auth() diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 6ecdc91635..340ba16373 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -20,8 +20,8 @@ var/regrowth_time_low = 4800 var/regrowth_time_high = 8400 -/obj/structure/flora/ash/New() - ..() +/obj/structure/flora/ash/Initialize() + . = ..() base_icon = "[icon_state][rand(1, 4)]" icon_state = base_icon if(prob(15)) @@ -153,8 +153,8 @@ max_integrity = 100 seed = /obj/item/seeds/lavaland/polypore -/obj/item/reagent_containers/food/snacks/grown/ash_flora/New() - ..() +/obj/item/reagent_containers/food/snacks/grown/ash_flora/Initialize() + . = ..() pixel_x = rand(-4, 4) pixel_y = rand(-4, 4) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index fe6cd8239d..60577ea7a9 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -107,6 +107,7 @@ /datum/design/unique_modkit category = list("Mining Designs", "Cyborg Upgrade Modules") //can't be normally obtained build_type = PROTOLATHE | MECHFAB + departmental_flags = DEPARTMENTAL_FLAG_CARGO /datum/design/unique_modkit/offensive_turf_aoe name = "Kinetic Accelerator Offensive Mining Explosion Mod" diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 6896a1a805..c22ba5d757 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -29,4 +29,4 @@ limit++ if (limit>=10) return - CHECK_TICK + CHECK_TICK \ No newline at end of file diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 1e298604eb..c872756872 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -276,8 +276,8 @@ name = "mining conscription kit" desc = "A kit containing everything a crewmember needs to support a shaft miner in the field." -/obj/item/storage/backpack/duffelbag/mining_conscript/New() - ..() +/obj/item/storage/backpack/duffelbag/mining_conscript/Initialize() + . = ..() new /obj/item/pickaxe/mini(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/device/t_scanner/adv_mining_scanner/lesser(src) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 6d1ba30277..ba4850eb47 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -8,8 +8,8 @@ var/set_luminosity = 8 var/set_cap = 0 -/obj/effect/light_emitter/New() - ..() +/obj/effect/light_emitter/Initialize() + . = ..() set_light(set_luminosity, set_cap) /obj/effect/light_emitter/singularity_pull() @@ -73,7 +73,6 @@ possible_destinations = "mining_home;mining_away;landing_zone_dock;mining_public" no_destination_swap = 1 var/global/list/dumb_rev_heads = list() - req_access = list(ACCESS_MINING) // should slow the ashwalkers down. /obj/machinery/computer/shuttle/mining/attack_hand(mob/user) if(is_station_level(user.z) && user.mind && is_head_revolutionary(user) && !(user.mind in dumb_rev_heads)) @@ -87,4 +86,4 @@ /obj/structure/closet/crate/miningcar desc = "A mining car. This one doesn't work on rails, but has to be dragged." name = "Mining car (not for rails)" - icon_state = "miningcar" \ No newline at end of file + icon_state = "miningcar" diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index f13079861a..befaef31a2 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -14,8 +14,8 @@ can_hold = list(/obj/item/coin, /obj/item/stack/spacecash) -/obj/item/storage/bag/money/vault/New() - ..() +/obj/item/storage/bag/money/vault/Initialize() + . = ..() new /obj/item/coin/silver(src) new /obj/item/coin/silver(src) new /obj/item/coin/silver(src) diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 1142d2d6cb..59e8911659 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -2,6 +2,9 @@ INITIALIZE_IMMEDIATE(/mob/dead) +/mob/dead + sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF + /mob/dead/Initialize() if(initialized) stack_trace("Warning: [src]([type]) initialized multiple times!") @@ -11,8 +14,9 @@ INITIALIZE_IMMEDIATE(/mob/dead) prepare_huds() - if(CONFIG_GET(string/cross_server_address)) + if(length(CONFIG_GET(keyed_string_list/cross_server))) verbs += /mob/dead/proc/server_hop + set_focus(src) return INITIALIZE_HINT_NORMAL /mob/dead/dust() //ghosts can't be vaporised. @@ -45,26 +49,46 @@ INITIALIZE_IMMEDIATE(/mob/dead) else stat(null, "Time To Start: SOON") + stat(null, "Players: [SSticker.totalPlayers]") + if(client.holder) + stat(null, "Players Ready: [SSticker.totalPlayersReady]") + /mob/dead/proc/server_hop() set category = "OOC" set name = "Server Hop!" set desc= "Jump to the other server" if(notransform) return - var/csa = CONFIG_GET(string/cross_server_address) - if(csa) - verbs -= /mob/dead/proc/server_hop - to_chat(src, "Server Hop has been disabled.") + var/list/csa = CONFIG_GET(keyed_string_list/cross_server) + var/pick + switch(csa.len) + if(0) + verbs -= /mob/dead/proc/server_hop + to_chat(src, "Server Hop has been disabled.") + if(1) + pick = csa[0] + else + pick = input(src, "Pick a server to jump to", "Server Hop") as null|anything in csa + + if(!pick) return - if (alert(src, "Jump to server running at [csa]?", "Server Hop", "Yes", "No") != "Yes") - return 0 - if (client && csa) - to_chat(src, "Sending you to [csa].") - new /obj/screen/splash(client) - notransform = TRUE - sleep(29) //let the animation play - notransform = FALSE - winset(src, null, "command=.options") //other wise the user never knows if byond is downloading resources - client << link(csa + "?server_hop=[key]") - else - to_chat(src, "There is no other server configured!") + + var/addr = csa[pick] + + if(alert(src, "Jump to server [pick] ([addr])?", "Server Hop", "Yes", "No") != "Yes") + return + + var/client/C = client + to_chat(C, "Sending you to [pick].") + new /obj/screen/splash(C) + + notransform = TRUE + sleep(29) //let the animation play + notransform = FALSE + + if(!C) + return + + winset(src, null, "command=.options") //other wise the user never knows if byond is downloading resources + + C << link("[addr]?server_hop=[key]") diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 573183df96..0ee1e91d3a 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -73,26 +73,6 @@ popup.open(0) return -/mob/dead/new_player/Stat() - ..() - - if(statpanel("Lobby")) - stat("Game Mode:", (SSticker.hide_mode) ? "Secret" : "[GLOB.master_mode]") - stat("Map:", SSmapping.config.map_name) - - if(SSticker.current_state == GAME_STATE_PREGAME) - var/time_remaining = SSticker.GetTimeLeft() - if(time_remaining > 0) - stat("Time To Start:", "[round(time_remaining/10)]s") - else if(time_remaining == -10) - stat("Time To Start:", "DELAYED") - else - stat("Time To Start:", "SOON") - - stat("Players:", "[SSticker.totalPlayers]") - if(client.holder) - stat("Players Ready:", "[SSticker.totalPlayersReady]") - /mob/dead/new_player/Topic(href, href_list[]) if(src != usr) @@ -317,15 +297,13 @@ return 0 if(job.required_playtime_remaining(client)) return 0 - if(CONFIG_GET(flag/enforce_human_authority) && !client.prefs.pref_species.qualifies_for_rank(rank, client.prefs.features)) - return 0 return 1 /mob/dead/new_player/proc/AttemptLateSpawn(rank) if(!IsJobAvailable(rank)) alert(src, "[rank] is not available. Please try another.") - return 0 + return FALSE if(SSticker.late_join_disabled) alert(src, "An administrator has disabled late join spawning.") diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index f362f09a65..c9710a5457 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -1,4 +1,5 @@ -//The mob should have a gender you want before running this proc. Will run fine without H + + //The mob should have a gender you want before running this proc. Will run fine without H /datum/preferences/proc/random_character(gender_override) if(gender_override) gender = gender_override @@ -19,7 +20,7 @@ features = random_features() age = rand(AGE_MIN,AGE_MAX) -/datum/preferences/proc/update_preview_icon(nude = 0) +/datum/preferences/proc/update_preview_icon(nude = FALSE) // Silicons only need a very basic preview since there is no customization for them. if(job_engsec_high) switch(job_engsec_high) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 8bf80eccb8..cc05486895 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -13,7 +13,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) density = FALSE canmove = 0 anchored = TRUE // don't get pushed around - sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF see_invisible = SEE_INVISIBLE_OBSERVER see_in_dark = 100 invisibility = INVISIBILITY_OBSERVER @@ -136,13 +135,13 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) /mob/dead/observer/narsie_act() var/old_color = color color = "#960000" - animate(src, color = old_color, time = 10, flags_1 = ANIMATION_PARALLEL) + animate(src, color = old_color, time = 10, flags = ANIMATION_PARALLEL) addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 10) /mob/dead/observer/ratvar_act() var/old_color = color color = "#FAE48C" - animate(src, color = old_color, time = 10, flags_1 = ANIMATION_PARALLEL) + animate(src, color = old_color, time = 10, flags = ANIMATION_PARALLEL) addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 10) /mob/dead/observer/Destroy() @@ -767,8 +766,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp //Istype so we filter out points of interest that are not mobs if(client && mob_eye && istype(mob_eye)) client.eye = mob_eye - client.screen = list() if(mob_eye.hud_used) + client.screen = list() LAZYINITLIST(mob_eye.observers) mob_eye.observers |= src mob_eye.hud_used.show_hud(mob_eye.hud_used.hud_version, src) diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index ad64c53fc7..c8cf1a5f1b 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -1,25 +1,28 @@ -/mob/dead/observer/say(message) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - if (!message) - return - +/mob/dead/observer/say(message) + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + + if (!message) + return + log_talk(src,"Ghost/[src.key] : [message]", LOGSAY) - - . = src.say_dead(message) - -/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) - var/atom/movable/to_follow = speaker - if(radio_freq) - var/atom/movable/virtualspeaker/V = speaker - - if(isAI(V.source)) - var/mob/living/silicon/ai/S = V.source - to_follow = S.eyeobj - else - to_follow = V.source - var/link = FOLLOW_LINK(src, to_follow) - // Recompose the message, because it's scrambled by default - message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode) - to_chat(src, "[link] [message]") - + + if(check_emote(message)) + return + + . = say_dead(message) + +/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + var/atom/movable/to_follow = speaker + if(radio_freq) + var/atom/movable/virtualspeaker/V = speaker + + if(isAI(V.source)) + var/mob/living/silicon/ai/S = V.source + to_follow = S.eyeobj + else + to_follow = V.source + var/link = FOLLOW_LINK(src, to_follow) + // Recompose the message, because it's scrambled by default + message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode) + to_chat(src, "[link] [message]") + diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 486a918c06..cc89f700dc 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -205,8 +205,26 @@ /mob/proc/put_in_hands(obj/item/I, del_on_fail = FALSE) if(!I) return FALSE + + // If the item is a stack and we're already holding a stack then merge + if (istype(I, /obj/item/stack)) + var/obj/item/stack/I_stack = I + var/obj/item/stack/active_stack = get_active_held_item() + + if (istype(active_stack) && istype(I_stack, active_stack.merge_type)) + if (I_stack.merge(active_stack)) + to_chat(usr, "Your [active_stack.name] stack now contains [active_stack.get_amount()] [active_stack.singular_name]\s.") + return TRUE + else + var/obj/item/stack/inactive_stack = get_inactive_held_item() + if (istype(inactive_stack) && istype(I_stack, inactive_stack.merge_type)) + if (I_stack.merge(inactive_stack)) + to_chat(usr, "Your [inactive_stack.name] stack now contains [inactive_stack.get_amount()] [inactive_stack.singular_name]\s.") + return TRUE + if(put_in_active_hand(I)) return TRUE + var/hand = get_empty_held_index_for_side("l") if(!hand) hand = get_empty_held_index_for_side("r") diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 089f536958..e4fed627f4 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -30,7 +30,6 @@ unique_name = 1 var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") - devourable = TRUE /mob/living/carbon/alien/Initialize() verbs += /mob/living/proc/mob_sleep diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index b0f76df80d..b55abb11f0 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -1,126 +1,126 @@ - -/mob/living/carbon/alien/get_eye_protection() - return ..() + 2 //potential cyber implants + natural eye protection - -/mob/living/carbon/alien/get_ear_protection() - return 2 //no ears - -/mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush) + +/mob/living/carbon/alien/get_eye_protection() + return ..() + 2 //potential cyber implants + natural eye protection + +/mob/living/carbon/alien/get_ear_protection() + return 2 //no ears + +/mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush) ..(AM, skipcatch = TRUE, hitpush = FALSE) - - -/*Code for aliens attacking aliens. Because aliens act on a hivemind, I don't see them as very aggressive with each other. -As such, they can either help or harm other aliens. Help works like the human help command while harm is a simple nibble. -In all, this is a lot like the monkey code. /N -*/ -/mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M) - if(isturf(loc) && istype(loc.loc, /area/start)) - to_chat(M, "No attacking people at spawn, you jackass.") - return - - switch(M.a_intent) - - if ("help") - resting = 0 - AdjustStun(-60) - AdjustKnockdown(-60) - AdjustUnconscious(-60) - AdjustSleeping(-100) - visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") - - if ("grab") - grabbedby(M) - - else - if(health > 0) - M.do_attack_animation(src, ATTACK_EFFECT_BITE) - playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) - visible_message("[M.name] bites [src]!", \ - "[M.name] bites [src]!", null, COMBAT_MESSAGE_RANGE) - adjustBruteLoss(1) - add_logs(M, src, "attacked") - updatehealth() - else - to_chat(M, "[name] is too injured for that.") - - -/mob/living/carbon/alien/attack_larva(mob/living/carbon/alien/larva/L) - return attack_alien(L) - - -/mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M) - if(..()) //to allow surgery to return properly. - return 0 - - switch(M.a_intent) - if("help") - help_shake_act(M) - if("grab") - grabbedby(M) - if ("harm") - M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - return 1 - if("disarm") - M.do_attack_animation(src, ATTACK_EFFECT_DISARM) - return 1 - return 0 - - -/mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M) - if(..()) - if (stat != DEAD) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(rand(1, 3), BRUTE, affecting) - - -/mob/living/carbon/alien/attack_animal(mob/living/simple_animal/M) - . = ..() - if(.) - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - switch(M.melee_damage_type) - if(BRUTE) - adjustBruteLoss(damage) - if(BURN) - adjustFireLoss(damage) - if(TOX) - adjustToxLoss(damage) - if(OXY) - adjustOxyLoss(damage) - if(CLONE) - adjustCloneLoss(damage) - if(STAMINA) - adjustStaminaLoss(damage) - -/mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack - var/damage = rand(5, 35) - if(M.is_adult) - damage = rand(10, 40) - adjustBruteLoss(damage) - add_logs(M, src, "attacked") - updatehealth() - -/mob/living/carbon/alien/ex_act(severity, target, origin) - if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src)) - return - ..() - switch (severity) - if (1) - gib() - return - - if (2) - take_overall_damage(60, 60) - adjustEarDamage(30,120) - - if(3) - take_overall_damage(30,0) - if(prob(50)) - Unconscious(20) - adjustEarDamage(15,60) - -/mob/living/carbon/alien/soundbang_act(intensity = 1, stun_pwr = 20, damage_pwr = 5, deafen_pwr = 15) - return 0 - -/mob/living/carbon/alien/acid_act(acidpwr, acid_volume) - return 0//aliens are immune to acid. + + +/*Code for aliens attacking aliens. Because aliens act on a hivemind, I don't see them as very aggressive with each other. +As such, they can either help or harm other aliens. Help works like the human help command while harm is a simple nibble. +In all, this is a lot like the monkey code. /N +*/ +/mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M) + if(isturf(loc) && istype(loc.loc, /area/start)) + to_chat(M, "No attacking people at spawn, you jackass.") + return + + switch(M.a_intent) + + if ("help") + resting = 0 + AdjustStun(-60) + AdjustKnockdown(-60) + AdjustUnconscious(-60) + AdjustSleeping(-100) + visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") + + if ("grab") + grabbedby(M) + + else + if(health > 0) + M.do_attack_animation(src, ATTACK_EFFECT_BITE) + playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) + visible_message("[M.name] bites [src]!", \ + "[M.name] bites [src]!", null, COMBAT_MESSAGE_RANGE) + adjustBruteLoss(1) + add_logs(M, src, "attacked") + updatehealth() + else + to_chat(M, "[name] is too injured for that.") + + +/mob/living/carbon/alien/attack_larva(mob/living/carbon/alien/larva/L) + return attack_alien(L) + + +/mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M) + if(..()) //to allow surgery to return properly. + return 0 + + switch(M.a_intent) + if("help") + help_shake_act(M) + if("grab") + grabbedby(M) + if ("harm") + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + return 1 + if("disarm") + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) + return 1 + return 0 + + +/mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M) + if(..()) + if (stat != DEAD) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(rand(1, 3), BRUTE, affecting) + + +/mob/living/carbon/alien/attack_animal(mob/living/simple_animal/M) + . = ..() + if(.) + var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) + switch(M.melee_damage_type) + if(BRUTE) + adjustBruteLoss(damage) + if(BURN) + adjustFireLoss(damage) + if(TOX) + adjustToxLoss(damage) + if(OXY) + adjustOxyLoss(damage) + if(CLONE) + adjustCloneLoss(damage) + if(STAMINA) + adjustStaminaLoss(damage) + +/mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M) + if(..()) //successful slime attack + var/damage = rand(5, 35) + if(M.is_adult) + damage = rand(10, 40) + adjustBruteLoss(damage) + add_logs(M, src, "attacked") + updatehealth() + +/mob/living/carbon/alien/ex_act(severity, target, origin) + if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src)) + return + ..() + switch (severity) + if (1) + gib() + return + + if (2) + take_overall_damage(60, 60) + adjustEarDamage(30,120) + + if(3) + take_overall_damage(30,0) + if(prob(50)) + Unconscious(20) + adjustEarDamage(15,60) + +/mob/living/carbon/alien/soundbang_act(intensity = 1, stun_pwr = 20, damage_pwr = 5, deafen_pwr = 15) + return 0 + +/mob/living/carbon/alien/acid_act(acidpwr, acid_volume) + return 0//aliens are immune to acid. diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index e93fed311c..2462242e25 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -11,7 +11,7 @@ ..() /mob/living/carbon/alien/humanoid/hunter/movement_delay() - . = -1 //hunters are sanic + . = -1 //hunters are sanic . += ..() //but they still need to slow down on stun diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm index 404d285b25..f8cf430d74 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm @@ -48,4 +48,4 @@ return 1 else to_chat(user, "We already have an alive queen.") - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index c0577c0d61..375ef2318b 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -18,4 +18,4 @@ /mob/living/carbon/alien/humanoid/sentinel/movement_delay() - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm index 5d85ace4a6..c6c675ead9 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/death.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm @@ -20,4 +20,4 @@ if(istype(node)) // just in case someone would ever add a diffirent node to hivenode slot node.queen_death() - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index fc759ec827..24dd3a7965 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -41,7 +41,7 @@ var/list/dat = list() dat += {"
    - [name] + [name]
    "} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 101f1495e2..2e2d1f4188 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -65,4 +65,4 @@ /mob/living/carbon/alien/larva/stripPanelEquip(obj/item/what, mob/who) to_chat(src, "You don't have the dexterity to do this!") - return \ No newline at end of file + return diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 97d0509dfb..de543651eb 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -2,12 +2,12 @@ icon_state = "xgibmid2" var/list/alien_powers = list() -/obj/item/organ/alien/New() +/obj/item/organ/alien/Initialize() + . = ..() for(var/A in alien_powers) if(ispath(A)) alien_powers -= A alien_powers += new A(src) - ..() /obj/item/organ/alien/Insert(mob/living/carbon/M, special = 0) ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 2bca491c40..59b0fcf55f 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -8,7 +8,7 @@ GLOB.carbon_list += src /mob/living/carbon/Destroy() -//This must be done first, so the mob ghosts correctly before DNA etc is nulled + //This must be done first, so the mob ghosts correctly before DNA etc is nulled . = ..() QDEL_LIST(internal_organs) @@ -365,16 +365,9 @@ to_chat(src, "You successfully [cuff_break ? "break" : "remove"] [I].") if(cuff_break) + . = !((I == handcuffed) || (I == legcuffed)) qdel(I) - if(I == handcuffed) - handcuffed = null - update_handcuffed() - return - else if(I == legcuffed) - legcuffed = null - update_inv_legcuffed() - return - return TRUE + return else if(I == handcuffed) @@ -518,7 +511,7 @@ health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute update_stat() if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD) && stat == DEAD ) - become_husk() + become_husk("burn") med_hud_set_health() /mob/living/carbon/update_sight() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 90502eae40..60ab5a71e9 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -78,7 +78,6 @@ send_item_attack_message(I, user, affecting.name) if(I.force) apply_damage(I.force, I.damtype, affecting) - damage_clothes(I.force, I.damtype, "melee", affecting.body_zone) if(I.damtype == BRUTE && affecting.status == BODYPART_ORGANIC) if(prob(33)) I.add_mob_blood(src) @@ -308,9 +307,13 @@ if(prob(eyes.eye_damage - 20)) if(!has_disability(DISABILITY_NEARSIGHT)) to_chat(src, "Your eyes start to burn badly!") + become_nearsighted(EYE_DAMAGE) + else if(prob(eyes.eye_damage - 25)) if(!has_disability(DISABILITY_BLIND)) to_chat(src, "You can't see anything!") + become_blind(EYE_DAMAGE) + else to_chat(src, "Your eyes are really starting to hurt. This can't be good for you!") if(has_bane(BANE_LIGHT)) diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index e2555d4a8b..37b5539d33 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -19,7 +19,7 @@ if(stat == SOFT_CRIT) . += SOFTCRIT_ADD_SLOWDOWN - + /mob/living/carbon/slip(knockdown_amount, obj/O, lube) if(movement_type & FLYING) return 0 diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 991fd7a94d..752a9d6471 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -151,7 +151,7 @@ var/mob/living/carbon/human/H = user if(H.dna && H.dna.species && (H.dna.features["wings"] != "None")) return TRUE - + /mob/living/carbon/human/proc/OpenWings() if(!dna || !dna.species) return diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 4a2ac98dbf..052f493d1d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -198,14 +198,13 @@ msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n" else msg += "[t_He] [t_is] quite chubby.\n" - switch(disgust) if(DISGUST_LEVEL_GROSS to DISGUST_LEVEL_VERYGROSS) - msg += "[t_He] looks a bit grossed out.\n" + msg += "[t_He] look[p_s()] a bit grossed out.\n" if(DISGUST_LEVEL_VERYGROSS to DISGUST_LEVEL_DISGUSTED) - msg += "[t_He] looks really grossed out.\n" + msg += "[t_He] look[p_s()] really grossed out.\n" if(DISGUST_LEVEL_DISGUSTED to INFINITY) - msg += "[t_He] looks disgusted.\n" + msg += "[t_He] look[p_s()] extremely disgusted.\n" if(blood_volume < BLOOD_VOLUME_SAFE) msg += "[t_He] [t_has] pale skin.\n" @@ -310,6 +309,7 @@ R = find_record("name", perpname, GLOB.data_core.security) if(R) criminal = R.fields["criminal"] + msg += "Criminal status: \[[criminal]\]\n" msg += "Security record: \[View\] " msg += "\[Add crime\] " diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 926d8e2e77..b3ae66d0c3 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -264,7 +264,7 @@ // Display a warning if the user mocks up to_chat(src, "You feel your [pocket_side] pocket being fumbled with!") - ..() + ..() ///////HUDs/////// @@ -577,8 +577,8 @@ threatcount += 2 //Check for dresscode violations - if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/syndi) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi)) - threatcount += 6 + 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 in list("human" , "lizard", "mammal", "avian", "aquatic", "insect"))) @@ -590,7 +590,7 @@ //Agent cards lower threatlevel. if(istype(idcard, /obj/item/card/id/syndicate)) - threatcount -= 2 + threatcount -= 5 return threatcount @@ -847,7 +847,8 @@ return TRUE /mob/living/carbon/human/update_gravity(has_gravity,override = 0) - override = dna.species.override_float + if(dna && dna.species) //prevents a runtime while a human is being monkeyfied + override = dna.species.override_float ..() /mob/living/carbon/human/vomit(lost_nutrition = 10, blood = 0, stun = 1, distance = 0, message = 1, toxic = 0) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7b0f50041d..b216424dbb 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -44,7 +44,10 @@ if(mind.martial_art && mind.martial_art.deflection_chance) //Some martial arts users can deflect projectiles! if(prob(mind.martial_art.deflection_chance)) if(!lying && dna && !dna.check_mutation(HULK)) //But only if they're not lying down, and hulks can't do it - visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons!", "You deflect the projectile!") + if(mind.martial_art.deflection_chance >= 100) //if they can NEVER be hit, lets clue sec in ;) + visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons!", "You deflect the projectile!") + else + visible_message("[src] deflects the projectile!", "You deflect the projectile!") playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1) return 0 @@ -180,7 +183,6 @@ visible_message("[message]", \ "[message]") adjustBruteLoss(15) - damage_clothes(15, BRUTE, "melee") return 1 /mob/living/carbon/human/attack_hand(mob/user) @@ -200,7 +202,8 @@ return 0 if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stunned instead. - if(dropItemToGround(get_active_held_item())) + var/obj/item/I = get_active_held_item() + if(I && dropItemToGround(I)) playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) visible_message("[M] disarmed [src]!", \ "[M] disarmed [src]!") @@ -221,7 +224,6 @@ return 0 if(stat != DEAD) apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) return 1 /mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M) @@ -251,10 +253,10 @@ if(!dismembering_strike(M, M.zone_selected)) //Dismemberment successful return 1 apply_damage(damage, BRUTE, affecting, armor_block) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stun instead. - if(dropItemToGround(get_active_held_item())) + var/obj/item/I = get_active_held_item() + if(I && dropItemToGround(I)) playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) visible_message("[M] disarmed [src]!", \ "[M] disarmed [src]!") @@ -279,7 +281,6 @@ affecting = get_bodypart("chest") var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M) @@ -296,7 +297,6 @@ affecting = get_bodypart("chest") var/armor = run_armor_check(affecting, "melee", armour_penetration = M.armour_penetration) apply_damage(damage, M.melee_damage_type, affecting, armor) - damage_clothes(damage, M.melee_damage_type, "melee", affecting.body_zone) /mob/living/carbon/human/attack_slime(mob/living/simple_animal/slime/M) @@ -317,7 +317,6 @@ affecting = get_bodypart("chest") var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) @@ -335,11 +334,9 @@ Unconscious(20) update |= temp.receive_damage(dmg, 0) playsound(src, 'sound/weapons/punch4.ogg', 50, 1) - damage_clothes(dmg, BRUTE, "melee", temp.body_zone) if("fire") update |= temp.receive_damage(0, dmg) playsound(src, 'sound/items/welder.ogg', 50, 1) - damage_clothes(dmg, BURN, "melee", temp.body_zone) if("tox") M.mech_toxin_damage(src) else @@ -374,6 +371,9 @@ throw_at(throw_target, 200, 4) damage_clothes(400 - bomb_armor, BRUTE, "bomb") else + for(var/I in contents) + var/atom/A = I + A.ex_act(severity) gib() return diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 7f1d9560e0..46212698b2 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -91,17 +91,6 @@ return wear_id.GetID() -/mob/living/carbon/human/abiotic(full_body = 0) - var/abiotic_hands = FALSE - for(var/obj/item/I in held_items) - if(!(I.flags_1 & NODROP_1)) - abiotic_hands = TRUE - break - if(full_body && abiotic_hands && ((back && !(back.flags_1&NODROP_1)) || (wear_mask && !(wear_mask.flags_1&NODROP_1)) || (head && !(head.flags_1&NODROP_1)) || (shoes && !(shoes.flags_1&NODROP_1)) || (w_uniform && !(w_uniform.flags_1&NODROP_1)) || (wear_suit && !(wear_suit.flags_1&NODROP_1)) || (glasses && !(glasses.flags_1&NODROP_1)) || (ears && !(ears.flags_1&NODROP_1)) || (gloves && !(gloves.flags_1&NODROP_1)) ) ) - return TRUE - return abiotic_hands - - /mob/living/carbon/human/IsAdvancedToolUser() if(has_disability(DISABILITY_MONKEYLIKE)) return FALSE diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 9480445ceb..ae78e1e585 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -23,7 +23,7 @@ . = 1 /mob/living/carbon/human/mob_negates_gravity() - return ((shoes && shoes.negates_gravity()) || dna.species.negates_gravity(src)) + return ((shoes && shoes.negates_gravity()) || (dna.species.negates_gravity(src))) /mob/living/carbon/human/Move(NewLoc, direct) . = ..() diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 9d4b7a8420..426bc39907 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -1622,4 +1622,4 @@ TRAITS |= TRAIT_ROBUST TRAITS |= TRAIT_SMART faction += "bot_power" - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index b9b89ce991..5254c6aa0e 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -32,8 +32,7 @@ handle_arousal() if(..()) //not dead - for(var/datum/mutation/human/HM in dna.mutations) - HM.on_life(src) + handle_active_genes() if(stat != DEAD) //heart attack stuff @@ -97,19 +96,18 @@ failed_last_breath = 1 - if(dna && dna.species) - var/datum/species/S = dna.species + var/datum/species/S = dna.species - if(S.breathid == "o2") - throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy) - else if(S.breathid == "tox") - throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox) - else if(S.breathid == "co2") - throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2) - else if(S.breathid == "n2") - throw_alert("not_enough_nitro", /obj/screen/alert/not_enough_nitro) + if(S.breathid == "o2") + throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy) + else if(S.breathid == "tox") + throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox) + else if(S.breathid == "co2") + throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2) + else if(S.breathid == "n2") + throw_alert("not_enough_nitro", /obj/screen/alert/not_enough_nitro) - return 0 + return FALSE else if(istype(L, /obj/item/organ/lungs)) var/obj/item/organ/lungs/lun = L @@ -157,7 +155,7 @@ //END FIRE CODE -//This proc returns a number made up of the flags_1 for body parts which you are protected on. (such as HEAD, CHEST, GROIN, etc. See setup.dm for the full list) +//This proc returns a number made up of the flags for body parts which you are protected on. (such as HEAD, CHEST, GROIN, etc. See setup.dm for the full list) /mob/living/carbon/human/proc/get_heat_protection_flags(temperature) //Temperature is the temperature you're being exposed to. var/thermal_protection_flags = 0 //Handle normal clothing @@ -242,15 +240,14 @@ /mob/living/carbon/human/proc/get_cold_protection(temperature) if(dna.check_mutation(COLDRES)) - return 1 //Fully protected from the cold. - - if(dna && (RESISTCOLD in dna.species.species_traits)) - return 1 + return TRUE //Fully protected from the cold. if(istype(loc, /obj/item/device/dogborg/sleeper)) return 1 //freezing to death in sleepers ruins fun. if(ismob(loc)) return 1 //because lazy and being inside somemone insulates you from space + if(RESISTCOLD in dna.species.species_traits) + return TRUE temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. var/thermal_protection_flags = get_cold_protection_flags(temperature) @@ -347,6 +344,9 @@ heart.beating = !status +/mob/living/carbon/human/proc/handle_active_genes() + for(var/datum/mutation/human/HM in dna.mutations) + HM.on_life(src) /mob/living/carbon/human/proc/handle_heart() if(!can_heartattack()) @@ -386,12 +386,22 @@ All effects don't start immediately, but rather get worse over time; the rate is 81-90: Extremely high alcohol content - light brain damage, passing out 91-100: Dangerously toxic - swift death */ - +#define BALLMER_POINTS 5 +GLOBAL_LIST_INIT(ballmer_good_msg, list("Hey guys, what if we rolled out a bluespace wiring system so mice can't destroy the powergrid anymore?", + "Hear me out here. What if, and this is just a theory, we made R&D controllable from our PDAs?", + "I'm thinking we should roll out a git repository for our research under the AGPLv3 license so that we can share it among the other stations freely.", + "I dunno about you guys, but IDs and PDAs being separate is clunky as fuck. Maybe we should merge them into a chip in our arms? That way they can't be stolen easily.", + "Why the fuck aren't we just making every pair of shoes into galoshes? We have the technology.")) +GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put a webserver that's automatically turned on with default admin passwords into every PDA?", + "So like, you know how we separate our codebase from the master copy that runs on our consumer boxes? What if we merged the two and undid the separation between codebase and server?", + "Dude, radical idea: H.O.N.K mechs but with no bananium required.", + "Best idea ever: Disposal pipes instead of hallways.")) /mob/living/carbon/human/handle_status_effects() ..() + + if(drunkenness) drunkenness = max(drunkenness - (drunkenness * 0.04), 0) - if(drunkenness >= 6) if(prob(25)) slurring += 2 @@ -399,7 +409,22 @@ All effects don't start immediately, but rather get worse over time; the rate is if(drunkenness >= 11 && slurring < 5) slurring += 1.2 - + if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director")) + if(SSresearch.science_tech) + if(drunkenness >= 12.9 && drunkenness <= 13.8) + drunkenness = round(drunkenness, 0.01) + var/ballmer_percent = 0 + if(drunkenness == 13.35) // why run math if I dont have to + ballmer_percent = 1 + else + ballmer_percent = (-abs(drunkenness - 13.35) / 0.9) + 1 + if(prob(5)) + say(pick(GLOB.ballmer_good_msg)) + SSresearch.science_tech.research_points += (BALLMER_POINTS * ballmer_percent) + if(drunkenness > 26) // by this point you're into windows ME territory + if(prob(5)) + SSresearch.science_tech.research_points -= BALLMER_POINTS + say(pick(GLOB.ballmer_windows_me_msg)) if(drunkenness >= 41) if(prob(25)) confused += 2 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index c7dc99720f..05cb67cdaa 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -29,8 +29,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human //What the species drops on gibbing var/skinned_type var/liked_food = NONE - var/disliked_food = NONE - var/toxic_food = NONE + var/disliked_food = GROSS + var/toxic_food = TOXIC var/list/no_equip = list() // slots the race can't equip stuff to var/nojumpsuit = 0 // this is sorta... weird. it basically lets you equip stuff that usually needs jumpsuits without one, like belts and pockets and ids var/blacklisted = 0 //Flag to exclude from green slime core species. @@ -53,7 +53,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/damage_overlay_type = "human" //what kind of damage overlays (if any) appear on our species when wounded? var/fixed_mut_color = "" //to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"] - // species flags_1. these can be found in flags_1.dm + // species flags. these can be found in flags.dm var/list/species_traits = list() var/attack_verb = "punch" // punch-specific attack verb @@ -130,7 +130,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/copy_properties_from(datum/species/old_species) return - //Please override this locally if you want to define when what species qualifies for what rank if human authority is enforced. /datum/species/proc/qualifies_for_rank(rank, list/features) if(rank in GLOB.command_positions) @@ -452,6 +451,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/list/standing = list() var/obj/item/bodypart/head/HD = H.get_bodypart("head") + if(HD && !(H.has_disability(DISABILITY_HUSK))) // lipstick if(H.lip_style && (LIPS in species_traits)) @@ -1092,7 +1092,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/get_spans() return list() -/datum/species/proc/check_weakness(obj/item/weapon, mob/living/attacker) +/datum/species/proc/check_weakness(obj/item, mob/living/attacker) return 0 //////// @@ -1100,6 +1100,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) //////// /datum/species/proc/handle_digestion(mob/living/carbon/human/H) + //The fucking DISABILITY_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with if(H.has_disability(DISABILITY_FAT))//I share your pain, past coder. if(H.overeatduration < 100) @@ -1477,7 +1478,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/weakness = H.check_weakness(I, user) apply_damage(I.force * weakness, I.damtype, def_zone, armor_block, H) - H.damage_clothes(I.force, I.damtype, "melee", affecting.body_zone) H.send_item_attack_message(I, user, hit_area) diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index de0120028c..fed10446f1 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -136,4 +136,4 @@ H.movement_type &= ~FLYING override_float = FALSE H.pass_flags &= ~PASSTABLE - H.CloseWings() + H.CloseWings() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index d78d2b5262..bc1fcc9b1e 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -16,4 +16,4 @@ blacklisted = 1 use_skintones = 0 species_traits = list(SPECIES_ORGANIC,RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) - sexes = 0 + sexes = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 90ab0cfceb..daf32e0381 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -595,6 +595,7 @@ H.adjustFireLoss(-4) H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + /datum/species/golem/clockwork name = "Clockwork Golem" id = "clockwork golem" @@ -647,6 +648,7 @@ dangerous_existence = TRUE random_eligible = FALSE + /datum/species/golem/cloth name = "Cloth Golem" id = "cloth golem" diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 09c9df5f9f..17f5bafc42 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -182,7 +182,9 @@ var/mob/living/L = AM if(iscyborg(AM)) var/mob/living/silicon/robot/borg = AM - borg.update_headlamp(TRUE, 100) + if(!borg.lamp_cooldown) + borg.update_headlamp(TRUE, INFINITY) + to_chat(borg, "Your headlamp is fried! You'll need a human to help replace it.") else for(var/obj/item/O in AM) if(O.light_range && O.light_power) diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index aca6973355..cf3d676e90 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -11,12 +11,12 @@ amount = dna.species.spec_stun(src,amount) return ..() -/mob/living/carbon/human/cure_husk() +/mob/living/carbon/human/cure_husk(list/sources) . = ..() if(.) update_hair() -/mob/living/carbon/human/become_husk() +/mob/living/carbon/human/become_husk(source) if(istype(dna.species, /datum/species/skeleton)) //skeletons shouldn't be husks. cure_husk() return diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 4592d76138..62e1a53355 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -1,142 +1,142 @@ -/mob/living/carbon/get_item_by_slot(slot_id) - switch(slot_id) - if(slot_back) - return back - if(slot_wear_mask) - return wear_mask - if(slot_neck) - return wear_neck - if(slot_head) - return head - if(slot_handcuffed) - return handcuffed - if(slot_legcuffed) - return legcuffed - return null - -/mob/living/carbon/proc/equip_in_one_of_slots(obj/item/I, list/slots, qdel_on_fail = 1) - for(var/slot in slots) - if(equip_to_slot_if_possible(I, slots[slot], qdel_on_fail = 0, disable_warning = TRUE)) - return slot - if(qdel_on_fail) - qdel(I) - return null - -//This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible() -/mob/living/carbon/equip_to_slot(obj/item/I, slot) - if(!slot) - return - if(!istype(I)) - return - - var/index = get_held_index_of_item(I) - if(index) - held_items[index] = null - - if(I.pulledby) - I.pulledby.stop_pulling() - - I.screen_loc = null - if(client) - client.screen -= I - if(observers && observers.len) - for(var/M in observers) - var/mob/dead/observe = M - if(observe.client) - observe.client.screen -= I +/mob/living/carbon/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_back) + return back + if(slot_wear_mask) + return wear_mask + if(slot_neck) + return wear_neck + if(slot_head) + return head + if(slot_handcuffed) + return handcuffed + if(slot_legcuffed) + return legcuffed + return null + +/mob/living/carbon/proc/equip_in_one_of_slots(obj/item/I, list/slots, qdel_on_fail = 1) + for(var/slot in slots) + if(equip_to_slot_if_possible(I, slots[slot], qdel_on_fail = 0, disable_warning = TRUE)) + return slot + if(qdel_on_fail) + qdel(I) + return null + +//This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible() +/mob/living/carbon/equip_to_slot(obj/item/I, slot) + if(!slot) + return + if(!istype(I)) + return + + var/index = get_held_index_of_item(I) + if(index) + held_items[index] = null + + if(I.pulledby) + I.pulledby.stop_pulling() + + I.screen_loc = null + if(client) + client.screen -= I + if(observers && observers.len) + for(var/M in observers) + var/mob/dead/observe = M + if(observe.client) + observe.client.screen -= I I.forceMove(src) - I.layer = ABOVE_HUD_LAYER - I.plane = ABOVE_HUD_PLANE - I.appearance_flags |= NO_CLIENT_COLOR - var/not_handled = FALSE - switch(slot) - if(slot_back) - back = I - update_inv_back() - if(slot_wear_mask) - wear_mask = I - wear_mask_update(I, toggle_off = 0) - if(slot_head) - head = I - head_update(I) - if(slot_neck) - wear_neck = I - update_inv_neck(I) - if(slot_handcuffed) - handcuffed = I - update_handcuffed() - if(slot_legcuffed) - legcuffed = I - update_inv_legcuffed() - if(slot_hands) - put_in_hands(I) - update_inv_hands() - if(slot_in_backpack) - var/obj/item/storage/B = back - var/prev_jimmies = B.rustle_jimmies - B.rustle_jimmies = FALSE //don't conspicously rustle - B.handle_item_insertion(I, 1, src) - B.rustle_jimmies = prev_jimmies - else - not_handled = TRUE - - //Item has been handled at this point and equipped callback can be safely called - //We cannot call it for items that have not been handled as they are not yet correctly - //in a slot (handled further down inheritance chain, probably living/carbon/human/equip_to_slot - if(!not_handled) - I.equipped(src, slot) - - return not_handled - -/mob/living/carbon/doUnEquip(obj/item/I) - . = ..() //Sets the default return value to what the parent returns. - if(!. || !I) //We don't want to set anything to null if the parent returned 0. - return - - if(I == head) - head = null + I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE + I.appearance_flags |= NO_CLIENT_COLOR + var/not_handled = FALSE + switch(slot) + if(slot_back) + back = I + update_inv_back() + if(slot_wear_mask) + wear_mask = I + wear_mask_update(I, toggle_off = 0) + if(slot_head) + head = I + head_update(I) + if(slot_neck) + wear_neck = I + update_inv_neck(I) + if(slot_handcuffed) + handcuffed = I + update_handcuffed() + if(slot_legcuffed) + legcuffed = I + update_inv_legcuffed() + if(slot_hands) + put_in_hands(I) + update_inv_hands() + if(slot_in_backpack) + var/obj/item/storage/B = back + var/prev_jimmies = B.rustle_jimmies + B.rustle_jimmies = FALSE //don't conspicously rustle + B.handle_item_insertion(I, 1, src) + B.rustle_jimmies = prev_jimmies + else + not_handled = TRUE + + //Item has been handled at this point and equipped callback can be safely called + //We cannot call it for items that have not been handled as they are not yet correctly + //in a slot (handled further down inheritance chain, probably living/carbon/human/equip_to_slot + if(!not_handled) + I.equipped(src, slot) + + return not_handled + +/mob/living/carbon/doUnEquip(obj/item/I) + . = ..() //Sets the default return value to what the parent returns. + if(!. || !I) //We don't want to set anything to null if the parent returned 0. + return + + if(I == head) + head = null if(!QDELETED(src)) head_update(I) - else if(I == back) - back = null + else if(I == back) + back = null if(!QDELETED(src)) update_inv_back() - else if(I == wear_mask) - wear_mask = null + else if(I == wear_mask) + wear_mask = null if(!QDELETED(src)) wear_mask_update(I, toggle_off = 1) - if(I == wear_neck) - wear_neck = null + if(I == wear_neck) + wear_neck = null if(!QDELETED(src)) update_inv_neck(I) - else if(I == handcuffed) - handcuffed = null - if(buckled && buckled.buckle_requires_restraints) - buckled.unbuckle_mob(src) + else if(I == handcuffed) + handcuffed = null + if(buckled && buckled.buckle_requires_restraints) + buckled.unbuckle_mob(src) if(!QDELETED(src)) update_handcuffed() - else if(I == legcuffed) - legcuffed = null + else if(I == legcuffed) + legcuffed = null if(!QDELETED(src)) update_inv_legcuffed() - -//handle stuff to update when a mob equips/unequips a mask. -/mob/living/proc/wear_mask_update(obj/item/clothing/C, toggle_off = 1) - update_inv_wear_mask() - -/mob/living/carbon/wear_mask_update(obj/item/clothing/C, toggle_off = 1) - if(C.tint || initial(C.tint)) - update_tint() - update_inv_wear_mask() - -//handle stuff to update when a mob equips/unequips a headgear. -/mob/living/carbon/proc/head_update(obj/item/I, forced) - if(istype(I, /obj/item/clothing)) - var/obj/item/clothing/C = I - if(C.tint || initial(C.tint)) - update_tint() - update_sight() - if(I.flags_inv & HIDEMASK || forced) - update_inv_wear_mask() - update_inv_head() - + +//handle stuff to update when a mob equips/unequips a mask. +/mob/living/proc/wear_mask_update(obj/item/clothing/C, toggle_off = 1) + update_inv_wear_mask() + +/mob/living/carbon/wear_mask_update(obj/item/clothing/C, toggle_off = 1) + if(C.tint || initial(C.tint)) + update_tint() + update_inv_wear_mask() + +//handle stuff to update when a mob equips/unequips a headgear. +/mob/living/carbon/proc/head_update(obj/item/I, forced) + if(istype(I, /obj/item/clothing)) + var/obj/item/clothing/C = I + if(C.tint || initial(C.tint)) + update_tint() + update_sight() + if(I.flags_inv & HIDEMASK || forced) + update_inv_wear_mask() + update_inv_head() + diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 3fe77eadae..0ac97fba5a 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -460,4 +460,4 @@ death() var/obj/item/organ/brain/B = getorganslot(ORGAN_SLOT_BRAIN) if(B) - B.damaged_brain = TRUE + B.damaged_brain = TRUE diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 052e8eeaf5..18f245d4cd 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -77,7 +77,7 @@ return FALSE // WEAPONS - if(istype(I, /obj/item/weapon)) + if(istype(I, /obj/item)) var/obj/item/W = I if(W.force >= best_force) put_in_hands(W) @@ -153,7 +153,7 @@ return TRUE // have we been disarmed - if(!locate(/obj/item/weapon) in held_items) + if(!locate(/obj/item) in held_items) best_force = 0 if(restrained() || blacklistItems[pickupTarget] || (pickupTarget && (pickupTarget.flags_1 & NODROP_1))) @@ -391,7 +391,7 @@ // 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/weapon) in held_items + var/obj/item/Weapon = locate(/obj/item) in held_items // attack with weapon if we have one if(Weapon) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 09d3665bfc..ca78e165c2 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -133,7 +133,6 @@ /mob/living/carbon/monkey/has_smoke_protection() if(wear_mask) - if(wear_mask.flags_1 & BLOCK_GAS_SMOKE_EFFECT_1) return 1 diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 7c65e4a604..3cf2bcccc0 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -11,10 +11,10 @@ butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1) type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/monkey gib_type = /obj/effect/decal/cleanable/blood/gibs - unique_name = 1 + unique_name = TRUE bodyparts = list(/obj/item/bodypart/chest/monkey, /obj/item/bodypart/head/monkey, /obj/item/bodypart/l_arm/monkey, /obj/item/bodypart/r_arm/monkey, /obj/item/bodypart/r_leg/monkey, /obj/item/bodypart/l_leg/monkey) - devourable = TRUE + /mob/living/carbon/monkey/Initialize() @@ -62,7 +62,7 @@ if (bodytemperature < 283.222) . += (283.222 - bodytemperature) / 10 * 1.75 - + var/static/config_monkey_delay if(isnull(config_monkey_delay)) config_monkey_delay = CONFIG_GET(number/monkey_delay) @@ -89,13 +89,15 @@ /mob/living/carbon/monkey/IsAdvancedToolUser()//Unless its monkey mode monkeys cant use advanced tools - return 0 + if(mind && is_monkey(mind)) + return TRUE + return FALSE /mob/living/carbon/monkey/reagent_check(datum/reagent/R) //can metabolize all reagents - return 0 + return FALSE /mob/living/carbon/monkey/canBeHandcuffed() - return 1 + return TRUE /mob/living/carbon/monkey/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) if(judgement_criteria & JUDGE_EMAGGED) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 96cafa4501..fe15e50975 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -16,9 +16,6 @@ if(stat != DEAD) var/dmg = rand(1, 5) apply_damage(dmg, BRUTE, affecting) - damage_clothes(dmg, BRUTE, "melee", affecting.body_zone) - - /mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) if(..()) //successful larva bite. @@ -29,7 +26,6 @@ if(!affecting) affecting = get_bodypart("chest") apply_damage(damage, BRUTE, affecting) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M) if(..()) //To allow surgery to return properly. @@ -58,7 +54,6 @@ if(!affecting) affecting = get_bodypart("chest") apply_damage(damage, BRUTE, affecting) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) add_logs(M, src, "attacked") else @@ -101,7 +96,6 @@ if(!dismembering_strike(M, affecting.body_zone)) //Dismemberment successful return 1 apply_damage(damage, BRUTE, affecting) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) else playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) @@ -136,9 +130,6 @@ if(!affecting) affecting = get_bodypart("chest") apply_damage(damage, M.melee_damage_type, affecting) - damage_clothes(damage, M.melee_damage_type, "melee", affecting.body_zone) - - /mob/living/carbon/monkey/attack_slime(mob/living/simple_animal/slime/M) if(..()) //successful slime attack @@ -152,21 +143,19 @@ if(!affecting) affecting = get_bodypart("chest") apply_damage(damage, BRUTE, affecting) - damage_clothes(damage, BRUTE, "melee", affecting.body_zone) - /mob/living/carbon/monkey/acid_act(acidpwr, acid_volume, bodyzone_hit) . = 1 if(!bodyzone_hit || bodyzone_hit == "head") if(wear_mask) if(!(wear_mask.resistance_flags & UNACIDABLE)) - wear_mask.acid_act(acidpwr) + wear_mask.acid_act(acidpwr, acid_volume) else to_chat(src, "Your mask protects you from the acid.") return if(head) if(!(head.resistance_flags & UNACIDABLE)) - head.acid_act(acidpwr) + head.acid_act(acidpwr, acid_volume) else to_chat(src, "Your hat protects you from the acid.") return diff --git a/code/modules/mob/living/carbon/monkey/punpun.dm b/code/modules/mob/living/carbon/monkey/punpun.dm index 767268f8dc..fc0d97e3cb 100644 --- a/code/modules/mob/living/carbon/monkey/punpun.dm +++ b/code/modules/mob/living/carbon/monkey/punpun.dm @@ -74,4 +74,4 @@ file_data["relic_hat"] = head ? head.type : null file_data["relic_mask"] = wear_mask ? wear_mask.type : null fdel(json_file) - WRITE_FILE(json_file, json_encode(file_data)) \ No newline at end of file + WRITE_FILE(json_file, json_encode(file_data)) diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index c1a6af9688..83d943ccbf 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -36,7 +36,7 @@ if(T) . = T.could_speak_in_language(dt) else - . = initial(dt.flags_1) & TONGUELESS_SPEECH + . = initial(dt.flags) & TONGUELESS_SPEECH /mob/living/carbon/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) if(!client) @@ -44,4 +44,4 @@ for(var/T in get_traumas()) var/datum/brain_trauma/trauma = T message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq) - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 10a5b3cd87..7a7a6e19d7 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -1,18 +1,3 @@ -//The code execution of the emote datum is located at code/datums/emotes.dm -/mob/living/emote(act, m_type = null, message = null) - act = lowertext(act) - var/param = message - var/custom_param = findchar(act, " ") - if(custom_param) - param = copytext(act, custom_param + 1, length(act) + 1) - act = copytext(act, 1, custom_param) - - var/datum/emote/E - E = E.emote_list[act] - if(!E) - to_chat(src, "Unusable emote '[act]'. Say *help for a list.") - return - E.run_emote(src, param, m_type) /* EMOTE DATUMS */ /datum/emote/living @@ -143,16 +128,6 @@ restraint_check = TRUE wing_time = 10 -/datum/emote/living/flip - key = "flip" - key_third_person = "flips" - restraint_check = TRUE - -/datum/emote/living/flip/run_emote(mob/user, params) - . = ..() - if(.) - user.SpinAnimation(7,1) - /datum/emote/living/frown key = "frown" key_third_person = "frowns" @@ -483,25 +458,6 @@ message_param = "beeps at %t." sound = 'sound/machines/twobeep.ogg' -/datum/emote/living/spin - key = "spin" - key_third_person = "spins" - restraint_check = TRUE - -/datum/emote/living/spin/run_emote(mob/user) - . = ..() - if(.) - user.spin(20, 1) - if(iscyborg(user) && user.has_buckled_mobs()) - var/mob/living/silicon/robot/R = user - GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R) - if(riding_datum) - for(var/mob/M in R.buckled_mobs) - riding_datum.force_dismount(M) - else - R.unbuckle_all_mobs() - - /datum/emote/living/circle key = "circle" key_third_person = "circles" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3b2a95f6bd..9fa2177c9b 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -413,7 +413,6 @@ cure_nearsighted() cure_blind() cure_husk() - disabilities = 0 hallucination = 0 heal_overall_damage(100000, 100000, 0, 0, 1) //heal brute and burn dmg on both organic and robotic limbs, and update health right away. ExtinguishMob() @@ -745,15 +744,6 @@ var/obj_temp = oloc.return_temperature() if(obj_temp != null) loc_temp = obj_temp -/* if(ismob(loc)) - var/mob/living/mloc = loc - var/mob_temp = mloc.return_temperature() - if(mloc == DEAD) - loc_temp = get_turf(loc) //wew - else - loc_temp = mob_temp -*/ -//just gunna ommit this for now, it's on the 'to figgur out' list. else if(isspaceturf(get_turf(src))) var/turf/heat_turf = get_turf(src) loc_temp = heat_turf.temperature @@ -989,7 +979,6 @@ stop_pulling() else if(has_legs || ignore_legs) lying = 0 - if(buckled) lying = 90*buckle_lying else if(!lying) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 9e45693fdc..904e9b9c21 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -26,6 +26,8 @@ var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas //and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt + var/list/disabilities = list() + var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. var/now_pushing = null //used by living/Collide() and living/PushAM() to prevent potential infinite loop. diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index 18b171753a..b7e9036a8a 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -4,4 +4,4 @@ ranged_ability.remove_mousepointer(client) ..() if(!key && mind) //key and mind have become separated. - mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. + mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 29eb521af4..2143e9b2c8 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -284,11 +284,6 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 -/mob/living/proc/check_emote(message) - if(copytext(message, 1, 2) == "*") - emote(copytext(message, 2)) - return 1 - /mob/living/proc/get_message_mode(message) var/key = copytext(message, 1, 2) if(key == "#") diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm index 3af95cec4c..025d3d8e6d 100644 --- a/code/modules/mob/living/silicon/ai/examine.dm +++ b/code/modules/mob/living/silicon/ai/examine.dm @@ -1,26 +1,26 @@ -/mob/living/silicon/ai/examine(mob/user) +/mob/living/silicon/ai/examine(mob/user) var/msg = "*---------*\nThis is [icon2html(src, user)] [src]!\n" - if (stat == DEAD) - msg += "It appears to be powered-down.\n" - else - msg += "" - if (getBruteLoss()) - if (getBruteLoss() < 30) - msg += "It looks slightly dented.\n" - else - msg += "It looks severely dented!\n" - if (getFireLoss()) - if (getFireLoss() < 30) - msg += "It looks slightly charred.\n" - else - msg += "Its casing is melted and heat-warped!\n" - msg += "" - if(deployed_shell) - msg += "The wireless networking light is blinking.\n" - else if (!shunted && !client) - msg += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n" - msg += "*---------*" - - to_chat(user, msg) - + if (stat == DEAD) + msg += "It appears to be powered-down.\n" + else + msg += "" + if (getBruteLoss()) + if (getBruteLoss() < 30) + msg += "It looks slightly dented.\n" + else + msg += "It looks severely dented!\n" + if (getFireLoss()) + if (getFireLoss() < 30) + msg += "It looks slightly charred.\n" + else + msg += "Its casing is melted and heat-warped!\n" + msg += "" + if(deployed_shell) + msg += "The wireless networking light is blinking.\n" + else if (!shunted && !client) + msg += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n" + msg += "*---------*" + + to_chat(user, msg) + ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 2a009d4d00..a76c02f3b5 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -173,4 +173,4 @@ obscured += t.obscured #undef UPDATE_BUFFER -#undef CHUNK_SIZE +#undef CHUNK_SIZE \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 1d2598c63d..b5b1bd082b 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -16,7 +16,6 @@ // It will also stream the chunk that the new loc is in. /mob/camera/aiEye/proc/setLoc(T) - if(ai) if(!isturf(ai.loc)) return @@ -34,6 +33,8 @@ if(istype(ai.current, /obj/machinery/holopad)) var/obj/machinery/holopad/H = ai.current H.move_hologram(ai, T) + if(ai.camera_light_on) + ai.light_cameras() /mob/camera/aiEye/Move() return 0 @@ -85,11 +86,6 @@ if(!user.tracking) user.cameraFollow = null - //user.unset_machine() //Uncomment this if it causes problems. - //user.lightNearbyCamera() - if(user.camera_light_on) - user.light_cameras() - // Return to the Core. /mob/living/silicon/ai/proc/view_core() diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 7537697d71..2e1adb1959 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,13 +1,13 @@ -/mob/living/silicon/spawn_gibs() +/mob/living/silicon/spawn_gibs() new /obj/effect/gibspawner/robot(get_turf(src)) - -/mob/living/silicon/spawn_dust() - new /obj/effect/decal/remains/robot(loc) - -/mob/living/silicon/death(gibbed) - if(!gibbed) - emote("deathgasp") - diag_hud_set_status() - diag_hud_set_health() - update_health_hud() + +/mob/living/silicon/spawn_dust() + new /obj/effect/decal/remains/robot(loc) + +/mob/living/silicon/death(gibbed) + if(!gibbed) + emote("deathgasp") + diag_hud_set_status() + diag_hud_set_health() + update_health_hud() . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 91541fccf1..50b7dee271 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -52,7 +52,7 @@ var/obj/machinery/door/hackdoor // The airlock being hacked var/hackprogress = 0 // Possible values: 0 - 100, >= 100 means the hack is complete and will be reset upon next check - var/obj/item/radio/integrated/signal/sradio // AI's signaller + var/obj/item/integrated_signaler/signaler // AI's signaller var/holoform = FALSE var/canholo = TRUE @@ -105,7 +105,7 @@ P.setPersonality(src) forceMove(P) card = P - sradio = new(src) + signaler = new(src) if(!radio) radio = new /obj/item/device/radio(src) diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index e73792e705..bb057f7774 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -169,23 +169,20 @@ if("signaller") if(href_list["send"]) - - sradio.send_signal("ACTIVATE") + signaler.send_activation() audible_message("[icon2html(src, world)] *beep* *beep*") if(href_list["freq"]) - - var/new_frequency = (sradio.frequency + text2num(href_list["freq"])) - if(new_frequency < 1200 || new_frequency > 1600) + var/new_frequency = (signaler.frequency + text2num(href_list["freq"])) + if(new_frequency < MIN_FREE_FREQ || new_frequency > MAX_FREE_FREQ) new_frequency = sanitize_frequency(new_frequency) - sradio.set_frequency(new_frequency) + signaler.set_frequency(new_frequency) if(href_list["code"]) - - sradio.code += text2num(href_list["code"]) - sradio.code = round(sradio.code) - sradio.code = min(100, sradio.code) - sradio.code = max(1, sradio.code) + signaler.code += text2num(href_list["code"]) + signaler.code = round(signaler.code) + signaler.code = min(100, signaler.code) + signaler.code = max(1, signaler.code) @@ -397,14 +394,14 @@ Frequency: - - - [format_frequency(sradio.frequency)] + [format_frequency(signaler.frequency)] + +
    Code: - - - [sradio.code] + [signaler.code] + +
    diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index cf55cdd5f9..8fb58b9472 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -1,3 +1,4 @@ + /mob/living/silicon/robot/Login() ..() regenerate_icons() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 5ac72d0ba3..77161ff46c 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -5,8 +5,6 @@ icon_state = "robot" maxHealth = 100 health = 100 - macro_default = "robot-default" - macro_hotkeys = "robot-hotkeys" bubble_icon = "robot" designation = "Default" //used for displaying the prefix & getting the current module of cyborg has_limbs = 1 @@ -247,17 +245,6 @@ return //won't work if dead robot_alerts() -//for borg hotkeys, here module refers to borg inv slot, not core module -/mob/living/silicon/robot/verb/cmd_toggle_module(module as num) - set name = "Toggle Module" - set hidden = 1 - toggle_module(module) - -/mob/living/silicon/robot/verb/cmd_unequip_module() - set name = "Unequip Module" - set hidden = 1 - uneq_active() - /mob/living/silicon/robot/proc/robot_alerts() var/dat = "" for (var/cat in alarms) @@ -536,6 +523,19 @@ toner = tonermax qdel(W) to_chat(user, "You fill the toner level of [src] to its max capacity.") + + else if(istype(W, /obj/item/device/flashlight)) + if(!opened) + to_chat(user, "You need to open the panel to repair the headlamp!") + if(lamp_cooldown <= world.time) + to_chat(user, "The headlamp is already functional!") + else + if(!user.temporarilyRemoveItemFromInventory(W)) + to_chat(user, "[W] seems to be stuck to your hand. You'll have to find a different light.") + return + lamp_cooldown = 0 + qdel(W) + to_chat(user, "You replace the headlamp bulbs.") else return ..() @@ -812,6 +812,9 @@ /mob/living/silicon/robot/modules/security set_module = /obj/item/robot_module/security +/mob/living/silicon/robot/modules/clown + set_module = /obj/item/robot_module/clown + /mob/living/silicon/robot/modules/peacekeeper set_module = /obj/item/robot_module/peacekeeper @@ -829,7 +832,7 @@ lawupdate = FALSE scrambledcodes = TRUE // These are rogue borgs. ionpulse = TRUE - var/playstyle_string = "You are a Syndicate assault cyborg!
    \ + var/playstyle_string = "You are a Syndicate assault cyborg!
    \ You are armed with powerful offensive tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \ Your cyborg LMG will slowly produce ammunition from your power supply, and your operative pinpointer will find and locate fellow nuclear operatives. \ Help the operatives secure the disk at all costs!" @@ -851,7 +854,7 @@ /mob/living/silicon/robot/modules/syndicate/medical icon_state = "syndi-medi" - playstyle_string = "You are a Syndicate medical cyborg!
    \ + playstyle_string = "You are a Syndicate medical cyborg!
    \ You are armed with powerful medical tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \ Your hypospray will produce Restorative Nanites, a wonder-drug that will heal most types of bodily damages, including clone and brain damage. It also produces morphine for offense. \ Your defibrillator paddles can revive operatives through their hardsuits, or can be used on harm intent to shock enemies! \ @@ -1015,9 +1018,9 @@ status_flags &= ~CANPUSH if(module.clean_on_move) - flags_1 |= CLEAN_ON_MOVE_1 + AddComponent(/datum/component/cleaning) else - flags_1 &= ~CLEAN_ON_MOVE_1 + qdel(GetComponent(/datum/component/cleaning)) hat_offset = module.hat_offset diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index b7cb412927..84f90a0c6d 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -33,8 +33,8 @@ var/ride_allow_incapacitated = FALSE var/allow_riding = TRUE -/obj/item/robot_module/New() - ..() +/obj/item/robot_module/Initialize() + . = ..() for(var/i in basic_modules) var/obj/item/I = new i(src) basic_modules += I @@ -336,17 +336,6 @@ can_be_pushed = FALSE hat_offset = 3 -/obj/item/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - ..() - var/obj/item/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/e_gun/advtaser/cyborg) in basic_modules - if(T) - if(T.cell.charge < T.cell.maxcharge) - var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select] - T.cell.give(S.e_cost * coeff) - T.update_icon() - else - T.charge_tick = 0 - /obj/item/robot_module/security/do_transform_animation() ..() to_chat(loc, "While you have picked the security module, you still have to follow your laws, NOT Space Law. \ @@ -435,6 +424,37 @@ if(CL) CL.reagents.add_reagent("lube", 2 * coeff) +/obj/item/robot_module/clown + name = "Clown" + basic_modules = list( + /obj/item/device/assembly/flash/cyborg, + /obj/item/toy/crayon/rainbow, + /obj/item/device/instrument/bikehorn, + /obj/item/stamp/clown, + /obj/item/bikehorn, + /obj/item/bikehorn/airhorn, + /obj/item/paint/anycolor, + /obj/item/soap/nanotrasen, + /obj/item/pneumatic_cannon/pie/selfcharge/cyborg, + /obj/item/razor, //killbait material + /obj/item/lipstick/purple, + /obj/item/reagent_containers/spray/waterflower/cyborg, + /obj/item/borg/cyborghug/peacekeeper, + /obj/item/borg/lollipop/clown, + /obj/item/picket_sign/cyborg, + /obj/item/reagent_containers/borghypo/clown, + /obj/item/extinguisher/mini) + emag_modules = list( + /obj/item/reagent_containers/borghypo/clown/hacked, + /obj/item/reagent_containers/spray/waterflower/cyborg/hacked) + ratvar_modules = list( + /obj/item/clockwork/slab/cyborg, + /obj/item/clockwork/weapon/ratvarian_spear, + /obj/item/clockwork/replica_fabricator/cyborg) + moduleselect_icon = "service" + cyborg_base_icon = "clown" + hat_offset = -2 + /obj/item/robot_module/butler name = "Service" basic_modules = list( diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index b19bc401e3..383cdd268d 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -72,7 +72,7 @@ var/nearest_beacon // the nearest beacon's tag var/turf/nearest_beacon_loc // the nearest beacon's location - var/beacon_freq = 1445 // navigation beacon frequency + var/beacon_freq = FREQ_NAV_BEACON var/model = "" //The type of bot it is. var/bot_type = 0 //The type of bot it is, for radio control. var/data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC //The type of data HUD the bot uses. Diagnostic by default. @@ -108,6 +108,7 @@ if(stat) return FALSE on = TRUE + canmove = TRUE set_light(initial(light_range)) update_icon() diag_hud_set_botstat() @@ -115,6 +116,7 @@ /mob/living/simple_animal/bot/proc/turn_off() on = FALSE + canmove = FALSE set_light(0) bot_reset() //Resets an AI's call, should it exist. update_icon() @@ -129,7 +131,7 @@ Radio = new/obj/item/device/radio(src) if(radio_key) Radio.keyslot = new radio_key - Radio.subspace_transmission = 1 + Radio.subspace_transmission = TRUE Radio.canhear_range = 0 // anything greater will have the bot broadcast the channel as if it were saying it out loud. Radio.recalculateChannels() diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index efe289b222..186d0c5a41 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -125,7 +125,7 @@ if(!target) //Search for decals then. target = scan(/obj/effect/decal/cleanable) - + if(!target) //Checks for remains target = scan(/obj/effect/decal/remains) @@ -242,7 +242,7 @@ say(phrase) victim.emote("scream") playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) - victim.acid_act(5, 2, 100) + victim.acid_act(5, 100) else if(A == src) // Wets floors and spawns foam randomly if(prob(75)) var/turf/open/T = loc diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 0ef926f942..a4e8d09121 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -282,8 +282,8 @@ var/skin = null //Same as medbot, set to tox or ointment for the respective kits. w_class = WEIGHT_CLASS_NORMAL -/obj/item/firstaid_arm_assembly/New() - ..() +/obj/item/firstaid_arm_assembly/Initialize() + . = ..() spawn(5) if(skin) add_overlay("kit_skin_[skin]") diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 8046daf55d..6e5548f85c 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -32,7 +32,7 @@ initial_language_holder = /datum/language_holder/construct deathmessage = "collapses in a shattered heap." var/list/construct_spells = list() - var/playstyle_string = "You are a generic construct! Your job is to not exist, and you should probably adminhelp this." + var/playstyle_string = "You are a generic construct! Your job is to not exist, and you should probably adminhelp this." var/master = null var/seeking = FALSE var/can_repair_constructs = FALSE @@ -119,7 +119,7 @@ mob_size = MOB_SIZE_LARGE force_threshold = 11 construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall) - playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \ + playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \ create shield walls, rip apart enemies and walls alike, and even deflect energy weapons." /mob/living/simple_animal/hostile/construct/armored/hostile //actually hostile, will move around, hit things @@ -168,7 +168,7 @@ attacktext = "slashes" attack_sound = 'sound/weapons/bladeslice.ogg' construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift) - playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing." + playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing." var/attack_refund = 10 //1 second per attack var/crit_refund = 50 //5 seconds when putting a target into critical var/kill_refund = 250 //full refund on kills @@ -222,7 +222,7 @@ /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone, /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) - playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ + playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ use magic missile, repair allied constructs, shades, and yourself (by clicking on them), \ and, most important of all, create new constructs by producing soulstones to capture souls, \ and shells to place those soulstones into." @@ -296,8 +296,8 @@ attack_sound = 'sound/weapons/bladeslice.ogg' construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/area_conversion, /obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall) - playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \ - Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly." + playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \ + Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly." can_repair_constructs = TRUE @@ -369,18 +369,18 @@ the_construct.master = C.cult_team.blood_target if(!the_construct.master) - to_chat(the_construct, "You have no master to seek!") + to_chat(the_construct, "You have no master to seek!") the_construct.seeking = FALSE return if(tracking) tracking = FALSE the_construct.seeking = FALSE - to_chat(the_construct, "You are no longer tracking your master.") + to_chat(the_construct, "You are no longer tracking your master.") return else tracking = TRUE the_construct.seeking = TRUE - to_chat(the_construct, "You are now tracking your master.") + to_chat(the_construct, "You are now tracking your master.") /datum/action/innate/seek_prey @@ -403,14 +403,14 @@ desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" button_icon_state = "cult_mark" the_construct.seeking = FALSE - to_chat(the_construct, "You are now tracking Nar'Sie, return to reap the harvest!") + to_chat(the_construct, "You are now tracking Nar'Sie, return to reap the harvest!") return else if(LAZYLEN(GLOB.cult_narsie.souls_needed)) the_construct.master = pick(GLOB.cult_narsie.souls_needed) - to_chat(the_construct, "You are now tracking your prey, [the_construct.master] - harvest them!") + to_chat(the_construct, "You are now tracking your prey, [the_construct.master] - harvest them!") else - to_chat(the_construct, "Nar'Sie has completed her harvest!") + to_chat(the_construct, "Nar'Sie has completed her harvest!") return desc = "Activate to track Nar'Sie!" button_icon_state = "sintouch" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 42d38e40a3..86f33bcbef 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -29,8 +29,6 @@ var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target gold_core_spawnable = FRIENDLY_SPAWN - devourable = TRUE - no_vore = FALSE /mob/living/simple_animal/pet/cat/Initialize() . = ..() @@ -256,7 +254,7 @@ if(!B || !B.brainmob || !B.brainmob.mind) return B.brainmob.mind.transfer_to(src) - to_chat(src, "You are a cak! You're a harmless cat/cake hybrid that everyone loves. People can take bites out of you if they're hungry, but you regenerate health \ + to_chat(src, "You are a cak! You're a harmless cat/cake hybrid that everyone loves. People can take bites out of you if they're hungry, but you regenerate health \ so quickly that it generally doesn't matter. You're remarkably resilient to any damage besides this and it's hard for you to really die at all. You should go around and bring happiness and \ free cake to the station!") var/new_name = stripped_input(src, "Enter your name, or press \"Cancel\" to stick with Keeki.", "Name Change") diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 35d7d12174..29d25bfabc 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -20,7 +20,6 @@ var/obj/item/inventory_head var/obj/item/inventory_mask gold_core_spawnable = FRIENDLY_SPAWN - devourable = TRUE /mob/living/simple_animal/crab/Life() ..() @@ -75,4 +74,4 @@ real_name = "Evil Kreb" icon_state = "evilkreb" icon_living = "evilkreb" - icon_dead = "evilkreb_dead" + icon_dead = "evilkreb_dead" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 4330b58411..9d5acb2c4e 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -12,8 +12,6 @@ see_in_dark = 5 speak_chance = 1 turns_per_move = 10 - devourable = TRUE - no_vore = FALSE //Corgis and pugs are now under one dog subtype @@ -615,4 +613,4 @@ emote("me", 1, "yaps happily!") else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) - emote("me", 1, "growls!") \ No newline at end of file + emote("me", 1, "growls!") diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index 45b188c5ef..32c735016c 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -12,13 +12,26 @@ icon = 'icons/mob/drone.dmi' icon_state = "drone_maint_hat"//yes reuse the _hat state. var/drone_type = /mob/living/simple_animal/drone //Type of drone that will be spawned + var/seasonal_hats = TRUE //If TRUE, and there are no default hats, different holidays will grant different hats + var/static/list/possible_seasonal_hats //This is built automatically in build_seasonal_hats() but can also be edited by admins! -/obj/item/drone_shell/New() - ..() +/obj/item/drone_shell/Initialize() + . = ..() var/area/A = get_area(src) if(A) notify_ghosts("A drone shell has been created in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE) GLOB.poi_list |= src + if(isnull(possible_seasonal_hats)) + build_seasonal_hats() + +/obj/item/drone_shell/proc/build_seasonal_hats() + possible_seasonal_hats = list() + if(!length(SSevents.holidays)) + return //no holidays, no hats; we'll keep the empty list so we never call this proc again + for(var/V in SSevents.holidays) + var/datum/holiday/holiday = SSevents.holidays[V] + if(holiday.drone_hat) + possible_seasonal_hats += holiday.drone_hat /obj/item/drone_shell/Destroy() GLOB.poi_list -= src @@ -40,6 +53,10 @@ if(be_drone == "No" || QDELETED(src) || !isobserver(user)) return var/mob/living/simple_animal/drone/D = new drone_type(get_turf(loc)) + if(!D.default_hatmask && seasonal_hats && possible_seasonal_hats.len) + var/hat_type = pick(possible_seasonal_hats) + var/obj/item/new_hat = new hat_type(D) + D.equip_to_slot_or_del(new_hat, slot_head) D.admin_spawned = admin_spawned D.key = user.key - qdel(src) + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index 86bc3b69e5..a6795678f1 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -11,7 +11,7 @@ to_chat(src, "Drone Laws") to_chat(src, laws) - + /mob/living/simple_animal/drone/verb/drone_ping() set category = "Drone" set name = "Drone ping" @@ -24,7 +24,6 @@ var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!" alert_drones(msg) - /mob/living/simple_animal/drone/verb/toggle_statics() set name = "Change Vision Filter" set desc = "Change the filter on the system used to remove non drone beings from your viewscreen." diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index cbd14bb376..39209f6ca6 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -28,8 +28,6 @@ stop_automated_movement_when_pulled = 1 blood_volume = BLOOD_VOLUME_NORMAL var/obj/item/udder/udder = null - devourable = TRUE - no_vore = FALSE /mob/living/simple_animal/hostile/retaliate/goat/Initialize() udder = new() @@ -66,7 +64,7 @@ src.visible_message("[src] gets an evil-looking gleam in [p_their()] eye.") /mob/living/simple_animal/hostile/retaliate/goat/Move() - ..() + . = ..() if(!stat) eat_plants() @@ -119,8 +117,6 @@ var/obj/item/udder/udder = null gold_core_spawnable = FRIENDLY_SPAWN blood_volume = BLOOD_VOLUME_NORMAL - devourable = TRUE - no_vore = FALSE /mob/living/simple_animal/cow/Initialize() udder = new() @@ -196,7 +192,6 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY gold_core_spawnable = FRIENDLY_SPAWN - devourable = TRUE /mob/living/simple_animal/chick/Initialize() . = ..() @@ -252,8 +247,6 @@ var/list/validColors = list("brown","black","white") gold_core_spawnable = FRIENDLY_SPAWN var/static/chicken_count = 0 - devourable = TRUE - no_vore = FALSE /mob/living/simple_animal/chicken/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index b9192c1746..53d7939341 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -18,47 +18,6 @@ response_disarm = "gently pushes aside" response_harm = "kicks" gold_core_spawnable = FRIENDLY_SPAWN - devourable = TRUE - var/mob/living/simple_animal/mouse/movement_target - var/turns_since_scan = 0 - no_vore = FALSE - -/mob/living/simple_animal/pet/fox/Life() - //MICE! - if((src.loc) && isturf(src.loc)) - if(!stat && !resting && !buckled) - for(var/mob/living/simple_animal/mouse/M in view(1,src)) - if(!M.stat && Adjacent(M)) - emote("me", 1, "splats \the [M]!") - M.splat() - movement_target = null - stop_automated_movement = 0 - break - for(var/obj/item/toy/cattoy/T in view(1,src)) - if (T.cooldown < (world.time - 400)) - emote("me", 1, "bats \the [T] around with its paw!") - T.cooldown = world.time - - ..() - - if(!stat && !resting && !buckled) - turns_since_scan++ - if(turns_since_scan > 5) - walk_to(src,0) - 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/mob/living/simple_animal/mouse/snack in oview(src,3)) - if(isturf(snack.loc) && !snack.stat) - movement_target = snack - break - if(movement_target) - stop_automated_movement = 1 - walk_to(src,movement_target,0,3) //Captain fox /mob/living/simple_animal/pet/fox/Renault diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index f45e7f7950..e596b09ba9 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -19,7 +19,6 @@ pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL gold_core_spawnable = FRIENDLY_SPAWN - devourable = TRUE obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption. diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 809681ed6b..6543fd8f64 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -24,7 +24,6 @@ var/body_color //brown, gray and white, leave blank for random gold_core_spawnable = FRIENDLY_SPAWN var/chew_probability = 1 - devourable = TRUE /mob/living/simple_animal/mouse/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index fe0187fee6..e7220eb5e8 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -13,7 +13,6 @@ speak_chance = 1 turns_per_move = 10 icon = 'icons/mob/penguins.dmi' - no_vore = FALSE /mob/living/simple_animal/pet/penguin/emperor name = "Emperor penguin" diff --git a/code/modules/mob/living/simple_animal/friendly/pet.dm b/code/modules/mob/living/simple_animal/friendly/pet.dm index 3200c8b7d7..5fa0cede48 100644 --- a/code/modules/mob/living/simple_animal/friendly/pet.dm +++ b/code/modules/mob/living/simple_animal/friendly/pet.dm @@ -5,21 +5,23 @@ var/collar = "" var/pettag = "" blood_volume = BLOOD_VOLUME_NORMAL - devourable = TRUE /mob/living/simple_animal/pet/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/clothing/neck/petcollar) && !pcollar) - var/obj/item/clothing/neck/petcollar/P = O - pcollar = P - collar = "[icon_state]collar" - pettag = "[icon_state]tag" - regenerate_icons() - to_chat(user, "You put the [P] around [src]'s neck.") - if(P.tagname) - real_name = "\proper [P.tagname]" - name = real_name - qdel(P) - return + var/pet_icon_states = icon_states("[icon]") + if("[icon_state]collar" in pet_icon_states) + var/obj/item/clothing/neck/petcollar/P = O + pcollar = P + collar = "[icon_state]collar" + pettag = "[icon_state]tag" + regenerate_icons() + to_chat(user, "You put the [P] around [src]'s neck.") + if(P.tagname) + real_name = "\proper [P.tagname]" + name = real_name + qdel(P) + return + if(istype(O, /obj/item/newspaper)) if(!stat) user.visible_message("[user] baps [name] on the nose with the rolled up [O].") @@ -51,3 +53,4 @@ add_overlay(collar) if(pettag) add_overlay(pettag) + diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 6f19632e88..8b7d70ef9f 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -21,7 +21,7 @@ maxHealth = 50 speed = 10 glide_size = 2 - devourable = TRUE + //Cargo Sloth /mob/living/simple_animal/sloth/paperwork diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 577eba1858..fbed7d4331 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/range = 10 //how far from the user the spirit can be var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses var/datum/guardianname/namedatum = new/datum/guardianname() - var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" + var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP" @@ -57,7 +57,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians . = ..() /mob/living/simple_animal/hostile/guardian/med_hud_set_health() - if(!QDELETED(summoner)) + if(summoner) var/image/holder = hud_list[HEALTH_HUD] holder.icon_state = "hud[RoundHealth(summoner)]" @@ -117,7 +117,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if(mind) mind.name = "[real_name]" if(!summoner) - to_chat(src, "For some reason, somehow, you have no summoner. Please report this bug immediately.") + to_chat(src, "For some reason, somehow, you have no summoner. Please report this bug immediately.") return to_chat(src, "You are [real_name], bound to serve [summoner.real_name].") to_chat(src, "You are capable of manifesting or recalling to your master with the buttons on your HUD. You will also find a button to communicate with them privately there.") @@ -358,7 +358,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if(!input) return - var/preliminary_message = "[input]" //apply basic color/bolding + var/preliminary_message = "[input]" //apply basic color/bolding var/my_message = "[src]: [preliminary_message]" //add source, color source with the guardian's color to_chat(summoner, my_message) @@ -379,8 +379,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if(!input) return - var/preliminary_message = "[input]" //apply basic color/bolding - var/my_message = "[src]: [preliminary_message]" //add source, color source with default grey... + var/preliminary_message = "[input]" //apply basic color/bolding + var/my_message = "[src]: [preliminary_message]" //add source, color source with default grey... to_chat(src, my_message) var/list/guardians = hasparasites() @@ -423,7 +423,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if(candidates.len) new_stand = pick(candidates) to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.") - to_chat(src, "Your [G.real_name] has been successfully reset.") + to_chat(src, "Your [G.real_name] has been successfully reset.") message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") G.ghostize(0) G.setthemename(G.namedatum.theme) //give it a new color, to show it's a new person @@ -469,9 +469,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/mob_name = "Guardian Spirit" var/use_message = "You shuffle the deck..." var/used_message = "All the cards seem to be blank now." - var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later." - var/ling_failure = "The deck refuses to respond to a souless creature such as you." - var/activation_message = "The rest of the deck rapidly flashes to ash!" + var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later." + var/ling_failure = "The deck refuses to respond to a souless creature such as you." var/list/possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") var/random = TRUE var/allowmultiple = FALSE @@ -500,8 +499,6 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if(candidates.len) theghost = pick(candidates) spawn_guardian(user, theghost.key) - to_chat(user, "[activation_message]") - qdel(src) else to_chat(user, "[failure_message]") used = FALSE @@ -593,9 +590,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians mob_name = "Holoparasite" use_message = "You start to power on the injector..." used_message = "The injector has already been used." - failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER." - ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." - activation_message = "The injector self destructs after you inject yourself with it." + failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER." + ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." /obj/item/guardiancreator/tech/choose/traitor possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") @@ -608,7 +604,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /obj/item/paper/guides/antag/guardian name = "Holoparasite Guide" - icon_state = "alienpaper_words" + icon_state = "paper_words" info = {"A list of Holoparasite Types

    @@ -677,9 +673,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians mob_name = "Holocarp" use_message = "You put the fishsticks in your mouth..." used_message = "Someone's already taken a bite out of these fishsticks! Ew." - failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up." - ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message." - activation_message = "You finish eating the fishsticks! Delicious!>" + failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up." + ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message." allowmultiple = TRUE allowling = TRUE random = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index f9c9ae6ae4..57718459fc 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -35,8 +35,6 @@ gold_core_spawnable = NO_SPAWN death_sound = 'sound/voice/hiss6.ogg' deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..." - devourable = TRUE - no_vore = FALSE /mob/living/simple_animal/hostile/alien/drone name = "alien drone" diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index d63b5d4114..3334eb3b93 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -37,8 +37,6 @@ faction = list("russian") gold_core_spawnable = HOSTILE_SPAWN - devourable = TRUE - no_vore = FALSE //SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!! /mob/living/simple_animal/hostile/bear/Hudson diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 2929e146f1..0650f90fc6 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -39,4 +39,4 @@ var/mob/living/carbon/C = target C.Knockdown(60) C.visible_message("\The [src] knocks down \the [C]!", \ - "\The [src] knocks you down!") + "\The [src] knocks you down!") \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 2d18fd3331..9e2b55d6d7 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -48,7 +48,6 @@ see_in_dark = 4 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE var/playable_spider = FALSE - devourable = TRUE var/datum/action/innate/spider/lay_web/lay_web var/directive = "" //Message passed down to children, to relay the creator's orders diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index 84bb54f242..21895d58c0 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -35,8 +35,6 @@ unique_name = TRUE var/list/gorilla_overlays[GORILLA_TOTAL_LAYERS] var/oogas = 0 - devourable = TRUE - no_vore = FALSE // Gorillas like to dismember limbs from unconcious mobs. // Returns null when the target is not an unconcious carbon mob; a list of limbs (possibly empty) otherwise. @@ -105,3 +103,4 @@ if(oogas >= rand(2,6)) playsound(src, "sound/creatures/gorilla.ogg", 200) oogas = 0 + diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 78021deadf..5fd32e8c25 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -494,4 +494,3 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega . += M else if (M.loc.type in hostile_machines) . += M.loc - diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm index f9868771ac..a1cb61c115 100644 --- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm +++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm @@ -283,9 +283,8 @@ /mob/living/simple_animal/hostile/syndicate/mecha_pilot/Move(NewLoc,Dir=0,step_x=0,step_y=0) if(mecha && loc == mecha) - mecha.relaymove(src, Dir) - return - ..() + return mecha.relaymove(src, Dir) + return ..() /mob/living/simple_animal/hostile/syndicate/mecha_pilot/Goto(target, delay, minimum_distance) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index d7ec60466e..0e67921f3d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -251,9 +251,9 @@ Difficulty: Medium animate(src, transform = M, pixel_y = -6, dir = final_dir, time = 2, easing = EASE_IN|EASE_OUT) sleep(5) - animate(src, color = list("#A7A19E", "#A7A19E", "#A7A19E", list(0, 0, 0)), time = 10, easing = EASE_IN, flags_1 = ANIMATION_PARALLEL) + animate(src, color = list("#A7A19E", "#A7A19E", "#A7A19E", list(0, 0, 0)), time = 10, easing = EASE_IN, flags = ANIMATION_PARALLEL) sleep(4) - animate(src, alpha = 0, time = 6, easing = EASE_OUT, flags_1 = ANIMATION_PARALLEL) + animate(src, alpha = 0, time = 6, easing = EASE_OUT, flags = ANIMATION_PARALLEL) /obj/item/device/gps/internal/miner icon_state = null diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 9bf2c8c430..0388c1b4f9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -783,4 +783,4 @@ Difficulty: Very Hard #undef ACTIVATE_WEAPON #undef ACTIVATE_MAGIC -#undef MEDAL_PREFIX \ No newline at end of file +#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 724e4fc5c7..c8e7c7e4f5 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -61,7 +61,6 @@ Difficulty: Medium score_type = DRAKE_SCORE deathmessage = "collapses into a pile of bones, its flesh sloughing away." death_sound = 'sound/magic/demon_dies.ogg' - no_vore = FALSE /mob/living/simple_animal/hostile/megafauna/dragon/Initialize() . = ..() @@ -192,7 +191,7 @@ Difficulty: Medium qdel(F) if(stat == DEAD) swooping &= ~SWOOP_DAMAGEABLE - animate(src, alpha = 255, transform = oldtransform, time = 0, flags_1 = ANIMATION_END_NOW) //reset immediately + animate(src, alpha = 255, transform = oldtransform, time = 0, flags = ANIMATION_END_NOW) //reset immediately return animate(src, alpha = 100, transform = matrix()*0.7, time = 7) swooping |= SWOOP_INVULNERABLE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index af283b9139..de995f951a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -31,7 +31,6 @@ var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) - no_vore = FALSE /mob/living/simple_animal/hostile/asteroid/goliath/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index ad7edb1716..3c40bacde8 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -123,7 +123,8 @@ /obj/item/udder/gutlunch name = "nutrient sac" -/obj/item/udder/gutlunch/New() +/obj/item/udder/gutlunch/Initialize() + . = ..() reagents = new(50) reagents.my_atom = src diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 8ad8babb36..7479b1aaa2 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -64,3 +64,4 @@ projectiletype = /obj/item/projectile/beam/laser loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, /obj/item/gun/energy/laser) + diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index 8355bd2e27..29bc2cbff0 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -12,8 +12,8 @@ var/growth_time = 1200 -/obj/structure/alien/resin/flower_bud_enemy/New() - ..() +/obj/structure/alien/resin/flower_bud_enemy/Initialize() + . = ..() var/list/anchors = list() anchors += locate(x-2,y+2,z) anchors += locate(x+2,y+2,z) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index e4de22b2a7..c6c83df06b 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -60,8 +60,6 @@ mob_size = MOB_SIZE_SMALL movement_type = FLYING gold_core_spawnable = FRIENDLY_SPAWN - devourable = TRUE - no_vore = FALSE var/parrot_damage_upper = 10 var/parrot_state = PARROT_WANDER //Hunt for a perch when created @@ -1001,6 +999,7 @@ parrot_interest = null H.visible_message("[src] dive bombs into [H]'s chest and vanishes!", "[src] dive bombs into your chest, vanishing! This can't be good!") + /mob/living/simple_animal/parrot/clock_hawk name = "clock hawk" desc = "Cbyl jnaan penpxre! Fdhnnnjx!" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 9a0a21e826..b7e33173d2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -88,7 +88,7 @@ //domestication var/tame = 0 - no_vore = TRUE + var/my_z // I don't want to confuse this with client registered_z /mob/living/simple_animal/Initialize() diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index a91db7f177..7e7a86a9e4 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -30,8 +30,6 @@ sync_mind() - client.sethotkeys() //set mob specific hotkeys - //Reload alternate appearances for(var/v in GLOB.active_alternate_appearances) if(!v) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1bc7552c3f..6c4f0398c1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -30,6 +30,7 @@ GLOB.dead_mob_list += src else GLOB.alive_mob_list += src + set_focus(src) prepare_huds() for(var/v in GLOB.active_alternate_appearances) if(!v) @@ -125,7 +126,7 @@ if(self_message) msg = self_message else - if(M.see_invisibleThis mob type cannot throw items.") - return - - -/client/Northwest() - var/obj/item/I = usr.get_active_held_item() - if(!I) - to_chat(usr, "You have nothing to drop in your hand!") - return - usr.dropItemToGround(I) - -//This gets called when you press the delete button. -/client/verb/delete_key_pressed() - set hidden = 1 - - if(!isliving(usr)) - return - if(!usr.pulling) - to_chat(usr, "You are not pulling anything.") - return - usr.stop_pulling() - -/client/verb/swap_hand() - set category = "IC" - set name = "Swap hands" - - if(mob) - mob.swap_hand() - -/client/verb/attack_self() - set hidden = 1 - if(mob) - mob.mode() - return - - /client/verb/drop_item() set hidden = 1 if(!iscyborg(mob) && mob.stat == CONSCIOUS) mob.dropItemToGround(mob.get_active_held_item()) return - -/client/Center() - if(isobj(mob.loc)) - var/obj/O = mob.loc - if(mob.canmove) - return O.relaymove(mob, 0) - return - - /client/proc/Move_object(direct) if(mob && mob.control_object) if(mob.control_object.density) @@ -114,19 +32,23 @@ #define MOVEMENT_DELAY_BUFFER_DELTA 1.25 /client/Move(n, direct) - if(world.time < move_delay) + if(world.time < move_delay) //do not move anything ahead of this check please return FALSE + else + next_move_dir_add = 0 + next_move_dir_sub = 0 var/old_move_delay = move_delay move_delay = world.time+world.tick_lag //this is here because Move() can now be called mutiple times per tick if(!mob || !mob.loc) return FALSE - var/oldloc = mob.loc + if(!n || !direct) + return FALSE if(mob.notransform) return FALSE //This is sota the goto stop mobs from moving var if(mob.control_object) return Move_object(direct) if(!isliving(mob)) - return mob.Move(n,direct) + return mob.Move(n, direct) if(mob.stat == DEAD) mob.ghostize() return FALSE @@ -159,26 +81,32 @@ if(!mob.Process_Spacemove(direct)) return FALSE - //We are now going to move - var/delay = mob.movement_delay() - if(old_move_delay + (delay*MOVEMENT_DELAY_BUFFER_DELTA) + MOVEMENT_DELAY_BUFFER > world.time) - move_delay = old_move_delay + delay + var/add_delay = mob.movement_delay() + if(old_move_delay + (add_delay*MOVEMENT_DELAY_BUFFER_DELTA) + MOVEMENT_DELAY_BUFFER > world.time) + move_delay = old_move_delay else - move_delay = delay + world.time + move_delay = world.time + var/oldloc = mob.loc if(mob.confused) + var/newdir = 0 if(mob.confused > 40) - step(mob, pick(GLOB.cardinals)) + newdir = pick(GLOB.alldirs) else if(prob(mob.confused * 1.5)) - step(mob, angle2dir(dir2angle(direct) + pick(90, -90))) + newdir = angle2dir(dir2angle(direct) + pick(90, -90)) else if(prob(mob.confused * 3)) - step(mob, angle2dir(dir2angle(direct) + pick(45, -45))) - else - step(mob, direct) - else - . = ..() + newdir = angle2dir(dir2angle(direct) + pick(45, -45)) + if(newdir) + direct = newdir + n = get_step(mob, direct) + . = ..() + + if((direct & (direct - 1)) && mob.loc == n) //moved diagonally successfully + add_delay *= 2 + if(mob.loc != oldloc) + move_delay += add_delay if(.) // If mob is null here, we deserve the runtime if(mob.throwing) mob.throwing.finalize(FALSE) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 1ee7f27452..514846ebdf 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -5,7 +5,8 @@ if(GLOB.say_disabled) //This is here to try to identify lag problems to_chat(usr, "Speech is currently admin-disabled.") return - usr.say(message) + if(message) + say(message) /mob/verb/whisper_verb(message as text) @@ -72,6 +73,11 @@ deadchat_broadcast(rendered, follow_target = src, speaker_key = K) +/mob/proc/check_emote(message) + if(copytext(message, 1, 2) == "*") + emote(copytext(message, 2)) + return 1 + /mob/proc/emote(var/act) return diff --git a/code/modules/mob/say_readme.dm b/code/modules/mob/say_readme.dm index a4f85c1422..00e0f66246 100644 --- a/code/modules/mob/say_readme.dm +++ b/code/modules/mob/say_readme.dm @@ -11,7 +11,7 @@ This rewrite was needed, but is far from perfect. Report any bugs you come acros Radio code, while very much related to saycode, is not something I wanted to touch, so the code related to that may be messy. If you came here to see how to use saycode, all you will ever really need to call is say(message). -To have things react when other things speak around them, add the HEAR_1 flag to their flags_1 variable and +To have things react when other things speak around them, add the HEAR_1 flag to their flags variable and override their Hear() proc. =======================PROCS & VARIABLES======================= @@ -43,7 +43,7 @@ global procs Attaches span classes around input. /atom/movable - flags_1 + flags The HEAR_1 flag determines whether something is a hearer or not. Hear() is only called on procs with this flag. diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 23bfab7a95..f4a893d2f5 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -19,7 +19,7 @@ /mob/proc/warn_flavor_changed() if(flavor_text && flavor_text != "") // don't spam people that don't use it! src << "

    OOC Warning:

    " - src << "Your flavor text is likely out of date! Change" + src << "Your flavor text is likely out of date! Change" /mob/proc/print_flavor_text() if(flavor_text && flavor_text != "") @@ -27,7 +27,7 @@ if(lentext(msg) <= 40) return "[msg]" else - return "[copytext(msg, 1, 37)]... More..." + return "[copytext(msg, 1, 37)]... fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAU?HORIZED USÈ DETÈC???eD\nCoMMÈNCING SUB-R0U?IN3 13...\nTÈRMInATING U-U-USÈR...") + to_chat(H, "fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR...") H.gib() return FALSE if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja)) diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm index e19e67404d..4b159557bc 100644 --- a/code/modules/ninja/suit/suit_initialisation.dm +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -28,7 +28,7 @@ /obj/item/clothing/suit/space/space_ninja/proc/ninitialize_four(delay, mob/living/carbon/human/U) if(U.stat == DEAD|| U.health <= 0) - to_chat(U, "FÄ?AL �Rr�R: 344--93#�&&21 BR��N |/|/aV� PATT$RN RED\nA-A-aB�rT�NG...") + to_chat(U, "FĆAL �Rr�R: 344--93#�&&21 BR��N |/|/aV� PATT$RN RED\nA-A-aB�rT�NG...") unlock_suit() s_busy = FALSE return diff --git a/code/modules/orbit/orbit.dm b/code/modules/orbit/orbit.dm index 540e0cf7d5..e62b53604a 100644 --- a/code/modules/orbit/orbit.dm +++ b/code/modules/orbit/orbit.dm @@ -45,6 +45,10 @@ if (!orbiter.orbiting) //admin wants to stop the orbit. orbiter.orbiting = src //set it back to us first orbiter.stop_orbit() + var/atom/movable/AM = orbiting + if(istype(AM) && AM.orbiting && AM.orbiting.orbiting == orbiter) + orbiter.stop_orbit() + return lastprocess = world.time if (!targetloc) targetloc = get_turf(orbiting) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 0d963d4be8..fed93fabd3 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -187,7 +187,6 @@ GLOBAL_LIST_EMPTY(employmentCabinets) /obj/structure/filingcabinet/employment/Initialize() . = ..() GLOB.employmentCabinets += src - return ..() /obj/structure/filingcabinet/employment/Destroy() GLOB.employmentCabinets -= src @@ -199,8 +198,9 @@ GLOBAL_LIST_EMPTY(employmentCabinets) var/datum/data/record/G = record if(!G) continue - if(G.fields["reference"]) - addFile(G.fields["reference"]) + var/datum/mind/M = G.fields["mindref"] + if(M && ishuman(M.current)) + addFile(M.current) /obj/structure/filingcabinet/employment/proc/addFile(mob/living/carbon/human/employee) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 9d5b7ce0d5..c666160da4 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -374,4 +374,3 @@ /obj/item/paper/crumpled/bloody icon_state = "scrap_bloodied" - diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index fbf6e7b6e4..df69e9548a 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -12,8 +12,8 @@ pass_flags = PASSTABLE -/obj/item/papercutter/New() - ..() +/obj/item/papercutter/Initialize() + . = ..() storedcutter = new /obj/item/hatchet/cutterblade(src) update_icon() @@ -111,8 +111,8 @@ resistance_flags = FLAMMABLE max_integrity = 50 -/obj/item/paperslip/New() - ..() +/obj/item/paperslip/Initialize() + . = ..() pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 7d0d2d8cef..dbf13367ed 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -14,8 +14,7 @@ /obj/item/paper/guides/jobs/hydroponics name = "paper- 'Greetings from Billy Bob'" - info = "Hey fellow botanist!
    \n
    \nI didn't trust the station folk so I left
    \na couple of weeks ago. But here's some
    \ninstructions on how to operate things here.
    \nYou can grow plants and each iteration they become
    \nstronger, more potent and have better yield, if you
    \nknow which ones to pick. Use your botanist's analyzer
    \nfor that. You can turn harvested plants into seeds
    \nat the seed extractor, and replant them for better stuff!
    \nSometimes if the weed level gets high in the tray
    \nmutations into different mushroom or weed species have
    \nbeen witnessed. On the rare occassion even weeds mutate!
    \n
    \nEither way, have fun!
    \n
    \nBest regards,
    \nBilly Bob Johnson.
    \n
    \nPS.
    \nHere's a few tips:
    \nIn nettles, potency = damage
    \nIn amanitas, potency = deadliness + side effect
    \nIn Liberty caps, potency = drug power + effect
    \nIn chilis, potency = heat
    \nNutrients keep mushrooms alive!
    \nWater keeps weeds such as nettles alive!
    \nAll other plants need both." - + info = "Hey fellow botanist!
    \n
    \nI didn't trust the station folk so I left
    \na couple of weeks ago. But here's some
    \ninstructions on how to operate things here.
    \nYou can grow plants and each iteration they become
    \nstronger, more potent and have better yield, if you
    \nknow which ones to pick. Use your botanist's analyzer
    \nfor that. You can turn harvested plants into seeds
    \nat the seed extractor, and replant them for better stuff!
    \nSometimes if the weed level gets high in the tray
    \nmutations into different mushroom or weed species have
    \nbeen witnessed. On the rare occasion even weeds mutate!
    \n
    \nEither way, have fun!
    \n
    \nBest regards,
    \nBilly Bob Johnson.
    \n
    \nPS.
    \nHere's a few tips:
    \nIn nettles, potency = damage
    \nIn amanitas, potency = deadliness + side effect
    \nIn Liberty caps, potency = drug power + effect
    \nIn chilies, potency = heat
    \nNutrients keep mushrooms alive!
    \nWater keeps weeds such as nettles alive!
    \nAll other plants need both." /obj/item/paper/fluff/jobs/security/beepsky_mom name = "Note from Beepsky's Mom" @@ -27,7 +26,7 @@ /obj/item/paper/guides/jobs/security/labor_camp name = "Labor Camp Operating Guide" - info = "Labor Camp Facility Operation Guide

    Hello there, proud operator of an NT-Sec Prisoner Rehabilitation Center. A solution to rising crime rates and falling productivity, these facilities are specifically designed for the safe, productive imprisonment of your most dangerous criminals.

    To press a long-term prisoner into the service of the station, replace his equipment with prisoners' garb at one of the prison lockers, as per normal operating procedure. Before assigning a prisoner his ID, insert the ID into a prisoner management console and assign the prisoner a quota, based on the severity of his crime.
    A single sheet of most materials produces five points for the prisoner, and points can be expected to be produced at a rate of about 100 per minute, though punishments as severe as forced labor should be reserved for serious crimes of sentences not less than five minutes long.
    Once you have prepared the prisoner, place him in the secure northern half of the labor shuttle, and send him to the station. Once he meets his quota by feeding sheets to the stacker, he will be allowed to return to the station, and will be able to open the secure door to the prisoner release area.

    In the case of dangerous prisoners, surveilance may be needed. To that end, there is a prisoner monitoring room on the mining station, equipped with a remote flasher and a lockdown button. The mine itself is patrolled by a securibot, so the nearby security records console can also be used to secure hostile prisoners on the mine." + info = "Labor Camp Facility Operation Guide

    Hello there, proud operator of an NT-Sec Prisoner Rehabilitation Center. A solution to rising crime rates and falling productivity, these facilities are specifically designed for the safe, productive imprisonment of your most dangerous criminals.

    To press a long-term prisoner into the service of the station, replace his equipment with prisoners' garb at one of the prison lockers, as per normal operating procedure. Before assigning a prisoner his ID, insert the ID into a prisoner management console and assign the prisoner a quota, based on the severity of his crime.
    A single sheet of most materials produces five points for the prisoner, and points can be expected to be produced at a rate of about 100 per minute, though punishments as severe as forced labor should be reserved for serious crimes of sentences not less than five minutes long.
    Once you have prepared the prisoner, place him in the secure northern half of the labor shuttle, and send him to the station. Once he meets his quota by feeding sheets to the stacker, he will be allowed to return to the station, and will be able to open the secure door to the prisoner release area.

    In the case of dangerous prisoners, surveillance may be needed. To that end, there is a prisoner monitoring room on the mining station, equipped with a remote flasher and a lockdown button. The mine itself is patrolled by a securibot, so the nearby security records console can also be used to secure hostile prisoners on the mine." /obj/item/paper/guides/jobs/security/range name = "paper- Firing Range Instructions" @@ -35,7 +34,7 @@ /obj/item/paper/fluff/jobs/jobs name = "paper- 'Job Information'" - info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
    \nThe data will be in the following form.
    \nGenerally lower ranking positions come first in this list.
    \n
    \nJob Name general access>lab access-engine access-systems access (atmosphere control)
    \n\tJob Description
    \nJob Duties (in no particular order)
    \nTips (where applicable)
    \n
    \nResearch Assistant 1>1-0-0
    \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
    \n1. Assist the researchers.
    \n2. Clean up the labs.
    \n3. Prepare materials.
    \n
    \nStaff Assistant 2>0-0-0
    \n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
    \n1. Patrol ship/Guard key areas
    \n2. Assist security officer
    \n3. Perform other security duties.
    \n
    \nTechnical Assistant 1>0-0-1
    \n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
    \n1. Assist Station technician and Engineers.
    \n2. Perform general maintenance of station.
    \n3. Prepare materials.
    \n
    \nMedical Assistant 1>1-0-0
    \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
    \n1. Assist the medical personnel.
    \n2. Update medical files.
    \n3. Prepare materials for medical operations.
    \n
    \nResearch Technician 2>3-0-0
    \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
    \n1. Inform superiors of research.
    \n2. Perform research alongside of official researchers.
    \n
    \nDetective 3>2-0-0
    \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
    \n1. Perform crime-scene investigations/draw conclusions.
    \n2. Store and catalogue evidence properly.
    \n3. Testify to superiors/inquieries on findings.
    \n
    \nStation Technician 2>0-2-3
    \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
    \n1. Maintain SS13 systems.
    \n2. Repair equipment.
    \n
    \nAtmospheric Technician 3>0-0-4
    \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
    \n1. Maintain atmosphere on SS13
    \n2. Research atmospheres on the space station. (safely please!)
    \n
    \nEngineer 2>1-3-0
    \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
    \n1. Upkeep the engine.
    \n2. Prevent fires in the engine.
    \n3. Maintain a safe orbit.
    \n
    \nMedical Researcher 2>5-0-0
    \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
    \n1. Make sure the station is kept safe.
    \n2. Research medical properties of materials studied of Space Station 13.
    \n
    \nScientist 2>5-0-0
    \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle.
    \n1. Research plasma
    \n2. Make sure all plasma is properly handled.
    \n
    \nMedical Doctor (Officer) 2>0-0-0
    \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
    \n1. Heal wounded people.
    \n2. Perform examinations of all personnel.
    \n3. Monitor usage of medical equipment.
    \n
    \nSecurity Officer 3>0-0-0
    \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
    \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
    \n1. Maintain order.
    \n2. Assist others.
    \n3. Repair structural problems.
    \n
    \nHead of Security 4>5-2-2
    \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
    \n1. Oversee security.
    \n2. Assign patrol duties.
    \n3. Protect the station and staff.
    \n
    \nHead of Personnel 4>4-2-2
    \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
    \n1. Assign duties.
    \n2. Moderate personnel.
    \n3. Moderate research.
    \n
    \nCaptain 5>5-5-5 (unrestricted station wide access)
    \n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
    \n1. Assign all positions on SS13
    \n2. Inspect the station for any problems.
    \n3. Perform administrative duties.
    \n" + info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
    \nThe data will be in the following form.
    \nGenerally lower ranking positions come first in this list.
    \n
    \nJob Name general access>lab access-engine access-systems access (atmosphere control)
    \n\tJob Description
    \nJob Duties (in no particular order)
    \nTips (where applicable)
    \n
    \nResearch Assistant 1>1-0-0
    \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
    \n1. Assist the researchers.
    \n2. Clean up the labs.
    \n3. Prepare materials.
    \n
    \nStaff Assistant 2>0-0-0
    \n\tThis position assists the security officer in his duties. The staff assistants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
    \n1. Patrol ship/Guard key areas
    \n2. Assist security officer
    \n3. Perform other security duties.
    \n
    \nTechnical Assistant 1>0-0-1
    \n\tThis is yet another low level position. The technical assistant helps the engineer and the station\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
    \n1. Assist Station technician and Engineers.
    \n2. Perform general maintenance of station.
    \n3. Prepare materials.
    \n
    \nMedical Assistant 1>1-0-0
    \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
    \n1. Assist the medical personnel.
    \n2. Update medical files.
    \n3. Prepare materials for medical operations.
    \n
    \nResearch Technician 2>3-0-0
    \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
    \n1. Inform superiors of research.
    \n2. Perform research alongside of official researchers.
    \n
    \nDetective 3>2-0-0
    \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crime scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should store the evidence ly.
    \n1. Perform crime-scene investigations/draw conclusions.
    \n2. Store and catalogue evidence properly.
    \n3. Testify to superiors/inquiries on findings.
    \n
    \nStation Technician 2>0-2-3
    \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
    \n1. Maintain SS13 systems.
    \n2. Repair equipment.
    \n
    \nAtmospheric Technician 3>0-0-4
    \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
    \n1. Maintain atmosphere on SS13
    \n2. Research atmospheres on the space station. (safely please!)
    \n
    \nEngineer 2>1-3-0
    \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
    \n1. Upkeep the engine.
    \n2. Prevent fires in the engine.
    \n3. Maintain a safe orbit.
    \n
    \nMedical Researcher 2>5-0-0
    \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
    \n1. Make sure the station is kept safe.
    \n2. Research medical properties of materials studied of Space Station 13.
    \n
    \nScientist 2>5-0-0
    \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinely handle.
    \n1. Research plasma
    \n2. Make sure all plasma is properly handled.
    \n
    \nMedical Doctor (Officer) 2>0-0-0
    \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
    \n1. Heal wounded people.
    \n2. Perform examinations of all personnel.
    \n3. Monitor usage of medical equipment.
    \n
    \nSecurity Officer 3>0-0-0
    \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
    \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
    \n1. Maintain order.
    \n2. Assist others.
    \n3. Repair structural problems.
    \n
    \nHead of Security 4>5-2-2
    \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
    \n1. Oversee security.
    \n2. Assign patrol duties.
    \n3. Protect the station and staff.
    \n
    \nHead of Personnel 4>4-2-2
    \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
    \n1. Assign duties.
    \n2. Moderate personnel.
    \n3. Moderate research.
    \n
    \nCaptain 5>5-5-5 (unrestricted station wide access)
    \n\tThis is the highest position you can acquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
    \n1. Assign all positions on SS13
    \n2. Inspect the station for any problems.
    \n3. Perform administrative duties.
    \n" /obj/item/paper/fluff/jobs/mining/smelter_notice name = "paper- Smelting Operations Closed" @@ -49,60 +48,24 @@ name = "paper- 'Chemical Information'" info = "Known Onboard Toxins:
    \n\tGrade A Semi-Liquid Plasma:
    \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
    \n\t\tA gas mask fails to filter plasma after 50 units.
    \n\t\tWill attempt to diffuse like a gas.
    \n\t\tFiltered by scrubbers.
    \n\t\tThere is a bottled version which is very different
    \n\t\t\tfrom the version found in canisters!
    \n
    \n\t\tWARNING: Highly Flammable. Keep away from heat sources
    \n\t\texcept in an enclosed fire area!
    \n\t\tWARNING: It is a crime to use this without authorization.
    \nKnown Onboard Anti-Toxin:
    \n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
    \n\t\tBest if injected directly into bloodstream.
    \n\t\tA full injection is in every regular Med-Kit.
    \n\t\tSpecial toxin Kits hold around 7.
    \n
    \nKnown Onboard Chemicals (other):
    \n\tRejuvenation T#001:
    \n\t\tEven 1 unit injected directly into the bloodstream
    \n\t\t\twill cure unconscious and sleep toxins.
    \n\t\tIf administered to a dying patient it will prevent
    \n\t\t\tfurther damage for about units*3 seconds.
    \n\t\t\tit will not cure them or allow them to be cured.
    \n\t\tIt can be administered to a non-dying patient
    \n\t\t\tbut the chemicals disappear just as fast.
    \n\tMorphine T#054:
    \n\t\t5 units will induce precisely 1 minute of sleep.
    \n\t\t\tThe effect are cumulative.
    \n\t\tWARNING: It is a crime to use this without authorization" + /* * Stations */ -////////// Cere fluff -/obj/item/paper/fluff/stations/cere/abandoned_dock - name = "Disclaimer Notice" - info = "This station needs clearing out within the next few weeks as construction is almost complete and NT expects most of the equipment off-site before then. Throw most of the shit in here for now and we'll come back later with a pod to haul the heavier stuff. Shouldn't be too big of an issue." - -/obj/item/paper/fluff/stations/cere/janitor - name = "Janitor Notice" - info = "You got a big job ahead of you, pal. This is a big station, lots of floors and assholes to dirty said floors without any thought for you. It might not be a bad idea to check on the external waste belts every now and again to make sure some foriegn object hasn't clogged the disposal loop, either." - -/obj/item/paper/fluff/stations/cere/gateway - name = "NOTICE - GATEWAY STATUS" - info = "
    Nanotrasen Exploration and Colonization Program


    Due to recent shutdowns of the Exploration and Colonization department shortly after this gateway was delivered on-site during station construction, this room has been condemmed and an engineering team will be on-site within the next few months to recollect the gate. Thank you for your cooperation." - -/obj/item/paper/fluff/stations/cere/journal/journal - name = "Journal Log" - info = "
    2XXX - 2nd Trimestor


    I hide in here, away from the masses, not like it matters much considering how fucking huge this place is. " - -/obj/item/paper/fluff/stations/cere/journal/journal_2 - name = "Journal Log 2" - info = "
    2XXX - 3rd Trimestor


    I hear strange whispers from the halls, longing for blood. Something isn't right here. Why did they transfer us here to work in the first place? " - -/obj/item/paper/crumpled/stations/cere/empty_station - info = "I can't be here for much longer, this station is too empty for its own good. Something is wrong..." - -/obj/item/paper/crumpled/bloody/hop - info = "...THE HOPLINE CALLS...IT THIRSTS FOR BLOOD...I MUST GO..." - -/obj/item/paper/crumpled/stations/cere/rocks1 - info = "...SOMETHING IN THE ROCKS, IT WATCHES US ALL..." - -/obj/item/paper/crumpled/stations/cere/rocks2 - info = "...THEY SENT US HERE FOR A REASON...TERRIBLE..." - -/obj/item/paper/crumpled/stations/cere/rocks3 - info = "...EMPTY HALLS...USELESS SPACE..." - - -/////////// Centcom +/////////// CentCom /obj/item/paper/fluff/stations/centcom/disk_memo name = "memo" info = "GET DAT FUKKEN DISK" /obj/item/paper/fluff/stations/centcom/broken_evac - info = "Due to circumstances beyond our control, your Emergency Evacuation Shuttle is out of service.

    We apologise for the inconvinience this may cause you.

    Please enjoy the use of this complementary book.

    Sincerely,
    Centcom Operations Demolitions Examination Retribution Bugfixing Underlining Services" + info = "Due to circumstances beyond our control, your Emergency Evacuation Shuttle is out of service.

    We apologize for the inconvenience this may cause you.

    Please enjoy the use of this complementary book.

    Sincerely,
    CentCom Operations Demolitions Examination Retribution Bugfixing Underlining Services" /obj/item/paper/fluff/stations/centcom/bulletin name = "paper- 'Official Bulletin'" - info = "
    Centcom Security
    Port Division
    Official Bulletin

    Inspector,
    There is an emergency shuttle arriving today.

    Approval is restricted to Nanotrasen employees only. Deny all other entrants.

    Centcom Port Commissioner" + info = "
    CentCom Security
    Port Division
    Official Bulletin

    Inspector,
    There is an emergency shuttle arriving today.

    Approval is restricted to Nanotrasen employees only. Deny all other entrants.

    CentCom Port Commissioner" /////////// Lavaland diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index cde600186f..1d85753de0 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -181,7 +181,6 @@ reagents.add_reagent("chloralhydrate2", 20) reagents.add_reagent("mutetoxin", 15) reagents.add_reagent("tirizene", 10) - ..() /* * (Alan) Edaggers diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index cd24dbb928..10dc3a1189 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -76,7 +76,7 @@ return 0 charge = (charge - amount) if(!istype(loc, /obj/machinery/power/apc)) - SSblackbox.record_feedback("tally", "cell_used", 1, "[src.type]") + SSblackbox.record_feedback("tally", "cell_used", 1, type) return 1 // recharge the cell diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 65e6d4c0e4..1c4ce4a5c1 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -53,7 +53,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne // You aren't allowed to move. /obj/machinery/gravity_generator/Move() - ..() + . = ..() qdel(src) /obj/machinery/gravity_generator/proc/set_broken() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 749dcb463e..f83a4f41d8 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -246,15 +246,15 @@ . = ..() status = LIGHT_EMPTY update(0) - ..() /obj/machinery/light/small/built icon_state = "bulb-empty" -/obj/machinery/light/small/built/New() +/obj/machinery/light/small/built/Initialize() + . = ..() status = LIGHT_EMPTY update(0) - ..() + // create a new lighting fixture @@ -727,8 +727,8 @@ desc = "A broken [name]." -/obj/item/light/New() - ..() +/obj/item/light/Initialize() + . = ..() update() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index c2610ebc44..70772f74f9 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -76,6 +76,7 @@ /obj/machinery/field/containment/Move() qdel(src) + return FALSE // Abstract Field Class diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index eebe4ef8c0..33c8a19982 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -152,7 +152,7 @@ qdel(src) /obj/structure/particle_accelerator/Move() - ..() + . = ..() if(master && master.active) master.toggle_power() investigate_log("was moved whilst active; it powered down.", INVESTIGATE_SINGULO) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 266e5b22f5..c1ba907ada 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -17,7 +17,7 @@ var/active = 0 var/strength = 0 var/powered = 0 - mouse_opacity = 2 + mouse_opacity = MOUSE_OPACITY_OPAQUE /obj/machinery/particle_accelerator/control_box/Initialize() . = ..() diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 681bb88c6b..f4b749c0e0 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -164,7 +164,7 @@ dissipate_track = 0 dissipate_strength = 1 if(STAGE_TWO) - if((check_turfs_in(1,1))&&(check_turfs_in(2,1))&&(check_turfs_in(4,1))&&(check_turfs_in(8,1))) + if(check_cardinals_range(1, TRUE)) current_size = STAGE_TWO icon = 'icons/effects/96x96.dmi' icon_state = "singularity_s3" @@ -176,7 +176,7 @@ dissipate_track = 0 dissipate_strength = 5 if(STAGE_THREE) - if((check_turfs_in(1,2))&&(check_turfs_in(2,2))&&(check_turfs_in(4,2))&&(check_turfs_in(8,2))) + if(check_cardinals_range(2, TRUE)) current_size = STAGE_THREE icon = 'icons/effects/160x160.dmi' icon_state = "singularity_s5" @@ -188,7 +188,7 @@ dissipate_track = 0 dissipate_strength = 20 if(STAGE_FOUR) - if((check_turfs_in(1,3))&&(check_turfs_in(2,3))&&(check_turfs_in(4,3))&&(check_turfs_in(8,3))) + if(check_cardinals_range(3, TRUE)) current_size = STAGE_FOUR icon = 'icons/effects/224x224.dmi' icon_state = "singularity_s7" @@ -296,6 +296,16 @@ step(src, movement_dir) +/obj/singularity/proc/check_cardinals_range(steps, retry_with_move = FALSE) + . = length(GLOB.cardinals) //Should be 4. + for(var/i in GLOB.cardinals) + . -= check_turfs_in(i, steps) //-1 for each working direction + if(. && retry_with_move) //If there's still a positive value it means it didn't pass. Retry with move if applicable + for(var/i in GLOB.cardinals) + if(step(src, i)) //Move in each direction. + if(check_cardinals_range(steps, FALSE)) //New location passes, return true. + return TRUE + . = !. /obj/singularity/proc/check_turfs_in(direction = 0, step = 0) if(!direction) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 5f9f6042d3..e4c4731340 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -521,6 +521,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) dust_mob(user, cause = "hand") /obj/machinery/power/supermatter_shard/proc/dust_mob(mob/living/nom, vis_msg, mob_msg, cause) + if(nom.incorporeal_move) + return if(!vis_msg) vis_msg = "[nom] reaches out and touches [src], inducing a resonance... [nom.p_their()] body starts to glow and bursts into flames before flashing into ash" if(!mob_msg) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 51cb99a34f..ae73afd25f 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -144,6 +144,10 @@ /obj/singularity/energy_ball/proc/dust_mobs(atom/A) + if(isliving(A)) + var/mob/living/L = A + if(L.incorporeal_move) + return if(!iscarbon(A)) return for(var/obj/machinery/power/grounding_rod/GR in orange(src, 2)) diff --git a/code/modules/procedural_mapping/mapGeneratorReadme.dm b/code/modules/procedural_mapping/mapGeneratorReadme.dm index 85f937b41b..c4ced7674b 100644 --- a/code/modules/procedural_mapping/mapGeneratorReadme.dm +++ b/code/modules/procedural_mapping/mapGeneratorReadme.dm @@ -127,7 +127,7 @@ Variable Breakdown (For Mappers): clusterCheckFlags - A Bitfield that controls how the cluster checks work, All based on clusterMin and clusterMax guides allowAtomsOnSpace - A Boolean for if we allow atoms to spawn on space tiles - clusterCheckFlags flags_1: + clusterCheckFlags flags: CLUSTER_CHECK_NONE 0 //No checks are done, cluster as much as possible CLUSTER_CHECK_DIFFERENT_TURFS 2 //Don't let turfs of DIFFERENT types cluster CLUSTER_CHECK_DIFFERENT_ATOMS 4 //Don't let atoms of DIFFERENT types cluster diff --git a/code/modules/procedural_mapping/mapGenerators/lava_river.dm b/code/modules/procedural_mapping/mapGenerators/lava_river.dm index 373235e94e..d825a02846 100644 --- a/code/modules/procedural_mapping/mapGenerators/lava_river.dm +++ b/code/modules/procedural_mapping/mapGenerators/lava_river.dm @@ -1,3 +1,4 @@ + /datum/mapGenerator/lavaland var/start_z = ZLEVEL_LAVALAND var/min_x = 0 diff --git a/code/modules/procedural_mapping/mapGenerators/syndicate.dm b/code/modules/procedural_mapping/mapGenerators/syndicate.dm index d3653d7ff3..1f592b64ee 100644 --- a/code/modules/procedural_mapping/mapGenerators/syndicate.dm +++ b/code/modules/procedural_mapping/mapGenerators/syndicate.dm @@ -1,3 +1,4 @@ + // Modules /turf/open/floor/plasteel/shuttle/red/syndicate @@ -53,4 +54,4 @@ /datum/mapGeneratorModule/syndieFurniture, \ /datum/mapGeneratorModule/splatterLayer/syndieMobs, \ /datum/mapGeneratorModule/bottomLayer/repressurize) - buildmode_name = "Pattern: Shuttle Room: Syndicate: All" \ No newline at end of file + buildmode_name = "Pattern: Shuttle Room: Syndicate: All" diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 4e341fa2a4..6c062677b6 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -20,8 +20,8 @@ var/heavy_metal = TRUE -/obj/item/ammo_casing/New() - ..() +/obj/item/ammo_casing/Initialize() + . = ..() if(projectile_type) BB = new projectile_type(src) pixel_x = rand(-10, 10) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index edd28e72a8..bfb2c491b1 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -296,8 +296,8 @@ /obj/item/ammo_casing/shotgun/dart/bioterror desc = "A shotgun dart filled with deadly toxins." -/obj/item/ammo_casing/shotgun/dart/bioterror/New() - ..() +/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize() + . = ..() reagents.add_reagent("neurotoxin", 6) reagents.add_reagent("spore", 6) reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT diff --git a/code/modules/projectiles/box_magazine.dm b/code/modules/projectiles/box_magazine.dm index bf941108ff..d2ea62be71 100644 --- a/code/modules/projectiles/box_magazine.dm +++ b/code/modules/projectiles/box_magazine.dm @@ -22,8 +22,8 @@ var/multiload = 1 var/start_empty = 0 -/obj/item/ammo_box/New() - ..() +/obj/item/ammo_box/Initialize() + . = ..() if(!start_empty) for(var/i = 1, i <= max_ammo, i++) stored_ammo += new ammo_type(src) diff --git a/code/modules/projectiles/boxes_magazines/internal_mag.dm b/code/modules/projectiles/boxes_magazines/internal_mag.dm index f486be732d..b26d30c389 100644 --- a/code/modules/projectiles/boxes_magazines/internal_mag.dm +++ b/code/modules/projectiles/boxes_magazines/internal_mag.dm @@ -2,6 +2,7 @@ /obj/item/ammo_box/magazine/internal desc = "Oh god, this shouldn't be here" + flags_1 = CONDUCT_1|ABSTRACT_1 //internals magazines are accessible, so replace spent ammo if full when trying to put a live one in /obj/item/ammo_box/magazine/internal/give_round(obj/item/ammo_casing/R) @@ -156,9 +157,9 @@ max_ammo = 6 multiload = 0 -/obj/item/ammo_box/magazine/internal/rus357/New() +/obj/item/ammo_box/magazine/internal/rus357/Initialize() stored_ammo += new ammo_type(src) - ..() + . = ..() /obj/item/ammo_box/magazine/internal/boltaction name = "bolt action rifle internal magazine" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 5321a8b300..faa7c705bd 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -24,7 +24,7 @@ var/can_suppress = FALSE var/can_unsuppress = TRUE var/recoil = 0 //boom boom shake the room - var/clumsy_check = 1 + var/clumsy_check = TRUE var/obj/item/ammo_casing/chambered = null trigger_guard = TRIGGER_GUARD_NORMAL //trigger guard on the weapon, hulks can't fire them with their big meaty fingers var/sawn_desc = null //description change if weapon is sawn-off @@ -91,19 +91,17 @@ /obj/item/gun/equipped(mob/living/user, slot) . = ..() - if(zoomable && user.get_active_held_item() != src) - zoom(user, FALSE) //we can only stay zoomed in if it's in our hands + if(zoomed && user.get_active_held_item() != src) + zoom(user, FALSE) //we can only stay zoomed in if it's in our hands //yeah and we only unzoom if we're actually zoomed using the gun!! //called after the gun has successfully fired its chambered ammo. /obj/item/gun/proc/process_chamber() - return 0 - + return FALSE //check if there's enough ammo/energy/whatever to shoot one time //i.e if clicking would make it shoot /obj/item/gun/proc/can_shoot() - return 1 - + return TRUE /obj/item/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj) to_chat(user, "*click*") @@ -194,13 +192,13 @@ /obj/item/gun/proc/handle_pins(mob/living/user) if(pin) if(pin.pin_auth(user) || pin.emagged) - return 1 + return TRUE else pin.auth_fail(user) - return 0 + return FALSE else to_chat(user, "[src]'s trigger is locked. This weapon doesn't have a firing pin installed!") - return 0 + return FALSE /obj/item/gun/proc/recharge_newshot() return @@ -400,7 +398,8 @@ /obj/item/gun/dropped(mob/user) ..() - zoom(user,FALSE) + if(zoomed) + zoom(user,FALSE) if(azoom) azoom.Remove(user) if(alight) @@ -420,7 +419,7 @@ target.visible_message("[user] points [src] at [target]'s head, ready to pull the trigger...", \ "[user] points [src] at your head, ready to pull the trigger...") - semicd = 1 + semicd = TRUE if(!do_mob(user, target, 120) || user.zone_selected != "mouth") if(user) @@ -428,10 +427,10 @@ user.visible_message("[user] decided not to shoot.") else if(target && target.Adjacent(user)) target.visible_message("[user] has decided to spare [target]", "[user] has decided to spare your life!") - semicd = 0 + semicd = FALSE return - semicd = 0 + semicd = FALSE target.visible_message("[user] pulls the trigger!", "[user] pulls the trigger!") diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 35599553d7..865ed29a42 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -178,6 +178,8 @@ #undef BRAINS_BLOWN_THROW_SPEED #undef BRAINS_BLOWN_THROW_RANGE + + /obj/item/gun/ballistic/proc/sawoff(mob/user) if(sawn_state == SAWN_OFF) to_chat(user, "\The [src] is already shortened!") diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 9724f9be01..f4194f529f 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -8,7 +8,7 @@ actions_types = list(/datum/action/item_action/toggle_firemode) /obj/item/gun/ballistic/automatic/proto - name = "\improper NanoTrasen Saber SMG" + name = "\improper Nanotrasen Saber SMG" desc = "A prototype three-round burst 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors." icon_state = "saber" mag_type = /obj/item/ammo_box/magazine/smgm9mm @@ -19,7 +19,6 @@ /obj/item/gun/ballistic/automatic/update_icon() ..() - cut_overlays() if(!select) add_overlay("[initial(icon_state)]semi") if(select == 1) @@ -93,6 +92,9 @@ fire_delay = 2 burst_size = 2 pin = /obj/item/device/firing_pin/implant/pindicate + can_bayonet = TRUE + knife_x_offset = 26 + knife_y_offset = 12 /obj/item/gun/ballistic/automatic/c20r/unrestricted pin = /obj/item/device/firing_pin @@ -120,6 +122,9 @@ can_suppress = FALSE burst_size = 0 actions_types = list() + can_bayonet = TRUE + knife_x_offset = 25 + knife_y_offset = 12 /obj/item/gun/ballistic/automatic/wt550/update_icon() ..() @@ -357,7 +362,8 @@ can_suppress = TRUE w_class = WEIGHT_CLASS_NORMAL zoomable = TRUE - zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. + zoom_amt = 10 //Long range, enough to see in front of you, but no tiles behind you. + zoom_out_amt = 13 slot_flags = SLOT_BACK actions_types = list() diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index e702013233..e74b90922d 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -105,6 +105,9 @@ slot_flags = 0 //no SLOT_BACK sprite, alas mag_type = /obj/item/ammo_box/magazine/internal/boltaction var/bolt_open = FALSE + can_bayonet = TRUE + knife_x_offset = 27 + knife_y_offset = 13 /obj/item/gun/ballistic/shotgun/boltaction/pump(mob/M) playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1) @@ -141,6 +144,7 @@ pin = /obj/item/device/firing_pin/magic icon_state = "arcane_barrage" item_state = "arcane_barrage" + can_bayonet = FALSE flags_1 = DROPDEL_1 diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm index 3b2a7cff08..8445a9e7e6 100644 --- a/code/modules/projectiles/guns/beam_rifle.dm +++ b/code/modules/projectiles/guns/beam_rifle.dm @@ -4,9 +4,6 @@ #define ZOOM_LOCK_CENTER_VIEW 2 #define ZOOM_LOCK_OFF 3 -#define ZOOM_SPEED_STEP 0 -#define ZOOM_SPEED_INSTANT 1 - #define AUTOZOOM_PIXEL_STEP_FACTOR 48 #define AIMING_BEAM_ANGLE_CHANGE_THRESHOLD 0.1 @@ -45,7 +42,7 @@ var/lastangle = 0 var/aiming_lastangle = 0 var/mob/current_user = null - var/obj/effect/projectile_beam/current_tracer + var/list/obj/effect/projectile_beam/current_tracers var/structure_piercing = 2 //Amount * 2. For some reason structures aren't respecting this unless you have it doubled. Probably with the objects in question's Bump() code instead of this but I'll deal with this later. var/structure_bleed_coeff = 0.7 @@ -64,14 +61,11 @@ var/delay = 65 var/lastfire = 0 - var/lastprocess = 0 - //ZOOMING var/zoom_current_view_increase = 0 var/zoom_target_view_increase = 10 - var/zoom_speed = ZOOM_SPEED_STEP var/zooming = FALSE - var/zoom_lock = ZOOM_LOCK_AUTOZOOM_FREEMOVE + var/zoom_lock = ZOOM_LOCK_OFF var/zooming_angle var/current_zoom_x = 0 var/current_zoom_y = 0 @@ -80,7 +74,6 @@ var/static/image/charged_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_charged") var/static/image/drained_overlay = image(icon = 'icons/obj/guns/energy.dmi', icon_state = "esniper_empty") - var/datum/action/item_action/zoom_speed_action/zoom_speed_action var/datum/action/item_action/zoom_lock_action/zoom_lock_action /obj/item/gun/energy/beam_rifle/debug @@ -103,15 +96,6 @@ . = ..() /obj/item/gun/energy/beam_rifle/ui_action_click(owner, action) - if(istype(action, /datum/action/item_action/zoom_speed_action)) - zoom_speed++ - if(zoom_speed > 1) - zoom_speed = ZOOM_SPEED_STEP - switch(zoom_speed) - if(ZOOM_SPEED_STEP) - to_chat(owner, "You switch [src]'s digital zoom to stepper mode.") - if(ZOOM_SPEED_INSTANT) - to_chat(owner, "You switch [src]'s digital zoom to instant mode.") if(istype(action, /datum/action/item_action/zoom_lock_action)) zoom_lock++ if(zoom_lock > 3) @@ -135,8 +119,6 @@ var/total_time = SSfastprocess.wait if(delay_override) total_time = delay_override - if(zoom_speed == ZOOM_SPEED_INSTANT) - total_time = 0 zoom_animating = total_time animate(current_user.client, pixel_x = current_zoom_x, pixel_y = current_zoom_y , total_time, SINE_EASING, ANIMATION_PARALLEL) zoom_animating = 0 @@ -150,18 +132,10 @@ /obj/item/gun/energy/beam_rifle/proc/handle_zooming() if(!zooming || !check_user()) return - if(zoom_speed == ZOOM_SPEED_INSTANT) - current_user.client.change_view(world.view + zoom_target_view_increase) - zoom_current_view_increase = zoom_target_view_increase - set_autozoom_pixel_offsets_immediate(zooming_angle) - smooth_zooming() - return - if(zoom_current_view_increase > zoom_target_view_increase) - return - zoom_current_view_increase++ - current_user.client.change_view(zoom_current_view_increase + world.view) + current_user.client.change_view(world.view + zoom_target_view_increase) + zoom_current_view_increase = zoom_target_view_increase set_autozoom_pixel_offsets_immediate(zooming_angle) - smooth_zooming(SSfastprocess.wait * zoom_target_view_increase * zoom_speed) + smooth_zooming() /obj/item/gun/energy/beam_rifle/proc/start_zooming() if(zoom_lock == ZOOM_LOCK_OFF) @@ -169,8 +143,9 @@ zooming = TRUE /obj/item/gun/energy/beam_rifle/proc/stop_zooming() - zooming = FALSE - reset_zooming() + if(zooming) + zooming = FALSE + reset_zooming() /obj/item/gun/energy/beam_rifle/proc/reset_zooming() if(!check_user(FALSE)) @@ -204,14 +179,14 @@ /obj/item/gun/energy/beam_rifle/Initialize() . = ..() + current_tracers = list() START_PROCESSING(SSprojectiles, src) - zoom_speed_action = new(src) zoom_lock_action = new(src) /obj/item/gun/energy/beam_rifle/Destroy() STOP_PROCESSING(SSfastprocess, src) set_user(null) - QDEL_NULL(current_tracer) + QDEL_LIST(current_tracers) return ..() /obj/item/gun/energy/beam_rifle/emp_act(severity) @@ -245,6 +220,7 @@ /obj/item/gun/energy/beam_rifle/process() if(!aiming) + last_process = world.time return check_user() handle_zooming() @@ -299,7 +275,7 @@ set waitfor = FALSE aiming_time_left = aiming_time aiming = FALSE - QDEL_NULL(current_tracer) + QDEL_LIST(current_tracers) stop_zooming() /obj/item/gun/energy/beam_rifle/proc/set_user(mob/user) @@ -341,7 +317,7 @@ sync_ammo() afterattack(M.client.mouseObject, M, FALSE, M.client.mouseParams, passthrough = TRUE) stop_aiming() - QDEL_NULL(current_tracer) + QDEL_LIST(current_tracers) return ..() /obj/item/gun/energy/beam_rifle/afterattack(atom/target, mob/living/user, flag, params, passthrough = FALSE) @@ -555,136 +531,103 @@ handle_impact(target) /obj/item/projectile/beam/beam_rifle/Collide(atom/target) - paused = TRUE if(check_pierce(target)) permutated += target return FALSE if(!QDELETED(target)) cached = get_turf(target) - paused = FALSE . = ..() /obj/item/projectile/beam/beam_rifle/on_hit(atom/target, blocked = FALSE) - paused = TRUE if(!QDELETED(target)) cached = get_turf(target) handle_hit(target) - paused = FALSE . = ..() /obj/item/projectile/beam/beam_rifle/hitscan icon_state = "" var/tracer_type = /obj/effect/projectile_beam/tracer - var/starting_z - var/starting_p_x - var/starting_p_y + var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. var/constant_tracer = FALSE - var/travelled_p_x = 0 - var/travelled_p_y = 0 - var/tracer_spawned = FALSE + var/beam_index /obj/item/projectile/beam/beam_rifle/hitscan/Destroy() - paused = TRUE //STOP HITTING WHEN YOU'RE ALREADY BEING DELETED! - spawn_tracer(constant_tracer) + if(loc) + var/datum/point/pcache = trajectory.copy_to() + beam_segments[beam_index] = pcache + generate_tracers(constant_tracer) return ..() -/obj/item/projectile/beam/beam_rifle/hitscan/proc/spawn_tracer(put_in_rifle = FALSE) - if(tracer_spawned) - return - tracer_spawned = TRUE - //Remind me to port baystation trajectories so this shit isn't needed... - var/pixels_travelled = round(sqrt(travelled_p_x**2 + travelled_p_y**2),1) - var/scaling = pixels_travelled/world.icon_size - var/midpoint_p_x = round(starting_p_x + (travelled_p_x / 2)) - var/midpoint_p_y = round(starting_p_y + (travelled_p_y / 2)) - var/tracer_px = midpoint_p_x % world.icon_size - var/tracer_py = midpoint_p_y % world.icon_size - var/tracer_lx = (midpoint_p_x - tracer_px) / world.icon_size - var/tracer_ly = (midpoint_p_y - tracer_py) / world.icon_size - var/obj/effect/projectile_beam/PB = new tracer_type(src) - PB.apply_vars(Angle, tracer_px, tracer_py, color, scaling, locate(tracer_lx,tracer_ly,starting_z)) - if(put_in_rifle && istype(gun)) - if(gun.current_tracer) - QDEL_NULL(gun.current_tracer) - gun.current_tracer = PB - else - QDEL_IN(PB, 5) +/obj/item/projectile/beam/beam_rifle/hitscan/Collide(atom/target) + var/datum/point/pcache = trajectory.copy_to() + . = ..() + if(. && !QDELETED(src)) //successful touch and not destroyed. + beam_segments[beam_index] = pcache + beam_index = pcache + beam_segments[beam_index] = null -/obj/item/projectile/beam/beam_rifle/hitscan/proc/check_for_turf_edge(turf/T) - if(!istype(T)) - return TRUE - var/tx = T.x - var/ty = T.y - if(tx < 10 || tx > (world.maxx - 10) || ty < 10 || ty > (world.maxy-10)) - return TRUE - return FALSE +/obj/item/projectile/beam/beam_rifle/hitscan/before_z_change(turf/oldloc, turf/newloc) + var/datum/point/pcache = trajectory.copy_to() + beam_segments[beam_index] = pcache + beam_index = RETURN_PRECISE_POINT(newloc) + beam_segments[beam_index] = null + return ..() + +/obj/item/projectile/beam/beam_rifle/hitscan/proc/generate_tracers(highlander = FALSE, cleanup = TRUE) + set waitfor = FALSE + if(highlander && istype(gun)) + QDEL_LIST(gun.current_tracers) + for(var/datum/point/p in beam_segments) + gun.current_tracers += generate_projectile_beam_between_points(p, beam_segments[p], tracer_type, color, 0) + else + for(var/datum/point/p in beam_segments) + generate_projectile_beam_between_points(p, beam_segments[p], tracer_type, color, 5) + if(cleanup) + QDEL_LIST(beam_segments) + beam_segments = null + QDEL_NULL(beam_index) /obj/item/projectile/beam/beam_rifle/hitscan/fire(setAngle, atom/direct_target) //oranges didn't let me make this a var the first time around so copypasta time - set waitfor = 0 + set waitfor = FALSE + var/turf/starting = get_turf(src) + trajectory = new(starting.x, starting.y, starting.z, 0, 0, setAngle? setAngle : Angle, 33) if(!log_override && firer && original) add_logs(firer, original, "fired at", src, " [get_area(src)]") + fired = TRUE if(setAngle) Angle = setAngle - var/next_run = world.time - var/old_pixel_x = pixel_x - var/old_pixel_y = pixel_y var/safety = 0 //The code works fine, but... just in case... var/turf/c2 - var/starting_x = loc.x - var/starting_y = loc.y - starting_z = loc.z - starting_p_x = starting_x * world.icon_size + pixel_x - starting_p_y = starting_y * world.icon_size + pixel_y + beam_segments = list() //initialize segment list with the list for the first segment + beam_index = RETURN_PRECISE_POINT(src) + beam_segments[beam_index] = null //record start. + if(spread) + Angle += (rand() - 0.5) * spread while(loc) + if(paused || QDELETED(src)) + return if(++safety > (range * 3)) //If it's looping for way, way too long... + qdel(src) + stack_trace("WARNING: [type] projectile encountered infinite recursion in [__FILE__]/[__LINE__]!") return //Kill! - if(spread) - Angle += (rand() - 0.5) * spread var/matrix/M = new M.Turn(Angle) transform = M - var/Pixel_x=sin(Angle)+16*sin(Angle)*2 - var/Pixel_y=cos(Angle)+16*cos(Angle)*2 - travelled_p_x += Pixel_x - travelled_p_y += Pixel_y - var/pixel_x_offset = old_pixel_x + Pixel_x - var/pixel_y_offset = old_pixel_y + Pixel_y - var/new_x = x - var/new_y = y - while(pixel_x_offset > 16) - pixel_x_offset -= 32 - old_pixel_x -= 32 - new_x++// x++ - while(pixel_x_offset < -16) - pixel_x_offset += 32 - old_pixel_x += 32 - new_x-- - while(pixel_y_offset > 16) - pixel_y_offset -= 32 - old_pixel_y -= 32 - new_y++ - while(pixel_y_offset < -16) - pixel_y_offset += 32 - old_pixel_y += 32 - new_y-- - pixel_x = old_pixel_x - pixel_y = old_pixel_y - step_towards(src, locate(new_x, new_y, z)) - next_run += max(world.tick_lag, speed) - var/delay = next_run - world.time - if(delay <= world.tick_lag*2) - pixel_x = pixel_x_offset - pixel_y = pixel_y_offset + trajectory.increment() + var/turf/T = trajectory.return_turf() + if(T.z != loc.z) + before_z_change(loc, T) + trajectory_ignore_forcemove = TRUE + forceMove(T) + trajectory_ignore_forcemove = FALSE else - animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = max(1, (delay <= 3 ? delay - 1 : delay)), flags = ANIMATION_END_NOW) - old_pixel_x = pixel_x_offset - old_pixel_y = pixel_y_offset + step_towards(src, T) + animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) + if(can_hit_target(original, permutated)) Collide(original) - c2 = loc Range() - if(check_for_turf_edge(loc)) - spawn_tracer(constant_tracer) + c2 = get_turf(src) if(istype(c2)) cached = c2 @@ -704,38 +647,3 @@ /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/on_hit() qdel(src) return FALSE - -/obj/effect/projectile_beam - icon = 'icons/obj/projectiles.dmi' - layer = ABOVE_MOB_LAYER - anchored = TRUE - light_power = 1 - light_range = 2 - light_color = "#00ffff" - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - flags_1 = ABSTRACT_1 - appearance_flags = 0 - -/obj/effect/projectile_beam/tracer - icon_state = "tracer_beam" - -/obj/effect/projectile_beam/tracer/aiming - icon_state = "gbeam" - -/datum/action/item_action/zoom_speed_action - name = "Toggle Zooming Speed" - icon_icon = 'icons/mob/actions/actions_spells.dmi' - button_icon_state = "projectile" - background_icon_state = "bg_tech" - -/datum/action/item_action/zoom_lock_action - name = "Switch Zoom Mode" - icon_icon = 'icons/mob/actions/actions_items.dmi' - button_icon_state = "zoom_mode" - background_icon_state = "bg_tech" - -/obj/effect/projectile_beam/singularity_pull() - return - -/obj/effect/projectile_beam/singularity_act() - return diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 3b93a960ca..c65e518383 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -16,8 +16,8 @@ var/unique_frequency = FALSE // modified by KA modkits var/overheat = FALSE can_bayonet = TRUE - knife_x_offset = 15 - knife_y_offset = 13 + knife_x_offset = 20 + knife_y_offset = 12 var/max_mod_capacity = 100 var/list/modkits = list() diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index dfbcc61f37..f1e8848d27 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -13,10 +13,10 @@ var/obj/item/device/transfer_valve/bomb -/obj/item/gun/blastcannon/New() +/obj/item/gun/blastcannon/Initialize() + . = ..() if(!pin) pin = new - return ..() /obj/item/gun/blastcannon/Destroy() if(bomb) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index dc3d584061..5704fe9f44 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -31,16 +31,11 @@ var/last_projectile_move = 0 var/last_process = 0 var/time_offset = 0 - var/old_pixel_x = 0 - var/old_pixel_y = 0 - var/pixel_x_increment = 0 - var/pixel_y_increment = 0 - var/pixel_x_offset = 0 - var/pixel_y_offset = 0 - var/new_x = 0 - var/new_y = 0 + var/datum/point/vector/trajectory + var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel + var/pixel_speed = 33 //pixels per move - DO NOT FUCK WITH THIS UNLESS YOU ABSOLUTELY KNOW WHAT YOU ARE DOING OR UNEXPECTED THINGS /WILL/ HAPPEN! var/Angle = 0 var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle var/spread = 0 //amount (in degrees) of projectile spread @@ -48,6 +43,9 @@ var/ricochets = 0 var/ricochets_max = 2 var/ricochet_chance = 30 + + var/colliding = FALSE //pause processing.. + var/ignore_source_check = FALSE var/damage = 10 @@ -73,9 +71,9 @@ var/impact_effect_type //what type of impact effect to show when hitting something var/log_override = FALSE //is this type spammed enough to not log? (KAs) -/obj/item/projectile/New() +/obj/item/projectile/Initialize() + . = ..() permutated = list() - return ..() /obj/item/projectile/proc/Range() range-- @@ -168,20 +166,28 @@ /obj/item/projectile/proc/vol_by_damage() if(src.damage) - return CLAMP((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100 + return CLAMP((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 100 else return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume +/obj/item/projectile/proc/on_ricochet(atom/A) + return + /obj/item/projectile/Collide(atom/A) + colliding = TRUE if(check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max) ricochets++ if(A.handle_ricochet(src)) + on_ricochet(A) ignore_source_check = TRUE range = initial(range) - return FALSE + return TRUE if(firer && !ignore_source_check) if(A == firer || (A == firer.loc && ismecha(A))) //cannot shoot yourself or your mech - loc = A.loc + trajectory_ignore_forcemove = TRUE + forceMove(get_turf(A)) + trajectory_ignore_forcemove = FALSE + colliding = FALSE return FALSE var/distance = get_dist(get_turf(A), starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. @@ -197,25 +203,32 @@ if(!prehit(A)) if(forcedodge) - loc = target_turf + trajectory_ignore_forcemove = TRUE + forceMove(target_turf) + trajectory_ignore_forcemove = FALSE + colliding = FALSE return FALSE var/permutation = A.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null if(permutation == -1 || forcedodge)// the bullet passes through a dense object! - loc = target_turf + trajectory_ignore_forcemove = TRUE + forceMove(target_turf) + trajectory_ignore_forcemove = FALSE if(A) permutated.Add(A) + colliding = FALSE return FALSE else var/atom/alt = select_target(A) if(alt) if(!prehit(alt)) + colliding = FALSE return FALSE alt.bullet_act(src, def_zone) qdel(src) + colliding = FALSE return TRUE - /obj/item/projectile/proc/select_target(atom/A) //Selects another target from a wall if we hit a wall. if(!A || !A.density || (A.flags_1 & ON_BORDER_1) || ismob(A) || A == original) //if we hit a dense non-border obj or dense turf then we also hit one of the mobs or machines/structures on that tile. return @@ -246,12 +259,30 @@ return TRUE return FALSE +/obj/item/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight. + if(!trajectory && isnull(forced_angle) && isnull(Angle)) + return FALSE + var/datum/point/vector/current = trajectory + if(!current) + var/turf/T = get_turf(src) + current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? Angle : forced_angle, pixel_speed) + var/datum/point/vector/v = current.return_vector_after_increments(moves) + return v.return_turf() + +/obj/item/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle) + var/turf/current = get_turf(src) + var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle) + return getline(current, ending) + +/obj/item/projectile/proc/before_z_change(turf/oldloc, turf/newloc) + return + /obj/item/projectile/Process_Spacemove(var/movement_dir = 0) return TRUE //Bullets don't drift in space /obj/item/projectile/process() last_process = world.time - if(!loc || !fired) + if(!loc || !fired || !trajectory) fired = FALSE return PROCESS_KILL if(paused || !isturf(loc)) @@ -285,73 +316,70 @@ setAngle(angle) if(spread) setAngle(Angle + ((rand() - 0.5) * spread)) + var/turf/starting = get_turf(src) if(isnull(Angle)) //Try to resolve through offsets if there's no angle set. - var/turf/starting = get_turf(src) + if(isnull(xo) || isnull(yo)) + stack_trace("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!") + qdel(src) + return var/turf/target = locate(CLAMP(starting + xo, 1, world.maxx), CLAMP(starting + yo, 1, world.maxy), starting.z) setAngle(Get_Angle(src, target)) if(!nondirectional_sprite) var/matrix/M = new M.Turn(Angle) transform = M - old_pixel_x = pixel_x - old_pixel_y = pixel_y + trajectory = new(starting.x, starting.y, starting.z, 0, 0, Angle, pixel_speed) last_projectile_move = world.time fired = TRUE if(!isprocessing) START_PROCESSING(SSprojectiles, src) + pixel_move(1) //move it now! /obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides. Angle = new_angle - return TRUE - -/obj/item/projectile/proc/pixel_move(moves) if(!nondirectional_sprite) var/matrix/M = new M.Turn(Angle) transform = M + if(trajectory) + trajectory.set_angle(new_angle) + return TRUE - pixel_x_increment=round((sin(Angle)+16*sin(Angle)*2), 1) //round() is a floor operation when only one argument is supplied, we don't want that here - pixel_y_increment=round((cos(Angle)+16*cos(Angle)*2), 1) - pixel_x_offset = old_pixel_x + pixel_x_increment - pixel_y_offset = old_pixel_y + pixel_y_increment - new_x = x - new_y = y +/obj/item/projectile/forceMove(atom/target) + . = ..() + if(trajectory && !trajectory_ignore_forcemove && isturf(target)) + trajectory.initialize_location(target.x, target.y, target.z, 0, 0) - while(pixel_x_offset > 16) - pixel_x_offset -= 32 - old_pixel_x -= 32 - new_x++// x++ - while(pixel_x_offset < -16) - pixel_x_offset += 32 - old_pixel_x += 32 - new_x-- - while(pixel_y_offset > 16) - pixel_y_offset -= 32 - old_pixel_y -= 32 - new_y++ - while(pixel_y_offset < -16) - pixel_y_offset += 32 - old_pixel_y += 32 - new_y-- +/obj/item/projectile/proc/pixel_move(moves, trajectory_multiplier = 1) + if(!loc || !trajectory) + return + last_projectile_move = world.time + if(!nondirectional_sprite) + var/matrix/M = new + M.Turn(Angle) + transform = M + trajectory.increment(trajectory_multiplier) + var/turf/T = trajectory.return_turf() + if(T.z != loc.z) + before_z_change(loc, T) + trajectory_ignore_forcemove = TRUE + forceMove(T) + trajectory_ignore_forcemove = FALSE + pixel_x = trajectory.return_px() + pixel_y = trajectory.return_py() + else + step_towards(src, T) + pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier + pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier + animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) - step_towards(src, locate(new_x, new_y, z)) - pixel_x = old_pixel_x - pixel_y = old_pixel_y - animate(src, pixel_x = pixel_x_offset, pixel_y = pixel_y_offset, time = 1, flags = ANIMATION_END_NOW) - old_pixel_x = pixel_x_offset - old_pixel_y = pixel_y_offset if(can_hit_target(original, permutated)) Collide(original) Range() - last_projectile_move = world.time //Returns true if the target atom is on our current turf and above the right layer /obj/item/projectile/proc/can_hit_target(atom/target, var/list/passthrough) - if(target && (target.layer >= PROJECTILE_HIT_THRESHHOLD_LAYER) || ismob(target)) - if(loc == get_turf(target)) - if(!(target in passthrough)) - return TRUE - return FALSE + return (target && ((target.layer >= PROJECTILE_HIT_THRESHHOLD_LAYER) || ismob(target)) && (loc == get_turf(target)) && (!(target in passthrough))) /obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0) var/turf/curloc = get_turf(source) @@ -363,7 +391,6 @@ yo = targloc.y - curloc.y xo = targloc.x - curloc.x setAngle(Get_Angle(src, targloc)) - if(isliving(source) && params) var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, params) p_x = calculated[2] @@ -373,8 +400,13 @@ setAngle(calculated[1] + spread) else setAngle(calculated[1]) - else + else if(targloc) + yo = targloc.y - curloc.y + xo = targloc.x - curloc.x setAngle(Get_Angle(src, targloc)) + else + stack_trace("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!") + qdel(src) /proc/calculate_projectile_angle_and_pixel_offsets(mob/user, params) var/list/mouse_control = params2list(params) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 323960c7f3..235f27e9e5 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -341,8 +341,8 @@ icon_state = "banana" range = 200 -/obj/item/projectile/bullet/honker/New() - ..() +/obj/item/projectile/bullet/honker/Initialize() + . = ..() SpinAnimation() // Mime @@ -364,8 +364,8 @@ damage = 6 var/piercing = FALSE -/obj/item/projectile/bullet/dart/New() - ..() +/obj/item/projectile/bullet/dart/Initialize() + . = ..() create_reagents(50) reagents.set_reacting(FALSE) @@ -388,8 +388,8 @@ reagents.handle_reactions() return TRUE -/obj/item/projectile/bullet/dart/metalfoam/New() - ..() +/obj/item/projectile/bullet/dart/metalfoam/Initialize() + . = ..() reagents.add_reagent("aluminium", 15) reagents.add_reagent("foaming_agent", 5) reagents.add_reagent("facid", 5) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 94e8b465c1..08a087dbac 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -15,6 +15,7 @@ /datum/reagents/New(maximum=100) maximum_volume = maximum + //I dislike having these here but map-objects are initialised before world/New() is called. >_> if(!GLOB.chemical_reagents_list) //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id @@ -295,6 +296,7 @@ C.update_stamina() update_total() + /datum/reagents/proc/set_reacting(react = TRUE) if(react) flags &= ~(REAGENT_NOREACT) @@ -743,8 +745,7 @@ out += "[taste_desc]" return english_list(out, "something indescribable") - - + /datum/reagents/proc/expose_temperature(var/temperature, var/coeff=0.02) var/temp_delta = (temperature - chem_temp) * coeff if(temp_delta > 0) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 5089f06310..17fb8e1a1d 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -53,6 +53,8 @@ "toxin" ) + var/list/saved_recipes = list() + /obj/machinery/chem_dispenser/Initialize() . = ..() cell = new cell_type @@ -136,6 +138,7 @@ data["beakerTransferAmounts"] = null var/chemicals[0] + var/recipes[0] var/is_hallucinating = FALSE if(user.hallucinating()) is_hallucinating = TRUE @@ -146,7 +149,10 @@ if(is_hallucinating && prob(5)) chemname = "[pick_list_replacements("hallucination.json", "chemicals")]" chemicals.Add(list(list("title" = chemname, "id" = temp.id))) + for(var/recipe in saved_recipes) + recipes.Add(list(recipe)) data["chemicals"] = chemicals + data["recipes"] = recipes return data /obj/machinery/chem_dispenser/ui_act(action, params) @@ -179,6 +185,37 @@ beaker = null cut_overlays() . = TRUE + if("dispense_recipe") + var/recipe_to_use = params["recipe"] + var/list/chemicals_to_dispense = process_recipe_list(recipe_to_use) + for(var/r_id in chemicals_to_dispense) // i suppose you could edit the list locally before passing it + if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine + var/datum/reagents/R = beaker.reagents + var/free = R.maximum_volume - R.total_volume + var/actual = min(chemicals_to_dispense[r_id], (cell.charge * powerefficiency)*10, free) + if(actual) + R.add_reagent(r_id, actual) + cell.use((actual / 10) / powerefficiency) + if("clear_recipes") + var/yesno = alert("Clear all recipes?",, "Yes","No") + if(yesno == "Yes") + saved_recipes = list() + if("add_recipe") + var/name = stripped_input(usr,"Name","What do you want to name this recipe?", "Recipe", MAX_NAME_LEN) + var/recipe = stripped_input(usr,"Recipe","Insert recipe with chem IDs") + if(name && recipe) + var/list/first_process = splittext(recipe, ";") + if(!LAZYLEN(first_process)) + return + for(var/reagents in first_process) + var/list/fuck = splittext(reagents, "=") + if(dispensable_reagents.Find(fuck[1])) + continue + else + var/temp = fuck[1] + to_chat(usr, "[src] can't process [temp]!") + return + saved_recipes += list(list("recipe_name" = name, "contents" = recipe)) /obj/machinery/chem_dispenser/attackby(obj/item/I, mob/user, params) if(default_unfasten_wrench(user, I)) @@ -310,6 +347,14 @@ beaker = null return ..() +/obj/machinery/chem_dispenser/proc/process_recipe_list(var/fucking_hell) + var/list/final_list = list() + var/list/first_process = splittext(fucking_hell, ";") + for(var/reagents in first_process) + var/list/fuck = splittext(reagents, "=") + final_list += list(fuck[1] = text2num(fuck[2])) + return final_list + /obj/machinery/chem_dispenser/drinks name = "soda dispenser" desc = "Contains a large reservoir of soft drinks." diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index f86e15f10f..ab241d7f43 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -70,7 +70,7 @@ //nothing if(21 to INFINITY) if(prob(current_cycle-10)) - M.cure_nearsighted() + M.cure_nearsighted(list(EYE_DAMAGE)) ..() return @@ -172,6 +172,22 @@ M.emote("laugh") ..() +/datum/reagent/consumable/superlaughter + name = "Super Laughter" + id = "superlaughter" + description = "Funny until you're the one laughing." + metabolization_rate = 1.5 * REAGENTS_METABOLISM + color = "#FF4DD2" + taste_description = "laughter" + +/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M) + if(!iscarbon(M)) + return + if(prob(30)) + M.visible_message("[M] bursts out into a fit of uncontrollable laughter!", "You burst out in a fit of uncontrollable laughter!") + M.Stun(5) + ..() + /datum/reagent/consumable/potato_juice name = "Potato Juice" id = "potato" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d7750d5ff5..d49ddd57a1 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -44,7 +44,7 @@ M.adjustToxLoss(-5, 0) M.hallucination = 0 M.setBrainLoss(0) - M.disabilities = 0 + M.remove_all_disabilities() M.set_blurriness(0) M.set_blindness(0) M.SetKnockdown(0, 0) @@ -129,31 +129,16 @@ taste_description = "sludge" /datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M) - switch(M.bodytemperature) // Low temperatures are required to take effect. - if(0 to 100) // At extreme temperatures (upgraded cryo) the effect is greatly increased. - M.status_flags &= ~DISFIGURED - M.adjustCloneLoss(-1, 0) - M.adjustOxyLoss(-9, 0) - M.adjustBruteLoss(-5, 0) - M.adjustFireLoss(-5, 0) - M.adjustToxLoss(-5, 0) - . = 1 - if(100 to 225) // At lower temperatures (cryo) the full effect is boosted - M.status_flags &= ~DISFIGURED - M.adjustCloneLoss(-1, 0) - M.adjustOxyLoss(-7, 0) - M.adjustBruteLoss(-3, 0) - M.adjustFireLoss(-3, 0) - M.adjustToxLoss(-3, 0) - . = 1 - if(225 to T0C) - M.status_flags &= ~DISFIGURED - M.adjustCloneLoss(-1, 0) - M.adjustOxyLoss(-5, 0) - M.adjustBruteLoss(-1, 0) - M.adjustFireLoss(-1, 0) - M.adjustToxLoss(-1, 0) - . = 1 + var/power = -0.00003 * (M.bodytemperature ** 2) + 3 + if(M.bodytemperature < T0C) + M.adjustOxyLoss(-3 * power, 0) + M.adjustBruteLoss(-power, 0) + M.adjustFireLoss(-power, 0) + M.adjustToxLoss(-power, 0) + M.adjustCloneLoss(-power, 0) + M.status_flags &= ~DISFIGURED + . = 1 + metabolization_rate = REAGENTS_METABOLISM * (0.00001 * (M.bodytemperature ** 2) + 0.5) ..() /datum/reagent/medicine/clonexadone @@ -670,13 +655,13 @@ if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) if(prob(20)) to_chat(M, "Your vision slowly returns...") - M.cure_blind() - M.cure_nearsighted() + M.cure_blind(EYE_DAMAGE) + M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(35) else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) to_chat(M, "The blackness in your peripheral vision fades.") - M.cure_nearsighted() + M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(10) else if(M.eye_blind || M.eye_blurry) M.set_blindness(0) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 6fb21e847b..640f828e18 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -119,6 +119,6 @@ /obj/item/reagent_containers/microwave_act(obj/machinery/microwave/M) reagents.expose_temperature(1000) ..() - + /obj/item/reagent_containers/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - reagents.expose_temperature(exposed_temperature) + reagents.expose_temperature(exposed_temperature) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 0a99d9da6e..e736c344db 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -130,6 +130,18 @@ Borg Hypospray reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin") accepts_reagent_upgrades = FALSE +/obj/item/reagent_containers/borghypo/clown + name = "laughter injector" + desc = "Keeps the crew happy and productive!" + reagent_ids = list("laughter") + accepts_reagent_upgrades = FALSE + +/obj/item/reagent_containers/borghypo/clown/hacked + name = "laughter injector" + desc = "Keeps the crew so happy they don't work!" + reagent_ids = list("superlaughter") + accepts_reagent_upgrades = FALSE + /obj/item/reagent_containers/borghypo/syndicate name = "syndicate cyborg hypospray" desc = "An experimental piece of Syndicate technology used to produce powerful restorative nanites used to very quickly restore injuries of all types. Also metabolizes potassium iodide, for radiation poisoning, and morphine, for offense." diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 6fad290676..749031b367 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -311,4 +311,4 @@ /obj/item/reagent_containers/glass/bottle/tuberculosiscure name = "BVAK bottle" desc = "A small bottle containing Bio Virus Antidote Kit." - list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) \ No newline at end of file + list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 06a242cca9..2aa386e37d 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -397,4 +397,4 @@ /obj/item/reagent_containers/glass/beaker/large/bromine name = "bromine beaker" - list_reagents = list("bromine" = 50) + list_reagents = list("bromine" = 50) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 4908a55911..f5d46a240e 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -157,4 +157,4 @@ desc = "I wouldn't eat this if I were you." icon_state = "pill9" color = "#454545" - list_reagents = list("shadowmutationtoxin" = 1) + list_reagents = list("shadowmutationtoxin" = 1) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 2e34e39f8f..87d5a4bb67 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -18,16 +18,16 @@ var/spray_range = 3 //the range of tiles the sprayer will reach when in spray mode. var/stream_range = 1 //the range of tiles the sprayer will reach when in stream mode. var/stream_amount = 10 //the amount of reagents transfered when in stream mode. + var/can_fill_from_container = TRUE amount_per_transfer_from_this = 5 volume = 250 possible_transfer_amounts = list(5,10,15,20,25,30,50,100) - /obj/item/reagent_containers/spray/afterattack(atom/A, mob/user) if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics)) return - if((A.is_drainable() && !A.is_refillable()) && get_dist(src,A) <= 1) + if((A.is_drainable() && !A.is_refillable()) && get_dist(src,A) <= 1 && can_fill_from_container) if(!A.reagents.total_volume) to_chat(user, "[A] is empty.") return @@ -130,7 +130,6 @@ to_chat(user, "You heat [name] with [I]!") return ..() - /obj/item/reagent_containers/spray/verb/empty() set name = "Empty Spray Bottle" set category = "Object" @@ -205,6 +204,46 @@ /obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays return +/obj/item/reagent_containers/spray/waterflower/cyborg + container_type = NONE + volume = 100 + list_reagents = list("water" = 100) + var/generate_amount = 5 + var/generate_type = "water" + var/last_generate = 0 + var/generate_delay = 10 //deciseconds + can_fill_from_container = FALSE + +/obj/item/reagent_containers/spray/waterflower/cyborg/hacked + name = "nova flower" + desc = "This doesn't look safe at all..." + list_reagents = list("clf3" = 3) + volume = 3 + generate_type = "clf3" + generate_amount = 1 + generate_delay = 40 //deciseconds + +/obj/item/reagent_containers/spray/waterflower/cyborg/Initialize() + . = ..() + START_PROCESSING(SSfastprocess, src) + +/obj/item/reagent_containers/spray/waterflower/cyborg/Destroy() + STOP_PROCESSING(SSfastprocess, src) + return ..() + +/obj/item/reagent_containers/spray/waterflower/cyborg/process() + if(world.time > last_generate + generate_delay) + return + last_generate = world.time + generate_reagents() + +/obj/item/reagent_containers/spray/waterflower/cyborg/empty() + to_chat(usr, "You can not empty this!") + return + +/obj/item/reagent_containers/spray/waterflower/cyborg/proc/generate_reagents() + reagents.add_reagent(generate_type, generate_amount) + //chemsprayer /obj/item/reagent_containers/spray/chemsprayer name = "chem sprayer" diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 28eefde453..355d5d6b96 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -190,6 +190,7 @@ deconstruct() +// Straight/bent pipe segment /obj/structure/disposalpipe/segment icon_state = "pipe" initialize_dirs = DISP_DIR_FLIP diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 0af1650d42..b3b0f8df99 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -51,40 +51,8 @@ other types of metals and chemistry for reagents). return ..() /datum/design/proc/icon_html(client/user) - if (!icon_cache) - // construct the icon and slap it into the resource cache - var/atom/item = build_path - if (!ispath(item, /atom)) - // biogenerator outputs to beakers by default - if (build_type & BIOGENERATOR) - item = /obj/item/reagent_containers/glass/beaker/large - else - return // shouldn't happen, but just in case - - // circuit boards become their resulting machines or computers - if (ispath(item, /obj/item/circuitboard)) - var/obj/item/circuitboard/C = item - var/machine = initial(C.build_path) - if (machine) - item = machine - var/icon_file = initial(item.icon) - var/icon/I = icon(icon_file, initial(item.icon_state), SOUTH) - - // computers (and snowflakes) get their screen and keyboard sprites - if (ispath(item, /obj/machinery/computer) || ispath(item, /obj/machinery/power/solar_control)) - var/obj/machinery/computer/C = item - var/screen = initial(C.icon_screen) - var/keyboard = initial(C.icon_keyboard) - if (screen) - I.Blend(icon(icon_file, screen, SOUTH), ICON_OVERLAY) - if (keyboard) - I.Blend(icon(icon_file, keyboard, SOUTH), ICON_OVERLAY) - - // based on icon2html - icon_cache = "[generate_asset_name(I)].png" - register_asset(icon_cache, I) - send_asset(user, icon_cache, FALSE) - return "" + send_asset(user, "design_[id].png", FALSE) + return "" //////////////////////////////////////// //Disks for transporting design datums// diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 8542660343..b656b6c21c 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -807,6 +807,15 @@ build_path = /obj/item/stock_parts/cell/emergency_light category = list("initial", "Electronics") +/datum/design/packageWrap + name = "Package Wrapping" + id = "packagewrap" + build_type = AUTOLATHE + materials = list(MAT_METAL = 200, MAT_GLASS = 200) + build_path = /obj/item/stack/packageWrap + category = list("initial", "Misc") + maxstack = 30 + /datum/design/holodisk name = "Holodisk" id = "holodisk" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 2343bd8814..059d9c982c 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -111,6 +111,7 @@ desc = "The circuit board for a sleeper." id = "sleeper" build_path = /obj/item/circuitboard/machine/sleeper + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL category = list ("Medical Machinery") /datum/design/board/cryotube @@ -118,6 +119,7 @@ desc = "The circuit board for a cryotube." id = "cryotube" build_path = /obj/item/circuitboard/machine/cryo_tube + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL category = list ("Medical Machinery") /datum/design/board/chem_dispenser @@ -125,12 +127,14 @@ desc = "The circuit board for a portable chem dispenser." id = "chem_dispenser" build_path = /obj/item/circuitboard/machine/chem_dispenser + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL category = list ("Medical Machinery") /datum/design/board/chem_master name = "Machine Design (Chem Master Board)" desc = "The circuit board for a Chem Master 3000." id = "chem_master" + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL build_path = /obj/item/circuitboard/machine/chem_master category = list ("Medical Machinery") @@ -138,6 +142,7 @@ name = "Machine Design (Chemical Heater Board)" desc = "The circuit board for a chemical heater." id = "chem_heater" + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL build_path = /obj/item/circuitboard/machine/chem_heater category = list ("Medical Machinery") @@ -153,12 +158,14 @@ desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." id = "clonecontrol" build_path = /obj/item/circuitboard/computer/cloning + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL category = list("Medical Machinery") /datum/design/board/clonepod name = "Machine Design (Clone Pod)" desc = "Allows for the construction of circuit boards used to build a Cloning Pod." id = "clonepod" + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL build_path = /obj/item/circuitboard/machine/clonepod category = list("Medical Machinery") @@ -166,6 +173,7 @@ name = "Machine Design (Cloning Scanner)" desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." id = "clonescanner" + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL build_path = /obj/item/circuitboard/machine/clonescanner category = list("Medical Machinery") diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index eea79f77e6..60b8a1d6da 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -114,6 +114,6 @@ else var/obj/item/stack/S = type_inserted stack_name = initial(S.name) - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * amount_inserted / 10))) + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * amount_inserted / 100))) add_overlay("protolathe_[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 126cff9713..4e91f95c98 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -98,7 +98,7 @@ death = FALSE icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper_s" - flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Continue your research as best you can, and try to keep a low profile. DON'T abandon the base without good cause. The base is rigged with explosives should the worst happen, do not let the base fall into enemy hands!
    " + flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Continue your research as best you can, and try to keep a low profile. DON'T abandon the base without good cause. The base is rigged with explosives should the worst happen, do not let the base fall into enemy hands!" id_access_list = list(ACCESS_SYNDICATE) outfit = /datum/outfit/lavaland_syndicate assignedrole = "Lavaland Syndicate" @@ -121,7 +121,7 @@ /obj/effect/mob_spawn/human/lavaland_syndicate/comms name = "Syndicate Comms Agent" - flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Monitor enemy activity as best you can, and try to keep a low profile. DON'T abandon the base without good cause. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!" + flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Monitor enemy activity as best you can, and try to keep a low profile. DON'T abandon the base without good cause. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!" outfit = /datum/outfit/lavaland_syndicate/comms /datum/outfit/lavaland_syndicate/comms diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index f98162266a..7f301bf8b9 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -9,7 +9,7 @@ faction = list("ashwalker") health = 200 maxHealth = 200 - loot = null + loot = list(/obj/effect/collapse) var/meat_counter = 6 /mob/living/simple_animal/hostile/spawner/lavaland/ash_walker/death() diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index ce467a1181..e5c36d09c4 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -399,7 +399,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) name = "burnt stone surrounding tile" icon_state = "burnt_surrounding_tile1" tile_key = "burnt_surrounding_tile" - + #undef STABLE #undef COLLAPSE_ON_CROSS #undef DESTROY_ON_CROSS diff --git a/code/modules/ruins/spaceruin_code/listeningstation.dm b/code/modules/ruins/spaceruin_code/listeningstation.dm index 0c2ec7817d..5afdc602b8 100644 --- a/code/modules/ruins/spaceruin_code/listeningstation.dm +++ b/code/modules/ruins/spaceruin_code/listeningstation.dm @@ -24,7 +24,7 @@ /obj/item/paper/fluff/ruins/listeningstation/reports/june name = "june report" - info = "Nanotrasen communications have been noticably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it." + info = "Nanotrasen communications have been noticeably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it." /obj/item/paper/fluff/ruins/listeningstation/reports/may name = "may report" diff --git a/code/modules/ruins/spaceruin_code/oldstation.dm b/code/modules/ruins/spaceruin_code/oldstation.dm index edea4fe0c1..d023760061 100644 --- a/code/modules/ruins/spaceruin_code/oldstation.dm +++ b/code/modules/ruins/spaceruin_code/oldstation.dm @@ -44,6 +44,6 @@ /obj/item/paper/fluff/ruins/oldstation/report name = "Crew Reawakening Report" info = "Artifical Program's report to surviving crewmembers.

    Crew were placed into cryostasis on March 10th, 2445.

    Crew were awoken from cryostasis around June, 2557.

    \ - SIGNIFICANT EVENTS OF NOTE
    1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radioation detectors showed no residual \ - radioation on station. Deduction, primariy detector was malfunctioning and was producing a radioation signal when there was none.

    2: A data burst from a nearby Nanotrasen Space \ + SIGNIFICANT EVENTS OF NOTE
    1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radiation detectors showed no residual \ + radiation on station. Deduction, primarily detector was malfunctioning and was producing a radiation signal when there was none.

    2: A data burst from a nearby Nanotrasen Space \ Station was recieved, this data burst contained research data that has been uploaded to our RnD labs.

    3: Unknown invasion force has occupied Delta station." diff --git a/code/modules/ruins/spaceruin_code/spacehotel.dm b/code/modules/ruins/spaceruin_code/spacehotel.dm index 5f20bafb68..69eebd8535 100644 --- a/code/modules/ruins/spaceruin_code/spacehotel.dm +++ b/code/modules/ruins/spaceruin_code/spacehotel.dm @@ -7,6 +7,6 @@ /obj/item/paper/pamphlet/ruin/spacehotel name = "hotel pamphlet" - info = "
    The Twin Nexus Hotel

    A place of Sanctuary


    Welcome to The Twin-Nexus Hotel, \[insert name here]! The loyal staff stride to their best effort to cater for the best possible experience for all space(wo)men! If you have any questions or comments, please ask one of our on-board staff for more infomation.
    " + info = "
    The Twin Nexus Hotel

    A place of Sanctuary


    Welcome to The Twin-Nexus Hotel, \[insert name here]! The loyal staff stride to their best effort to cater for the best possible experience for all space(wo)men! If you have any questions or comments, please ask one of our on-board staff for more information.
    " diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 0818bf3e8c..7fb23c75e5 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -76,7 +76,12 @@ GLOBAL_VAR_INIT(security_level, 0) FA.update_icon() for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines) pod.admin_controlled = 0 - SSblackbox.record_feedback("tally", "security_level_changes", 1, level) + if(level >= SEC_LEVEL_RED) + for(var/obj/machinery/door/D in GLOB.machines) + if(D.red_alert_access) + D.visible_message("[D] whirrs as it automatically lifts access requirements!") + playsound(D, 'sound/machines/boltsup.ogg', 50, TRUE) + SSblackbox.record_feedback("tally", "security_level_changes", 1, get_security_level()) else return diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index c0b33cc492..318c896efd 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -200,5 +200,5 @@ /obj/docking_port/mobile/arrivals/vv_edit_var(var_name, var_value) switch(var_name) if("perma_docked") - SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "ShA[var_value ? "s" : "g"]") + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("arrivals shuttle", "[var_value ? "stopped" : "started"]")) return ..() diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 9c7bfee968..03bd36b88f 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -301,6 +301,7 @@ var/datum/DBQuery/query_round_shuttle_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET shuttle_name = '[name]' WHERE id = [GLOB.round_id]") query_round_shuttle_name.Execute() + if(SHUTTLE_DOCKED) if(time_left <= ENGINES_START_TIME) mode = SHUTTLE_IGNITING diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 739e057177..15257a62a1 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -119,7 +119,7 @@ return if(!my_port) - my_port = new(locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)) + my_port = new() my_port.name = shuttlePortName my_port.id = shuttlePortId my_port.height = shuttle_port.height @@ -128,6 +128,7 @@ my_port.dwidth = shuttle_port.dwidth my_port.hidden = shuttle_port.hidden my_port.dir = the_eye.dir + my_port.forceMove(locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)) if(current_user.client) current_user.client.images -= the_eye.placed_images diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 109d53a4f7..7b196b8289 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -22,6 +22,10 @@ All ShuttleMove procs go here // Only gets called if fromShuttleMove returns true first // returns the new move_mode (based on the old) /turf/proc/toShuttleMove(turf/oldT, move_mode, obj/docking_port/mobile/shuttle) + . = move_mode + if(!(. & MOVE_TURF)) + return + var/shuttle_dir = shuttle.dir for(var/i in contents) var/atom/movable/thing = i @@ -45,8 +49,6 @@ All ShuttleMove procs go here else qdel(thing) - return move_mode - // Called on the old turf to move the turf data /turf/proc/onShuttleMove(turf/newT, list/movement_force, move_dir) if(newT == src) // In case of in place shuttle rotation shenanigans. @@ -176,10 +178,6 @@ All ShuttleMove procs go here . = ..() GLOB.cameranet.addCamera(src) -/obj/machinery/telecomms/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - listening_level = z // Update listening Z, just in case you have telecomm relay on a shuttle - /obj/machinery/mech_bay_recharge_port/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir) . = ..() recharging_turf = get_step(loc, dir) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 695045f7dc..3b907128f3 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -746,4 +746,4 @@ mode = SHUTTLE_ENDGAME /obj/docking_port/mobile/emergency/on_emergency_dock() - return + return \ No newline at end of file diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index e0daee6f04..410935db5a 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -56,8 +56,8 @@ shuttlePortName = "custom location" jumpto_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1) view_range = 13 - x_offset = -4 - y_offset = -2 + x_offset = -7 + y_offset = -1 see_hidden = TRUE #undef SYNDICATE_CHALLENGE_TIMER \ No newline at end of file diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm index 46aa4b6576..b6d9bda8b2 100644 --- a/code/modules/shuttle/white_ship.dm +++ b/code/modules/shuttle/white_ship.dm @@ -17,3 +17,4 @@ x_offset = -6 y_offset = -10 designate_time = 100 + diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 832395b1f1..ae317ad861 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -190,7 +190,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th var/mob/living/carbon/human/H = user - if((invocation_type == "whisper" || invocation_type == "shout") && H.is_muzzled()) + if((invocation_type == "whisper" || invocation_type == "shout") && !H.can_speak_vocal()) to_chat(user, "You can't get the words out!") return 0 diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index a88322d5ee..69a8ab07b7 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -279,4 +279,4 @@ /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem charge_max = 800 jaunt_in_type = /obj/effect/temp_visual/dir_setting/cult/phase - jaunt_out_type = /obj/effect/temp_visual/dir_setting/cult/phase/out + jaunt_out_type = /obj/effect/temp_visual/dir_setting/cult/phase/out \ No newline at end of file diff --git a/code/modules/spells/spell_types/dumbfire.dm b/code/modules/spells/spell_types/dumbfire.dm index bb6e4480f5..f86c29fdc2 100644 --- a/code/modules/spells/spell_types/dumbfire.dm +++ b/code/modules/spells/spell_types/dumbfire.dm @@ -1,41 +1,41 @@ //NEEDS MAJOR CODE CLEANUP -/obj/effect/proc_holder/spell/dumbfire - - var/projectile_type = "" - var/activate_on_collision = 1 - - var/proj_icon = 'icons/obj/projectiles.dmi' - var/proj_icon_state = "spell" - var/proj_name = "a spell projectile" - - var/proj_trail = 0 //if it leaves a trail - var/proj_trail_lifespan = 0 //deciseconds - var/proj_trail_icon = 'icons/obj/wizard.dmi' - var/proj_trail_icon_state = "trail" - - var/proj_type = "/obj/effect/proc_holder/spell" //IMPORTANT use only subtypes of this - - var/proj_insubstantial = 0 //if it can pass through dense objects or not - var/proj_trigger_range = 1 //the range from target at which the projectile triggers cast(target) - - var/proj_lifespan = 100 //in deciseconds * proj_step_delay - var/proj_step_delay = 1 //lower = faster - -/obj/effect/proc_holder/spell/dumbfire/choose_targets(mob/user = usr) - - var/turf/T = get_turf(user) - for(var/i = 1; i < range; i++) - var/turf/new_turf = get_step(T, user.dir) - if(new_turf.density) - break - T = new_turf - perform(list(T),user = user) - -/obj/effect/proc_holder/spell/dumbfire/cast(list/targets, mob/user = usr) - playMagSound() - for(var/turf/target in targets) +/obj/effect/proc_holder/spell/dumbfire + + var/projectile_type = "" + var/activate_on_collision = 1 + + var/proj_icon = 'icons/obj/projectiles.dmi' + var/proj_icon_state = "spell" + var/proj_name = "a spell projectile" + + var/proj_trail = 0 //if it leaves a trail + var/proj_trail_lifespan = 0 //deciseconds + var/proj_trail_icon = 'icons/obj/wizard.dmi' + var/proj_trail_icon_state = "trail" + + var/proj_type = "/obj/effect/proc_holder/spell" //IMPORTANT use only subtypes of this + + var/proj_insubstantial = 0 //if it can pass through dense objects or not + var/proj_trigger_range = 1 //the range from target at which the projectile triggers cast(target) + + var/proj_lifespan = 100 //in deciseconds * proj_step_delay + var/proj_step_delay = 1 //lower = faster + +/obj/effect/proc_holder/spell/dumbfire/choose_targets(mob/user = usr) + + var/turf/T = get_turf(user) + for(var/i = 1; i < range; i++) + var/turf/new_turf = get_step(T, user.dir) + if(new_turf.density) + break + T = new_turf + perform(list(T),user = user) + +/obj/effect/proc_holder/spell/dumbfire/cast(list/targets, mob/user = usr) + playMagSound() + for(var/turf/target in targets) launch_at(target, user) /obj/effect/proc_holder/spell/dumbfire/proc/launch_at(turf/target, mob/user) diff --git a/code/modules/spells/spell_types/genetic.dm b/code/modules/spells/spell_types/genetic.dm index c6945dab50..c43dacac46 100644 --- a/code/modules/spells/spell_types/genetic.dm +++ b/code/modules/spells/spell_types/genetic.dm @@ -1,32 +1,34 @@ -/obj/effect/proc_holder/spell/targeted/genetic - name = "Genetic" - desc = "This spell inflicts a set of mutations and disabilities upon the target." - - var/disabilities = 0 //bits - var/list/mutations = list() //mutation strings - var/duration = 100 //deciseconds - /* - Disabilities - 1st bit - ? - 2nd bit - ? - 3rd bit - ? - 4th bit - ? - 5th bit - ? - 6th bit - ? - */ - -/obj/effect/proc_holder/spell/targeted/genetic/cast(list/targets,mob/user = usr) - playMagSound() - for(var/mob/living/carbon/target in targets) - if(!target.dna) - continue - for(var/A in mutations) - target.dna.add_mutation(A) - target.disabilities |= disabilities +/obj/effect/proc_holder/spell/targeted/genetic + name = "Genetic" + desc = "This spell inflicts a set of mutations and disabilities upon the target." + + var/list/disabilities = list() //disabilities + var/list/mutations = list() //mutation strings + var/duration = 100 //deciseconds + /* + Disabilities + 1st bit - ? + 2nd bit - ? + 3rd bit - ? + 4th bit - ? + 5th bit - ? + 6th bit - ? + */ + +/obj/effect/proc_holder/spell/targeted/genetic/cast(list/targets,mob/user = usr) + playMagSound() + for(var/mob/living/carbon/target in targets) + if(!target.dna) + continue + for(var/A in mutations) + target.dna.add_mutation(A) + for(var/A in disabilities) + target.add_disability(A, GENETICS_SPELL) addtimer(CALLBACK(src, .proc/remove, target), duration) /obj/effect/proc_holder/spell/targeted/genetic/proc/remove(mob/living/carbon/target) if(!QDELETED(target)) for(var/A in mutations) target.dna.remove_mutation(A) - target.disabilities &= ~disabilities + for(var/A in disabilities) + target.remove_disability(A, GENETICS_SPELL) \ No newline at end of file diff --git a/code/modules/spells/spell_types/knock.dm b/code/modules/spells/spell_types/knock.dm index bbb2b3877f..7179bed031 100644 --- a/code/modules/spells/spell_types/knock.dm +++ b/code/modules/spells/spell_types/knock.dm @@ -1,31 +1,31 @@ -/obj/effect/proc_holder/spell/aoe_turf/knock - name = "Knock" - desc = "This spell opens nearby doors and does not require wizard garb." - - school = "transmutation" - charge_max = 100 - clothes_req = 0 - invocation = "AULIE OXIN FIERA" - invocation_type = "whisper" - range = 3 - cooldown_min = 20 //20 deciseconds reduction per rank - - action_icon_state = "knock" - -/obj/effect/proc_holder/spell/aoe_turf/knock/cast(list/targets,mob/user = usr) +/obj/effect/proc_holder/spell/aoe_turf/knock + name = "Knock" + desc = "This spell opens nearby doors and does not require wizard garb." + + school = "transmutation" + charge_max = 100 + clothes_req = 0 + invocation = "AULIE OXIN FIERA" + invocation_type = "whisper" + range = 3 + cooldown_min = 20 //20 deciseconds reduction per rank + + action_icon_state = "knock" + +/obj/effect/proc_holder/spell/aoe_turf/knock/cast(list/targets,mob/user = usr) SEND_SOUND(user, sound('sound/magic/knock.ogg')) - for(var/turf/T in targets) - for(var/obj/machinery/door/door in T.contents) - INVOKE_ASYNC(src, .proc/open_door, door) - for(var/obj/structure/closet/C in T.contents) - INVOKE_ASYNC(src, .proc/open_closet, C) - -/obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_door(var/obj/machinery/door/door) - if(istype(door, /obj/machinery/door/airlock)) - var/obj/machinery/door/airlock/A = door - A.locked = FALSE - door.open() - -/obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_closet(var/obj/structure/closet/C) - C.locked = FALSE - C.open() + for(var/turf/T in targets) + for(var/obj/machinery/door/door in T.contents) + INVOKE_ASYNC(src, .proc/open_door, door) + for(var/obj/structure/closet/C in T.contents) + INVOKE_ASYNC(src, .proc/open_closet, C) + +/obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_door(var/obj/machinery/door/door) + if(istype(door, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/A = door + A.locked = FALSE + door.open() + +/obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_closet(var/obj/structure/closet/C) + C.locked = FALSE + C.open() diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm index 4e5c0605e2..28960fce31 100644 --- a/code/modules/spells/spell_types/mime.dm +++ b/code/modules/spells/spell_types/mime.dm @@ -125,146 +125,6 @@ ..() -/obj/item/spellbook/oneuse/mimery_blockade - spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime - spellname = "" - name = "Guide to Advanced Mimery Vol 1" - desc = "The pages don't make any sound when turned." - icon_state ="bookmime" - -/obj/item/spellbook/oneuse/mimery_guns - spell = /obj/effect/proc_holder/spell/aimed/finger_guns - spellname = "" - name = "Guide to Advanced Mimery Vol 2" - desc = "There aren't any words written..." - icon_state ="bookmime" -/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall - name = "Invisible Wall" - desc = "The mime's performance transmutates into physical reality." - school = "mime" - panel = "Mime" - summon_type = list(/obj/effect/forcefield/mime) - invocation_type = "emote" - invocation_emote_self = "You form a wall in front of yourself." - summon_lifespan = 300 - charge_max = 300 - clothes_req = 0 - range = 0 - cast_sound = null - human_req = 1 - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - -/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() - if(usr && usr.mind) - if(!usr.mind.miming) - to_chat(usr, "You must dedicate yourself to silence first.") - return - invocation = "[usr.real_name] looks as if a wall is in front of [usr.p_them()]." - else - invocation_type ="none" - ..() - - -/obj/effect/proc_holder/spell/targeted/mime/speak - name = "Speech" - desc = "Make or break a vow of silence." - school = "mime" - panel = "Mime" - clothes_req = 0 - human_req = 1 - charge_max = 3000 - range = -1 - include_user = 1 - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - -/obj/effect/proc_holder/spell/targeted/mime/speak/Click() - if(!usr) - return - if(!ishuman(usr)) - return - var/mob/living/carbon/human/H = usr - if(H.mind.miming) - still_recharging_msg = "You can't break your vow of silence that fast!" - else - still_recharging_msg = "You'll have to wait before you can give your vow of silence again!" - ..() - -/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets,mob/user = usr) - for(var/mob/living/carbon/human/H in targets) - H.mind.miming=!H.mind.miming - if(H.mind.miming) - to_chat(H, "You make a vow of silence.") - else - to_chat(H, "You break your vow of silence.") - -// These spells can only be gotten from the "Guide for Advanced Mimery series" for Mime Traitors. - -/obj/effect/proc_holder/spell/targeted/forcewall/mime - name = "Invisible Blockade" - desc = "Form an invisible three tile wide blockade." - wall_type = /obj/effect/forcefield/mime/advanced - invocation_type = "emote" - invocation_emote_self = "You form a blockade in front of yourself." - charge_max = 600 - sound = null - clothes_req = 0 - range = -1 - include_user = 1 - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - -/obj/effect/proc_holder/spell/targeted/forcewall/mime/Click() - if(usr && usr.mind) - if(!usr.mind.miming) - to_chat(usr, "You must dedicate yourself to silence first.") - return - invocation = "[usr.real_name] looks as if a blockade is in front of [usr.p_them()]." - else - invocation_type ="none" - ..() - -/obj/effect/proc_holder/spell/aimed/finger_guns - name = "Finger Guns" - desc = "Shoot a mimed bullet from your fingers that stuns and does some damage." - school = "mime" - panel = "Mime" - charge_max = 300 - clothes_req = 0 - invocation_type = "emote" - invocation_emote_self = "You fire your finger gun!" - range = 20 - projectile_type = /obj/item/projectile/bullet/mime - projectile_amount = 3 - sound = null - active_msg = "You draw your fingers!" - deactive_msg = "You put your fingers at ease. Another time." - active = FALSE - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - base_icon_state = "mime" - - -/obj/effect/proc_holder/spell/aimed/finger_guns/Click() - var/mob/living/carbon/human/owner = usr - if(owner.incapacitated()) - to_chat(owner, "You can't properly point your fingers while incapacitated.") - return - if(usr && usr.mind) - if(!usr.mind.miming) - to_chat(usr, "You must dedicate yourself to silence first.") - return - invocation = "[usr.real_name] fires [usr.p_their()] finger gun!" - else - invocation_type ="none" - ..() - - /obj/item/spellbook/oneuse/mimery_blockade spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime spellname = "" diff --git a/code/modules/spells/spell_types/mind_transfer.dm b/code/modules/spells/spell_types/mind_transfer.dm index 023af548d0..8a646d792f 100644 --- a/code/modules/spells/spell_types/mind_transfer.dm +++ b/code/modules/spells/spell_types/mind_transfer.dm @@ -1,79 +1,79 @@ -/obj/effect/proc_holder/spell/targeted/mind_transfer - name = "Mind Transfer" - desc = "This spell allows the user to switch bodies with a target." - - school = "transmutation" - charge_max = 600 - clothes_req = 0 - invocation = "GIN'YU CAPAN" - invocation_type = "whisper" - range = 1 - cooldown_min = 200 //100 deciseconds reduction per rank - var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell - var/unconscious_amount_caster = 400 //how much the caster is stunned for after the spell - var/unconscious_amount_victim = 400 //how much the victim is stunned for after the spell - - action_icon_state = "mindswap" - -/* -Urist: I don't feel like figuring out how you store object spells so I'm leaving this for you to do. +/obj/effect/proc_holder/spell/targeted/mind_transfer + name = "Mind Transfer" + desc = "This spell allows the user to switch bodies with a target." + + school = "transmutation" + charge_max = 600 + clothes_req = 0 + invocation = "GIN'YU CAPAN" + invocation_type = "whisper" + range = 1 + cooldown_min = 200 //100 deciseconds reduction per rank + var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell + var/unconscious_amount_caster = 400 //how much the caster is stunned for after the spell + var/unconscious_amount_victim = 400 //how much the victim is stunned for after the spell + + action_icon_state = "mindswap" + +/* +Urist: I don't feel like figuring out how you store object spells so I'm leaving this for you to do. Make sure spells that are removed from spell_list are actually removed and deleted when mind transferring. -Also, you never added distance checking after target is selected. I've went ahead and did that. -*/ -/obj/effect/proc_holder/spell/targeted/mind_transfer/cast(list/targets, mob/living/user = usr, distanceoverride) - if(!targets.len) - to_chat(user, "No mind found!") - return - - if(targets.len > 1) - to_chat(user, "Too many minds! You're not a hive damnit!") - return - - var/mob/living/target = targets[1] - - var/t_He = target.p_they(TRUE) - var/t_is = target.p_are() - - if(!(target in oview(range)) && !distanceoverride)//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it. - to_chat(user, "[t_He] [t_is] too far away!") - return - - if(ismegafauna(target)) - to_chat(user, "This creature is too powerful to control!") - return - - if(target.stat == DEAD) - to_chat(user, "You don't particularly want to be dead!") - return - - if(!target.key || !target.mind) - to_chat(user, "[t_He] appear[target.p_s()] to be catatonic! Not even magic can affect [target.p_their()] vacant mind.") - return - - if(user.suiciding) - to_chat(user, "You're killing yourself! You can't concentrate enough to do this!") - return - - if((target.mind.special_role in protected_roles) || cmptext(copytext(target.key,1,2),"@")) - to_chat(user, "[target.p_their(TRUE)] mind is resisting your spell!") - return - - var/mob/living/victim = target//The target of the spell whos body will be transferred to. - var/mob/living/caster = user//The wizard/whomever doing the body transferring. - - //MIND TRANSFER BEGIN - var/mob/dead/observer/ghost = victim.ghostize(0) - caster.mind.transfer_to(victim) - - ghost.mind.transfer_to(caster) - if(ghost.key) - caster.key = ghost.key //have to transfer the key since the mind was not active - qdel(ghost) - - //MIND TRANSFER END - - //Here we knock both mobs out for a time. - caster.Unconscious(unconscious_amount_caster) - victim.Unconscious(unconscious_amount_victim) +Also, you never added distance checking after target is selected. I've went ahead and did that. +*/ +/obj/effect/proc_holder/spell/targeted/mind_transfer/cast(list/targets, mob/living/user = usr, distanceoverride) + if(!targets.len) + to_chat(user, "No mind found!") + return + + if(targets.len > 1) + to_chat(user, "Too many minds! You're not a hive damnit!") + return + + var/mob/living/target = targets[1] + + var/t_He = target.p_they(TRUE) + var/t_is = target.p_are() + + if(!(target in oview(range)) && !distanceoverride)//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it. + to_chat(user, "[t_He] [t_is] too far away!") + return + + if(ismegafauna(target)) + to_chat(user, "This creature is too powerful to control!") + return + + if(target.stat == DEAD) + to_chat(user, "You don't particularly want to be dead!") + return + + if(!target.key || !target.mind) + to_chat(user, "[t_He] appear[target.p_s()] to be catatonic! Not even magic can affect [target.p_their()] vacant mind.") + return + + if(user.suiciding) + to_chat(user, "You're killing yourself! You can't concentrate enough to do this!") + return + + if((target.mind.special_role in protected_roles) || cmptext(copytext(target.key,1,2),"@")) + to_chat(user, "[target.p_their(TRUE)] mind is resisting your spell!") + return + + var/mob/living/victim = target//The target of the spell whos body will be transferred to. + var/mob/living/caster = user//The wizard/whomever doing the body transferring. + + //MIND TRANSFER BEGIN + var/mob/dead/observer/ghost = victim.ghostize(0) + caster.mind.transfer_to(victim) + + ghost.mind.transfer_to(caster) + if(ghost.key) + caster.key = ghost.key //have to transfer the key since the mind was not active + qdel(ghost) + + //MIND TRANSFER END + + //Here we knock both mobs out for a time. + caster.Unconscious(unconscious_amount_caster) + victim.Unconscious(unconscious_amount_victim) SEND_SOUND(caster, sound('sound/magic/mandswap.ogg')) SEND_SOUND(victim, sound('sound/magic/mandswap.ogg'))// only the caster and victim hear the sounds, that way no one knows for sure if the swap happened diff --git a/code/modules/spells/spell_types/projectile.dm b/code/modules/spells/spell_types/projectile.dm index 19e44ffa83..4bbd9ac4a6 100644 --- a/code/modules/spells/spell_types/projectile.dm +++ b/code/modules/spells/spell_types/projectile.dm @@ -1,33 +1,33 @@ //NEEDS MAJOR CODE CLEANUP. -/obj/effect/proc_holder/spell/targeted/projectile - name = "Projectile" - desc = "This spell summons projectiles which try to hit the targets." - - var/proj_icon = 'icons/obj/projectiles.dmi' - var/proj_icon_state = "spell" - var/proj_name = "a spell projectile" - - var/proj_trail = 0 //if it leaves a trail - var/proj_trail_lifespan = 0 //deciseconds - var/proj_trail_icon = 'icons/obj/wizard.dmi' - var/proj_trail_icon_state = "trail" - - - var/proj_type = "/obj/effect/proc_holder/spell/targeted" //IMPORTANT use only subtypes of this - - var/proj_lingering = 0 //if it lingers or disappears upon hitting an obstacle - var/proj_homing = 1 //if it follows the target - var/proj_insubstantial = 0 //if it can pass through dense objects or not - var/proj_trigger_range = 0 //the range from target at which the projectile triggers cast(target) - - var/proj_lifespan = 15 //in deciseconds * proj_step_delay - var/proj_step_delay = 1 //lower = faster - -/obj/effect/proc_holder/spell/targeted/projectile/cast(list/targets, mob/user = usr) - playMagSound() - for(var/mob/living/target in targets) +/obj/effect/proc_holder/spell/targeted/projectile + name = "Projectile" + desc = "This spell summons projectiles which try to hit the targets." + + var/proj_icon = 'icons/obj/projectiles.dmi' + var/proj_icon_state = "spell" + var/proj_name = "a spell projectile" + + var/proj_trail = 0 //if it leaves a trail + var/proj_trail_lifespan = 0 //deciseconds + var/proj_trail_icon = 'icons/obj/wizard.dmi' + var/proj_trail_icon_state = "trail" + + + var/proj_type = "/obj/effect/proc_holder/spell/targeted" //IMPORTANT use only subtypes of this + + var/proj_lingering = 0 //if it lingers or disappears upon hitting an obstacle + var/proj_homing = 1 //if it follows the target + var/proj_insubstantial = 0 //if it can pass through dense objects or not + var/proj_trigger_range = 0 //the range from target at which the projectile triggers cast(target) + + var/proj_lifespan = 15 //in deciseconds * proj_step_delay + var/proj_step_delay = 1 //lower = faster + +/obj/effect/proc_holder/spell/targeted/projectile/cast(list/targets, mob/user = usr) + playMagSound() + for(var/mob/living/target in targets) launch(target, user) /obj/effect/proc_holder/spell/targeted/projectile/proc/launch(mob/living/target, mob/user) diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 7ab3121a3a..bb454a3b19 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -13,7 +13,7 @@ if(H.stat == DEAD || !(H.client)) continue if(H.mind) - if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice" || H.mind.special_role == "survivalist") + if(iswizard(H) || H.mind.special_role == "survivalist") continue if(prob(survivor_probability) && !(H.mind in SSticker.mode.traitors)) SSticker.mode.traitors += H.mind @@ -220,4 +220,4 @@ SSevents.reschedule() message_admins("Summon Events intensifies, events will now occur every [SSevents.frequency_lower / 600] to [SSevents.frequency_upper / 600] minutes.") - log_game("Summon Events was increased!") \ No newline at end of file + log_game("Summon Events was increased!") diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm index 4ee1b678f0..8a377c6c3a 100644 --- a/code/modules/spells/spell_types/shapeshift.dm +++ b/code/modules/spells/spell_types/shapeshift.dm @@ -57,13 +57,15 @@ var/mob/living/shape = new shapeshift_type(caster.loc) H = new(shape,src,caster) + clothes_req = 0 human_req = 0 /obj/effect/proc_holder/spell/targeted/shapeshift/proc/Restore(mob/living/shape) var/obj/shapeshift_holder/H = locate() in shape if(!H) - return + return + H.restore() clothes_req = initial(clothes_req) @@ -156,4 +158,4 @@ /datum/soullink/shapeshift/sharerDies(gibbed, mob/living/sharer) if(source) - source.shapeDeath(gibbed) + source.shapeDeath(gibbed) \ No newline at end of file diff --git a/code/modules/spells/spell_types/touch_attacks.dm b/code/modules/spells/spell_types/touch_attacks.dm index 4a2f54e1f5..2000d8daea 100644 --- a/code/modules/spells/spell_types/touch_attacks.dm +++ b/code/modules/spells/spell_types/touch_attacks.dm @@ -24,9 +24,7 @@ stoplag(1) /obj/effect/proc_holder/spell/targeted/touch/can_cast(mob/user = usr) - if(attached_hand) - return TRUE - return ..() + return ..() && attached_hand /obj/effect/proc_holder/spell/targeted/touch/proc/ChargeHand(mob/living/carbon/user) attached_hand = new hand_path(src) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index f6a2c057d0..0f8003b9b4 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -22,4 +22,4 @@ var/obj/item/bodypart/target_limb = surgery.operated_bodypart target_limb.drop_limb() - return 1 + return 1 \ No newline at end of file diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index c8a47d2096..00a9a99bb0 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -23,9 +23,9 @@ /datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] successfully fixes [target]'s eyes!", "You succeed in fixing [target]'s eyes.") - target.cure_blind() + target.cure_blind(list(EYE_DAMAGE)) target.set_blindness(0) - target.cure_nearsighted() + target.cure_nearsighted(list(EYE_DAMAGE)) target.blur_eyes(35) //this will fix itself slowly. target.set_eye_damage(0) return TRUE diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index d37b17ae35..c3322126e4 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -169,3 +169,4 @@ return 0 return 1 + diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index b9881d0e37..cfec06c7ea 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -34,7 +34,7 @@ case = locate(/obj/item/implantcase) in get_turf(target) if(case && !case.imp) case.imp = I - I.loc = case + I.forceMove(case) case.update_icon() user.visible_message("[user] places [I] into [case]!", "You place [I] into [case].") else @@ -53,4 +53,4 @@ /datum/surgery_step/mechanic_unwrench, /datum/surgery_step/extract_implant, /datum/surgery_step/mechanic_wrench, - /datum/surgery_step/mechanic_close) + /datum/surgery_step/mechanic_close) \ No newline at end of file diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm index 25d914b0fb..e2316c0e4d 100644 --- a/code/modules/surgery/limb_augmentation.dm +++ b/code/modules/surgery/limb_augmentation.dm @@ -1,3 +1,4 @@ + /////AUGMENTATION SURGERIES////// diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index dfb41f90e0..480edb4bd3 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -50,4 +50,4 @@ newmeat.subjectjob = H.job newmeat.reagents.add_reagent ("nutriment", (removednutriment / 15)) //To balance with nutriment_factor of nutriment newmeat.forceMove(target.loc) - return 1 + return 1 \ No newline at end of file diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm index 657564f112..0bdef2aac9 100644 --- a/code/modules/surgery/mechanic_steps.dm +++ b/code/modules/surgery/mechanic_steps.dm @@ -82,4 +82,4 @@ /datum/surgery_step/open_hatch/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].", - "You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]...") + "You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]...") \ No newline at end of file diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index dc8b3543fa..97e24b4cd5 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -126,7 +126,7 @@ return TRUE if(!organs.len) - to_chat(user, "There are no removeable organs in [target]'s [parse_zone(target_zone)]!") + to_chat(user, "There are no removable organs in [target]'s [parse_zone(target_zone)]!") return -1 else for(var/obj/item/organ/O in organs) diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index a6635ed78d..ec1fc2bcc9 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -116,7 +116,7 @@ /obj/item/organ/cyberimp/chest/thrusters name = "implantable thrusters set" desc = "An implantable set of thruster ports. They use the gas from environment or subject's internals for propulsion in zero-gravity areas. \ - Unlike regular jetpack, this device has no stabilization system." + Unlike regular jetpacks, this device has no stabilization system." slot = ORGAN_SLOT_THRUSTERS icon_state = "imp_jetpack" implant_overlay = null diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index b3f3953c49..bb5301d79e 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -85,3 +85,4 @@ var/obj/item/melee/arm_blade/new_arm = new(target,TRUE,TRUE) target_zone == "r_arm" ? target.put_in_r_hand(new_arm) : target.put_in_l_hand(new_arm) return 1 + diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index b10f6acdd0..e293d7c401 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -6,7 +6,7 @@ var/can_cancel = 1 //Can cancel this surgery after step 1 with cautery var/list/species = list(/mob/living/carbon/human) //Acceptable Species var/location = "chest" //Surgery location - var/requires_bodypart_type = BODYPART_ORGANIC //Prevents you from performing an operation on robotic limbs + var/requires_bodypart_type = BODYPART_ORGANIC //Prevents you from performing an operation on incorrect limbs. 0 for any limb type var/list/possible_locs = list() //Multiple locations var/ignore_clothes = 0 //This surgery ignores clothes var/mob/living/carbon/target //Operation target mob diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index 577dc6547b..445628566e 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -5,7 +5,7 @@ var/accept_hand = 0 //does the surgery step require an open hand? If true, ignores implements. Compatible with accept_any_item. var/accept_any_item = 0 //does the surgery step accept any item? If true, ignores implements. Compatible with require_hand. var/time = 10 //how long does the step take? - var/repeatable = 0 + var/repeatable = 0 //does this step may be repeated? Make shure it isn't last step, or it used in surgery with `can_cancel = 1`. Or surgion will be stuck in the loop /datum/surgery_step/proc/try_op(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm index 175ac9469c..34946a6286 100644 --- a/code/modules/uplink/uplink.dm +++ b/code/modules/uplink/uplink.dm @@ -17,7 +17,6 @@ GLOBAL_LIST_EMPTY(uplinks) var/selected_cat var/owner = null var/datum/game_mode/gamemode - var/spent_telecrystals = 0 var/datum/uplink_purchase_log/purchase_log var/list/uplink_items var/hidden_crystals = 0 @@ -89,7 +88,7 @@ GLOBAL_LIST_EMPTY(uplinks) var/refundable = initial(UI.refundable) if(I.type == path && refundable && I.check_uplink_validity()) telecrystals += cost - spent_telecrystals -= cost + purchase_log.total_spent -= cost to_chat(user, "[I] refunded.") qdel(I) return diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 6ced230134..eb97d08750 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -91,7 +91,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/proc/spawn_item(turf/loc, datum/component/uplink/U, mob/user) if(item) - SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(name)]", "[cost]")) return new item(loc) /datum/uplink_item/Destroy() @@ -611,7 +610,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. name = "Sleepy Pen" desc = "A syringe disguised as a functional pen, filled with a potent mix of drugs, including a \ strong anesthetic and a chemical that prevents the target from speaking. \ - The pen holds one dose of the mixture, and cannot be refilled. Note that before the target \ + The pen holds one dose of the mixture, and can be refilled. Note that before the target \ falls asleep, they will be able to move and act." item = /obj/item/pen/sleepy cost = 4 @@ -700,7 +699,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/stealthy_tools/chameleon/nuke cost = 6 - exclude_modes = list() include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_tools/syndigaloshes @@ -1391,7 +1389,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. if(possible_items.len) var/datum/uplink_item/I = pick(possible_items) U.telecrystals -= I.cost - U.spent_telecrystals += I.cost + U.purchase_log.total_spent += I.cost SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(I.name)]", "[cost]")) SSblackbox.record_feedback("tally", "traitor_random_uplink_items_gotten", 1, initial(I.name)) return new I.item(loc) diff --git a/code/modules/uplink/uplink_purchase_log.dm b/code/modules/uplink/uplink_purchase_log.dm index 5ec462d237..a8b1083999 100644 --- a/code/modules/uplink/uplink_purchase_log.dm +++ b/code/modules/uplink/uplink_purchase_log.dm @@ -20,6 +20,8 @@ GLOBAL_LIST(uplink_purchase_logs_by_key) //assoc key = /datum/uplink_purchase_lo /datum/uplink_purchase_log/Destroy() purchase_log = null parent = null + if(GLOB.uplink_purchase_logs_by_key[owner] == src) + GLOB.uplink_purchase_logs_by_key -= owner return ..() /datum/uplink_purchase_log/proc/MergeWithAndDel(datum/uplink_purchase_log/other) diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm index 3925b863ff..88524366a6 100644 --- a/code/modules/vehicles/pimpin_ride.dm +++ b/code/modules/vehicles/pimpin_ride.dm @@ -13,6 +13,9 @@ var/datum/component/riding/D = LoadComponent(/datum/component/riding) D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 7), TEXT_EAST = list(-12, 7), TEXT_WEST = list( 12, 7))) + if(floorbuffer) + AddComponent(/datum/component/cleaning) + /obj/vehicle/ridden/janicart/Destroy() if(mybag) qdel(mybag) @@ -47,7 +50,7 @@ floorbuffer = TRUE qdel(I) to_chat(user, "You upgrade [src] with the floor buffer.") - flags_1 |= CLEAN_ON_MOVE_1 + AddComponent(/datum/component/cleaning) update_icon() else return ..() diff --git a/code/modules/vehicles/ridden.dm b/code/modules/vehicles/ridden.dm index 32975e1e0f..5690bb1ad4 100644 --- a/code/modules/vehicles/ridden.dm +++ b/code/modules/vehicles/ridden.dm @@ -1,76 +1,71 @@ -/obj/vehicle/ridden - name = "ridden vehicle" - can_buckle = TRUE - max_buckled_mobs = 1 - buckle_lying = FALSE - default_driver_move = FALSE - var/legs_required = 2 - var/arms_requires = 0 //why not? - -/obj/vehicle/ridden/Initialize() - . = ..() - LoadComponent(/datum/component/riding) - -/obj/vehicle/ridden/examine(mob/user) - . = ..() - to_chat(user, "Put a key inside it by clicking it with the key. If there's a key inside, you can remove it via Alt-Click!") - -/obj/vehicle/ridden/generate_action_type(actiontype) - var/datum/action/vehicle/ridden/A = ..() - . = A - if(istype(A)) - A.vehicle_ridden_target = src - -/obj/vehicle/ridden/post_unbuckle_mob(mob/living/M) - remove_occupant(M) - return ..() - -/obj/vehicle/ridden/post_buckle_mob(mob/living/M) - add_occupant(M) - return ..() - -/obj/vehicle/ridden/attackby(obj/item/I, mob/user, params) - if(key_type && !is_key(inserted_key) && is_key(I)) - if(user.transferItemToLoc(I, src)) - to_chat(user, "You insert \the [I] into \the [src].") - if(inserted_key) //just in case there's an invalid key - inserted_key.forceMove(drop_location()) - inserted_key = I - else - to_chat(user, "[I] seems to be stuck to your hand!") - return - return ..() - -/obj/vehicle/ridden/AltClick(mob/user) - if(user.Adjacent(src) && inserted_key) - if(!is_occupant(user)) - to_chat(user, "You must be riding the [src] to remove [src]'s key!") - return - to_chat(user, "You remove \the [inserted_key] from \the [src].") - inserted_key.forceMove(drop_location()) - user.put_in_hands(inserted_key) - inserted_key = null - return ..() - -/obj/vehicle/ridden/driver_move(mob/user, direction) - if(key_type && !is_key(inserted_key)) - to_chat(user, "[src] has no key inserted!") - return FALSE - var/datum/component/riding/R = GetComponent(/datum/component/riding) - R.handle_ride(user, direction) - return ..() - -/obj/vehicle/ridden/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) - if(user.incapacitated()) - return - for(var/atom/movable/A in get_turf(src)) - if(A.density) - if(A != src && A != M) - return - M.forceMove(get_turf(src)) - . = ..() - -/obj/vehicle/ridden/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) - if(!force && occupant_amount() >= max_occupants) - return FALSE - return ..() +/obj/vehicle/ridden + name = "ridden vehicle" + can_buckle = TRUE + max_buckled_mobs = 1 + buckle_lying = FALSE + default_driver_move = FALSE + var/legs_required = 2 + var/arms_requires = 0 //why not? + +/obj/vehicle/ridden/Initialize() + . = ..() + LoadComponent(/datum/component/riding) + +/obj/vehicle/ridden/examine(mob/user) + . = ..() + to_chat(user, "Put a key inside it by clicking it with the key. If there's a key inside, you can remove it via Alt-Click!") + +/obj/vehicle/ridden/generate_action_type(actiontype) + var/datum/action/vehicle/ridden/A = ..() + . = A + if(istype(A)) + A.vehicle_ridden_target = src + +/obj/vehicle/ridden/post_unbuckle_mob(mob/living/M) + remove_occupant(M) + return ..() + +/obj/vehicle/ridden/post_buckle_mob(mob/living/M) + add_occupant(M) + return ..() + +/obj/vehicle/ridden/attackby(obj/item/I, mob/user, params) + if(key_type && !is_key(inserted_key) && is_key(I)) + if(user.transferItemToLoc(I, src)) + to_chat(user, "You insert \the [I] into \the [src].") + if(inserted_key) //just in case there's an invalid key + inserted_key.forceMove(drop_location()) + inserted_key = I + else + to_chat(user, "[I] seems to be stuck to your hand!") + return + return ..() + +/obj/vehicle/ridden/AltClick(mob/user) + if(user.Adjacent(src) && inserted_key) + if(!is_occupant(user)) + to_chat(user, "You must be riding the [src] to remove [src]'s key!") + return + to_chat(user, "You remove \the [inserted_key] from \the [src].") + inserted_key.forceMove(drop_location()) + user.put_in_hands(inserted_key) + inserted_key = null + return ..() + +/obj/vehicle/ridden/driver_move(mob/user, direction) + if(key_type && !is_key(inserted_key)) + to_chat(user, "[src] has no key inserted!") + return FALSE + var/datum/component/riding/R = GetComponent(/datum/component/riding) + R.handle_ride(user, direction) + return ..() + +/obj/vehicle/ridden/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) + if(!in_range(user, src) || !in_range(M, src)) + return FALSE + . = ..(M, user, FALSE) + +/obj/vehicle/ridden/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) + if(!force && occupant_amount() >= max_occupants) + return FALSE + return ..() diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index 07e3648417..119ed27926 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -58,8 +58,8 @@ life has not abandoned your broken form. You can only feel a deep and immutable hunger that \ not even death can stop, you will rise again!") var/revive_time = rand(revive_time_min, revive_time_max) - var/flags_1 = TIMER_STOPPABLE - timer_id = addtimer(CALLBACK(src, .proc/zombify), revive_time, flags_1) + var/flags = TIMER_STOPPABLE + timer_id = addtimer(CALLBACK(src, .proc/zombify), revive_time, flags) /obj/item/organ/zombie_infection/proc/zombify() timer_id = null diff --git a/code/world.dm b/code/world.dm index 955d19c6c4..660d2f272d 100644 --- a/code/world.dm +++ b/code/world.dm @@ -1,4 +1,3 @@ - //This file is just for the necessary /world definition //Try looking in game/world.dm diff --git a/config/config.txt b/config/config.txt index e43b38b568..b934ddab41 100644 --- a/config/config.txt +++ b/config/config.txt @@ -51,7 +51,8 @@ BAN_LEGACY_SYSTEM ## Unhash this to enable playtime requirements for head jobs. #USE_EXP_RESTRICTIONS_HEADS ## Unhash this to override head jobs' playtime requirements with this number of hours. -#USE_EXP_RESTRICTIONS_HEADS_HOURS 15 +## Leave this commented out to use the values defined in the job datums. Values in the datums are stored as minutes. +#USE_EXP_RESTRICTIONS_HEADS_HOURS 3 ## Unhash this to change head jobs' playtime requirements so that they're based on department playtime, rather than crew playtime. #USE_EXP_RESTRICTIONS_HEADS_DEPARTMENT ## Unhash this to enable playtime requirements for certain non-head jobs, like Engineer and Scientist. diff --git a/html/changelogs/AutoChangeLog-pr-4695.yml b/html/changelogs/AutoChangeLog-pr-4695.yml new file mode 100644 index 0000000000..295f470c19 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4695.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - config: "The default config for head of staff exp override is closer to the actual default with no override." diff --git a/html/changelogs/AutoChangeLog-pr-4696.yml b/html/changelogs/AutoChangeLog-pr-4696.yml new file mode 100644 index 0000000000..94a6abdc2d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4696.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Lavaboats no longer set you on fire." diff --git a/html/changelogs/AutoChangeLog-pr-4698.yml b/html/changelogs/AutoChangeLog-pr-4698.yml new file mode 100644 index 0000000000..f36c090b6b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4698.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Decals will no longer spawn where they don't belong" diff --git a/html/changelogs/AutoChangeLog-pr-4699.yml b/html/changelogs/AutoChangeLog-pr-4699.yml new file mode 100644 index 0000000000..f527d04673 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4699.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "comms consoles no longer announce in deadchat announcements if they were cooling down and unsuccessful." diff --git a/html/changelogs/AutoChangeLog-pr-4703.yml b/html/changelogs/AutoChangeLog-pr-4703.yml new file mode 100644 index 0000000000..84caef07bb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4703.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - rscadd: "Advances in NanoTrasen's wrapping department have resulted in the easy creation of package wrap from all station autolathes!" diff --git a/html/changelogs/AutoChangeLog-pr-4705.yml b/html/changelogs/AutoChangeLog-pr-4705.yml new file mode 100644 index 0000000000..b244a9b202 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4705.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - balance: "Servants are now teleported to the Ark when it activates, and cannot leave Reebe afterwards." diff --git a/html/changelogs/AutoChangeLog-pr-4706.yml b/html/changelogs/AutoChangeLog-pr-4706.yml new file mode 100644 index 0000000000..ec2df28b7b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4706.yml @@ -0,0 +1,4 @@ +author: "JohnGinnane" +delete-after: True +changes: + - rscadd: "Newly crafted stacks are merged with held stacks of the same type." diff --git a/html/changelogs/AutoChangeLog-pr-4707.yml b/html/changelogs/AutoChangeLog-pr-4707.yml new file mode 100644 index 0000000000..fbb5baaee4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4707.yml @@ -0,0 +1,4 @@ +author: "Iamgoofball" +delete-after: True +changes: + - bugfix: "Booze now properly reflects programming speed." diff --git a/html/changelogs/AutoChangeLog-pr-4709.yml b/html/changelogs/AutoChangeLog-pr-4709.yml new file mode 100644 index 0000000000..77fc189587 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4709.yml @@ -0,0 +1,4 @@ +author: "ninjanomnom" +delete-after: True +changes: + - bugfix: "Moving diagonally in pipes should no longer eject you from the pipe." diff --git a/html/changelogs/AutoChangeLog-pr-4712.yml b/html/changelogs/AutoChangeLog-pr-4712.yml new file mode 100644 index 0000000000..2be6df57e5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4712.yml @@ -0,0 +1,4 @@ +author: "More Robust Than You" +delete-after: True +changes: + - bugfix: "Blob Overminds should no longer to be able to spawn on ANY space tile" diff --git a/html/changelogs/AutoChangeLog-pr-4714.yml b/html/changelogs/AutoChangeLog-pr-4714.yml new file mode 100644 index 0000000000..f68222ddd1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4714.yml @@ -0,0 +1,5 @@ +author: "Dax Dupont" +delete-after: True +changes: + - balance: "The chaplain's soul stone now requires death instead of (soft) crit." + - bugfix: "The examine text now properly states that it can only capture a single soul." diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 5d8bfa629b..fd145092a7 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/obj/assemblies/electronic_components.dmi b/icons/obj/assemblies/electronic_components.dmi index 1852079e73..a9dac06d6b 100644 Binary files a/icons/obj/assemblies/electronic_components.dmi and b/icons/obj/assemblies/electronic_components.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index f44fc29f7c..a494c1081c 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 1dbebc524f..24a4376d3a 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -1,1085 +1,48 @@ macro "default" - elem - name = "TAB" - command = ".winset \"mainwindow.macro=hotkeys mapwindow.map.focus=true input.background-color=#e0e0e0\"" - is-disabled = false - elem - name = "CENTER+REP" - command = ".center" - is-disabled = false - elem - name = "NORTHEAST" - command = ".northeast" - is-disabled = false - elem - name = "SOUTHEAST" - command = ".southeast" - is-disabled = false - elem - name = "SOUTHWEST" - command = ".southwest" - is-disabled = false - elem - name = "NORTHWEST" - command = ".northwest" - is-disabled = false - elem - name = "CTRL+WEST" - command = "westface" - is-disabled = false - elem - name = "WEST+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+NORTH" - command = "northface" - is-disabled = false - elem - name = "NORTH+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+EAST" - command = "eastface" - is-disabled = false - elem - name = "EAST+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+SOUTH" - command = "southface" - is-disabled = false - elem - name = "SOUTH+REP" - command = ".movedown" - is-disabled = false - elem - name = "INSERT" - command = "a-intent right" - is-disabled = false - elem - name = "DELETE" - command = "delete-key-pressed" - is-disabled = false - elem - name = "CTRL+H" - command = "delete-key-pressed" - is-disabled = false - elem - name = "CTRL+1" - command = "a-intent help" - is-disabled = false - elem - name = "CTRL+2" - command = "a-intent disarm" - is-disabled = false - elem - name = "CTRL+3" - command = "a-intent grab" - is-disabled = false - elem - name = "CTRL+4" - command = "a-intent harm" - is-disabled = false - elem - name = "CTRL+A+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+B" - command = "resist" - is-disabled = false - elem - name = "CTRL+D+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+E" - command = "quick-equip" - is-disabled = false - elem - name = "CTRL+F" - command = "a-intent left" - is-disabled = false - elem - name = "CTRL+G" - command = "a-intent right" - is-disabled = false - elem - name = "CTRL+O" - command = "ooc" - is-disabled = false - elem - name = "CTRL+Q" - command = ".northwest" - is-disabled = false - elem - name = "CTRL+R" - command = ".southwest" - is-disabled = false - elem - name = "CTRL+S+REP" - command = ".movedown" - is-disabled = false - elem - name = "CTRL+W+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+X" - command = ".northeast" - is-disabled = false - elem - name = "CTRL+Y" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+Z" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+NUMPAD1" - command = "body-r-leg" - is-disabled = false - elem - name = "CTRL+NUMPAD2" - command = "body-groin" - is-disabled = false - elem - name = "CTRL+NUMPAD3" - command = "body-l-leg" - is-disabled = false - elem - name = "CTRL+NUMPAD4" - command = "body-r-arm" - is-disabled = false - elem - name = "CTRL+NUMPAD5" - command = "body-chest" - is-disabled = false - elem - name = "CTRL+NUMPAD6" - command = "body-l-arm" - is-disabled = false - elem - name = "CTRL+NUMPAD8" - command = "body-toggle-head" - is-disabled = false - elem - name = "CTRL+ADD" - command = "Add-View-Range 1" - is-disabled = false - elem - name = "CTRL+SUBTRACT" - command = "Add-View-Range -1" - is_disabled = false - elem - name = "F1" - command = "adminhelp" - is-disabled = false - elem - name = "CTRL+SHIFT+F1+REP" - command = ".options" - is-disabled = false - elem - name = "F2+REP" - command = ".screenshot auto" - is-disabled = false - elem - name = "SHIFT+F2+REP" - command = ".screenshot" - is-disabled = false - elem - name = "F5" - command = "Aghost" - is-disabled = false - elem - name = "F6" - command = "Player-Panel" - is-disabled = false - elem - name = "F7" - command = "Toggle-Build-Mode-Self" - is-disabled = false - elem - name = "CTRL+F7" - command = "Stealth-Mode" - is-disabled = false - elem - name = "F8" - command = "Invisimin" - is-disabled = false - elem - name = "F12" - command = "F12" - is-disabled = false - elem - name = "ALT" - command = "toggle-walk-run" - is-disabled = false - elem - name = "ALT+UP" - command = "toggle-walk-run" - is-disabled = false - -macro "hotkeys" - elem - name = "TAB" - command = ".winset \"mainwindow.macro=default input.focus=true input.background-color=#d3b5b5\"" - is-disabled = false - elem - name = "CENTER+REP" - command = ".center" - is-disabled = false - elem - name = "NORTHEAST" - command = ".northeast" - is-disabled = false - elem - name = "SOUTHEAST" - command = ".southeast" - is-disabled = false - elem - name = "SOUTHWEST" - command = ".southwest" - is-disabled = false - elem - name = "NORTHWEST" - command = ".northwest" - is-disabled = false - elem - name = "CTRL+WEST" - command = "westface" - is-disabled = false - elem - name = "WEST+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+NORTH" - command = "northface" - is-disabled = false - elem - name = "NORTH+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+EAST" - command = "eastface" - is-disabled = false - elem - name = "EAST+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+SOUTH" - command = "southface" - is-disabled = false - elem - name = "SOUTH+REP" - command = ".movedown" - is-disabled = false - elem - name = "INSERT" - command = "a-intent right" - is-disabled = false - elem - name = "DELETE" - command = "delete-key-pressed" - is-disabled = false - elem - name = "H" - command = "delete-key-pressed" - is-disabled = false - elem - name = "1" - command = "a-intent help" - is-disabled = false - elem - name = "CTRL+1" - command = "a-intent help" - is-disabled = false - elem - name = "2" - command = "a-intent disarm" - is-disabled = false - elem - name = "CTRL+2" - command = "a-intent disarm" - is-disabled = false - elem - name = "3" - command = "a-intent grab" - is-disabled = false - elem - name = "CTRL+3" - command = "a-intent grab" - is-disabled = false - elem - name = "4" - command = "a-intent harm" - is-disabled = false - elem - name = "CTRL+4" - command = "a-intent harm" - is-disabled = false - elem - name = "A+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+A+REP" - command = ".moveleft" - is-disabled = false - elem - name = "B" - command = "resist" - is-disabled = false - elem - name = "CTRL+B" - command = "resist" - is-disabled = false - elem - name = "D+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+D+REP" - command = ".moveright" - is-disabled = false - elem - name = "E" - command = "quick-equip" - is-disabled = false - elem - name = "CTRL+E" - command = "quick-equip" - is-disabled = false - elem - name = "F" - command = "a-intent left" - is-disabled = false - elem - name = "CTRL+F" - command = "a-intent left" - is-disabled = false - elem - name = "G" - command = "a-intent right" - is-disabled = false - elem - name = "CTRL+G" - command = "a-intent right" - is-disabled = false - elem - name = "M" - command = "me" - is-disabled = false - elem - name = "O" - command = "ooc" - is-disabled = false - elem - name = "CTRL+O" - command = "ooc" - is-disabled = false - elem - name = "Q" - command = ".northwest" - is-disabled = false - elem - name = "CTRL+Q" - command = ".northwest" - is-disabled = false - elem - name = "R" - command = ".southwest" - is-disabled = false - elem - name = "CTRL+R" - command = ".southwest" - is-disabled = false - elem "s_key" - name = "S+REP" - command = ".movedown" - is-disabled = false - elem - name = "CTRL+S+REP" - command = ".movedown" - is-disabled = false - elem - name = "T" - command = "say" - is-disabled = false - elem "w_key" - name = "W+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+W+REP" - command = ".moveup" - is-disabled = false - elem - name = "X" - command = ".northeast" - is-disabled = false - elem - name = "CTRL+X" - command = ".northeast" - is-disabled = false - elem - name = "Y" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+Y" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "Z" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+Z" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "NUMPAD1" - command = "body-r-leg" - is-disabled = false - elem - name = "NUMPAD2" - command = "body-groin" - is-disabled = false - elem - name = "NUMPAD3" - command = "body-l-leg" - is-disabled = false - elem - name = "NUMPAD4" - command = "body-r-arm" - is-disabled = false - elem - name = "NUMPAD5" - command = "body-chest" - is-disabled = false - elem - name = "NUMPAD6" - command = "body-l-arm" - is-disabled = false - elem - name = "NUMPAD8" - command = "body-toggle-head" - is-disabled = false - elem - name = "CTRL+ADD" - command = "Add-View-Range 1" - is-disabled = false - elem - name = "CTRL+SUBTRACT" - command = "Add-View-Range -1" - is_disabled = false - elem - name = "F1" - command = "adminhelp" - is-disabled = false - elem - name = "CTRL+SHIFT+F1+REP" - command = ".options" - is-disabled = false - elem - name = "F2+REP" - command = ".screenshot auto" - is-disabled = false - elem - name = "SHIFT+F2+REP" - command = ".screenshot" - is-disabled = false - elem - name = "F5" - command = "Aghost" - is-disabled = false - elem - name = "F6" - command = "Player-Panel" - is-disabled = false - elem - name = "F7" - command = "Stealth-Mode" - is-disabled = false - elem - name = "CTRL+F7" - command = "Stealth-Mode" - is-disabled = false - elem - name = "F8" - command = "Toggle-Build-Mode-Self" - is-disabled = false - elem - name = "F12" - command = "F12" - is-disabled = false - elem - name = "ALT" - command = "toggle-walk-run" - is-disabled = false - elem - name = "ALT+UP" - command = "toggle-walk-run" - is-disabled = false - -macro "robot-default" - elem - name = "TAB" - command = ".winset \"mainwindow.macro=robot-hotkeys mapwindow.map.focus=true input.background-color=#e0e0e0\"" - is-disabled = false - elem - name = "CENTER+REP" - command = ".center" - is-disabled = false - elem - name = "NORTHEAST" - command = ".northeast" - is-disabled = false - elem - name = "SOUTHEAST" - command = ".southeast" - is-disabled = false - elem - name = "NORTHWEST" - command = "unequip-module" - is-disabled = false - elem - name = "CTRL+WEST" - command = "westface" - is-disabled = false - elem - name = "WEST+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+NORTH" - command = "northface" - is-disabled = false - elem - name = "NORTH+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+EAST" - command = "eastface" - is-disabled = false - elem - name = "EAST+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+SOUTH" - command = "southface" - is-disabled = false - elem - name = "SOUTH+REP" - command = ".movedown" - is-disabled = false - elem - name = "INSERT" - command = "a-intent right" - is-disabled = false - elem - name = "DELETE" - command = "delete-key-pressed" - is-disabled = false - elem - name = "CTRL+H" - command = "delete-key-pressed" - is-disabled = false - elem - name = "CTRL+1" - command = "toggle-module 1" - is-disabled = false - elem - name = "CTRL+2" - command = "toggle-module 2" - is-disabled = false - elem - name = "CTRL+3" - command = "toggle-module 3" - is-disabled = false - elem - name = "CTRL+4" - command = "a-intent left" - is-disabled = false - elem - name = "CTRL+A+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+B" - command = "resist" - is-disabled = false - elem - name = "CTRL+O" - command = "ooc" - is-disabled = false - elem - name = "CTRL+D+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+F" - command = "a-intent left" - is-disabled = false - elem - name = "CTRL+G" - command = "a-intent right" - is-disabled = false - elem - name = "CTRL+Q" - command = "unequip-module" - is-disabled = false - elem - name = "CTRL+S+REP" - command = ".movedown" - is-disabled = false - elem - name = "CTRL+W+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+X" - command = ".northeast" - is-disabled = false - elem - name = "CTRL+Y" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+Z" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+NUMPAD1" - command = "body-r-leg" - is-disabled = false - elem - name = "CTRL+NUMPAD2" - command = "body-groin" - is-disabled = false - elem - name = "CTRL+NUMPAD3" - command = "body-l-leg" - is-disabled = false - elem - name = "CTRL+NUMPAD4" - command = "body-r-arm" - is-disabled = false - elem - name = "CTRL+NUMPAD5" - command = "body-chest" - is-disabled = false - elem - name = "CTRL+NUMPAD6" - command = "body-l-arm" - is-disabled = false - elem - name = "CTRL+NUMPAD8" - command = "body-toggle-head" - is-disabled = false - elem - name = "F1" - command = "adminhelp" - is-disabled = false - elem - name = "CTRL+SHIFT+F1+REP" - command = ".options" - is-disabled = false - elem - name = "F2+REP" - command = ".screenshot auto" - is-disabled = false - elem - name = "SHIFT+F2+REP" - command = ".screenshot" - is-disabled = false - elem - name = "F5" - command = "Aghost" - is-disabled = false - elem - name = "F6" - command = "Player-Panel" - is-disabled = false - elem - name = "F7" - command = "Toggle-Build-Mode-Self" - is-disabled = false - elem - name = "CTRL+F7" - command = "Stealth-Mode" - is-disabled = false - elem - name = "F8" - command = "Invisimin" - is-disabled = false - elem - name = "F12" - command = "F12" - is-disabled = false - -macro "robot-hotkeys" - elem - name = "TAB" - command = ".winset \"mainwindow.macro=robot-default input.focus=true input.background-color=#d3b5b5\"" - is-disabled = false - elem - name = "CENTER+REP" - command = ".center" - is-disabled = false - elem - name = "NORTHEAST" - command = ".northeast" - is-disabled = false - elem - name = "SOUTHEAST" - command = ".southeast" - is-disabled = false - elem - name = "NORTHWEST" - command = "unequip-module" - is-disabled = false - elem - name = "CTRL+WEST" - command = "westface" - is-disabled = false - elem - name = "WEST+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+NORTH" - command = "northface" - is-disabled = false - elem - name = "NORTH+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+EAST" - command = "eastface" - is-disabled = false - elem - name = "EAST+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+SOUTH" - command = "southface" - is-disabled = false - elem - name = "SOUTH+REP" - command = ".movedown" - is-disabled = false - elem - name = "INSERT" - command = "a-intent right" - is-disabled = false - elem - name = "DELETE" - command = "delete-key-pressed" - is-disabled = false - elem - name = "H" - command = "delete-key-pressed" - is-disabled = false - elem - name = "1" - command = "toggle-module 1" - is-disabled = false - elem - name = "CTRL+1" - command = "toggle-module 1" - is-disabled = false - elem - name = "2" - command = "toggle-module 2" - is-disabled = false - elem - name = "CTRL+2" - command = "toggle-module 2" - is-disabled = false - elem - name = "3" - command = "toggle-module 3" - is-disabled = false - elem - name = "CTRL+3" - command = "toggle-module 3" - is-disabled = false - elem - name = "4" - command = "a-intent left" - is-disabled = false - elem - name = "CTRL+4" - command = "a-intent left" - is-disabled = false - elem - name = "A+REP" - command = ".moveleft" - is-disabled = false - elem - name = "CTRL+A+REP" - command = ".moveleft" - is-disabled = false - elem - name = "B" - command = "resist" - is-disabled = false - elem - name = "CTRL+B" - command = "resist" - is-disabled = false - elem - name = "M" - command = "me" - is-disabled = false - elem - name = "O" - command = "ooc" - is-disabled = false - elem - name = "CTRL+O" - command = "ooc" - is-disabled = false - elem - name = "D+REP" - command = ".moveright" - is-disabled = false - elem - name = "CTRL+D+REP" - command = ".moveright" - is-disabled = false - elem - name = "F" - command = "a-intent left" - is-disabled = false - elem - name = "CTRL+F" - command = "a-intent left" - is-disabled = false - elem - name = "G" - command = "a-intent right" - is-disabled = false - elem - name = "CTRL+G" - command = "a-intent right" - is-disabled = false - elem - name = "Q" - command = "unequip-module" - is-disabled = false - elem - name = "CTRL+Q" - command = "unequip-module" - is-disabled = false - elem "s_key" - name = "S+REP" - command = ".movedown" - is-disabled = false - elem - name = "CTRL+S+REP" - command = ".movedown" - is-disabled = false - elem - name = "T" - command = "say" - is-disabled = false - elem "w_key" - name = "W+REP" - command = ".moveup" - is-disabled = false - elem - name = "CTRL+W+REP" - command = ".moveup" - is-disabled = false - elem - name = "X" - command = ".northeast" - is-disabled = false - elem - name = "CTRL+X" - command = ".northeast" - is-disabled = false - elem - name = "Y" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+Y" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "Z" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "CTRL+Z" - command = "Activate-Held-Object" - is-disabled = false - elem - name = "NUMPAD1" - command = "body-r-leg" - is-disabled = false - elem - name = "NUMPAD2" - command = "body-groin" - is-disabled = false - elem - name = "NUMPAD3" - command = "body-l-leg" - is-disabled = false - elem - name = "NUMPAD4" - command = "body-r-arm" - is-disabled = false - elem - name = "NUMPAD5" - command = "body-chest" - is-disabled = false - elem - name = "NUMPAD6" - command = "body-l-arm" - is-disabled = false - elem - name = "NUMPAD8" - command = "body-toggle-head" - is-disabled = false - elem - name = "F1" - command = "adminhelp" - is-disabled = false - elem - name = "CTRL+SHIFT+F1+REP" - command = ".options" - is-disabled = false - elem - name = "F2+REP" - command = ".screenshot auto" - is-disabled = false - elem - name = "SHIFT+F2+REP" - command = ".screenshot" - is-disabled = false - elem - name = "F5" - command = "Aghost" - is-disabled = false - elem - name = "F6" - command = "Player-Panel" - is-disabled = false - elem - name = "F7" - command = "Toggle-Build-Mode-Self" - is-disabled = false - elem - name = "CTRL+F7" - command = "Stealth-Mode" - is-disabled = false - elem - name = "F8" - command = "Invisimin" - is-disabled = false - elem - name = "F12" - command = "F12" - is-disabled = false - menu "menu" elem name = "&File" command = "" - category = "" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "&Quick screenshot\tF2" command = ".screenshot auto" category = "&File" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "&Save screenshot as...\tShift+F2" command = ".screenshot" category = "&File" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "" command = "" category = "&File" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem "reconnectbutton" name = "&Reconnect" command = ".reconnect" category = "&File" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "&Quit\tAlt-F4" command = ".quit" category = "&File" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "&Help" command = "" - category = "" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "&Admin Help\tF1" command = "adminhelp" category = "&Help" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" elem name = "&Hotkeys" command = "hotkeys-help" category = "&Help" - is-checked = false - can-check = false - group = "" - is-disabled = false saved-params = "is-checked" @@ -1090,116 +53,41 @@ window "mainwindow" size = 640x440 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false is-default = true - border = none - drop-zone = false - right-click = false saved-params = "pos;size;is-minimized;is-maximized" - on-size = "" - title = "" - titlebar = true - statusbar = true - can-close = true - can-minimize = true - can-resize = true - is-pane = false - is-minimized = false - is-maximized = false - can-scroll = none icon = 'icons\\ss13_64.png' - image = "" - image-mode = stretch - keep-aspect = false - transparent-color = none - alpha = 255 - macro = "macro" + macro = "default" menu = "menu" - on-close = "" elem "split" type = CHILD pos = 3,0 size = 634x417 anchor1 = 0,0 anchor2 = 100,100 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "splitter" - on-size = "" left = "mapwindow" right = "infowindow" is-vert = true - splitter = 50 - show-splitter = true - lock = none elem "input" type = INPUT pos = 5,420 size = 595x20 anchor1 = 0,100 anchor2 = 100,100 - font-family = "" font-size = 10 - font-style = "" - text-color = #000000 background-color = #d3b5b5 - is-visible = true - is-disabled = false - is-transparent = false is-default = true - border = none - drop-zone = false - right-click = false saved-params = "command" - on-size = "" - command = "" - multi-line = false - is-password = false - no-command = false elem "say" type = BUTTON pos = 600,420 size = 37x20 anchor1 = 100,100 anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Chat" - image = "" command = ".winset \"say.is-checked=true ? input.command=\"!say \\\"\" : input.command=\"" is-flat = true - stretch = false - is-checked = false - group = "" button-type = pushbox elem "asset_cache_browser" type = BROWSER @@ -1207,52 +95,16 @@ window "mainwindow" size = 200x200 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none is-visible = false - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "" - on-size = "" - show-history = false - show-url = false - auto-format = true - use-title = false - on-show = "" - on-hide = "" elem "tooltip" type = BROWSER pos = 0,0 size = 999x999 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none is-visible = false - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "" - on-size = "" - show-history = false - show-url = false - auto-format = true - use-title = false - on-show = "" - on-hide = "" window "mapwindow" elem "mapwindow" @@ -1261,39 +113,8 @@ window "mapwindow" size = 640x480 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "pos;size;is-minimized;is-maximized" - on-size = "" - title = "" - titlebar = true - statusbar = true - can-close = true - can-minimize = true - can-resize = true is-pane = true - is-minimized = false - is-maximized = false - can-scroll = none - icon = "" - image = "" - image-mode = stretch - keep-aspect = false - transparent-color = none - alpha = 255 - macro = "" - menu = "" - on-close = "" elem "map" type = MAP pos = 0,0 @@ -1302,26 +123,10 @@ window "mapwindow" anchor2 = 100,100 font-family = "Arial" font-size = 7 - font-style = "" text-color = none - background-color = none - is-visible = true - is-disabled = false - is-transparent = false is-default = true - border = none - drop-zone = true - right-click = false saved-params = "icon-size" - on-size = "" - icon-size = 0 - text-mode = false - letterbox = true - zoom = 0 - on-show = "" - on-hide = "" - style = "" - zoom-mode = "distort" + zoom-mode = distort window "infowindow" elem "infowindow" @@ -1330,233 +135,72 @@ window "infowindow" size = 640x480 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "pos;size;is-minimized;is-maximized" - on-size = "" - title = "" - titlebar = true - statusbar = true - can-close = true - can-minimize = true - can-resize = true is-pane = true - is-minimized = false - is-maximized = false - can-scroll = none - icon = "" - image = "" - image-mode = stretch - keep-aspect = false - transparent-color = none - alpha = 255 - macro = "" - menu = "" - on-close = "" elem "info" type = CHILD pos = 0,30 size = 640x445 anchor1 = 0,0 anchor2 = 100,100 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "splitter" - on-size = "" left = "statwindow" right = "outputwindow" is-vert = false - splitter = 50 - show-splitter = true - lock = none elem "changelog" type = BUTTON pos = 16,5 size = 104x20 anchor1 = 3,0 anchor2 = 19,0 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Changelog" - image = "" command = "changelog" - is-flat = false - stretch = false - is-checked = false - group = "" - button-type = pushbutton elem "rules" type = BUTTON pos = 120,5 size = 100x20 anchor1 = 19,0 anchor2 = 34,0 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Rules" - image = "" command = "rules" - is-flat = false - stretch = false - is-checked = false - group = "" - button-type = pushbutton elem "wiki" type = BUTTON pos = 220,5 size = 100x20 anchor1 = 34,0 anchor2 = 50,0 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Wiki" - image = "" command = "wiki" - is-flat = false - stretch = false - is-checked = false - group = "" - button-type = pushbutton elem "forum" type = BUTTON pos = 320,5 size = 100x20 anchor1 = 50,0 anchor2 = 66,0 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Forum" - image = "" command = "forum" - is-flat = false - stretch = false - is-checked = false - group = "" - button-type = pushbutton elem "github" type = BUTTON pos = 420,5 size = 100x20 anchor1 = 66,0 anchor2 = 81,0 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Github" - image = "" command = "github" - is-flat = false - stretch = false - is-checked = false - group = "" - button-type = pushbutton elem "report-issue" type = BUTTON pos = 520,5 size = 100x20 anchor1 = 81,0 anchor2 = 97,0 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "is-checked" - on-size = "" text = "Report Issue" - image = "" command = "report-issue" - is-flat = false - stretch = false - is-checked = false - group = "" - button-type = pushbutton window "outputwindow" elem "outputwindow" @@ -1565,91 +209,27 @@ window "outputwindow" size = 640x480 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "pos;size;is-minimized;is-maximized" - on-size = "" - title = "" - titlebar = true - statusbar = true - can-close = true - can-minimize = true - can-resize = true is-pane = true - is-minimized = false - is-maximized = false - can-scroll = none - icon = "" - image = "" - image-mode = stretch - keep-aspect = false - transparent-color = none - alpha = 255 - macro = "" - menu = "" - on-close = "" elem "browseroutput" type = BROWSER pos = 0,0 size = 640x480 anchor1 = 0,0 anchor2 = 100,100 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 background-color = #ffffff is-visible = false is-disabled = true - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "" - on-size = "" - show-history = false - show-url = false auto-format = false - use-title = false - on_show = "" - on_hide = "" elem "output" type = OUTPUT pos = 0,0 size = 640x480 anchor1 = 0,0 anchor2 = 100,100 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = #ffffff - is-visible = true - is-disabled = false - is-transparent = false is-default = true - border = none - drop-zone = false - right-click = false saved-params = "" - on-size = "" - show-history = false - show-url = false - auto-format = false - use-title = false - on_show = "" - on_hide = "" window "statwindow" elem "statwindow" @@ -1658,69 +238,14 @@ window "statwindow" size = 640x480 anchor1 = none anchor2 = none - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = none - is-visible = true - is-disabled = false - is-transparent = false - is-default = false - border = none - drop-zone = false - right-click = false saved-params = "pos;size;is-minimized;is-maximized" - on-size = "" - title = "" - titlebar = true - statusbar = true - can-close = true - can-minimize = true - can-resize = true is-pane = true - is-minimized = false - is-maximized = false - can-scroll = none - icon = "" - image = "" - image-mode = stretch - keep-aspect = false - transparent-color = none - alpha = 255 - macro = "" - menu = "" - on-close = "" elem "stat" type = INFO pos = 0,0 size = 640x480 anchor1 = 0,0 anchor2 = 100,100 - font-family = "" - font-size = 0 - font-style = "" - text-color = #000000 - background-color = #ffffff - is-visible = true - is-disabled = false - is-transparent = false is-default = true - border = none - drop-zone = true - right-click = false saved-params = "" - on-size = "" - highlight-color = #00ff00 - tab-text-color = #000000 - tab-background-color = none - tab-font-family = "" - tab-font-size = 0 - tab-font-style = "" - allow-html = true - multi-line = true - on-show = "" - on-hide = "" - on-tab = "" - prefix-color = none - suffix-color = none + diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index e1505d6088..e22c35a6c4 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -83,7 +83,6 @@ h1.alert, h2.alert {color: #000000;} .green {color: #03ff39;} .shadowling {color: #3b2769;} .cult {color: #960000;} -.cultitalic {color: #960000; font-style: italic;} .cultlarge {color: #960000; font-weight: bold; font-size: 3;} .narsie {color: #960000; font-weight: bold; font-size: 15;} .narsiesmall {color: #960000; font-weight: bold; font-size: 6;} @@ -92,7 +91,6 @@ h1.alert, h2.alert {color: #000000;} .hierophant_warning {color: #660099; font-style: italic;} .purple {color: #5e2d79;} .holoparasite {color: #35333a;} -.holoparasitebold {color: #35333a; font-weight: bold;} .revennotice {color: #1d2953;} .revenboldnotice {color: #1d2953; font-weight: bold;} @@ -101,10 +99,10 @@ h1.alert, h2.alert {color: #000000;} .revenwarning {color: #760fbb; font-style: italic;} .revendanger {color: #760fbb; font-weight: bold; font-size: 3;} .umbra {color: #5000A0;} -.umbra_bold {color: #5000A0; font-weight: bold;} -.umbra_italics {color: #5000A0; font-style: italic;} .umbra_emphasis {color: #5000A0; font-weight: bold; font-style: italic;} -.umbra_large {color: #5000A0; font-size: 3;} +.umbra_large {color: #5000A0; font-size: 3; font-weight: bold; font-style: italic;} + +.deconversion_message {color: #5000A0; font-size: 3; font-style: italic;} .brass {color: #BE8700;} .heavy_brass {color: #BE8700; font-weight: bold; font-style: italic;} @@ -113,7 +111,6 @@ h1.alert, h2.alert {color: #000000;} .ratvar {color: #BE8700; font-size: 6; font-weight: bold; font-style: italic;} .alloy {color: #42474D;} .heavy_alloy {color: #42474D; font-weight: bold; font-style: italic;} -.large_alloy {color: #42474D; font-size: 3;} .nezbere_large {color: #42474D; font-size: 3; font-weight: bold; font-style: italic;} .nezbere {color: #42474D; font-weight: bold; font-style: italic;} .nezbere_small {color: #42474D;} @@ -134,12 +131,12 @@ h1.alert, h2.alert {color: #000000;} .ghostalert {color: #5c00e6; font-style: italic; font-weight: bold;} .alien {color: #543354;} -.alienbold {color: #543354; font-weight: bold;} .noticealien {color: #00c000;} .alertalien {color: #00c000; font-weight: bold;} -.borer {color: #543354; font-style: italic;} .changeling {color: #800080; font-style: italic;} +.spider {color: #4d004d;} + .interface {color: #330033;} .sans {font-family: "Comic Sans MS", cursive, sans-serif;} @@ -150,6 +147,7 @@ h1.alert, h2.alert {color: #000000;} .small {font-size: 1;} .big {font-size: 3;} .reallybig {font-size: 4;} +.extremelybig {font-size: 5;} .greentext {color: #00FF00; font-size: 3;} .redtext {color: #FF0000; font-size: 3;} .clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} @@ -166,6 +164,7 @@ h1.alert, h2.alert {color: #000000;} .monkey {color: #975032;} .swarmer {color: #2C75FF;} .resonate {color: #298F85;} -.love {color: #FF69Bf;} -.lovebold {color: #FF69Bf; font-weight: bold;} + +.monkeyhive {color: #774704;} +.monkeylead {color: #774704; font-size: 2;} "} diff --git a/modular_citadel/code/datums/mutations/hulk.dm b/modular_citadel/code/datums/mutations/hulk.dm new file mode 100644 index 0000000000..601238707d --- /dev/null +++ b/modular_citadel/code/datums/mutations/hulk.dm @@ -0,0 +1,2 @@ +/datum/mutation/human/hulk + species_allowed = list("fly") \ No newline at end of file diff --git a/modular_citadel/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm b/modular_citadel/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm new file mode 100644 index 0000000000..5dfe1dfcbd --- /dev/null +++ b/modular_citadel/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm @@ -0,0 +1,3 @@ +/datum/round_event_control/spawn_swarmer + weight = 0 + max_occurrences = 0 \ No newline at end of file diff --git a/modular_citadel/code/game/machinery/Sleeper.dm b/modular_citadel/code/game/machinery/Sleeper.dm new file mode 100644 index 0000000000..4cf04524b2 --- /dev/null +++ b/modular_citadel/code/game/machinery/Sleeper.dm @@ -0,0 +1,2 @@ +/obj/machinery/sleeper + min_health = 30 diff --git a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm new file mode 100644 index 0000000000..5c610983f4 --- /dev/null +++ b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm @@ -0,0 +1,76 @@ +/obj/item/device/electropack/shockcollar + name = "shock collar" + desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." + icon = 'icons/obj/clothing/neck.dmi' + icon_state = "shockcollar" + item_state = "shockcollar" + body_parts_covered = NECK + slot_flags = SLOT_NECK + w_class = WEIGHT_CLASS_SMALL + strip_delay = 60 + equip_delay_other = 60 + materials = list(MAT_METAL=5000, MAT_GLASS=2000) + var/tagname = null + +/obj/item/device/electropack/shockcollar/attack_hand(mob/user) + if(loc == user) + if(slot_flags == SLOT_NECK) + if(user.get_item_by_slot(slot_neck)) + to_chat(user, "The collar is fastened tight! You'll need help taking this off!") + return + ..() + +/obj/item/device/electropack/shockcollar/receive_signal(datum/signal/signal) + if(!signal || signal.data["code"] != code) + return + + if(isliving(loc) && on) + if(shock_cooldown != 0) + return + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 + var/mob/living/L = loc + step(L, pick(GLOB.cardinals)) + + to_chat(L, "You feel a sharp shock from the collar!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, L) + s.start() + + L.Knockdown(100) + + if(master) + master.receive_signal() + return + +/obj/item/device/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. + var/option = "Change Name" + option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") + switch(option) + if("Change Name") + var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text + if(t) + tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) + name = "[initial(name)] - [tagname]" + if("Change Frequency") + if(!ishuman(user)) + return + user.set_machine(src) + var/dat = {"
    + Frequency/Code for shock collar:
    + Frequency: +
    - + - [format_frequency(frequency)] + + + +
    + Code: + - + - [code] + + + +
    + "} + + user << browse(dat, "window=radio") + onclose(user, "radio") + return diff --git a/modular_citadel/code/game/objects/items/handcuffs.dm b/modular_citadel/code/game/objects/items/handcuffs.dm new file mode 100644 index 0000000000..8c5bbdb58d --- /dev/null +++ b/modular_citadel/code/game/objects/items/handcuffs.dm @@ -0,0 +1,4 @@ +/obj/item/restraints/handcuffs/fake/kinky + name = "kinky handcuffs" + desc = "Fake handcuffs meant for erotic roleplay." + icon_state = "handcuffGag" diff --git a/modular_citadel/code/modules/mining/mine_items.dm b/modular_citadel/code/modules/mining/mine_items.dm new file mode 100644 index 0000000000..d2cd1f2aa3 --- /dev/null +++ b/modular_citadel/code/modules/mining/mine_items.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/shuttle/mining + req_access = list(ACCESS_MINING) \ No newline at end of file diff --git a/modular_citadel/simplemob_vore_values.dm b/modular_citadel/simplemob_vore_values.dm new file mode 100644 index 0000000000..9c141c6547 --- /dev/null +++ b/modular_citadel/simplemob_vore_values.dm @@ -0,0 +1,78 @@ +/mob/living/simple_animal/pet/cat + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/crab + devourable = TRUE + +/mob/living/simple_animal/pet/dog + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/hostile/retaliate/goat + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/cow + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/chick + devourable = TRUE + +/mob/living/simple_animal/chicken + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/pet/fox + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/hostile/lizard + devourable = TRUE + +/mob/living/simple_animal/mouse + devourable = TRUE + +/mob/living/simple_animal/pet/penguin + no_vore = FALSE + +/mob/living/simple_animal/pet + devourable = TRUE + +/mob/living/simple_animal/sloth + devourable = TRUE + +/mob/living/simple_animal/hostile/alien + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/hostile/bear + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/hostile/poison/giant_spider + devourable = TRUE + +/mob/living/simple_animal/hostile/gorilla + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal/hostile/megafauna/dragon + no_vore = FALSE + +/mob/living/simple_animal/hostile/asteroid/goliath + no_vore = FALSE + +/mob/living/simple_animal/parrot + devourable = TRUE + no_vore = FALSE + +/mob/living/simple_animal + no_vore = TRUE + +/mob/living/carbon/alien + devourable = TRUE + +/mob/living/carbon/monkey + devourable = TRUE \ No newline at end of file diff --git a/sound/ambience/LICENSE.txt b/sound/ambience/LICENSE.txt index b578c0d23d..d1d18306a6 100644 --- a/sound/ambience/LICENSE.txt +++ b/sound/ambience/LICENSE.txt @@ -2,5 +2,3 @@ ambidet1.ogg is Fast Talking by Kevin Macleod. It has been licensed under the CC It has been cropped for use ingame. ambidet2.ogg is Night on the Docks, Piano by Kevin Macleod. It has been licensed under CC-BY 3.0 license. It has been cropped for use ingame, and also fades in. -title4.ogg is Absconditus by ZhayTee. It has been licensed under the CC BY-NC-SA 3.0 license. - It has been cropped and faded for use ingame. diff --git a/strings/abductee_objectives.txt b/strings/abductee_objectives.txt new file mode 100644 index 0000000000..512fd2e60d --- /dev/null +++ b/strings/abductee_objectives.txt @@ -0,0 +1,40 @@ +Try to get formally executed for a crime you didn't commit, without a false confession. +Being alone and in large groups are both frightening. Try to be alone with only one other person whenever possible. +No matter how they say it, other people keep mispronouncing your name. Be sure to correct them whenever possible. +The Syndicate has hired you to compile dossiers on all important members of the crew. Be sure they don't know you're doing it. +There is only one other person in existence, he is just really good at pretending to be multiple people. +There are alien parasites masquerading as people's hair. Save people from this invasion. +You died back there and went to heaven... or is it hell? No one here seems to know they're dead. Convince them, and maybe you can escape this limbo. +You are doomed to feel woefully incomplete forever... until you find your true love on this station. They're waiting for you! +You're the narrator of this tale. Follow around the protagonists to tell their story. +The leaders of this station are hiding a grand, evil conspiracy. Only you can learn what it is, and expose it to the people! +All the pets around here suck. You need to make them cooler. Replace them with exotic beasts! +You're throwing a huge rager. Make it as awesome as possible so the whole crew comes... OR ELSE! +The clown is not funny. You can do better! Steal his audience and make the crew laugh! +You burn with passion for music. Share your vision. If anyone hates it, beat them on the head with your instrument! +Go have a good conversation with the singularity/tesla/supermatter crystal. Bonus points if it responds. +You are pregnant and soon due. Find a safe place to deliver your baby. +Expand the station. +So much lies undiscovered. Look deeper into the machinations of the universe. +Climb the corporate ladder all the way to the top! +Fuck the system! Defect from the station and start an independent colony in space, Lavaland or the derelict. Recruit crewmates if you can. +Nanotrasen is abusing the animals! Save as many as you can! +It's all an entirely virtual simulation within an underground vault. Convince the crew to escape the shackles of VR. +This is a secret social experiment conducted by Nanotrasen. Convince the crew that this is the truth. +Call forth a spirit from the other side. +You are secretly an android. Interface with as many machines as you can to boost your own power so the AI may acknowledge you at last. +The elder gods hunger. Gather a cult and conduct a ritual to summon one. +You have been changed forever. Find the ones that did this to you and give them a taste of their own medicine. +Ensure your department prospers over all else. +The crew must get to know one another better. Break down the walls inside the station! +The CEO of Nanotrasen is coming! Ensure the station is in absolutely pristine condition. +Flood the station's powernet with as much electricity as you can. +Replace all the floor tiles with wood, carpeting, grass or bling. +You must escape the station! Get the shuttle called! +Don't allow anyone to be cloned. +The oxygen is killing them all and they don't even know it. Make sure no oxygen is on the station. +Your body must be improved. Ingest as many drugs as you can. +You are hungry. Eat as much food as you can find. +You see you see what they cannot you see the open door you seeE you SEeEe you SEe yOU seEee SHOW THEM ALL +Convince the crew that you are a paraplegic. +Start a collection of corpses. Don't kill people to get these corpses. \ No newline at end of file diff --git a/strings/cas_black.txt b/strings/cas_black.txt index a704f010ad..b63e33cdf2 100644 --- a/strings/cas_black.txt +++ b/strings/cas_black.txt @@ -21,7 +21,7 @@ ________ is the crew's friend. Would you abandon a friend? _______ tastes good like a ________ should. How did the detective conduct a successful interrogation? New in syndicate uplinks: __________! -NanoTrasen's labor union decided to use _______ to raise employee morale. +Nanotrasen's labor union decided to use _______ to raise employee morale. The Chemist's drug of choice is ______ According to space law, ________ is now punishable by ______. ________ is why I'm afraid of maintenance. diff --git a/strings/clockwork_cult_changelog.txt b/strings/clockwork_cult_changelog.txt index b5d2ca10e3..5e6beedf2e 100644 --- a/strings/clockwork_cult_changelog.txt +++ b/strings/clockwork_cult_changelog.txt @@ -1,7 +1,6 @@ -Added the Eminence, a leader role that servants can become by interacting with the new eminence spire structure in Reebe. -Scripture has been re-colored in the slab interface to show its niche at a glance. -Added traps, including the brass skewer and steam vent. -Added trap triggers, including the pressure sensor, lever, and repeater. -Traps and trap triggers can be linked by using your clockwork slab on them. Traps chained to each other will cause those traps to activate as well. -You can instantly remove traps you misplace by using a wrench on them. -Mending Mantra has been removed. \ No newline at end of file +When revived by a vitality matrix, servants will gain a 1-minute debuff that prevents revival again. +Vitality matrices must now be placed at least one tile apart. +Servants are now teleported to and locked on Reebe once the Ark starts. +Cyborgs are now damaged by brass skewers. +Vitality matrices no longer work on buckled mobs (including skewered ones.) +Pressure sensors have much less health. \ No newline at end of file diff --git a/strings/greek_letters.txt b/strings/greek_letters.txt index b1014aa178..b04b0ad139 100644 --- a/strings/greek_letters.txt +++ b/strings/greek_letters.txt @@ -21,4 +21,4 @@ Upsilon Phi Chi Psi -Omega \ No newline at end of file +Omega diff --git a/strings/hallucination.json b/strings/hallucination.json index 5efe749d14..449f974901 100644 --- a/strings/hallucination.json +++ b/strings/hallucination.json @@ -1,8 +1,8 @@ { "suspicion": [ - "I'm watching you...", - "I know what you're doing", - "What are you hiding?", + "@pick(add_name)i'm watching you...", + "@pick(add_name)i know what you're doing", + "@pick(add_name)what are you hiding?", "I saw that" ], @@ -16,12 +16,12 @@ ], "getout": [ - "Get out", - "Get out!", - "Go away", - "Fuck off", + "@pick(add_name)get out", + "@pick(add_name)get out!", + "@pick(add_name)go away", + "@pick(add_name)fuck off", "OUT!", - "Out!" + "@pick(add_name)out!" ], "weird": [ @@ -43,10 +43,10 @@ "imatraitor": [ "Hail Ratvar", "Hail Nar'Sie", - "Hey, i've got some TC left, want something?", + "Hey, @pick(add_name)i've got some TC left, want something?", "Viva!", "I'll spare you if you don't tell anybody about me", - "Hey, are you a traitor too?", + "Hey, @pick(add_name)are you a traitor too?", "You're my target, but @pick(excuses)", "Are you mr. @pick(ling_names)?" ], @@ -79,19 +79,24 @@ "Omega" ], + "add_name": [ + "%TARGETNAME%, ", + "" + ], + "doubt": [ "Why?", "What?", "Wait, what?", - "Wait", - "Hold on", + "@pick(add_name)wait", + "@pick(add_name)hold on", "Uh..." ], "aggressive": [ - "Give me that!", - "I'm going to kill you!", - "Fuck you!" + "@pick(add_name)give me that!", + "@pick(add_name)i'm going to kill you!", + "@pick(add_name)fuck you!" ], "help": [ @@ -105,19 +110,19 @@ ], "escape": [ - "RUN!!", + "@pick(add_name)RUN!!", "They're behind me!", "It's here!", - "Follow me!", - "Follow me" + "@pick(add_name)follow me!", + "@pick(add_name)follow me" ], "infection_advice": [ - "stay away", - "don't get close", - "be careful", - "help me", - "kill me" + "@pick(add_name)stay away", + "@pick(add_name)don't get close", + "@pick(add_name)be careful", + "@pick(add_name)help me", + "@pick(add_name)kill me" ], "people": [ @@ -131,7 +136,7 @@ "AI", "Viro", "Qm", - "[target.first_name()]" + "%TARGETNAME%" ], "accusations": [ @@ -161,7 +166,8 @@ "Traitor", "Harm", "I hear flashing", - "Help" + "Help", + "%TARGETNAME%" ], "location": [ diff --git a/strings/numbers_as_words.txt b/strings/numbers_as_words.txt index f7c620cd9b..149efec7b2 100644 --- a/strings/numbers_as_words.txt +++ b/strings/numbers_as_words.txt @@ -17,4 +17,4 @@ Sixteen Seventeen Eighteen Nineteen -Twenty \ No newline at end of file +Twenty diff --git a/strings/phonetic_alphabet.txt b/strings/phonetic_alphabet.txt index d77c1164ca..9250ec4549 100644 --- a/strings/phonetic_alphabet.txt +++ b/strings/phonetic_alphabet.txt @@ -23,4 +23,4 @@ Victor Whiskey X-ray Yankee -Zulu \ No newline at end of file +Zulu diff --git a/strings/round_start_sounds.txt b/strings/round_start_sounds.txt index 177f612ee1..18fbb3f98f 100644 --- a/strings/round_start_sounds.txt +++ b/strings/round_start_sounds.txt @@ -20,4 +20,4 @@ sound/music/oceanman.ogg sound/music/indeep.ogg sound/music/goodbyemoonmen.ogg sound/music/flytothemoon_otomatone.ogg -sound/music/milkyway.ogg \ No newline at end of file +sound/music/milkyway.ogg diff --git a/strings/station_names.txt b/strings/station_names.txt index 0937a10da6..7742ba6abd 100644 --- a/strings/station_names.txt +++ b/strings/station_names.txt @@ -79,4 +79,4 @@ Meta Pub Ship Book -Refactor \ No newline at end of file +Refactor diff --git a/strings/station_prefixes.txt b/strings/station_prefixes.txt index 576e68dc1e..c304b69f95 100644 --- a/strings/station_prefixes.txt +++ b/strings/station_prefixes.txt @@ -38,4 +38,4 @@ Black Grey Grim Electric -Burning \ No newline at end of file +Burning diff --git a/strings/station_suffixes.txt b/strings/station_suffixes.txt index c30e18c245..ef11430fb2 100644 --- a/strings/station_suffixes.txt +++ b/strings/station_suffixes.txt @@ -61,4 +61,4 @@ Province Workspace Metro Warehouse -Space Junk \ No newline at end of file +Space Junk diff --git a/strings/tips.txt b/strings/tips.txt index bc05c177c6..26931b87fe 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -153,21 +153,6 @@ As a Cultist, your team starts off very weak, but if necessary can quickly conve As a Cultist, the Blood Boil rune will deal massive amounts of brute damage to non-cultists, stamina damage to Ratvarian scum, and some damage to fellow cultists of Nar-Sie nearby, but will create a fire where the rune stands on use. As a Cultist, you can create an army of manifested goons using a combination of the Manifest rune, which creates homunculi from ghosts, and the Blood Drain rune, which drains life from anyone standing on any blood drain rune. As a Cultist or Servant, check the alert in the upper-right of your screen for all the details about your cult's current status and objective. -<<<<<<< HEAD -As a Servant, your Clockwork Slab fits in pockets and does not need to be held to communicate with other Servants. -As a Servant, remember that while the selection of scripture and tools Servant cyborgs get is limited, it is still extremely useful, and some of it is unique; for example, engineering and janitor cyborgs get a proselytizer that can use their own power in addition to its own. -As a Servant, the Judicial Visor is an effective defensive combat tool in small spaces, as it immediately slows and briefly knocks down enemies hit while giving them incentive to avoid staying in the hit area. -As a Servant, Ocular Wardens, while fragile, do very high, rapid damage to a target non-Servant that can see them and will even attack mechs that contain heretics. Place them behind objects that don't block vision to get the most use out of them. -As a Servant, Clockwork Structures that require power will draw power from the APC if they cannot find a different source of power, and most power-using Structures will rapidly drain the APC. -As a Servant, you can repair Servant cyborgs and Clockwork Structures with a Replica Fabricator at a rate of 25W power to 1 health. Damaged Clockwork Structures are less efficient, so don't forget to repair them! -As a Servant, you can stack different types of Sigils on the same turf; try stacking a Sigil of Transgression and a Sigil of Submission for a subtle conversion trap. -As a Servant, you can deconstruct a Clockwork Wall with a Replica Fabricator to regain 1000W power. You can also construct Clockwork Walls on Clockwork Floors for a cost of 1000W power. -As a Servant, Spatial Gateway can teleport to any living Servant or Clockwork Obelisk, and gains additional uses and duration for each Servant assisting in the invocation. -As a Servant, creating and activating the Gateway to the Celestial Derelict is your ultimate goal, and you must defend it with all the tools you have available. -As a Servant, you can impale human targets with a Ratvarian Spear by pulling them, then attacking them. This does massive damage and stuns them, and should effectively win the fight. -As a Servant, Sentinel's Compromise can instantly return you or another Servant to a fighting state by converting half of all their brute, burn, and oxygen damage to toxin, effectively halving the damage they have. Clockwork Floors will also rapidly heal toxin damage in Servants, allowing the Compromise more effectiveness. -As a Servant, you can unwrench Clockwork Structures to move them around. -======= As a Servant, your jumpsuit functions like a chameleon suit and can take on a lot of different appearances. Use this for stealth and disguise! As a Servant, you can unlock scripture tiers early by stockpiling large amounts of power. As a Servant, stargazers are a very important tool for power generation, and you should be making them constantly. @@ -177,7 +162,6 @@ As a Servant, wraith spectacles let you see everything through walls at virtuall As a Servant, declaring war empowers a huge amount of your tools and constructs, and makes you into a spaceproof, armored clockwork automaton. As a Servant, converting or sabotaging Science and Genetics can make defending the Ark much easier. As a Servant, the Clockwork Arnaments scripture allows you to summon armor and/or a weapon at will. Use it whenever you unlock it! ->>>>>>> d2bab31... Merge pull request #32256 from Xhuis/clock_tips You can deconvert Cultists of Nar-Sie and Servants of Ratvar by feeding them large amounts of holy water. As a Wizard, you can turn people to stone, then animate the resulting statue with a staff of animation to create an extremely powerful minion, for all of 5 minutes at least. As a Wizard, the fireball spell performs very poorly at close range, as it can easily catch you in the blast. It is best used as a form of artillery down long hallways. diff --git a/strings/traumas.json b/strings/traumas.json index 9b14a7b530..42e65e63ee 100644 --- a/strings/traumas.json +++ b/strings/traumas.json @@ -31,31 +31,31 @@ "REVIRT GON CHEM!!!!!!!!", "youed call her a toeugh bithc", "closd for merbegging", - "pray can u @pick(create_verbs) @pick(create_nouns)???", + "@pick(semicolon)pray can u @pick(create_verbs) @pick(create_nouns)???", "GEY AWAY FROM ME U GREIFING PRICK!!!!", "ur a fuckeing autist!", - ";HELP SHITECIRTY MURDERIN MEE!!!", + "@pick(semicolon)HELP SHITECIRTY MURDERIN MEE!!!", "hwat dose tha @pick(random_gibberish) mean?????", - "CAL; TEH SHUTTLE!!!!!", + "@pick(semicolon)CAL; TEH SHUTTLE!!!!!", "wearnig siNGUARLTY IS .... FIne xDDDDDDDDD", - "AI laW 22 Open door", - "this SI mY stATIon......", + "@pick(semicolon)AI laW 22 Open door", + "@pick(semicolon)this SI mY stATIon......", "who the HELL do u thenk u r?!!!!", "geT THE FUCK OUTTTT", "H U G B O X", - "CRASHING THIS STTAYTION WITH NIO SURVIVROS", - "@pick(servers) is down!!", + "@pick(semicolon)CRASHING THIS STTAYTION WITH NIO SURVIVROS", + "@pick(servers) is down!! @pick(bug)", "PSHOOOM", "REMOVE SINGULARITY", "INSTLL TEG", "TURBIN IS BEST ENGIENE", - "SOLIRS CAN POWER THE HOLE STATION ANEWAY", + "SOLIRS CAN POWER THE HOLE STATION ANEWAY @pick(bug)", "parasteng was best", - "Tajaran has warrrres, if you have coin", - "I'VE GOT BALLS OF STEEL", + "@pick(semicolon)Tajaran has warrrres, if you have coin", + "@pick(semicolon)I'VE GOT BALLS OF STEEL", "NO I'M ONNA KILL YOU MOTHERFUCKER OLD STYLE", "i will snatch erry motherfucker birthday", - "the ai and borgs are mettacomming I think", + "@pick(semicolon)the ai and borgs are mettacomming I think", "u just did the world a little bit more sad place for someone", "WHERES THE SLIP REWRITE WHERE THR FUCK ID IT?", "CEMISTRY SUKS!!!!!!!!", @@ -101,8 +101,12 @@ "SINGULO eNGINE 2 DANGER, SOLARS PLS!", "nerf blob!1", "iM NOT A FUWRRYY!!!", - "DON'T EVER TUCH ME", - "FOURTEEN INCHES SOFT!!!" + "FOURTEEN INCHES SOFT!!!", + "@pick(semicolon)N-NYAAAAAA~", + "@pick(bug)", + "@pick(semicolon)wtf??????????? @pick(bug)", + "@pick(semicolon)i ran into the supermattre ten i dsappeard @pick(bug)", + "DON'T EVER TUCH ME" ], "mutations": [ @@ -172,7 +176,8 @@ "ayleins", "treaitors", "sheadow lings", - "abdoocters" + "abdoocters", + "revinent" ], "bug": [ @@ -237,4 +242,5 @@ "BE HEALED, PRIEST.", "YOUR LIFE IS IMPORTANT. KEEP IT." ] + } diff --git a/tgstation.dme b/tgstation.dme index 01effafe8d..bda13a4325 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -32,6 +32,7 @@ #include "code\__DEFINES\citadel_defines.dm" #include "code\__DEFINES\cleaning.dm" #include "code\__DEFINES\clockcult.dm" +#include "code\__DEFINES\colors.dm" #include "code\__DEFINES\combat.dm" #include "code\__DEFINES\components.dm" #include "code\__DEFINES\configuration.dm" @@ -162,6 +163,7 @@ #include "code\_onclick\hud\blob_overmind.dm" #include "code\_onclick\hud\blobbernauthud.dm" #include "code\_onclick\hud\constructs.dm" +#include "code\_onclick\hud\credits.dm" #include "code\_onclick\hud\devil.dm" #include "code\_onclick\hud\drones.dm" #include "code\_onclick\hud\fullscreen.dm" @@ -245,6 +247,7 @@ #include "code\controllers\subsystem\icon_smooth.dm" #include "code\controllers\subsystem\idlenpcpool.dm" #include "code\controllers\subsystem\inbounds.dm" +#include "code\controllers\subsystem\input.dm" #include "code\controllers\subsystem\ipintel.dm" #include "code\controllers\subsystem\job.dm" #include "code\controllers\subsystem\language.dm" @@ -489,11 +492,9 @@ #include "code\game\area\Space_Station_13_areas.dm" #include "code\game\area\areas\away_content.dm" #include "code\game\area\areas\centcom.dm" -#include "code\game\area\areas\derelict.dm" #include "code\game\area\areas\holodeck.dm" #include "code\game\area\areas\mining.dm" #include "code\game\area\areas\misc.dm" -#include "code\game\area\areas\ruins.dm" #include "code\game\area\areas\shuttles.dm" #include "code\game\area\areas\space_content.dm" #include "code\game\area\areas\ruins\_ruins.dm" @@ -508,7 +509,6 @@ #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\objective.dm" #include "code\game\gamemodes\objective_items.dm" -#include "code\game\gamemodes\objective_team.dm" #include "code\game\gamemodes\blob\blob_report.dm" #include "code\game\gamemodes\blob\overmind.dm" #include "code\game\gamemodes\blob\powers.dm" @@ -739,7 +739,6 @@ #include "code\game\machinery\computer\launchpad_control.dm" #include "code\game\machinery\computer\law.dm" #include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\message.dm" #include "code\game\machinery\computer\monastery_shuttle.dm" #include "code\game\machinery\computer\Operating.dm" #include "code\game\machinery\computer\pod.dm" @@ -774,11 +773,13 @@ #include "code\game\machinery\telecomms\machine_interactions.dm" #include "code\game\machinery\telecomms\telecomunications.dm" #include "code\game\machinery\telecomms\computers\logbrowser.dm" +#include "code\game\machinery\telecomms\computers\message.dm" #include "code\game\machinery\telecomms\computers\telemonitor.dm" #include "code\game\machinery\telecomms\machines\allinone.dm" #include "code\game\machinery\telecomms\machines\broadcaster.dm" #include "code\game\machinery\telecomms\machines\bus.dm" #include "code\game\machinery\telecomms\machines\hub.dm" +#include "code\game\machinery\telecomms\machines\message_server.dm" #include "code\game\machinery\telecomms\machines\processor.dm" #include "code\game\machinery\telecomms\machines\receiver.dm" #include "code\game\machinery\telecomms\machines\relay.dm" @@ -816,7 +817,6 @@ #include "code\game\objects\obj_defense.dm" #include "code\game\objects\objs.dm" #include "code\game\objects\structures.dm" -#include "code\game\objects\weapons.dm" #include "code\game\objects\effects\alien_acid.dm" #include "code\game\objects\effects\anomalies.dm" #include "code\game\objects\effects\bump_teleporter.dm" @@ -875,7 +875,6 @@ #include "code\game\objects\items\charter.dm" #include "code\game\objects\items\chrono_eraser.dm" #include "code\game\objects\items\cigs_lighters.dm" -#include "code\game\objects\items\clown.dm" #include "code\game\objects\items\clown_items.dm" #include "code\game\objects\items\control_wand.dm" #include "code\game\objects\items\cosmetics.dm" @@ -1049,6 +1048,7 @@ #include "code\game\objects\structures\displaycase.dm" #include "code\game\objects\structures\divine.dm" #include "code\game\objects\structures\door_assembly.dm" +#include "code\game\objects\structures\door_assembly_types.dm" #include "code\game\objects\structures\dresser.dm" #include "code\game\objects\structures\electricchair.dm" #include "code\game\objects\structures\extinguisher.dm" @@ -1330,7 +1330,6 @@ #include "code\modules\client\verbs\looc.dm" #include "code\modules\client\verbs\ooc.dm" #include "code\modules\client\verbs\ping.dm" -#include "code\modules\client\verbs\sethotkeys.dm" #include "code\modules\client\verbs\suicide.dm" #include "code\modules\client\verbs\who.dm" #include "code\modules\clothing\chameleon.dm" @@ -1640,6 +1639,16 @@ #include "code\modules\jobs\job_types\security.dm" #include "code\modules\jobs\job_types\silicon.dm" #include "code\modules\jobs\map_changes\map_changes.dm" +#include "code\modules\keybindings\bindings_admin.dm" +#include "code\modules\keybindings\bindings_atom.dm" +#include "code\modules\keybindings\bindings_carbon.dm" +#include "code\modules\keybindings\bindings_client.dm" +#include "code\modules\keybindings\bindings_human.dm" +#include "code\modules\keybindings\bindings_living.dm" +#include "code\modules\keybindings\bindings_mob.dm" +#include "code\modules\keybindings\bindings_robot.dm" +#include "code\modules\keybindings\focus.dm" +#include "code\modules\keybindings\setup.dm" #include "code\modules\language\aphasia.dm" #include "code\modules\language\beachbum.dm" #include "code\modules\language\codespeak.dm" @@ -1714,7 +1723,6 @@ #include "code\modules\mob\login.dm" #include "code\modules\mob\logout.dm" #include "code\modules\mob\mob.dm" -#include "code\modules\mob\mob_cleanup.dm" #include "code\modules\mob\mob_defines.dm" #include "code\modules\mob\mob_helpers.dm" #include "code\modules\mob\mob_movement.dm" @@ -1828,7 +1836,6 @@ #include "code\modules\mob\living\carbon\human\species.dm" #include "code\modules\mob\living\carbon\human\status_procs.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" -#include "code\modules\mob\living\carbon\human\whisper.dm" #include "code\modules\mob\living\carbon\human\species_types\abductors.dm" #include "code\modules\mob\living\carbon\human\species_types\android.dm" #include "code\modules\mob\living\carbon\human\species_types\angel.dm" @@ -2250,7 +2257,6 @@ #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" #include "code\modules\research\experimentor.dm" -#include "code\modules\research\message_server.dm" #include "code\modules\research\protolathe.dm" #include "code\modules\research\rdconsole.dm" #include "code\modules\research\rdmachines.dm" @@ -2403,7 +2409,6 @@ #include "code\modules\surgery\organs\augments_chest.dm" #include "code\modules\surgery\organs\augments_eyes.dm" #include "code\modules\surgery\organs\augments_internal.dm" -#include "code\modules\surgery\organs\autoimplanter.dm" #include "code\modules\surgery\organs\autosurgeon.dm" #include "code\modules\surgery\organs\ears.dm" #include "code\modules\surgery\organs\eyes.dm" @@ -2473,10 +2478,17 @@ #include "modular_citadel\citadel_ghostrole_spawners.dm" #include "modular_citadel\cydonian_armor.dm" #include "modular_citadel\polychromic_clothes.dm" +#include "modular_citadel\simplemob_vore_values.dm" #include "modular_citadel\code\datums\uplink_items_cit.dm" +#include "modular_citadel\code\datums\mutations\hulk.dm" +#include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm" +#include "modular_citadel\code\game\machinery\Sleeper.dm" +#include "modular_citadel\code\game\objects\items\handcuffs.dm" #include "modular_citadel\code\game\objects\items\devices\PDA\PDA.dm" +#include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" #include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" #include "modular_citadel\code\modules\crafting\recipes.dm" +#include "modular_citadel\code\modules\mining\mine_items.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm" // END_INCLUDE diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index 256b53c106..ffe61666b9 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file +@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input::-webkit-input-placeholder{color:#999}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 8f28e9df0e..0fb6532fe5 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,17 +1,18 @@ -require=function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n?n:t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),d=1;for(s>p&&p+l>s&&(d=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=d,p+=d;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(d,f,h){for(var m,v,g=i(d),b=r(g),y=a(f,h,3),x=o(b.length),_=0,w=e?s(d,x):n?s(d,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],v=y(m,_,g),t))if(e)w[_]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),d=t(82)("id"),f=t(30),h=t(38),m=t(65),v=t(19),g=Object.isExtensible||h,b=v?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!f(t,d)){if(!g(t))return"F";if(!e)return"E";r(t,d,++y)}return"O"+t[d]},_=function(t,e){var n,a=x(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),v&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=_(t,e);return i?i.v=n:(t._l=i={i:r=x(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:_,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),d=Object.isExtensible||o,f=u(5),h=u(6),m=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},b=function(t,e){return f(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:v(this)["delete"](t):!1},has:function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i):v(this).has(t):!1}}),i},def:function(t,e,n){return d(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):v(t).set(e,n),t},frozenStore:v,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),d=t(66);e.exports=function(t,e,n,f,h,m){var v=a[t],g=v,b=h?"set":"add",y=g&&g.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof g&&(m||y.forEach&&!c(function(){(new g).entries().next()}))){var w,k=new g,E=k[b](m?{}:-0,1)!=k,S=c(function(){k.has(1)}),C=l(function(t){new g(t)});C||(g=e(function(e,n){p(e,g,t);var a=new v;return void 0!=n&&s(n,h,a[b],a),a}),g.prototype=y,y.constructor=g),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else g=f.getConstructor(e,t,h,b),o(g.prototype,n);return d(g,t),x[t]=g,r(r.G+r.W+r.F*(g!=v),x),m||f.setStrong(g,t,h),g}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,v=t&u.S,g=t&u.P,b=t&u.B,y=m?a:v?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,d=(l?y:n)[c],f=b&&l?s(d,a):g&&"function"==typeof d?s(Function.call,d):d,y&&!l&&o(y,c,d),x[c]!=d&&i(x,c,f),g&&_[c]!=d&&(_[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,d,f=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(i(f))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(d=f.call(t);!(l=d.next()).done;)r(d,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,d=t(83)("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",v="values",g=function(){return this};e.exports=function(t,e,n,b,y,x,_){u(n,e,b);var w,k,E=function(t){if(!f&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",C=y==v,P=!1,A=t.prototype,O=A[d]||A[h]||y&&A[y],T=O||E(y);if(O){var j=l(T.call(new t));c(j,S,!0),!a&&s(A,h)&&o(j,d,g),C&&O.name!==v&&(P=!0,T=function(){return O.call(this)})}if(a&&!_||!f&&!P&&A[d]||o(A,d,T),p[e]=T,p[S]=g,y)if(w={values:C?T:E(v),keys:x?T:E(m),entries:C?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(f||P),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),d=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(d)};else if(p){var f=1,h=document.createTextNode("");new p(d).observe(h,{characterData:!0}),i=function(){h.data=f=-f}}else i=c&&c.resolve?function(){c.resolve().then(d)}:function(){s.call(o,d)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var d,f=i(o[p++]),h=c?u(f).concat(c(f)):u(f),m=h.length,v=0;m>v;)l.call(f,d=h[v++])&&(n[d]=f[d]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎ â€â€‚         âŸã€€\u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(d),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=0,v={},g="onreadystatechange",b=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},y=function(t){b.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},f=function(t){delete v[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=g in u("script")?function(t){p.appendChild(u("script"))[g]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:d,clear:f}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),d=t(33),f=t(24),h=t(4),m=t(2),v=t(38),g=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),C=Object.prototype,P=Array.prototype,A=P.slice,O=P.join,T=r.setDesc,j=r.getDesc,R=r.setDescs,M={};o||(a=!f(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return j(t,e)}catch(n){}return c(t,e)?s(!C.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=R=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:R});var L="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),D=L.concat("length","prototype"),N=L.length,F=function(){var t,e=u("iframe"),n=N,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("