diff --git a/.gitignore b/.gitignore index 60ead497f509..819c884cb604 100644 --- a/.gitignore +++ b/.gitignore @@ -73,7 +73,7 @@ $RECYCLE.BIN *.swp # Rust output. -/milla/target/* +/rust/target/* # mkdocs output. site diff --git a/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm b/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm index fbdf10f74a1c..6eddc1288d95 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm @@ -9,10 +9,10 @@ /turf/simulated/floor/plating/airless, /area/ruin/space/sec_shuttle) "c" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /turf/simulated/floor/plasteel/airless{ icon_state = "dark" @@ -176,10 +176,10 @@ }, /area/ruin/space/sec_shuttle) "T" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /turf/simulated/floor/plating/airless, /area/ruin/space/sec_shuttle) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm index b8f979a2f43e..848637b6e12e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm @@ -275,9 +275,8 @@ /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "aR" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/highsecurity, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -771,9 +770,8 @@ }, /area/ruin/space/deepstorage) "co" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /obj/structure/barricade/wooden/crude{ layer = 4 }, @@ -1029,9 +1027,8 @@ }, /area/ruin/space/deepstorage) "eq" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "es" = ( @@ -1440,8 +1437,8 @@ /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "hp" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/hatch{ - req_access_txt = "512"; name = "Guard Wing" }, /obj/structure/barricade/wooden/crude{ @@ -1692,8 +1689,8 @@ /turf/simulated/floor/plasteel, /area/ruin/space/deepstorage) "jj" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512"; name = "Guard Store Room" }, /obj/effect/decal/cleanable/dirt, @@ -1856,9 +1853,9 @@ /area/ruin/space/deepstorage) "jT" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/vault{ - locked = 1; - req_access_txt = "512" + locked = 1 }, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) @@ -2170,9 +2167,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/centcom{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "mf" = ( @@ -2690,8 +2686,8 @@ /turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "pz" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/command/glass{ - req_access_txt = "512"; name = "Floor Administrator's Office" }, /obj/effect/mapping_helpers/airlock/polarized{ @@ -2743,9 +2739,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -2975,9 +2970,8 @@ /area/ruin/space/deepstorage) "rK" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -3777,9 +3771,8 @@ /turf/simulated/wall/indestructible/riveted, /area/ruin/space/deepstorage) "wH" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; id_tag = "DS_Quartermaster" @@ -3859,8 +3852,8 @@ }, /area/ruin/space/deepstorage) "xC" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512"; name = "Interrogation Room" }, /turf/simulated/floor/plasteel{ @@ -4111,9 +4104,9 @@ /turf/simulated/floor/mineral/titanium, /area/ruin/space/deepstorage) "zh" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - name = "Incinerator"; - req_access_txt = "512" + name = "Incinerator" }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -4172,9 +4165,9 @@ /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "zy" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/vault{ - locked = 1; - req_access_txt = "512" + locked = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/catwalk, @@ -4195,9 +4188,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -4324,9 +4316,9 @@ /area/ruin/space/deepstorage) "As" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/vault{ - name = "Auxiliary Power Room"; - req_access_txt = "512" + name = "Auxiliary Power Room" }, /obj/machinery/door/poddoor/multi_tile/impassable{ id_tag = "DS_Engineering" @@ -4359,8 +4351,8 @@ }, /area/ruin/space/deepstorage) "AA" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512"; name = "Evidence Storage" }, /turf/simulated/floor/plasteel{ @@ -5373,9 +5365,8 @@ }, /area/ruin/space/deepstorage) "Hx" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -6902,9 +6893,8 @@ }, /area/ruin/space/deepstorage) "To" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "Tq" = ( @@ -6930,9 +6920,8 @@ }, /area/ruin/space/deepstorage) "TK" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/highsecurity, /obj/machinery/door/poddoor/multi_tile/impassable{ id_tag = "DS_Storage" }, @@ -7008,9 +6997,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/highsecurity, /obj/machinery/door/poddoor/multi_tile/impassable{ id_tag = "DS_Storage" }, @@ -7925,9 +7913,8 @@ /turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "ZW" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm index 091de72050ef..87472fd1364e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm @@ -63,9 +63,9 @@ /turf/simulated/floor/plating/airless, /area/ruin/space/syndicate_listening_station/asteroid) "kE" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/cable{ d1 = 4; @@ -242,9 +242,9 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/syndicate_listening_station) "zb" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/fans/tiny, /obj/effect/decal/cleanable/dirt, @@ -472,9 +472,9 @@ /turf/simulated/floor/mineral/silver, /area/ruin/space/syndicate_listening_station) "Ow" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -513,9 +513,9 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/syndicate_listening_station) "TS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/cable{ d1 = 4; diff --git a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm index 13a10e310035..4c3d28f03fbc 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm @@ -290,8 +290,8 @@ /turf/simulated/wall, /area/ruin/space/moonbase19) "aN" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271"; name = "Storage Room" }, /turf/simulated/floor/plasteel, @@ -390,16 +390,15 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaymlock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271"; name = "Medical Ward" }, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "ba" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/multi_tile/glass, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -846,9 +845,8 @@ }, /area/ruin/space/moonbase19) "cx" = ( -/obj/machinery/door/airlock/security/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/security/glass, /obj/structure/barricade/wooden/crude{ layer = 4 }, @@ -909,9 +907,8 @@ layer = 4 }, /obj/machinery/atmospherics/pipe/simple/visible/universal, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "cI" = ( @@ -1198,8 +1195,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaycontlockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Specimen Containtment Zone" }, /turf/simulated/floor/catwalk, @@ -1394,8 +1391,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaymlock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Medical Ward" }, /turf/simulated/floor/catwalk, @@ -1574,9 +1571,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/external{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/external, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "eZ" = ( @@ -1672,9 +1668,8 @@ }, /area/ruin/space/moonbase19) "fn" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/plasteel, /area/ruin/space/moonbase19) "fp" = ( @@ -1819,8 +1814,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Cafeteria" }, /turf/simulated/floor/catwalk, @@ -2934,8 +2929,8 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Workshop" }, /turf/simulated/floor/catwalk, @@ -3335,8 +3330,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Research Division" }, /turf/simulated/floor/catwalk, @@ -3548,9 +3543,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "kW" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" @@ -3628,9 +3622,8 @@ }, /area/ruin/space/moonbase19) "lq" = ( -/obj/machinery/door/airlock{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -4181,8 +4174,8 @@ /turf/simulated/floor/carpet, /area/ruin/space/moonbase19) "nx" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Engineering Division" }, /turf/simulated/floor/plasteel, @@ -4813,8 +4806,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Research Division" }, /turf/simulated/floor/catwalk, @@ -4968,8 +4961,8 @@ }, /area/ruin/space/moonbase19) "qx" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Cafeteria" }, /turf/simulated/floor/catwalk, @@ -5354,8 +5347,8 @@ }, /area/ruin/space/moonbase19) "rV" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock{ - req_access_txt = "271"; name = "Dorms" }, /turf/simulated/floor/plasteel{ @@ -5379,9 +5372,8 @@ }, /area/ruin/space/moonbase19) "rZ" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "sa" = ( @@ -7070,7 +7062,7 @@ /area/ruin/space/moonbase19) "zV" = ( /obj/machinery/economy/vending/medical{ - req_access_txt = "271" + req_access = list(271) }, /turf/simulated/floor/plasteel{ icon_state = "whitecorner"; @@ -7095,8 +7087,8 @@ }, /area/ruin/space/moonbase19) "Af" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/command/glass{ - req_access_txt = "271"; name = "Senior Researcher's Office" }, /obj/effect/mapping_helpers/airlock/polarized{ @@ -7487,7 +7479,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/window/reinforced/normal{ dir = 4; - req_access_txt = "271" + req_access = list(271) }, /obj/machinery/door/poddoor/shutters/preopen{ id_tag = "awayscilock2" @@ -7512,9 +7504,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "BK" = ( @@ -7523,8 +7514,8 @@ /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "BO" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Engineering Division" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -7602,8 +7593,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaycontlockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Specimen Containtment Zone" }, /turf/simulated/floor/catwalk, @@ -7617,9 +7608,8 @@ }, /area/ruin/space/moonbase19) "Ct" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/highsecurity, /obj/machinery/door/poddoor/preopen{ id_tag = "awayscilock1" }, @@ -7641,8 +7631,8 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Engineering Division" }, /turf/simulated/floor/plasteel, @@ -7878,9 +7868,8 @@ }, /area/ruin/space/moonbase19) "Dt" = ( -/obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/medical/glass, /obj/effect/decal/cleanable/blood/tracks/mapped, /turf/simulated/floor/plasteel{ icon_state = "darkfull"; @@ -8492,8 +8481,8 @@ }, /area/ruin/space/moonbase19) "Gk" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271"; name = "Operation Room" }, /turf/simulated/floor/plasteel{ @@ -8841,8 +8830,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "HO" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Chamber #1" }, /obj/effect/turf_decal/delivery, @@ -9066,8 +9055,8 @@ /area/ruin/space/moonbase19) "IU" = ( /obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Chamber #2" }, /turf/simulated/floor/plasteel{ @@ -9193,9 +9182,8 @@ }, /area/ruin/space/moonbase19) "JE" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/external, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "JG" = ( @@ -9835,9 +9823,8 @@ }, /area/ruin/space/moonbase19) "Mx" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) @@ -10574,8 +10561,8 @@ }, /area/ruin/space/moonbase19) "PF" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/security{ - req_access_txt = "271"; name = "Security Checkpoint" }, /turf/simulated/floor/plasteel{ @@ -10884,8 +10871,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Cafeteria" }, /turf/simulated/floor/catwalk, @@ -10975,9 +10962,8 @@ }, /area/ruin/space/moonbase19) "Rg" = ( -/obj/machinery/door/airlock/freezer{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/freezer, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor"; temperature = 273.15 @@ -11056,9 +11042,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "RD" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/multi_tile/glass, /obj/structure/barricade/wooden/crude{ layer = 4 }, @@ -11295,9 +11280,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/door/airlock/centcom{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/centcom, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "caution" @@ -11361,8 +11345,8 @@ }, /area/ruin/space/moonbase19) "Ti" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/command/glass{ - req_access_txt = "271"; name = "Senior Researcher's Office" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -11587,8 +11571,8 @@ "Ue" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock{ - req_access_txt = "271"; name = "Dorms" }, /turf/simulated/floor/plasteel{ @@ -11691,9 +11675,8 @@ /obj/effect/decal/cleanable/blood/tracks/mapped{ dir = 8 }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "UA" = ( @@ -12039,9 +12022,8 @@ /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "We" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, @@ -12149,9 +12131,9 @@ }, /area/ruin/space/moonbase19) "WG" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/vault{ - locked = 1; - req_access_txt = "271" + locked = 1 }, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) @@ -12553,8 +12535,8 @@ /area/ruin/space/moonbase19) "Yj" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Engineering Division" }, /turf/simulated/floor/plasteel, @@ -12639,8 +12621,8 @@ id_tag = "awaymlock" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Medical Ward" }, /turf/simulated/floor/catwalk, @@ -12684,8 +12666,8 @@ }, /area/ruin/space/moonbase19) "YM" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Workshop" }, /turf/simulated/floor/catwalk, @@ -12944,9 +12926,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "ZP" = ( -/obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/medical/glass, /obj/structure/barricade/wooden{ layer = 4 }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm index 9dbdd2061f27..98f13edcf853 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm @@ -1960,9 +1960,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_one_access_txt = "301" + name = "Engineering External Access" }, /turf/simulated/floor/plating, /area/ruin/ancientstation/engi) @@ -3013,9 +3013,8 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_one_access_txt = "301" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/ancientstation/thetacorridor) "hF" = ( @@ -3090,9 +3089,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_one_access_txt = "301" + name = "Engineering External Access" }, /turf/simulated/floor/plating/airless, /area/ruin/ancientstation/engi) @@ -3792,9 +3791,9 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/highsecurity{ - name = "Prototype Laboratory"; - req_access_txt = "301" + name = "Prototype Laboratory" }, /turf/simulated/floor/plasteel{ icon_state = "whitehall" @@ -3803,9 +3802,9 @@ "jv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/highsecurity{ - name = "Prototype Laboratory"; - req_access_txt = "301" + name = "Prototype Laboratory" }, /turf/simulated/floor/plasteel{ icon_state = "whitehall" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm index 8e0bd98ae0e6..ee7e03df5065 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm @@ -241,8 +241,7 @@ id = "syndicatedruglab"; name = "Syndicate Drug Lab Hangar"; pixel_x = 24; - pixel_y = 4; - req_access_txt = null + pixel_y = 4 }, /turf/simulated/floor/plating, /area/ruin/space/syndicate_druglab) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm index 29702b1da153..54445ed5d046 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -78,8 +78,8 @@ name = "Vault Bolt Control"; normaldoorcontrol = 1; pixel_x = 24; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -1082,7 +1082,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = -24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1274,8 +1274,7 @@ "gW" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -1553,7 +1552,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = 24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -1581,7 +1580,7 @@ /area/ruin/unpowered/syndicate_space_base/toxtest) "iB" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -1728,7 +1727,7 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "je" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -4979,7 +4978,7 @@ dir = 4; network = list("SyndicateTestLab","SyndicateToxinsTest","SyndicateCaves","SyndicateInterior"); name = "syndicate security camera console"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -5290,7 +5289,7 @@ /area/ruin/unpowered/syndicate_space_base/atmos) "Ed" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light{ dir = 1 @@ -5332,8 +5331,7 @@ "Ei" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /mob/living/simple_animal/chicken{ faction = list("neutral","syndicate") @@ -5456,10 +5454,10 @@ }, /area/ruin/unpowered/syndicate_space_base/genetics) "ES" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/vault{ id_tag = "syndie_lavaland_vault"; - locked = 1; - req_access_txt = "150" + locked = 1 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -6140,7 +6138,7 @@ /area/ruin/unpowered/syndicate_space_base/main) "Iz" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light, /obj/item/clothing/gloves/combat, @@ -6396,7 +6394,7 @@ pixel_y = -24; name = "Caves Turret Control Panel"; control_area = "Syndicate Space Base Cave"; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/chair{ dir = 8 @@ -7028,8 +7026,7 @@ /area/ruin/unpowered/syndicate_space_base/toxlaunch) "NT" = ( /obj/structure/closet/secure_closet/medical1{ - req_access = null; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/window/reinforced{ dir = 1 @@ -7692,7 +7689,7 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "Sv" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, @@ -7793,7 +7790,7 @@ /area/ruin/unpowered/syndicate_space_base/storage) "SN" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm index 5ff98a049734..ce4becef7b45 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm @@ -442,17 +442,17 @@ }, /area/syndicate_depot/core) "bq" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/syndicate_depot/core) "br" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -561,9 +561,9 @@ name = "Sealed Doors"; protected = 0 }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -647,8 +647,7 @@ /obj/machinery/turretid/syndicate{ name = "external turret controls"; pixel_x = -32; - req_access = null; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm index 9b02d8da89fd..dd84c082cba3 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm @@ -157,9 +157,7 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) "cJ" = ( @@ -417,13 +415,11 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Satellite"; - req_access_txt = "61" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" + name = "Telecoms Satellite" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) @@ -512,9 +508,9 @@ /turf/simulated/floor/catwalk/airless, /area/ruin/space/telecomms/powercontrol) "ky" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Power Control"; - req_access_txt = "61" + name = "Telecoms Power Control" }, /obj/structure/cable{ d1 = 4; @@ -1498,9 +1494,9 @@ /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/computer) "xL" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Lounge"; - req_access_txt = "61" + name = "Telecoms Lounge" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor, @@ -1518,9 +1514,9 @@ /turf/simulated/floor/plating, /area/ruin/space/telecomms) "yl" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/maintenance_hatch{ - name = "Telecoms Storage"; - req_access_txt = "61" + name = "Telecoms Storage" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1576,9 +1572,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms East Wing"; - req_access_txt = "61" + name = "Telecoms East Wing" }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -1670,9 +1666,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/telecomms_trap_tank, /obj/effect/abstract/cheese_trap, /turf/simulated/floor/catwalk, @@ -1762,9 +1756,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/abstract/bot_trap, /turf/simulated/floor/catwalk, /area/ruin/space/telecomms) @@ -2295,18 +2287,16 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) "IL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms West Wing"; - req_access_txt = "61" + name = "Telecoms West Wing" }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -2383,9 +2373,7 @@ /area/ruin/space/telecomms/computer) "JQ" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/window/reinforced{ dir = 8 }, @@ -2474,9 +2462,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/window/reinforced{ dir = 8 }, @@ -2733,9 +2719,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Satellite"; - req_access_txt = "61" + name = "Telecoms Satellite" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ @@ -2839,18 +2825,6 @@ temperature = 80 }, /area/ruin/space/telecomms/chamber) -"QY" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, -/turf/simulated/floor/catwalk, -/area/ruin/space/telecomms) "QZ" = ( /obj/machinery/power/solar, /obj/structure/cable, @@ -3086,9 +3060,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/foyer) "UF" = ( @@ -6849,7 +6821,7 @@ UD oB BQ Zb -QY +nL ML ML AX @@ -8507,12 +8479,12 @@ nL vd Od xj -QY -QY -QY -QY -QY -QY +nL +nL +nL +nL +nL +nL vU Xf Ed diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm index b098bcc88a84..5265570fb7dd 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm @@ -1065,6 +1065,10 @@ /obj/structure/sign/mech, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, /area/ruin/space/derelict/arrival) +"cM" = ( +/obj/structure/sign/securearea, +/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, +/area/ruin/space/derelict/arrival) "cN" = ( /obj/machinery/door/airlock/hatch{ desc = "A sturdy armoury door. If you listen closely, you can barely make out a soviet marching tune coming from the other side of the door."; @@ -1836,9 +1840,7 @@ name = "custom placement"; pixel_x = 30 }, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "eJ" = ( @@ -1997,9 +1999,7 @@ /turf/simulated/floor/plating, /area/ruin/space/derelict/hallway/primary) "fb" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fc" = ( @@ -2234,14 +2234,12 @@ }, /area/ruin/space/derelict/arrival) "fB" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, /obj/structure/cable{ d1 = 2; d2 = 4; icon_state = "2-4" }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fC" = ( @@ -2253,12 +2251,12 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fD" = ( -/obj/item/trash/spentcasing, /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fE" = ( @@ -2386,14 +2384,12 @@ /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fU" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fV" = ( /obj/structure/chair/stool/bar, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fW" = ( @@ -2559,7 +2555,7 @@ }, /area/ruin/space/derelict/arrival) "gr" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "gs" = ( @@ -2685,7 +2681,7 @@ /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "gH" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/grimy, /area/ruin/space/derelict/crew_quarters) "gI" = ( @@ -2711,9 +2707,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "gM" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "gN" = ( @@ -3208,7 +3202,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "ia" = ( @@ -3306,9 +3300,7 @@ }, /area/ruin/space/derelict/crew_quarters) "in" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -3353,9 +3345,7 @@ /area/ruin/space/derelict/arrival) "ix" = ( /obj/effect/decal/cleanable/blood/splatter, -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "iy" = ( @@ -3456,7 +3446,7 @@ }, /area/ruin/space/derelict/crew_quarters) "iL" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) "iM" = ( @@ -3644,11 +3634,11 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/ruin/space/derelict/arrival) "jl" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; locked = 1; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /turf/simulated/floor/plating, /area/ruin/space/derelict/arrival) @@ -3665,9 +3655,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "jo" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "jp" = ( @@ -3681,9 +3669,7 @@ /area/ruin/space/derelict/arrival) "jq" = ( /obj/effect/landmark/burnturf, -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "jr" = ( @@ -3701,7 +3687,7 @@ }, /area/ruin/space/derelict/hallway/primary) "jt" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "rampbottom" @@ -3910,9 +3896,7 @@ }, /area/ruin/space/derelict/arrival) "jX" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel{ icon_state = "derelict14" }, @@ -3988,9 +3972,7 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/hallway/primary) "kf" = ( @@ -4365,7 +4347,7 @@ }, /area/ruin/space/derelict/arrival) "kN" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel{ icon_state = "derelict3" }, @@ -4409,9 +4391,7 @@ /area/ruin/space/derelict/arrival) "kU" = ( /obj/machinery/light/small, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "redblue" @@ -4536,9 +4516,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) "ll" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) "lm" = ( @@ -4886,9 +4864,7 @@ }, /area/ruin/space/derelict/arrival) "mf" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "mg" = ( @@ -7429,10 +7405,6 @@ }, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) -"El" = ( -/obj/structure/sign/securearea, -/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, -/area/ruin/space/derelict/arrival) "Mi" = ( /obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, @@ -7441,13 +7413,6 @@ /obj/effect/spawner/airlock, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, /area/ruin/space/derelict/arrival) -"NK" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/template_noop, -/area/template_noop) "Oh" = ( /obj/effect/spawner/airlock/w_to_e, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, @@ -8624,7 +8589,7 @@ aW bn ed en -El +cM fg fB fX @@ -8900,7 +8865,7 @@ dQ do do cm -El +cM de fE fZ @@ -9443,7 +9408,7 @@ aW bn cm cA -El +cM cA do dD @@ -9627,7 +9592,7 @@ bF bT co cA -El +cM dg ds bn @@ -14052,7 +14017,7 @@ ac ac ac ac -NK +ac ac ac ac diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index 4302706bd33c..a3047e86d7a3 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -565,8 +565,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /obj/structure/cable{ d1 = 4; @@ -1163,10 +1163,10 @@ /obj/effect/turf_decal/delivery/hollow/right, /obj/machinery/door_control{ id = "mining_mechbay"; - req_access_txt = "54"; name = "Mech Bay Shutters"; pixel_x = 24; - pixel_y = 5 + pixel_y = 5; + req_access = list(54) }, /obj/machinery/light_switch{ pixel_x = 24; @@ -2452,9 +2452,9 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/unexplored/danger) "fU" = ( +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, /obj/machinery/door/airlock/titanium{ - id_tag = "s_docking_airlock"; - req_access_txt = "48" + id_tag = "s_docking_airlock" }, /obj/docking_port/mobile/mining, /obj/structure/fans/tiny, @@ -2916,7 +2916,7 @@ id = "gulagshuttleflasher"; name = "Flash Control"; pixel_y = -26; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -3093,8 +3093,8 @@ id = "Labor"; name = "Labor Camp Lockdown"; pixel_y = -22; - req_access_txt = "2"; - pixel_x = -7 + pixel_x = -7; + req_access = list(2) }, /obj/machinery/flasher_button{ id = "laborairlock"; @@ -3870,7 +3870,7 @@ /obj/machinery/flasher_button{ id = "gulagshuttleflasher"; name = "Flash Control"; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -4466,8 +4466,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /obj/structure/cable{ d1 = 4; @@ -5999,8 +5999,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Labor"; @@ -6077,8 +6077,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/security/brig, diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index e463797b0a34..fb4d98bb742e 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -19,9 +19,9 @@ /turf/simulated/wall/indestructible/fakedoor, /area/ninja/holding) "ah" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "CentCom Security"; - req_access_txt = "101" + name = "CentCom Security" }, /turf/simulated/floor/plasteel/dark, /area/centcom/evac) @@ -434,7 +434,7 @@ /area/ninja/holding) "bO" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /turf/simulated/floor/plasteel/freezer, /area/ninja/holding) @@ -862,6 +862,9 @@ "ds" = ( /turf/simulated/wall/indestructible/syndicate, /area/centcom) +"dt" = ( +/turf/simulated/floor/plasteel/stairs/right, +/area/syndicate_mothership) "du" = ( /obj/structure/table, /obj/item/reagent_containers/drinks/shaker, @@ -906,12 +909,12 @@ "dD" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_x = 25; - req_access_txt = "150"; vent_link_id = "syndishuttle_vent"; ext_door_link_id = "syndishuttle_door_ext"; int_door_link_id = "syndishuttle_door_int"; ext_button_link_id = "syndishuttle_btn_ext"; - int_button_link_id = "syndishuttle_btn_int" + int_button_link_id = "syndishuttle_btn_int"; + req_access = list(150) }, /obj/machinery/light{ dir = 4 @@ -1069,10 +1072,10 @@ }, /area/ninja/holding) "ei" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Workshop"; - req_access_txt = "101" + name = "Workshop" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -1934,10 +1937,10 @@ /turf/simulated/floor/plasteel, /area/tdome/arena) "hl" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -1945,7 +1948,7 @@ id_tag = "syndicate_sit_1"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile{ dir = 8; @@ -1960,7 +1963,7 @@ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_y = -23; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/stationary{ dir = 8; @@ -1976,9 +1979,9 @@ "hm" = ( /obj/machinery/door_control/no_emag/no_cyborg{ pixel_y = 24; - req_access_txt = "114"; name = "Engineering Storage Shutters"; - id = "SpecopsEngineering" + id = "SpecopsEngineering"; + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -1999,7 +2002,7 @@ /obj/machinery/door_control/no_emag{ id = "tdome1"; pixel_x = 24; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -2016,9 +2019,9 @@ /turf/simulated/floor/wood, /area/ghost_bar) "hq" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sit_away"; - req_access_txt = "150" + id_tag = "sit_away" }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2080,17 +2083,17 @@ /turf/simulated/floor/wood, /area/wizard_station) "hA" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) "hB" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -2098,7 +2101,7 @@ id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile{ dir = 4; @@ -2129,10 +2132,10 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) "hE" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/security, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Holding Cell"; - req_access_txt = "104" + name = "Holding Cell" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -2142,7 +2145,7 @@ name = "Shuttle Blast Doors"; pixel_x = -26; pixel_y = -2; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2179,7 +2182,7 @@ name = "Shuttle Blast Doors"; pixel_x = 26; pixel_y = -2; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2221,7 +2224,7 @@ /obj/machinery/door_control/no_emag{ id = "tdome2"; pixel_x = -24; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -2246,16 +2249,16 @@ /turf/simulated/floor/plating/abductor, /area/abductor_ship) "hX" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door_control/no_emag{ id = "syndicate_elite"; name = "Blast Doors"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/door/poddoor{ density = 0; @@ -2263,22 +2266,22 @@ id_tag = "syndicate_elite"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/shuttle/syndicate_elite) "hY" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door_control/no_emag{ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/machinery/door/poddoor{ @@ -2287,7 +2290,7 @@ id_tag = "syndicate_sit_1"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating, /area/shuttle/syndicate_sit) @@ -2307,9 +2310,9 @@ }, /area/tdome/tdomeobserve) "ic" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/centcom{ - name = "Administrative Office"; - req_access_txt = "109" + name = "Administrative Office" }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -2448,14 +2451,14 @@ name = "SIT Base Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sit_tele"; name = "SIT Teleporter Access"; pixel_x = 6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2482,28 +2485,28 @@ name = "SST Extra Weapons"; pixel_x = -6; pixel_y = -4; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sst_ready"; name = "SST Base Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sst_tele"; name = "SST Teleporter Access"; pixel_x = 6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sst_mechbay"; name = "SST Mech Bay"; pixel_x = 6; pixel_y = -4; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2667,11 +2670,11 @@ /obj/machinery/airlock_controller/access_controller{ name = "Syndicate Jail Access Controller"; pixel_y = 24; - req_access_txt = "150"; ext_door_link_id = "syndijail_door_ext"; int_door_link_id = "syndijail_door_int"; ext_button_link_id = "syndijail_btn_ext"; - int_button_link_id = "syndijail_btn_int" + int_button_link_id = "syndijail_btn_int"; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2714,7 +2717,7 @@ /obj/machinery/door_control/no_emag{ id = "commandcenter"; name = "Privacy Shutters"; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2803,14 +2806,14 @@ name = "Nuclear Base Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "nukeop_ready"; name = "Nuclear Shuttle Access"; pixel_x = 6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2926,7 +2929,7 @@ /area/syndicate_mothership) "kk" = ( /obj/structure/closet/secure_closet{ - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -3263,16 +3266,16 @@ name = "Bolt Cell Doors"; normaldoorcontrol = 1; pixel_x = 6; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /obj/machinery/door_control/no_emag{ id = "syndicate_jail"; name = "Bolt Jail Door"; normaldoorcontrol = 1; pixel_x = -5; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) @@ -3459,7 +3462,7 @@ /obj/machinery/door_control/no_emag{ id = "syndieshutters"; name = "remote shutter control"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -3830,9 +3833,9 @@ /turf/simulated/floor/carpet/arcade, /area/ghost_bar) "mT" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/centcom{ - name = "Restroom"; - req_access_txt = "150" + name = "Restroom" }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -3869,7 +3872,7 @@ "mX" = ( /obj/machinery/door/window{ name = "Cockpit"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -4153,7 +4156,7 @@ dir = 8; name = "Tactical Toilet"; opacity = 1; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/freezer, /area/syndicate_mothership) @@ -4342,7 +4345,7 @@ /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; name = "Assault Pod"; - req_one_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating, /area/shuttle/assault_pod) @@ -4535,9 +4538,9 @@ /turf/space/transit, /area/space/centcomm) "pg" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /obj/machinery/door/airlock/titanium/glass{ name = "trader shuttle airlock"; - req_access_txt = "160"; security_level = 6 }, /turf/simulated/floor/mineral/titanium/blue, @@ -4662,9 +4665,9 @@ /turf/simulated/floor/grass/jungle, /area/centcom/evac) "pK" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Shuttle Control Office"; - req_access_txt = "114" + name = "Shuttle Control Office" }, /turf/simulated/floor/plasteel/dark, /area/centcom/gamma) @@ -4692,14 +4695,14 @@ normaldoorcontrol = 1; pixel_x = 24; pixel_y = -8; - req_access_txt = "160" + req_access = list(160) }, /obj/machinery/door_control/no_emag{ id = "trader_privacy"; name = "Privacy Shutters Control"; pixel_x = 24; pixel_y = 8; - req_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/trade/sol) @@ -4729,7 +4732,7 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /obj/machinery/light{ dir = 8 @@ -4846,10 +4849,10 @@ name = "Security Doors"; opacity = 0 }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /obj/machinery/door/airlock/titanium/glass{ id_tag = "soltrader_north"; name = "trader shuttle airlock"; - req_access_txt = "160"; security_level = 6 }, /turf/simulated/floor/mineral/titanium/blue, @@ -4941,7 +4944,7 @@ name = "Mission Launch Control"; pixel_x = -26; pixel_y = -2; - req_access_txt = "151" + req_access = list(151) }, /obj/item/kirbyplants, /turf/simulated/floor/plasteel{ @@ -5059,9 +5062,8 @@ /turf/simulated/floor/wood, /area/syndicate_mothership) "rc" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, +/obj/machinery/door/airlock/external, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -5192,14 +5194,14 @@ name = "CentCom Security Shutters"; pixel_x = 8; pixel_y = 36; - req_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC"; name = "Thunderdome Shutters"; pixel_x = 8; pixel_y = 24; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ desc = "A remote control switch to connect the ready room to the rest of Centcom."; @@ -5207,7 +5209,7 @@ name = "Nanotrasen Asset Protection Shutters"; pixel_x = -8; pixel_y = 30; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/wood, /area/centcom/control) @@ -5484,10 +5486,10 @@ /turf/simulated/floor/plasteel/dark, /area/tdome/tdomeobserve) "su" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Bridge"; - req_access_txt = "101" + name = "Bridge" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -5545,9 +5547,9 @@ /turf/simulated/floor/wood, /area/syndicate_mothership) "sE" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/multi_tile/glass{ - name = "Equipment Room"; - req_access_txt = "150" + name = "Equipment Room" }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -5566,7 +5568,7 @@ /turf/simulated/floor/plating, /area/shuttle/syndicate) "sK" = ( -/turf/simulated/floor/plasteel/stairs/old, +/turf/simulated/floor/plasteel/stairs/left, /area/syndicate_mothership) "sL" = ( /obj/machinery/mech_bay_recharge_port/upgraded/unsimulated, @@ -5641,7 +5643,7 @@ /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; name = "Assault Pod"; - req_one_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile/assault_pod, /turf/simulated/floor/plating, @@ -5668,8 +5670,8 @@ "th" = ( /obj/machinery/door/window/reinforced/normal{ color = "#d70000"; - req_access_txt = "104"; - dir = 8 + dir = 8; + req_access = list(104) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -5809,7 +5811,7 @@ id = "ASSAULT"; name = "Mech Storage"; pixel_y = -24; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -5905,7 +5907,7 @@ /obj/machinery/door/window{ dir = 8; name = "Tool Storage"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -6015,7 +6017,7 @@ /obj/machinery/door/window{ dir = 1; name = "Secure Storage"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -6265,7 +6267,7 @@ normaldoorcontrol = 1; pixel_x = 24; pixel_y = 8; - req_access_txt = "160" + req_access = list(160) }, /obj/machinery/flasher_button{ id = "soltraderflash"; @@ -6285,10 +6287,10 @@ name = "Security Doors"; opacity = 0 }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /obj/machinery/door/airlock/titanium/glass{ id_tag = "soltrader_south"; name = "trader shuttle airlock"; - req_access_txt = "160"; security_level = 6 }, /turf/simulated/floor/mineral/titanium/blue, @@ -6360,6 +6362,12 @@ /obj/item/dice/d20, /turf/simulated/floor/wood, /area/trader_station/sol) +"vC" = ( +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" + }, +/turf/simulated/floor/plasteel, +/area/admin) "vD" = ( /obj/structure/railing, /obj/effect/landmark/spawner/trader, @@ -6906,6 +6914,12 @@ icon_state = "white" }, /area/centcom/control) +"xx" = ( +/obj/machinery/photocopier/faxmachine/longrange/syndie{ + department = "Syndicate" + }, +/turf/simulated/floor/plasteel, +/area/admin) "xy" = ( /obj/structure/bookcase/random, /obj/machinery/light/small, @@ -7148,10 +7162,10 @@ /turf/simulated/floor/grass, /area/centcom/control) "yZ" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/external{ name = "Supply Shuttle"; - opacity = 0; - req_access_txt = "106" + opacity = 0 }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -7302,9 +7316,9 @@ "zK" = ( /obj/machinery/door_control/no_emag/no_cyborg{ pixel_x = 24; - req_access_txt = "114"; name = "Specops Teleporter Shutters"; - id = "CCTELE" + id = "CCTELE"; + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -7347,8 +7361,8 @@ "zW" = ( /obj/machinery/door/window{ name = "Uplink Management Control"; - req_access_txt = "151"; - dir = 4 + dir = 4; + req_access = list(151) }, /turf/simulated/floor/wood, /area/syndicate_mothership) @@ -7423,8 +7437,8 @@ "Am" = ( /obj/machinery/door/window/classic/normal{ name = "cell door"; - req_access_txt = "150"; - dir = 1 + dir = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -7603,9 +7617,9 @@ /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/supply) "AU" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "CentCom BSA Control"; - req_access_txt = "114" + name = "CentCom BSA Control" }, /turf/simulated/floor/plasteel/dark, /area/centcom/gamma) @@ -7648,9 +7662,9 @@ /turf/simulated/floor/catwalk, /area/shuttle/supply) "Be" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/centcom{ - name = "CentCom Supply"; - req_access_txt = "106" + name = "CentCom Supply" }, /turf/simulated/floor/plasteel/dark, /area/centcom/suppy) @@ -7692,8 +7706,8 @@ base_state = "right"; icon_state = "right"; name = "Infirmary"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -7854,9 +7868,9 @@ /turf/simulated/floor/plasteel/dark, /area/tdome/tdomeobserve) "BV" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "syndicate_away"; - req_access_txt = "150" + id_tag = "syndicate_away" }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -8044,7 +8058,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdome"; name = "Main Blast Doors Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -8119,7 +8133,7 @@ id = "CCcustoms2"; name = "CentCom Inner Customs Shutters"; pixel_x = 24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -8132,10 +8146,10 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/control) "CM" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/external{ name = "Supply Shuttle"; - opacity = 0; - req_access_txt = "106" + opacity = 0 }, /turf/simulated/floor/plating, /area/centcom/suppy) @@ -8230,14 +8244,14 @@ name = "Privacy Shutters"; pixel_x = 6; pixel_y = 10; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ pixel_x = -6; pixel_y = -17; name = "Engineering Storage"; id = "SpecopsEngineering"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet, /area/centcom/specops) @@ -8426,9 +8440,9 @@ /turf/simulated/floor/plasteel/freezer, /area/ghost_bar) "DV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Administrative Office"; - req_access_txt = "114" + name = "Administrative Office" }, /obj/machinery/door/poddoor/impassable{ id_tag = "specopsoffice"; @@ -8459,9 +8473,9 @@ }, /area/centcom/specops) "Ea" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/centcom{ - name = "Shuttle Control Office"; - req_access_txt = "109" + name = "Shuttle Control Office" }, /turf/simulated/floor/plasteel{ dir = 8; @@ -8507,7 +8521,7 @@ "Ej" = ( /obj/machinery/door/window/reinforced/normal{ name = "Cell Door"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) @@ -8517,13 +8531,13 @@ /area/shuttle/administration) "El" = ( /obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; auto_close_time = 25; hackProof = 1; max_integrity = 3000; - name = "Escape Pod Dock"; - req_access_txt = "101" + name = "Escape Pod Dock" }, /turf/simulated/floor/wood, /area/centcom/evac) @@ -8774,8 +8788,8 @@ "Fp" = ( /obj/machinery/door/window/classic/reversed{ name = "Tool Storage"; - req_access_txt = "150"; - dir = 8 + dir = 8; + req_access = list(150) }, /obj/machinery/light/spot{ dir = 1 @@ -8803,8 +8817,8 @@ "Ft" = ( /obj/machinery/door/window{ name = "Infirmary"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /obj/machinery/light/spot{ dir = 1 @@ -8994,7 +9008,7 @@ /obj/structure/table/wood, /obj/machinery/photocopier{ icon_state = "fax"; - name = "fax machine" + name = "fake fax machine" }, /obj/item/photo{ name = "butts" @@ -9202,7 +9216,7 @@ /obj/machinery/door/window{ dir = 1; name = "Cell A"; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/admin) @@ -9212,9 +9226,9 @@ "GO" = ( /obj/machinery/door_control/no_emag{ pixel_y = -24; - req_access_txt = "114"; name = "Engineering Storage Shutters"; - id = "SpecopsEngineering" + id = "SpecopsEngineering"; + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -9614,7 +9628,7 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -9859,10 +9873,10 @@ }, /area/centcom/specops) "Jb" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -9954,7 +9968,7 @@ /area/centcom/suppy) "Jq" = ( /obj/structure/table/wood, -/obj/item/storage/box/beanbag, +/obj/item/storage/fancy/shell/beanbag, /obj/item/gun/projectile/revolver/doublebarrel, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -10095,7 +10109,7 @@ id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = 32; - req_access_txt = "114" + req_access = list(114) }, /obj/structure/filingcabinet/filingcabinet, /turf/simulated/floor/plasteel{ @@ -10535,7 +10549,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomehea"; name = "Heavy Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -10573,7 +10587,7 @@ id = "ASSAULT"; name = "Mech Storage"; pixel_y = -24; - req_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/caution/stand_clear{ dir = 4 @@ -10816,7 +10830,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomegen"; name = "General Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -10839,9 +10853,9 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "Mn" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Gamma Armory"; - req_access_txt = "114" + name = "Gamma Armory" }, /obj/machinery/door/poddoor/impassable{ id_tag = "CCGAMMA"; @@ -10945,9 +10959,9 @@ /area/centcom/specops) "Mz" = ( /obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/centcom{ - name = "CentCom Supply"; - req_access_txt = "106" + name = "CentCom Supply" }, /turf/simulated/floor/plasteel/dark, /area/centcom/suppy) @@ -11039,28 +11053,28 @@ name = "Station Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = -6; pixel_y = -3; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ id = "ASSAULT"; name = "Mech Storage"; pixel_x = 6; pixel_y = 6; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ id = "CCDOCK2"; name = "Special Operations Secondary Dock"; pixel_x = 6; pixel_y = -3; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet, /area/centcom/specops) @@ -11072,10 +11086,10 @@ }, /area/holodeck/source_desert) "MS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door/poddoor{ density = 0; @@ -11089,7 +11103,7 @@ name = "External Door Control"; pixel_x = -26; pixel_y = 2; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile{ dheight = 9; @@ -11656,8 +11670,8 @@ "OM" = ( /obj/machinery/door/window/classic/reversed{ name = "In"; - req_access_txt = "150"; - dir = 1 + dir = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -11692,12 +11706,12 @@ /obj/machinery/door/poddoor/preopen{ id_tag = "adminshuttleblast"; name = "Blast Doors"; - req_access_txt = "101" + req_access = list(101) }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "General Access"; - req_access_txt = "101" + name = "General Access" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -11719,7 +11733,7 @@ id = "CCDOCK2"; name = "Special Operations Secondary Dock"; pixel_y = 24; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -12365,8 +12379,8 @@ "Rl" = ( /obj/machinery/door/window/classic/normal{ name = "Out"; - req_access_txt = "150"; - dir = 1 + dir = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -12467,7 +12481,7 @@ name = "Hanger Bay Shutters"; pixel_x = 24; pixel_y = null; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -12552,7 +12566,7 @@ id = "CCcustoms2"; name = "CentCom Inner Customs Shutters"; pixel_x = -24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -12587,7 +12601,7 @@ id = "CCcustoms1"; name = "CentCom Outer Customs Shutters"; pixel_x = 24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -12693,7 +12707,7 @@ name = "Specops Teleporter Shutters"; pixel_x = -24; pixel_y = null; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -12995,7 +13009,7 @@ id = "SpecopsFerry"; name = "Hanger Bay Shutters"; pixel_y = 24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -13090,9 +13104,9 @@ }, /area/centcom/control) "Uj" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/centcom{ - name = "CentCom Bridge"; - req_access_txt = "109" + name = "CentCom Bridge" }, /turf/simulated/floor/wood, /area/centcom/control) @@ -13151,10 +13165,10 @@ }, /area/shuttle/escape) "Us" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Medbay"; - req_access_txt = "101" + name = "Medbay" }, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) @@ -13361,8 +13375,8 @@ base_state = "right"; icon_state = "right"; name = "Equipment Room"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -13592,7 +13606,7 @@ id = "CCcustoms1"; name = "CentCom Outer Customs Shutters"; pixel_x = -24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -13696,10 +13710,10 @@ /turf/simulated/floor/plasteel, /area/admin) "WD" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /obj/docking_port/mobile{ dir = 8; @@ -13991,7 +14005,7 @@ id = "SPECOPS"; name = "Nanotrasen Asset Protection Shutters"; pixel_y = -24; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -14232,7 +14246,7 @@ id = "CCDOCK2"; name = "Special Operations Secondary Dock"; pixel_y = -24; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -14294,8 +14308,8 @@ "Ys" = ( /obj/machinery/door/window{ name = "Equipment Room"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -14383,7 +14397,7 @@ "YJ" = ( /obj/machinery/door/window/classic/normal{ name = "Cell B"; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/admin) @@ -14423,11 +14437,11 @@ /turf/simulated/floor/plasteel, /area/centcom/evac) "YS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_int"; locked = 1; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 @@ -62431,7 +62445,7 @@ ab ab ab ab -BZ +sK hG UO iT @@ -65778,7 +65792,7 @@ BY BY BY BY -sK +dt XJ XJ tW @@ -69406,7 +69420,7 @@ vH lZ wR wk -lZ +vC lZ lZ lZ @@ -69663,7 +69677,7 @@ lZ lZ lZ wk -lZ +xx lZ lZ lZ diff --git a/_maps/map_files/shuttles/admin_admin.dmm b/_maps/map_files/shuttles/admin_admin.dmm index c7f30616b8f0..8dbc488e6131 100644 --- a/_maps/map_files/shuttles/admin_admin.dmm +++ b/_maps/map_files/shuttles/admin_admin.dmm @@ -6,19 +6,19 @@ /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/administration) "ad" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "101" + name = "Shuttle Hatch" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/shuttle/administration) "ae" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "101" + name = "Shuttle Hatch" }, /obj/docking_port/mobile{ dir = 2; @@ -60,7 +60,7 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /obj/machinery/light{ dir = 8 @@ -98,12 +98,12 @@ /obj/machinery/door/poddoor/preopen{ id_tag = "adminshuttleblast"; name = "Blast Doors"; - req_access_txt = "101" + req_access = list(101) }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "General Access"; - req_access_txt = "101" + name = "General Access" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -169,15 +169,15 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "aB" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Workshop"; - req_access_txt = "101" + name = "Workshop" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -339,10 +339,10 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bd" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Bridge"; - req_access_txt = "101" + name = "Bridge" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -357,10 +357,10 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Medbay"; - req_access_txt = "101" + name = "Medbay" }, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) @@ -399,18 +399,18 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bp" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/security, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Holding Cell"; - req_access_txt = "104" + name = "Holding Cell" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "bq" = ( /obj/machinery/door/window/reinforced/normal{ color = "#d70000"; - req_access_txt = "104"; - dir = 8 + dir = 8; + req_access = list(104) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) diff --git a/_maps/map_files/shuttles/admin_armory.dmm b/_maps/map_files/shuttles/admin_armory.dmm index c9304f924b24..7cab651db9a7 100644 --- a/_maps/map_files/shuttles/admin_armory.dmm +++ b/_maps/map_files/shuttles/admin_armory.dmm @@ -53,11 +53,11 @@ /area/shuttle/administration) "df" = ( /obj/structure/rack, -/obj/item/storage/box/buck{ +/obj/item/storage/fancy/shell/buck{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/window/reinforced, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -221,7 +221,7 @@ id = "adminshuttlebridge"; name = "Bridge Privacy Shutters"; pixel_x = 25; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -267,7 +267,7 @@ name = "External Window Shutter Control"; pixel_x = -5; pixel_y = 35; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/keycard_auth{ pixel_y = 24 @@ -277,7 +277,7 @@ name = "Airlock Blast Door Control"; pixel_x = 5; pixel_y = 35; - req_access_txt = "19" + req_access = list(19) }, /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -356,11 +356,11 @@ /area/shuttle/administration) "xF" = ( /obj/structure/rack, -/obj/item/storage/box/buck{ +/obj/item/storage/fancy/shell/buck{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 @@ -555,11 +555,11 @@ /area/shuttle/administration) "FT" = ( /obj/structure/rack, -/obj/item/storage/box/buck{ +/obj/item/storage/fancy/shell/buck{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 8 @@ -789,7 +789,7 @@ id = "adminarmoryshutters"; name = "Armory Internal Shutters"; pixel_x = -26; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) diff --git a/_maps/map_files/shuttles/admin_skipjack.dmm b/_maps/map_files/shuttles/admin_skipjack.dmm index 6a8e908d034f..aed953b90165 100644 --- a/_maps/map_files/shuttles/admin_skipjack.dmm +++ b/_maps/map_files/shuttles/admin_skipjack.dmm @@ -13,10 +13,10 @@ /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "ad" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_ext"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -77,7 +77,7 @@ "av" = ( /obj/machinery/access_button{ autolink_id = "voxwest_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium, /area/shuttle/administration) @@ -97,7 +97,7 @@ int_button_link_id = "voxwest_btn_int"; int_door_link_id = "voxwest_door_int"; pixel_x = 24; - req_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) @@ -127,19 +127,19 @@ /turf/simulated/floor/plating/airless, /area/shuttle/administration) "aM" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_ext"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "aN" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_int"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) @@ -162,9 +162,8 @@ /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "bb" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "bd" = ( @@ -232,7 +231,7 @@ "bO" = ( /obj/machinery/access_button{ autolink_id = "voxeast_btn_ext"; - req_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium, /area/shuttle/administration) @@ -277,16 +276,16 @@ ext_door_link_id = "voxeast_door_ext"; int_door_link_id = "voxeast_door_int"; pixel_x = -24; - req_access_txt = "152"; ext_button_link_id = "voxeast_btn_ext"; - int_button_link_id = "voxeast_btn_int" + int_button_link_id = "voxeast_btn_int"; + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "cg" = ( /obj/machinery/access_button{ autolink_id = "voxwest_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/administration) @@ -325,15 +324,15 @@ "cn" = ( /obj/machinery/access_button{ autolink_id = "voxeast_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/administration) "co" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_int"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) @@ -486,7 +485,7 @@ /obj/machinery/door_control{ id = "voxshutters"; name = "remote shutter control"; - req_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) diff --git a/_maps/map_files/shuttles/emergency_bar.dmm b/_maps/map_files/shuttles/emergency_bar.dmm index b2feadfc8cda..44494f912be1 100644 --- a/_maps/map_files/shuttles/emergency_bar.dmm +++ b/_maps/map_files/shuttles/emergency_bar.dmm @@ -463,6 +463,9 @@ /obj/structure/shuttle/engine/propulsion, /turf/simulated/floor/plating/airless, /area/shuttle/escape) +"qr" = ( +/turf/simulated/wall/indestructible/titanium/nodiagonal, +/area/shuttle/escape) "Jz" = ( /obj/structure/chair/stool/bar{ dir = 4 @@ -521,7 +524,7 @@ ab bo bt bz -ab +qr ab "} (3,1,1) = {" @@ -555,7 +558,7 @@ aa aa ab ac -ab +qr aq ab aK @@ -579,7 +582,7 @@ bL (5,1,1) = {" aa ab -ab +qr ak ai ar @@ -604,7 +607,7 @@ bL "} (6,1,1) = {" ab -ab +qr ah ai al @@ -625,7 +628,7 @@ ab bo bw bA -ab +qr ab "} (7,1,1) = {" @@ -656,7 +659,7 @@ aa "} (8,1,1) = {" ab -ab +qr aj ai al @@ -683,7 +686,7 @@ ab (9,1,1) = {" aa ab -ab +qr am ao al @@ -711,7 +714,7 @@ aa aa ab ac -ab +qr ar ab aB @@ -781,7 +784,7 @@ ac bs by bD -ab +qr ab "} (13,1,1) = {" diff --git a/_maps/map_files/shuttles/emergency_clown.dmm b/_maps/map_files/shuttles/emergency_clown.dmm index 807f8e4933e2..2249a3098dd4 100644 --- a/_maps/map_files/shuttles/emergency_clown.dmm +++ b/_maps/map_files/shuttles/emergency_clown.dmm @@ -374,6 +374,9 @@ "Dr" = ( /turf/simulated/wall/indestructible/syndicate, /area/shuttle/escape) +"MA" = ( +/turf/simulated/wall/indestructible/titanium/nodiagonal, +/area/shuttle/escape) "Uo" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -430,7 +433,7 @@ ab aw bf bj -ab +MA ab "} (3,1,1) = {" @@ -464,7 +467,7 @@ aa aa ab ac -ab +MA as Dr aB @@ -488,11 +491,11 @@ bt (5,1,1) = {" aa ab -ab +MA ak ao at -Dr +tH tH aI tH @@ -513,7 +516,7 @@ bt "} (6,1,1) = {" ab -ab +MA ah ai am @@ -565,7 +568,7 @@ aa "} (8,1,1) = {" ab -ab +MA aj ai ap @@ -592,7 +595,7 @@ ab (9,1,1) = {" aa ab -ab +MA an aq av @@ -620,7 +623,7 @@ aa aa ab ac -ab +MA Uo ab aD @@ -690,7 +693,7 @@ ac be bi aw -ab +MA ab "} (13,1,1) = {" diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm index d6f6a2b87054..f504ec930e7a 100644 --- a/_maps/map_files/shuttles/emergency_dept.dmm +++ b/_maps/map_files/shuttles/emergency_dept.dmm @@ -409,7 +409,8 @@ name = "Escape Shuttle Cargo"; normalspeed = 0 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mail_sorting, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/mapping_helpers/airlock/access/any/supply/mining, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralfull" diff --git a/_maps/map_files/shuttles/emergency_old.dmm b/_maps/map_files/shuttles/emergency_old.dmm index 87b13a61c377..20b71b4435fd 100644 --- a/_maps/map_files/shuttles/emergency_old.dmm +++ b/_maps/map_files/shuttles/emergency_old.dmm @@ -326,6 +326,9 @@ /obj/structure/chair/comfy/shuttle, /turf/simulated/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) +"nt" = ( +/turf/simulated/wall/indestructible/titanium/nodiagonal, +/area/shuttle/escape) "rj" = ( /obj/machinery/economy/vending/wallmed/directional/east, /obj/structure/bed/roller, @@ -395,7 +398,7 @@ ab DZ bb bf -ab +nt ab "} (3,1,1) = {" @@ -429,7 +432,7 @@ aa aa ab ac -ab +nt as ab aZ @@ -453,7 +456,7 @@ bo (5,1,1) = {" aa ab -ab +nt al ap at @@ -478,7 +481,7 @@ bo "} (6,1,1) = {" ab -ab +nt ah ai an @@ -530,7 +533,7 @@ aa "} (8,1,1) = {" ab -ab +nt aj ai an @@ -557,7 +560,7 @@ ab (9,1,1) = {" aa ab -ab +nt ao aq an @@ -585,7 +588,7 @@ aa aa ab ac -ab +nt at ab aA @@ -655,7 +658,7 @@ ac rj be aI -ab +nt ab "} (13,1,1) = {" diff --git a/_maps/map_files/shuttles/emergency_raven.dmm b/_maps/map_files/shuttles/emergency_raven.dmm index d71aa52b0e04..c92d211f102e 100644 --- a/_maps/map_files/shuttles/emergency_raven.dmm +++ b/_maps/map_files/shuttles/emergency_raven.dmm @@ -693,7 +693,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) @@ -721,7 +721,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) @@ -1303,7 +1303,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) @@ -1458,7 +1458,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index efc65bc62cd3..f73acb7c5847 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -609,28 +609,27 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "adP" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, @@ -641,6 +640,7 @@ /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -813,7 +813,7 @@ id = "HoS"; pixel_x = 24; pixel_y = -8; - req_access_txt = "58" + req_access = list(58) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -947,14 +947,14 @@ name = "Prison Wing Lockdown"; pixel_x = -28; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -28; pixel_y = -3; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "hosofficedoor"; @@ -962,7 +962,7 @@ normaldoorcontrol = 1; pixel_x = -28; pixel_y = 17; - req_access_txt = "58" + req_access = list(58) }, /turf/simulated/floor/carpet, /area/station/command/office/hos) @@ -1008,7 +1008,7 @@ name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -1016,7 +1016,7 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1484,7 +1484,7 @@ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -1747,14 +1747,14 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/rack, -/obj/item/storage/box/tranquilizer{ +/obj/item/storage/fancy/shell/tranquilizer{ pixel_x = 3; pixel_y = -3 }, /obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -2808,7 +2808,7 @@ name = "Secure Armory Shutter Control"; pixel_x = 7; pixel_y = -28; - req_access_txt = "3" + req_access = list(3) }, /obj/structure/cable{ d1 = 4; @@ -5355,8 +5355,7 @@ "asO" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -5412,7 +5411,7 @@ normaldoorcontrol = 1; pixel_x = 5; pixel_y = -35; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control{ desc = "A remote control switch for the brig foyer."; @@ -5421,7 +5420,7 @@ normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /obj/structure/cable{ d1 = 1; @@ -5435,7 +5434,7 @@ normaldoorcontrol = 1; pixel_x = -5; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -5724,8 +5723,7 @@ "atN" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -6059,7 +6057,7 @@ name = "processing tint control"; pixel_x = -24; pixel_y = -8; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel, /area/station/security/processing) @@ -7259,7 +7257,7 @@ id = "IAA"; pixel_x = -24; pixel_y = 6; - req_access_txt = "38" + req_access = list(38) }, /obj/machinery/economy/vending/lawdrobe, /turf/simulated/floor/plasteel{ @@ -7627,7 +7625,7 @@ id = "brig_courtroom"; name = "Brig Courtroom Shutter Control"; pixel_x = 25; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -7798,7 +7796,7 @@ id = "Interrogation"; name = "interrogation tint control"; pixel_x = -24; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -8008,15 +8006,15 @@ id = "Magistrate"; pixel_x = 24; pixel_y = 6; - req_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control{ id = "magistrateofficedoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "74"; - pixel_y = -4 + pixel_y = -4; + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -8417,8 +8415,7 @@ }, /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -8755,7 +8752,7 @@ id = "brig_courtroom"; name = "Brig Courtroom Shutter Control"; pixel_y = 25; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/light{ dir = 1 @@ -9159,7 +9156,7 @@ id = "Detective"; pixel_x = -8; pixel_y = 24; - req_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -11458,7 +11455,7 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -14019,8 +14016,8 @@ /obj/machinery/door_control{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66"; - pixel_x = -24 + pixel_x = -24; + req_access = list(66) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard_medi"; @@ -19461,7 +19458,7 @@ /area/station/service/bar) "bjc" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /turf/simulated/floor/wood, /area/station/service/bar) @@ -19520,7 +19517,7 @@ "bjp" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -21450,7 +21447,7 @@ "boy" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -23980,14 +23977,14 @@ name = "Kitchen Bar Shutters Control"; pixel_x = -6; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 6; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/structure/cable{ d1 = 1; @@ -26071,16 +26068,6 @@ }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) -"bFp" = ( -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -1; - pixel_y = -24; - req_access_txt = "31" - }, -/turf/simulated/floor/plasteel, -/area/station/supply/warehouse) "bFq" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = -32 @@ -26938,7 +26925,7 @@ name = "Robotics Lab Shutters Control"; pixel_x = 24; pixel_y = 32; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -27732,7 +27719,7 @@ name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = 32; - req_access_txt = "47" + req_access = list(47) }, /obj/effect/landmark/start/scientist, /turf/simulated/floor/plasteel{ @@ -27997,7 +27984,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; - req_access_txt = "31" + req_access = list(31) }, /obj/machinery/power/apc/directional/east, /obj/structure/cable{ @@ -32703,14 +32690,14 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/button/windowtint{ id = "CMO"; pixel_x = 24; pixel_y = 8; - req_access_txt = "40"; - dir = 8 + dir = 8; + req_access = list(40) }, /obj/machinery/light_switch{ pixel_x = 24; @@ -32722,7 +32709,7 @@ id = "Biohazard_medi"; name = "Medical Quarantine"; pixel_x = 35; - req_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -33205,7 +33192,7 @@ id = "xenobio4"; name = "Chamber 4 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -34553,7 +34540,7 @@ name = "Biohazard Shutter Control"; pixel_x = -4; pixel_y = 6; - req_access_txt = "30" + req_access = list(30) }, /obj/item/folder/white{ pixel_x = 4 @@ -34569,7 +34556,7 @@ normaldoorcontrol = 1; pixel_x = -4; pixel_y = -4; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -35714,7 +35701,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = 3; - req_one_access_txt = "57" + req_access = list(57) }, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -35906,9 +35893,9 @@ /obj/machinery/button/windowtint{ id = "Surgery 1"; pixel_y = -24; - req_access_txt = "45"; dir = 1; - pixel_x = 8 + pixel_x = 8; + req_access = list(45) }, /obj/machinery/iv_drip, /turf/simulated/floor/plasteel{ @@ -39830,7 +39817,7 @@ id = "disvent"; name = "Incinerator Vent Control"; pixel_y = -24; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -41346,7 +41333,7 @@ id = "xenobio6"; name = "Chamber 6 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -42063,7 +42050,7 @@ name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 8; - req_access_txt = "24" + req_access = list(24) }, /obj/structure/cable{ d1 = 1; @@ -43226,7 +43213,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -5; - req_access_txt = "56" + req_access = list(56) }, /obj/item/clipboard{ pixel_x = 5 @@ -44836,7 +44823,7 @@ name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 4; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/atmospherics/pipe/simple/visible/purple, /turf/simulated/floor/plasteel, @@ -45378,7 +45365,7 @@ id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; - req_access_txt = "56" + req_access = list(56) }, /obj/structure/cable{ d1 = 1; @@ -45768,7 +45755,7 @@ id = "xenobio7"; name = "Chamber 7 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -46800,14 +46787,14 @@ name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/door_control{ id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -48158,7 +48145,7 @@ id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_y = 25; - req_access_txt = "17;75" + req_access = list(17,75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/turf_decal/stripes/line{ @@ -48567,7 +48554,7 @@ control_area = "\improper AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/structure/cable{ d1 = 4; @@ -48679,7 +48666,7 @@ control_area = "\improper AI Satellite Atmospherics"; name = "AI Satellite Atmospherics Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -48800,7 +48787,7 @@ control_area = "\improper AI Satellite Service"; name = "AI Satellite Service Bay Turret Control"; pixel_x = 24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -49117,7 +49104,7 @@ name = "AI Chamber Hallway Turret Control"; pixel_x = 24; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -50516,7 +50503,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -51582,7 +51569,7 @@ id = "justice_blast"; name = "Space Vent"; pixel_x = -32; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Execution"; @@ -52430,7 +52417,7 @@ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -52672,12 +52659,12 @@ "ehs" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_x = -25; - req_access_txt = "10;13"; vent_link_id = "eng_vent"; ext_door_link_id = "eng_door_ext"; int_door_link_id = "eng_door_int"; ext_button_link_id = "eng_btn_ext"; - int_button_link_id = "eng_btn_int" + int_button_link_id = "eng_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/hardsuitstorage) @@ -54401,7 +54388,7 @@ id = "xenobio2"; name = "Chamber 2 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -54421,8 +54408,8 @@ /obj/machinery/door_control{ id = "mechbay_outer"; name = "Outer Mech Bay Shutters Control"; - req_access_txt = "29"; - pixel_x = 24 + pixel_x = 24; + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -54481,8 +54468,8 @@ /obj/machinery/door_control{ id = "mechbay_inner"; name = "Inner Mech Bay Shutter Control"; - req_access_txt = "29"; - pixel_y = -24 + pixel_y = -24; + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -55073,11 +55060,11 @@ name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; - req_access_txt = "12"; ext_door_link_id = "turbine_door_ext"; int_door_link_id = "turbine_door_int"; ext_button_link_id = "turbine_btn_ext"; - int_button_link_id = "turbine_btn_int" + int_button_link_id = "turbine_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "gasturbine"; @@ -55882,7 +55869,7 @@ autolink_id = "engsm_btn_int"; name = "Supermatter Access Button"; pixel_y = -24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -57633,7 +57620,7 @@ name = "Dispossal Vent Control"; pixel_x = -24; pixel_y = 8; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -58455,7 +58442,7 @@ autolink_id = "eng_btn_int"; pixel_x = -22; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) @@ -58702,8 +58689,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -60304,7 +60291,7 @@ id = "xenobio1"; name = "Chamber 1 Containment Blast Door"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -61738,12 +61725,12 @@ "iDk" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_y = -25; - req_access_txt = "13"; vent_link_id = "secmaint_vent"; ext_door_link_id = "secmaint_door_ext"; int_door_link_id = "secmaint_door_int"; ext_button_link_id = "secmaint_btn_ext"; - int_button_link_id = "secmaint_btn_int" + int_button_link_id = "secmaint_btn_int"; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -61776,26 +61763,26 @@ name = "East Bridge Blast Door Control"; pixel_x = 6; pixel_y = 2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast west"; name = "West Bridge Blast Door Control"; pixel_x = -6; - req_one_access_txt = "19"; - pixel_y = 2 + pixel_y = 2; + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast south"; name = "South Bridge Blast Door Control"; pixel_y = -6; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast north"; name = "North Bridge Blast Door Control"; pixel_y = 10; - req_one_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -63831,8 +63818,7 @@ /area/station/public/dorms) "jFf" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/chem_dispenser, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -64100,7 +64086,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_x = 24; - req_one_access_txt = "62" + req_access = list(62) }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel, @@ -65287,7 +65273,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = -24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) @@ -66236,8 +66222,7 @@ /area/station/engineering/control) "kNx" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -66766,7 +66751,7 @@ id = "CE"; pixel_x = -8; pixel_y = 24; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -67588,7 +67573,7 @@ name = "Atmospherics Lockdown"; pixel_x = 10; pixel_y = 24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/door_control{ desc = "A remote control-switch for the engineering security doors."; @@ -67596,14 +67581,14 @@ name = "Engineering Lockdown"; pixel_x = -10; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control{ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_y = 24; - req_access_txt = "11" + req_access = list(11) }, /obj/structure/table/reinforced, /obj/machinery/photocopier/faxmachine{ @@ -67776,7 +67761,7 @@ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; pixel_x = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment, @@ -68601,9 +68586,9 @@ /obj/machinery/button/windowtint{ pixel_x = 24; id = "qm"; - req_access_txt = "41"; dir = 8; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /obj/machinery/light_switch{ dir = 8; @@ -70981,7 +70966,7 @@ autolink_id = "eng_btn_ext"; pixel_x = -22; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/space, /area/space/nearstation) @@ -71387,7 +71372,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -71800,7 +71785,7 @@ id = "xenobio3"; name = "Chamber 3 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -71854,7 +71839,7 @@ id = "xenobio5"; name = "Chamber 5 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -71908,6 +71893,16 @@ icon_state = "purple" }, /area/station/science/rnd) +"nGo" = ( +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -1; + pixel_y = -24; + req_access = list(31) + }, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "nGC" = ( /obj/structure/disposalpipe/segment/corner, /obj/structure/cable{ @@ -72861,11 +72856,11 @@ name = "Incinerator Access Console"; pixel_x = -26; pixel_y = 6; - req_access_txt = "12"; ext_door_link_id = "incinerator_door_ext"; int_door_link_id = "incinerator_door_int"; ext_button_link_id = "incinerator_btn_ext"; - int_button_link_id = "incinerator_btn_int" + int_button_link_id = "incinerator_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -73177,7 +73172,7 @@ autolink_id = "secmaint_btn_ext"; pixel_x = -25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /obj/structure/lattice/catwalk, /turf/space, @@ -75972,8 +75967,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "red" @@ -76209,7 +76204,7 @@ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/door/airlock/atmos/glass{ autoclose = 0; @@ -76674,7 +76669,7 @@ control_area = "\improper AI Upload Chamber"; name = "AI Upload Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -77316,8 +77311,8 @@ layer = 3.6; autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39"; - pixel_y = -24 + pixel_y = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -77931,7 +77926,7 @@ name = "interior access button"; pixel_x = 9; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 @@ -78401,7 +78396,7 @@ name = "Prison Wing Lockdown"; pixel_x = -32; pixel_y = 22; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/cable{ d1 = 4; @@ -78830,8 +78825,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -80657,7 +80652,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_y = -3; - req_one_access_txt = "20" + req_access = list(20) }, /turf/simulated/floor/carpet/royalblue, /area/station/command/office/captain) @@ -80940,7 +80935,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/engine, @@ -81791,8 +81786,7 @@ /area/station/supply/storage) "snE" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/effect/spawner/random/maintenance, /mob/living/simple_animal/hostile/scarybat, @@ -84625,7 +84619,7 @@ name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = 28; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment{ @@ -86328,8 +86322,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -86646,14 +86640,14 @@ name = "Queue Privacy Shutters Control"; pixel_x = 6; pixel_y = 25; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -6; pixel_y = 25; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -86929,8 +86923,8 @@ /obj/machinery/door_control{ id = "janitor"; name = "Janitor Shutters Door Control"; - req_access_txt = "26"; - pixel_x = 24 + pixel_x = 24; + req_access = list(26) }, /turf/simulated/floor/plasteel, /area/station/service/janitor) @@ -90834,11 +90828,11 @@ /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; pixel_y = 24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -115021,7 +115015,7 @@ bEB bGY bIz cCh -bFp +nGo qsc bMi bKz diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index d060c61f12f5..fbbc5126d485 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -1309,15 +1309,15 @@ id = "ailockdown"; name = "AI Asteroid Lockdown"; pixel_y = 32; - req_access_txt = "56"; - pixel_x = -5 + pixel_x = -5; + req_access = list(56) }, /obj/machinery/door_control{ id = "aisat"; name = "AI Core Lockdown"; pixel_y = 32; - req_access_txt = "56"; - pixel_x = 5 + pixel_x = 5; + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "bcircuit" @@ -1378,7 +1378,7 @@ check_synth = 1; name = "AI Chamber Turret Control"; pixel_y = 28; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/requests_console/directional/south, /turf/simulated/floor/plasteel{ @@ -3849,7 +3849,7 @@ name = "AI Asteroid Teleport Shutters Control"; pixel_x = 25; pixel_y = 25; - req_one_access_txt = "17;75" + req_one_access = list(17,75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -4940,7 +4940,7 @@ id = "bridge_lower"; name = "Lower Bridge Lockdown"; pixel_y = 24; - req_one_access_txt = "19;14" + req_one_access = list(19,14) }, /obj/structure/cable/orange{ d1 = 4; @@ -4951,7 +4951,7 @@ id = "bridge_upper"; name = "Upper Bridge Lockdown"; pixel_y = 32; - req_one_access_txt = "19;14" + req_one_access = list(19,14) }, /turf/simulated/floor/carpet/black, /area/station/command/bridge) @@ -5404,9 +5404,7 @@ /area/station/maintenance/fore2) "aLe" = ( /obj/machinery/computer/prisoner{ - dir = 4; - req_access = null; - req_access_txt = "2" + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -6712,9 +6710,7 @@ /area/station/maintenance/fore) "aTR" = ( /obj/machinery/computer/prisoner{ - dir = 4; - req_access = null; - req_access_txt = "2" + dir = 4 }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -6850,6 +6846,12 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) +"aUB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "darkgreenfull" + }, +/area/station/service/hydroponics) "aUE" = ( /obj/machinery/light{ dir = 8 @@ -7093,10 +7095,7 @@ }, /area/station/hallway/primary/fore/west) "aWm" = ( -/obj/machinery/computer/prisoner{ - req_access = null; - req_access_txt = "2" - }, +/obj/machinery/computer/prisoner, /turf/simulated/floor/plasteel, /area/station/security/prisonershuttle) "aWo" = ( @@ -9711,7 +9710,7 @@ name = "Medical Asteroid Lockdown"; pixel_x = 10; pixel_y = 39; - req_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -12621,8 +12620,8 @@ /obj/machinery/access_button{ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; - req_access_txt = "39"; - pixel_y = -24 + pixel_y = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "whitegreenfull" @@ -13459,8 +13458,7 @@ name = "Command EVA shutter control"; pixel_x = 25; pixel_y = 24; - req_access_txt = null; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -13815,7 +13813,7 @@ autolink_id = "engsm_btn_int"; name = "Supermatter Access Button"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14245,7 +14243,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = -24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14864,7 +14862,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -15104,7 +15102,7 @@ name = "Secure Armory Shutter Control"; pixel_x = 12; pixel_y = 28; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -15195,49 +15193,48 @@ /turf/simulated/floor/grass, /area/station/science/genetics) "bLm" = ( -/obj/structure/rack, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = 3; pixel_y = -3 }, /obj/structure/window/reinforced{ dir = 8 }, +/obj/item/storage/fancy/shell/tranquilizer{ + pixel_x = 7; + pixel_y = -5 + }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" }, /area/station/security/armory/secure) "bLr" = ( -/obj/structure/rack, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/tranquilizer{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag, /obj/structure/window/reinforced{ dir = 4 }, @@ -15245,6 +15242,7 @@ dir = 1; layer = 2.9 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -15606,21 +15604,21 @@ id = "engiestoragesmes"; name = "Secure Storage Blast Door Control"; pixel_x = -24; - req_access_txt = "10;11" + req_access = list(10,11) }, /obj/machinery/door_control{ id = "engineeringlockdown"; name = "Engineering Emergency Lockdown Control"; pixel_x = -24; pixel_y = 8; - req_access_txt = "10;11" + req_access = list(10,11) }, /obj/machinery/door_control{ id = "ceoffice"; name = "Office Emergency Lockdown"; pixel_x = -24; pixel_y = -8; - req_access_txt = "10;11" + req_access = list(10,11) }, /obj/structure/cable{ d2 = 4; @@ -20406,14 +20404,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -21301,7 +21299,7 @@ name = "Arrivals EVA shutter control"; pixel_x = 25; pixel_y = 6; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -24056,7 +24054,7 @@ id = "servlockdown"; name = "Service Asteroid Lockdown"; pixel_y = 32; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/computer/guestpass/hop{ pixel_x = 28 @@ -25021,13 +25019,13 @@ name = "Desk Shutters"; pixel_x = 24; pixel_y = 8; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control{ id = "hopexternal"; name = "External Lockdown"; pixel_x = 24; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control/ticket_machine_button{ pixel_x = 24; @@ -25938,14 +25936,14 @@ name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/door_control{ id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/meter, @@ -25980,11 +25978,11 @@ name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; - req_access_txt = "12"; ext_door_link_id = "turbine_door_ext"; int_door_link_id = "turbine_door_int"; ext_button_link_id = "turbine_btn_ext"; - int_button_link_id = "turbine_btn_int" + int_button_link_id = "turbine_btn_int"; + req_access = list(12) }, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) @@ -26291,7 +26289,7 @@ name = "Civilian EVA shutter control"; pixel_x = 25; pixel_y = 24; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -26889,6 +26887,11 @@ icon_state = "redcorner" }, /area/station/security/prison/cell_block/A) +"dcR" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/port) "dda" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -27555,7 +27558,7 @@ control_area = "\improper AI Satellite Secondary Antechamber"; name = "AI Satellite Secondary Antechamber Turret Control"; pixel_y = 32; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -28022,17 +28025,6 @@ /obj/machinery/ai_status_display, /turf/simulated/wall/r_wall, /area/station/security/prisonlockers) -"dkb" = ( -/obj/machinery/requests_console/directional/south, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/station/security/detective) "dkc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -30893,8 +30885,8 @@ layer = 3.6; autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39"; - pixel_y = -24 + pixel_y = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "whitegreenfull" @@ -31944,7 +31936,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/bananium, /obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/obj/effect/mapping_helpers/airlock/access/all/service/clown, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/orange{ @@ -32488,7 +32480,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -33220,7 +33212,7 @@ name = "Garage Door Control"; pixel_x = 24; pixel_y = 1; - req_access_txt = "66" + req_access = list(66) }, /obj/structure/sink{ dir = 4; @@ -33752,23 +33744,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/simulated/floor/plating, /area/station/maintenance/starboard) -"enw" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/window/classic/normal{ - name = "Kitchen"; - dir = 1 - }, -/obj/machinery/door/window/classic/normal, -/obj/effect/mapping_helpers/airlock/windoor/autoname, -/obj/effect/mapping_helpers/airlock/windoor/access/any/service/hydroponics, -/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ - dir = 1 - }, -/obj/machinery/smartfridge/food/chef, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/service/kitchen) "enx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -35900,6 +35875,12 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/port) +"eTe" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/service/hydroponics) "eTg" = ( /obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ @@ -35946,8 +35927,7 @@ /turf/simulated/floor/grass, /area/station/hallway/spacebridge/scidock) "eTI" = ( -/obj/structure/table, -/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/blood/splatter, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "eTJ" = ( @@ -37620,13 +37600,6 @@ }, /turf/simulated/floor/plating, /area/station/hallway/primary/central/west) -"fvV" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/effect/landmark/start/detective, -/turf/simulated/floor/carpet, -/area/station/security/detective) "fwd" = ( /obj/effect/decal/cleanable/crayon, /turf/simulated/floor/wood, @@ -38652,6 +38625,23 @@ icon_state = "bluecorner" }, /area/station/hallway/primary/starboard/south) +"fOh" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/classic/normal{ + name = "Kitchen"; + dir = 1 + }, +/obj/machinery/door/window/classic/normal, +/obj/effect/mapping_helpers/airlock/windoor/autoname, +/obj/effect/mapping_helpers/airlock/windoor/access/any/service/hydroponics, +/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ + dir = 1 + }, +/obj/machinery/smartfridge/food/chef, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/service/kitchen) "fOi" = ( /obj/machinery/light/small{ dir = 4 @@ -38747,12 +38737,6 @@ icon_state = "dark" }, /area/station/engineering/control) -"fPD" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/port) "fPE" = ( /obj/structure/disposalpipe/segment/corner{ dir = 4 @@ -41261,6 +41245,25 @@ icon_state = "whitepurple" }, /area/station/science/genetics) +"gEI" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Walkway" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "servlockdown"; + layer = 2.6; + name = "Service Lockdown" + }, +/obj/structure/disposalpipe/segment{ + color = "#954535" + }, +/obj/effect/turf_decal/caution/red, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/station/hallway/spacebridge/sercom) "gEJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -41939,8 +41942,8 @@ /obj/machinery/door_control{ id = "qm_warehouse"; name = "Warehouse Door Control"; - req_access_txt = "31"; - pixel_x = 24 + pixel_x = 24; + req_access = list(31) }, /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -43786,6 +43789,7 @@ /area/station/service/bar) "htz" = ( /obj/effect/spawner/random_spawners/dirt_often, +/obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "darkgreenfull" }, @@ -45672,7 +45676,7 @@ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -47237,13 +47241,6 @@ icon_state = "browncorner" }, /area/station/hallway/primary/fore/east) -"inP" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/port) "inQ" = ( /obj/machinery/door/airlock/maintenance{ name = "Port Asteroid Maintenance" @@ -49450,7 +49447,7 @@ id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -24; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/atmospherics/unary/portables_connector{ dir = 8 @@ -50462,21 +50459,6 @@ icon_state = "dark" }, /area/station/hallway/primary/starboard/south) -"jeu" = ( -/obj/machinery/hologram/holopad, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/service/hydroponics) "jeB" = ( /obj/structure/transit_tube/station/reverse/flipped{ dir = 4 @@ -51141,22 +51123,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, /area/station/security/lobby) -"joS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/service/hydroponics) "joZ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -52226,7 +52192,7 @@ name = "Science Asteroid Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "30" + req_access = list(30) }, /obj/structure/table, /obj/item/book/manual/wiki/sop_science{ @@ -52297,7 +52263,7 @@ name = "AI Sat EVA shutter control"; pixel_x = 24; pixel_y = 25; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -52679,7 +52645,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -24; - req_access_txt = "67" + req_access = list(67) }, /obj/machinery/button/windowtint{ dir = 1; @@ -55799,6 +55765,15 @@ /area/station/medical/medbay) "kAT" = ( /obj/machinery/hologram/holopad, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -56481,7 +56456,7 @@ "kMH" = ( /obj/machinery/door/airlock/tranquillite, /obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/obj/effect/mapping_helpers/airlock/access/all/service/mime, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -56701,7 +56676,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -24; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/button/windowtint{ dir = 1; @@ -57640,7 +57615,7 @@ name = "Garage Door Control"; pixel_x = -24; pixel_y = 1; - req_access_txt = "66" + req_access = list(66) }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -57760,6 +57735,12 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/port) +"lhc" = ( +/obj/effect/spawner/random_spawners/dirt_often, +/turf/simulated/floor/plasteel{ + icon_state = "darkgreenfull" + }, +/area/station/service/hydroponics) "lhf" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable/orange{ @@ -57993,10 +57974,6 @@ }, /turf/simulated/floor/plasteel/freezer, /area/station/service/kitchen) -"ljz" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/port) "ljL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, @@ -61297,12 +61274,11 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "mgq" = ( -/obj/effect/spawner/random_spawners/dirt_often, -/obj/effect/turf_decal/delivery, -/turf/simulated/floor/plasteel{ - icon_state = "darkgreenfull" +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" }, -/area/station/service/hydroponics) +/area/station/maintenance/port) "mgu" = ( /obj/docking_port/stationary{ dir = 4; @@ -61788,7 +61764,7 @@ name = "Dispossal Vent Control"; pixel_x = 24; pixel_y = 8; - req_access_txt = "12" + req_access = list(12) }, /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plating, @@ -64317,9 +64293,7 @@ /turf/simulated/floor/plating, /area/station/security/prison/cell_block/A) "mYT" = ( -/obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" - }, +/obj/structure/closet/secure_closet/bar, /obj/item/radio/intercom{ name = "north bump"; pixel_y = 28 @@ -65159,9 +65133,9 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -24; - req_one_access_txt = "74;3"; dir = 4; - pixel_y = -8 + pixel_y = -8; + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -65385,8 +65359,16 @@ /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "nsy" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -66348,8 +66330,8 @@ /obj/machinery/button/windowtint{ id = "Detective"; pixel_x = -24; - req_access_txt = "4"; - dir = 4 + dir = 4; + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -68114,8 +68096,8 @@ /obj/machinery/door_control{ id = "engiestoragesmes"; name = "Secure Storage Blast Door Control"; - req_access_txt = "56"; - pixel_x = -24 + pixel_x = -24; + req_access = list(56) }, /turf/simulated/floor/plating, /area/station/engineering/smes) @@ -68399,7 +68381,7 @@ name = "Science EVA shutter control"; pixel_x = -25; pixel_y = 24; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/structure/sign/directions/security{ dir = 1; @@ -69040,11 +69022,11 @@ name = "Mixing Room Access Console"; pixel_x = -26; pixel_y = 6; - req_access_txt = "12"; ext_door_link_id = "incinerator_door_ext"; int_door_link_id = "incinerator_door_int"; ext_button_link_id = "incinerator_btn_ext"; - int_button_link_id = "incinerator_btn_int" + int_button_link_id = "incinerator_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -72450,8 +72432,8 @@ /obj/machinery/door_control{ id = "RoboticsShutters"; name = "Robotics Privacy Shutters"; - req_access_txt = "29"; - pixel_y = -24 + pixel_y = -24; + req_access = list(29) }, /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -73796,7 +73778,7 @@ name = "Prison Wing Lockdown"; pixel_x = 1; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "hosofficedoor"; @@ -73804,14 +73786,14 @@ normaldoorcontrol = 1; pixel_x = 11; pixel_y = -28; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -9; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -76343,7 +76325,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_y = -24; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -80182,8 +80164,8 @@ /obj/machinery/door_control{ id = "qm_warehouse"; name = "Warehouse Door Control"; - req_access_txt = "31"; - pixel_x = -24 + pixel_x = -24; + req_access = list(31) }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ @@ -81345,7 +81327,7 @@ id = "MechbayShutters2"; name = "Mechbay Shutters"; pixel_y = 24; - req_access_txt = "29" + req_access = list(29) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -81423,7 +81405,7 @@ name = "Chemistry Shutter Control"; pixel_x = 24; pixel_y = 22; - req_access_txt = "33" + req_access = list(33) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -84169,7 +84151,7 @@ name = "AI Asteroid Teleport Shutters Control"; pixel_x = -25; pixel_y = 25; - req_one_access_txt = "17;75" + req_one_access = list(17,75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -84469,6 +84451,14 @@ icon_state = "asteroidplating" }, /area/station/maintenance/port) +"sNb" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/service/hydroponics) "sNm" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -84484,7 +84474,7 @@ id = "RnDShutters"; name = "Research Privacy Shutters"; pixel_y = 24; - req_access_txt = "47" + req_access = list(47) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -85380,9 +85370,7 @@ /area/station/maintenance/fpmaint) "sZS" = ( /obj/machinery/computer/prisoner{ - dir = 1; - req_access = null; - req_access_txt = "2" + dir = 1 }, /obj/machinery/light_switch{ dir = 1; @@ -85395,7 +85383,7 @@ name = "Prison Wing Lockdown"; pixel_x = -9; pixel_y = -24; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -87993,12 +87981,6 @@ /obj/effect/spawner/airlock/s_to_n, /turf/simulated/wall, /area/station/hallway/primary/central/north) -"tMD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "darkgreenfull" - }, -/area/station/service/hydroponics) "tMN" = ( /obj/machinery/door/airlock/external{ id_tag = "laborcamp_home"; @@ -88548,41 +88530,41 @@ id = "ailockdown"; name = "AI Asteroid Lockdown"; pixel_y = 40; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/door_control{ id = "servlockdown"; name = "Service Lockdown"; pixel_x = -10; pixel_y = 32; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control{ id = "medlockdown"; name = "Medical Lockdown"; pixel_x = 10; pixel_y = 32; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/door_control{ id = "cargolockdown"; name = "Cargo Lockdown"; pixel_x = 10; pixel_y = 40; - req_access_txt = "41" + req_access = list(41) }, /obj/machinery/door_control{ id = "scilockdown"; name = "Science Lockdown"; pixel_x = -10; pixel_y = 24; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "engilockdown"; name = "Engineering Lockdown"; pixel_y = 32; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/carpet/black, /area/station/command/bridge) @@ -89337,7 +89319,7 @@ name = "Cargo EVA shutter control"; pixel_x = -25; pixel_y = 24; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -89421,7 +89403,7 @@ id = "engilockdown"; name = "Engineering Lockdown"; pixel_y = 24; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/photocopier/faxmachine{ department = "Chief Engineer's Office" @@ -89595,12 +89577,12 @@ }, /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; int_button_link_id = "viro_btn_int"; - pixel_x = -24 + pixel_x = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -92010,7 +91992,7 @@ /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "uQB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "darkgreenfull" }, @@ -99096,7 +99078,7 @@ id = "bridge"; dir = 1; pixel_y = 7; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -100412,7 +100394,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/camera{ c_tag = "SM South"; @@ -101439,8 +101421,7 @@ /area/station/hallway/spacebridge/dockmed) "xwQ" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/chem_dispenser, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -101968,25 +101949,13 @@ icon_state = "dark" }, /area/station/engineering/control) -"xCu" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Walkway" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id_tag = "servlockdown"; - layer = 2.6; - name = "Service Lockdown" - }, -/obj/structure/disposalpipe/segment{ - color = "#954535" - }, -/obj/effect/turf_decal/caution/red, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutralcorner" +"xCH" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" }, -/area/station/hallway/spacebridge/sercom) +/area/station/maintenance/port) "xCR" = ( /obj/machinery/computer/security/telescreen/entertainment, /turf/simulated/mineral/ancient, @@ -102292,7 +102261,7 @@ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -102363,6 +102332,13 @@ /obj/machinery/light/small, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) +"xHt" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/detective, +/turf/simulated/floor/carpet, +/area/station/security/detective) "xHF" = ( /obj/structure/cable/orange{ d1 = 4; @@ -103188,6 +103164,17 @@ icon_state = "whitepurple" }, /area/station/maintenance/apmaint) +"xTG" = ( +/obj/machinery/requests_console/directional/south, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/station/security/detective) "xTL" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -104146,8 +104133,8 @@ /obj/machinery/door_control{ id = "medeva"; name = "Medical EVA shutter control"; - req_one_access_txt = "19;41"; - pixel_y = 24 + pixel_y = 24; + req_one_access = list(19,41) }, /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plating, @@ -104530,7 +104517,7 @@ id = "MechbayShutters"; name = "Mechbay Shutters"; pixel_x = 25; - req_access_txt = "29" + req_access = list(29) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -113239,7 +113226,7 @@ rho uSf ygl wzC -fPD +mgq aXn aXn aXn @@ -113496,7 +113483,7 @@ aXn wGX ygl wzC -inP +xCH aXn aXn aXn @@ -114532,7 +114519,7 @@ eHn ohJ gUw xZV -ljz +eTI iuf mkL aXn @@ -115049,7 +115036,7 @@ aXn aXn dLa hwS -ljz +eTI kad uCK aXn @@ -116031,7 +116018,7 @@ eHu aXn aXn aXn -inP +xCH eCI ltk wzC @@ -117820,7 +117807,7 @@ uCK aXn aXn hvI -eTI +dcR pAV pXy dHZ @@ -119867,7 +119854,7 @@ aXn aXn eCI pDl -inP +xCH aXn aXn ock @@ -120101,8 +120088,8 @@ chV evL qwd pPN -fvV -dkb +xHt +xTG emw abW nxA @@ -122740,7 +122727,7 @@ btd btd uql cBs -joS +nsy cBs cBs biB @@ -122943,7 +122930,7 @@ bpf pbY pbY pbY -xCu +gEI abT jSU grv @@ -122997,9 +122984,9 @@ cuk prN mcu pcu -jeu +kAT jKU -nsy +sNb biB hqe btd @@ -123506,7 +123493,7 @@ mrt mrt mrt mrt -enw +fOh prN biB cBs @@ -123774,7 +123761,7 @@ biB biB xNP biB -kAT +eTe kDy biB etV @@ -124548,7 +124535,7 @@ lJR lJR btd pNE -mgq +htz btd cEM eQC @@ -125309,11 +125296,11 @@ muv lYO riS mcu -uQB -uQB -uQB +aUB +aUB +aUB hpP -tMD +uQB haI lUc xAS @@ -125566,7 +125553,7 @@ baF jUW fPp cxx -htz +lhc xnz wFD rxy diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index bc2adc3fdae1..03e676b8cf72 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -6343,17 +6343,6 @@ icon_state = "brown" }, /area/station/supply/warehouse) -"azF" = ( -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = 24; - pixel_y = -3; - req_access_txt = "31" - }, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/plating, -/area/station/supply/warehouse) "azG" = ( /obj/structure/table, /obj/item/stack/packageWrap, @@ -6363,7 +6352,7 @@ name = "Warehouse Door Control"; pixel_x = -24; pixel_y = -3; - req_access_txt = "31" + req_access = list(31) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ @@ -9905,7 +9894,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = 24; - req_access_txt = "24" + req_access = list(24) }, /obj/structure/cable/yellow{ d1 = 4; @@ -12232,7 +12221,7 @@ id = "janitorshutters"; name = "Janitor Shutters Control"; pixel_x = 25; - req_access_txt = "26" + req_access = list(26) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -16243,7 +16232,7 @@ id = "cell1lockdown"; name = "Cell Lockdown"; pixel_y = 32; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Cell 1"; @@ -16284,7 +16273,7 @@ id = "cell2lockdown"; name = "Cell Lockdown"; pixel_y = 32; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" @@ -18853,6 +18842,7 @@ /obj/item/grenade/barrier, /obj/item/grenade/barrier, /obj/structure/rack, +/obj/item/storage/fancy/shell/tranquilizer, /turf/simulated/floor/plasteel, /area/station/security/armory/secure) "bhk" = ( @@ -23147,7 +23137,7 @@ id = "bridge blast north"; name = "North Bridge Blast Door Control"; pixel_y = 32; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) @@ -24371,14 +24361,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -25716,7 +25706,7 @@ id = "bridge blast east"; name = "East Bridge Blast Door Control"; pixel_x = 26; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) @@ -26904,7 +26894,7 @@ name = "West Bridge Blast Door Control"; pixel_x = null; pixel_y = 24; - req_access_txt = "19" + req_access = list(19) }, /obj/structure/cable{ d1 = 4; @@ -27104,7 +27094,7 @@ name = "East Bridge Blast Door Control"; pixel_x = null; pixel_y = 24; - req_access_txt = "19" + req_access = list(19) }, /obj/item/kirbyplants, /obj/structure/cable{ @@ -29284,7 +29274,7 @@ control_area = "\improper AI Upload Chamber"; name = "AI Upload Turret Control"; pixel_y = -24; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/carpet, /area/station/command/bridge) @@ -29294,14 +29284,14 @@ name = "Expedition Shutters Access Control"; pixel_x = 7; pixel_y = -26; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/door_control{ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = -7; pixel_y = -26; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/keycard_auth{ pixel_y = -38 @@ -30343,7 +30333,7 @@ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_y = 24; - req_access_txt = "11" + req_access = list(11) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -30563,7 +30553,7 @@ name = "Privacy Shutters"; pixel_x = 5; pixel_y = -4; - req_one_access_txt = "18" + req_access = list(18) }, /obj/structure/cable{ d1 = 2; @@ -32628,7 +32618,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -5; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -34591,7 +34581,7 @@ control_area = "\improper AI Satellite"; name = "AI Antechamber Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -34896,14 +34886,14 @@ name = "Engineering Secure Storage Control"; pixel_x = -38; pixel_y = 8; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/door_control{ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_x = -38; pixel_y = -8; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/computer/security/engineering{ dir = 4 @@ -34914,7 +34904,7 @@ pixel_x = -24; pixel_y = 9; range = 12; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) @@ -36409,8 +36399,7 @@ /area/station/legal/lawoffice) "caM" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -36476,13 +36465,13 @@ name = "Privacy Shutters"; pixel_x = -24; pixel_y = -8; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control{ id = "hopqueueshutters"; name = "Queue Shutters"; pixel_x = -24; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control/ticket_machine_button{ pixel_x = -24; @@ -36941,7 +36930,7 @@ normaldoorcontrol = 1; pixel_x = -24; pixel_y = -8; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/light_switch{ dir = 4; @@ -37033,7 +37022,7 @@ normaldoorcontrol = 1; pixel_x = 24; pixel_y = -24; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/wood, /area/station/command/office/blueshield) @@ -38413,7 +38402,7 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /obj/structure/cable{ d1 = 1; @@ -38472,7 +38461,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -25; - req_access_txt = "74" + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -38761,7 +38750,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -8; - req_access_txt = "57" + req_access = list(57) }, /turf/simulated/floor/carpet, /area/station/command/office/hop) @@ -38808,7 +38797,7 @@ id = "BS"; pixel_x = -24; pixel_y = -8; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/wood, /area/station/command/office/blueshield) @@ -39927,7 +39916,7 @@ id = "teleaccessshutter"; name = "Teleporter Shutters Access Control"; pixel_y = 24; - req_access_txt = "17" + req_access = list(17) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -41447,7 +41436,7 @@ id = "teleportershutter"; name = "Teleporter Shutters Access Control"; pixel_x = -24; - req_access_txt = "17" + req_access = list(17) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -41574,7 +41563,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/item/restraints/handcuffs/pinkcuffs, /obj/item/clothing/under/rank/security/officer, @@ -43005,7 +42994,7 @@ "csI" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -47154,7 +47143,7 @@ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = 26; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -50456,7 +50445,7 @@ /obj/machinery/door_control{ id = "xeno6"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 4 @@ -50886,7 +50875,7 @@ /obj/machinery/door_control{ id = "xeno4"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 4 @@ -50972,7 +50961,7 @@ /obj/machinery/door_control{ id = "xeno5"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 4 @@ -51248,7 +51237,7 @@ id = "xenosecure"; name = "Containment Control"; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel/white, @@ -51802,7 +51791,7 @@ /obj/machinery/door_control{ id = "xeno2"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 8 @@ -51815,7 +51804,7 @@ /obj/machinery/door_control{ id = "xeno3"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 8 @@ -56639,7 +56628,7 @@ normaldoorcontrol = 1; pixel_x = -4; pixel_y = -4; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel/white, /area/station/command/office/rd) @@ -57003,7 +56992,7 @@ id = "roboticsshutters"; name = "Mech Bay Door Control"; pixel_y = 24; - req_access_txt = "29" + req_access = list(29) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -57221,7 +57210,7 @@ id = "RD"; pixel_x = 24; pixel_y = -36; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplecorner" @@ -63693,7 +63682,7 @@ /obj/machinery/door_control{ id = "xeno1"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 8 @@ -65168,7 +65157,7 @@ name = "exterior access button"; pixel_x = 20; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 1; @@ -65200,7 +65189,7 @@ id = "sr2"; pixel_x = 24; pixel_y = -7; - req_access_txt = "45" + req_access = list(45) }, /obj/machinery/light_switch{ dir = 8; @@ -65730,7 +65719,7 @@ name = "AI Chamber Turret Control"; pixel_x = -5; pixel_y = 24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -66074,7 +66063,7 @@ layer = 3.6; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/airlock/virology{ autoclose = 0; @@ -66848,7 +66837,7 @@ name = "Secure Armory Shutter Control"; pixel_x = 7; pixel_y = -28; - req_access_txt = "3" + req_access = list(3) }, /obj/structure/rack, /obj/item/storage/toolbox/mechanical, @@ -67169,7 +67158,7 @@ autolink_id = "virolab_btn_int"; name = "Virology Lab Access Button"; pixel_y = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/airlock/virology{ autoclose = 0; @@ -69942,7 +69931,7 @@ name = "exterior access button"; pixel_x = 20; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 2; @@ -70527,7 +70516,7 @@ id = "justice_blast"; name = "Space Vent"; pixel_x = 32; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/closet/secure_closet/injection, /obj/machinery/light{ @@ -70893,8 +70882,8 @@ int_button_link_id = "enginen_btn_int"; int_door_link_id = "enginen_door_int"; pixel_y = -25; - req_access_txt = "10;13"; - vent_link_id = "enginen_vent" + vent_link_id = "enginen_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -74518,7 +74507,7 @@ name = "interior access button"; pixel_x = -20; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -74605,7 +74594,7 @@ id = "cell3lockdown"; name = "Cell Lockdown"; pixel_y = 32; - req_access_txt = "2" + req_access = list(2) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -75000,32 +74989,31 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "kii" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/tranquilizer, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel, /area/station/security/armory/secure) "kiC" = ( @@ -76250,7 +76238,7 @@ int_door_link_id = "virolab_door_int"; name = "Virology Lab Access Console"; pixel_x = -24; - req_one_access_txt = "39" + req_access = list(39) }, /obj/item/kirbyplants, /turf/simulated/floor/plasteel{ @@ -76644,7 +76632,7 @@ id = "paramedic"; name = "Garage Door Control"; pixel_x = -24; - req_access_txt = "66" + req_access = list(66) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard_medi"; @@ -79433,7 +79421,7 @@ name = "Turbine Access Console"; pixel_x = 8; pixel_y = -26; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -79445,7 +79433,7 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control{ id = "auxincineratorvent"; @@ -82397,14 +82385,14 @@ name = "Kitchen Bar Shutters Control"; pixel_x = 6; pixel_y = 24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = -8; pixel_y = 24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -83388,7 +83376,7 @@ id = "sr1"; pixel_x = -24; pixel_y = -7; - req_access_txt = "45" + req_access = list(45) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -86748,7 +86736,7 @@ dir = 4; id = "qm"; pixel_x = -28; - req_access_txt = "41" + req_access = list(41) }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -92802,14 +92790,14 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/button/windowtint{ dir = 8; id = "CMO"; pixel_x = 24; pixel_y = 8; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/light_switch{ dir = 8; @@ -92821,7 +92809,7 @@ id = "Biohazard_medi"; name = "Medical Quarantine"; pixel_x = 35; - req_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -94191,8 +94179,8 @@ int_button_link_id = "engines_btn_int"; int_door_link_id = "engines_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "engines_vent" + vent_link_id = "engines_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -97596,7 +97584,7 @@ name = "interior access button"; pixel_x = -20; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -98417,6 +98405,17 @@ icon_state = "redyellowfull" }, /area/station/medical/break_room) +"xtw" = ( +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = 24; + pixel_y = -3; + req_access = list(31) + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/station/supply/warehouse) "xtS" = ( /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, @@ -98465,7 +98464,7 @@ name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -98473,14 +98472,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; pixel_x = -2; pixel_y = -36; - req_access_txt = "3" + req_access = list(3) }, /obj/structure/cable{ d1 = 4; @@ -142643,7 +142642,7 @@ axm axm axt kXQ -azF +xtw aAR aCH aCH diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index 149dc06e9d84..28e2d2046c1d 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -38,14 +38,14 @@ id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/door_control{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 7; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/computer/security/telescreen/engine, /turf/simulated/floor/plasteel{ @@ -1612,13 +1612,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "aqN" = ( -/obj/structure/rack, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag{ pixel_y = -3; pixel_x = -3 }, @@ -1626,6 +1625,8 @@ dir = 1; layer = 2.9 }, +/obj/item/storage/fancy/shell/tranquilizer, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -1697,22 +1698,22 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -24; - req_access_txt = "40"; - pixel_y = 24 + pixel_y = 24; + req_access = list(40) }, /obj/machinery/door_control{ id = "Biohazard_medi"; name = "Medical Quarantine"; pixel_x = -24; - req_access_txt = "40"; - pixel_y = 33 + pixel_y = 33; + req_access = list(40) }, /obj/machinery/button/windowtint{ id = "CMO"; pixel_x = -23; pixel_y = 42; - req_access_txt = "40"; - dir = 4 + dir = 4; + req_access = list(40) }, /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners"; @@ -2217,8 +2218,8 @@ /obj/machinery/access_button{ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "32"; - pixel_x = 24 + pixel_x = 24; + req_access = list(32) }, /obj/machinery/light{ dir = 4 @@ -2320,8 +2321,8 @@ id = "disvent"; name = "Incinerator Vent Control"; pixel_y = -24; - req_access_txt = "12"; - pixel_x = 26 + pixel_x = 26; + req_access = list(12) }, /turf/simulated/floor/plating, /area/station/maintenance/incinerator) @@ -2418,7 +2419,7 @@ autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -2943,12 +2944,6 @@ pixel_y = -4; pixel_x = -17 }, -/obj/machinery/light_switch{ - dir = 8; - name = "east bump"; - pixel_x = 24; - pixel_y = -5 - }, /obj/structure/disposalpipe/trunk{ dir = 8 }, @@ -4890,7 +4885,7 @@ id = "CE"; pixel_x = -8; pixel_y = 24; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/button/windowtint{ dir = 4; @@ -4898,7 +4893,7 @@ pixel_x = -24; pixel_y = 9; range = 12; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/light_switch{ dir = 4; @@ -5985,7 +5980,7 @@ normaldoorcontrol = 1; pixel_x = 37; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control{ desc = "A remote control switch for the brig foyer."; @@ -5994,7 +5989,7 @@ normaldoorcontrol = 1; pixel_x = 27; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "darkredfull" @@ -8754,8 +8749,8 @@ /obj/machinery/door_control{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66"; - pixel_x = 24 + pixel_x = 24; + req_access = list(66) }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ @@ -10872,7 +10867,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -11145,7 +11140,6 @@ }, /area/station/hallway/secondary/garden) "cbf" = ( -/obj/structure/dispenser/oxygen, /obj/machinery/firealarm/directional/north, /obj/machinery/camera{ c_tag = "Brig Secure Armory North" @@ -11501,8 +11495,8 @@ /obj/machinery/access_button{ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "32"; - pixel_x = -24 + pixel_x = -24; + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -11911,7 +11905,7 @@ id = "xenobio3"; name = "Chamber 3 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -13414,12 +13408,12 @@ "cyf" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_x = 25; - req_access_txt = "10;13"; vent_link_id = "eng_vent"; ext_door_link_id = "eng_door_ext"; int_door_link_id = "eng_door_int"; ext_button_link_id = "eng_btn_ext"; - int_button_link_id = "eng_btn_int" + int_button_link_id = "eng_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -13731,7 +13725,7 @@ name = "Research and Development Lab Shutters Control"; pixel_x = 24; pixel_y = 23; - req_access_txt = "47" + req_access = list(47) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -15011,6 +15005,14 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/east) +"cOV" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/machinery/requests_console/directional/east, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "cOY" = ( /obj/machinery/economy/vending/wallmed/directional/east, /turf/simulated/floor/plasteel{ @@ -15504,7 +15506,6 @@ }, /obj/structure/disposalpipe/sortjunction/reversed{ dir = 8; - req_access_txt = null; sort_type_txt = "1" }, /turf/simulated/floor/plasteel, @@ -16884,6 +16885,13 @@ }, /turf/simulated/floor/wood, /area/station/service/library) +"dhN" = ( +/obj/structure/chair/sofa/bench{ + dir = 1; + cover_color = "#85130b" + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard) "dhP" = ( /obj/structure/computerframe{ dir = 4 @@ -17790,7 +17798,7 @@ "dqX" = ( /obj/structure/chair/sofa, /obj/effect/landmark/start/assistant, -/obj/structure/sign/poster/official/random{ +/obj/machinery/computer/security/telescreen/entertainment{ pixel_y = 32 }, /turf/simulated/floor/carpet, @@ -18977,7 +18985,7 @@ id = "xenobio4"; name = "Chamber 4 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/item/radio/intercom{ name = "west bump"; @@ -20978,7 +20986,7 @@ autolink_id = "eng_btn_int"; pixel_x = -22; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -23576,7 +23584,7 @@ id = "xenobio5"; name = "Chamber 5 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -24741,8 +24749,7 @@ /area/station/engineering/break_room/secondary) "eHF" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -25234,9 +25241,9 @@ id = "Prison Perma Cell 3"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -26442,7 +26449,7 @@ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = -24; - req_one_access_txt = "18" + req_access = list(18) }, /turf/simulated/floor/plasteel, /area/station/ai_monitored/storage/eva) @@ -26594,9 +26601,9 @@ id = "Prison Perma Cell 1"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -27544,7 +27551,7 @@ ext_button_link_id = "engsm_btn_ext"; int_button_link_id = "engsm_btn_int"; pixel_x = 22; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28998,11 +29005,11 @@ name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; - req_access_txt = "12"; ext_door_link_id = "turbine_door_ext"; int_door_link_id = "turbine_door_int"; ext_button_link_id = "turbine_btn_ext"; - int_button_link_id = "turbine_btn_int" + int_button_link_id = "turbine_btn_int"; + req_access = list(12) }, /obj/machinery/atmospherics/binary/pump/on, /turf/simulated/floor/plasteel{ @@ -29122,7 +29129,7 @@ name = "processing tint control"; pixel_x = -6; pixel_y = 24; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/light_switch{ name = "north bump"; @@ -31372,8 +31379,7 @@ "fPs" = ( /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -35385,11 +35391,11 @@ name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -25; - req_access_txt = "12"; ext_door_link_id = "incinerator_door_ext"; int_door_link_id = "incinerator_door_int"; ext_button_link_id = "incinerator_btn_ext"; - int_button_link_id = "incinerator_btn_int" + int_button_link_id = "incinerator_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -35681,7 +35687,7 @@ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable{ d1 = 1; @@ -35871,9 +35877,9 @@ /obj/machinery/button/windowtint{ id = "Surgery 1"; pixel_y = 8; - req_access_txt = "45"; dir = 4; - pixel_x = -24 + pixel_x = -24; + req_access = list(45) }, /obj/machinery/light_switch{ dir = 4; @@ -38203,6 +38209,7 @@ /area/station/maintenance/asmaint) "heu" = ( /obj/structure/closet/wardrobe/black, +/obj/machinery/light, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "hey" = ( @@ -38609,7 +38616,7 @@ normaldoorcontrol = 1; pixel_x = 28; pixel_y = 17; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -38617,14 +38624,14 @@ name = "Prison Wing Lockdown"; pixel_x = 28; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 28; pixel_y = -3; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -38674,7 +38681,7 @@ name = "Secure Armory Shutter Control"; pixel_x = -2; pixel_y = -36; - req_access_txt = "3" + req_access = list(3) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -38682,14 +38689,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -40111,6 +40118,14 @@ icon_state = "cult" }, /area/station/legal/magistrate) +"hwo" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/structure/closet/walllocker/emerglocker/east, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "hwx" = ( /obj/machinery/economy/vending/snack, /turf/simulated/floor/wood, @@ -40521,13 +40536,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft2) "hAf" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, @@ -40538,6 +40552,7 @@ dir = 1; layer = 2.9 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -41213,14 +41228,14 @@ id = "hopqueueshutters"; name = "Queue Shutters"; pixel_x = -24; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control{ id = "hop"; name = "Privacy Shutters"; pixel_x = -24; pixel_y = -8; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -41942,7 +41957,7 @@ /obj/structure/barricade/wooden/crude, /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -42717,6 +42732,9 @@ /area/station/public/pet_store) "hWk" = ( /obj/structure/chair/sofa/bench/left, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/south) "hWv" = ( @@ -45518,6 +45536,9 @@ /obj/structure/chair{ dir = 4 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkredcorners" @@ -45911,8 +45932,8 @@ id = "justice_blast"; name = "Space Vent"; pixel_x = 2; - req_access_txt = "2"; - pixel_y = 22 + pixel_y = 22; + req_access = list(2) }, /obj/structure/table/reinforced, /obj/item/taperecorder{ @@ -49926,19 +49947,19 @@ id = "bridge blast entrance"; name = "Bridge Lobby Blast Door Control"; pixel_y = -9; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast south"; name = "Bridge Entrance Blast Door Control"; pixel_y = -1; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast north"; name = "Bridge Space Blast Door Control"; pixel_y = 7; - req_one_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel, /area/station/command/bridge) @@ -50333,7 +50354,7 @@ autolink_id = "xeno_btn_int"; name = "Xenobiology Access Button"; pixel_x = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/door/airlock/research{ autoclose = 0; @@ -51156,8 +51177,8 @@ /obj/machinery/turretid/stun{ control_area = "\improper AI Satellite Atmospherics"; name = "AI Satellite Atmospherics Turret Control"; - req_access_txt = "75"; - pixel_y = -26 + pixel_y = -26; + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -51808,8 +51829,8 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = -1; - req_access_txt = "10"; - pixel_x = -22 + pixel_x = -22; + req_access = list(10) }, /obj/machinery/atmospherics/pipe/simple/visible/green, /obj/effect/turf_decal/stripes/line{ @@ -52811,6 +52832,17 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/security/south) +"jNB" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/item/radio/intercom{ + name = "west bump"; + pixel_x = -28 + }, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "jNM" = ( /obj/machinery/economy/vending/cigarette, /turf/simulated/floor/wood, @@ -54339,15 +54371,14 @@ "kcA" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/button/windowtint{ dir = 4; id = "IAA"; pixel_x = -24; pixel_y = 6; - req_access_txt = "38" + req_access = list(38) }, /obj/machinery/camera{ c_tag = "Internal Affairs Office"; @@ -54730,9 +54761,9 @@ id = "Prison Perma Cell 4"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -56364,9 +56395,9 @@ /obj/machinery/door_control{ id = "robotics_surgery"; name = "Robotics Privacy Shutters"; - req_access_txt = "29"; pixel_y = 24; - pixel_x = -24 + pixel_x = -24; + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -59923,18 +59954,6 @@ }, /turf/simulated/floor/plasteel, /area/station/security/permabrig) -"lhw" = ( -/obj/structure/closet/cardboard, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -1; - pixel_y = 24; - req_access_txt = "31" - }, -/turf/simulated/floor/plasteel, -/area/station/supply/warehouse) "lhR" = ( /obj/item/decorations/sticky_decorations/flammable/singleeye{ pixel_y = 20 @@ -60020,7 +60039,7 @@ id = "HoS"; pixel_x = 7; pixel_y = -25; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/light_switch{ dir = 1; @@ -60367,14 +60386,14 @@ name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/door_control{ id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/atmospherics/binary/pump/on{ dir = 1 @@ -60799,7 +60818,7 @@ name = "Engineering Lockdown"; pixel_x = 8; pixel_y = -7; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/wall/r_wall, /area/station/command/office/ce) @@ -61461,8 +61480,8 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = 9; - req_access_txt = "74"; - pixel_y = 25 + pixel_y = 25; + req_access = list(74) }, /obj/machinery/light{ dir = 1 @@ -62648,8 +62667,7 @@ /area/station/command/bridge) "lFR" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/thermomachine{ pixel_x = -5 @@ -68124,7 +68142,7 @@ control_area = "\improper AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -68745,8 +68763,7 @@ "mSw" = ( /obj/machinery/computer/prisoner{ dir = 1; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/item/radio/intercom{ name = "south bump"; @@ -69519,7 +69536,7 @@ control_area = "\improper AI Satellite Service"; name = "AI Satellite Service Bay Turret Control"; pixel_x = -29; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -71488,7 +71505,7 @@ name = "Chemistry Privacy Shutter Control"; pixel_x = -24; pixel_y = 24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ @@ -72400,7 +72417,7 @@ "nAB" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plating, /area/station/service/chapel) @@ -73065,8 +73082,8 @@ id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 7; - req_access_txt = "56"; - pixel_y = 24 + pixel_y = 24; + req_access = list(56) }, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -73145,8 +73162,8 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -6; - req_one_access_txt = "74;3"; - range = 10 + range = 10; + req_one_access = list(74,3) }, /obj/item/megaphone{ pixel_y = -11 @@ -73173,8 +73190,8 @@ name = "Court Entrance Control"; normaldoorcontrol = 1; pixel_x = 1; - req_access_txt = "74"; - pixel_y = 10 + pixel_y = 10; + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -75106,8 +75123,7 @@ "nYy" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/light{ dir = 8 @@ -76495,6 +76511,9 @@ /area/station/maintenance/apmaint2) "okc" = ( /obj/item/kirbyplants, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 30 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -77651,9 +77670,9 @@ /obj/machinery/door_control{ id = "mechbay_inner"; name = "Inner Mech Bay Shutter Control"; - req_access_txt = "29"; pixel_y = -24; - pixel_x = 25 + pixel_x = 25; + req_access = list(29) }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel{ @@ -80898,9 +80917,9 @@ /obj/machinery/button/windowtint{ id = "Surgery 2"; pixel_y = 8; - req_access_txt = "45"; dir = 8; - pixel_x = 24 + pixel_x = 24; + req_access = list(45) }, /obj/machinery/light_switch{ dir = 8; @@ -82651,7 +82670,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_x = 24; - req_one_access_txt = "62" + req_access = list(62) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -83829,6 +83848,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) +"pBn" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1; + cover_color = "#85130b" + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard) "pBo" = ( /turf/simulated/floor/engine, /area/station/science/explab/chamber) @@ -84585,7 +84611,7 @@ "pHY" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -85594,7 +85620,7 @@ id = "Detective"; pixel_x = -8; pixel_y = 24; - req_access_txt = "4" + req_access = list(4) }, /obj/machinery/computer/med_data, /obj/machinery/light{ @@ -86316,7 +86342,7 @@ id = "xenobio6"; name = "Chamber 6 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -88060,7 +88086,7 @@ id = "xenobio1"; name = "Chamber 1 Containment Blast Door"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -90902,6 +90928,13 @@ /obj/structure/lattice, /turf/space, /area/space/nearstation) +"qUn" = ( +/obj/structure/chair/sofa, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/station/public/dorms) "qUr" = ( /obj/effect/landmark/damageturf, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ @@ -91334,8 +91367,8 @@ name = "Jury Entrance Control"; normaldoorcontrol = 1; pixel_x = 1; - req_access_txt = "74"; - pixel_y = 10 + pixel_y = 10; + req_access = list(74) }, /obj/item/reagent_containers/glass/beaker/waterbottle{ pixel_x = 5 @@ -91986,6 +92019,14 @@ /obj/effect/turf_decal/stripes/corner, /turf/simulated/floor/plating, /area/station/engineering/secure_storage) +"rcZ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "rdc" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -92260,7 +92301,7 @@ id = "xenobio2"; name = "Chamber 2 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -93202,6 +93243,9 @@ /obj/structure/chair/sofa/bench/left{ dir = 4 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/ne) "rnD" = ( @@ -94869,8 +94913,8 @@ /obj/machinery/door_control{ id = "mechbay_outer"; name = "Outer Mech Bay Shutters Control"; - req_access_txt = "29"; - pixel_y = 24 + pixel_y = 24; + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -95468,7 +95512,7 @@ id = "Interrogation"; name = "interrogation tint control"; pixel_x = -24; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -95937,7 +95981,7 @@ name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light{ dir = 8 @@ -96069,6 +96113,9 @@ c_tag = "Dormitories Lounge"; dir = 8 }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, /turf/simulated/floor/wood, /area/station/public/dorms) "rOC" = ( @@ -96431,7 +96478,7 @@ name = "Atmospherics Lockdown"; pixel_x = -8; pixel_y = 10; - req_access_txt = "24" + req_access = list(24) }, /obj/item/book/manual/atmospipes, /obj/machinery/computer/security/telescreen/engine{ @@ -99604,7 +99651,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -100016,7 +100063,7 @@ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; pixel_x = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -100887,9 +100934,9 @@ id = "Prison Perma Cell 2"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -102201,6 +102248,12 @@ /area/station/legal/courtroom/gallery) "sUJ" = ( /obj/item/kirbyplants, +/obj/machinery/light_switch{ + dir = 4; + name = "west bump"; + pixel_x = -24; + pixel_y = 5 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "yellow" @@ -102408,11 +102461,11 @@ /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; pixel_y = 24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -106342,6 +106395,17 @@ icon_state = "darkbluecorners" }, /area/station/medical/storage/secondary) +"tGI" = ( +/obj/item/radio/intercom{ + name = "south bump"; + pixel_y = -28 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 1; + cover_color = "#85130b" + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard) "tGJ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -108206,6 +108270,9 @@ name = "west bump"; pixel_x = -28 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -108401,9 +108468,9 @@ /obj/machinery/button/windowtint{ pixel_x = 24; id = "qm"; - req_access_txt = "41"; dir = 8; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /obj/machinery/light_switch{ dir = 8; @@ -111875,6 +111942,7 @@ /area/station/hallway/primary/fore/north) "uHu" = ( /obj/structure/closet/wardrobe/mixed, +/obj/machinery/light, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "uHy" = ( @@ -115809,8 +115877,8 @@ /obj/machinery/access_button{ autolink_id = "engsm_btn_int"; name = "Supermatter Access Button"; - req_access_txt = "32"; - pixel_x = -24 + pixel_x = -24; + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -121520,8 +121588,6 @@ }, /area/station/public/construction) "wwv" = ( -/obj/structure/rack, -/obj/item/storage/box/tranquilizer, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 @@ -121529,6 +121595,7 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/dispenser/oxygen, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -122312,7 +122379,7 @@ /area/station/hallway/primary/starboard/south) "wFX" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/item/ammo_box/shotgun/beanbag, /turf/simulated/floor/wood, @@ -122685,7 +122752,7 @@ name = "Secure Armory Shutter Control"; pixel_x = -24; pixel_y = -28; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -124926,7 +124993,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -8; - req_access_txt = "57" + req_access = list(57) }, /obj/item/pen{ pixel_x = -8; @@ -125468,14 +125535,14 @@ name = "Kitchen Diner Shutters Control"; pixel_x = 26; pixel_y = 7; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 26; pixel_y = -3; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -125923,7 +125990,7 @@ autolink_id = "eng_btn_ext"; pixel_x = -22; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/space, /area/space/nearstation) @@ -126173,14 +126240,14 @@ normaldoorcontrol = 1; pixel_x = -4; pixel_y = -4; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -4; pixel_y = 6; - req_access_txt = "30" + req_access = list(30) }, /obj/item/reagent_containers/drinks/coffee{ pixel_x = 8; @@ -126754,9 +126821,9 @@ /obj/machinery/door_control{ id = "robotics"; name = "Robotics Privacy Shutters"; - req_access_txt = "29"; pixel_y = 8; - pixel_x = 25 + pixel_x = 25; + req_access = list(29) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -128717,6 +128784,18 @@ /obj/effect/spawner/random_spawners/oil_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) +"xRf" = ( +/obj/structure/closet/cardboard, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -1; + pixel_y = 24; + req_access = list(31) + }, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "xRh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ @@ -128773,7 +128852,7 @@ name = "AI Chamber Hallway Turret Control"; pixel_x = 24; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -148768,7 +148847,7 @@ qxw tKR svJ wRe -lhw +xRf gAx vTT mYq @@ -161143,10 +161222,10 @@ nIV tId jsx asq +rcZ tId tId -tId -jsx +jNB asq heu cJq @@ -162171,10 +162250,10 @@ nIV lAJ usj asq +hwo lAJ lAJ -lAJ -usj +cOV asq uHu cJq @@ -162842,7 +162921,7 @@ oGg mlh nYZ vAZ -eBG +qUn aAt dwn tVG @@ -171591,7 +171670,7 @@ dkG kyA uci kyA -cIa +tGI dws dws dws @@ -171848,7 +171927,7 @@ rSC uks uci kyA -kyA +dhN ajq aNu nRd @@ -172105,7 +172184,7 @@ wBF kwm qHk kyA -kyA +pBn ajq aNu anY diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 6a69edd21d26..749a1eba6c9f 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -160,7 +160,7 @@ dir = 8; id = "Detective"; pixel_x = 24; - req_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -212,8 +212,7 @@ /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -631,7 +630,7 @@ name = "exterior access button"; pixel_x = 25; pixel_y = 7; - req_access_txt = "75;13" + req_access = list(75,13) }, /turf/space, /area/space/nearstation) @@ -1395,7 +1394,7 @@ name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -1499,12 +1498,12 @@ /obj/machinery/airlock_controller/air_cycler{ pixel_x = -25; pixel_y = 4; - req_access_txt = "13"; vent_link_id = "arrivalsmaint_vent"; ext_door_link_id = "arrivalsmaint_door_ext"; int_door_link_id = "arrivalsmaint_door_int"; ext_button_link_id = "arrivalsmaint_btn_ext"; - int_button_link_id = "arrivalsmaint_btn_int" + int_button_link_id = "arrivalsmaint_btn_int"; + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -4169,7 +4168,7 @@ id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = 24; - req_access_txt = "31" + req_access = list(31) }, /obj/structure/cable{ d1 = 1; @@ -6155,7 +6154,7 @@ id = "xenobio2"; name = "Xenobio Pen 2 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -8535,7 +8534,7 @@ dir = 1; id = "Courtroom"; pixel_y = 8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -8718,7 +8717,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_x = 24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8847,26 +8846,6 @@ /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel, /area/station/engineering/control) -"aPR" = ( -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -24; - req_access_txt = "31" - }, -/obj/structure/table, -/obj/machinery/kitchen_machine/microwave{ - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch{ - dir = 4; - name = "custom placement"; - pixel_x = -24; - pixel_y = -8 - }, -/turf/simulated/floor/plasteel, -/area/station/supply/warehouse) "aPS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -13941,14 +13920,14 @@ name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light{ dir = 8 @@ -14603,7 +14582,7 @@ name = "Transit Tube Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ desc = "A remote control-switch for secure storage."; @@ -14611,7 +14590,7 @@ name = "Engineering Secure Storage"; pixel_x = -24; pixel_y = 5; - req_access_txt = "11" + req_access = list(11) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -17495,7 +17474,7 @@ /obj/machinery/button/windowtint{ id = "CE"; pixel_y = -24; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -19890,7 +19869,7 @@ /area/station/service/barber) "buI" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light/small{ dir = 1 @@ -20092,7 +20071,7 @@ id = "hop"; name = "Privacy Shutters Control"; pixel_y = 25; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/computer/account_database, /turf/simulated/floor/wood, @@ -20197,7 +20176,7 @@ control_area = "\improper AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; pixel_x = 24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -21253,7 +21232,7 @@ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/carpet, /area/station/command/office/hop) @@ -21335,14 +21314,14 @@ name = "Bridge Access Blast Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -34; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/camera{ c_tag = "Bridge - Command Chair"; @@ -22452,13 +22431,13 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_y = -24; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "gateshutter"; name = "Expedition Shutter Control"; pixel_y = -34; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -22511,14 +22490,14 @@ name = "Queue Shutters Control"; pixel_x = -6; pixel_y = -35; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -6; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -23555,7 +23534,7 @@ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -24; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -23629,7 +23608,7 @@ id = "bridge blast"; name = "Bridge Access Blast Door Control"; pixel_x = -24; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -23965,7 +23944,7 @@ id = "bridge blast"; name = "Bridge Access Blast Door Control"; pixel_x = 24; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -24113,7 +24092,7 @@ name = "Kitchen Counter Shutters"; pixel_x = -6; pixel_y = 24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -26228,7 +26207,7 @@ name = "exterior access button"; pixel_x = -25; pixel_y = -7; - req_access_txt = "75;13" + req_access = list(75,13) }, /turf/space, /area/space/nearstation) @@ -26280,7 +26259,7 @@ id = "xenobio5"; name = "Xenobio Pen 5 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -27481,7 +27460,7 @@ "bUK" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -28347,7 +28326,7 @@ id = "mechbay"; name = "Mech Bay Shutters Control"; pixel_y = -24; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -28625,7 +28604,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -24; - req_access_txt = "73" + req_access = list(73) }, /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ @@ -28765,7 +28744,7 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_y = -26; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -30942,20 +30921,20 @@ name = "Xenobiology Containment Control"; pixel_x = 7; pixel_y = 24; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "rdtoxins"; name = "Toxins Containment Control"; pixel_x = -7; pixel_y = 24; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "rdrnd"; name = "Experi-mentor shutters"; pixel_y = 34; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/computer/security/telescreen/rd{ pixel_x = 31; @@ -30965,7 +30944,7 @@ id = "RD"; pixel_x = -24; pixel_y = 26; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -31236,7 +31215,7 @@ id = "paramedic"; name = "Garage Door Control"; pixel_y = 24; - req_access_txt = "66" + req_access = list(66) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -31868,8 +31847,7 @@ "ckx" = ( /obj/machinery/mecha_part_fabricator{ id = "0"; - name = "forgotten exosuit fabricator"; - req_access = "0" + name = "forgotten exosuit fabricator" }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -32280,7 +32258,7 @@ "cmn" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -32737,7 +32715,7 @@ id = "turbinevent"; name = "Turbine Vent Control"; pixel_y = -24; - req_access_txt = "12" + req_access = list(12) }, /obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ @@ -32779,14 +32757,14 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control{ id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = -8; pixel_y = -24; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel, @@ -32903,7 +32881,7 @@ id = "mechbay"; name = "Mech Bay Shutters Control"; pixel_y = 24; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -34500,7 +34478,7 @@ id = "Surgery 1"; pixel_x = -24; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -35907,7 +35885,7 @@ dir = 1; id = "BS"; pixel_y = -22; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) @@ -37782,7 +37760,7 @@ id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; pixel_y = -24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -38902,7 +38880,7 @@ "cMz" = ( /obj/machinery/door/morgue{ name = "Relic Closet"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -39204,7 +39182,7 @@ id = "XenoPens"; name = "Xenobiology Shutters"; pixel_x = 24; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/camera{ c_tag = "Xenobiology Lab - Central Port"; @@ -39409,7 +39387,7 @@ "cOA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light_switch{ name = "north bump"; @@ -41499,7 +41477,7 @@ id = "Psych"; pixel_x = -24; pixel_y = 8; - req_access_txt = "64" + req_access = list(64) }, /obj/machinery/light_switch{ dir = 4; @@ -43553,7 +43531,7 @@ /obj/structure/closet/crate/secure{ desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; - req_access_txt = "8" + req_access = list(8) }, /obj/item/target/alien, /obj/item/target/syndicate, @@ -44079,9 +44057,9 @@ /obj/machinery/button/windowtint{ pixel_x = 24; id = "qm"; - req_access_txt = "41"; dir = 8; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /turf/simulated/floor/plasteel, /area/station/supply/qm) @@ -44369,7 +44347,7 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_y = 26; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -44660,7 +44638,7 @@ pixel_x = -6; pixel_y = 24; range = 4; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/light_switch{ name = "custom placement"; @@ -44911,8 +44889,8 @@ /obj/machinery/access_button{ autolink_id = "enginesm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "10"; - pixel_x = 24 + pixel_x = 24; + req_access = list(10) }, /obj/machinery/camera{ c_tag = "Engineering - Central"; @@ -45439,7 +45417,6 @@ /obj/machinery/airlock_controller/air_cycler{ pixel_x = 9; pixel_y = -25; - req_access_txt = null; vent_link_id = "atmossouth_vent"; ext_door_link_id = "atmossouth_door_ext"; int_door_link_id = "atmossouth_door_int"; @@ -46259,7 +46236,7 @@ name = "Brig Lockdown"; pixel_x = -26; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/camera{ c_tag = "Warden's Office"; @@ -47179,8 +47156,8 @@ /obj/machinery/access_button{ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; - req_access_txt = "24"; - pixel_x = 24 + pixel_x = 24; + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/simulated/floor/plasteel{ @@ -50830,7 +50807,7 @@ name = "interior access button"; pixel_x = 25; pixel_y = -7; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/plasteel{ @@ -51025,6 +51002,26 @@ /obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel, /area/station/security/main) +"gvz" = ( +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -24; + req_access = list(31) + }, +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave{ + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + dir = 4; + name = "custom placement"; + pixel_x = -24; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "gvJ" = ( /obj/structure/cable{ d1 = 4; @@ -51951,7 +51948,7 @@ id = "xenobio7"; name = "Xenobio Pen 7 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -52445,7 +52442,7 @@ id = "armory"; name = "Armory Shutter"; pixel_y = -24; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -54333,7 +54330,7 @@ id = "paramedic"; name = "Garage Door Control"; pixel_y = -24; - req_access_txt = "66" + req_access = list(66) }, /obj/effect/turf_decal/stripes/corner, /obj/structure/disposalpipe/junction/reversed{ @@ -54671,7 +54668,7 @@ name = "Service Shutter Control"; pixel_x = 24; pixel_y = 24; - req_access_txt = "35" + req_access = list(35) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -54690,7 +54687,7 @@ id = "xenobio8"; name = "Xenobio Pen 8 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/item/reagent_containers/spray/cleaner{ pixel_x = 5 @@ -56422,7 +56419,7 @@ id = "xenobio6"; name = "Xenobio Pen 6 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -57520,7 +57517,7 @@ name = "Xenobiology Access Button"; pixel_x = -3; pixel_y = 26; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" @@ -58281,7 +58278,7 @@ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; pixel_y = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 4; @@ -59423,8 +59420,8 @@ /obj/machinery/access_button{ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; - req_access_txt = "24"; - pixel_x = -24 + pixel_x = -24; + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/simulated/floor/plating, @@ -59586,15 +59583,15 @@ id = "Magistrate"; pixel_x = -24; pixel_y = 6; - req_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control{ id = "magistrateofficedoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = -25; - req_access_txt = "74"; - pixel_y = -4 + pixel_y = -4; + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -61031,13 +61028,13 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = 7; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/flasher_button{ id = "secentranceflasher"; name = "Brig Entrance Flash Control"; pixel_y = -3; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/plasteel, /area/station/security/warden) @@ -61146,7 +61143,7 @@ name = "Atmospherics Lockdown"; pixel_x = -4; pixel_y = 24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light_switch{ name = "custom placement"; @@ -61260,7 +61257,7 @@ id = "xenobio4"; name = "Xenobio Pen 4 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -62104,7 +62101,7 @@ id = "XenoPens"; name = "Xenobiology Shutters"; pixel_y = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/item/book/manual/wiki/sop_science{ pixel_y = 4 @@ -62731,13 +62728,13 @@ /area/station/hallway/secondary/bridge) "lnd" = ( /obj/machinery/airlock_controller/air_cycler{ - req_access_txt = "10;13"; vent_link_id = "engine_vent"; ext_door_link_id = "engine_door_ext"; int_door_link_id = "engine_door_int"; pixel_y = 24; ext_button_link_id = "engine_btn_ext"; - int_button_link_id = "engine_btn_int" + int_button_link_id = "engine_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -63508,7 +63505,7 @@ name = "interior access button"; pixel_x = -22; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/lattice/catwalk, /turf/space, @@ -64198,7 +64195,7 @@ id = "xenobio1"; name = "Xenobio Pen 1 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -65597,7 +65594,7 @@ id = "CMO"; pixel_x = -7; pixel_y = -24; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/keycard_auth{ pixel_x = 7; @@ -66459,8 +66456,7 @@ }, /area/station/medical/virology) "mRy" = ( -/obj/structure/rack, -/obj/item/storage/box/tranquilizer, +/obj/item/storage/fancy/shell/tranquilizer, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -66471,6 +66467,7 @@ d2 = 4; icon_state = "2-4" }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -67301,7 +67298,7 @@ name = "interior access button"; pixel_x = -22; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/engine, /area/station/engineering/control) @@ -68218,7 +68215,7 @@ name = "Service Shutter Control"; pixel_x = -24; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -71884,7 +71881,7 @@ name = "interior access button"; pixel_x = 25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -71970,11 +71967,11 @@ name = "Virology Lab Access Console"; pixel_x = 24; pixel_y = -24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /obj/structure/cable{ d1 = 4; @@ -74840,7 +74837,7 @@ id = "HoS"; pixel_x = -24; pixel_y = 6; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -75253,7 +75250,7 @@ id = "Surgery 2"; pixel_x = 24; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /obj/machinery/holosign_switch{ dir = 8; @@ -75649,7 +75646,7 @@ id = "xenobio3"; name = "Xenobio Pen 3 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -75838,7 +75835,7 @@ name = "interrogation tint control"; pixel_x = -24; pixel_y = 6; - req_access_txt = "63" + req_access = list(63) }, /obj/structure/cable{ d1 = 2; @@ -77992,28 +77989,28 @@ }, /area/station/engineering/atmos/control) "rJh" = ( -/obj/structure/rack, /obj/machinery/requests_console/directional/north, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -78672,7 +78669,7 @@ id = "roboticsprivacy2"; name = "Robotics Shutters"; pixel_x = 24; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -79600,7 +79597,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -80097,7 +80094,7 @@ name = "Robotics Privacy Control"; pixel_x = -26; pixel_y = 26; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics) @@ -80333,21 +80330,21 @@ name = "Justice Vent Control"; pixel_x = -26; pixel_y = 25; - req_access_txt = "3" + req_access = list(3) }, /obj/machinery/door_control{ id = "executionfireblast"; name = "Justice Area Lockdown"; pixel_x = -38; pixel_y = 25; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/ignition_switch{ id = "executionburn"; name = "Justice Ignition Switch"; pixel_x = -25; pixel_y = 36; - req_access_txt = "1" + req_access = list(1) }, /obj/machinery/flasher_button{ id = "justiceflash"; @@ -81634,7 +81631,7 @@ name = "exterior access button"; pixel_x = 25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /turf/space, /area/space/nearstation) @@ -82320,8 +82317,7 @@ "tAF" = ( /obj/machinery/computer/prisoner{ dir = 1; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -82866,7 +82862,7 @@ id = "IAA"; pixel_x = 24; pixel_y = 8; - req_access_txt = "38" + req_access = list(38) }, /turf/simulated/floor/carpet, /area/station/legal/lawoffice) @@ -85612,7 +85608,7 @@ name = "Chemistry Privacy Shutter Control"; pixel_x = 24; pixel_y = 24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ @@ -85828,7 +85824,7 @@ name = "interior access button"; pixel_x = -25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -85844,7 +85840,7 @@ name = "Toxins Access"; pixel_x = -27; pixel_y = 8; - req_access_txt = "8" + req_access = list(8) }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel, @@ -86432,7 +86428,7 @@ name = "exterior access button"; pixel_x = -25; pixel_y = 7; - req_access_txt = "24;13" + req_access = list(24,13) }, /turf/simulated/floor/plating/airless, /area/station/engineering/atmos) @@ -88777,8 +88773,7 @@ "wAJ" = ( /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -89668,7 +89663,7 @@ name = "Virology Lab Access Button"; pixel_x = 8; pixel_y = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable{ d1 = 4; @@ -89743,7 +89738,7 @@ name = "Special Containment Blast Doors"; pixel_x = 4; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the special containment chamber."; @@ -89934,8 +89929,8 @@ /obj/machinery/access_button{ autolink_id = "enginesm_btn_int"; name = "Supermatter Access Button"; - req_access_txt = "10"; - pixel_x = 24 + pixel_x = 24; + req_access = list(10) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -91689,7 +91684,7 @@ name = "Research Shutters Control"; pixel_x = 24; pixel_y = null; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/cell_charger, /turf/simulated/floor/plasteel{ @@ -91798,7 +91793,7 @@ name = "Experi-mentor shutters"; pixel_x = -25; pixel_y = null; - req_access_txt = "7" + req_access = list(7) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -91990,8 +91985,8 @@ /obj/machinery/access_button{ autolink_id = "enginesm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "10"; - pixel_x = -24 + pixel_x = -24; + req_access = list(10) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -92216,7 +92211,7 @@ autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; pixel_y = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable{ d1 = 4; @@ -92273,7 +92268,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_x = -24; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel, /area/station/command/teleporter) @@ -112382,7 +112377,7 @@ frx frx tWP aOB -aPR +gvz aWt gqF aTW diff --git a/_maps/map_files/templates/biodome_beach.dmm b/_maps/map_files/templates/biodome_beach.dmm index 3e0d5667f94f..9c2c233eb8e3 100644 --- a/_maps/map_files/templates/biodome_beach.dmm +++ b/_maps/map_files/templates/biodome_beach.dmm @@ -352,7 +352,7 @@ /turf/simulated/floor/beach/water, /area/ruin/powered/beach) "bM" = ( -/turf/simulated/floor/plasteel/stairs/old, +/turf/simulated/floor/plasteel/stairs, /area/ruin/powered/beach) "bN" = ( /obj/structure/flora/ausbushes/reedbush, diff --git a/_maps/map_files/templates/shelter_2.dmm b/_maps/map_files/templates/shelter_2.dmm index 86c7365cf34c..df2b11ba4776 100644 --- a/_maps/map_files/templates/shelter_2.dmm +++ b/_maps/map_files/templates/shelter_2.dmm @@ -123,8 +123,8 @@ alert = 0; desc = "A display case containing an expensive forgery, probably."; pixel_y = -4; - req_access_txt = "48"; - start_showpiece_type = /obj/item/fakeartefact + start_showpiece_type = /obj/item/fakeartefact; + req_access = list(48) }, /turf/simulated/floor/carpet/black{ dir = 1 diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm index 7b8344da9eb6..5c35b388280a 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm @@ -417,7 +417,7 @@ "tW" = ( /obj/effect/landmark/damageturf, /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "3" + req_access = list(3) }, /obj/item/gun/energy/laser/retro/old, /turf/simulated/floor/plasteel/airless{ diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm index 84996c8c13d3..0c0cfdba6f66 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm @@ -680,10 +680,10 @@ /turf/simulated/floor/mineral/plastitanium/red/airless, /area/ruin/space/unpowered/unpowered_structures) "UY" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door_control/no_emag{ pixel_y = 28 diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm index 5c2b88bff25d..83e2489dcd4c 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm @@ -385,7 +385,6 @@ "iL" = ( /obj/machinery/light_construct/directional/west, /obj/structure/closet/crate/secure/weapon{ - req_access_txt = null; req_access = list(150) }, /obj/effect/turf_decal/stripes/white/line{ @@ -1653,8 +1652,8 @@ /turf/simulated/floor/mineral/plastitanium, /area/ruin/space/powered/requires_power_space) "UK" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - req_access_txt = "150"; locked = 1 }, /obj/structure/fans/tiny, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm index 991fdb412715..2b88ee64a886 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm @@ -992,9 +992,8 @@ /turf/simulated/floor/plating, /area/ruin/space/powered) "wF" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, +/obj/machinery/door/airlock/external, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/ruin/space/powered) @@ -2422,7 +2421,7 @@ /area/ruin/space/powered) "WD" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "7" + req_access = list(7) }, /obj/item/mecha_parts/mecha_equipment/weapon/honker, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm index 29702b1da153..54445ed5d046 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -78,8 +78,8 @@ name = "Vault Bolt Control"; normaldoorcontrol = 1; pixel_x = 24; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -1082,7 +1082,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = -24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1274,8 +1274,7 @@ "gW" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -1553,7 +1552,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = 24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -1581,7 +1580,7 @@ /area/ruin/unpowered/syndicate_space_base/toxtest) "iB" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -1728,7 +1727,7 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "je" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -4979,7 +4978,7 @@ dir = 4; network = list("SyndicateTestLab","SyndicateToxinsTest","SyndicateCaves","SyndicateInterior"); name = "syndicate security camera console"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -5290,7 +5289,7 @@ /area/ruin/unpowered/syndicate_space_base/atmos) "Ed" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light{ dir = 1 @@ -5332,8 +5331,7 @@ "Ei" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /mob/living/simple_animal/chicken{ faction = list("neutral","syndicate") @@ -5456,10 +5454,10 @@ }, /area/ruin/unpowered/syndicate_space_base/genetics) "ES" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/vault{ id_tag = "syndie_lavaland_vault"; - locked = 1; - req_access_txt = "150" + locked = 1 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -6140,7 +6138,7 @@ /area/ruin/unpowered/syndicate_space_base/main) "Iz" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light, /obj/item/clothing/gloves/combat, @@ -6396,7 +6394,7 @@ pixel_y = -24; name = "Caves Turret Control Panel"; control_area = "Syndicate Space Base Cave"; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/chair{ dir = 8 @@ -7028,8 +7026,7 @@ /area/ruin/unpowered/syndicate_space_base/toxlaunch) "NT" = ( /obj/structure/closet/secure_closet/medical1{ - req_access = null; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/window/reinforced{ dir = 1 @@ -7692,7 +7689,7 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "Sv" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, @@ -7793,7 +7790,7 @@ /area/ruin/unpowered/syndicate_space_base/storage) "SN" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm index db4ff7a72d6b..567b8ccf3e80 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm @@ -102,9 +102,8 @@ }, /area/ruin/space/unpowered/unpowered_structures) "iD" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/mineral/plastitanium/red/nitrogen{ icon_state = "plastitanium" }, @@ -262,15 +261,13 @@ /turf/template_noop, /area/template_noop) "yO" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/ruin/space/powered) "Ao" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /obj/structure/fans/tiny, /turf/simulated/floor/plating/nitrogen, /area/ruin/space/powered) diff --git a/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm index 01d7fe114ff1..2632008b7078 100644 --- a/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm +++ b/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm @@ -870,8 +870,8 @@ /obj/item/clothing/suit/armor/vest, /obj/item/clothing/accessory/storage/black_vest, /obj/structure/alien/weeds, -/obj/item/storage/box/buck, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/alien/resin, /turf/simulated/floor/wood/oak, /area/awaymission/BMPship/Armory) @@ -3694,8 +3694,8 @@ /obj/item/clothing/suit/armor/vest, /obj/item/clothing/accessory/storage/black_vest, /obj/structure/alien/weeds, -/obj/item/storage/box/buck, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/alien/resin, /turf/simulated/floor/wood/oak, /area/awaymission/BMPship/Armory) diff --git a/_maps/map_files220/RandomZLevels/blackmesa.dmm b/_maps/map_files220/RandomZLevels/blackmesa.dmm index 74c0c4d5c9ef..5085606e7c13 100644 --- a/_maps/map_files220/RandomZLevels/blackmesa.dmm +++ b/_maps/map_files220/RandomZLevels/blackmesa.dmm @@ -10099,7 +10099,7 @@ "mpu" = ( /obj/machinery/door_control/shutter/east{ id = "nihi"; - req_one_access_txt = "271" + req_access = list(271) }, /turf/simulated/floor/vault{ icon_state = "alienvault" diff --git a/_maps/map_files220/RandomZLevels/caves.dmm b/_maps/map_files220/RandomZLevels/caves.dmm index 52637e5ab819..689743ab5bbc 100644 --- a/_maps/map_files220/RandomZLevels/caves.dmm +++ b/_maps/map_files220/RandomZLevels/caves.dmm @@ -8151,10 +8151,6 @@ }, /turf/simulated/floor/engine/cult/lavaland_air, /area/awaymission/caves) -"RX" = ( -/obj/machinery/hydroponics/soil, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaymission/caves) "RY" = ( /turf/simulated/floor/plasteel/lavaland_air, /area/awaymission/caves) @@ -9730,9 +9726,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/awaymission/caves) -"ZJ" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaymission/caves) "ZL" = ( /obj/machinery/door/airlock/hatch, /turf/simulated/floor/plating/lavaland_air, @@ -10741,7 +10734,7 @@ LU LU LU LU -RX +EN SV LU va @@ -10972,265 +10965,265 @@ LU LU LU LU -RX -dX -dX -sm -hu -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -"} -(7,1,1) = {" -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -En -En -En -LU -LU -RX -ZJ -ZJ -ZJ -NX -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU +EN +dX +dX +sm +hu +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +"} +(7,1,1) = {" +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +En +En +En +LU +LU +EN +dX +dX +dX +NX +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU LU LU yS @@ -11436,9 +11429,9 @@ II En En LU -RX +EN uy -ZJ +dX En En En @@ -11698,9 +11691,9 @@ LU LU LU LU -ZJ -ZJ -ZJ +dX +dX +dX LU LU LU @@ -11755,11 +11748,11 @@ TK TK Cb Cb -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX Cb TK TK @@ -11929,9 +11922,9 @@ TK TK TK LU -ZJ -ZJ -ZJ +dX +dX +dX LU LU LU @@ -11974,23 +11967,23 @@ TK TK TK TK -ZJ +dX Te TK TK -ZJ +dX sr sr -ZJ +dX sr TK TK TK TK TK -ZJ +dX sr -ZJ +dX TK TK TK @@ -11999,7 +11992,7 @@ TK TK TK TK -ZJ +dX sr TK TK @@ -12163,8 +12156,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK LU LU @@ -12187,9 +12180,9 @@ LU LU LU LU -ZJ +dX LU -ZJ +dX LU LU LU @@ -12215,19 +12208,19 @@ TK TK sr sr -ZJ +dX TK TK TK -ZJ +dX sr sr -ZJ +dX TK TK TK sr -ZJ +dX sr Te TK @@ -12235,7 +12228,7 @@ TK sr sr sr -ZJ +dX TK TK LU @@ -12264,10 +12257,10 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -12300,7 +12293,7 @@ TK TK TK TK -ZJ +dX Aq TK TK @@ -12396,7 +12389,7 @@ TK TK TK TK -ZJ +dX TK LU LU @@ -12417,11 +12410,11 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX va LU LU @@ -12439,34 +12432,34 @@ TK TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr sr -ZJ -ZJ -ZJ +dX +dX +dX sr hQ -ZJ +dX sr sr sr sr sr sr -ZJ -ZJ +dX +dX Te TK TK sr -ZJ +dX TK TK TK @@ -12489,19 +12482,19 @@ TK TK TK Sx -ZJ +dX bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -12530,10 +12523,10 @@ TK TK TK TK -ZJ +dX Gc -ZJ -ZJ +dX +dX TK TK TK @@ -12627,8 +12620,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -12648,14 +12641,14 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX LU LU LU @@ -12675,17 +12668,17 @@ Te sr TK TK -ZJ +dX Te TK -ZJ +dX PF sr -ZJ +dX sr sr -ZJ -ZJ +dX +dX TK TK TK @@ -12698,7 +12691,7 @@ TK TK sr sr -ZJ +dX TK TK TK @@ -12720,20 +12713,20 @@ LU TK TK TK -ZJ +dX Sl bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -12742,7 +12735,7 @@ Ez kD NY Kp -ZJ +dX gO CL CL @@ -12763,10 +12756,10 @@ TK TK TK xz -ZJ +dX Tr PG -ZJ +dX TK TK TK @@ -12859,7 +12852,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -12880,15 +12873,15 @@ LU LU LU nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ -ZJ +dX +dX +dX LU LU TK @@ -12904,20 +12897,20 @@ TK TK TK TK -ZJ +dX sr sr sr TK -ZJ +dX sr sr sr sr sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK sr @@ -12925,11 +12918,11 @@ sr sr sr sr -ZJ -ZJ +dX +dX sr sr -ZJ +dX sr sr TK @@ -12952,20 +12945,20 @@ LU TK TK TK -ZJ +dX TK bO bO bO -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK @@ -12973,11 +12966,11 @@ va aV yw yw -ZJ -ZJ +dX +dX gc Aq -ZJ +dX nx dU EZ @@ -12996,9 +12989,9 @@ TK TK TK cO -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -13091,8 +13084,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -13118,8 +13111,8 @@ nu nu nu nu -ZJ -ZJ +dX +dX LU LU LU @@ -13138,7 +13131,7 @@ TK TK TK nx -ZJ +dX Te TK sr @@ -13149,7 +13142,7 @@ sr sr TK TK -ZJ +dX Cb TK sr @@ -13158,9 +13151,9 @@ sr sr sr sr -ZJ +dX TK -ZJ +dX sr TK sr @@ -13197,14 +13190,14 @@ TK TK TK TK -ZJ +dX TK -ZJ +dX Aq -ZJ +dX gO aV -ZJ +dX kD VD WW @@ -13324,8 +13317,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK LU @@ -13349,12 +13342,12 @@ kD Ja nu nu -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX LU LU TK @@ -13369,10 +13362,10 @@ TK TK TK TK -ZJ +dX TK TK -ZJ +dX sr sr sr @@ -13382,7 +13375,7 @@ sr TK TK Cb -ZJ +dX TK TK TK @@ -13429,25 +13422,25 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX gc -ZJ -ZJ +dX +dX Aq bO bO Xn bO -ZJ +dX nx SB fz gc -ZJ +dX bO bO bO @@ -13532,7 +13525,7 @@ va sm sm va -ZJ +dX TK TK TK @@ -13557,7 +13550,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -13580,12 +13573,12 @@ VD kD nu nu -ZJ -ZJ -ZJ +dX +dX +dX hu -ZJ -ZJ +dX +dX Aq LU LU @@ -13601,8 +13594,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX sr sr sr @@ -13611,14 +13604,14 @@ sr sr sr sr -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX Te TK TK @@ -13667,7 +13660,7 @@ TK TK TK wr -ZJ +dX aV bO bO @@ -13693,7 +13686,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -13756,14 +13749,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -13788,8 +13781,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK LU @@ -13813,12 +13806,12 @@ VD ee aP cH -ZJ +dX nx -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU TK @@ -13833,22 +13826,22 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr sr sr sr sr -ZJ -ZJ +dX +dX sr sr -ZJ +dX TK -ZJ +dX TK TK TK @@ -13888,8 +13881,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -13908,7 +13901,7 @@ bO bO bO bO -ZJ +dX aV bO bO @@ -13922,11 +13915,11 @@ TK TK TK bO -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -13991,11 +13984,11 @@ TK TK BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -14016,11 +14009,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK @@ -14045,12 +14038,12 @@ VD nu kF Ki -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU -ZJ +dX LU LU TK @@ -14062,7 +14055,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -14074,17 +14067,17 @@ sr sr sr sr -ZJ +dX sr sr -ZJ +dX PF sr sr sr sr hQ -ZJ +dX TK TK TK @@ -14120,10 +14113,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -14141,7 +14134,7 @@ bO bO bO aV -ZJ +dX bO bO bO @@ -14156,10 +14149,10 @@ bO bO bO Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -14225,8 +14218,8 @@ BH BH BH TK -ZJ -ZJ +dX +dX TK TK TK @@ -14249,9 +14242,9 @@ TK TK TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -14275,15 +14268,15 @@ nu Nm nu nu -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX va -ZJ -ZJ -ZJ +dX +dX +dX LU TK TK @@ -14306,15 +14299,15 @@ sr sr sr ri -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK sr -ZJ +dX sr sr sr @@ -14353,11 +14346,11 @@ Ot Ot Ot Ot -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -14371,10 +14364,10 @@ bO bO bO EW -ZJ +dX kD aV -ZJ +dX bO bO bO @@ -14388,11 +14381,11 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -14457,8 +14450,8 @@ TK BH TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -14476,12 +14469,12 @@ TK TK TK TK -ZJ +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -14507,15 +14500,15 @@ VD VD kD BW -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX LU TK TK @@ -14524,10 +14517,10 @@ TK TK TK nx -ZJ +dX TK -ZJ -ZJ +dX +dX sr sr sr @@ -14540,16 +14533,16 @@ hQ ri sr sr -ZJ -ZJ +dX +dX TK TK TK TK sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -14587,9 +14580,9 @@ yN Ot Ot Ot -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -14601,12 +14594,12 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX kD -ZJ -ZJ +dX +dX bO bO bO @@ -14618,13 +14611,13 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -14684,14 +14677,14 @@ TK TK TK TK -ZJ +dX BH BH BH TK -ZJ +dX Xq -ZJ +dX Aq BH BH @@ -14708,15 +14701,15 @@ BH BH BH Aq -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK @@ -14739,28 +14732,28 @@ kD kD kD KX -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -TK -TK -TK -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +TK +TK +TK +dX +dX +dX iH -ZJ +dX va -ZJ +dX sr sr PF @@ -14769,15 +14762,15 @@ sr sr sr sr -ZJ +dX ri -ZJ +dX sr -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX sr TK TK @@ -14819,10 +14812,10 @@ Wt zU KZ Ot -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK bO @@ -14835,10 +14828,10 @@ Zj Zj kG kG -ZJ +dX kD kD -ZJ +dX bO bO bO @@ -14850,12 +14843,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -14915,16 +14908,16 @@ TK TK TK TK -ZJ +dX BH BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -14939,18 +14932,18 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -14972,26 +14965,26 @@ Nm nu nu nx -ZJ -ZJ -ZJ +dX +dX +dX LU -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU TK -ZJ +dX TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr sr @@ -15000,16 +14993,16 @@ sr sr sr sr -ZJ +dX sr sr sr sr sr -ZJ +dX TK TK -ZJ +dX sr Te TK @@ -15052,14 +15045,14 @@ Ot Ot Ot fF -ZJ +dX tK -ZJ +dX TK bO bO TK -ZJ +dX aV kG Is @@ -15070,11 +15063,11 @@ kG Aq VD kD -ZJ +dX bO -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -15082,12 +15075,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -15154,8 +15147,8 @@ BH BH BH Aq -ZJ -ZJ +dX +dX BH BH BH @@ -15173,16 +15166,16 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK LU LU @@ -15203,13 +15196,13 @@ nu kD VD nu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU -ZJ -ZJ +dX +dX nx LU LU @@ -15218,11 +15211,11 @@ hu TK TK TK -ZJ +dX TK TK TK -ZJ +dX sr sr sr @@ -15233,16 +15226,16 @@ sr sr sr PF -ZJ -ZJ +dX +dX sr -ZJ +dX sr sr -ZJ -ZJ +dX +dX sr -ZJ +dX TK TK TK @@ -15299,10 +15292,10 @@ KP MA xV kG -ZJ +dX VD kD -ZJ +dX TK TK TK @@ -15314,12 +15307,12 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ -ZJ +dX +dX TK TK TK @@ -15386,7 +15379,7 @@ BH BH BH BH -ZJ +dX mf BH BH @@ -15406,14 +15399,14 @@ BH BH BH BH -ZJ -ZJ +dX +dX nx -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -15436,21 +15429,21 @@ kD VD jX Xx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX LU LU TK nx -ZJ +dX TK TK -ZJ +dX TK TK TK @@ -15463,13 +15456,13 @@ sr sr sr sr -ZJ +dX sr -ZJ +dX va sr -ZJ -ZJ +dX +dX sr sr sr @@ -15531,10 +15524,10 @@ nE fa WG kG -ZJ -ZJ +dX +dX kD -ZJ +dX TK TK TK @@ -15547,12 +15540,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -15618,18 +15611,18 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH -ZJ +dX BH BH BH @@ -15639,13 +15632,13 @@ BH BH BH TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -15668,18 +15661,18 @@ VD kD nu nu -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX LU LU TK TK -ZJ +dX TK TK sr @@ -15694,17 +15687,17 @@ sr sr hQ sr -ZJ -ZJ +dX +dX sr -ZJ +dX nx sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK sr @@ -15766,7 +15759,7 @@ kG Cx VD kD -ZJ +dX TK TK TK @@ -15779,10 +15772,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -15850,19 +15843,19 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH -ZJ -ZJ +dX +dX BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -15872,11 +15865,11 @@ BH BH BH TK -ZJ -ZJ +dX +dX Aq TK -ZJ +dX TK TK TK @@ -15901,18 +15894,18 @@ kD Ja nu nu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ +dX LU LU TK TK -ZJ -ZJ +dX +dX sr sr sr @@ -15938,7 +15931,7 @@ TK sr sr TK -ZJ +dX sr sr TK @@ -15979,8 +15972,8 @@ AR nK lZ Ot -ZJ -ZJ +dX +dX TK TK bO @@ -15998,7 +15991,7 @@ Kw NY kD kD -ZJ +dX TK TK TK @@ -16013,8 +16006,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -16071,7 +16064,7 @@ TK TK UI Hh -ZJ +dX BH BH BH @@ -16083,17 +16076,17 @@ BH BH BH mf -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH BH BH -ZJ -ZJ +dX +dX nx BH BH @@ -16104,12 +16097,12 @@ BH BH BH TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK LU @@ -16134,11 +16127,11 @@ nu nu nu nu -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX LU TK TK @@ -16170,8 +16163,8 @@ TK sr sr TK -ZJ -ZJ +dX +dX TK TK TK @@ -16211,7 +16204,7 @@ mN Ot Ot Ot -ZJ +dX TK TK TK @@ -16230,7 +16223,7 @@ kG AW kD kD -ZJ +dX TK TK Bu @@ -16247,7 +16240,7 @@ TK nX nX nX -ZJ +dX TK TK TK @@ -16302,7 +16295,7 @@ TK TK mz mz -ZJ +dX ms BH BH @@ -16313,7 +16306,7 @@ mz BH BH BH -ZJ +dX Xq BH BH @@ -16321,13 +16314,13 @@ BH BH BH BH -ZJ +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -16335,14 +16328,14 @@ BH BH BH BH -ZJ -ZJ +dX +dX nx -ZJ +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -16360,16 +16353,16 @@ LU LU LU nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU TK @@ -16397,12 +16390,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx -ZJ +dX TK TK TK @@ -16441,9 +16434,9 @@ Ot Ot Ot Ot -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO @@ -16462,7 +16455,7 @@ kG Lr kD VD -ZJ +dX Pb mc mc @@ -16535,30 +16528,30 @@ TK TK mz Xq -ZJ +dX BH fc BH mz Xq Xq -ZJ +dX BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH Aq -ZJ +dX BH BH BH @@ -16567,13 +16560,13 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -16592,14 +16585,14 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX va LU LU @@ -16621,17 +16614,17 @@ TK TK TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK @@ -16639,7 +16632,7 @@ TK TK TK Te -ZJ +dX TK PF TK @@ -16664,15 +16657,15 @@ LU TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -16684,7 +16677,7 @@ TK TK yK kD -ZJ +dX kG Ok LH @@ -16694,10 +16687,10 @@ kG Lr kD kD -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Pb mc TK @@ -16755,7 +16748,7 @@ mz mz YZ mz -ZJ +dX mz mz TK @@ -16766,7 +16759,7 @@ TK TK TK TK -ZJ +dX Aq zW BH @@ -16777,16 +16770,16 @@ Aq BH BH BH -ZJ +dX nx -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH -ZJ +dX BH BH BH @@ -16798,13 +16791,13 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -16825,12 +16818,12 @@ LU LU LU LU -ZJ -ZJ +dX +dX Aq -ZJ +dX LU -ZJ +dX LU LU LU @@ -16849,21 +16842,21 @@ TK TK sr nx -ZJ +dX sr TK -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK @@ -16873,7 +16866,7 @@ TK TK sr sr -ZJ +dX sr sr TK @@ -16896,15 +16889,15 @@ LU TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ +dX TK TK TK @@ -16913,7 +16906,7 @@ bO TK TK TK -ZJ +dX yK kD aV @@ -16926,10 +16919,10 @@ kG Lr uP kD -ZJ -ZJ +dX +dX Aq -ZJ +dX kG kG kG @@ -16988,7 +16981,7 @@ mz Dv mz mz -ZJ +dX TK TK TK @@ -16997,8 +16990,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX BH BH BH @@ -17008,14 +17001,14 @@ mz BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX ms -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -17029,14 +17022,14 @@ BH BH BH BH -ZJ +dX BH BH BH BH BH -ZJ -ZJ +dX +dX BH TK TK @@ -17058,8 +17051,8 @@ LU LU LU LU -ZJ -ZJ +dX +dX LU LU LU @@ -17085,18 +17078,18 @@ sr sr TK sr -ZJ +dX sr -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -17106,8 +17099,8 @@ TK TK sr TK -ZJ -ZJ +dX +dX sr Te LU @@ -17128,15 +17121,15 @@ LU TK TK TK -ZJ +dX Aq -ZJ +dX bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -17158,10 +17151,10 @@ kG Lr kD kD -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX kG gq Fx @@ -17230,7 +17223,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -17240,15 +17233,15 @@ BH BH BH Es -ZJ +dX Xq Xq Xq cT Xq -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -17259,18 +17252,18 @@ BH BH BH BH -ZJ +dX BH BH BH -ZJ +dX BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH -ZJ +dX TK LU LU @@ -17316,13 +17309,13 @@ PF sr TK TK -ZJ +dX sr hQ -ZJ +dX TK TK -ZJ +dX TK TK TK @@ -17335,10 +17328,10 @@ TK sr sr sr -ZJ -ZJ +dX +dX TK -ZJ +dX sr sr sr @@ -17362,7 +17355,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -17383,17 +17376,17 @@ kD NY TX Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Lr NY -ZJ +dX gO -ZJ +dX va -ZJ +dX kG gq Od @@ -17408,7 +17401,7 @@ TK TK TK TK -ZJ +dX Aq TK TK @@ -17451,7 +17444,7 @@ LU mz jm mz -ZJ +dX Dv ml sz @@ -17462,7 +17455,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -17471,17 +17464,17 @@ BH BH BH BH -ZJ +dX RU Xq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX fc -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -17494,15 +17487,15 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH -ZJ -ZJ +dX +dX LU LU LU @@ -17554,25 +17547,25 @@ sr sr TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK sr sr -ZJ -ZJ +dX +dX sr hQ -ZJ +dX TK LU LU @@ -17594,9 +17587,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -17623,9 +17616,9 @@ Lt kD aV gc -ZJ -ZJ -ZJ +dX +dX +dX kG ED NP @@ -17634,14 +17627,14 @@ tW gq kG mc -ZJ +dX TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -17684,10 +17677,10 @@ mz Gi mz ml -ZJ +dX bK Dv -ZJ +dX nx In TK @@ -17702,18 +17695,18 @@ BH BH BH BH -ZJ +dX Xq mf Xq -ZJ +dX Xq -ZJ +dX mf -ZJ +dX Xq mf -ZJ +dX BH BH BH @@ -17724,16 +17717,16 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK LU TK @@ -17766,7 +17759,7 @@ aT sr sr TK -ZJ +dX TK TK TK @@ -17787,11 +17780,11 @@ sr TK TK ap -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -17801,9 +17794,9 @@ TK TK PF sr -ZJ +dX sr -ZJ +dX TK TK LU @@ -17828,8 +17821,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -17840,8 +17833,8 @@ bO TK TK TK -ZJ -ZJ +dX +dX yK kD NY @@ -17866,14 +17859,14 @@ tW Od kG mc -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -17935,18 +17928,18 @@ BH mz rN Xq -ZJ +dX mz Xq Xq mz mz mz -ZJ -ZJ +dX +dX Xq -ZJ -ZJ +dX +dX BH BH BH @@ -17955,16 +17948,16 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX LU LU TK @@ -17998,17 +17991,17 @@ TK TK TK sr -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX iH TK -ZJ -ZJ +dX +dX sr TK TK @@ -18017,10 +18010,10 @@ sr sr sr TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK sr TK @@ -18032,10 +18025,10 @@ sr sr sr sr -ZJ +dX Te TK -ZJ +dX sr TK LU @@ -18061,8 +18054,8 @@ bO TK TK TK -ZJ -ZJ +dX +dX TK bO bO @@ -18079,7 +18072,7 @@ NY jY gc fF -ZJ +dX kD kD kD @@ -18098,14 +18091,14 @@ NJ Kl kG Pb -ZJ -ZJ -ZJ +dX +dX +dX ko -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -18148,8 +18141,8 @@ TK TK mz Bl -ZJ -ZJ +dX +dX Dv mz mz @@ -18165,7 +18158,7 @@ BH mz mz mz -ZJ +dX fD mz mz @@ -18175,27 +18168,27 @@ mz mz mz mz -ZJ +dX kf -ZJ -ZJ +dX +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH -ZJ +dX LU LU LU @@ -18227,20 +18220,20 @@ TK TK aT sr -ZJ -ZJ +dX +dX sr hQ -ZJ +dX TK TK -ZJ +dX TK TK -ZJ +dX TK TK -ZJ +dX sr sr TK @@ -18252,9 +18245,9 @@ TK sr hQ sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -18263,8 +18256,8 @@ TK Te TK TK -ZJ -ZJ +dX +dX TK sr sr @@ -18294,9 +18287,9 @@ bO bO TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO @@ -18310,11 +18303,11 @@ kD kD aV Aq -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX FY vo vo @@ -18329,15 +18322,15 @@ Ej NJ Kl kG -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX WJ -ZJ -ZJ +dX +dX TK TK TK @@ -18386,18 +18379,18 @@ wQ mz TK VX -ZJ -ZJ +dX +dX Xq mz mz mz -ZJ +dX fD fD iF Xq -ZJ +dX mz mz mz @@ -18408,24 +18401,24 @@ HG HG mz kf -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH fD iF Xq -ZJ -ZJ +dX +dX nx -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH -ZJ +dX BH BH mz @@ -18461,16 +18454,16 @@ TK TK aT PF -ZJ +dX sr nx TK -ZJ -ZJ +dX +dX TK TK va -ZJ +dX TK TK TK @@ -18481,13 +18474,13 @@ sr sr sr TK -ZJ -ZJ +dX +dX sr sr TK -ZJ -ZJ +dX +dX TK TK TK @@ -18495,12 +18488,12 @@ TK TK TK TK -ZJ +dX sr sr -ZJ +dX sr -ZJ +dX TK LU LU @@ -18526,8 +18519,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -18540,10 +18533,10 @@ kD kD kD aV -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX kG EE HY @@ -18561,15 +18554,15 @@ MH MH kG kG -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -18619,7 +18612,7 @@ TK TK TK Xq -ZJ +dX UI Se iF @@ -18629,7 +18622,7 @@ Xq Xq Xq IX -ZJ +dX tZ mz HG @@ -18640,12 +18633,12 @@ HG kf EM kf -ZJ -ZJ -ZJ +dX +dX +dX Xq Xq -ZJ +dX Xq Xq IX @@ -18656,8 +18649,8 @@ Xq IX Xq Xq -ZJ -ZJ +dX +dX EZ Aq mz @@ -18689,19 +18682,19 @@ TK TK TK TK -ZJ +dX TK sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK Aq -ZJ +dX TK -ZJ -ZJ +dX +dX sr TK TK @@ -18713,10 +18706,10 @@ sr sr TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK sr @@ -18726,10 +18719,10 @@ TK TK sr Te -ZJ +dX va -ZJ -ZJ +dX +dX sr sr sr @@ -18758,24 +18751,24 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK cF NY kD NY -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ +dX kG lp JC @@ -18793,14 +18786,14 @@ KY kD Xy WW -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX cO TK TK @@ -18849,19 +18842,19 @@ TK TK TK TK -ZJ +dX ET vI -ZJ +dX Se RV rN Hw Xq RU -ZJ +dX nx -ZJ +dX mz mz HG @@ -18871,10 +18864,10 @@ kf kf EM HG -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX sV Xq Xq @@ -18884,8 +18877,8 @@ Xq Hw Xq RU -ZJ -ZJ +dX +dX fD fD iF @@ -18922,20 +18915,20 @@ sr TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK @@ -18946,23 +18939,23 @@ sr TK TK nx -ZJ +dX va -ZJ +dX TK TK sr -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr TK TK @@ -18991,8 +18984,8 @@ bO bO TK TK -ZJ -ZJ +dX +dX TK qY vJ @@ -19004,10 +18997,10 @@ lt gc TK TK -ZJ +dX bO -ZJ -ZJ +dX +dX mC FJ NS @@ -19018,22 +19011,22 @@ HM rp kD NY -ZJ -ZJ +dX +dX VD kD kD wZ -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -19083,17 +19076,17 @@ TK nF mf ET -ZJ -ZJ +dX +dX mz mz BH sV In mz -ZJ +dX fi -ZJ +dX mz mz HG @@ -19103,24 +19096,24 @@ kf HG HG HG -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx Xq BH BH BH -ZJ +dX sV In BH -ZJ +dX fi Xq -ZJ -ZJ +dX +dX wQ Bw iC @@ -19151,18 +19144,18 @@ sr sr sr sr -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK @@ -19178,11 +19171,11 @@ sr TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK nx TK @@ -19190,7 +19183,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -19224,8 +19217,8 @@ bO bO TK TK -ZJ -ZJ +dX +dX cF kD kD @@ -19236,9 +19229,9 @@ Pb TK TK TK -ZJ +dX bO -ZJ +dX bO kG jA @@ -19249,21 +19242,21 @@ wh HM pt kD -ZJ +dX Aq -ZJ -ZJ +dX +dX VD jC wZ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX rB TK TK @@ -19314,7 +19307,7 @@ TK TK Xq UI -ZJ +dX hH mz mz @@ -19325,7 +19318,7 @@ mz mz BH BH -ZJ +dX mz mz mz @@ -19336,22 +19329,22 @@ HG HG mz kf -ZJ -ZJ -ZJ +dX +dX +dX Xq BH BH BH BH BH -ZJ +dX BH BH BH BH -ZJ -ZJ +dX +dX wQ nx mB @@ -19380,27 +19373,27 @@ TK TK TK TK -ZJ +dX sr hQ sr -ZJ +dX TK TK TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK Aq -ZJ +dX TK TK TK @@ -19411,23 +19404,23 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX sr TK LU @@ -19467,8 +19460,8 @@ kD Pb TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -19482,21 +19475,21 @@ kI rp kD NY -ZJ -ZJ +dX +dX VD kD kD wE -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX Aq -ZJ +dX TK TK TK @@ -19544,12 +19537,12 @@ TK mz mz mz -ZJ +dX mz mz mz mz -ZJ +dX mz BH BH @@ -19557,8 +19550,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX mz mz mz @@ -19567,22 +19560,22 @@ mz mz mz mz -ZJ +dX UP -ZJ -ZJ +dX +dX BH BH BH BH BH BH -ZJ +dX BH BH BH BH -ZJ +dX BH BH BH @@ -19624,16 +19617,16 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -19641,15 +19634,15 @@ sr sr TK TK -ZJ +dX TK -ZJ +dX Aq TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -19660,7 +19653,7 @@ TK TK TK TK -ZJ +dX TK LU LU @@ -19681,7 +19674,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -19699,8 +19692,8 @@ mc mc TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -19714,21 +19707,21 @@ kG Ea kD NY -ZJ +dX gc kD kD kD wZ gc -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX rB TK TK @@ -19775,13 +19768,13 @@ tZ tm mz EZ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX In mz -ZJ +dX mz BH BH @@ -19790,18 +19783,18 @@ BH BH BH BH -ZJ -ZJ +dX +dX mz mz mz mz mz mz -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -19809,8 +19802,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX Aq BH BH @@ -19848,10 +19841,10 @@ sr sr sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX sr TK TK @@ -19860,11 +19853,11 @@ TK sr TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX sr TK TK @@ -19872,27 +19865,27 @@ TK sr TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX TK LU LU @@ -19912,8 +19905,8 @@ LU TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -19931,11 +19924,11 @@ TK TK TK TK -ZJ +dX bO bO bO -ZJ +dX kG he JC @@ -19956,11 +19949,11 @@ mJ Ro NF Lv -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -20006,14 +19999,14 @@ mz Xq nF mz -ZJ -ZJ +dX +dX UI Zv -ZJ +dX nU TK -ZJ +dX mz BH BH @@ -20026,14 +20019,14 @@ Xq Xq mf BH -ZJ +dX mf ms -ZJ +dX Bs Xq -ZJ -ZJ +dX +dX BH BH BH @@ -20043,15 +20036,15 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH BH BH BH -ZJ +dX LU TK TK @@ -20083,8 +20076,8 @@ sr sr sr sr -ZJ -ZJ +dX +dX sr TK TK @@ -20092,39 +20085,39 @@ TK sr TK TK -ZJ +dX nx TK TK TK -ZJ -ZJ +dX +dX TK sr sr TK Aq -ZJ +dX sr TK TK TK -ZJ +dX sr sr TK TK TK -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX sr TK Te TK -ZJ +dX TK LU LU @@ -20163,11 +20156,11 @@ TK TK TK TK -ZJ +dX bO Aq -ZJ -ZJ +dX +dX kG ir JC @@ -20188,11 +20181,11 @@ kD kD Sb fo -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -20238,7 +20231,7 @@ mz EZ mz mz -ZJ +dX ET GB TK @@ -20256,15 +20249,15 @@ Aq BH BH mf -ZJ +dX BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH @@ -20276,8 +20269,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -20316,39 +20309,39 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK sr TK -ZJ -ZJ +dX +dX sr -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -20389,17 +20382,17 @@ TK Lv aV aV -ZJ +dX TK TK TK TK TK -ZJ +dX bO bO bO -ZJ +dX kG lx JC @@ -20409,14 +20402,14 @@ mC kG Ts kD -ZJ -ZJ +dX +dX Jz kD kD kD NY -ZJ +dX kD hP SB @@ -20424,7 +20417,7 @@ Aq TK TK TK -ZJ +dX TK TK TK @@ -20468,10 +20461,10 @@ TK TK TK nx -ZJ -ZJ +dX +dX mf -ZJ +dX TK TK TK @@ -20484,18 +20477,18 @@ BH mz Xq Dc -ZJ +dX mz BH BH mf BH BH -ZJ +dX mf -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -20507,9 +20500,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -20543,7 +20536,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -20553,41 +20546,41 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX sr TK TK TK TK -ZJ +dX sr sr TK -ZJ +dX sr sr -ZJ +dX TK TK TK -ZJ +dX nx -ZJ -ZJ +dX +dX iH -ZJ +dX va -ZJ +dX TK TK TK sr TK -ZJ -ZJ +dX +dX sr TK LU @@ -20620,7 +20613,7 @@ bO bO bO Mq -ZJ +dX TK TK TK @@ -20629,7 +20622,7 @@ bO bO bO bO -ZJ +dX bO bO kG @@ -20641,7 +20634,7 @@ Po kG rp kD -ZJ +dX Qn Ic VD @@ -20701,20 +20694,20 @@ TK TK TK Xq -ZJ +dX Xq -ZJ +dX mz -ZJ -ZJ +dX +dX TK -ZJ +dX nx In Xq Xq BH -ZJ +dX UI mo mz @@ -20722,11 +20715,11 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX nx -ZJ +dX BH BH BH @@ -20738,18 +20731,18 @@ BH BH BH BH -ZJ +dX BH BH -ZJ +dX BH BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -20773,54 +20766,54 @@ TK Te TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ -ZJ +dX +dX TK TK TK hQ -ZJ -ZJ +dX +dX sr sr -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK -ZJ +dX sr -ZJ +dX sr -ZJ +dX Te LU LU @@ -20848,22 +20841,22 @@ bO bO TK TK -ZJ +dX Aq bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX kG Nx JC @@ -20881,7 +20874,7 @@ Km tC nu CL -ZJ +dX SB fC nx @@ -20930,22 +20923,22 @@ Xq mz TK nx -ZJ +dX nx -ZJ -ZJ -ZJ +dX +dX +dX mz mz mz -ZJ -ZJ +dX +dX EZ mz mz BH rv -ZJ +dX Xq Xq mz @@ -20954,10 +20947,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -20970,10 +20963,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -20981,7 +20974,7 @@ BH BH nx BH -ZJ +dX TK LU LU @@ -21001,36 +20994,36 @@ LU LU TK TK -ZJ +dX sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ +dX ap -ZJ +dX TK TK TK TK -ZJ +dX TK sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ +dX TK TK TK @@ -21047,11 +21040,11 @@ sr sr TK TK -ZJ +dX PF sr TK -ZJ +dX sr TK LU @@ -21081,13 +21074,13 @@ TK TK TK TK -ZJ +dX bO -ZJ -ZJ +dX +dX bO bO -ZJ +dX TK TK TK @@ -21095,7 +21088,7 @@ TK TK TK TK -ZJ +dX kG cX Tu @@ -21105,7 +21098,7 @@ PZ kG rp kD -ZJ +dX nu nu Lq @@ -21162,7 +21155,7 @@ Xq mz mz mz -ZJ +dX Xq mz mz @@ -21171,9 +21164,9 @@ mz da mz Xq -ZJ -ZJ -ZJ +dX +dX +dX mz BH BH @@ -21186,10 +21179,10 @@ BH BH BH BH -ZJ +dX Aq -ZJ -ZJ +dX +dX BH BH BH @@ -21204,7 +21197,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -21212,7 +21205,7 @@ BH BH BH BH -ZJ +dX TK TK LU @@ -21234,35 +21227,35 @@ LU TK TK TK -ZJ +dX PF -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK nx -ZJ +dX sr -ZJ +dX TK TK TK TK TK -ZJ +dX va TK -ZJ -ZJ +dX +dX TK TK TK @@ -21281,7 +21274,7 @@ sr sr sr sr -ZJ +dX TK TK sr @@ -21315,8 +21308,8 @@ TK TK TK bO -ZJ -ZJ +dX +dX bO bO bO @@ -21327,7 +21320,7 @@ TK TK TK TK -ZJ +dX kG kI HY @@ -21337,7 +21330,7 @@ kG kG rp kD -ZJ +dX nu XZ Pj @@ -21345,7 +21338,7 @@ Pj Pj bt nu -ZJ +dX Aq nx TK @@ -21396,32 +21389,32 @@ TK mz mz Xq -ZJ -ZJ +dX +dX Xq -ZJ +dX cB Wk mf TK mz -ZJ +dX TK BH BH mz BH -ZJ +dX Xq -ZJ +dX BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX BH BH BH @@ -21468,41 +21461,41 @@ TK sr sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK ap -ZJ -ZJ +dX +dX Aq -ZJ +dX sr TK TK TK -ZJ +dX TK TK TK @@ -21512,11 +21505,11 @@ TK TK sr sr -ZJ +dX TK TK TK -ZJ +dX Te LU LU @@ -21540,10 +21533,10 @@ bO bO bO bO -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK Ck @@ -21559,9 +21552,9 @@ TK TK TK TK -ZJ +dX BY -ZJ +dX av dA Ro @@ -21569,7 +21562,7 @@ Ro Ro jW kD -ZJ +dX nu XZ Pj @@ -21577,7 +21570,7 @@ Pj Pj XZ nu -ZJ +dX TK TK TK @@ -21627,15 +21620,15 @@ mz TK TK mz -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX mf lc An -ZJ -ZJ +dX +dX mz mz TK @@ -21644,16 +21637,16 @@ BH BH BH mz -ZJ +dX BH BH BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -21675,7 +21668,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -21698,35 +21691,35 @@ LU TK sr hQ -ZJ -ZJ +dX +dX TK TK TK sr sr TK -ZJ -ZJ +dX +dX TK TK TK sr -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -21744,7 +21737,7 @@ TK TK sr TK -ZJ +dX sr TK TK @@ -21773,16 +21766,16 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX iA Ro dq NY aV -ZJ -ZJ +dX +dX TK TK bO @@ -21791,7 +21784,7 @@ bO TK TK TK -ZJ +dX bO Lv nW @@ -21801,7 +21794,7 @@ NY NY NY NY -ZJ +dX nu nu Pj @@ -21860,13 +21853,13 @@ TK TK mz mz -ZJ -ZJ +dX +dX TK mz jt mz -ZJ +dX mf Se UI @@ -21883,9 +21876,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -21907,7 +21900,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -21929,35 +21922,35 @@ LU LU Te sr -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX hQ -ZJ -ZJ +dX +dX sr sr -ZJ -ZJ +dX +dX sr TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX sr TK TK @@ -22004,16 +21997,16 @@ TK bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Lr kD kD NY kD -ZJ +dX TK TK TK @@ -22026,14 +22019,14 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX lt gc -ZJ +dX nu mc Pj @@ -22101,7 +22094,7 @@ mz mz mz mz -ZJ +dX TK TK TK @@ -22115,8 +22108,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX Aq BH BH @@ -22137,10 +22130,10 @@ BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX TK TK TK @@ -22160,22 +22153,22 @@ LU LU LU TK -ZJ +dX sr sr -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ -ZJ +dX +dX TK TK Te TK TK -ZJ -ZJ +dX +dX sr sr TK @@ -22192,16 +22185,16 @@ TK TK sr sr -ZJ +dX TK TK nx -ZJ +dX TK TK sr sr -ZJ +dX TK TK sr @@ -22235,17 +22228,17 @@ TK TK TK mc -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX Lr kD kD kD kD -ZJ +dX TK TK TK @@ -22260,12 +22253,12 @@ bO nQ Lv aV -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX nu nu bt @@ -22275,7 +22268,7 @@ nu nu TK TK -ZJ +dX nx nx RD @@ -22326,15 +22319,15 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX NI -ZJ +dX pd mz UI -ZJ +dX TK TK BH @@ -22348,8 +22341,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -22368,9 +22361,9 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH TK TK @@ -22393,13 +22386,13 @@ LU LU TK TK -ZJ -ZJ +dX +dX sr -ZJ -ZJ +dX +dX sr -ZJ +dX TK TK TK @@ -22408,14 +22401,14 @@ TK TK TK TK -ZJ +dX sr -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -22424,11 +22417,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr sr sr @@ -22443,7 +22436,7 @@ sr TK TK TK -ZJ +dX TK TK LU @@ -22468,16 +22461,16 @@ TK TK mc Pb -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX AZ kD kD Pw -ZJ -ZJ +dX +dX bO bO bO @@ -22494,9 +22487,9 @@ gc gf WR WR -ZJ +dX Aq -ZJ +dX TK TK nu @@ -22507,9 +22500,9 @@ nu TK TK TK -ZJ +dX Aq -ZJ +dX nx SB oo @@ -22557,16 +22550,16 @@ mz mz TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX sz -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK BH @@ -22580,7 +22573,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -22599,10 +22592,10 @@ BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX TK TK TK @@ -22625,40 +22618,40 @@ LU LU TK TK -ZJ -ZJ -ZJ +dX +dX +dX PF sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK -ZJ +dX Aq -ZJ -ZJ +dX +dX TK TK -ZJ +dX TK TK TK -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK sr @@ -22675,8 +22668,8 @@ sr sr TK TK -ZJ -ZJ +dX +dX TK LU LU @@ -22700,7 +22693,7 @@ TK TK TK Pb -ZJ +dX gc qi qi @@ -22726,9 +22719,9 @@ zp UM EB WR -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -22742,7 +22735,7 @@ TK TK TK TK -ZJ +dX yU kD kD @@ -22791,14 +22784,14 @@ mz mz mz Sh -ZJ +dX Ya -ZJ +dX Xq -ZJ +dX pd mz -ZJ +dX mz TK BH @@ -22810,10 +22803,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -22827,13 +22820,13 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ +dX BH -ZJ +dX BH TK TK @@ -22859,42 +22852,42 @@ TK TK TK TK -ZJ -ZJ +dX +dX sr sr -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK TK TK TK -ZJ +dX sr sr -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK -ZJ +dX sr TK TK @@ -22904,11 +22897,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX sr LU LU @@ -22952,15 +22945,15 @@ TK bO bO qj -ZJ +dX BC KL uo uJ pZ -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23022,15 +23015,15 @@ Uz ms ET ET -ZJ +dX mf Bo -ZJ +dX bK sz -ZJ +dX mz -ZJ +dX mz TK BH @@ -23043,9 +23036,9 @@ TK TK BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -23058,12 +23051,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -23091,9 +23084,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr TK @@ -23101,8 +23094,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23111,36 +23104,36 @@ TK TK TK TK -ZJ +dX TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ +dX CO -ZJ -ZJ +dX +dX sr LU LU @@ -23175,10 +23168,10 @@ Ur UH Ih gc -ZJ +dX bO bO -ZJ +dX TK TK TK @@ -23190,9 +23183,9 @@ yw zp Os pZ -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23255,14 +23248,14 @@ fc ET mf Xq -ZJ +dX mf -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX mz -ZJ +dX mz TK TK @@ -23275,9 +23268,9 @@ TK BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -23290,13 +23283,13 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23321,42 +23314,42 @@ LU LU TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK -ZJ +dX TK TK TK TK TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK sr @@ -23366,13 +23359,13 @@ TK TK TK nx -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ -ZJ +dX +dX sr LU LU @@ -23393,9 +23386,9 @@ TK TK nx lY -ZJ +dX EZ -ZJ +dX Wr qi dF @@ -23408,24 +23401,24 @@ zA LI EI nQ -ZJ +dX bO -ZJ +dX TK TK TK -ZJ +dX Ge -ZJ +dX bO -ZJ +dX aV lU gc GU -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23490,11 +23483,11 @@ hn bK TK TK -ZJ -ZJ +dX +dX pd mz -ZJ +dX mz TK BH @@ -23507,8 +23500,8 @@ TK BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -23522,12 +23515,12 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ +dX +dX BH TK TK @@ -23556,7 +23549,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -23566,26 +23559,26 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX ap -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK TK TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23598,13 +23591,13 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK LU LU @@ -23626,8 +23619,8 @@ Bu Bu nx EZ -ZJ -ZJ +dX +dX rq gc gc @@ -23638,29 +23631,29 @@ ow gc EI tP -ZJ +dX HI -ZJ +dX bO -ZJ +dX TK TK -ZJ -ZJ +dX +dX EI -ZJ +dX bO bO -ZJ +dX BC XZ Ey -ZJ +dX sm -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -23722,11 +23715,11 @@ TK TK TK pd -ZJ +dX pd -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH @@ -23738,10 +23731,10 @@ TK TK TK BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -23752,14 +23745,14 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23787,8 +23780,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23805,35 +23798,35 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK sr -ZJ +dX TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX hu nx TK @@ -23856,11 +23849,11 @@ LU TK nx lY -ZJ +dX vG -ZJ -ZJ -ZJ +dX +dX +dX gc Us bL @@ -23874,11 +23867,11 @@ bO bO bO bO -ZJ +dX TK -ZJ -ZJ -ZJ +dX +dX +dX WR aV Ki @@ -23887,13 +23880,13 @@ sq Os bt pm -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -23951,13 +23944,13 @@ mz ET mz TK -ZJ +dX sz mz mz mz -ZJ -ZJ +dX +dX TK TK BH @@ -23971,8 +23964,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23983,15 +23976,15 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -24020,8 +24013,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -24037,7 +24030,7 @@ Te TK TK TK -ZJ +dX TK TK TK @@ -24045,12 +24038,12 @@ TK TK TK TK -ZJ +dX TK TK TK va -ZJ +dX TK TK TK @@ -24058,16 +24051,16 @@ sr sr sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK LU @@ -24088,11 +24081,11 @@ LU TK TK nx -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX ZL UH UF @@ -24103,14 +24096,14 @@ aV bt bO EI -ZJ +dX bO bO TK TK TK -ZJ -ZJ +dX +dX WR fU Ki @@ -24121,25 +24114,25 @@ WR XJ TK TK -ZJ -ZJ +dX +dX Aq -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK TK bO bO -ZJ +dX Lr kD kD Pw -ZJ +dX TK TK LU @@ -24184,11 +24177,11 @@ ET mz TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK BH @@ -24217,11 +24210,11 @@ BH BH BH BH -ZJ +dX BH BH BH -ZJ +dX TK TK TK @@ -24251,10 +24244,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -24269,38 +24262,38 @@ sr TK TK TK -ZJ +dX TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK LU LU @@ -24320,11 +24313,11 @@ LU TK TK mT -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX gc hF nc @@ -24333,7 +24326,7 @@ UH eE sh Wq -ZJ +dX gc TK bO @@ -24342,12 +24335,12 @@ bO TK TK TK -ZJ +dX WR EI XZ bO -ZJ +dX EI WR Ey @@ -24356,11 +24349,11 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -24417,9 +24410,9 @@ mz TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX mz TK TK @@ -24447,13 +24440,13 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH -ZJ -ZJ +dX +dX TK TK TK @@ -24482,11 +24475,11 @@ LU TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX TK TK TK @@ -24500,39 +24493,39 @@ TK sr TK nx -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX Aq TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX va -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK LU LU @@ -24552,10 +24545,10 @@ LU TK TK TK -ZJ +dX sm -ZJ -ZJ +dX +dX ZM qi qi @@ -24574,8 +24567,8 @@ bO bO bO TK -ZJ -ZJ +dX +dX bO bO bO @@ -24589,10 +24582,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -24661,11 +24654,11 @@ TK TK hu Aq -ZJ +dX TK TK TK -ZJ +dX Aq ns ns @@ -24679,13 +24672,13 @@ BH BH BH BH -ZJ +dX BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -24713,58 +24706,58 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK TK TK TK -ZJ +dX PF -ZJ +dX TK -ZJ +dX sr -ZJ -ZJ -ZJ +dX +dX +dX sr TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK TK sr -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX sr LU LU @@ -24785,9 +24778,9 @@ TK TK EN WJ -ZJ -ZJ -ZJ +dX +dX +dX Tw gc bm @@ -24799,7 +24792,7 @@ gc am XQ qi -ZJ +dX TK TK TK @@ -24810,10 +24803,10 @@ bO bO bO bO -ZJ +dX Ey -ZJ -ZJ +dX +dX TK TK TK @@ -24822,16 +24815,16 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX bO bO bO -ZJ +dX bO yw FP @@ -24891,18 +24884,18 @@ BH TK TK TK -ZJ +dX TK -ZJ +dX ns TK TK ns -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -24914,9 +24907,9 @@ BH BH BH BH -ZJ +dX TK -ZJ +dX TK TK TK @@ -24945,24 +24938,24 @@ LU LU TK TK -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX TK TK sr sr -ZJ +dX sr -ZJ +dX TK TK hQ @@ -24972,31 +24965,31 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr sr -ZJ -ZJ +dX +dX sr -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK TK TK nx -ZJ +dX TK dU sr -ZJ +dX dU LU LU @@ -25016,10 +25009,10 @@ LU TK TK EN -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX va qi UH @@ -25031,7 +25024,7 @@ qi Gn hJ qi -ZJ +dX TK TK TK @@ -25056,9 +25049,9 @@ TK TK bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -25068,7 +25061,7 @@ bO yw ws WR -ZJ +dX TK LU LU @@ -25129,10 +25122,10 @@ sf ns TK TK -ZJ +dX TK TK -ZJ +dX ns ns TK @@ -25176,55 +25169,55 @@ LU LU LU TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX sr -ZJ +dX TK sr TK Te -ZJ +dX TK TK sr -ZJ -ZJ +dX +dX TK TK sr hQ sr sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK dU CO @@ -25263,7 +25256,7 @@ oP sw Au qi -ZJ +dX TK TK TK @@ -25289,8 +25282,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX Aq bO bO @@ -25300,7 +25293,7 @@ aV RY Jd Ge -ZJ +dX TK LU LU @@ -25356,12 +25349,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK TK @@ -25375,8 +25368,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX TK TK TK @@ -25408,12 +25401,12 @@ LU LU LU Cb -ZJ +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -25421,42 +25414,42 @@ TK TK TK TK -ZJ +dX sr -ZJ +dX Te TK sr TK -ZJ +dX sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ +dX TK TK nx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK dU sr @@ -25508,7 +25501,7 @@ TK TK TK pm -ZJ +dX TK bO bO @@ -25522,17 +25515,17 @@ bO bO bO bO -ZJ +dX bO bO bO bO bO -ZJ +dX yw bc EI -ZJ +dX TK LU LU @@ -25588,9 +25581,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK ns ns @@ -25606,8 +25599,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX TK TK TK @@ -25644,25 +25637,25 @@ TK TK TK TK -ZJ +dX TK TK TK TK TK TK -ZJ +dX TK TK hQ sr -ZJ +dX sr -ZJ +dX PF sr sr -ZJ +dX TK TK TK @@ -25672,22 +25665,22 @@ TK TK TK TK -ZJ +dX sr sr -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX hu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK nu @@ -25739,15 +25732,15 @@ bO TK TK TK -ZJ +dX bO bO bO TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -25759,12 +25752,12 @@ bO bO bO CZ -ZJ -ZJ +dX +dX yw si WR -ZJ +dX TK LU LU @@ -25834,11 +25827,11 @@ ns TK TK TK -ZJ +dX BH BH BH -ZJ +dX TK TK TK @@ -25875,7 +25868,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -25890,13 +25883,13 @@ sr TK TK sr -ZJ -ZJ +dX +dX TK ri -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -25906,8 +25899,8 @@ TK TK sr sr -ZJ -ZJ +dX +dX TK TK TK @@ -25979,7 +25972,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -25991,7 +25984,7 @@ bO bO bO bO -ZJ +dX aV UM FR @@ -26054,22 +26047,22 @@ TK TK TK TK -ZJ +dX ns hu ns ns -ZJ +dX kC TK TK TK TK TK -ZJ -ZJ +dX +dX BH -ZJ +dX TK TK TK @@ -26137,9 +26130,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -30153,10 +30146,10 @@ TK bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK Aq @@ -30372,7 +30365,7 @@ LU TK TK cO -ZJ +dX TK TK TK @@ -30383,16 +30376,16 @@ bO bO bO bO -ZJ -ZJ +dX +dX CO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -30603,19 +30596,19 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK bO bO -ZJ -ZJ +dX +dX bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -30624,10 +30617,10 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -30841,10 +30834,10 @@ TK bO bO CO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -30859,8 +30852,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK LU @@ -31071,8 +31064,8 @@ Aq TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -31083,16 +31076,16 @@ TK TK TK bO -ZJ -ZJ +dX +dX TK TK bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -31299,11 +31292,11 @@ bO TK TK Aq -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO TK @@ -31316,21 +31309,21 @@ TK TK bO bO -ZJ -ZJ +dX +dX TK TK TK bO bO bO -ZJ +dX TK TK TK LU nu -ZJ +dX Ge nu LU @@ -31530,39 +31523,39 @@ bO TK TK TK -ZJ -ZJ +dX +dX hu -ZJ +dX Aq -ZJ +dX TK TK TK TK TK TK -ZJ +dX TK -ZJ +dX TK -ZJ +dX bO bO -ZJ -ZJ +dX +dX TK TK bO bO bO -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX Kp TK LU @@ -31762,39 +31755,39 @@ bO TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO hu -ZJ +dX TK TK TK bO bO CO -ZJ +dX TK TK TK TK -ZJ +dX bO TK TK @@ -31994,26 +31987,26 @@ bO bO bO TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO -ZJ +dX TK TK TK @@ -32021,12 +32014,12 @@ TK bO bO bO -ZJ +dX TK TK Aq TK -ZJ +dX bO bO TK @@ -32224,20 +32217,20 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX CO -ZJ +dX nx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX bO bO bO @@ -32245,7 +32238,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -32253,12 +32246,12 @@ TK bO bO bO -ZJ +dX TK bO -ZJ -ZJ -ZJ +dX +dX +dX VD bO bO @@ -32307,8 +32300,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -32454,42 +32447,42 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX hu -ZJ +dX TK TK TK TK bO -ZJ -ZJ +dX +dX bO bO bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK bO bO bO -ZJ +dX bO bO sy -ZJ +dX kD Pb bO @@ -32539,9 +32532,9 @@ BH BH BH BH -ZJ +dX Xq -ZJ +dX BH BH BH @@ -32685,16 +32678,16 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -32702,14 +32695,14 @@ TK bO bO bO -ZJ +dX TK bO bO bO bO bO -ZJ +dX Aq TK TK @@ -32717,7 +32710,7 @@ TK bO bO bO -ZJ +dX bO bO bO @@ -32771,9 +32764,9 @@ BH BH BH BH -ZJ +dX Xq -ZJ +dX Aq BH BH @@ -32917,7 +32910,7 @@ bO TK TK TK -ZJ +dX bO bO bO @@ -32934,27 +32927,27 @@ TK bO bO bO -ZJ +dX TK bO bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO bO bO -ZJ +dX bO bO bO bO -ZJ +dX TK TK bO @@ -33006,7 +32999,7 @@ BH BH BH Xq -ZJ +dX BH BH BH @@ -33149,7 +33142,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -33165,26 +33158,26 @@ TK bO bO bO -ZJ -ZJ +dX +dX TK bO TK TK bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO -ZJ -ZJ +dX +dX bO bO -ZJ +dX aV va mc @@ -33236,9 +33229,9 @@ BH BH Xq Aq -ZJ +dX Xq -ZJ +dX vI BH BH @@ -33380,8 +33373,8 @@ bO TK TK TK -ZJ -ZJ +dX +dX bO bO TK @@ -33396,8 +33389,8 @@ TK bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -33406,19 +33399,19 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO -ZJ -ZJ +dX +dX bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX mc TK TK @@ -33470,7 +33463,7 @@ BH BH BH BH -ZJ +dX vI BH BH @@ -33534,11 +33527,11 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK @@ -33619,8 +33612,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -33628,7 +33621,7 @@ TK bO bO bO -ZJ +dX TK TK TK @@ -33639,17 +33632,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO -ZJ +dX bO bO bO va kD -ZJ +dX Pb TK TK @@ -33703,7 +33696,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -33768,9 +33761,9 @@ TK TK TK Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -33783,7 +33776,7 @@ Ge cc BH BH -ZJ +dX xf lD ZG @@ -33843,7 +33836,7 @@ bO bO bO bO -ZJ +dX bO bO TK @@ -33852,7 +33845,7 @@ TK TK TK EI -ZJ +dX bO bO bO @@ -33871,11 +33864,11 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO @@ -33934,7 +33927,7 @@ mz BH mz mz -ZJ +dX BH BH BH @@ -33942,7 +33935,7 @@ BH xd xd GF -ZJ +dX BH BH BH @@ -33997,11 +33990,11 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -34015,7 +34008,7 @@ Kp vx dU BH -ZJ +dX VB lD lD @@ -34074,8 +34067,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -34092,7 +34085,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -34104,9 +34097,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX CO bO bO @@ -34229,249 +34222,249 @@ TK TK TK TK -ZJ -TK -TK -ZJ -ZJ -TK -TK -TK -TK -TK -TK -ZJ -ZC -ZC -rg -aV -BH -BH -BH -xf -lD -lD -jN -as -aH -Ik -as -lD -lD -lD -lD -lD -lD -as -rM -sU -mi -HU -Gg -OS -JO -as -UE -kp -PO -as -as -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -TK -TK -bO -bO -bO -bO -bO -bO -bO -bO -bO -bO -ZJ -ZJ -TK -TK -TK -TK -TK -TK -TK -WR -Kp -ZJ -bO -bO -bO -bO -bO -ZJ -ZJ -ZJ -TK -TK -TK -TK -TK -TK -TK -TK -TK -bO -bO -ZJ -ZJ -ZJ -ZJ -WR -WR -WR -kD -Za -EI -TK -TK -TK -TK -TK -bO -bO -TK -LU -LU -LU -"} -(107,1,1) = {" -LU -LU -LU -LU -LU -LU -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -mz -mz -mz -mz -OK -GF -GF -GF -GF -GF -xd -OK -BH -BH -BH -BH -IX -vI -Dt -sP -GF -wu -tD -mz -BH -BH -BH -BH -BH -BH -BH -BH -mz -wu -wu -GF -tD -tD -tD -GF -wu -wu -OK -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -TK -TK -TK -TK -TK -TK -TK +dX +TK +TK +dX +dX +TK +TK +TK +TK +TK +TK +dX +ZC +ZC +rg +aV +BH +BH +BH +xf +lD +lD +jN +as +aH +Ik +as +lD +lD +lD +lD +lD +lD +as +rM +sU +mi +HU +Gg +OS +JO +as +UE +kp +PO +as +as +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +TK +TK +bO +bO +bO +bO +bO +bO +bO +bO +bO +bO +dX +dX +TK +TK +TK +TK +TK +TK +TK +WR +Kp +dX +bO +bO +bO +bO +bO +dX +dX +dX +TK +TK +TK TK TK TK -ZJ TK TK TK +bO +bO +dX +dX +dX +dX +WR +WR +WR +kD +Za +EI +TK TK TK TK -ZJ +TK +bO +bO +TK +LU +LU +LU +"} +(107,1,1) = {" +LU +LU +LU +LU +LU +LU +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +mz +mz +mz +mz +OK +GF +GF +GF +GF +GF +xd +OK +BH +BH +BH +BH +IX +vI +Dt +sP +GF +wu +tD +mz +BH +BH +BH +BH +BH +BH +BH +BH +mz +wu +wu +GF +tD +tD +tD +GF +wu +wu +OK +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +TK +TK +TK +TK +TK +TK +TK +TK +TK +TK +dX +TK +TK +TK +TK +TK +TK +dX nx EV Ez @@ -34536,8 +34529,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -34547,7 +34540,7 @@ TK TK WR wD -ZJ +dX nx bO bO @@ -34570,7 +34563,7 @@ bO bO bO bO -ZJ +dX zJ wi dp @@ -34627,18 +34620,18 @@ GF xd xd mL -ZJ +dX ET vI ET Pl -ZJ +dX BH vI xd tD tD -ZJ +dX BH BH BH @@ -34696,15 +34689,15 @@ TK TK TK TK -ZJ +dX TK TK TK Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH rQ TZ @@ -34768,7 +34761,7 @@ bO bO bO bO -ZJ +dX bO TK TK @@ -34778,7 +34771,7 @@ TK TK TK fo -ZJ +dX nx bO bO @@ -34808,10 +34801,10 @@ kD kD kD zJ -ZJ +dX DQ -ZJ -ZJ +dX +dX TK TK bO @@ -34871,7 +34864,7 @@ BH tD tD vI -ZJ +dX BH BH BH @@ -34924,16 +34917,16 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX TK nx Aq @@ -34999,7 +34992,7 @@ bO bO bO bO -ZJ +dX hu bO TK @@ -35042,7 +35035,7 @@ kD bT aV WR -ZJ +dX bO TK TK @@ -35076,7 +35069,7 @@ BH BH OK mz -ZJ +dX wu xd GF @@ -35103,13 +35096,13 @@ BH xd GF vI -ZJ +dX nx BH BH BH BH -ZJ +dX ET ET mL @@ -35125,7 +35118,7 @@ mz BH BH BH -ZJ +dX BH BH BH @@ -35156,19 +35149,19 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK Aq -ZJ +dX BH BH uR @@ -35231,7 +35224,7 @@ bO bO bO bO -ZJ +dX bO bO TK @@ -35242,8 +35235,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -35308,7 +35301,7 @@ BH OK OK nx -ZJ +dX GF GF Sl @@ -35320,8 +35313,8 @@ BH BH BH nx -ZJ -ZJ +dX +dX BH BH BH @@ -35333,13 +35326,13 @@ BH BH BH mz -ZJ +dX ET -ZJ +dX mz BH BH -ZJ +dX ET vI ET @@ -35357,8 +35350,8 @@ OK vI BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -35392,14 +35385,14 @@ BH TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK -ZJ +dX BH BH BH @@ -35463,8 +35456,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -35475,7 +35468,7 @@ TK TK TK TK -ZJ +dX TK bO bO @@ -35485,11 +35478,11 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ +dX TK TK TK @@ -35498,7 +35491,7 @@ bO bO bO bO -ZJ +dX WR WR WR @@ -35538,7 +35531,7 @@ BH BH mz mz -ZJ +dX Xq GF xd @@ -35552,7 +35545,7 @@ BH BH BH BH -ZJ +dX nx BH BH @@ -35565,7 +35558,7 @@ BH BH BH BH -ZJ +dX ET fi vI @@ -35585,13 +35578,13 @@ mz mz vI OK -ZJ +dX BH vI BH BH Aq -ZJ +dX BH BH BH @@ -35618,16 +35611,16 @@ TK TK TK TK -ZJ +dX TK BH BH TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK @@ -35695,12 +35688,12 @@ bO bO bO bO -ZJ +dX CO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -35711,33 +35704,33 @@ TK TK TK bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO bO bO -ZJ +dX va -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nQ ux -ZJ +dX bO bO bO @@ -35769,9 +35762,9 @@ BH BH BH mz -ZJ +dX mL -ZJ +dX xd wu wu @@ -35799,11 +35792,11 @@ BH BH vI ET -ZJ +dX ZH -ZJ +dX nx -ZJ +dX BH BH BH @@ -35819,11 +35812,11 @@ mz OK vI vI -ZJ +dX BH BH BH -ZJ +dX BH BH BH @@ -35849,23 +35842,23 @@ LU TK TK TK -ZJ -ZJ +dX +dX BH BH TK TK TK -ZJ +dX TK TK -ZJ +dX TK TK TK TK BH -ZJ +dX Aq BH BH @@ -35929,13 +35922,13 @@ bO bO bO nx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX bO bO TK @@ -35943,29 +35936,29 @@ TK TK TK TK -ZJ +dX bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX VD bO bO @@ -36030,16 +36023,16 @@ BH BH fi nx -ZJ +dX ET ET ET -ZJ +dX BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -36081,23 +36074,23 @@ LU TK TK TK -ZJ +dX BH -ZJ +dX BH TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH -ZJ +dX BH BH BH @@ -36161,13 +36154,13 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Aq -ZJ +dX bO bO TK @@ -36175,7 +36168,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -36185,22 +36178,22 @@ bO TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK Aq -ZJ +dX kD -ZJ -ZJ +dX +dX aV vb TK @@ -36230,7 +36223,7 @@ BH BH BH BH -ZJ +dX Xq mz OK @@ -36261,16 +36254,16 @@ BH BH BH BH -ZJ +dX Xq ET Xq vI -ZJ +dX BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -36313,18 +36306,18 @@ LU TK TK TK -ZJ +dX BH BH BH TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ +dX TK TK TK @@ -36393,14 +36386,14 @@ bO bO bO bO -ZJ +dX Aq -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX bO TK TK @@ -36419,19 +36412,19 @@ TK TK TK TK -ZJ +dX TK TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX aV nx nx @@ -36470,8 +36463,8 @@ mz GF mz Xq -ZJ -ZJ +dX +dX mz BH BH @@ -36495,12 +36488,12 @@ BH BH BH Xq -ZJ -ZJ -ZJ +dX +dX +dX BH BH -ZJ +dX BH BH BH @@ -36515,11 +36508,11 @@ BH BH BH BH -ZJ +dX BH Ks Xq -ZJ +dX BH BH BH @@ -36545,18 +36538,18 @@ LU TK TK TK -ZJ +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ +dX TK TK TK @@ -36626,22 +36619,22 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX bO TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -36651,19 +36644,19 @@ bO TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -36692,7 +36685,7 @@ BH BH BH BH -ZJ +dX BH BH OK @@ -36702,7 +36695,7 @@ GF FF mz mz -ZJ +dX nx mz BH @@ -36734,7 +36727,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -36748,11 +36741,11 @@ BH BH BH BH -ZJ -ZJ +dX +dX Xq -ZJ -ZJ +dX +dX BH BH BH @@ -36782,13 +36775,13 @@ TK TK TK TK -ZJ +dX TK -ZJ +dX TK TK BH -ZJ +dX TK TK TK @@ -36858,13 +36851,13 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX nx CO -ZJ -ZJ +dX +dX bO TK TK @@ -36873,10 +36866,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO TK bO @@ -36884,11 +36877,11 @@ bO bO TK TK -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -36924,7 +36917,7 @@ BH BH BH BH -ZJ +dX nx OK OK @@ -36944,7 +36937,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -36978,10 +36971,10 @@ BH BH BH BH -ZJ +dX BH BH -ZJ +dX Hw ET vI @@ -37013,15 +37006,15 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -37085,18 +37078,18 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX bO bO TK @@ -37105,10 +37098,10 @@ TK TK TK TK -ZJ -ZJ +dX +dX va -ZJ +dX TK TK TK @@ -37117,8 +37110,8 @@ bO bO bO hu -ZJ -ZJ +dX +dX TK TK TK @@ -37134,8 +37127,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -37176,7 +37169,7 @@ BH BH BH BH -ZJ +dX nx BH BH @@ -37245,15 +37238,15 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq BH BH BH -ZJ +dX BH BH BH @@ -37316,18 +37309,18 @@ bO bO TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Aq bO bO @@ -37337,10 +37330,10 @@ TK TK TK TK -ZJ -ZJ +dX +dX nx -ZJ +dX TK TK bO @@ -37348,7 +37341,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -37367,8 +37360,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX vi TK LU @@ -37409,7 +37402,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -37446,7 +37439,7 @@ BH BH BH BH -ZJ +dX ET vI BH @@ -37476,17 +37469,17 @@ TK TK TK TK -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -37549,19 +37542,19 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX bO bO bO @@ -37570,7 +37563,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -37596,10 +37589,10 @@ TK bO bO aV -ZJ +dX nx -ZJ -ZJ +dX +dX sy TK LU @@ -37639,15 +37632,15 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH mz -ZJ +dX BH BH BH @@ -37680,7 +37673,7 @@ mz vI In ET -ZJ +dX BH BH BH @@ -37708,17 +37701,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH TK BH @@ -37779,22 +37772,22 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -37828,7 +37821,7 @@ TK TK aV kD -ZJ +dX TK TK TK @@ -37870,19 +37863,19 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH BH BH -ZJ -ZJ +dX +dX Xq -ZJ +dX BH BH BH @@ -37911,8 +37904,8 @@ mz Xl ET ET -ZJ -ZJ +dX +dX BH BH BH @@ -37938,18 +37931,18 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK TK BH -ZJ -ZJ +dX +dX TK TK TK @@ -37981,7 +37974,7 @@ xf xf oY xi -ZJ +dX LU LU LU @@ -38010,14 +38003,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX nx -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -38026,8 +38019,8 @@ TK bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -38102,12 +38095,12 @@ BH BH BH BH -ZJ +dX mz mz OK BH -ZJ +dX mz BH BH @@ -38143,7 +38136,7 @@ NE ET KJ ET -ZJ +dX BH BH BH @@ -38169,18 +38162,18 @@ LU TK TK TK -ZJ -ZJ +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH BH BH -ZJ +dX TK TK TK @@ -38213,7 +38206,7 @@ BH BH BH BH -ZJ +dX LU LU LU @@ -38240,37 +38233,37 @@ LU TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK bO bO -ZJ +dX CO -ZJ -ZJ +dX +dX bO bO bO bO -ZJ +dX va -ZJ -ZJ +dX +dX bO bO bO @@ -38289,9 +38282,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -38314,7 +38307,7 @@ BH BH BH BH -ZJ +dX BH mz ID @@ -38334,10 +38327,10 @@ BH BH BH BH -ZJ +dX OK -ZJ -ZJ +dX +dX OK mf mz @@ -38401,18 +38394,18 @@ LU TK TK TK -ZJ +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH -ZJ +dX BH TK -ZJ +dX TK TK TK @@ -38446,7 +38439,7 @@ BH BH BH BH -ZJ +dX LU LU LU @@ -38472,21 +38465,21 @@ LU TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK bO @@ -38494,12 +38487,12 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO -ZJ -ZJ +dX +dX TK TK TK @@ -38518,11 +38511,11 @@ bO bO TK TK -ZJ -ZJ +dX +dX fo -ZJ -ZJ +dX +dX TK TK TK @@ -38546,7 +38539,7 @@ BH BH BH BH -ZJ +dX BH mz iw @@ -38565,11 +38558,11 @@ BH BH BH BH -ZJ -ZJ +dX +dX OK -ZJ -ZJ +dX +dX mz mf mz @@ -38635,17 +38628,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK BH BH Aq TK TK -ZJ -ZJ +dX +dX TK BH BH @@ -38678,7 +38671,7 @@ BH BH BH BH -ZJ +dX LU LU LU @@ -38703,35 +38696,35 @@ LU LU TK TK -ZJ +dX hu -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX Aq -ZJ -ZJ +dX +dX TK TK TK @@ -38746,14 +38739,14 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx -ZJ +dX nx -ZJ +dX Pb TK TK @@ -38779,7 +38772,7 @@ BH BH BH BH -ZJ +dX mz mz Bk @@ -38796,12 +38789,12 @@ mz BH BH BH -ZJ -ZJ +dX +dX OK mz nx -ZJ +dX OK ET mz @@ -38813,10 +38806,10 @@ BH BH yz mz -ZJ +dX BH BH -ZJ +dX BH BH BH @@ -38867,16 +38860,16 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX Aq BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX TK TK TK @@ -38911,8 +38904,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX LU LU LU @@ -38935,37 +38928,37 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX Aq -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX TK bO bO @@ -38979,13 +38972,13 @@ bO bO bO Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ +dX mc TK TK @@ -39028,27 +39021,27 @@ BH BH BH Aq -ZJ +dX mz mz -ZJ -ZJ -ZJ +dX +dX +dX OK ET -ZJ +dX mz mz mz OK -ZJ +dX ET mf mz -ZJ -ZJ +dX +dX BH -ZJ +dX BH BH BH @@ -39063,7 +39056,7 @@ BH BH BH mz -ZJ +dX ET ET ET @@ -39100,14 +39093,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -39142,10 +39135,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU LU @@ -39167,40 +39160,40 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK bO bO -ZJ +dX TK TK -ZJ -ZJ +dX +dX bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX ea -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX bO bO bO @@ -39209,8 +39202,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -39260,27 +39253,27 @@ BH BH BH BH -ZJ +dX mz -ZJ -ZJ +dX +dX dd -ZJ +dX mz -ZJ +dX ET -ZJ -ZJ -ZJ +dX +dX +dX nx -ZJ -ZJ -ZJ +dX +dX +dX mz BH BH BH -ZJ +dX BH BH BH @@ -39295,7 +39288,7 @@ BH BH BH OK -ZJ +dX ET vI DH @@ -39331,15 +39324,15 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK @@ -39374,10 +39367,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU LU @@ -39399,49 +39392,49 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX va TK -ZJ -ZJ +dX +dX TK TK bO bO bO -ZJ +dX TK -ZJ +dX bO bO -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ -ZJ +dX +dX bO bO bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -39494,15 +39487,15 @@ BH BH BH mz -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX OK -ZJ -ZJ +dX +dX Xq -ZJ +dX mz mz mz @@ -39511,9 +39504,9 @@ ET BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -39563,15 +39556,15 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -39606,7 +39599,7 @@ BH BH BH BH -ZJ +dX BH BH LU @@ -39631,16 +39624,16 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK bO @@ -39648,14 +39641,14 @@ bO bO bO bO -ZJ +dX bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -39666,13 +39659,13 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO bO -ZJ +dX TK TK TK @@ -39726,26 +39719,26 @@ BH BH BH mz -ZJ -ZJ +dX +dX nx mz mz mz mz mz -ZJ -ZJ +dX +dX mf mf mz BH mz -ZJ -ZJ +dX +dX nx -ZJ -ZJ +dX +dX BH BH BH @@ -39761,7 +39754,7 @@ BH OK BH ET -ZJ +dX OK BH BH @@ -39795,14 +39788,14 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -39820,10 +39813,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -39837,8 +39830,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH LU LU @@ -39863,14 +39856,14 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -39883,7 +39876,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -39899,9 +39892,9 @@ TK TK TK va -ZJ -ZJ -ZJ +dX +dX +dX bO bO TK @@ -39973,12 +39966,12 @@ ET mz BH OK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -40027,16 +40020,16 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -40053,9 +40046,9 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH BH nu @@ -40068,7 +40061,7 @@ nu BH BH BH -ZJ +dX BH BH BH @@ -40095,12 +40088,12 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -40143,9 +40136,9 @@ TK TK TK mc -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -40201,16 +40194,16 @@ HG HG HG mz -ZJ +dX mz -ZJ +dX mz mz mz mz mz mz -ZJ +dX BH BH BH @@ -40259,17 +40252,17 @@ TK TK TK mz -ZJ -ZJ +dX +dX Xq TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK BH @@ -40327,11 +40320,11 @@ LU LU TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK @@ -40346,8 +40339,8 @@ TK TK TK bO -ZJ -ZJ +dX +dX TK TK TK @@ -40422,7 +40415,7 @@ BH BH BH BH -ZJ +dX mz HG yS @@ -40435,14 +40428,14 @@ HG Ks GF mz -ZJ -ZJ -ZJ +dX +dX +dX Xq Xq BH BH -ZJ +dX BH BH BH @@ -40457,7 +40450,7 @@ BH mz nx ET -ZJ +dX mz BH BH @@ -40492,18 +40485,18 @@ TK TK mz Xq -ZJ -ZJ +dX +dX mz TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX Aq BH BH @@ -40560,12 +40553,12 @@ LU TK TK Aq -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -40578,7 +40571,7 @@ TK TK TK bO -ZJ +dX TK TK TK @@ -40604,12 +40597,12 @@ bO bO bO aV -ZJ +dX Hm ix TK TK -ZJ +dX TK TK TK @@ -40644,7 +40637,7 @@ Sl mL mL mL -ZJ +dX OK BH BH @@ -40654,7 +40647,7 @@ BH BH BH mz -ZJ +dX mz HG yS @@ -40670,12 +40663,12 @@ mz yz ET ET -ZJ +dX Xq Xq Xq mf -ZJ +dX BH BH BH @@ -40689,9 +40682,9 @@ BH mz vI ET -ZJ +dX mz -ZJ +dX BH BH BH @@ -40723,9 +40716,9 @@ TK TK pd sz -ZJ -ZJ -ZJ +dX +dX +dX mz TK TK @@ -40733,8 +40726,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX Aq BH BH @@ -40791,13 +40784,13 @@ LU LU TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX hu -ZJ -ZJ +dX +dX TK TK bO @@ -40809,8 +40802,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -40830,19 +40823,19 @@ bO bO bO bO -ZJ +dX Pw -ZJ +dX bO aV -ZJ -ZJ +dX +dX Sk TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -40872,12 +40865,12 @@ BH BH BH OK -ZJ +dX vI Xq nx ET -ZJ +dX mz BH BH @@ -40899,8 +40892,8 @@ HG GF mf mz -ZJ -ZJ +dX +dX BH BH mf @@ -40918,9 +40911,9 @@ BH BH BH BH -ZJ +dX ET -ZJ +dX qM nx BH @@ -40955,19 +40948,19 @@ TK TK pd sz -ZJ +dX Aq -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK BH BH @@ -41024,12 +41017,12 @@ LU TK TK Aq -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -41040,9 +41033,9 @@ bO TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO TK @@ -41067,14 +41060,14 @@ WR WR Kp nx -ZJ +dX Pw Zq -ZJ +dX TK -ZJ +dX nx -ZJ +dX TK TK TK @@ -41104,7 +41097,7 @@ BH BH BH OK -ZJ +dX dz rx ET @@ -41131,14 +41124,14 @@ HG mz GF mz -ZJ +dX mz mz OK mz mz BH -ZJ +dX Xq BH BH @@ -41151,7 +41144,7 @@ BH nx Xq mz -ZJ +dX Xq vI mz @@ -41186,18 +41179,18 @@ TK TK TK mz -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK @@ -41256,11 +41249,11 @@ LU TK TK TK -ZJ -ZJ +dX +dX uW -ZJ -ZJ +dX +dX BU TK TK @@ -41272,10 +41265,10 @@ bO TK TK TK -ZJ +dX bO -ZJ -ZJ +dX +dX bO TK TK @@ -41285,8 +41278,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -41298,15 +41291,15 @@ hp Hf EI Uy -ZJ +dX WA gc -ZJ -ZJ -ZJ +dX +dX +dX CL -ZJ -ZJ +dX +dX TK TK TK @@ -41337,10 +41330,10 @@ BH BH mz Sl -ZJ +dX ET ET -ZJ +dX vI mz BH @@ -41348,7 +41341,7 @@ BH BH BH BH -ZJ +dX mz ET mz @@ -41363,7 +41356,7 @@ mz mz GF mz -ZJ +dX mz nD ja @@ -41385,7 +41378,7 @@ Xq mz DR ET -ZJ +dX mz BH BH @@ -41418,18 +41411,18 @@ TK TK TK mz -ZJ +dX Xq mz -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -41488,11 +41481,11 @@ LU TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -41503,11 +41496,11 @@ bO bO bO TK -ZJ -ZJ +dX +dX bO bO -ZJ +dX bO bO TK @@ -41522,21 +41515,21 @@ WR Xi bO bO -ZJ +dX bO wi So nO zp SO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX CL -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -41568,11 +41561,11 @@ BH BH OK OK -ZJ -ZJ +dX +dX ET -ZJ -ZJ +dX +dX nx mz mz @@ -41580,7 +41573,7 @@ BH BH BH BH -ZJ +dX ET ET ET @@ -41590,11 +41583,11 @@ mz mz mz mz -ZJ +dX GF GF GF -ZJ +dX nx mz Hx @@ -41613,7 +41606,7 @@ BH BH BH BH -ZJ +dX Xq BH Ks @@ -41650,20 +41643,20 @@ TK TK pd sz -ZJ -ZJ +dX +dX TK TK mz -ZJ +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH TK TK @@ -41721,9 +41714,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -41739,7 +41732,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -41762,10 +41755,10 @@ VD mD WR Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -41800,40 +41793,40 @@ BH BH OK nx -ZJ -ZJ +dX +dX vI ET -ZJ -ZJ -ZJ +dX +dX +dX mz BH BH BH BH -ZJ +dX mz ET mz Xq -ZJ +dX Xq mf -ZJ +dX ET ET mz mz ET -ZJ +dX mz mz nD GF nD OK -ZJ +dX BH BH BH @@ -41882,8 +41875,8 @@ TK TK pd sz -ZJ -ZJ +dX +dX mz TK mz @@ -41953,9 +41946,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX Aq TK bO @@ -41971,7 +41964,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -41993,10 +41986,10 @@ Kp Kp eF WR -ZJ +dX bO -ZJ -ZJ +dX +dX bO TK TK @@ -42031,7 +42024,7 @@ BH BH BH mz -ZJ +dX mz mz mz @@ -42044,7 +42037,7 @@ BH BH BH BH -ZJ +dX mz ET mz @@ -42065,8 +42058,8 @@ ja tB ja OK -ZJ -ZJ +dX +dX BH BH BH @@ -42080,7 +42073,7 @@ BH BH mz ET -ZJ +dX ET mz BH @@ -42113,12 +42106,12 @@ LU TK TK mz -ZJ +dX Xq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX sz pd TK @@ -42185,9 +42178,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -42195,15 +42188,15 @@ bO bO TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO -ZJ +dX bO bO bO @@ -42212,22 +42205,22 @@ bO TK TK nx -ZJ +dX cq Kp aV -ZJ +dX bO bO aV aV nO -ZJ +dX VT WR -ZJ +dX bO -ZJ +dX bO bO bO @@ -42263,14 +42256,14 @@ BH BH BH mz -ZJ +dX mz bd tD tD mz mz -ZJ +dX mz BH BH @@ -42278,14 +42271,14 @@ BH BH BH mz -ZJ +dX nx -ZJ +dX mz BH BH ET -ZJ +dX BH BH vI @@ -42297,7 +42290,7 @@ up ja ja mz -ZJ +dX nx BH BH @@ -42345,13 +42338,13 @@ LU TK TK mz -ZJ -ZJ +dX +dX Xq Aq -ZJ +dX TK -ZJ +dX mz TK TK @@ -42365,7 +42358,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -42393,7 +42386,7 @@ as BH BH BH -ZJ +dX LU LU LU @@ -42417,7 +42410,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -42427,7 +42420,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -42436,7 +42429,7 @@ bO bO bO CO -ZJ +dX bO bO bO @@ -42457,7 +42450,7 @@ aJ aJ UM qj -ZJ +dX bO bO bO @@ -42495,7 +42488,7 @@ BH BH BH OK -ZJ +dX mz bd rf @@ -42511,17 +42504,17 @@ BH BH mz mz -ZJ +dX ET -ZJ -ZJ +dX +dX Xq mf Xq BH mz OK -ZJ +dX OK ja ja @@ -42529,9 +42522,9 @@ EG EG EG mz -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -42541,13 +42534,13 @@ BH BH BH BH -ZJ +dX BH ET ET ET -ZJ -ZJ +dX +dX BH BH BH @@ -42577,13 +42570,13 @@ LU TK TK TK -ZJ -ZJ +dX +dX Xq TK TK TK -ZJ +dX mz TK TK @@ -42598,7 +42591,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -42625,9 +42618,9 @@ as LU BH BH -ZJ -ZJ -ZJ +dX +dX +dX LU LU LU @@ -42649,7 +42642,7 @@ TK TK TK TK -ZJ +dX oq TK TK @@ -42658,17 +42651,17 @@ TK bO bO bO -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX bO bO bO -ZJ +dX Aq bO bO @@ -42688,10 +42681,10 @@ WR EI qj Aq -ZJ -ZJ +dX +dX bO -ZJ +dX bO bO bO @@ -42741,15 +42734,15 @@ BH BH BH BH -ZJ +dX mz mz mz mz mz -ZJ -ZJ -ZJ +dX +dX +dX mz mz vI @@ -42761,9 +42754,9 @@ OK mz mz mz -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -42782,7 +42775,7 @@ ET ET BH BH -ZJ +dX BH BH BH @@ -42805,11 +42798,11 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Xq Xq TK @@ -42830,7 +42823,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -42882,8 +42875,8 @@ TK TK TK va -ZJ -ZJ +dX +dX TK TK TK @@ -42891,17 +42884,17 @@ bO bO bO nx -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX bO bO -ZJ -ZJ +dX +dX bO bO TK @@ -42920,10 +42913,10 @@ TK TK TK bO -ZJ +dX bO bO -ZJ +dX bO bO bO @@ -42981,19 +42974,19 @@ BH BH nx Ks -ZJ -ZJ +dX +dX BH -ZJ +dX Xq -ZJ +dX BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX nx BH BH @@ -43009,12 +43002,12 @@ OK nx BH ET -ZJ -ZJ +dX +dX nx BH -ZJ -ZJ +dX +dX BH BH BH @@ -43034,19 +43027,19 @@ LU LU yS LU -ZJ +dX LU -ZJ -ZJ +dX +dX LU TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ +dX sz pd TK @@ -43054,7 +43047,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -43064,7 +43057,7 @@ BH BH BH BH -ZJ +dX TK TK BH @@ -43115,7 +43108,7 @@ TK TK TK oi -ZJ +dX Aq bO TK @@ -43123,16 +43116,16 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX TK bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -43155,7 +43148,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -43200,7 +43193,7 @@ fe tD mz nx -ZJ +dX BH BH BH @@ -43224,8 +43217,8 @@ BH BH BH nx -ZJ -ZJ +dX +dX BH BH BH @@ -43238,14 +43231,14 @@ BH BH BH mz -ZJ +dX Aq ET Xq vI -ZJ +dX OK -ZJ +dX nx BH BH @@ -43266,29 +43259,29 @@ LU LU yS UY -ZJ -ZJ -ZJ +dX +dX +dX LU TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Xq -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX BH -ZJ +dX BH BH BH @@ -43296,7 +43289,7 @@ BH BH BH BH -ZJ +dX TK BH BH @@ -43357,9 +43350,9 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -43387,8 +43380,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -43431,7 +43424,7 @@ VZ tD tD mz -ZJ +dX BH BH BH @@ -43443,7 +43436,7 @@ BH BH BH BH -ZJ +dX ET vI BH @@ -43470,14 +43463,14 @@ BH BH mz mz -ZJ +dX PT rv Ks PT -ZJ +dX OK -ZJ +dX BH BH BH @@ -43498,18 +43491,18 @@ LU LU yS UY -ZJ +dX LU LU LU TK mz -ZJ +dX mz Xq -ZJ +dX mz -ZJ +dX mz TK TK @@ -43517,10 +43510,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -43591,13 +43584,13 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX CO -ZJ -ZJ +dX +dX bO bO bO @@ -43619,8 +43612,8 @@ TK TK bO bO -ZJ -ZJ +dX +dX bO bO TK @@ -43685,7 +43678,7 @@ BH BH mf Xq -ZJ +dX BH BH BH @@ -43702,15 +43695,15 @@ BH mz mz vI -ZJ +dX fu jZ TD Xq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -43738,8 +43731,8 @@ TK mz mz mz -ZJ -ZJ +dX +dX mz mz mz @@ -43749,11 +43742,11 @@ TK TK TK TK -ZJ +dX BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -43825,16 +43818,16 @@ bO bO bO bO -ZJ +dX TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -43851,9 +43844,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -43889,8 +43882,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX mz Uk tD @@ -43908,7 +43901,7 @@ BH xd GF xd -ZJ +dX BH BH BH @@ -43916,9 +43909,9 @@ BH BH BH BH -ZJ +dX Xq -ZJ +dX BH BH BH @@ -43933,7 +43926,7 @@ BH BH BH mz -ZJ +dX vI tV LO @@ -43941,7 +43934,7 @@ HR vI vI mz -ZJ +dX BH BH BH @@ -43970,7 +43963,7 @@ mz mz pY mz -ZJ +dX ET mz ET @@ -43985,7 +43978,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -44057,8 +44050,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK bO @@ -44066,11 +44059,11 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO @@ -44082,12 +44075,12 @@ bO TK TK TK -ZJ -ZJ +dX +dX CL -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -44122,7 +44115,7 @@ BH BH BH nx -ZJ +dX Kc WS tD @@ -44149,7 +44142,7 @@ BH BH Aq BH -ZJ +dX nx BH BH @@ -44165,8 +44158,8 @@ BH BH BH mz -ZJ -ZJ +dX +dX Xo QS fl @@ -44220,7 +44213,7 @@ TK BH BH BH -ZJ +dX BH BH BH @@ -44290,9 +44283,9 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -44302,7 +44295,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -44314,12 +44307,12 @@ bO TK TK TK -ZJ -ZJ +dX +dX TK nx -ZJ -ZJ +dX +dX TK TK TK @@ -44354,7 +44347,7 @@ BH BH BH BH -ZJ +dX Kc Kc tD @@ -44381,7 +44374,7 @@ BH BH BH BH -ZJ +dX mf BH BH @@ -44402,7 +44395,7 @@ cm ET ET Xq -ZJ +dX Aq OK BH @@ -44527,14 +44520,14 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX bO bO bO @@ -44547,11 +44540,11 @@ bO bO TK TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -44591,7 +44584,7 @@ BH mz OK mz -ZJ +dX BH BH BH @@ -44615,7 +44608,7 @@ BH BH Xq Xq -ZJ +dX mz BH BH @@ -44630,14 +44623,14 @@ BH BH BH mz -ZJ +dX ET DR -ZJ +dX cm ET mz -ZJ +dX BH BH BH @@ -44748,8 +44741,8 @@ LU LU TK sr -ZJ -ZJ +dX +dX TK Aq TK @@ -44766,12 +44759,12 @@ TK TK TK TK -ZJ +dX bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -44781,10 +44774,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -44845,10 +44838,10 @@ BH BH BH BH -ZJ +dX Xq -ZJ -ZJ +dX +dX mz BH BH @@ -44863,14 +44856,14 @@ BH BH mz ET -ZJ +dX nx -ZJ +dX Xq ET mz nx -ZJ +dX BH BH BH @@ -44920,9 +44913,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -44980,11 +44973,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX va -ZJ -ZJ +dX +dX TK TK TK @@ -44998,26 +44991,26 @@ TK TK TK TK -ZJ -ZJ +dX +dX CO -ZJ -ZJ +dX +dX bO bO bO bO bO bO -ZJ +dX TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -45054,7 +45047,7 @@ BH BH BH nx -ZJ +dX Xq mz BH @@ -45076,12 +45069,12 @@ BH BH BH BH -ZJ +dX nx Xq Xq -ZJ -ZJ +dX +dX mz BH BH @@ -45095,13 +45088,13 @@ BH BH mz mz -ZJ -ZJ +dX +dX vI -ZJ -ZJ +dX +dX BH -ZJ +dX BH BH BH @@ -45139,7 +45132,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -45151,8 +45144,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -45169,15 +45162,15 @@ xf xf xf xf -ZJ -ZJ -ZJ +dX +dX +dX xf xf xf xf -ZJ -ZJ +dX +dX LU LU LU @@ -45212,13 +45205,13 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -45234,22 +45227,22 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -45285,9 +45278,9 @@ BH BH BH mz -ZJ +dX vI -ZJ +dX OK OK BH @@ -45309,11 +45302,11 @@ BH BH BH BH -ZJ +dX fT mf fT -ZJ +dX mz BH BH @@ -45329,9 +45322,9 @@ BH BH BH nx -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -45369,9 +45362,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -45382,9 +45375,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -45403,12 +45396,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX LU LU LU @@ -45443,16 +45436,16 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK GV -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -45473,14 +45466,14 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -45518,8 +45511,8 @@ BH BH mz mz -ZJ -ZJ +dX +dX Ks OK BH @@ -45541,11 +45534,11 @@ BH BH BH BH -ZJ +dX Xq oN Xq -ZJ +dX mz BH BH @@ -45601,10 +45594,10 @@ mz TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -45615,13 +45608,13 @@ BH BH BH BH -ZJ +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -45636,10 +45629,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU LU @@ -45675,17 +45668,17 @@ TK TK TK pT -ZJ +dX TK TK TK TK TK sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -45705,14 +45698,14 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -45772,12 +45765,12 @@ BH BH BH Aq -ZJ +dX vI fT Xq ZB -ZJ +dX BH BH BH @@ -45833,8 +45826,8 @@ mz LU TK TK -ZJ -ZJ +dX +dX BH BH BH @@ -45844,15 +45837,15 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH BH BH BH BH -ZJ +dX BH BH BH @@ -45868,12 +45861,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX LU LU LU @@ -45906,7 +45899,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -45916,9 +45909,9 @@ TK sr sr sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -45937,14 +45930,14 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -46004,8 +45997,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX Xq Xq mf @@ -46066,7 +46059,7 @@ LU LU TK TK -ZJ +dX BH BH BH @@ -46074,11 +46067,11 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH @@ -46090,17 +46083,17 @@ BH BH BH BH -ZJ +dX BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH BH -ZJ +dX BH BH BH @@ -46149,8 +46142,8 @@ TK TK TK nx -ZJ -ZJ +dX +dX TK TK TK @@ -46165,16 +46158,16 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK @@ -46238,9 +46231,9 @@ BH BH BH nx -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -46298,18 +46291,18 @@ LU LU TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX BH BH BH @@ -46322,20 +46315,20 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH BH BH BH -ZJ +dX BH -ZJ +dX LU LU LU @@ -46380,32 +46373,32 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK nx TK -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX TK TK TK @@ -46470,7 +46463,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -46532,16 +46525,16 @@ TK TK TK TK -ZJ +dX BH BH BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -46556,16 +46549,16 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH LU BH BH BH BH -ZJ +dX LU LU LU @@ -46601,8 +46594,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -46612,32 +46605,32 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX va -ZJ -ZJ -ZJ +dX +dX +dX Aq -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX CO -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -46770,10 +46763,10 @@ TK TK BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -46789,7 +46782,7 @@ BH BH BH BH -ZJ +dX BH BH LU @@ -46826,14 +46819,14 @@ TK TK sr sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK sr -ZJ +dX TK TK TK @@ -46851,25 +46844,25 @@ TK TK TK ko -ZJ +dX TK TK -ZJ +dX TK TK GV -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -47005,7 +46998,7 @@ BH BH TK TK -ZJ +dX TK TK BH @@ -47059,7 +47052,7 @@ TK TK TK aT -ZJ +dX iH sr TK @@ -47073,17 +47066,17 @@ TK TK sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK pT -ZJ -ZJ +dX +dX TK TK TK @@ -47094,12 +47087,12 @@ TK TK TK GV -ZJ +dX Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -47144,9 +47137,9 @@ BH BH BH BH -ZJ +dX ET -ZJ +dX BH BH mz @@ -47292,29 +47285,29 @@ sr TK TK TK -ZJ +dX sr TK TK -ZJ +dX sr TK -ZJ +dX TK TK TK TK TK -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -47327,16 +47320,16 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK va -ZJ +dX TK TK TK @@ -47372,12 +47365,12 @@ BH BH BH BH -ZJ +dX BH BH BH vI -ZJ +dX mz mz OK @@ -47521,32 +47514,32 @@ TK TK TK sr -ZJ +dX Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK Aq -ZJ +dX TK TK TK @@ -47557,17 +47550,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX nx -ZJ +dX TK TK TK TK va -ZJ +dX Aq TK TK @@ -47604,13 +47597,13 @@ BH BH BH BH -ZJ +dX Aq BH BH BH nx -ZJ +dX yz ty GF @@ -47752,19 +47745,19 @@ LU TK TK hQ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX sr TK TK TK -ZJ +dX va TK TK @@ -47773,14 +47766,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -47788,17 +47781,17 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX va TK TK @@ -47837,8 +47830,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH mz @@ -47877,9 +47870,9 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH BH BH @@ -47983,54 +47976,54 @@ LU LU TK TK -ZJ -ZJ +dX +dX sr sr sr sr -ZJ +dX sr sr sr TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX nx -ZJ +dX va -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -48110,11 +48103,11 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH -ZJ +dX BH BH BH @@ -48228,40 +48221,40 @@ sr TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -48313,7 +48306,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -48343,12 +48336,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -48460,17 +48453,17 @@ TK TK TK TK -ZJ +dX nx -ZJ -ZJ +dX +dX ko -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK @@ -48478,24 +48471,24 @@ TK TK TK GV -ZJ -ZJ +dX +dX nx -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK TK TK -ZJ +dX ko -ZJ -ZJ +dX +dX hu TK TK @@ -48543,8 +48536,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -48565,22 +48558,22 @@ BH BH BH BH -ZJ +dX BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -48692,44 +48685,44 @@ TK TK TK GV -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK CO -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK va TK TK TK -ZJ +dX TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -48796,8 +48789,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -48805,16 +48798,16 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX BH BH BH @@ -48924,9 +48917,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -48934,9 +48927,9 @@ TK TK TK TK -ZJ +dX TK -ZJ +dX TK TK TK @@ -48946,23 +48939,23 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ +dX nx hu -ZJ -ZJ +dX +dX TK TK -ZJ +dX nx va -ZJ +dX TK TK TK @@ -49034,19 +49027,19 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX BH BH BH @@ -49157,16 +49150,16 @@ TK TK TK TK -ZJ +dX va TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -49185,15 +49178,15 @@ TK TK TK CO -ZJ -ZJ +dX +dX va TK TK TK hu -ZJ -ZJ +dX +dX TK TK TK @@ -49272,12 +49265,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -49390,13 +49383,13 @@ LU LU LU TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -51570,7 +51563,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -52009,7 +52002,7 @@ LU LU LU BH -ZJ +dX LU LU LU diff --git a/_maps/map_files220/RandomZLevels/spacebattle.dmm b/_maps/map_files220/RandomZLevels/spacebattle.dmm index f11fd4b94271..8652f5f2b531 100644 --- a/_maps/map_files220/RandomZLevels/spacebattle.dmm +++ b/_maps/map_files220/RandomZLevels/spacebattle.dmm @@ -3085,7 +3085,7 @@ /area/awaymission/space_battle/bridge) "jm" = ( /obj/machinery/light/directional/north, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /turf/simulated/floor/plasteel{ icon_state = "neutral"; dir = 1 @@ -3514,8 +3514,8 @@ "kD" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/crate/secure/weapon, -/obj/item/storage/box/buck, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, +/obj/item/storage/fancy/shell/buck, /turf/simulated/floor/plasteel, /area/awaymission/space_battle/sec_storage) "kF" = ( @@ -3703,7 +3703,7 @@ /area/awaymission/space_battle/prhallway1) "lh" = ( /obj/structure/rack, -/obj/item/storage/box/slug, +/obj/item/storage/fancy/shell/slug, /turf/simulated/floor/plasteel{ icon_state = "red"; dir = 5 @@ -13107,7 +13107,7 @@ /area/space) "Oy" = ( /obj/structure/rack, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/machinery/light/small/directional/east, /turf/simulated/floor/plating, /area/awaymission/space_battle/turret2) diff --git a/_maps/map_files220/RandomZLevels/wildwest.dmm b/_maps/map_files220/RandomZLevels/wildwest.dmm index b86f645b0c32..1aa7002fd593 100644 --- a/_maps/map_files220/RandomZLevels/wildwest.dmm +++ b/_maps/map_files220/RandomZLevels/wildwest.dmm @@ -4863,9 +4863,8 @@ }, /area/awaymission/wildwest/wildwest_mines) "Wk" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, +/obj/machinery/door/airlock/external, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/awaymission/wildwest/wildwest_refine) diff --git a/_maps/map_files220/generic/Admin_Zone.dmm b/_maps/map_files220/generic/Admin_Zone.dmm index f3a6d7947f07..5482317ddbb3 100644 --- a/_maps/map_files220/generic/Admin_Zone.dmm +++ b/_maps/map_files220/generic/Admin_Zone.dmm @@ -235,9 +235,9 @@ dir = 2; pixel_y = 11 }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_ext"; - req_access_txt = "152"; aiControlDisabled = 1; hackProof = 1 }, @@ -252,7 +252,7 @@ }, /obj/machinery/access_button/west{ autolink_id = "voxwest_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium{ color = "#fff894"; @@ -421,15 +421,15 @@ /area/ninja/holding) "bE" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 }, /obj/machinery/access_button/east{ autolink_id = "voxwest_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/plating/nitrogen, /area/vox_base) @@ -882,8 +882,8 @@ }, /area/vox_base) "dr" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -945,7 +945,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomegen"; name = "General Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -1763,8 +1763,8 @@ /turf/simulated/floor/plating/dirt, /area/ghost_bar/outdoor) "gn" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -2431,7 +2431,6 @@ /area/ninja/holding) "iF" = ( /obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160"; id_tag = "soltrader_north" }, /obj/effect/turf_decal/siding/wood/birch{ @@ -2439,6 +2438,7 @@ }, /obj/effect/turf_decal/siding/wood/cherry, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "iG" = ( @@ -2496,8 +2496,8 @@ /turf/simulated/floor/wood/parquet/tile, /area/ghost_bar/indoor) "iO" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -2569,8 +2569,8 @@ }, /area/admin) "iZ" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -2791,10 +2791,10 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/ghost_bar/outdoor/beach) "jO" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_int"; locked = 1; - req_access_txt = "152"; aiControlDisabled = 1; hackProof = 1 }, @@ -2809,7 +2809,7 @@ }, /obj/machinery/access_button/east{ autolink_id = "voxeast_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/vox) @@ -3169,9 +3169,7 @@ /turf/simulated/floor/wood, /area/ghost_bar/indoor) "kX" = ( -/obj/machinery/door/airlock/titanium{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium, /obj/effect/turf_decal/siding/wood/birch{ dir = 8 }, @@ -3179,6 +3177,7 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "kY" = ( @@ -3374,9 +3373,9 @@ ext_door_link_id = "voxeast_door_ext"; int_door_link_id = "voxeast_door_int"; pixel_x = -24; - req_access_txt = "152"; ext_button_link_id = "voxeast_btn_ext"; - int_button_link_id = "voxeast_btn_int" + int_button_link_id = "voxeast_btn_int"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -3889,7 +3888,6 @@ /area/ghost_bar/outdoor/beach) "nz" = ( /obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160"; id_tag = "soltrader_south" }, /obj/effect/turf_decal/siding/wood/birch, @@ -3897,6 +3895,7 @@ dir = 1 }, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "nA" = ( @@ -4198,11 +4197,11 @@ /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) "oF" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; name = "vox door"; - req_access_txt = "152"; dir = 4 }, /turf/simulated/floor/mineral/plastitanium{ @@ -4264,8 +4263,8 @@ "oO" = ( /obj/machinery/door/window/reinforced/normal{ dir = 4; - req_access_txt = "152"; - name = "vox glassdoor" + name = "vox glassdoor"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium{ @@ -4437,21 +4436,19 @@ id = "trader_privacy"; name = "Privacy Shutters Control"; pixel_y = 8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/door_control/no_emag/east{ id = "soltrader_south"; name = "Trade Deposits Door"; normaldoorcontrol = 1; pixel_y = -8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/flasher_button{ id = "soltraderflash"; pixel_x = 24; - req_one_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/wood/fancy/cherry, /area/shuttle/trade/sol) @@ -4865,10 +4862,10 @@ /turf/simulated/floor/grass, /area/ghost_bar/outdoor) "rd" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_int"; locked = 1; - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -4884,7 +4881,7 @@ }, /obj/machinery/access_button/east{ autolink_id = "voxwest_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium{ color = "#fff894"; @@ -6534,8 +6531,8 @@ "wv" = ( /obj/machinery/door/window/reinforced/reversed{ dir = 4; - req_access_txt = "152"; - name = "vox glassdoor" + name = "vox glassdoor"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium{ @@ -6722,8 +6719,8 @@ /turf/simulated/floor/wood/oak, /area/admin) "xf" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -6930,11 +6927,11 @@ /turf/simulated/floor/wood/oak, /area/admin) "xM" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; - name = "vox door"; - req_access_txt = "152" + name = "vox door" }, /turf/simulated/floor/mineral/plastitanium{ color = "#ff78f4"; @@ -7202,9 +7199,7 @@ }, /area/shuttle/vox) "yE" = ( -/obj/machinery/economy/vending/nta/admin{ - req_access = "0" - }, +/obj/machinery/economy/vending/nta/admin, /turf/simulated/floor/wood/oak, /area/admin) "yF" = ( @@ -7485,8 +7480,8 @@ /turf/simulated/floor/wood/oak, /area/admin) "zC" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -7646,7 +7641,7 @@ int_button_link_id = "voxwest_btn_int"; int_door_link_id = "voxwest_door_int"; pixel_x = 24; - req_access_txt = "152" + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium{ @@ -8457,7 +8452,7 @@ /obj/structure/table/wood, /obj/machinery/door_control/no_emag/east{ id = "tdome1"; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -8797,10 +8792,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 8 }, -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "DU" = ( @@ -8825,10 +8819,10 @@ /turf/simulated/floor/wood, /area/ghost_bar/indoor) "DX" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_ext"; locked = 1; - req_access_txt = "152"; aiControlDisabled = 1; hackProof = 1 }, @@ -8843,7 +8837,7 @@ }, /obj/machinery/access_button/west{ autolink_id = "voxeast_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/vox) @@ -8971,8 +8965,8 @@ /turf/simulated/floor/carpet/royalblack, /area/ghost_bar/indoor) "ED" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -9203,8 +9197,8 @@ /turf/simulated/floor/wood, /area/ghost_bar/outdoor/beach) "Fx" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -9805,7 +9799,6 @@ /turf/simulated/floor/plasteel/smooth, /area/ghost_bar/indoor) "Hz" = ( -/turf/simulated/floor/plasteel/stairs/old, /area/ghost_bar/outdoor/beach) "HA" = ( /obj/item/pickaxe, @@ -10208,7 +10201,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdome"; name = "Main Blast Doors Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -10707,7 +10700,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomehea"; name = "Heavy Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -11092,20 +11085,18 @@ name = "Trade Deposits Door"; normaldoorcontrol = 1; pixel_y = 8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/door_control/no_emag/east{ id = "trader_privacy"; name = "Privacy Shutters Control"; pixel_y = -8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/flasher_button{ id = "soltraderflash"; pixel_x = 24; - req_one_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/wood/fancy/cherry, /area/shuttle/trade/sol) @@ -11215,9 +11206,9 @@ "Mr" = ( /obj/machinery/door/window/reinforced/reversed{ dir = 1; - req_access_txt = "152"; name = "vox glassdoor"; - color = "red" + color = "red"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -11244,8 +11235,8 @@ /turf/simulated/floor/light/disco, /area/ghost_bar/outdoor/beach) "Mz" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -11532,10 +11523,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 4 }, -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "NM" = ( @@ -11623,7 +11613,7 @@ /obj/machinery/door/window{ dir = 4; name = "Стойка"; - req_one_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/wood/fancy/cherry, /area/shuttle/trade/sol) @@ -11915,9 +11905,9 @@ "OV" = ( /obj/machinery/door/window/reinforced/normal{ dir = 1; - req_access_txt = "152"; name = "vox glassdoor"; - color = "red" + color = "red"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -12407,8 +12397,8 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/ghost_bar/outdoor/beach) "Qz" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -12706,9 +12696,7 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -12758,11 +12746,11 @@ /turf/simulated/floor/plasteel, /area/tdome/arena_source) "RJ" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; name = "vox door"; - req_access_txt = "152"; dir = 8 }, /turf/simulated/floor/mineral/plastitanium{ @@ -12801,14 +12789,13 @@ }, /area/ghost_bar/indoor) "RP" = ( -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/turf_decal/siding/wood/birch, /obj/effect/turf_decal/siding/wood/cherry{ dir = 1 }, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "RQ" = ( @@ -12995,14 +12982,13 @@ /turf/simulated/floor/carpet/royalblack, /area/ghost_bar/indoor) "SJ" = ( -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/turf_decal/siding/wood/birch{ dir = 1 }, /obj/effect/turf_decal/siding/wood/cherry, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "SK" = ( @@ -13090,7 +13076,7 @@ /obj/structure/table/wood, /obj/machinery/door_control/no_emag/west{ id = "tdome2"; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -13206,11 +13192,11 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/ninja/holding) "Tl" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; name = "vox door"; - req_access_txt = "152"; dir = 4 }, /obj/effect/decal/cleanable/dirt, @@ -14109,7 +14095,7 @@ /area/trader_station/sol) "Wn" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -14656,10 +14642,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 1 }, -/obj/machinery/door/airlock/titanium{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "Yj" = ( @@ -34215,7 +34200,7 @@ pO dB Ld Ld -dX +hN dX dX FU diff --git a/_maps/map_files220/generic/Lavaland.dmm b/_maps/map_files220/generic/Lavaland.dmm index 19a8790f2179..45a19b839226 100644 --- a/_maps/map_files220/generic/Lavaland.dmm +++ b/_maps/map_files220/generic/Lavaland.dmm @@ -1468,9 +1468,9 @@ /obj/effect/turf_decal/delivery/hollow/right, /obj/machinery/door_control/shutter/east{ id = "mining_mechbay"; - req_access_txt = "54"; name = "Mech Bay Shutters"; - pixel_y = 5 + pixel_y = 5; + req_access = list(54) }, /obj/machinery/light_switch{ pixel_x = 24; @@ -9588,7 +9588,7 @@ /obj/machinery/door_control/shutter/south{ id = "Labor"; name = "Labor Camp Lockdown"; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 diff --git a/_maps/map_files220/generic/centcomm.dmm b/_maps/map_files220/generic/centcomm.dmm index 47f2704ecc25..8912a1d5f835 100644 --- a/_maps/map_files220/generic/centcomm.dmm +++ b/_maps/map_files220/generic/centcomm.dmm @@ -204,7 +204,7 @@ "aic" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_one_access = list(101) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -315,9 +315,9 @@ /turf/simulated/floor/wood/fancy/oak, /area/centcom/ss220/park) "amV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Изолятор"; - req_access_txt = "101" + name = "Изолятор" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -411,8 +411,8 @@ pixel_y = 8; id = "СС_COO_WINDOW"; name = "Blast Window Open"; - req_access_txt = "114"; - layer = 3 + layer = 3; + req_access = list(114) }, /obj/item/clothing/mask/holo_cigar, /obj/item/reagent_containers/drinks/bottle/whiskey{ @@ -467,7 +467,7 @@ "ase" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -561,20 +561,20 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; pixel_x = -7; name = "SST Outside Doors"; - id = "SST_outside" + id = "SST_outside"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; pixel_x = 7; id = "SST_to_ATOM"; - name = "SST to ATOM hall" + name = "SST to ATOM hall"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -591,7 +591,7 @@ color = "red"; icon_state = "rightsecure"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -683,7 +683,7 @@ "ayh" = ( /obj/machinery/door/airlock/centcom{ name = "Дроп Под"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ name = "Дроп Под"; @@ -694,7 +694,7 @@ /obj/machinery/door_control/no_emag/no_cyborg{ id = "cc_drop_pod_2"; name = "Дроп Под"; - req_one_access_txt = "114"; + req_access = list(114); pixel_y = 24 }, /obj/effect/turf_decal/delivery/red, @@ -748,7 +748,7 @@ /obj/machinery/door/window/reinforced/normal{ color = "red"; name = "Комната заключённых"; - req_access_txt = "104" + req_access = list(104) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -933,9 +933,9 @@ name = "Tool Storage"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; pixel_x = -32; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -1061,8 +1061,8 @@ /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin1) "aKT" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Бар" }, /turf/simulated/floor/pod/light, @@ -1757,7 +1757,7 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_COO_Mecha"; name = "Blast Door Open"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -1927,7 +1927,7 @@ /area/centcom/ss220/bar) "blk" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -1976,7 +1976,7 @@ "bnn" = ( /obj/machinery/door/airlock/centcom{ name = "Офисы"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -2329,8 +2329,8 @@ /area/syndicate_mothership) "bxL" = ( /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - name = "Брифинг-зал" + name = "Брифинг-зал"; + req_access = list(114) }, /turf/simulated/floor/plasteel{ color = "gray"; @@ -2475,7 +2475,7 @@ /obj/machinery/door/airlock/external{ name = "Шаттл доставки"; opacity = 0; - req_one_access_txt = "106" + req_access = list(106) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -2702,7 +2702,7 @@ "bLF" = ( /obj/machinery/door/airlock/centcom{ name = "Дроп Под"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ name = "Дроп Под"; @@ -2713,7 +2713,7 @@ /obj/machinery/door_control/no_emag/no_cyborg{ id = "cc_drop_pod_1"; name = "Дроп Под"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 24 }, /obj/effect/turf_decal/delivery/red, @@ -2929,7 +2929,7 @@ layer = 3; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "79" + req_access = list(79) }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/supply) @@ -3308,7 +3308,7 @@ /area/syndicate_mothership/cargo) "bWD" = ( /obj/structure/closet/secure_closet/brig{ - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) @@ -3382,7 +3382,7 @@ /obj/item/flag/syndi, /obj/machinery/computer/cryopod{ pixel_x = 32; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) @@ -3791,9 +3791,9 @@ }, /area/syndicate_mothership/jail) "clT" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Лазарет"; - req_access_txt = "101" + name = "Лазарет" }, /turf/simulated/floor/plasteel/dark{ icon_state = "barber" @@ -4282,7 +4282,7 @@ "cFJ" = ( /obj/machinery/door/airlock/command/glass{ name = "Escape Shuttle Cockpit"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel, /area/shuttle/escape) @@ -4295,7 +4295,7 @@ "cFW" = ( /obj/machinery/door/airlock/centcom{ name = "Офисы"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 6 @@ -4396,10 +4396,10 @@ /turf/simulated/floor/carpet/royalblack, /area/shuttle/administration) "cLj" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door/poddoor{ density = 0; @@ -5083,8 +5083,8 @@ /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) "deM" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/hatch{ - req_access_txt = "109"; aiControlDisabled = 1; name = "Assault Pod" }, @@ -5174,9 +5174,9 @@ /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "dhs" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Шаттл"; - req_access_txt = "101" + name = "Шаттл" }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -5284,9 +5284,9 @@ }, /area/syndicate_mothership) "dlt" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "syndicate_away"; - req_access_txt = "150" + id_tag = "syndicate_away" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -5305,7 +5305,7 @@ "dmb" = ( /obj/machinery/computer/cryopod{ pixel_y = -32; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) @@ -5398,7 +5398,7 @@ /area/centcom/ss220/bar) "dpU" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "114" + req_access = list(114) }, /obj/item/storage/box/centcomofficer, /obj/item/radio/headset/centcom, @@ -5481,14 +5481,14 @@ layer = 4; name = "Loading Doors"; pixel_y = -8; - req_one_access_txt = "106" + req_access = list(106) }, /obj/machinery/door_control/no_emag/east{ id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "106" + req_access = list(106) }, /obj/structure/light_fake{ dir = 4 @@ -5776,9 +5776,9 @@ }, /area/syndicate_mothership/cargo) "dzV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Покои ОСО"; - req_access_txt = "114" + name = "Покои ОСО" }, /obj/effect/turf_decal/tile/neutral/full{ color = "#000000" @@ -5855,12 +5855,12 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Interior_1"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/machinery/door/airlock/centcom{ id_tag = "CC_Interior_1"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) @@ -6029,7 +6029,7 @@ "dGG" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -6049,7 +6049,7 @@ "dHB" = ( /obj/machinery/door/airlock/centcom{ name = "Комната углубленного допроса"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_8"; @@ -6059,7 +6059,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_SOD_8"; name = "Комната углубленного допроса"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/jail) @@ -6380,7 +6380,7 @@ /area/centcom/ss220/supply) "dPI" = ( /obj/machinery/door/airlock/centcom{ - req_one_access_txt = "101"; + req_access = list(101); id_tag = "CC_Cargo_Office_Exterior_1" }, /obj/effect/mapping_helpers/airlock/autoname, @@ -6509,7 +6509,7 @@ "dUF" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_4"; @@ -6519,7 +6519,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_4"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 10 @@ -6615,9 +6615,9 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/escape) "dYV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Пилот"; - req_access_txt = "101" + name = "Пилот" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -6637,7 +6637,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_Armory"; name = "Оружейная"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -6651,7 +6651,7 @@ "dZw" = ( /obj/machinery/door/airlock/command/glass{ name = "Escape Shuttle Cockpit"; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -6714,7 +6714,7 @@ "ebq" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -6804,7 +6804,7 @@ /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -6825,7 +6825,7 @@ /obj/structure/morgue, /obj/machinery/door/window/reinforced/normal{ name = "Морг"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /obj/structure/window/reinforced, @@ -6990,7 +6990,7 @@ /area/centcom/ss220/admin2) "enT" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "114" + req_access = list(114) }, /obj/item/clothing/suit/judgerobe{ name = "Supreme Judge's robe" @@ -7084,7 +7084,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "СС_Interior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -7175,10 +7175,10 @@ /obj/machinery/door_control/no_emag{ id = "Aspid_deck"; wires = 1; - req_access_txt = "153"; name = "Aspid main storage"; emagged = 1; - pixel_x = 32 + pixel_x = 32; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -7673,12 +7673,12 @@ /obj/machinery/door/airlock/centcom{ id_tag = "CC_Cargo_Interior_1"; name = "Зона ЦК Карго"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Cargo_Interior_1"; name = "Blast Door Open"; - req_one_access_txt = "104"; + req_access = list(104); pixel_y = 24 }, /obj/machinery/door/poddoor/impassable{ @@ -7792,7 +7792,7 @@ /obj/machinery/door/airlock/external{ id_tag = "specops_away"; name = "Шаттл ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plating, /area/centcom/ss220/admin3) @@ -8040,7 +8040,7 @@ /obj/machinery/door_control/no_emag/south{ id = "CC_Armory_Advanced"; name = "Оружейная - Дополнительный аренал"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/structure/light_fake/spot{ dir = 4 @@ -8948,7 +8948,7 @@ color = "#80ff80"; id = "CC_Armory_Green"; name = "Оружейная - Уровень 1"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark{ dir = 5; @@ -9173,7 +9173,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 1; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/structure/table/glass/reinforced/plastitanium, /obj/machinery/door/poddoor/preopen{ @@ -9454,7 +9454,7 @@ name = "Blast Doors"; pixel_x = -30; pixel_y = -11; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_elite) @@ -10130,7 +10130,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Exterior_1"; @@ -10138,21 +10138,21 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Interior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Exterior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/bar) @@ -10180,9 +10180,7 @@ }, /area/centcom/ss220/bar) "fZv" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -10820,7 +10818,7 @@ name = "Защита КПП"; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/item/pen/multi/fountain{ pixel_x = 6; @@ -11004,9 +11002,9 @@ /turf/simulated/floor/carpet/royalblack, /area/centcom/ss220/general) "gGk" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Развед. Центр"; - req_access_txt = "101" + name = "Развед. Центр" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -11303,9 +11301,7 @@ }, /area/centcom/ss220/admin1) "gNL" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -11579,8 +11575,8 @@ /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) "gXr" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/hatch{ - req_access_txt = "109"; aiControlDisabled = 1; name = "Assault Pod" }, @@ -11634,7 +11630,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 8; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/preopen{ id_tag = "CC_Turret"; @@ -11655,14 +11651,14 @@ name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Shitspawn_Interior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Shitspawn_Interior_1"; @@ -11670,7 +11666,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Shitspawn_Exterior_1"; @@ -11678,7 +11674,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -11695,8 +11691,8 @@ }, /area/centcom/ss220/medbay) "gYI" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Туалеты" }, /turf/simulated/floor/plasteel, @@ -11902,7 +11898,7 @@ color = "red"; icon_state = "rightsecure"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/curtain/black{ pixel_y = 32; @@ -12031,7 +12027,7 @@ "hhC" = ( /obj/machinery/door/airlock/centcom{ name = "Отдел кадров"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 9 @@ -12107,7 +12103,7 @@ "hka" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 @@ -12125,8 +12121,8 @@ /turf/simulated/floor/wood/oak, /area/centcom/ss220/park) "hkd" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Рабочая Зона" }, /turf/simulated/floor/plasteel/dark, @@ -12137,7 +12133,7 @@ }, /obj/machinery/door/airlock/external{ name = "Ship External Access"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/fans/tiny, /turf/simulated/floor/plasteel{ @@ -12214,7 +12210,7 @@ id = "gulagshuttleflasher"; name = "Flash Control"; pixel_y = -24; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -12258,7 +12254,7 @@ "hoK" = ( /obj/machinery/door/airlock/centcom{ name = "Оружейная"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_Office_Armory"; @@ -12268,7 +12264,7 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_Office_Armory"; name = "Blast Door Open"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -12438,7 +12434,7 @@ /obj/structure/table, /obj/machinery/door/window/brigdoor{ color = "red"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -12542,7 +12538,7 @@ "hvB" = ( /obj/machinery/door/airlock/multi_tile/command/glass{ name = "Командный Центр"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/stairs/left{ color = "gray" @@ -12769,7 +12765,7 @@ /obj/machinery/door_control/no_emag{ id = "syndieshutters"; name = "remote shutter control"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -12956,7 +12952,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; dir = 8; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating{ icon = 'icons/turf/floors.dmi'; @@ -13335,10 +13331,10 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "150"; pixel_y = 30; id = "nukeop_storage"; - name = "ATOM Storage" + name = "ATOM Storage"; + req_access = list(150) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership) @@ -13381,7 +13377,7 @@ "hRX" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -13549,9 +13545,7 @@ }, /area/syndicate_mothership) "hXH" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, @@ -13855,7 +13849,7 @@ layer = 4; name = "Prison Flasher"; pixel_x = -26; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/light_fake/small{ dir = 8 @@ -13925,9 +13919,7 @@ /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) "ilF" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -14114,8 +14106,8 @@ wires = 1; id = "nukeop_ready"; name = "Shuttle Dock Door"; - req_access_txt = "151"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(151) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14220,12 +14212,12 @@ /obj/machinery/light/small/directional/west, /obj/machinery/airlock_controller/air_cycler{ pixel_x = -25; - req_access_txt = "150"; vent_link_id = "syndishuttle_vent"; ext_door_link_id = "syndishuttle_door_ext"; int_door_link_id = "syndishuttle_door_int"; ext_button_link_id = "syndishuttle_btn_ext"; - int_button_link_id = "syndishuttle_btn_int" + int_button_link_id = "syndishuttle_btn_int"; + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14428,8 +14420,8 @@ /obj/structure/table/reinforced, /obj/machinery/door_control/no_emag/east{ id = "CC_Armory_Advanced_3"; - req_access_txt = "114"; - name = "Энергетическое" + name = "Энергетическое"; + req_access = list(114) }, /obj/item/ammo_box/magazine/m556{ pixel_y = 5 @@ -14597,8 +14589,8 @@ pixel_x = 6 }, /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - name = "Брифинг-зал" + name = "Брифинг-зал"; + req_access = list(114) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin3) @@ -14782,7 +14774,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_Armory_Mech"; name = "Оружейная - Мехи"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/item/borg/upgrade/thrusters, /obj/item/borg/upgrade/restart, @@ -15286,7 +15278,7 @@ "jak" = ( /obj/machinery/door/airlock/external{ name = "Ship External Access"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/fans/tiny, /turf/simulated/floor/plasteel{ @@ -15326,10 +15318,10 @@ /obj/machinery/door_control/no_emag{ id = "Aspid_main_storage"; wires = 1; - req_access_txt = "153"; name = "Aspid main storage"; emagged = 1; - pixel_y = -32 + pixel_y = -32; + req_access = list(153) }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowalt" @@ -15361,7 +15353,7 @@ /area/centcom/ss220/admin3) "jef" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -15729,8 +15721,8 @@ pixel_y = 6 }, /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - dir = 8 + dir = 8; + req_access = list(114) }, /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) @@ -16382,9 +16374,9 @@ pixel_x = 32; id = "Aspid_poddor_right"; wires = 1; - req_access_txt = "153"; name = "Aspid poddor"; - emagged = 1 + emagged = 1; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -16467,7 +16459,7 @@ pixel_y = 4 }, /obj/machinery/door_control/no_emag/west{ - req_one_access_txt = "114"; + req_access = list(114); name = "Огнестрел"; id = "CC_Armory_Advanced_2" }, @@ -16579,7 +16571,7 @@ "jPy" = ( /obj/machinery/door/airlock/security/glass{ name = "Escape Shuttle Cell"; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) @@ -16885,9 +16877,9 @@ /turf/simulated/floor/fakespace, /area/centcom/ss220/bar) "kdh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Лазарет"; - req_access_txt = "101" + name = "Лазарет" }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -17257,8 +17249,8 @@ pixel_x = 2 }, /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - dir = 8 + dir = 8; + req_access = list(114) }, /obj/item/reagent_containers/drinks/drinkingglass{ pixel_y = 3 @@ -17673,7 +17665,7 @@ layer = 4; name = "Prison Flasher"; pixel_x = 26; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/light_fake/small{ dir = 4 @@ -17754,7 +17746,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "СС_Interior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -17765,7 +17757,7 @@ /obj/machinery/door_control/no_emag/north{ id = "СС_Briefing_Room_BSA"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -17818,16 +17810,16 @@ }, /area/centcom/ss220/medbay) "kEZ" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door_control/no_emag{ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/machinery/door/poddoor{ @@ -17836,7 +17828,7 @@ id_tag = "syndicate_sit_1"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating, /area/shuttle/syndicate_sit) @@ -17863,7 +17855,7 @@ "kFm" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_3"; @@ -17873,7 +17865,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_SOD_3"; name = "Переход в Отдел Специальных Операций"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 @@ -18016,10 +18008,10 @@ }, /area/shuttle/syndicate) "kIS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -18027,15 +18019,15 @@ id_tag = "syndicate_sit_1"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/machinery/door_control/no_emag{ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_y = -23; - req_access_txt = "150"; - wires = 1 + wires = 1; + req_access = list(150) }, /obj/docking_port/mobile{ dir = 4; @@ -18081,11 +18073,11 @@ /obj/machinery/door_control/no_emag/north{ id = "СС_conf_private"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/airlock/centcom{ name = "Переговорная"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) @@ -18221,7 +18213,7 @@ /obj/machinery/door_control/no_emag/west{ id = "cc_mech_weapon"; name = "Оружейная - Мехи"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "navybluefull" @@ -18328,7 +18320,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Cargo_Office_Interior_1"; @@ -18336,7 +18328,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/general) @@ -18691,7 +18683,7 @@ /obj/machinery/flasher_button{ id = "gulagshuttleflasher"; name = "Flash Control"; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -18900,7 +18892,7 @@ "lhO" = ( /obj/machinery/door/airlock/centcom{ name = "Шаттл Доставки"; - req_one_access_txt = "106" + req_access = list(106) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/bar) @@ -19121,7 +19113,7 @@ "lpN" = ( /obj/machinery/door/airlock/centcom{ name = "Хранилище"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ layer = 3; @@ -19131,7 +19123,7 @@ /obj/machinery/door_control/no_emag/west{ name = "Хранилище"; id = "cc_trial"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/supply) @@ -19149,9 +19141,9 @@ id = "syndFB_baseleft"; name = "Forward Base Access"; pixel_y = -25; - req_access_txt = "153"; wires = 1; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -19221,7 +19213,7 @@ "lsx" = ( /obj/structure/closet/secure_closet/guncabinet{ name = "LMG M249 SAW"; - req_access_txt = "114" + req_access = list(114) }, /obj/item/ammo_box/magazine/mm556x45/ap, /obj/item/ammo_box/magazine/mm556x45/ap, @@ -19447,7 +19439,7 @@ /area/centcom/ss220/admin2) "lvS" = ( /obj/machinery/door/airlock/centcom{ - req_one_access_txt = "101"; + req_access = list(101); id_tag = "CC_Cargo_Office_Interior_1" }, /obj/effect/mapping_helpers/airlock/autoname, @@ -19832,7 +19824,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 4; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/item/paper_bin/nanotrasen{ pixel_x = -4; @@ -19981,7 +19973,7 @@ /area/centcom/ss220/admin1) "lNa" = ( /obj/structure/closet/secure_closet/medical1{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/storage/box/beakers/bluespace, /obj/item/storage/box/beakers/bluespace, @@ -20098,7 +20090,7 @@ /area/syndicate_mothership/control) "lPU" = ( /obj/structure/closet/secure_closet/personal/cabinet{ - req_one_access_txt = "114"; + req_access = list(114); req_access = null }, /obj/item/clothing/head/towel/orange, @@ -20206,7 +20198,7 @@ /area/centcom/ss220/general) "lTh" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "153" + req_access = list(153) }, /obj/item/clothing/gloves/combat, /obj/item/radio/headset/syndicate/alt/syndteam, @@ -20587,8 +20579,8 @@ /turf/simulated/floor/indestructible/grass/no_creep, /area/centcom/ss220/admin1) "mgU" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Спальня" }, /turf/simulated/floor/plasteel/dark, @@ -20878,7 +20870,7 @@ "mot" = ( /obj/machinery/door/airlock/centcom{ name = "Телепортерная"; - req_one_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -21114,7 +21106,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/cryopod{ pixel_y = -32; - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/cryopod/offstation{ icon_state = "sleeper_s"; @@ -21187,7 +21179,7 @@ "mzs" = ( /obj/machinery/door/window/brigdoor{ color = "red"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -21262,8 +21254,8 @@ /obj/machinery/access_button{ autolink_id = "syndicate_jail_button_ext"; name = "Jail Access Button"; - req_access_txt = "153"; - pixel_x = -25 + pixel_x = -25; + req_access = list(153) }, /turf/simulated/floor/plasteel{ icon_state = "brownoldfull" @@ -21958,7 +21950,7 @@ "nbq" = ( /obj/machinery/door/airlock/security/glass{ name = "Навигатор Дроп Пода"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -22183,7 +22175,7 @@ "nhQ" = ( /obj/machinery/door/window/reinforced/normal{ name = "Операционная"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /obj/effect/turf_decal/caution{ @@ -22377,10 +22369,10 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; id = "nukeop_outside"; - name = "ATOM Outside Doors" + name = "ATOM Outside Doors"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -23069,7 +23061,7 @@ color = "#8080ff"; id = "CC_Armory_Red"; name = "Оружейная - Уровень 3"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 4; @@ -23257,7 +23249,7 @@ "nNZ" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -23276,9 +23268,7 @@ }, /area/centcom/ss220/park) "nOt" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue" @@ -23381,7 +23371,7 @@ name = "OMICRON"; color = "#ffbf80"; id = "CC_DeathSquad"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) @@ -23574,9 +23564,9 @@ }, /area/syndicate_mothership) "nXF" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Морг"; - req_access_txt = "101" + name = "Морг" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -23586,7 +23576,7 @@ /obj/machinery/door_control/no_emag/north{ name = "Pod Door Control"; id = "ert_shuttle_door"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark{ dir = 9; @@ -23850,7 +23840,7 @@ /area/syndicate_mothership) "okd" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel, /area/centcom/ss220/general) @@ -24068,7 +24058,7 @@ "oqA" = ( /obj/machinery/computer/cryopod{ pixel_x = 32; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/light_fake/small{ dir = 4 @@ -24107,7 +24097,7 @@ id = "smindicate"; name = "External Shutters Control"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "syndishuttle_vent"; @@ -24118,9 +24108,9 @@ }, /area/shuttle/syndicate) "orV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Шаттл Нанотрейзен"; - req_access_txt = "101" + name = "Шаттл Нанотрейзен" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -24328,10 +24318,10 @@ /turf/simulated/floor/indestructible/grass/no_creep, /area/centcom/ss220/admin1) "oyE" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door/poddoor{ density = 0; @@ -24670,7 +24660,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/curtain/black{ pixel_y = 32; @@ -25174,7 +25164,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 8; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -25233,8 +25223,8 @@ id = "SST_armory_main"; emagged = 1; wires = 1; - req_access_txt = "153"; - name = "SST Armory" + name = "SST Armory"; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -25309,7 +25299,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_6"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -25434,7 +25424,7 @@ "peR" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -25513,9 +25503,9 @@ /turf/simulated/floor/carpet/red, /area/centcom/ss220/bar) "pjg" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ name = "Assault Pod"; - req_access_txt = "109"; id_tag = "nt_drop_pod" }, /obj/structure/fans/tiny, @@ -25615,7 +25605,7 @@ color = "#ff8080"; id = "CC_Armory_Blue"; name = "Оружейная - Уровень 2"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 8; @@ -25804,7 +25794,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -25941,9 +25931,9 @@ /area/centcom/ss220/jail) "pyG" = ( /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; dir = 8; - name = "Отдел кадров" + name = "Отдел кадров"; + req_access = list(114) }, /turf/simulated/floor/carpet/red, /area/centcom/ss220/admin2) @@ -26237,9 +26227,9 @@ name = "Teleporter"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; pixel_y = 32; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding/corner{ dir = 5 @@ -26316,7 +26306,7 @@ /area/centcom/ss220/admin2) "pMO" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "153" + req_access = list(153) }, /obj/item/clothing/gloves/combat, /obj/item/radio/headset/syndicate/alt/syndteam, @@ -26692,7 +26682,7 @@ "pUc" = ( /obj/machinery/door/airlock/centcom{ name = "ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -26795,10 +26785,10 @@ }, /area/syndicate_mothership/infteam) "pYp" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_access_txt = "109"; aiControlDisabled = 1 }, /obj/docking_port/mobile{ @@ -26824,7 +26814,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "CC_Cargo_Exterior_1"; name = "Зона ЦК Карго"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_BD_Cargo_Exterior_1"; @@ -26833,7 +26823,7 @@ /obj/machinery/door_control/no_emag{ id = "СС_BD_Cargo_Exterior_1"; name = "Blast Door Open"; - req_one_access_txt = "104"; + req_access = list(104); pixel_y = 24 }, /turf/simulated/floor/plasteel/dark, @@ -26896,7 +26886,7 @@ "qbw" = ( /obj/machinery/door/airlock/command/glass{ name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) @@ -27357,9 +27347,9 @@ }, /area/centcom/ss220/bar) "qsh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -27370,7 +27360,7 @@ /obj/machinery/door_control/no_emag/west{ name = "Blast Door Open"; id = "СС_COO_BSA"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin2) @@ -27496,7 +27486,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Secure Door"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium, /area/shuttle/syndicate) @@ -27513,8 +27503,8 @@ dir = 8 }, /obj/machinery/door/airlock/hatch/syndicate/vault{ - req_access_txt = "153"; - name = "Vault" + name = "Vault"; + req_access = list(153) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership/control) @@ -27741,8 +27731,8 @@ /obj/machinery/door/window/brigdoor{ color = "red"; dir = 8; - req_access_txt = "150"; - name = "Kitchen" + name = "Kitchen"; + req_access = list(150) }, /turf/simulated/floor/plating{ icon = 'icons/turf/floors.dmi'; @@ -27832,7 +27822,7 @@ "qHy" = ( /obj/machinery/door/airlock/centcom{ name = "Зона ЦК"; - req_one_access_txt = "104" + req_access = list(104) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -27909,8 +27899,8 @@ /area/syndicate_mothership) "qJx" = ( /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - dir = 8 + dir = 8; + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -27936,7 +27926,7 @@ "qKs" = ( /obj/structure/closet/secure_closet/guncabinet{ name = "Automatic Shotgun"; - req_access_txt = "114" + req_access = list(114) }, /obj/item/gun/projectile/automatic/shotgun/bulldog, /obj/item/gun/projectile/automatic/shotgun/bulldog, @@ -28160,10 +28150,10 @@ /obj/machinery/door_control/no_emag{ pixel_x = 32; id = "SIT_ready"; - req_access_txt = "150"; specialfunctions = 4; wires = 1; - name = "Shuttle Dock Door" + name = "Shuttle Dock Door"; + req_access = list(150) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -28189,18 +28179,18 @@ /obj/machinery/door_control/no_emag/south{ id = "SST_armory_mech_maintenance"; wires = 1; - req_access_txt = "153"; emagged = 1; - name = "SST_armory_mech_maintenance" + name = "SST_armory_mech_maintenance"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -40; id = "SST_armory_mech_mauler"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST Armory Mech Mauler"; - color = "#ff9999" + color = "#ff9999"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -28208,9 +28198,9 @@ id = "SST_armory_mech_gygax"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST_armory_mech_gygax"; - color = "#ffdd99" + color = "#ffdd99"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -28218,9 +28208,9 @@ id = "SST_armory_mech_rover"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST Armory Mech Rover"; - color = "#9999ff" + color = "#9999ff"; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -28228,9 +28218,9 @@ }, /area/syndicate_mothership/elite_squad) "qUe" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -28241,7 +28231,7 @@ /obj/machinery/door_control/no_emag/south{ id = "СС_COO_Room"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_herringbone" @@ -28256,7 +28246,7 @@ /area/centcom/ss220/admin2) "qUg" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plating, /area/centcom/ss220/bar) @@ -28372,8 +28362,8 @@ }, /area/syndicate_mothership) "qZh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Зона Отдыха" }, /turf/simulated/floor/plasteel/dark, @@ -28442,7 +28432,7 @@ /obj/structure/morgue, /obj/machinery/door/window/reinforced/normal{ name = "Морг"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /obj/structure/window/reinforced, @@ -28606,10 +28596,10 @@ }, /area/centcom/ss220/medbay) "rfM" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -28617,7 +28607,7 @@ id_tag = "syndicate_elite"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -29166,21 +29156,21 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Exterior_2"; name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Interior_2"; name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_Interior_2"; @@ -29188,7 +29178,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin1) @@ -29354,7 +29344,7 @@ /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/structure/closet/secure_closet/personal/cabinet{ - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) @@ -29576,7 +29566,7 @@ "rBo" = ( /obj/machinery/door/airlock/centcom{ name = "Дипломатический корпус"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_small" @@ -29633,7 +29623,7 @@ "rDY" = ( /obj/machinery/door/window/reinforced/normal{ name = "Операционная"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /turf/simulated/floor/plasteel{ @@ -29652,7 +29642,7 @@ color = "#ffbf80"; id = "CC_DeathSquad"; name = "Blast Door Control"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 4; @@ -29711,14 +29701,14 @@ name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Cargo_Exterior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Cargo_Exterior_1"; @@ -29726,7 +29716,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Cargo_Interior_1"; @@ -29734,7 +29724,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ dir = 1; @@ -29815,9 +29805,7 @@ /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) "rKF" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/jail) "rLd" = ( @@ -30126,7 +30114,7 @@ "rSX" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -30405,7 +30393,7 @@ "san" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал Верховного Командования"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin2) @@ -30447,7 +30435,7 @@ "sca" = ( /obj/machinery/door/airlock/centcom{ name = "Тюрьма"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_10"; @@ -30457,7 +30445,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_10"; name = "Тюрьма"; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/jail) @@ -30862,7 +30850,7 @@ color = "#ffbf80"; id = "CC_Armory_Epsilon"; name = "Оружейная - Уровень 4"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 9; @@ -30995,9 +30983,9 @@ /turf/simulated/floor/wood/oak, /area/syndicate_mothership) "srs" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОЦК"; - req_access_txt = "101" + name = "Кабинет ОЦК" }, /turf/simulated/floor/mineral/plastitanium, /area/centcom/ss220/general) @@ -31059,7 +31047,7 @@ "stR" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 10 @@ -31149,9 +31137,9 @@ /turf/simulated/floor/carpet, /area/centcom/ss220/admin3) "syn" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -31162,13 +31150,13 @@ /obj/machinery/door_control/no_emag/south{ id = "СС_COO_Room"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin2) "syo" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Рабочая Зона" }, /turf/simulated/floor/plasteel, @@ -31519,7 +31507,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "CC_Exterior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_BD_Exterior_2"; @@ -31528,7 +31516,7 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Exterior_2"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/effect/turf_decal/delivery/white, /turf/simulated/floor/plasteel/dark, @@ -31858,12 +31846,12 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Exterior_1"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/machinery/door/airlock/centcom{ id_tag = "CC_Exterior_1"; name = "Зона ЦК Карго"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/bar) @@ -32280,8 +32268,8 @@ name = "Medbay"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -32292,7 +32280,7 @@ "tfv" = ( /obj/machinery/door/airlock/centcom{ name = "ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -32739,7 +32727,7 @@ /obj/machinery/door_control/no_emag{ id = "СС_BD_Shitspawn_Interior_1"; name = "Blast Door Open"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 24 }, /obj/machinery/door/poddoor/impassable{ @@ -32748,7 +32736,7 @@ }, /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -32782,7 +32770,7 @@ /obj/machinery/door_control/no_emag{ id = "СС_BD_Shitspawn_Exterior_1"; name = "Blast Door Open"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 24 }, /obj/machinery/door/poddoor/impassable{ @@ -32791,7 +32779,7 @@ }, /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -32831,9 +32819,9 @@ /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) "tAi" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -32844,7 +32832,7 @@ /obj/machinery/door_control/no_emag/west{ name = "Blast Door Open"; id = "СС_COO_Briefing_Room"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin2) @@ -33045,8 +33033,8 @@ dir = 4 }, /obj/machinery/door/airlock/hatch/syndicate/vault{ - req_access_txt = "153"; - name = "Vault" + name = "Vault"; + req_access = list(153) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership/control) @@ -33091,18 +33079,18 @@ /obj/machinery/door_control/no_emag/south{ emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST Armory Basic Weapons"; id = "SST_armory_basic"; - color = "#99ff99" + color = "#99ff99"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -40; id = "SST_armory_advanced"; emagged = 1; wires = 1; - req_access_txt = "153"; - name = "SST_armory_advanced" + name = "SST_armory_advanced"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -33110,9 +33098,9 @@ id = "SST_armory_grenades"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST_armory_grenades"; - color = "#ffdd99" + color = "#ffdd99"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -33120,9 +33108,9 @@ id = "SST_armory_support"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST_armory_support"; - color = "#9999ff" + color = "#9999ff"; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -33223,7 +33211,7 @@ "tKN" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -34048,10 +34036,10 @@ }, /area/centcom/ss220/command) "uod" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ name = "Assault Pod"; - aiControlDisabled = 1; - req_access_txt = "150" + aiControlDisabled = 1 }, /obj/docking_port/mobile/assault_pod, /turf/simulated/floor/mineral/plastitanium/red, @@ -34173,11 +34161,11 @@ /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) "urd" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_int"; locked = 1; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plating, @@ -34690,10 +34678,10 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; id = "SIT_outside"; - name = "SIT Outside Doors" + name = "SIT Outside Doors"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -34810,17 +34798,17 @@ name = "Bolt Cell Doors"; normaldoorcontrol = 1; pixel_y = -32; - req_access_txt = "150"; specialfunctions = 4; - wires = 1 + wires = 1; + req_access = list(150) }, /obj/effect/landmark/spawner/prisonsecuritywarp, /obj/machinery/flasher_button{ id = "syndie_FB_cells"; layer = 4; name = "Prison Flasher"; - req_access_txt = "150"; - pixel_y = -24 + pixel_y = -24; + req_access = list(150) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) @@ -34947,10 +34935,10 @@ }, /area/centcom/ss220/bar) "uRN" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ name = "Assault Pod"; - aiControlDisabled = 1; - req_access_txt = "150" + aiControlDisabled = 1 }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/assault_pod) @@ -34995,7 +34983,7 @@ "uUb" = ( /obj/machinery/door/airlock/titanium/glass{ name = "Emergency Airlock Access"; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel, /area/shuttle/escape) @@ -35071,8 +35059,8 @@ /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "uWb" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Пункт Отправки" }, /turf/simulated/floor/plasteel/dark, @@ -35412,8 +35400,8 @@ /obj/machinery/door_control/no_emag{ id = "syndieshutters_Aspid"; name = "remote shutter control"; - req_access_txt = "150"; - wires = 1 + wires = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -35492,8 +35480,8 @@ id = "syndFB_lockdown"; name = "Forward Base Bridge Lockdown"; pixel_y = -25; - req_access_txt = "153"; - wires = 1 + wires = 1; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -35544,14 +35532,14 @@ /area/centcom/ss220/supply) "vkS" = ( /obj/machinery/door/airlock/highsecurity{ - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "vkU" = ( /obj/machinery/door/airlock/centcom{ name = "СРТ"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_9"; @@ -35561,7 +35549,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_9"; name = "СРТ"; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -35943,7 +35931,7 @@ name = "Защита КПП"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ dir = 1; @@ -36126,9 +36114,9 @@ /obj/machinery/door_control/no_emag{ pixel_x = -32; id = "SST_ready"; - req_access_txt = "150"; specialfunctions = 4; - wires = 1 + wires = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -36185,9 +36173,9 @@ name = "Teleporter"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; pixel_y = 32; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding/corner{ dir = 5 @@ -36334,9 +36322,9 @@ id = "syndFB_baseright"; name = "Forward Base Access"; pixel_y = -25; - req_access_txt = "153"; wires = 1; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -36561,7 +36549,7 @@ /obj/machinery/door/airlock/external{ id_tag = "specops_away"; name = "Шаттл ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/structure/fans/tiny, /obj/effect/turf_decal/stripes/line{ @@ -36623,7 +36611,7 @@ /area/syndicate_mothership) "vJZ" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /obj/item/restraints/handcuffs/pinkcuffs{ layer = 1 @@ -37167,7 +37155,7 @@ /obj/machinery/door_control/no_emag/south{ name = "Pod Door Control"; id = "ert_shuttle_door"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark{ icon_state = "darkbluealtstrip" @@ -37284,10 +37272,10 @@ /area/centcom/ss220/supply) "wgn" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_access_txt = "109"; aiControlDisabled = 1 }, /turf/simulated/floor/plating, @@ -37298,9 +37286,9 @@ id = "nukeop_ready"; name = "Mission Launch Control"; pixel_y = 26; - req_access_txt = "151"; specialfunctions = 4; - wires = 1 + wires = 1; + req_access = list(151) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership) @@ -38062,7 +38050,7 @@ "wAI" = ( /obj/machinery/door/airlock/centcom{ name = "ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ name = "Зона Отправки"; @@ -38073,7 +38061,7 @@ /obj/machinery/door_control/no_emag/no_cyborg{ id = "cc_dispatch_zone"; name = "Зона Отправки"; - req_one_access_txt = "114"; + req_access = list(114); pixel_y = 24 }, /obj/effect/turf_decal/delivery/blue, @@ -38148,12 +38136,12 @@ /obj/machinery/door/airlock/centcom{ id_tag = "СС_Interior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Interior_2"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_BD_Interior_2"; @@ -38190,7 +38178,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 4; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) @@ -38745,9 +38733,9 @@ pixel_x = -32; id = "Aspid_poddor_left"; wires = 1; - req_access_txt = "153"; name = "Aspid poddor"; - emagged = 1 + emagged = 1; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -39019,7 +39007,7 @@ "xcl" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_5"; @@ -39029,7 +39017,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_5"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 @@ -39072,30 +39060,30 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -25; id = "SyndFB_prison_stroll"; name = "Prison Stroll Zone"; normaldoorcontrol = 4; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -35; pixel_x = -7; name = "Prison Outside Doors"; - id = "SyndFB_prison_outside" + id = "SyndFB_prison_outside"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -35; pixel_x = 7; id = "SyndFB_prison_stroll_blast"; - name = "Prison Stroll Blastdoors" + name = "Prison Stroll Blastdoors"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -39427,9 +39415,9 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/evac) "xlO" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Бар"; - req_access_txt = "101" + name = "Бар" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -39489,9 +39477,7 @@ }, /area/centcom/ss220/jail) "xnY" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /obj/structure/window/reinforced{ dir = 1 }, @@ -39515,9 +39501,9 @@ }, /area/centcom/ss220/evac) "xoz" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Каюта ОЦК"; - req_access_txt = "101" + name = "Каюта ОЦК" }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -39683,7 +39669,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Cell Door"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium, /area/shuttle/syndicate_sit) @@ -39880,7 +39866,7 @@ /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/structure/fans/tiny, /obj/docking_port/mobile/supply{ @@ -39998,7 +39984,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_GammaShuttle"; name = "Blast Door Control"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 0; pixel_y = 24 }, @@ -40126,7 +40112,7 @@ id_tag = "s_docking_airlock"; name = "Шаттл доставки"; opacity = 0; - req_one_access_txt = "106" + req_access = list(106) }, /obj/structure/fans/tiny, /turf/simulated/floor/plasteel/dark, @@ -40223,8 +40209,8 @@ /obj/machinery/access_button{ autolink_id = "syndicate_jail_button_int"; name = "Jail Access Button"; - req_access_txt = "153"; - pixel_x = -25 + pixel_x = -25; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -40252,7 +40238,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Arrivals Post"; - req_access_txt = "154"; + req_access = list(154); dir = 4 }, /obj/machinery/airlock_controller/access_controller{ @@ -40678,10 +40664,10 @@ /turf/simulated/wall/mineral/titanium, /area/shuttle/siberia) "xZz" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -40689,7 +40675,7 @@ id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/docking_port/mobile{ @@ -40728,7 +40714,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_7"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" diff --git a/_maps/map_files220/generic/centcomm_test.dmm b/_maps/map_files220/generic/centcomm_test.dmm index 3a83e655e67f..bf0b4d91a090 100644 --- a/_maps/map_files220/generic/centcomm_test.dmm +++ b/_maps/map_files220/generic/centcomm_test.dmm @@ -764,7 +764,7 @@ /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -1607,9 +1607,7 @@ /turf/simulated/floor/wood/oak, /area/admin) "yE" = ( -/obj/machinery/economy/vending/nta/admin{ - req_access = "0" - }, +/obj/machinery/economy/vending/nta/admin, /turf/simulated/floor/wood/oak, /area/admin) "yH" = ( @@ -2546,7 +2544,7 @@ /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/structure/fans/tiny, /obj/docking_port/mobile/supply{ diff --git a/_maps/map_files220/shuttles/ferry_medical.dmm b/_maps/map_files220/shuttles/ferry_medical.dmm index 8d8344209c4c..2938962b830a 100644 --- a/_maps/map_files220/shuttles/ferry_medical.dmm +++ b/_maps/map_files220/shuttles/ferry_medical.dmm @@ -133,9 +133,7 @@ /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/transport) "t" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/transport) "w" = ( diff --git a/_maps/map_files220/stations/boxstation.dmm b/_maps/map_files220/stations/boxstation.dmm index 0a48780ce533..48300fe7ac8a 100644 --- a/_maps/map_files220/stations/boxstation.dmm +++ b/_maps/map_files220/stations/boxstation.dmm @@ -544,22 +544,22 @@ /area/station/security/permabrig) "adP" = ( /obj/structure/shelf/security, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = -3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = 3 }, /turf/simulated/floor/plasteel{ @@ -762,7 +762,7 @@ /obj/machinery/button/windowtint/east{ id = "HoS"; pixel_y = -8; - req_one_access_txt = "58" + req_access = list(58) }, /obj/machinery/keycard_auth/east{ pixel_y = 2 @@ -896,7 +896,7 @@ /area/station/security/prisonershuttle) "afe" = ( /obj/structure/shelf/security, -/obj/item/storage/box/tranquilizer, +/obj/item/storage/fancy/shell/tranquilizer, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -915,14 +915,14 @@ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 6; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control/shutter/south{ desc = "A remote control-switch to lock down the prison wing's blast doors"; id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -6; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1218,7 +1218,7 @@ name = "Office Door"; pixel_x = 6; pixel_y = 15; - req_one_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control/shutter{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -1226,14 +1226,14 @@ name = "Prison Wing Lockdown"; pixel_x = 6; pixel_y = 6; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control/shutter{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 6; pixel_y = -3; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/carpet, /area/station/command/office/hos) @@ -3535,7 +3535,7 @@ "apy" = ( /obj/machinery/door/window/reinforced/normal{ dir = 8; - req_one_access_txt = "63" + req_access = list(63) }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ @@ -4371,8 +4371,7 @@ "asO" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/lawoffice) @@ -4420,12 +4419,12 @@ /obj/machinery/door_control/normal/east{ id = "BrigRight"; name = "Brig Foyer Right Doors"; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control/normal/east{ pixel_y = 8; name = "Brig Foyer Left Doors"; - req_one_access_txt = "63"; + req_access = list(63); desc = "A remote control switch for the brig foyer."; id = "BrigLeft" }, @@ -4434,7 +4433,7 @@ desc = "A remote control switch for the brig foyer."; id = "BrigEast"; name = "Brig Foyer East Doors"; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -4527,7 +4526,7 @@ "atp" = ( /obj/machinery/door/window/reinforced/normal{ dir = 8; - req_one_access_txt = "63" + req_access = list(63) }, /obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ dir = 8 @@ -4631,8 +4630,7 @@ "atN" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -5027,7 +5025,7 @@ /obj/structure/cable, /obj/machinery/button/windowtint/south{ id = "Processing"; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/light/directional/east, /turf/simulated/floor/plasteel, @@ -6136,7 +6134,7 @@ "ayH" = ( /obj/machinery/button/windowtint/west{ id = "IAA"; - req_one_access_txt = "38" + req_access = list(38) }, /obj/machinery/economy/vending/lawdrobe, /turf/simulated/floor/wood/fancy/cherry, @@ -6718,7 +6716,7 @@ "azY" = ( /obj/machinery/button/windowtint/west{ id = "Interrogation"; - req_one_access_txt = "63"; + req_access = list(63); pixel_y = -6 }, /obj/structure/cable{ @@ -6942,13 +6940,13 @@ /obj/machinery/button/windowtint/east{ id = "Magistrate"; pixel_y = 6; - req_one_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control/normal/east{ id = "magistrateofficedoor"; name = "Office Door"; pixel_y = -6; - req_one_access_txt = "74" + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -7356,8 +7354,7 @@ /obj/machinery/status_display/directional/north, /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/magistrate) @@ -7571,7 +7568,7 @@ /obj/machinery/door_control/shutter/north{ id = "brig_courtroom"; name = "Brig Courtroom Shutter Control"; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plating, /area/station/security/brig) @@ -8072,7 +8069,7 @@ /obj/machinery/button/windowtint/north{ id = "Detective"; pixel_x = -8; - req_one_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -9287,8 +9284,7 @@ /obj/item/stock_parts/cell/high/empty, /obj/item/toy/figure/crew/ninja, /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, @@ -9338,7 +9334,7 @@ /obj/machinery/door/window/classic/normal{ dir = 1; name = "Kitchen"; - req_one_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -10205,8 +10201,8 @@ /obj/item/gavelhammer, /obj/machinery/button/windowtint{ id = "Courtroom"; - req_one_access_txt = "74;3"; - pixel_y = -12 + pixel_y = -12; + req_one_access = list(74,3) }, /turf/simulated/floor/carpet/black, /area/station/legal/courtroom) @@ -11026,7 +11022,7 @@ /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/access_button/north{ autolink_id = "apsolar_btn_ext"; - req_one_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -14390,7 +14386,7 @@ /obj/structure/closet/coffin, /obj/machinery/door/window/classic/normal{ name = "Coffin Storage"; - req_one_access_txt = "22" + req_access = list(22) }, /obj/structure/window/reinforced{ dir = 8 @@ -16238,7 +16234,7 @@ /obj/machinery/door/window/classic/reversed{ dir = 4; name = "Hydroponics Delivery"; - req_one_access_txt = "35" + req_access = list(35) }, /obj/effect/mapping_helpers/airlock/windoor/access/any/service/hydroponics{ dir = 4 @@ -16683,7 +16679,7 @@ "bjp" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_one_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -18178,21 +18174,21 @@ name = "East Bridge Blast Door Control"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter{ id = "bridge blast west"; name = "West Bridge Blast Door Control"; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter{ id = "bridge blast north"; name = "North Bridge Blast Door Control"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/keycard_auth{ pixel_x = -6; @@ -18466,8 +18462,7 @@ /area/station/hallway/primary/central/nw) "bqO" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -21485,7 +21480,7 @@ id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; - req_one_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) @@ -22267,7 +22262,7 @@ id = "robotics"; name = "Robotics Lab Shutters Control"; pixel_x = 24; - req_one_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -22929,7 +22924,7 @@ id = "rdlab2"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; - req_one_access_txt = "47" + req_access = list(47) }, /obj/effect/landmark/start/scientist, /turf/simulated/floor/plasteel{ @@ -23135,7 +23130,7 @@ id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; - req_one_access_txt = "31" + req_access = list(31) }, /obj/machinery/power/apc/directional/east, /obj/structure/cable{ @@ -23598,13 +23593,13 @@ id = "QMLoaddoor"; name = "Loading Doors"; pixel_y = -8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/door_control/shutter/west{ id = "QMLoaddoor2"; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/effect/turf_decal{ dir = 8 @@ -24047,7 +24042,7 @@ /obj/machinery/door/window/classic/normal{ dir = 8; name = "Cargo Desk"; - req_one_access_txt = "50" + req_access = list(50) }, /obj/structure/noticeboard{ pixel_y = 27 @@ -25099,7 +25094,7 @@ /obj/machinery/access_button{ autolink_id = "eng_atmos_btn_ext"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -25212,7 +25207,7 @@ /obj/machinery/button/windowtint/east{ id = "qm"; pixel_y = 8; - req_one_access_txt = "41" + req_access = list(41) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -25530,7 +25525,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_one_access_txt = "4" + req_access = list(4) }, /obj/item/folder/red{ pixel_x = -6; @@ -26019,7 +26014,7 @@ /obj/machinery/access_button{ autolink_id = "eng_s_tesla_btn_ext"; pixel_y = 24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -27903,7 +27898,7 @@ id = "xenobio4"; name = "Chamber 4 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -28703,7 +28698,7 @@ /obj/machinery/door/window/classic/reversed{ dir = 8; name = "Do Not Revive"; - req_one_access_txt = "6" + req_access = list(6) }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/windoor/access/any/medical/morgue{ @@ -29153,7 +29148,7 @@ name = "Biohazard Shutter Control"; pixel_x = -8; pixel_y = 8; - req_one_access_txt = "30" + req_access = list(30) }, /obj/item/folder/white{ pixel_x = 5; @@ -29165,7 +29160,7 @@ name = "Office Door"; pixel_x = -8; pixel_y = -2; - req_one_access_txt = "30" + req_access = list(30) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -29341,16 +29336,16 @@ id = "engemergencyeva"; name = "Lobby Emergency Supply"; pixel_x = 24; - req_access_txt = "32"; - pixel_y = 8 + pixel_y = 8; + req_access = list(32) }, /obj/machinery/door_control/normal/north{ desc = "A remote control-switch for the engineering lobby doors."; id = "englobby"; name = "Lobby Entrance"; pixel_x = 24; - req_access_txt = "32"; - pixel_y = -8 + pixel_y = -8; + req_access = list(32) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -29397,7 +29392,7 @@ /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/access_button/south{ autolink_id = "apsolar_btn_int"; - req_one_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -29432,7 +29427,7 @@ desc = "A remote control-switch for secure storage."; id = "enginestorage"; name = "Engineering Engine Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -29829,7 +29824,7 @@ id = "cmoofficedoor"; name = "Office Door"; pixel_x = -4; - req_one_access_txt = "40" + req_access = list(40) }, /obj/machinery/button/windowtint{ id = "CMO"; @@ -29841,7 +29836,7 @@ name = "Emergency Medbay Quarantine"; pixel_x = -4; pixel_y = 11; - req_one_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -33039,7 +33034,7 @@ /obj/machinery/turretid/stun{ name = "AI Antechamber Turret Control"; pixel_y = -24; - req_one_access_txt = "75" + req_access = list(75) }, /obj/machinery/camera/motion{ c_tag = "Mini Satellite Antechamber Center"; @@ -34003,7 +33998,7 @@ /obj/machinery/door_control/shutter/south{ id = "disvent"; name = "Incinerator Vent Control"; - req_one_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/meter, /obj/effect/decal/cleanable/dirt, @@ -34756,7 +34751,7 @@ int_button_link_id = "scibomb_btn_int"; int_door_link_id = "scibomb_door_int"; pixel_y = 27; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "scibomb_vent" }, /obj/structure/cable{ @@ -35676,7 +35671,7 @@ id = "xenobio6"; name = "Chamber 6 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -35956,7 +35951,7 @@ "cKD" = ( /obj/machinery/door/airlock/medical{ locked = 1; - req_one_access_txt = "33" + req_access = list(33) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/effect/mapping_helpers/airlock/access/any/medical/chemistry, @@ -38037,7 +38032,7 @@ id = "engemergencyeva"; name = "Lobby Emergency Supply"; pixel_y = 6; - req_access_txt = "32" + req_access = list(32) }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -39455,7 +39450,7 @@ /obj/machinery/access_button{ autolink_id = "eng_atmos_btn_int"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -40110,7 +40105,7 @@ id = "xenobio7"; name = "Chamber 7 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -40840,7 +40835,7 @@ /obj/machinery/access_button{ autolink_id = "eng_s_tesla_btn_int"; pixel_y = 24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -41749,13 +41744,13 @@ /obj/machinery/button/windowtint/west{ id = "CE"; pixel_y = 8; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/door_control/normal/west{ id = "ceofficedoor"; name = "Office Doors"; pixel_y = -2; - req_access_txt = "56" + req_access = list(56) }, /obj/structure/cable{ d1 = 1; @@ -43419,13 +43414,13 @@ id = "blueshieldofficedoor"; name = "Office Door"; pixel_x = 6; - req_access_txt = "67" + req_access = list(67) }, /obj/machinery/door_control/shutter/south{ id = "blueshield"; name = "Privacy Shutters Control"; pixel_x = -6; - req_access_txt = "67" + req_access = list(67) }, /obj/machinery/keycard_auth/south{ pixel_y = -34 @@ -43791,7 +43786,7 @@ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -44514,7 +44509,7 @@ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/the_singularitygen, /turf/simulated/floor/plating, @@ -45392,7 +45387,7 @@ /obj/machinery/access_button{ autolink_id = "arrivalsmaint_btn_int"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -45570,7 +45565,7 @@ /obj/machinery/door/window/classic/normal{ dir = 1; name = "Kitchen"; - req_one_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -46182,7 +46177,7 @@ /obj/machinery/access_button{ autolink_id = "eng_n_tesla_btn_int"; pixel_y = -24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -46321,7 +46316,7 @@ /obj/machinery/door_control/shutter/west{ id = "justice_blast"; name = "Space Vent"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Execution"; @@ -48310,7 +48305,7 @@ /obj/machinery/access_button{ autolink_id = "fpsolar_btn_int"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/fore_port) @@ -48521,7 +48516,7 @@ /area/station/maintenance/aft) "exC" = ( /obj/machinery/door/airlock{ - req_one_access_txt = "26" + req_access = list(26) }, /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/plating, @@ -49392,7 +49387,7 @@ /obj/machinery/turretid/stun{ name = "AI Satellite Service Bay Turret Control"; pixel_x = -6; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall/r_wall, /area/station/aisat/service) @@ -49891,7 +49886,7 @@ id = "xenobio2"; name = "Chamber 2 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -49911,7 +49906,7 @@ /obj/machinery/door_control/shutter/east{ id = "mechbay_outer"; name = "Outer Mech Bay Shutters Control"; - req_one_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -49998,7 +49993,7 @@ /obj/machinery/door_control/shutter/south{ id = "mechbay_inner"; name = "Inner Mech Bay Shutter Control"; - req_one_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -50196,8 +50191,8 @@ int_button_link_id = "eng_s_tesla_btn_int"; int_door_link_id = "eng_s_tesla_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "eng_s_tesla_vent" + vent_link_id = "eng_s_tesla_vent"; + req_access = list(10,13) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -51166,7 +51161,7 @@ id = "smstorage"; name = "Supermatter Storage"; pixel_x = 24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -52241,7 +52236,7 @@ id = "captainofficedoor"; name = "Office Door"; pixel_y = -3; - req_one_access_txt = "20" + req_access = list(20) }, /turf/simulated/floor/carpet/royalblue, /area/station/command/office/captain) @@ -52624,7 +52619,7 @@ /obj/machinery/door_control/shutter/west{ id = "teleshutter"; name = "Teleporter Shutters Access Control"; - req_one_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" @@ -53397,7 +53392,7 @@ /obj/machinery/access_button/west{ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; - req_one_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -55752,7 +55747,7 @@ /obj/machinery/access_button/north{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -55785,12 +55780,12 @@ "gXL" = ( /obj/machinery/door/window/classic/reversed{ name = "Toxins Launcher"; - req_one_access_txt = "7" + req_access = list(7) }, /obj/machinery/door/window/classic/reversed{ dir = 1; name = "Toxins Launcher"; - req_one_access_txt = "7" + req_access = list(7) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard"; @@ -57307,7 +57302,7 @@ /area/station/maintenance/apmaint) "hyE" = ( /obj/machinery/door/airlock/freezer{ - req_one_access_txt = "28" + req_access = list(28) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/structure/barricade/wooden, @@ -57449,7 +57444,7 @@ /obj/machinery/door_control/shutter/north{ id = "paramedic"; name = "Garage Door Control"; - req_one_access_txt = "66" + req_access = list(66) }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -58264,7 +58259,7 @@ id = "xenobio1"; name = "Chamber 1 Containment Blast Door"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -58420,8 +58415,8 @@ int_button_link_id = "eng_atmos_btn_int"; int_door_link_id = "eng_atmos_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "eng_atmos_vent" + vent_link_id = "eng_atmos_vent"; + req_access = list(10,13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "eng_atmos_vent"; @@ -59185,7 +59180,7 @@ /obj/machinery/access_button{ autolink_id = "fssolar_btn_ext"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/port) @@ -60155,7 +60150,7 @@ int_button_link_id = "secmaint_btn_int"; int_door_link_id = "secmaint_door_int"; pixel_y = -25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "secmaint_vent" }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -60324,7 +60319,7 @@ icon_state = "1-2" }, /obj/machinery/door/airlock/command/glass{ - req_one_access_txt = "16" + req_access = list(16) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -63011,8 +63006,7 @@ /area/station/maintenance/fpmaint2) "jFf" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/chem_dispenser, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -63931,7 +63925,7 @@ /obj/machinery/access_button{ autolink_id = "arrivalsmaint_btn_ext"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -64135,7 +64129,7 @@ desc = "A remote control-switch for the engineering security doors."; id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; - req_one_access_txt = "17;75" + req_one_access = list(17,75) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -64501,13 +64495,13 @@ id = "representative"; name = "Privacy Shutters Control"; pixel_x = -6; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/door_control/normal/south{ id = "ntrepofficedoor"; name = "Office Door"; pixel_x = 6; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/keycard_auth/south{ pixel_y = -34 @@ -65444,7 +65438,7 @@ /obj/machinery/door_control/shutter/south{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; - req_one_access_txt = "3" + req_access = list(3) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -66122,8 +66116,8 @@ int_button_link_id = "eng_sm_btn_int"; int_door_link_id = "eng_sm_door_int"; pixel_y = 25; - req_access_txt = "13"; - vent_link_id = "eng_sm_vent" + vent_link_id = "eng_sm_vent"; + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) @@ -66457,7 +66451,7 @@ autolink_id = "viro_btn_ext"; layer = 3.6; name = "Virology Lab Access Button"; - req_one_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -66883,7 +66877,7 @@ /obj/machinery/access_button{ autolink_id = "assolar_btn_int"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) @@ -68413,7 +68407,7 @@ /obj/machinery/turretid/stun{ name = "AI Chamber Hallway Turret Control"; pixel_y = 6; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall/r_wall, /area/station/aisat/hall) @@ -68437,7 +68431,7 @@ /obj/machinery/access_button{ autolink_id = "assolar_btn_ext"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) @@ -69242,7 +69236,7 @@ /obj/structure/window/reinforced, /obj/machinery/door/window/classic/normal{ layer = 3; - req_one_access_txt = "50"; + req_access = list(50); dir = 1; name = "Delivery Chute" }, @@ -71035,7 +71029,7 @@ id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_y = 8; - req_one_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -71442,7 +71436,7 @@ /obj/machinery/access_button/west{ autolink_id = "scibomb_btn_ext"; pixel_y = 24; - req_one_access_txt = "13"; + req_access = list(13); pixel_x = 0 }, /turf/simulated/floor/plating, @@ -72674,13 +72668,13 @@ id = "hopqueue"; name = "Queue Privacy Shutters Control"; pixel_x = -6; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control/shutter/north{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = 6; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -73307,13 +73301,13 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -38; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control/shutter/south{ id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = -8; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4 @@ -74198,7 +74192,7 @@ /obj/machinery/door_control/shutter/east{ id = "HydroHallway"; name = "Hydroponics Privacy Shutters Control"; - req_one_access_txt = "35" + req_access = list(35) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -74393,7 +74387,7 @@ id = "xenobio3"; name = "Chamber 3 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -74483,7 +74477,7 @@ id = "xenobio5"; name = "Chamber 5 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -74725,7 +74719,7 @@ /obj/machinery/access_button{ autolink_id = "evamaint_btn_ext"; pixel_x = 25; - req_one_access_txt = "13" + req_access = list(13) }, /obj/machinery/door/airlock/external{ id_tag = "evamaint_door_ext"; @@ -75516,7 +75510,7 @@ name = "Office Door"; pixel_x = -6; pixel_y = 3; - req_one_access_txt = "57" + req_access = list(57) }, /obj/effect/spawner/random/officetoys, /turf/simulated/floor/plasteel{ @@ -75810,7 +75804,7 @@ name = "Incinerator Access Console"; pixel_x = -26; pixel_y = 6; - req_one_access_txt = "12" + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -76162,7 +76156,7 @@ /obj/machinery/access_button{ autolink_id = "eng_sm_btn_ext"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) @@ -76239,7 +76233,7 @@ /obj/machinery/access_button{ autolink_id = "eng_sm_btn_int"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) @@ -76567,7 +76561,7 @@ autolink_id = "secmaint_btn_int"; name = "interior access button"; pixel_y = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -76664,7 +76658,7 @@ int_button_link_id = "apsolar_btn_int"; int_door_link_id = "apsolar_door_int"; pixel_y = -25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "apsolar_vent" }, /turf/simulated/floor/plating, @@ -78009,7 +78003,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /obj/machinery/access_button{ autolink_id = "secmaint_btn_ext"; - req_one_access_txt = "13"; + req_access = list(13); pixel_y = 24 }, /turf/simulated/floor/plating, @@ -80198,7 +80192,7 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plasteel{ @@ -80641,7 +80635,7 @@ /obj/machinery/door_control/shutter/west{ id = "stationawaygate"; name = "Gateway Shutters Control"; - req_one_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -81308,7 +81302,7 @@ /obj/machinery/door_control/shutter/west{ id = "atmos"; name = "Atmospherics Lockdown"; - req_access_txt = "24" + req_access = list(24) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -81321,7 +81315,7 @@ int_button_link_id = "arrivalsmaint_btn_int"; int_door_link_id = "arrivalsmaint_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "arrivalsmaint_vent" }, /turf/simulated/floor/plating, @@ -83202,7 +83196,7 @@ id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -38; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "prison"; @@ -83840,7 +83834,7 @@ /obj/machinery/access_button{ autolink_id = "fpmaint_btn_int"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -83923,7 +83917,7 @@ /obj/machinery/access_button/north{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plasteel{ @@ -86368,7 +86362,7 @@ int_button_link_id = "fpsolar_btn_int"; int_door_link_id = "fpsolar_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "fpsolar_vent" }, /obj/structure/cable{ @@ -87671,7 +87665,7 @@ /obj/machinery/access_button{ autolink_id = "fpmaint_btn_ext"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -87870,8 +87864,7 @@ /area/station/supply/storage) "snE" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /mob/living/simple_animal/hostile/scarybat, /obj/effect/spawner/random_spawners/id_skins, @@ -89449,7 +89442,7 @@ /obj/machinery/access_button{ autolink_id = "fpsolar_btn_ext"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/fore_port) @@ -89767,7 +89760,7 @@ int_button_link_id = "assolar_btn_int"; int_door_link_id = "assolar_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "assolar_vent" }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -90632,13 +90625,13 @@ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 6; - req_one_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control/shutter/south{ id = "kitchenbar"; name = "Kitchen Bar Shutters Control"; pixel_x = -6; - req_one_access_txt = "28" + req_access = list(28) }, /obj/machinery/processor, /turf/simulated/floor/plasteel{ @@ -92475,7 +92468,7 @@ /obj/machinery/access_button{ autolink_id = "fssolar_btn_int"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/port) @@ -92866,20 +92859,20 @@ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/door_control/shutter/west{ desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_y = 10; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control/shutter/west{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_y = -10; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/computer/monitor{ dir = 4; @@ -92970,7 +92963,7 @@ /obj/machinery/turretid/stun{ name = "AI Satellite Atmospherics Turret Control"; pixel_x = 4; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall/r_wall, /area/station/aisat/atmos) @@ -93961,7 +93954,7 @@ int_button_link_id = "fssolar_btn_int"; int_door_link_id = "fssolar_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "fssolar_vent" }, /turf/simulated/floor/plating, @@ -94664,7 +94657,7 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -94870,7 +94863,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /obj/machinery/access_button{ autolink_id = "evamaint_btn_int"; - req_one_access_txt = "13"; + req_access = list(13); pixel_x = 24 }, /turf/simulated/floor/plating, @@ -95155,7 +95148,7 @@ autolink_id = "xeno_btn_int"; name = "Xenobiology Access Button"; pixel_y = 24; - req_one_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment{ @@ -95760,7 +95753,7 @@ /obj/machinery/access_button/west{ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; - req_one_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/machinery/door/poddoor/preopen{ @@ -96123,9 +96116,9 @@ /obj/machinery/turretid/lethal{ check_synth = 1; name = "AI Chamber Turret Control"; - req_one_access_txt = "75"; pixel_y = 26; - pixel_x = -7 + pixel_x = -7; + req_access = list(75) }, /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) @@ -96200,8 +96193,8 @@ int_button_link_id = "eng_n_tesla_btn_int"; int_door_link_id = "eng_n_tesla_door_int"; pixel_y = -25; - req_access_txt = "10;13"; - vent_link_id = "eng_n_tesla_vent" + vent_link_id = "eng_n_tesla_vent"; + req_access = list(10,13) }, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 @@ -97433,7 +97426,7 @@ /obj/machinery/access_button{ autolink_id = "eng_n_tesla_btn_ext"; pixel_y = -24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -98195,7 +98188,7 @@ int_door_link_id = "fpmaint_door_int"; pixel_x = 24; pixel_y = 6; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "fpmaint_vent" }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -99883,7 +99876,7 @@ int_door_link_id = "evamaint_door_int"; name = "EVA Airlock Console"; pixel_x = 25; - req_one_access_txt = "1;5;11;18;24"; + req_access = list(1,5,11,18,24); vent_link_id = "evamaint_vent" }, /obj/machinery/atmospherics/pipe/manifold/hidden{ @@ -100703,7 +100696,7 @@ /obj/machinery/door/window/classic/reversed{ dir = 4; name = "Do Not Revive"; - req_one_access_txt = "6" + req_access = list(6) }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/windoor/access/any/medical/morgue{ @@ -101155,7 +101148,7 @@ /area/station/maintenance/asmaint) "wVH" = ( /obj/machinery/door/airlock/security/glass{ - req_one_access_txt = "1" + req_access = list(1) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/structure/cable{ @@ -105078,7 +105071,7 @@ /obj/machinery/access_button/east{ autolink_id = "scibomb_btn_int"; pixel_y = 24; - req_one_access_txt = "13"; + req_access = list(13); pixel_x = 0 }, /turf/simulated/floor/plating, diff --git a/_maps/map_files220/stations/deltastation.dmm b/_maps/map_files220/stations/deltastation.dmm index e050d02b691b..58b635ff21c7 100644 --- a/_maps/map_files220/stations/deltastation.dmm +++ b/_maps/map_files220/stations/deltastation.dmm @@ -640,7 +640,7 @@ desc = "A remote control switch for the IAA shutters."; id = "mechbayshutters"; name = "Mechanic's Desk Privacy Shutter Control"; - req_one_access_txt = "32" + req_access = list(32) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -709,7 +709,7 @@ /obj/machinery/door/window{ dir = 8; name = "Mechanic's Desk"; - req_one_access_txt = "32" + req_access = list(32) }, /obj/machinery/door/poddoor/shutters{ id_tag = "mechbayshutters"; @@ -5602,12 +5602,12 @@ id = "qmshutters"; name = "QM Privacy Shutter Control"; pixel_x = -6; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/button/windowtint/north{ id = "qm"; - req_one_access_txt = "19"; - pixel_x = 6 + pixel_x = 6; + req_access = list(19) }, /obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ @@ -6195,13 +6195,13 @@ pixel_x = 6; id = "psychocell2"; name = "Cell 2 Shutters Control"; - req_one_access_txt = "64" + req_access = list(64) }, /obj/machinery/door_control/shutter/south{ pixel_x = -6; id = "psychocell1"; name = "Cell 1 Shutters Control"; - req_one_access_txt = "64" + req_access = list(64) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -7154,8 +7154,8 @@ }, /obj/machinery/button/windowtint/north{ id = "qmroom"; - req_one_access_txt = "19"; - pixel_x = -8 + pixel_x = -8; + req_access = list(19) }, /turf/simulated/floor/carpet/orange, /area/station/supply/qm) @@ -9142,7 +9142,7 @@ id = "deliveryshutters"; name = "Delivery Privacy Shutter Control"; pixel_x = -6; - req_one_access_txt = "50" + req_access = list(50) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -11139,7 +11139,7 @@ /obj/machinery/access_button/west{ autolink_id = "atmostanks_btn_ext"; name = "exterior access button"; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plasteel, @@ -12497,7 +12497,7 @@ /obj/machinery/door_control/shutter/east{ id = "cargodesk"; name = "Cargo Desk Privacy Shutter Control"; - req_one_access_txt = "31" + req_access = list(31) }, /obj/item/stamp/granted{ pixel_x = -6 @@ -12552,7 +12552,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_one_access_txt = "4" + req_access = list(4) }, /obj/structure/window/reinforced, /turf/simulated/floor/plasteel{ @@ -13242,7 +13242,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/item/restraints/handcuffs/pinkcuffs, /obj/item/book/manual/wiki/security_space_law, @@ -17979,14 +17979,14 @@ id = "bridge blast west"; name = "West Bridge Blast Door Control"; pixel_x = -6; - req_access_txt = "19"; - pixel_y = 0 + pixel_y = 0; + req_access = list(19) }, /obj/machinery/door_control/shutter/east{ id = "bridge blast east"; name = "East Bridge Blast Door Control"; - req_access_txt = "19"; - pixel_x = 6 + pixel_x = 6; + req_access = list(19) }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) @@ -19238,7 +19238,7 @@ id = "bridge blast east"; name = "East Bridge Blast Door Control"; pixel_x = null; - req_access_txt = "19" + req_access = list(19) }, /obj/structure/disposalpipe/segment/corner{ dir = 4 @@ -21041,13 +21041,13 @@ id = "stationawaygate"; name = "Expedition Shutters Access Control"; pixel_x = 7; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/door_control/shutter/south{ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = -7; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/keycard_auth/south{ pixel_y = -32 @@ -21280,7 +21280,7 @@ name = "AI Chamber Turret Control"; pixel_x = -6; pixel_y = 24; - req_one_access_txt = "75" + req_access = list(75) }, /obj/effect/mapping_helpers/airlock/windoor/access/any/command/ai_upload{ dir = 4 @@ -22139,7 +22139,7 @@ id = "meetroomshutters"; name = "Privacy Shutters"; pixel_y = -2; - req_one_access_txt = "18" + req_access = list(18) }, /obj/effect/turf_decal/siding/wood/oak{ dir = 8 @@ -22425,7 +22425,7 @@ /obj/machinery/access_button/east{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/security/brig, @@ -23996,7 +23996,7 @@ id = "ceofficedoor"; name = "Office Door"; pixel_x = -5; - req_access_txt = "56" + req_access = list(56) }, /obj/item/circuitboard/autolathe{ pixel_y = 11 @@ -25617,7 +25617,7 @@ /obj/machinery/turretid/stun{ name = "AI Antechamber Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -25867,13 +25867,13 @@ /obj/machinery/door_control/shutter/west{ id = "engstorage"; name = "Engineering Secure Storage Control"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/door_control/shutter/west{ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_y = -8; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/computer/security/engineering{ dir = 4 @@ -25882,7 +25882,7 @@ id = "CE"; pixel_y = 8; range = 12; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) @@ -26296,7 +26296,7 @@ name = "Brig Foyer Left Doors"; pixel_x = -5; pixel_y = 6; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control/normal{ desc = "A remote control switch for the brig foyer."; @@ -26304,7 +26304,7 @@ name = "Brig Foyer Right Doors"; pixel_x = 5; pixel_y = 6; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -27090,7 +27090,7 @@ id = "hop"; name = "Privacy Shutters"; pixel_y = -8; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control/ticket_machine_button{ pixel_x = -24; @@ -27106,7 +27106,7 @@ /obj/machinery/door_control/shutter/west{ id = "hopqueueshutters"; name = "Queue Shutters"; - req_one_access_txt = "18" + req_access = list(18) }, /obj/item/paper_bin/nanotrasen{ pixel_x = -6; @@ -27468,7 +27468,7 @@ id = "ntrepofficedoor"; name = "Office Door"; pixel_y = -8; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/light_switch/west{ pixel_y = 32 @@ -27583,7 +27583,7 @@ id = "blueshieldofficedoor"; name = "Office Door"; pixel_x = 24; - req_access_txt = "67" + req_access = list(67) }, /obj/effect/turf_decal/siding/wood/oak{ dir = 4 @@ -28926,7 +28926,7 @@ /obj/machinery/button/windowtint/west{ id = "BS"; pixel_y = -8; - req_access_txt = "67" + req_access = list(67) }, /obj/structure/cable{ d1 = 1; @@ -28989,7 +28989,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/item/storage/box/evidence, /obj/effect/decal/cleanable/dirt, @@ -29966,7 +29966,7 @@ /obj/machinery/door_control/shutter/north{ id = "teleaccessshutter"; name = "Teleporter Shutters Access Control"; - req_access_txt = "17" + req_access = list(17) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -30095,7 +30095,7 @@ /obj/machinery/door_control/shutter/east{ id = "Singularity"; name = "Containment Blast Doors"; - req_one_access_txt = "32" + req_access = list(32) }, /obj/structure/cable/yellow{ d1 = 1; @@ -30771,7 +30771,7 @@ /obj/machinery/door_control/shutter/west{ id = "teleportershutter"; name = "Teleporter Shutters Access Control"; - req_access_txt = "17" + req_access = list(17) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -34717,7 +34717,7 @@ /obj/machinery/door_control/shutter/east{ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -37704,7 +37704,7 @@ /obj/machinery/door_control/shutter{ id = "xeno6"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -38313,7 +38313,7 @@ autolink_id = "xeno_btn_int"; name = "Xenobiology Access Button"; pixel_y = 24; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" @@ -38560,7 +38560,7 @@ /obj/machinery/door_control/shutter{ id = "xeno4"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -39073,7 +39073,7 @@ /obj/machinery/door_control/shutter{ id = "xeno3"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, @@ -39087,7 +39087,7 @@ /obj/machinery/door_control/shutter{ id = "xeno1"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, @@ -39635,7 +39635,7 @@ /obj/machinery/door_control/shutter{ id = "xeno2"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -40544,7 +40544,7 @@ /obj/machinery/access_button/south{ autolink_id = "virolab_btn_int"; name = "Virology Lab Access Button"; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -41380,7 +41380,7 @@ /obj/machinery/access_button/west{ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" @@ -41622,7 +41622,7 @@ }, /obj/machinery/door_control/shutter/north{ id = "secpilot"; - req_one_access_txt = "63"; + req_access = list(63); name = "\improper SecPilot pod door" }, /turf/simulated/floor/plasteel/dark, @@ -41760,7 +41760,7 @@ /obj/machinery/newscaster/directional/north, /obj/machinery/button/windowtint/east{ id = "rdroom"; - req_one_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/carpet/purple, /area/station/command/office/rd) @@ -42616,7 +42616,7 @@ /obj/machinery/door_control/shutter/north{ id = "roboticsshutters"; name = "Mech Bay Door Control"; - req_access_txt = "47" + req_access = list(47) }, /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -46332,20 +46332,20 @@ id = "KPPNorth"; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter{ id = "EscapeLockdown"; name = "Escape Shuttle Lockdown Control"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/bolt_control{ id = "KPPSouth"; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -49806,7 +49806,7 @@ /obj/machinery/door_control/shutter{ id = "xeno5"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -51984,9 +51984,9 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2"; pixel_y = 0; - pixel_x = 24 + pixel_x = 24; + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, @@ -54089,26 +54089,26 @@ /obj/machinery/door_control/shutter/west{ id = "ArmoryLock"; name = "Armory Lockdown"; - req_one_access_txt = "3"; + req_access = list(3); pixel_x = -36 }, /obj/machinery/door_control/shutter/west{ id = "Warden"; name = "Warden Privacy Shutters Control"; - req_one_access_txt = "3"; + req_access = list(3); pixel_y = 8; pixel_x = -36 }, /obj/machinery/button/windowtint/west{ id = "WardenD"; - req_one_access_txt = "3"; + req_access = list(3); pixel_y = -6 }, /obj/machinery/door_control/shutter/west{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; pixel_y = -8; - req_one_access_txt = "3"; + req_access = list(3); pixel_x = -36 }, /obj/machinery/camera{ @@ -55344,7 +55344,7 @@ /obj/machinery/access_button/north{ autolink_id = "apmaint2_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -56058,12 +56058,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; - req_one_access_txt = "39"; ext_door_link_id = "virolab_door_ext"; int_door_link_id = "virolab_door_int"; ext_button_link_id = "virolab_btn_ext"; int_button_link_id = "virolab_btn_int"; - pixel_x = -24 + pixel_x = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -59370,7 +59370,7 @@ /obj/machinery/door_control/normal/east{ id = "CMO"; name = "Office Door"; - req_access_txt = "40" + req_access = list(40) }, /obj/item/cartridge/chemistry{ pixel_y = 4; @@ -59611,7 +59611,7 @@ /obj/machinery/access_button/south{ autolink_id = "apsolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -59825,8 +59825,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -59842,7 +59841,7 @@ /obj/machinery/door_control/shutter{ id = "xeno7"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -60993,7 +60992,7 @@ /obj/structure/table, /obj/machinery/button/windowtint/west{ id = "Interrogation"; - req_one_access_txt = "63" + req_access = list(63) }, /obj/item/flashlight/lamp{ pixel_y = 4; @@ -61710,7 +61709,7 @@ }, /obj/machinery/button/windowtint/north{ id = "hosroom"; - req_one_access_txt = "58" + req_access = list(58) }, /obj/structure/table/wood, /obj/item/clothing/under/towel/long/alt/red{ @@ -63092,8 +63091,8 @@ int_button_link_id = "enginen_btn_int"; int_door_link_id = "enginen_door_int"; pixel_y = -25; - req_access_txt = "10;13"; - vent_link_id = "enginen_vent" + vent_link_id = "enginen_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -63646,7 +63645,7 @@ id = "mechpodbay"; name = "Pod Door Control"; pixel_y = -26; - req_one_access_txt = "32" + req_access = list(32) }, /turf/simulated/floor/plating/airless, /area/station/engineering/mechanic) @@ -68316,7 +68315,7 @@ /obj/machinery/access_button/north{ autolink_id = "enginen_btn_ext"; name = "exterior access button"; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -69035,13 +69034,13 @@ id = "iaashutters"; name = "IAA Privacy Shutter Control"; pixel_y = -6; - req_one_access_txt = "38" + req_access = list(38) }, /obj/machinery/button/windowtint/west{ id = "iaa"; pixel_y = 6; range = 10; - req_one_access_txt = "38" + req_access = list(38) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 8 @@ -69889,7 +69888,7 @@ pixel_x = -26; pixel_y = 6; vent_link_id = "escape_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/turf_decal/delivery, /obj/machinery/light/small/directional/east, @@ -70265,7 +70264,7 @@ /obj/machinery/turretid/stun{ name = "AI Upload Turret Control"; pixel_y = 8; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall, /area/station/turret_protected/ai_upload) @@ -71331,7 +71330,7 @@ /obj/machinery/access_button/east{ autolink_id = "escape_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -73260,9 +73259,9 @@ /obj/machinery/door_control/shutter/north{ id = "janitorshutters"; name = "Janitor Shutters Control"; - req_access_txt = "26"; pixel_y = 0; - pixel_x = 24 + pixel_x = 24; + req_access = list(26) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -74406,7 +74405,7 @@ id = "xenosecure"; name = "Containment Control"; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel/white, @@ -76503,7 +76502,7 @@ /obj/machinery/door_control/shutter/north{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66" + req_access = list(66) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard_medi"; @@ -76519,14 +76518,14 @@ id = "holdingcellprivacy"; name = "Temporary Holding Cell Window Tint Control"; pixel_x = 6; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/button/windowtint/south{ id = "cellprivacy"; name = "Cell Window Tint Control"; pixel_x = -6; range = 10; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "red" @@ -79594,9 +79593,9 @@ ext_door_link_id = "assolar_door_ext"; int_button_link_id = "assolar_btn_int"; int_door_link_id = "assolar_door_int"; - req_access_txt = "13"; vent_link_id = "assolar_vent"; - pixel_x = -25 + pixel_x = -25; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "assolar_vent"; @@ -79864,7 +79863,7 @@ /obj/machinery/access_button/west{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/security/brig, @@ -80264,7 +80263,7 @@ /obj/machinery/access_button/north{ autolink_id = "fssolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -80309,7 +80308,7 @@ name = "Turbine Access Console"; pixel_x = 8; pixel_y = -26; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -80321,7 +80320,7 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control/shutter/south{ id = "auxincineratorvent"; @@ -81084,7 +81083,7 @@ /obj/machinery/access_button/south{ autolink_id = "fssolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -81150,7 +81149,7 @@ layer = 3.6; autolink_id = "virolab_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -81847,12 +81846,12 @@ /obj/machinery/button/windowtint/east{ id = "HoS"; pixel_y = 6; - req_one_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control/normal/east{ id = "hosofficedoor"; name = "Office Door"; - req_one_access_txt = "58"; + req_access = list(58); pixel_y = -6 }, /obj/machinery/light/directional/east, @@ -82497,7 +82496,7 @@ id = "mechpodbay"; name = "Pod Door Control"; pixel_y = -26; - req_one_access_txt = "32" + req_access = list(32) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -82851,7 +82850,7 @@ /obj/machinery/access_button/west{ autolink_id = "assolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -83955,8 +83954,8 @@ id = "hopofficedoor"; name = "Office Door"; pixel_x = -10; - req_access_txt = "57"; - pixel_y = 2 + pixel_y = 2; + req_access = list(57) }, /obj/item/pen/multi{ pixel_x = 2; @@ -83987,7 +83986,7 @@ name = "Prison Access Console"; pixel_y = 24; pixel_x = 6; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/camera{ c_tag = "Brig Hall North-East" @@ -84826,7 +84825,7 @@ /obj/machinery/access_button/east{ autolink_id = "arrivalsn_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -86589,8 +86588,8 @@ int_button_link_id = "apsolar_btn_int"; int_door_link_id = "apsolar_door_int"; pixel_y = -25; - req_access_txt = "13"; - vent_link_id = "apsolar_vent" + vent_link_id = "apsolar_vent"; + req_access = list(13) }, /obj/structure/cable{ d1 = 4; @@ -86619,7 +86618,7 @@ /obj/machinery/door_control/shutter/north{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; - req_one_access_txt = "3" + req_access = list(3) }, /obj/structure/cable{ d1 = 2; @@ -88823,7 +88822,7 @@ "phT" = ( /obj/item/kirbyplants, /obj/machinery/door_control/shutter/west{ - req_one_access_txt = "3"; + req_access = list(3); id = "shooting_range1"; name = "Shooting Range Shutter Control" }, @@ -89028,7 +89027,7 @@ /obj/machinery/access_button/north{ autolink_id = "apsolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -89162,7 +89161,7 @@ /obj/machinery/door_control/shutter/south{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; - req_one_access_txt = "3" + req_access = list(3) }, /obj/machinery/light/directional/south, /obj/structure/shelf/security, @@ -89802,7 +89801,7 @@ /obj/machinery/access_button/north{ autolink_id = "stationai_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -89855,7 +89854,7 @@ /obj/machinery/door_control/shutter/south{ id = "Biohazard_RnD"; name = "Biohazard RnD Shutter Control"; - req_one_access_txt = "30" + req_access = list(30) }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/keycard_auth/south{ @@ -89964,8 +89963,8 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, /obj/machinery/access_button/south{ autolink_id = "enginen_btn_int"; - req_access_txt = "10;13"; - name = "interior access button" + name = "interior access button"; + req_access = list(10,13) }, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -91527,7 +91526,7 @@ int_door_link_id = "arrivalsn_door_int"; pixel_x = 25; vent_link_id = "arrivalsn_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/light/small/directional/west, /turf/simulated/floor/plating, @@ -93533,7 +93532,7 @@ id = "detective"; pixel_y = 0; pixel_x = -24; - req_one_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -93603,22 +93602,22 @@ dir = 8 }, /obj/structure/shelf/security, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = -6 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = -6 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = -6 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = 6 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = 6 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = 6 }, /turf/simulated/floor/plasteel/dark, @@ -95594,7 +95593,7 @@ /obj/machinery/door_control/shutter/west{ id = "stationawaygate"; name = "Gateway Shutters Control"; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -96668,7 +96667,7 @@ autolink_id = "arrivalsn_btn_int"; name = "exterior access button"; pixel_y = 1; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -96720,10 +96719,10 @@ ext_door_link_id = "med_outer_door"; int_button_link_id = "med_int_button"; int_door_link_id = "med_int_door"; - req_access_txt = "13"; vent_link_id = "med_vent"; pixel_x = 25; - ext_button_link_id = "med_outer_button" + ext_button_link_id = "med_outer_button"; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "med_vent"; @@ -98599,9 +98598,9 @@ dir = 9 }, /obj/structure/shelf/security, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/tranquilizer, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/tranquilizer, /obj/item/storage/toolbox/mechanical, /obj/item/shield/riot, /obj/item/storage/toolbox/mechanical, @@ -98955,7 +98954,7 @@ /obj/machinery/door_control/shutter{ pixel_y = -24; id = "GYM"; - req_one_access_txt = "1"; + req_access = list(1); name = "Interrogation Shutters Control" }, /obj/effect/decal/cleanable/dirt, @@ -99343,7 +99342,7 @@ /obj/machinery/access_button/south{ autolink_id = "engines_btn_int"; name = "interior access button"; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, @@ -99867,7 +99866,7 @@ /obj/machinery/access_button/west{ autolink_id = "atmostanks_btn_int"; name = "interior access button"; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plasteel, @@ -100098,7 +100097,7 @@ int_door_link_id = "stationai_door_int"; pixel_y = -57; vent_link_id = "stationai_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/structure/cable{ d1 = 4; @@ -100658,9 +100657,9 @@ /obj/machinery/door_control/shutter/west{ id = "justice_blast"; name = "Space Vent"; - req_one_access_txt = "2"; pixel_x = 24; - pixel_y = -5 + pixel_y = -5; + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Execution"; @@ -100955,12 +100954,12 @@ /obj/machinery/door_control/shutter/east{ pixel_y = -8; id = "QMLoaddoor2"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/door_control/shutter/east{ pixel_y = 8; id = "QMLoaddoor"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ @@ -101971,8 +101970,8 @@ int_button_link_id = "fpsolar_btn_int"; int_door_link_id = "fpsolar_door_int"; pixel_y = 25; - req_access_txt = "13"; - vent_link_id = "fpsolar_vent" + vent_link_id = "fpsolar_vent"; + req_access = list(13) }, /obj/structure/cable{ d1 = 4; @@ -103062,8 +103061,8 @@ int_button_link_id = "atmostanks_btn_int"; int_door_link_id = "atmostanks_door_int"; pixel_x = 57; - req_access_txt = "32"; - vent_link_id = "atmostanks_vent" + vent_link_id = "atmostanks_vent"; + req_access = list(32) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, @@ -104666,7 +104665,7 @@ /obj/machinery/door_control/shutter/west{ id = "rndstorage"; name = "RnD Secure Storage Control"; - req_access_txt = "8" + req_access = list(8) }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -105036,7 +105035,7 @@ /obj/machinery/access_button/west{ autolink_id = "assolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -105813,7 +105812,7 @@ /obj/machinery/access_button/north{ autolink_id = "apmaint2_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plasteel, @@ -106284,7 +106283,7 @@ /obj/machinery/access_button/south{ autolink_id = "fpsolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -108354,7 +108353,7 @@ /obj/machinery/access_button/south{ autolink_id = "stationai_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -108814,8 +108813,8 @@ int_button_link_id = "engines_btn_int"; int_door_link_id = "engines_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "engines_vent" + vent_link_id = "engines_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -109033,10 +109032,10 @@ ext_door_link_id = "vir_outer_door"; int_button_link_id = "vir_int_button"; int_door_link_id = "vir_int_door"; - req_access_txt = "13"; vent_link_id = "vir_vent"; pixel_x = 25; - ext_button_link_id = "vir_outer_button" + ext_button_link_id = "vir_outer_button"; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "vir_vent"; @@ -109480,9 +109479,9 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2"; pixel_y = 0; - pixel_x = -24 + pixel_x = -24; + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, @@ -110525,8 +110524,8 @@ int_button_link_id = "fssolar_btn_int"; int_door_link_id = "fssolar_door_int"; pixel_y = 25; - req_access_txt = "13"; - vent_link_id = "fssolar_vent" + vent_link_id = "fssolar_vent"; + req_access = list(13) }, /obj/effect/turf_decal/delivery, /obj/structure/cable{ @@ -111243,7 +111242,7 @@ /obj/machinery/access_button/east{ autolink_id = "escape_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -111915,7 +111914,7 @@ /obj/machinery/door_control/shutter{ pixel_y = 24; id = "evidence"; - req_one_access_txt = "1"; + req_access = list(1); name = "Evidence Shutters Control"; pixel_x = -24 }, @@ -113190,7 +113189,7 @@ /obj/machinery/access_button/north{ autolink_id = "engines_btn_ext"; name = "exterior access button"; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, @@ -113343,7 +113342,7 @@ int_door_link_id = "apmaint2_door_int"; pixel_y = 25; vent_link_id = "apmaint2_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "apmaint2_vent"; @@ -113817,7 +113816,7 @@ /obj/machinery/access_button/north{ autolink_id = "fpsolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -114787,13 +114786,13 @@ /obj/machinery/button/windowtint/south{ id = "RD"; pixel_x = -6; - req_one_access_txt = "30" + req_access = list(30) }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/door_control/normal/south{ id = "rdofficedoor"; name = "Office Door"; - req_one_access_txt = "30"; + req_access = list(30); pixel_x = 6 }, /turf/simulated/floor/plasteel{ @@ -116041,7 +116040,7 @@ /obj/machinery/door_control/shutter{ id = "xeno8"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/delivery/hollow, /obj/structure/window/reinforced{ @@ -118041,9 +118040,9 @@ /obj/machinery/door_control/shutter/east{ id = "Prison Gate"; name = "Prison Wing Lockdown"; - req_one_access_txt = "2"; pixel_y = 8; - pixel_x = 38 + pixel_x = 38; + req_access = list(2) }, /obj/machinery/door_control/shutter/east{ id = "Secure Gate"; @@ -119740,7 +119739,7 @@ /obj/machinery/door_control/shutter/north{ id = "transitlock"; name = "Transit Tube Lockdown Control"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 diff --git a/_maps/map_files220/stations/metastation.dmm b/_maps/map_files220/stations/metastation.dmm index 8a3563804688..caf15d673e45 100644 --- a/_maps/map_files220/stations/metastation.dmm +++ b/_maps/map_files220/stations/metastation.dmm @@ -222,7 +222,7 @@ }, /obj/machinery/button/windowtint/east{ id = "Detective"; - req_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -270,8 +270,7 @@ /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -692,7 +691,7 @@ name = "exterior access button"; pixel_x = 25; pixel_y = 7; - req_access_txt = "75;13" + req_access = list(75,13) }, /turf/space, /area/space/nearstation) @@ -1390,7 +1389,7 @@ id = "kitchen_counter"; name = "Kitchen Counter Shutters"; pixel_x = -6; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "whitecorner" @@ -1477,7 +1476,7 @@ id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_y = 4; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -1601,12 +1600,12 @@ /obj/effect/landmark/damageturf, /obj/machinery/airlock_controller/air_cycler{ pixel_y = -24; - req_access_txt = "13"; vent_link_id = "arrivalsmaint_vent"; ext_door_link_id = "arrivalsmaint_door_ext"; int_door_link_id = "arrivalsmaint_door_int"; ext_button_link_id = "arrivalsmaint_btn_ext"; - int_button_link_id = "arrivalsmaint_btn_int" + int_button_link_id = "arrivalsmaint_btn_int"; + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -6347,7 +6346,7 @@ id = "xenobio2"; name = "Xenobio Pen 2 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -8646,7 +8645,7 @@ dir = 1; id = "Courtroom"; pixel_y = 8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -8831,7 +8830,7 @@ /obj/machinery/door_control/shutter/east{ id = "engsm"; name = "Radiation Shutters Control"; - req_access_txt = "10" + req_access = list(10) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8980,8 +8979,8 @@ }, /obj/machinery/button/windowtint/east{ id = "qm"; - req_access_txt = "41"; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /turf/simulated/floor/plasteel, /area/station/supply/qm) @@ -9758,13 +9757,13 @@ id = "QMLoaddoor"; name = "Loading Doors"; pixel_y = -8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/door_control/shutter/west{ id = "QMLoaddoor2"; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/computer/supplycomp{ dir = 4 @@ -13939,13 +13938,13 @@ id = "Engineering"; name = "Engineering Lockdown"; pixel_y = -5; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control/shutter/west{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_y = 5; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ @@ -14570,14 +14569,14 @@ id = "transittube"; name = "Transit Tube Lockdown"; pixel_y = -5; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter/west{ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_y = 5; - req_access_txt = "11" + req_access = list(11) }, /turf/simulated/floor/plasteel{ icon_state = "darkneutralfull" @@ -17302,7 +17301,7 @@ /obj/item/clothing/glasses/meson, /obj/machinery/button/windowtint/south{ id = "CE"; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "darkneutralfull" @@ -19497,8 +19496,8 @@ /obj/machinery/door_control/shutter/south{ id = "turbinevent"; name = "Turbine Vent Control"; - req_access_txt = "12"; - pixel_x = -8 + pixel_x = -8; + req_access = list(12) }, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) @@ -19836,7 +19835,7 @@ /obj/machinery/door_control/shutter/north{ id = "hop"; name = "Privacy Shutters Control"; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/computer/account_database, /turf/simulated/floor/wood, @@ -19931,7 +19930,7 @@ /obj/machinery/turretid/stun{ name = "AI Antechamber Turret Control"; pixel_x = 24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -21029,7 +21028,7 @@ /obj/machinery/door_control/shutter/west{ id = "hop"; name = "Privacy Shutters Control"; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/papershredder, /turf/simulated/floor/carpet, @@ -21105,13 +21104,13 @@ id = "bridge blast"; name = "Bridge Access Blast Door Control"; pixel_x = -1; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter/south{ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/camera{ c_tag = "Bridge - Command Chair"; @@ -22180,12 +22179,12 @@ /obj/machinery/door_control/shutter/south{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter/south{ id = "gateshutter"; name = "Expedition Shutter Control"; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -22234,13 +22233,13 @@ id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = -6; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control/shutter/south{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -6; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -23371,7 +23370,7 @@ /obj/machinery/door_control/shutter/west{ id = "council blast"; name = "Council Chamber Blast Door Control"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -23444,7 +23443,7 @@ /obj/machinery/door_control/shutter/west{ id = "bridge blast"; name = "Bridge Access Blast Door Control"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -23790,7 +23789,7 @@ /obj/machinery/door_control/shutter/east{ id = "bridge blast"; name = "Bridge Access Blast Door Control"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -26158,7 +26157,7 @@ id = "xenobio5"; name = "Xenobio Pen 5 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -27154,7 +27153,7 @@ /area/station/hallway/primary/central) "bTD" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light/small/directional/west, /turf/simulated/floor/wood, @@ -27281,7 +27280,7 @@ id = "kitchen_service"; name = "Service Shutter Control"; pixel_x = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -27737,9 +27736,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "bVM" = ( -/obj/machinery/atmospherics/trinary/filter{ - req_access = "0" - }, +/obj/machinery/atmospherics/trinary/filter, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "bVN" = ( @@ -28364,7 +28361,7 @@ /obj/machinery/door_control/shutter/south{ id = "mechbay"; name = "Mech Bay Shutters Control"; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -28635,7 +28632,7 @@ id = "ntrepofficedoor"; name = "Office Door"; pixel_x = 6; - req_access_txt = "73" + req_access = list(73) }, /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ @@ -28800,7 +28797,7 @@ /obj/machinery/door_control/shutter/south{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -29455,7 +29452,7 @@ id = "hydro_service"; name = "Service Shutter Control"; pixel_x = -24; - req_access_txt = "35" + req_access = list(35) }, /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -31231,20 +31228,20 @@ /obj/machinery/door_control/shutter/north{ id = "xeno_blastdoor"; name = "Xenobiology Containment Control"; - req_access_txt = "30"; - pixel_y = 32 + pixel_y = 32; + req_access = list(30) }, /obj/machinery/door_control/shutter/north{ id = "rdtoxins"; name = "Toxins Containment Control"; - req_access_txt = "30"; - pixel_y = 23 + pixel_y = 23; + req_access = list(30) }, /obj/machinery/door_control/shutter/north{ id = "rdrnd"; name = "Research and Development Containment Control"; - req_access_txt = "30"; - pixel_y = 41 + pixel_y = 41; + req_access = list(30) }, /obj/machinery/computer/security/telescreen/rd{ pixel_x = 31; @@ -31253,7 +31250,7 @@ /obj/machinery/button/windowtint/north{ id = "RD"; pixel_x = -24; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -32216,8 +32213,7 @@ "ckx" = ( /obj/machinery/mecha_part_fabricator{ id = "0"; - name = "forgotten exosuit fabricator"; - req_access = "0" + name = "forgotten exosuit fabricator" }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -32678,7 +32674,7 @@ "cmn" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -33242,13 +33238,13 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control/shutter/south{ id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = -8; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel, @@ -33371,7 +33367,7 @@ /obj/machinery/door_control/shutter/north{ id = "mechbay"; name = "Mech Bay Shutters Control"; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -34981,7 +34977,7 @@ /obj/machinery/button/windowtint/west{ id = "Surgery1"; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -36544,7 +36540,7 @@ /obj/machinery/door_control/shutter/west{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66" + req_access = list(66) }, /obj/effect/turf_decal/caution/stand_clear{ dir = 1 @@ -36650,7 +36646,7 @@ /obj/item/flashlight/lamp, /obj/machinery/button/windowtint/south{ id = "BS"; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) @@ -38659,7 +38655,7 @@ desc = "A remote control switch for the medbay foyer."; id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ @@ -39751,7 +39747,7 @@ "cMz" = ( /obj/machinery/door/morgue{ name = "Relic Closet"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -40020,7 +40016,7 @@ /obj/machinery/door_control/shutter/east{ id = "XenoPens"; name = "Xenobiology Shutters"; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/camera{ c_tag = "Xenobiology Lab - Central Port"; @@ -40276,7 +40272,7 @@ "cOA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light_switch/north, /obj/effect/spawner/random_spawners/id_skins/no_chance, @@ -45019,7 +45015,7 @@ /obj/machinery/door_control/shutter/north{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45244,8 +45240,8 @@ /obj/machinery/button/windowtint/north{ id = "Processing"; pixel_x = -6; - req_access_txt = "63"; - range = 4 + range = 4; + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -46041,7 +46037,6 @@ /obj/machinery/airlock_controller/air_cycler{ pixel_x = 9; pixel_y = -25; - req_access_txt = null; vent_link_id = "atmossouth_vent"; ext_door_link_id = "atmossouth_door_ext"; int_door_link_id = "atmossouth_door_int"; @@ -46853,7 +46848,7 @@ id = "Secure Gate"; name = "Brig Lockdown"; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/camera{ c_tag = "Warden's Office"; @@ -47680,7 +47675,7 @@ /obj/machinery/access_button/east{ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; - req_access_txt = "24" + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel{ @@ -47815,7 +47810,7 @@ id = "roboticsprivacy2"; name = "Robotics Shutters"; pixel_x = -7; - req_access_txt = "29" + req_access = list(29) }, /obj/structure/closet/secure_closet/roboticist, /turf/simulated/floor/plasteel{ @@ -50008,7 +50003,7 @@ id = "toxinaccess"; name = "Toxins Access"; pixel_y = 8; - req_access_txt = "8" + req_access = list(8) }, /obj/machinery/camera{ c_tag = "Science - Toxins Secure - Port"; @@ -50144,7 +50139,7 @@ autolink_id = "atmossouth_btn_ext"; name = "exterior access button"; pixel_y = -24; - req_access_txt = "24;13" + req_access = list(24,13) }, /turf/simulated/floor/plating, /area/station/engineering/atmos) @@ -50835,7 +50830,7 @@ /obj/structure/closet/crate/secure{ desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; - req_access_txt = "8" + req_access = list(8) }, /obj/item/target/alien, /obj/item/target/syndicate, @@ -51824,7 +51819,7 @@ id = "xenobio7"; name = "Xenobio Pen 7 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -51877,7 +51872,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/structure/cable/yellow, /obj/machinery/power/apc/directional/south, @@ -52246,7 +52241,7 @@ /obj/machinery/door_control/shutter/south{ id = "armory"; name = "Armory Shutter"; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -53234,13 +53229,13 @@ name = "Brig Exterior Door Control"; pixel_x = 6; pixel_y = 7; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/flasher_button{ id = "secentranceflasher"; name = "Brig Entrance Flash Control"; pixel_y = -3; - req_access_txt = "1" + req_access = list(1) }, /obj/structure/cable/yellow{ d1 = 1; @@ -54338,7 +54333,7 @@ id = "xenobio8"; name = "Xenobio Pen 8 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/item/reagent_containers/spray/cleaner{ pixel_x = 5 @@ -55972,7 +55967,7 @@ id = "xenobio6"; name = "Xenobio Pen 6 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -56576,7 +56571,7 @@ autolink_id = "arrivalsmaint_btn_ext"; name = "exterior access button"; pixel_y = -24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -56925,7 +56920,7 @@ name = "Xenobiology Access Button"; pixel_x = -3; pixel_y = 26; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/mapping_helpers/airlock/access/any/science/research, /turf/simulated/floor/plasteel{ @@ -57152,7 +57147,7 @@ name = "Supermatter Access Button"; pixel_x = 0; pixel_y = 24; - req_one_access_txt = "10;24" + req_access = list(10,24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel{ @@ -57615,7 +57610,7 @@ /obj/machinery/access_button/south{ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable/yellow{ d1 = 4; @@ -58577,7 +58572,7 @@ /obj/machinery/access_button/west{ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; - req_access_txt = "24" + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plating, @@ -58730,13 +58725,13 @@ /obj/machinery/button/windowtint/west{ id = "Magistrate"; pixel_y = 6; - req_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control/normal/west{ id = "magistrateofficedoor"; name = "Office Door"; - req_access_txt = "74"; - pixel_y = -4 + pixel_y = -4; + req_access = list(74) }, /obj/item/clothing/head/helmet/skull/Yorick, /obj/item/radio/intercom/department/security{ @@ -60211,7 +60206,7 @@ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -4; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light_switch/north{ pixel_x = 6 @@ -60341,7 +60336,7 @@ id = "xenobio4"; name = "Xenobio Pen 4 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -61187,7 +61182,7 @@ /obj/machinery/door_control/shutter/south{ id = "XenoPens"; name = "Xenobiology Shutters"; - req_access_txt = "55" + req_access = list(55) }, /obj/item/book/manual/wiki/sop_science{ pixel_y = 4 @@ -61810,13 +61805,13 @@ /area/station/hallway/secondary/bridge) "lnd" = ( /obj/machinery/airlock_controller/air_cycler{ - req_access_txt = "10;13"; vent_link_id = "engine_vent"; ext_door_link_id = "engine_door_ext"; int_door_link_id = "engine_door_int"; pixel_y = 24; ext_button_link_id = "engine_btn_ext"; - int_button_link_id = "engine_btn_int" + int_button_link_id = "engine_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -63209,7 +63204,7 @@ id = "xenobio1"; name = "Xenobio Pen 1 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -64466,7 +64461,7 @@ /obj/machinery/button/windowtint/south{ id = "CMO"; pixel_x = -7; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/keycard_auth{ pixel_x = 7; @@ -65162,22 +65157,22 @@ icon_state = "2-4" }, /obj/structure/rack, -/obj/item/storage/box/tranquilizer{ +/obj/item/storage/fancy/shell/tranquilizer{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -2; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -2; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -2; pixel_y = -3 }, @@ -67139,7 +67134,7 @@ autolink_id = "engine_btn_int"; name = "interior access button"; pixel_x = -24; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -67181,7 +67176,7 @@ autolink_id = "engine_btn_ext"; name = "interior access button"; pixel_y = 24; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -70101,11 +70096,11 @@ name = "Virology Lab Access Console"; pixel_x = 24; pixel_y = -24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /obj/structure/cable/yellow{ d1 = 4; @@ -72260,7 +72255,7 @@ autolink_id = "aiaccess_btn_ext"; name = "exterior access button"; pixel_y = 24; - req_one_access_txt = "75;13" + req_access = list(75,13) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -72419,7 +72414,7 @@ autolink_id = "arrivalsmaint_btn_int"; name = "interior access button"; pixel_y = -24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -72718,7 +72713,7 @@ /obj/machinery/button/windowtint/west{ id = "HoS"; pixel_y = 6; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -73002,7 +72997,7 @@ /obj/machinery/button/windowtint/east{ id = "Surgery2"; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /obj/machinery/holosign_switch/east{ id = "surgery2"; @@ -73338,7 +73333,7 @@ id = "xenobio3"; name = "Xenobio Pen 3 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -73546,7 +73541,7 @@ /obj/machinery/button/windowtint/west{ id = "Interrogation"; pixel_y = 6; - req_access_txt = "63" + req_access = list(63) }, /obj/structure/cable/yellow{ d1 = 2; @@ -73862,7 +73857,7 @@ autolink_id = "aiaccess_btn_int"; name = "interior access button"; pixel_y = 24; - req_one_access_txt = "75;13" + req_access = list(75,13) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -76541,7 +76536,7 @@ autolink_id = "atmossouth_btn_int"; name = "interior access button"; pixel_y = -24; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/atmos) @@ -76731,7 +76726,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -77191,7 +77186,7 @@ id = "roboticsprivacy"; name = "Robotics Privacy Control"; pixel_x = -26; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics) @@ -77395,20 +77390,20 @@ layer = 4; name = "Justice Vent Control"; pixel_x = -26; - req_access_txt = "3" + req_access = list(3) }, /obj/machinery/door_control/shutter/north{ id = "executionfireblast"; name = "Justice Area Lockdown"; pixel_x = -38; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/ignition_switch{ id = "executionburn"; name = "Justice Ignition Switch"; pixel_x = -25; pixel_y = 36; - req_access_txt = "1" + req_access = list(1) }, /obj/machinery/flasher_button{ id = "justiceflash"; @@ -79032,7 +79027,7 @@ id = "toxinaccess"; name = "Toxins Access"; pixel_y = 8; - req_access_txt = "8" + req_access = list(8) }, /obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel, @@ -79298,8 +79293,7 @@ "tAF" = ( /obj/machinery/computer/prisoner{ dir = 1; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -79619,7 +79613,7 @@ /obj/machinery/door_control/shutter/west{ id = "gateshutter"; name = "Expedition Shutter Control"; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -79833,7 +79827,7 @@ /obj/machinery/button/windowtint/east{ id = "IAA"; pixel_y = 8; - req_access_txt = "38" + req_access = list(38) }, /turf/simulated/floor/carpet, /area/station/legal/lawoffice) @@ -81438,7 +81432,7 @@ /obj/machinery/door_control/shutter/north{ id = "qm_warehouse"; name = "Warehouse Door Control"; - req_one_access_txt = "78" + req_access = list(78) }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) @@ -82286,7 +82280,7 @@ id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; pixel_x = 24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ @@ -85172,8 +85166,7 @@ "wAJ" = ( /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -85942,7 +85935,7 @@ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; pixel_x = 8; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable/yellow{ d1 = 4; @@ -86009,7 +86002,7 @@ name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -87010,7 +87003,7 @@ name = "Supermatter Access Button"; pixel_x = 0; pixel_y = 24; - req_one_access_txt = "10;24" + req_access = list(10,24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel{ @@ -87760,13 +87753,13 @@ id = "rdrnd"; name = "Primary Research Shutters Control"; pixel_y = 6; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/door_control/shutter/east{ id = "rndlab2"; name = "Secondary Research Shutters Control"; pixel_y = -6; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/cell_charger, /turf/simulated/floor/plasteel{ @@ -88225,7 +88218,7 @@ /obj/machinery/access_button/south{ autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable/yellow{ d1 = 4; @@ -88266,7 +88259,7 @@ /obj/machinery/door_control/shutter/west{ id = "teleshutter"; name = "Teleporter Shutters Access Control"; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel, /area/station/command/teleporter) diff --git a/code/__DEFINES/_spacemandmm.dm b/code/__DEFINES/_spacemandmm.dm index 0abcd8bba9a8..8112a60eaece 100644 --- a/code/__DEFINES/_spacemandmm.dm +++ b/code/__DEFINES/_spacemandmm.dm @@ -1,15 +1,22 @@ // This file contains all the defines related to the spacemanDMM linter (dreamchecker). When running under normal conditions, BYOND will ignore all these +// Read https://github.com/SpaceManiac/SpacemanDMM/tree/master/crates/dreamchecker for more info. #ifdef SPACEMAN_DMM #define RETURN_TYPE(X) set SpacemanDMM_return_type = X #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X #define UNLINT(X) SpacemanDMM_unlint(X) #define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X #define SHOULD_NOT_SLEEP(X) set SpacemanDMM_should_not_sleep = X + /// A "pure" proc does not make any external changes, or to its output. #define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X + /// Private procs can only be called by things of exactly the same type. This also prevents overriding of the proc. #define PRIVATE_PROC(X) set SpacemanDMM_private_proc = X + /// Protected procs can only be call by things of the same type or subtypes #define PROTECTED_PROC(X) set SpacemanDMM_protected_proc = X + /// Final vars forbid overriding their value by types that inherit it. #define VAR_FINAL var/SpacemanDMM_final + /// Private vars can only be called by things of exactly the same type #define VAR_PRIVATE var/SpacemanDMM_private + /// Protected vars can only be call by things of the same type or subtypes #define VAR_PROTECTED var/SpacemanDMM_protected #else #define RETURN_TYPE(X) diff --git a/code/__DEFINES/access_defines.dm b/code/__DEFINES/access_defines.dm index 10b3c80ad656..b946f7a75ba7 100644 --- a/code/__DEFINES/access_defines.dm +++ b/code/__DEFINES/access_defines.dm @@ -88,3 +88,4 @@ #define ACCESS_AWAY01 271 //! Access used for moonoutpost19 ruin. #define ACCESS_FREE_GOLEMS 300 //! Ghost role: free golems. #define ACCESS_THETA_STATION 301 //! Ghost role: Theta station. +#define ACCESS_DEEPSTORAGE 512 //! Space ruin: Deep Storage diff --git a/code/__DEFINES/antag_defines.dm b/code/__DEFINES/antag_defines.dm index 1e567e6bbaaf..77cdd9178856 100644 --- a/code/__DEFINES/antag_defines.dm +++ b/code/__DEFINES/antag_defines.dm @@ -106,3 +106,8 @@ GLOBAL_LIST(contractors) // Chance that a traitor will receive a 'You are being targeted by another syndicate agent' notification regardless of being an actual target #define ORG_PROB_PARANOIA 5 + +/// How often a biohazard's population is recorded after the event fires. +#define BIOHAZARD_POP_INTERVAL 5 MINUTES +/// The string version of the interval for use in blackbox key names. +#define BIOHAZARD_POP_INTERVAL_STR "5min" diff --git a/code/__DEFINES/mob_defines.dm b/code/__DEFINES/mob_defines.dm index 58af2e1bb569..eba27654e8f5 100644 --- a/code/__DEFINES/mob_defines.dm +++ b/code/__DEFINES/mob_defines.dm @@ -14,6 +14,7 @@ // Organ datum defines. Each one of these represents a slot for organ datums in internal_organ_datums #define ORGAN_DATUM_HEART "heart" #define ORGAN_DATUM_LUNGS "lungs" +#define ORGAN_DATUM_BATTERY "battery" // For limb resistance flags #define CANNOT_BREAK (1 << 0) diff --git a/code/__DEFINES/milla.dm b/code/__DEFINES/rust.dm similarity index 57% rename from code/__DEFINES/milla.dm rename to code/__DEFINES/rust.dm index bf5f2ddca090..07242e955f50 100644 --- a/code/__DEFINES/milla.dm +++ b/code/__DEFINES/rust.dm @@ -1,59 +1,62 @@ -// milla.dm - DM API for milla extension library +// DM API for Rust extension modules +// Current modules: +// - MILLA, an asynchronous replacement for BYOND atmos +// - Mapmanip, a parse-time DMM file reader and modifier -// Default automatic MILLA detection. +// Default automatic library detection. // Look for it in the build location first, then in `.`, then in standard places. -/* This comment bypasses grep checks */ /var/__milla +/* This comment bypasses grep checks */ /var/__rustlib -/proc/__detect_milla() +/proc/__detect_rustlib() if(world.system_type == UNIX) #ifdef CIBUILDING - // CI override, use libmilla_ci.so if possible. - if(fexists("./tools/ci/libmilla_ci.so")) - return __milla = "tools/ci/libmilla_ci.so" + // CI override, use librustlibs_ci.so if possible. + if(fexists("./tools/ci/librustlibs_ci.so")) + return __rustlib = "tools/ci/librustlibs_ci.so" #endif // First check if it's built in the usual place. - if(fexists("./milla/target/i686-unknown-linux-gnu/release/libmilla.so")) - return __milla = "./milla/target/i686-unknown-linux-gnu/release/libmilla.so" + if(fexists("./rust/target/i686-unknown-linux-gnu/release/librustlibs.so")) + return __rustlib = "./rust/target/i686-unknown-linux-gnu/release/librustlibs.so" // Then check in the current directory. - if(fexists("./libmilla.so")) - return __milla = "./libmilla.so" + if(fexists("./librustlibs.so")) + return __rustlib = "./librustlibs.so" // And elsewhere. - return __milla = "libmilla.so" + return __rustlib = "librustlibs.so" else // First check if it's built in the usual place. - if(fexists("./milla/target/i686-pc-windows-msvc/release/milla.dll")) - return __milla = "./milla/target/i686-pc-windows-msvc/release/milla.dll" + if(fexists("./rust/target/i686-pc-windows-msvc/release/rustlibs.dll")) + return __rustlib = "./rust/target/i686-pc-windows-msvc/release/rustlibs.dll" // Then check in the current directory. - if(fexists("./milla.dll")) - return __milla = "./milla.dll" + if(fexists("./rustlibs.dll")) + return __rustlib = "./rustlibs.dll" // And elsewhere. - return __milla = "milla.dll" + return __rustlib = "rustlibs.dll" -#define MILLA (__milla || __detect_milla()) +#define RUSTLIB (__rustlib || __detect_rustlib()) -#define MILLA_CALL(func, args...) call_ext(MILLA, "byond:[#func]_ffi")(args) +#define RUSTLIB_CALL(func, args...) call_ext(RUSTLIB, "byond:[#func]_ffi")(args) /proc/milla_init_z(z) - return MILLA_CALL(initialize, z) + return RUSTLIB_CALL(milla_initialize, z) /proc/is_milla_synchronous(tick) - return MILLA_CALL(is_synchronous, tick) + return RUSTLIB_CALL(milla_is_synchronous, tick) /proc/set_tile_atmos(turf/T, airtight_north, airtight_east, airtight_south, airtight_west, atmos_mode, environment_id, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature, innate_heat_capacity) - return MILLA_CALL(set_tile, T, airtight_north, airtight_east, airtight_south, airtight_west, atmos_mode, environment_id, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature, innate_heat_capacity) + return RUSTLIB_CALL(milla_set_tile, T, airtight_north, airtight_east, airtight_south, airtight_west, atmos_mode, environment_id, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature, innate_heat_capacity) /proc/get_tile_atmos(turf/T, list/L) - return MILLA_CALL(get_tile, T, L) + return RUSTLIB_CALL(milla_get_tile, T, L) /proc/spawn_milla_tick_thread() - return MILLA_CALL(spawn_tick_thread) + return RUSTLIB_CALL(milla_spawn_tick_thread) /proc/get_milla_tick_time() - return MILLA_CALL(get_tick_time) + return RUSTLIB_CALL(milla_get_tick_time) /proc/get_interesting_atmos_tiles() - return MILLA_CALL(get_interesting_tiles) + return RUSTLIB_CALL(milla_get_interesting_tiles) /proc/reduce_superconductivity(turf/T, list/superconductivity) var/north = superconductivity[1] @@ -61,10 +64,10 @@ var/south = superconductivity[3] var/west = superconductivity[4] - return MILLA_CALL(reduce_superconductivity, T, north, east, south, west) + return RUSTLIB_CALL(milla_reduce_superconductivity, T, north, east, south, west) /proc/reset_superconductivity(turf/T) - return MILLA_CALL(reset_superconductivity, T) + return RUSTLIB_CALL(milla_reset_superconductivity, T) /proc/set_tile_airtight(turf/T, list/airtight) var/north = airtight[1] @@ -72,16 +75,19 @@ var/south = airtight[3] var/west = airtight[4] - return MILLA_CALL(set_tile_airtight, T, north, east, south, west) + return RUSTLIB_CALL(milla_set_tile_airtight, T, north, east, south, west) /proc/get_random_interesting_tile() - return MILLA_CALL(get_random_interesting_tile) + return RUSTLIB_CALL(milla_get_random_interesting_tile) /proc/create_environment(oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature) - return MILLA_CALL(create_environment, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature) + return RUSTLIB_CALL(milla_create_environment, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature) -#undef MILLA -#undef MILLA_CALL +/proc/mapmanip_read_dmm(mapname) + return RUSTLIB_CALL(mapmanip_read_dmm_file, mapname) + +#undef RUSTLIB +#undef RUSTLIB_CALL // Indexes for Tiles and InterestingTiles // Must match the order in milla/src/model.rs diff --git a/code/__HELPERS/bitflag_lists.dm b/code/__HELPERS/bitflag_lists.dm index ace6e0720ac2..7d7023a0cfbf 100644 --- a/code/__HELPERS/bitflag_lists.dm +++ b/code/__HELPERS/bitflag_lists.dm @@ -4,7 +4,7 @@ GLOBAL_LIST_EMPTY(bitflag_lists) * System for storing bitflags past the 24 limit, making use of an associative list. * * Macro converts a list of integers into an associative list of bitflag entries for quicker comparison. - * Example: list(0, 4, 26, 32)) => list( "0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) ) ) + * Example: list(0, 4, 26, 32)) => list("0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) )) * Lists are cached into a global list of lists to avoid identical duplicates. * This system makes value comparisons faster than pairing every element of one list with every element of the other for evaluation. * diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 0c172757ce39..959af27e822a 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -920,3 +920,10 @@ while(islist(result)) result = pickweight(fill_with_ones(result)) return result + +/** + * Checks to make sure that the lists have the exact same contents, ignores the order of the contents. + */ +/proc/lists_equal_unordered(list/list_one, list/list_two) + // This ensures that both lists contain the same elements by checking if the difference between them is empty in both directions. + return !length(list_one ^ list_two) diff --git a/code/_globalvars/lists/dye_registry.dm b/code/_globalvars/lists/dye_registry.dm index c3a61c8dcc3e..4b794f626bbf 100644 --- a/code/_globalvars/lists/dye_registry.dm +++ b/code/_globalvars/lists/dye_registry.dm @@ -36,10 +36,15 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_CENTCOM = /obj/item/clothing/under/rank/centcom/commander, ), DYE_REGISTRY_JUMPSKIRT = list( - DYE_RED = /obj/item/clothing/under/dress/plaid_red, - DYE_BLUE = /obj/item/clothing/under/dress/plaid_blue, - DYE_PURPLE = /obj/item/clothing/under/dress/plaid_purple, - DYE_BLACK = /obj/item/clothing/under/dress/blackskirt, + DYE_RED = /obj/item/clothing/under/color/jumpskirt/red, + DYE_ORANGE = /obj/item/clothing/under/color/jumpskirt/orange, + DYE_YELLOW = /obj/item/clothing/under/color/jumpskirt/yellow, + DYE_GREEN = /obj/item/clothing/under/color/jumpskirt/green, + DYE_BLUE = /obj/item/clothing/under/color/jumpskirt/blue, + DYE_PURPLE = /obj/item/clothing/under/color/jumpskirt/lightpurple, + DYE_BLACK = /obj/item/clothing/under/color/jumpskirt/black, + DYE_WHITE = /obj/item/clothing/under/color/jumpskirt/white, + DYE_RAINBOW = /obj/item/clothing/under/color/jumpskirt/rainbow, DYE_MIME = /obj/item/clothing/under/rank/civilian/mime/skirt, DYE_QM = /obj/item/clothing/under/rank/cargo/qm/skirt, DYE_CAPTAIN = /obj/item/clothing/under/rank/captain/dress, diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 1d215b776805..639fc1737099 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -67,6 +67,8 @@ SUBSYSTEM_DEF(ticker) var/datum/scoreboard/score = null /// List of ckeys who had antag rolling issues flagged var/list/flagged_antag_rollers = list() + /// List of biohazards keyed to the last time their population was sampled. + var/list/biohazard_pop_times = list() /datum/controller/subsystem/ticker/Initialize() login_music = pick(\ @@ -112,6 +114,10 @@ SUBSYSTEM_DEF(ticker) delay_end = FALSE // reset this in case round start was delayed mode.process() + for(var/biohazard in biohazard_pop_times) + if(world.time - biohazard_pop_times[biohazard] > BIOHAZARD_POP_INTERVAL) + sample_biohazard_population(biohazard) + if(world.time > next_autotransfer) SSvote.start_vote(new /datum/vote/crew_transfer) next_autotransfer = world.time + GLOB.configuration.vote.autotransfer_interval_time @@ -834,22 +840,45 @@ SUBSYSTEM_DEF(ticker) continue .++ -/// Return whether or not a given biohazard is an active threat. -/// For blobs, this is simply if there are any overminds left. For terrors and -/// xenomorphs, this is whether they have overwhelming numbers. -/datum/controller/subsystem/ticker/proc/biohazard_active_threat(biohazard) +/datum/controller/subsystem/ticker/proc/sample_biohazard_population(biohazard) + SSblackbox.record_feedback("ledger", "biohazard_pop_[BIOHAZARD_POP_INTERVAL_STR]_interval", biohazard_count(biohazard), biohazard) + biohazard_pop_times[biohazard] = world.time + +/// Record the initial time that a biohazard spawned. +/datum/controller/subsystem/ticker/proc/record_biohazard_start(biohazard) + SSblackbox.record_feedback("associative", "biohazard_starts", 1, list("type" = biohazard, "time_ds" = world.time - time_game_started)) + sample_biohazard_population(biohazard) + +/datum/controller/subsystem/ticker/proc/biohazard_count(biohazard) switch(biohazard) if(TS_INFESTATION_GREEN_SPIDER, TS_INFESTATION_WHITE_SPIDER, TS_INFESTATION_PRINCESS_SPIDER, TS_INFESTATION_QUEEN_SPIDER) var/spiders = 0 for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) if(S.ckey) spiders++ - return spiders >= 5 + return spiders if(TS_INFESTATION_PRINCE_SPIDER) return length(GLOB.ts_spiderlist) if(BIOHAZARD_XENO) - return count_xenomorps() > 5 + return count_xenomorps() if(BIOHAZARD_BLOB) return length(SSticker.mode.blob_overminds) + CRASH("biohazard_count got unexpected [biohazard]") + +/// Return whether or not a given biohazard is an active threat. +/// For blobs, this is simply if there are any overminds left. For terrors and +/// xenomorphs, this is whether they have overwhelming numbers. +/datum/controller/subsystem/ticker/proc/biohazard_active_threat(biohazard) + var/count = biohazard_count(biohazard) + switch(biohazard) + if(TS_INFESTATION_GREEN_SPIDER, TS_INFESTATION_WHITE_SPIDER, TS_INFESTATION_PRINCESS_SPIDER, TS_INFESTATION_QUEEN_SPIDER) + return count >= 5 + if(TS_INFESTATION_PRINCE_SPIDER) + return count > 0 + if(BIOHAZARD_XENO) + return count > 5 + if(BIOHAZARD_BLOB) + return count > 0 + return FALSE diff --git a/code/controllers/subsystem/non_firing/SSlate_mapping.dm b/code/controllers/subsystem/non_firing/SSlate_mapping.dm index ca68dc48e9f8..b3e66541577c 100644 --- a/code/controllers/subsystem/non_firing/SSlate_mapping.dm +++ b/code/controllers/subsystem/non_firing/SSlate_mapping.dm @@ -12,6 +12,10 @@ SUBSYSTEM_DEF(late_mapping) var/list/obj/effect/spawner/bridge/bridge_spawners = list() /datum/controller/subsystem/late_mapping/Initialize() + // Sort all the air machines we initialized during mapload by name all at once + GLOB.air_alarms = sortAtom(GLOB.air_alarms) + GLOB.apcs = sortAtom(GLOB.apcs) + if(length(maze_generators)) var/watch = start_watch() log_startup_progress("Generating mazes...") diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm index a5ff38a26b06..a3b3d8286e88 100644 --- a/code/datums/mixed.dm +++ b/code/datums/mixed.dm @@ -19,7 +19,7 @@ /datum/data/record name = "record" size = 5.0 - var/list/fields = list( ) + var/list/fields = list() /datum/data/record/Destroy() if(src in GLOB.data_core.medical) diff --git a/code/datums/status_effects/magic_disguise.dm b/code/datums/status_effects/magic_disguise.dm index f7bc83343b97..31f2b2ef0b28 100644 --- a/code/datums/status_effects/magic_disguise.dm +++ b/code/datums/status_effects/magic_disguise.dm @@ -44,7 +44,7 @@ caster_area = get_area(owner) for(var/obj/machinery/door/airlock/tmp in view(owner)) - if(get_area(tmp) == caster_area && !(tmp.req_access_txt == "0" && tmp.req_one_access_txt == "0")) //Ignore airlocks that arent in area or are public airlocks + if(get_area(tmp) == caster_area && (length(tmp.req_access) || length(tmp.req_one_access))) //Ignore airlocks that arent in area or are public airlocks AL = tmp break for(var/mob/living/carbon/human/disguise_source in shuffle(GLOB.player_list)) //Pick a random crewmember with access to this room diff --git a/code/datums/uplink_items/uplink_traitor.dm b/code/datums/uplink_items/uplink_traitor.dm index 006039d2b943..ce46ae3db35b 100644 --- a/code/datums/uplink_items/uplink_traitor.dm +++ b/code/datums/uplink_items/uplink_traitor.dm @@ -337,7 +337,7 @@ //skrell /datum/uplink_item/species_restricted/lovepen name = "Aggression Suppression Pen" - desc = "A syringe disguised as a functional pen which is filled with a potent aggression supressing chemical. The pen holds four doses of the mixture and it cannot be refilled." + desc = "A hypospray disguised as a functional pen which is filled with a potent aggression suppressing chemical. The pen holds four doses of the mixture which slowly regenerates over time, but cannot be refilled." reference = "LP" item = /obj/item/pen/sleepy/love cost = 20 diff --git a/code/defines/procs/announcer_datum.dm b/code/defines/procs/announcer_datum.dm index c0dad40bc433..39c97ec8990d 100644 --- a/code/defines/procs/announcer_datum.dm +++ b/code/defines/procs/announcer_datum.dm @@ -137,10 +137,6 @@ GLOBAL_DATUM_INIT(major_announcement, /datum/announcer, new(config_type = /datum log_game("[key_name(usr)] has made \a [config.log_name]: [message_title] - [message] - [author]") message_admins("[key_name_admin(usr)] has made \a [config.log_name].", 1) -/proc/GetNameAndAssignmentFromId(obj/item/card/id/I) - // Format currently matches that of newscaster feeds: Registered Name (Assigned Rank) - return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name - /datum/announcement_configuration/event default_title = ANNOUNCE_KIND_EVENT sound = sound('sound/misc/notice2.ogg') diff --git a/code/game/area/areas/depot-areas.dm b/code/game/area/areas/depot-areas.dm index 7c25b50b6239..dabbf83d9474 100644 --- a/code/game/area/areas/depot-areas.dm +++ b/code/game/area/areas/depot-areas.dm @@ -183,7 +183,7 @@ for(var/mob/living/simple_animal/hostile/syndicate/N in src) N.a_intent = INTENT_HARM for(var/obj/machinery/door/airlock/A in src) - A.req_access_txt = "[ACCESS_SYNDICATE_LEADER]" + A.req_access = list(ACCESS_SYNDICATE_LEADER) for(var/obj/structure/closet/secure_closet/syndicate/depot/L in src) if(L.locked) L.locked = !L.locked diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d623ec9dc290..90527c55547d 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -488,11 +488,13 @@ /// Updates the name of the atom /atom/proc/update_name(updates=ALL) SHOULD_CALL_PARENT(TRUE) + PROTECTED_PROC(TRUE) return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_NAME, updates) /// Updates the description of the atom /atom/proc/update_desc(updates=ALL) SHOULD_CALL_PARENT(TRUE) + PROTECTED_PROC(TRUE) return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_DESC, updates) /// Updates the icon of the atom @@ -525,10 +527,12 @@ /// Updates the icon state of the atom /atom/proc/update_icon_state() + PROTECTED_PROC(TRUE) return /// Updates the overlays of the atom. It has to return a list of overlays if it can't call the parent to create one. The list can contain anything that would be valid for the add_overlay proc: Images, mutable appearances, icon states... /atom/proc/update_overlays() + PROTECTED_PROC(TRUE) return list() /atom/proc/relaymove() diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index f350a6205911..83406308b33c 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -6,7 +6,7 @@ dead_icon = null status = ORGAN_ROBOT origin_tech = "materials=4;biotech=7;abductor=3" - organ_datums = list(/datum/organ/heart/always_beating) // alien glands are immune to stopping + organ_datums = list(/datum/organ/heart/always_beating, /datum/organ/battery) // alien glands are immune to stopping, and provide power to IPCs tough = TRUE //not easily broken by combat damage var/cooldown_low = 300 diff --git a/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm b/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm index 565a02aadfe7..f045de09513f 100644 --- a/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm +++ b/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm @@ -212,7 +212,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "demon_heart" origin_tech = "combat=5;biotech=7" - organ_datums = list(/datum/organ/heart/always_beating) + organ_datums = list(/datum/organ/heart/always_beating, /datum/organ/battery) /obj/item/organ/internal/heart/demon/update_icon_state() return //always beating visually diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index ad06167f1164..b1397465f3ac 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -617,7 +617,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Free Objective." /datum/objective/steal/proc/select_target() - var/list/possible_items_all = GLOB.potential_theft_objectives + "custom" + var/list/possible_items_all = GLOB.potential_theft_objectives + "custom" + "random" var/new_target = input("Select target:", "Objective target", null) as null|anything in possible_items_all if(!new_target) return @@ -636,13 +636,19 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) target_theft_objective.name = theft_objective_name steal_target = target_theft_objective explanation_text = "Steal [theft_objective_name]." - else - steal_target = new new_target - update_explanation_text() - if(steal_target.special_equipment) - give_kit(steal_target.special_equipment) + return steal_target + else if(new_target == "random") + return TRUE + + steal_target = new new_target + update_explanation_text() + if(steal_target.special_equipment) // We have to do it with a callback because mind/Topic creates the objective without an owner + addtimer(CALLBACK(src, PROC_REF(hand_out_equipment)), 5 SECONDS, TIMER_DELETE_ME) return steal_target +/datum/objective/steal/proc/hand_out_equipment() + give_kit(steal_target?.special_equipment) + /datum/objective/steal/update_explanation_text() explanation_text = "Steal [steal_target.name]. One was last seen in [get_location()]. " if(length(steal_target.protected_jobs) && steal_target.job_possession) @@ -679,7 +685,6 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) var/mob/living/carbon/human/kit_receiver = kit_receiver_mind.current if(!kit_receiver) continue - var/where = kit_receiver.equip_in_one_of_slots(item_to_give, slots) if(!where) continue diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 08f8b073b7a9..1546afc8c116 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -168,12 +168,12 @@ /obj/item/scrying name = "scrying orb" - desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." + desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means. Also works well as a throwing weapon." icon = 'icons/obj/wizard.dmi' icon_state ="scrying_orb" throw_speed = 7 throw_range = 15 - throwforce = 15 + throwforce = 25 damtype = BURN force = 15 hitsound = 'sound/items/welder2.ogg' @@ -183,6 +183,7 @@ /obj/item/scrying/Initialize(mapload) . = ..() START_PROCESSING(SSobj, src) + AddComponent(/datum/component/boomerang, throw_range, TRUE) /obj/item/scrying/Destroy() STOP_PROCESSING(SSobj, src) @@ -237,6 +238,17 @@ user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, COLOR_BLUE) REMOVE_TRAIT(user, SCRYING, SCRYING_ORB) +/obj/item/scrying/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + if(!ishuman(hit_atom) || !throwingdatum || iswizard(hit_atom)) + return + var/mob/living/carbon/human/crushee = hit_atom + var/zone = ran_zone(throwingdatum.target_zone) // Base 80% to hit the zone you're aiming for + var/obj/item/organ/external/hit_limb = crushee.get_organ(zone) + if(hit_limb) + hit_limb.fracture() + + /////////////////////Multiverse Blade//////////////////// GLOBAL_LIST_EMPTY(multiverse) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index c698751b4655..3dce596278e8 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -424,7 +424,7 @@ /datum/spellbook_entry/item/scryingorb name = "Scrying Orb" - desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." + desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision. It will also work as an excellent throwing weapon, and will return to your hand after throwing." item_path = /obj/item/scrying category = "Artefacts" diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 21d50f46bab3..19cd1be96291 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -15,26 +15,6 @@ else return check_access_list(acc) -/obj/proc/generate_req_lists() - //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!req_access) - req_access = list() - if(req_access_txt) - var/list/req_access_str = splittext(req_access_txt, ";") - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(!req_one_access) - req_one_access = list() - if(req_one_access_txt) - var/list/req_one_access_str = splittext(req_one_access_txt,";") - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n - /obj/proc/check_access(obj/item/I) var/list/L if(I) @@ -44,8 +24,6 @@ return check_access_list(L) /obj/proc/check_access_list(list/L) - generate_req_lists() - if(!L) return 0 if(!istype(L, /list)) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index fb6e69fdb877..3a896dcb5c12 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -48,7 +48,7 @@ id = /obj/item/card/id/quartermaster l_hand = /obj/item/clipboard l_pocket = /obj/item/mail_scanner - pda = /obj/item/pda/quartermaster + pda = /obj/item/pda/heads/qm backpack_contents = list( /obj/item/melee/classic_baton/telescopic = 1 ) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 96c54e3e9474..ffcdfdad7d17 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -416,6 +416,8 @@ new_item.materials[MAT_GLASS] /= coeff new_item.pixel_y = rand(-5, 5) new_item.pixel_x = rand(-5, 5) + if(is_station_level(z)) + SSblackbox.record_feedback("tally", "station_autolathe_production", 1, "[D.type]") SStgui.update_uis(src) desc = initial(desc) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 52e49c98f03c..f9fc2b92e7be 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -625,11 +625,13 @@ to destroy them and players will be able to make replacements. build_path = /obj/machinery/chem_dispenser board_type = "machine" origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" - req_components = list( /obj/item/stock_parts/matter_bin = 2, - /obj/item/stock_parts/capacitor = 1, - /obj/item/stock_parts/manipulator = 1, - /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell = 1) + req_components = list( + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stock_parts/cell = 1 + ) /obj/item/circuitboard/chem_master board_name = "ChemMaster 3000" diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 3ed9620e54dc..c2481554cda1 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1541,8 +1541,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) DA.polarized_glass = polarized_glass DA.state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS DA.created_name = name - DA.update_name() - DA.update_icon() + DA.update_appearance(UPDATE_NAME|UPDATE_ICON) if(!disassembled) if(DA) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 828fbb9001f6..9a2a29a93f90 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -197,8 +197,7 @@ DA = new /obj/structure/door_assembly(loc) if(glass) DA.glass = TRUE - DA.update_icon() - DA.update_name() + DA.update_appearance(UPDATE_NAME|UPDATE_ICON) qdel(src) /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) @@ -367,11 +366,11 @@ /obj/machinery/door/airlock/hatch/syndicate name = "syndicate hatch" - req_access_txt = "150" + req_access = list(ACCESS_SYNDICATE) /obj/machinery/door/airlock/hatch/syndicate/command name = "Command Center" - req_access_txt = "153" + req_access = list(ACCESS_SYNDICATE_COMMAND) explosion_block = 2 normal_integrity = 1000 security_level = 6 @@ -398,7 +397,7 @@ /obj/machinery/door/airlock/hatch/syndicate/vault name = "syndicate vault hatch" - req_access_txt = "151" + req_access = list(ACCESS_SYNDICATE) icon = 'icons/obj/doors/airlocks/vault/vault.dmi' overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' assemblytype = /obj/structure/door_assembly/door_assembly_vault diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 071811f3137a..1c1451bb5669 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -610,6 +610,6 @@ blockage.max_integrity += 25 foam_level++ blockage.icon_state = "foamed_[foam_level]" - blockage.update_icon_state() + blockage.update_icon(UPDATE_ICON_STATE) #undef MAX_FOAM_LEVEL diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index e1690fa8d3ca..d07d7a946c6f 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -147,7 +147,7 @@ R.cell.charge = min(R.cell.charge + recharge_speed, R.cell.maxcharge) else if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant - if(H.get_int_organ(/obj/item/organ/internal/cell)) + if(ismachineperson(H)) if(H.nutrition < NUTRITION_LEVEL_FULL - 1) H.set_nutrition(min(H.nutrition + recharge_speed_nutrition, NUTRITION_LEVEL_FULL - 1)) if(repairs) @@ -206,7 +206,7 @@ if(occupant) to_chat(H, "The cell is already occupied!") return - if(ismodcontrol(H.back) || H.get_int_organ(/obj/item/organ/internal/cell)) + if(ismodcontrol(H.back) || ismachineperson(H)) can_accept_user = TRUE if(!can_accept_user) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 18cc38eac8b7..f31a573e270e 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -383,7 +383,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) /obj/machinery/requests_console/proc/print_label(tag_name, tag_index) var/obj/item/shippingPackage/sp = new /obj/item/shippingPackage(get_turf(src)) sp.sortTag = tag_index - sp.update_desc() + sp.update_appearance(UPDATE_DESC) print_cooldown = world.time + 600 //1 minute cooldown before you can print another label, but you can still configure the next one during this time /obj/machinery/requests_console/proc/view_messages() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 6a3d980797d9..d726a0c00a0b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -372,7 +372,7 @@ * **/ /obj/machinery/suit_storage_unit/proc/store_item(obj/item/I, mob/user) - if((istype(I, /obj/item/clothing/suit)|| istype(I, /obj/item/mod/control)) && !suit) + if((istype(I, /obj/item/clothing/suit) || istype(I, /obj/item/mod/control) || istype(I, /obj/item/storage/backpack)) && !suit) if(try_store_item(I, user)) suit = I return TRUE diff --git a/code/game/machinery/vendors/contraband_vendors.dm b/code/game/machinery/vendors/contraband_vendors.dm index 10992d51c29c..6b9d4d3542a2 100644 --- a/code/game/machinery/vendors/contraband_vendors.dm +++ b/code/game/machinery/vendors/contraband_vendors.dm @@ -13,7 +13,7 @@ "Don't you want some?", "Ping!") - req_access_txt = "150" + req_access = list(ACCESS_SYNDICATE) products = list(/obj/item/stack/medical/bruise_pack = 2, /obj/item/stack/medical/ointment = 2, /obj/item/reagent_containers/syringe/charcoal = 4, @@ -107,7 +107,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/syndicate, 32 desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." icon_state = "liberationstation" icon_lightmask = "liberationstation" - req_access_txt = "1" + req_access = list(ACCESS_SECURITY) slogan_list = list("Liberation Station: Your one-stop shop for all things second amendment!", "Be a patriot today, pick up a gun!", "Quality weapons for cheap prices!", diff --git a/code/game/machinery/vendors/departmental_vendors.dm b/code/game/machinery/vendors/departmental_vendors.dm index d19ccc0ea9bd..63d9b65e5d1f 100644 --- a/code/game/machinery/vendors/departmental_vendors.dm +++ b/code/game/machinery/vendors/departmental_vendors.dm @@ -5,7 +5,7 @@ icon_deny = "engivend_deny" icon_panel = "generic" category = VENDOR_TYPE_DEPARTMENTAL - req_one_access_txt = "11;24" // Engineers and atmos techs can use this + req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS) products = list(/obj/item/clothing/glasses/meson/engine = 2, /obj/item/clothing/glasses/meson/engine/tray = 4, /obj/item/multitool = 4, @@ -28,7 +28,7 @@ icon_state = "engi" icon_deny = "engi_deny" category = VENDOR_TYPE_DEPARTMENTAL - req_access_txt = "11" + req_access = list(ACCESS_ENGINE_EQUIP) products = list(/obj/item/clothing/under/rank/engineering/chief_engineer = 4, /obj/item/clothing/under/rank/engineering/engineer = 40, /obj/item/clothing/shoes/workboots = 4, @@ -62,7 +62,7 @@ icon_deny = "robotics_deny" category = VENDOR_TYPE_DEPARTMENTAL icon_lightmask = "robotics" - req_access_txt = "29" + req_access = list(ACCESS_ROBOTICS) products = list(/obj/item/clothing/suit/storage/labcoat = 4, /obj/item/clothing/under/rank/rnd/roboticist = 4, /obj/item/stack/cable_coil = 4, /obj/item/flash = 4, @@ -253,7 +253,7 @@ "Don't you want some?", "Ping!") - req_access_txt = "5" + req_access = list(ACCESS_MEDICAL) category = VENDOR_TYPE_DEPARTMENTAL products = list(/obj/item/reagent_containers/hypospray/autoinjector/epinephrine = 4, /obj/item/stack/medical/bruise_pack/advanced = 2, @@ -331,7 +331,7 @@ icon_deny = "sec_deny" icon_panel = "wide_vendor" category = VENDOR_TYPE_DEPARTMENTAL - req_access_txt = "1" + req_access = list(ACCESS_SECURITY) products = list(/obj/item/restraints/handcuffs = 8, /obj/item/restraints/handcuffs/cable/zipties = 8, /obj/item/grenade/flashbang = 4, diff --git a/code/game/machinery/vendors/generic_vendors.dm b/code/game/machinery/vendors/generic_vendors.dm index 4627b13a0d9d..f60dc1aaee1f 100644 --- a/code/game/machinery/vendors/generic_vendors.dm +++ b/code/game/machinery/vendors/generic_vendors.dm @@ -249,7 +249,6 @@ "Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*") products = list(/obj/item/clothing/under/color/black = 10, - /obj/item/clothing/under/dress/blackskirt = 10, /obj/item/clothing/under/color/grey = 10, /obj/item/clothing/under/color/white = 10, /obj/item/clothing/under/color/darkred = 10, @@ -269,11 +268,34 @@ /obj/item/clothing/under/color/purple = 10, /obj/item/clothing/under/color/lightpurple = 10, /obj/item/clothing/under/color/pink = 10, + /obj/item/clothing/under/dress/blackskirt = 10, + /obj/item/clothing/under/color/jumpskirt/black = 10, + /obj/item/clothing/under/color/jumpskirt/grey = 10, + /obj/item/clothing/under/color/jumpskirt/white = 10, + /obj/item/clothing/under/color/jumpskirt/darkred = 10, + /obj/item/clothing/under/color/jumpskirt/red = 10, + /obj/item/clothing/under/color/jumpskirt/lightred = 10, + /obj/item/clothing/under/color/jumpskirt/brown = 10, + /obj/item/clothing/under/color/jumpskirt/orange = 10, + /obj/item/clothing/under/color/jumpskirt/lightbrown = 10, + /obj/item/clothing/under/color/jumpskirt/yellow = 10, + /obj/item/clothing/under/color/jumpskirt/yellowgreen = 10, + /obj/item/clothing/under/color/jumpskirt/lightgreen = 10, + /obj/item/clothing/under/color/jumpskirt/green = 10, + /obj/item/clothing/under/color/jumpskirt/aqua = 10, + /obj/item/clothing/under/color/jumpskirt/darkblue = 10, + /obj/item/clothing/under/color/jumpskirt/blue = 10, + /obj/item/clothing/under/color/jumpskirt/lightblue = 10, + /obj/item/clothing/under/color/jumpskirt/purple = 10, + /obj/item/clothing/under/color/jumpskirt/lightpurple = 10, + /obj/item/clothing/under/color/jumpskirt/pink = 10, + /obj/item/clothing/under/color/jumpskirt/rainbow = 1, /obj/item/clothing/under/color/rainbow = 1) contraband = list(/obj/item/clothing/under/syndicate/tacticool = 5, /obj/item/clothing/under/syndicate/greyman = 5, - /obj/item/clothing/under/color/orange/prison = 5) + /obj/item/clothing/under/color/orange/prison = 10, + /obj/item/clothing/under/color/jumpskirt/orange/prison = 10) prices = list(/obj/item/clothing/under/color/black = 30, /obj/item/clothing/under/dress/blackskirt = 30, @@ -297,8 +319,30 @@ /obj/item/clothing/under/color/lightpurple = 50, /obj/item/clothing/under/color/pink = 50, /obj/item/clothing/under/color/rainbow = 100, + /obj/item/clothing/under/color/jumpskirt/black = 30, + /obj/item/clothing/under/color/jumpskirt/grey = 30, + /obj/item/clothing/under/color/jumpskirt/white = 50, + /obj/item/clothing/under/color/jumpskirt/darkred = 50, + /obj/item/clothing/under/color/jumpskirt/red = 50, + /obj/item/clothing/under/color/jumpskirt/lightred = 50, + /obj/item/clothing/under/color/jumpskirt/brown = 30, + /obj/item/clothing/under/color/jumpskirt/orange = 50, + /obj/item/clothing/under/color/jumpskirt/lightbrown = 30, + /obj/item/clothing/under/color/jumpskirt/yellow = 50, + /obj/item/clothing/under/color/jumpskirt/yellowgreen = 50, + /obj/item/clothing/under/color/jumpskirt/lightgreen = 50, + /obj/item/clothing/under/color/jumpskirt/green = 50, + /obj/item/clothing/under/color/jumpskirt/aqua = 50, + /obj/item/clothing/under/color/jumpskirt/darkblue = 50, + /obj/item/clothing/under/color/jumpskirt/blue = 50, + /obj/item/clothing/under/color/jumpskirt/lightblue = 30, + /obj/item/clothing/under/color/jumpskirt/purple = 50, + /obj/item/clothing/under/color/jumpskirt/lightpurple = 50, + /obj/item/clothing/under/color/jumpskirt/pink = 50, + /obj/item/clothing/under/color/jumpskirt/rainbow = 100, /obj/item/clothing/under/syndicate/tacticool = 75, /obj/item/clothing/under/syndicate/greyman = 75, + /obj/item/clothing/under/color/jumpskirt/orange/prison = 75, /obj/item/clothing/under/color/orange/prison = 75) refill_canister = /obj/item/vending_refill/suitdispenser diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index ba98e8b6ad85..13a6887278ba 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -420,7 +420,7 @@ do_after_cooldown() /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/cleaner/can_attach(obj/mecha/nkarrdem/M as obj) - return ..() && istype(M) + return istype(M) && length(M.equipment) < M.max_equip /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar equip_cooldown = 2 SECONDS diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index a7f2be30560b..efcbd0ff3bfa 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -247,6 +247,8 @@ /obj/machinery/mecha_part_fabricator/proc/build_design_timer_finish(datum/design/D, list/final_cost) // Spawn the item (in a lockbox if restricted) OR mob (e.g. IRC body) var/atom/A = new D.build_path(get_step(src, output_dir)) + if(is_station_level(z)) + SSblackbox.record_feedback("tally", "station_mechfab_production", 1, "[D.type]") if(isitem(A)) var/obj/item/I = A I.materials = final_cost diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index d04a540066af..bd96797ad522 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -159,7 +159,7 @@ qdel(V) set_light(lights_range_ambient, lights_power_ambient) - update_overlays() + update_icon(UPDATE_OVERLAYS) /obj/mecha/update_overlays() . = ..() @@ -1037,7 +1037,7 @@ AI.forceMove(src) occupant = AI icon_state = reset_icon(icon_state) - update_overlays() + update_icon(UPDATE_OVERLAYS) playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) if(!hasInternalDamage()) SEND_SOUND(occupant, sound(nominalsound, volume = 50)) @@ -1195,7 +1195,7 @@ H.throw_alert("locked", /atom/movable/screen/alert/mech_maintenance) if(connected_port) H.throw_alert("mechaport_d", /atom/movable/screen/alert/mech_port_disconnect) - update_overlays() + update_icon(UPDATE_OVERLAYS) return TRUE else return FALSE @@ -1251,7 +1251,7 @@ Move(loc) icon_state = reset_icon() dir = dir_in - update_overlays() + update_icon(UPDATE_OVERLAYS) log_message("[mmi_as_oc] moved in as pilot.") if(!hasInternalDamage()) SEND_SOUND(occupant, sound(nominalsound, volume = 50)) @@ -1341,7 +1341,7 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L H.regenerate_icons() // workaround for 14457 - update_overlays() + update_icon(UPDATE_OVERLAYS) /obj/mecha/force_eject_occupant(mob/target) go_out() diff --git a/code/game/objects/effects/map_effects/mapmanip.dm b/code/game/objects/effects/map_effects/mapmanip.dm new file mode 100644 index 000000000000..d0be4103dd90 --- /dev/null +++ b/code/game/objects/effects/map_effects/mapmanip.dm @@ -0,0 +1,26 @@ +/obj/effect/map_effect/marker/mapmanip + name = "mapmanip marker" + layer = POINT_LAYER + +/obj/effect/map_effect/marker/mapmanip/Initialize(mapload) + . = ..() + qdel(src) + +/obj/effect/map_effect/marker/mapmanip/submap/extract + name = "mapmanip marker, extract submap" + icon = 'icons/effects/map_effects_96x96.dmi' + icon_state = "mapmanip_extract" + pixel_x = -32 + pixel_y = -32 + +/obj/effect/map_effect/marker/mapmanip/submap/insert + name = "mapmanip marker, insert submap" + icon = 'icons/effects/map_effects_96x96.dmi' + icon_state = "mapmanip_insert" + pixel_x = -32 + pixel_y = -32 + +/obj/effect/map_effect/marker_helper/mapmanip/submap/edge + name = "mapmanip helper marker, edge of submap" + icon = 'icons/effects/mapping_helpers.dmi' + icon_state = "mapmanip_submap_edge" diff --git a/code/game/objects/effects/misc_effects.dm b/code/game/objects/effects/misc_effects.dm index ee56195d173f..bc12b3c7851c 100644 --- a/code/game/objects/effects/misc_effects.dm +++ b/code/game/objects/effects/misc_effects.dm @@ -58,7 +58,7 @@ /obj/effect/shut_controller name = "shut controller" var/moving = null - var/list/parts = list( ) + var/list/parts = list() /obj/structure/showcase name = "Showcase" @@ -86,7 +86,7 @@ name = "mobl" var/master = null - var/list/container = list( ) + var/list/container = list() /obj/structure/showcase/horrific_experiment diff --git a/code/game/objects/effects/spawners/airlock_spawner.dm b/code/game/objects/effects/spawners/airlock_spawner.dm index cfeea9b4448e..3fa3c557e4b8 100644 --- a/code/game/objects/effects/spawners/airlock_spawner.dm +++ b/code/game/objects/effects/spawners/airlock_spawner.dm @@ -207,14 +207,10 @@ This spawner places pipe leading up to the interior door, you will need to finis // Since airlocks are created first, we steal the payload logic // to apply to the controls later req_access = airlock.req_access - req_access_txt = airlock.req_access_txt req_one_access = airlock.req_one_access - req_one_access_txt = airlock.req_one_access_txt else I.req_access = req_access - I.req_access_txt = req_access_txt I.req_one_access = req_one_access - I.req_one_access_txt = req_one_access_txt // MARK: AIRLOCK HELPERS diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 0daaeef79308..ee32405e0680 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -272,7 +272,7 @@ /obj/item/melee/baseball_bat/homerun = 50, /obj/item/rcd/combat = 50, /obj/item/weaponcrafting/gunkit/universal_gun_kit/sol_gov = 50, - /obj/item/storage/box/buck = 30, //Only seven shots, make them count + /obj/item/storage/fancy/shell/buck = 30, //Only eight shots, make them count /obj/item/mod/module/noslip = 40, /obj/item/clothing/mask/holo_cigar = 50 ) @@ -389,7 +389,7 @@ /obj/item/mod/construction/plating/research = 30, /obj/item/assembly/signaler/anomaly/random = 20, /obj/item/gun/energy/gun = 50, - /obj/item/storage/box/dragonsbreath = 30, + /obj/item/storage/fancy/shell/dragonsbreath = 30, /obj/item/storage/box/turbine_kit = 20, /obj/item/mod/module/firefighting_tank = 40, /obj/item/mod/module/jetpack/advanced = 40 diff --git a/code/game/objects/effects/spawners/random/trash_spawners.dm b/code/game/objects/effects/spawners/random/trash_spawners.dm index bc15b76c47d0..6fc25c65a82d 100644 --- a/code/game/objects/effects/spawners/random/trash_spawners.dm +++ b/code/game/objects/effects/spawners/random/trash_spawners.dm @@ -58,8 +58,16 @@ // Ammo casings rarely list( - /obj/item/ammo_casing/c10mm, - /obj/item/trash/spentcasing, + /obj/item/trash/spentcasing/shotgun, + /obj/item/trash/spentcasing/shotgun/rubbershot, + /obj/item/trash/spentcasing/shotgun/beanbag, + /obj/item/trash/spentcasing/shotgun/slug, + /obj/item/trash/spentcasing/shotgun/dragonsbreath, + /obj/item/trash/spentcasing/shotgun/stun, + /obj/item/trash/spentcasing/bullet, + /obj/item/trash/spentcasing/bullet/medium, + /obj/item/trash/spentcasing/bullet/large, + /obj/item/trash/spentcasing/bullet/lasershot ) = 1, ) diff --git a/code/game/objects/effects/temporary_visuals/misc_visuals.dm b/code/game/objects/effects/temporary_visuals/misc_visuals.dm index 77cdaa73bf46..f06a632c2957 100644 --- a/code/game/objects/effects/temporary_visuals/misc_visuals.dm +++ b/code/game/objects/effects/temporary_visuals/misc_visuals.dm @@ -520,3 +520,20 @@ icon = 'icons/effects/96x96.dmi' icon_state = "warning" duration = 3 SECONDS + +/obj/effect/temp_visual/bsa_splash + name = "\improper Bluespace energy wave" + desc = "A massive, rippling wave of bluepace energy, all rapidly exhausting itself the moment it leaves the concentrated beam of light." + icon = 'icons/effects/beam_splash.dmi' + icon_state = "beam_splash_l" + layer = ABOVE_ALL_MOB_LAYER + pixel_y = -16 + duration = 50 + +/obj/effect/temp_visual/bsa_splash/Initialize(mapload, dir) + . = ..() + switch(dir) + if(WEST) + icon_state = "beam_splash_w" + if(EAST) + icon_state = "beam_splash_e" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 642e3f497f2c..ea8dac2bb266 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -346,7 +346,7 @@ /obj/item/radio/headset/ert/alt name = "emergency response team's bowman headset" - desc = "The headset of the boss. Protects ears from flashbangs." + desc = "An ergonomic tactical headset used by Nanotrasen-affiliated PMCs. Protects against loud noises." flags = EARBANGPROTECT icon_state = "com_headset_alt" item_state = "com_headset_alt" diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 463a69a18d3c..6feda858d4c8 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -116,10 +116,11 @@ /obj/item/taperecorder/AltClick(mob/user) if(in_range(user, src) && mytape && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - var/list/options = list( "Playback Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "taperecorder_playing"), - "Print Transcript" = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "paper_words"), - "Eject Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "[mytape.icon_state]") - ) + var/list/options = list( + "Playback Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "taperecorder_playing"), + "Print Transcript" = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "paper_words"), + "Eject Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "[mytape.icon_state]") + ) var/choice = show_radial_menu(user, src, options) if(user.incapacitated()) return diff --git a/code/game/objects/items/scratch_card.dm b/code/game/objects/items/scratch_card.dm index 2a6f372fe7d0..5864b207e7ee 100644 --- a/code/game/objects/items/scratch_card.dm +++ b/code/game/objects/items/scratch_card.dm @@ -27,7 +27,7 @@ icon_state = "scard_loser" playsound(user, 'sound/items/scratching.ogg', 25, TRUE) scratched = TRUE - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/scratch/attack_obj(obj/O, mob/living/user, params) if(winner && istype(O, /obj/machinery/economy/atm)) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index f9a3c96d3dd9..73bbf852c76c 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -17,6 +17,9 @@ return TRUE return ..() +/obj/item/trash/attack(mob/M as mob, mob/living/user as mob) + return + /obj/item/trash/raisins name = "4no raisins" icon_state= "4no_raisins" @@ -117,12 +120,6 @@ name = "bread tube" icon_state = "tastybread" -/obj/item/trash/spentcasing - icon = 'icons/obj/ammo.dmi' - name = "bullet casing" - desc = "A spent bullet casing. Smells like cordite." - icon_state = "gshell" - /obj/item/trash/tapetrash name = "old duct tape" icon_state = "tape" @@ -134,5 +131,61 @@ icon_state = "popsicle_stick_s" desc = "Still tastes sweet." -/obj/item/trash/attack(mob/M as mob, mob/living/user as mob) - return +// Ammo casings +/obj/item/trash/spentcasing + icon = 'icons/obj/ammo.dmi' + name = "arbitrary spent casing item" + desc = "If you can see this and didn't spawn it, make an issue report on GitHub." + icon_state = "gshell" + +/obj/item/trash/spentcasing/Initialize(mapload) + . = ..() + pixel_x = rand(-10, 10) + pixel_y = rand(-10, 10) + transform = turn(transform, rand(0, 360)) + +/obj/item/trash/spentcasing/shotgun + name = "spent buckshot shell" + desc = "A spent shotgun shell. It smells like cordite." + icon_state = "gshell" + +/obj/item/trash/spentcasing/shotgun/rubbershot + name = "spent rubbershot shell" + desc = "A spent shotgun shell. It smells like cordite and singed rubber." + icon_state = "cshell" + +/obj/item/trash/spentcasing/shotgun/beanbag + name = "spent beanbag shell" + icon_state = "bshell" + +/obj/item/trash/spentcasing/shotgun/slug + name = "spent slug shell" + icon_state = "blshell" + +/obj/item/trash/spentcasing/shotgun/dragonsbreath + name = "spent dragonsbreath shell" + desc = "A spent shotgun shell. It smells like cordite, burnt plastic, and a hint of petroleum." + icon_state = "ishell" + +/obj/item/trash/spentcasing/shotgun/stun + name = "spent stun shell" + icon_state = "stunshell" + +/obj/item/trash/spentcasing/bullet + name = "spent bullet casing" + desc = "A spent bullet casing. It smells of brass and cordite." + icon_state = "s-casing" + +/obj/item/trash/spentcasing/bullet/medium + name = "spent large bullet casing" + desc = "A spent high-caliber bullet casing. It smells of brass and cordite." + icon_state = "762-casing" + +/obj/item/trash/spentcasing/bullet/large + name = "spent .50 BMG bullet casing" + desc = "A spent .50 BMG bullet casing. It smells of brass and cordite." + icon_state = ".50" + +/obj/item/trash/spentcasing/bullet/lasershot + desc = "A spent IK-series single-use lasershot cell. It smells of burnt plastic with a metallic-chemical undertone." + icon_state = "lasercasing" diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 5e5a6e874050..741357eb01c1 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -13,7 +13,7 @@ w_class = WEIGHT_CLASS_TINY var/associated_account_number = 0 - var/list/files = list( ) + var/list/files = list() /obj/item/card/proc/get_card_account() return GLOB.station_money_database.find_user_account(associated_account_number) @@ -1191,3 +1191,7 @@ return "Thunderdome Green" else return capitalize(skin) + +/proc/GetNameAndAssignmentFromId(obj/item/card/id/I) + // Format currently matches that of newscaster feeds: Registered Name (Assigned Rank) + return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name diff --git a/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm b/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm index 9ec74e6b2f2d..ae1300409363 100644 --- a/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm +++ b/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm @@ -39,7 +39,7 @@ if(should_start_with_canisters && !length(canisters)) canisters += new /obj/item/chemical_canister update_canister_stats() - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/chemical_flamethrower/Destroy() QDEL_LIST_CONTENTS(canisters) diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm index 593c5bdee7d4..c6ce59d40b29 100644 --- a/code/game/objects/items/weapons/legcuffs.dm +++ b/code/game/objects/items/weapons/legcuffs.dm @@ -102,7 +102,7 @@ return ..() var/mob/living/L = AM - if((iscarbon(AM) || isanimal(AM)) && HAS_TRAIT(L, TRAIT_FLYING)) + if((iscarbon(AM) || isanimal(AM)) && !HAS_TRAIT(L, TRAIT_FLYING)) spring_trap(AM) if(ishuman(AM)) diff --git a/code/game/objects/items/weapons/melee/melee_misc.dm b/code/game/objects/items/weapons/melee/melee_misc.dm index c374a870e6b2..99c3652f28e3 100644 --- a/code/game/objects/items/weapons/melee/melee_misc.dm +++ b/code/game/objects/items/weapons/melee/melee_misc.dm @@ -174,11 +174,11 @@ /obj/item/melee/breach_cleaver/proc/wield(obj/item/source, mob/living/carbon/human/user) to_chat(user, "You heave [src] up in both hands.") user.apply_status_effect(STATUS_EFFECT_BREACH_AND_CLEAVE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/melee/breach_cleaver/proc/unwield(obj/item/source, mob/living/carbon/human/user) user.remove_status_effect(STATUS_EFFECT_BREACH_AND_CLEAVE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/melee/breach_cleaver/attack_obj(obj/O, mob/living/user, params) if(!HAS_TRAIT(src, TRAIT_WIELDED)) // Only works good when wielded diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 8e5496d61cf1..fadff4057acd 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -431,7 +431,7 @@ slowdown = 1 if(antidrop_on_zip) flags ^= NODROP - update_icon_state(UPDATE_ICON_STATE) + update_icon(UPDATE_ICON_STATE) return slowdown = 0 @@ -440,7 +440,7 @@ container.hide_from_all() // Hide everything inside the bag too if(antidrop_on_zip) flags |= NODROP - update_icon_state(UPDATE_ICON_STATE) + update_icon(UPDATE_ICON_STATE) /obj/item/storage/backpack/duffel/update_icon_state() . = ..() @@ -910,30 +910,30 @@ //Commander /obj/item/storage/backpack/ert/commander name = "emergency response team commander backpack" - desc = "A spacious backpack with lots of pockets, worn by the commander of a Nanotrasen Emergency Response Team." + desc = "A spacious blue-striped combat backpack with plenty of easily-accessible pockets." //Security /obj/item/storage/backpack/ert/security name = "emergency response team security backpack" - desc = "A spacious backpack with lots of pockets, worn by security members of a Nanotrasen Emergency Response Team." + desc = "A spacious red-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_security" //Engineering /obj/item/storage/backpack/ert/engineer name = "emergency response team engineer backpack" - desc = "A spacious backpack with lots of pockets, worn by engineering members of a Nanotrasen Emergency Response Team." + desc = "A spacious orange-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_engineering" //Medical /obj/item/storage/backpack/ert/medical name = "emergency response team medical backpack" - desc = "A spacious backpack with lots of pockets, worn by medical members of a Nanotrasen Emergency Response Team." + desc = "A spacious white-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_medical" //Janitorial /obj/item/storage/backpack/ert/janitor name = "emergency response team janitor backpack" - desc = "A spacious backpack with lots of pockets, worn by janitorial members of a Nanotrasen Emergency Response Team." + desc = "A spacious purple-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_janitor" //Solgov @@ -944,6 +944,6 @@ /obj/item/storage/backpack/ert/deathsquad name = "Deathsquad backpack" - desc = "A spacious backpack with lots of pockets, worn by those working in Special Operations." + desc = "A spacious red & black combat rucksack made of lightweight nanomesh. Likely the most intimidating backpack one will ever see." icon_state = "ert_security" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index bfb2ad7f8690..e58bb74b023d 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -568,7 +568,7 @@ /obj/item/storage/belt/lazarus name = "trainer's belt" desc = "For the mining master, holds your lazarus capsules." - icon_state = "lazarusbelt" + icon_state = "lazarusbelt_0" item_state = "lazbelt" w_class = WEIGHT_CLASS_BULKY max_w_class = WEIGHT_CLASS_TINY @@ -582,7 +582,7 @@ update_icon() /obj/item/storage/belt/lazarus/update_icon_state() - icon_state = "[initial(icon_state)]_[length(contents)]" + icon_state = "lazarusbelt_[length(contents)]" /obj/item/storage/belt/lazarus/attackby(obj/item/I, mob/user) var/amount = length(contents) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 31e29968b4d0..cb423ae1cad2 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -320,6 +320,8 @@ desc = "A full set of labelled components for assembling an R&D setup with. There are wordless picrographs of how to assemble everything on the back." /obj/item/storage/box/large/rnd_parts/populate_contents() + new /obj/item/circuitboard/rnd_network_controller(src) + new /obj/item/circuitboard/rdserver(src) new /obj/item/circuitboard/rdconsole(src) new /obj/item/circuitboard/protolathe(src) new /obj/item/circuitboard/destructive_analyzer(src) @@ -332,6 +334,7 @@ new /obj/item/stock_parts/matter_bin(src) new /obj/item/stock_parts/matter_bin(src) new /obj/item/stock_parts/scanning_module(src) + new /obj/item/stock_parts/scanning_module(src) new /obj/item/stock_parts/micro_laser(src) new /obj/item/reagent_containers/glass/beaker(src) new /obj/item/reagent_containers/glass/beaker(src) @@ -340,6 +343,7 @@ new /obj/item/stack/sheet/glass/fifty(src) new /obj/item/stack/sheet/metal/fifty(src) new /obj/item/stack/cable_coil(src) + new /obj/item/stack/cable_coil(src) /obj/item/storage/box/large/glowstick/emergency name = "emergency glowstick box" @@ -699,77 +703,83 @@ //////////////// /* Ammo Boxes */ //////////////// -/obj/item/storage/box/slug - name = "ammunition box (Slug)" + +/obj/item/storage/fancy/shell + icon = 'icons/obj/shell_boxes.dmi' + storage_slots = 8 + appearance_flags = parent_type::appearance_flags | KEEP_TOGETHER + can_hold = list(/obj/item/ammo_casing/shotgun) + /// What shell do we fill the box with + var/shell_type + +/obj/item/storage/fancy/shell/update_icon_state() + icon_state = "open" + +/obj/item/storage/fancy/shell/populate_contents() + if(!shell_type) + return + for(var/i in 1 to storage_slots) + new shell_type(src) + +/obj/item/storage/fancy/shell/update_overlays() + . = ..() + var/list/cached_contents = contents + for(var/index in 1 to length(cached_contents)) + var/obj/shell = cached_contents[index] + var/image/I = image(icon, src, initial(shell.icon_state)) + I.pixel_x = 3 * (round((index - 1) / 2)) + I.pixel_y = -4 * ((index + 1) % 2) + . += I + + . += "shell_box_front" // need to add another overlay to prevent from other overlays from showing on top + +/obj/item/storage/fancy/shell/tranquilizer + name = "ammunition box (Tranquilizer darts)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "slug_box" + icon_state = "tranqbox" + shell_type = /obj/item/ammo_casing/shotgun/tranquilizer -/obj/item/storage/box/slug/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun(src) +/obj/item/storage/fancy/shell/slug + name = "ammunition box (Slug)" + desc = "A small box capable of holding seven shotgun shells." + icon_state = "slugbox" + shell_type = /obj/item/ammo_casing/shotgun -/obj/item/storage/box/buck +/obj/item/storage/fancy/shell/buck name = "ammunition box (Buckshot)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "buckshot_box" + icon_state = "buckbox" + shell_type = /obj/item/ammo_casing/shotgun/buckshot -/obj/item/storage/box/buck/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/buckshot(src) - -/obj/item/storage/box/dragonsbreath +/obj/item/storage/fancy/shell/dragonsbreath name = "ammunition box (Dragonsbreath)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "dragonsbreath_box" + icon_state = "dragonsbox" + shell_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath -/obj/item/storage/box/dragonsbreath/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(src) - -/obj/item/storage/box/stun +/obj/item/storage/fancy/shell/stun name = "ammunition box (Stun shells)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "stun_box" + icon_state = "stunbox" + shell_type = /obj/item/ammo_casing/shotgun/stunslug -/obj/item/storage/box/stun/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/stunslug(src) - -/obj/item/storage/box/beanbag +/obj/item/storage/fancy/shell/beanbag name = "ammunition box (Beanbag shells)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "beanbag_box" - -/obj/item/storage/box/beanbag/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/beanbag(src) + icon_state = "beanbox" + shell_type = /obj/item/ammo_casing/shotgun/beanbag -/obj/item/storage/box/rubbershot +/obj/item/storage/fancy/shell/rubbershot name = "ammunition box (Rubbershot shells)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "rubbershot_box" + icon_state = "rubberbox" + shell_type = /obj/item/ammo_casing/shotgun/rubbershot -/obj/item/storage/box/rubbershot/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - -/obj/item/storage/box/tranquilizer - name = "ammunition box (Tranquilizer darts)" - desc = "A small box capable of holding seven shotgun shells." - icon_state = "tranq_box" - -/obj/item/storage/box/tranquilizer/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/tranquilizer(src) - -/obj/item/storage/box/holy +/obj/item/storage/fancy/shell/holy name = "ammunition box (Holy Water darts)" desc = "A small box capable of holding seven shotgun shells." icon_state = "hshell_box" - -/obj/item/storage/box/holy/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/holy(src) + shell_type = /obj/item/ammo_casing/shotgun/holy //////////////// /* Donk Boxes */ diff --git a/code/game/objects/items/weapons/storage/storage_base.dm b/code/game/objects/items/weapons/storage/storage_base.dm index 0789f3ff9dfe..9130e81e6f30 100644 --- a/code/game/objects/items/weapons/storage/storage_base.dm +++ b/code/game/objects/items/weapons/storage/storage_base.dm @@ -532,6 +532,7 @@ if(I.maptext) I.maptext = "" I.on_exit_storage(src) + I.mouse_opacity = initial(I.mouse_opacity) update_icon() return TRUE diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 748c7a1d54f1..e33a4d681fca 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -52,14 +52,14 @@ if(!current_location||!is_teleport_allowed(current_location.z))//If turf was not found or they're somewhere teleproof to_chat(user, "\The [src] is malfunctioning.") return - var/list/L = list( ) + var/list/L = list() for(var/obj/machinery/computer/teleporter/com in GLOB.machines) if(com.target) if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged) L["[com.id] (Active)"] = com.target else L["[com.id] (Inactive)"] = com.target - var/list/turfs = list( ) + var/list/turfs = list() var/area/A for(var/turf/T in orange(10)) if(T.x>world.maxx-8 || T.x<8) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index bf1feabf93d5..8c79b2cd0dcf 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -164,11 +164,11 @@ var/mob/living/carbon/C = A if(C.can_breathe_gas()) mobs_to_smoke += C + if(length(mobs_to_smoke)) + var/percentage_to_add = released_reagents.reagents.total_volume / length(mobs_to_smoke) // Divide the amount of reagents spread around by the number of people inhaling it - var/percentage_to_add = released_reagents.reagents.total_volume / length(mobs_to_smoke) // Divide the amount of reagents spread around by the number of people inhaling it - - for(var/mob/living/carbon/smoker as anything in mobs_to_smoke) - released_reagents.reagents.copy_to(smoker, percentage_to_add) + for(var/mob/living/carbon/smoker as anything in mobs_to_smoke) + released_reagents.reagents.copy_to(smoker, percentage_to_add) if(reagents.total_volume <= 0) put_out() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 6848767af43f..3d11a5dff23b 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -34,10 +34,11 @@ var/emagged = FALSE // Access-related fields + + /// A list of accesses as defined by `code/__DEFINES/access_defines.dm`. All accesses are required when checking. var/list/req_access = null - var/req_access_txt = "0" + /// A list of accesses as defined by `code/__DEFINES/access_defines.dm`. At least one access is required when checking. var/list/req_one_access = null - var/req_one_access_txt = "0" /obj/Initialize(mapload) . = ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm index 7a7c0986411e..4b077715daf6 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm @@ -219,6 +219,7 @@ /obj/structure/closet/secure_closet/brig/populate_contents() new /obj/item/clothing/under/color/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/card/id/prisoner/random(src) new /obj/item/radio/headset(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 04b8ab743c8b..cab056f24be0 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -12,6 +12,9 @@ new /obj/item/clothing/under/color/blue(src) new /obj/item/clothing/under/color/blue(src) new /obj/item/clothing/under/color/blue(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) new /obj/item/clothing/mask/bandana/blue(src) new /obj/item/clothing/mask/bandana/blue(src) new /obj/item/clothing/mask/bandana/blue(src) @@ -76,6 +79,9 @@ new /obj/item/clothing/under/color/pink(src) new /obj/item/clothing/under/color/pink(src) new /obj/item/clothing/under/color/pink(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/clothing/shoes/brown(src) @@ -88,6 +94,9 @@ new /obj/item/clothing/under/color/black(src) new /obj/item/clothing/under/color/black(src) new /obj/item/clothing/under/color/black(src) + new /obj/item/clothing/under/color/jumpskirt/black(src) + new /obj/item/clothing/under/color/jumpskirt/black(src) + new /obj/item/clothing/under/color/jumpskirt/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) new /obj/item/clothing/shoes/black(src) @@ -108,6 +117,9 @@ new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/green(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) @@ -137,6 +149,9 @@ new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) @@ -149,6 +164,9 @@ new /obj/item/clothing/under/color/orange/prison(src) new /obj/item/clothing/under/color/orange/prison(src) new /obj/item/clothing/under/color/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) @@ -161,6 +179,9 @@ new /obj/item/clothing/under/color/yellow(src) new /obj/item/clothing/under/color/yellow(src) new /obj/item/clothing/under/color/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) @@ -219,6 +240,9 @@ new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/white(src) + new /obj/item/clothing/under/color/jumpskirt/white(src) + new /obj/item/clothing/under/color/jumpskirt/white(src) + new /obj/item/clothing/under/color/jumpskirt/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) @@ -400,6 +424,9 @@ new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src) + new /obj/item/clothing/under/color/jumpskirt/grey(src) + new /obj/item/clothing/under/color/jumpskirt/grey(src) + new /obj/item/clothing/under/color/jumpskirt/grey(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) @@ -424,9 +451,11 @@ new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/dress/plaid_blue(src) - new /obj/item/clothing/under/dress/plaid_red(src) - new /obj/item/clothing/under/dress/plaid_purple(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) new /obj/item/clothing/shoes/blue(src) new /obj/item/clothing/shoes/yellow(src) new /obj/item/clothing/shoes/green(src) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 11409c535f17..b708793ac85b 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -38,7 +38,7 @@ if(showpiece_entry["trophy_message"]) trophy_message = showpiece_entry["trophy_message"] if(start_showpiece_type) - showpiece = new start_showpiece_type (src) + showpiece = new start_showpiece_type(src) update_icon(UPDATE_OVERLAYS) /obj/structure/displaycase/Destroy() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 6e3bcbd9171a..3511f2bb5e47 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -285,8 +285,7 @@ if(electronics) target.electronics = source.electronics source.electronics.forceMove(target) - target.update_icon(UPDATE_OVERLAYS) - target.update_name() + target.update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) qdel(source) /obj/structure/door_assembly/deconstruct(disassembled = TRUE) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index dde36ebb6cee..de327bca7e24 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -243,6 +243,6 @@ blockage.max_integrity += 25 foam_level++ blockage.icon_state = "foamed_[foam_level]" - blockage.update_icon_state() + blockage.update_icon(UPDATE_ICON_STATE) #undef MAX_FOAM_LEVEL diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index bfc860d6bd5f..9836fb7343f4 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -37,7 +37,7 @@ return flipped = !flipped - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/structure/transit_tube_construction/screwdriver_act(mob/living/user, obj/item/I) . = TRUE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 7ec565955a45..e48086e57db5 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -776,6 +776,7 @@ glass_type = /obj/item/stack/sheet/plastitaniumglass smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM, SMOOTH_GROUP_PLASTITANIUM_WALLS) canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS) + env_smash_level = ENVIRONMENT_SMASH_RWALLS //used in shuttles, same reason as above superconductivity = ZERO_HEAT_TRANSFER_COEFFICIENT /obj/structure/window/reinforced/clockwork diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 021c17091523..dce375016fde 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -2,7 +2,7 @@ GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","damaged3","damaged4", "damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2", "platingdmg3","plating","light_on","warnplate", "warnplatecorner","metalfoam", "ironfoam", - "light_off","wall_thermite","grass1","grass2","grass3","grass4", + "light_off","grass1","grass2","grass3","grass4", "asteroid","asteroid_dug","asteroid0","asteroid1","asteroid2","asteroid3","asteroid4", "asteroid5","asteroid6","asteroid7","asteroid8","asteroid9","asteroid10","asteroid11","asteroid12", "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpet", diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm index da4915de892b..5861ecf00f05 100644 --- a/code/game/turfs/simulated/floor/plasteel_floor.dm +++ b/code/game/turfs/simulated/floor/plasteel_floor.dm @@ -79,14 +79,15 @@ /turf/simulated/floor/plasteel/stairs icon_state = "stairs" + /turf/simulated/floor/plasteel/stairs/left icon_state = "stairs-l" + /turf/simulated/floor/plasteel/stairs/medium icon_state = "stairs-m" + /turf/simulated/floor/plasteel/stairs/right icon_state = "stairs-r" -/turf/simulated/floor/plasteel/stairs/old - icon_state = "stairs-old" /turf/simulated/floor/plasteel/grimy icon_state = "grimy" diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index e6d6844116ce..596dc3251eb4 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -139,7 +139,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons holder.rights = GLOB.admin_ranks[newrank] else holder = new /datum/admins(newrank,GLOB.admin_ranks[newrank],ckey) - remove_admin_verbs() + hide_verbs() holder.associate(src) /client/verb/changerights(newrights as num) @@ -147,7 +147,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons holder.rights = newrights else holder = new /datum/admins("testing",newrights,ckey) - remove_admin_verbs() + hide_verbs() holder.associate(src) #endif diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 1363484743c7..4b8b4c2288f2 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -209,7 +209,9 @@ set_pixel_offsets_from_dir(24, -24, 24, -24) GLOB.air_alarms += src - GLOB.air_alarms = sortAtom(GLOB.air_alarms) + + if(!mapload) + GLOB.air_alarms = sortAtom(GLOB.air_alarms) wires = new(src) diff --git a/code/modules/atmospherics/machinery/atmospherics.dm b/code/modules/atmospherics/machinery/atmospherics.dm index af620e41e27b..21f7103bab23 100644 --- a/code/modules/atmospherics/machinery/atmospherics.dm +++ b/code/modules/atmospherics/machinery/atmospherics.dm @@ -297,7 +297,7 @@ Pipelines + Other Objects -> Pipe network level = (T.intact || !can_be_undertile) ? 2 : 1 else level = 2 - update_icon_state() + update_icon(UPDATE_ICON_STATE) add_fingerprint(usr) if(!SSair.initialized) //If there's no atmos subsystem, we can't really initialize pipenets SSair.machinery_to_construct.Add(src) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 1690df3deffe..599c9c3f1a32 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -10,7 +10,7 @@ var/open = FALSE var/animating = FALSE - req_one_access_txt = "24;10" + req_one_access = list(ACCESS_ENGINE, ACCESS_ATMOSPHERICS) /obj/machinery/atmospherics/binary/valve/examine(mob/user) . = ..() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 7826aed76402..ccefb2f7f983 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -1,5 +1,7 @@ /datum/canister_icons - var/list/possiblemaincolor = list( //these lists contain the possible colors of a canister + // these lists contain the possible colors of a canister + + var/list/possiblemaincolor = list( list("name" = "\[N2O\]", "icon" = "redws"), list("name" = "\[N2\]", "icon" = "red"), list("name" = "\[O2\]", "icon" = "blue"), @@ -10,7 +12,8 @@ list("name" = "\[SPECIAL\]", "icon" = "whiters") ) - var/list/possibleseccolor = list( // no point in having the N2O and "whiters" ones in these lists + // no point in having the N2O and "whiters" ones in these lists + var/list/possibleseccolor = list( list("name" = "\[None\]", "icon" = "none"), list("name" = "\[N2\]", "icon" = "red-c"), list("name" = "\[O2\]", "icon" = "blue-c"), diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index b4a654396e73..198621034bf4 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -35,7 +35,15 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) if(lastchar == "/" || lastchar == "\\") log_debug("Attempted to load map template without filename (Attempted [tfile])") return - tfile = wrap_file2text(tfile) + + // use rustlib to read, parse, process, mapmanip etc + // this will "crash"/stacktrace on fail + tfile = mapmanip_read_dmm(fname) + // if rustlib for whatever reason fails and returns null + // try to load it the old dm way instead + if(!tfile) + tfile = wrap_file2text(fname) + if(!length(tfile)) throw EXCEPTION("Map path '[fname]' does not exist!") diff --git a/code/modules/awaymissions/mob_spawn.dm b/code/modules/awaymissions/mob_spawn.dm index 4e2f23fe7bcb..bc1991d71532 100644 --- a/code/modules/awaymissions/mob_spawn.dm +++ b/code/modules/awaymissions/mob_spawn.dm @@ -4,11 +4,6 @@ // To do: Allow customizing the bodies appearance (they're all bald and white right now). -/// this mob spawn creates the corpse instantly -#define CORPSE_INSTANT 1 -/// this mob spawn creates the corpse during GAME_STATE_PLAYING -#define CORPSE_ROUNDSTART 2 - /obj/effect/mob_spawn name = "Unknown" density = TRUE @@ -672,50 +667,13 @@ ADD_TRAIT(H, TRAIT_NON_INFECTIOUS_ZOMBIE, ROUNDSTART_TRAIT) return ..() -////////Non-human spawners//////// - -/obj/effect/mob_spawn/mouse - name = "sleeper" - mob_name = "space mouse" - mob_type = /mob/living/simple_animal/mouse - death = FALSE - roundstart = FALSE - icon = 'icons/obj/cryogenic2.dmi' - icon_state = "sleeper" - flavour_text = "Squeak!" - -/obj/effect/mob_spawn/cow - name = "sleeper" - mob_name = "space cow" - mob_type = /mob/living/simple_animal/cow - death = FALSE - roundstart = FALSE - mob_gender = FEMALE - icon = 'icons/obj/cryogenic2.dmi' - icon_state = "sleeper" - flavour_text = "Moo!" - /// these mob spawn subtypes trigger immediately (New or Initialize) and are not player controlled... since they're dead, you know? /obj/effect/mob_spawn/corpse - /// when this mob spawn should auto trigger. - var/spawn_when = CORPSE_INSTANT - /// what environmental storytelling script should this corpse have var/corpse_description = "" /// optionally different text to display if the target is a clown var/naive_corpse_description = "" -/obj/effect/mob_spawn/corpse/Initialize(mapload, no_spawn) - . = ..() - if(no_spawn) - return - switch(spawn_when) - if(CORPSE_INSTANT) - INVOKE_ASYNC(src, PROC_REF(create)) - if(CORPSE_ROUNDSTART) - if(mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP)) - INVOKE_ASYNC(src, PROC_REF(create)) - /obj/effect/mob_spawn/corpse/special(mob/living/spawned_mob) . = ..() spawned_mob.death(TRUE) @@ -737,7 +695,3 @@ icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "goliath_dead" pixel_x = -12 - - -#undef CORPSE_INSTANT -#undef CORPSE_ROUNDSTART diff --git a/code/modules/client/preference/link_processing.dm b/code/modules/client/preference/link_processing.dm index 0656ec4750a8..81f589bd36ac 100644 --- a/code/modules/client/preference/link_processing.dm +++ b/code/modules/client/preference/link_processing.dm @@ -322,7 +322,7 @@ active_character.metadata = new_metadata if("b_type") - var/new_b_type = tgui_input_list(user, "Choose your character's blood-type", "Character Preference", list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")) + var/new_b_type = tgui_input_list(user, "Choose your character's blood-type", "Character Preference", list("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")) if(!new_b_type) return active_character.b_type = new_b_type diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm index 547f443981e9..97fdfaad69d2 100644 --- a/code/modules/client/preference/loadout/loadout_uniform.dm +++ b/code/modules/client/preference/loadout/loadout_uniform.dm @@ -102,6 +102,86 @@ display_name = "Jumpsuit, darkred" path = /obj/item/clothing/under/color/darkred +/datum/gear/uniform/suit/jumpskirtblack + display_name = "Jumpskirt, black" + path = /obj/item/clothing/under/color/jumpskirt/black + +/datum/gear/uniform/suit/jumpskirtblue + display_name = "Jumpskirt, blue" + path = /obj/item/clothing/under/color/jumpskirt/blue + +/datum/gear/uniform/suit/jumpskirtgreen + display_name = "Jumpskirt, green" + path = /obj/item/clothing/under/color/jumpskirt/green + +/datum/gear/uniform/suit/jumpskirtgrey + display_name = "Jumpskirt, grey" + path = /obj/item/clothing/under/color/jumpskirt/grey + +/datum/gear/uniform/suit/jumpskirtorange + display_name = "Jumpskirt, orange" + path = /obj/item/clothing/under/color/jumpskirt/orange + +/datum/gear/uniform/suit/jumpskirtpink + display_name = "Jumpskirt, pink" + path = /obj/item/clothing/under/color/jumpskirt/pink + +/datum/gear/uniform/suit/jumpskirtred + display_name = "Jumpskirt, red" + path = /obj/item/clothing/under/color/jumpskirt/red + +/datum/gear/uniform/suit/jumpskirtwhite + display_name = "Jumpskirt, white" + path = /obj/item/clothing/under/color/jumpskirt/white + +/datum/gear/uniform/suit/jumpskirtyellow + display_name = "Jumpskirt, yellow" + path = /obj/item/clothing/under/color/jumpskirt/yellow + +/datum/gear/uniform/suit/jumpskirtlightblue + display_name = "Jumpskirt, lightblue" + path = /obj/item/clothing/under/color/jumpskirt/lightblue + +/datum/gear/uniform/suit/jumpskirtaqua + display_name = "Jumpskirt, aqua" + path = /obj/item/clothing/under/color/jumpskirt/aqua + +/datum/gear/uniform/suit/jumpskirtpurple + display_name = "Jumpskirt, purple" + path = /obj/item/clothing/under/color/jumpskirt/purple + +/datum/gear/uniform/suit/jumpskirtlightpurple + display_name = "Jumpskirt, lightpurple" + path = /obj/item/clothing/under/color/jumpskirt/lightpurple + +/datum/gear/uniform/suit/jumpskirtlightgreen + display_name = "Jumpskirt, lightgreen" + path = /obj/item/clothing/under/color/jumpskirt/lightgreen + +/datum/gear/uniform/suit/jumpskirtlightbrown + display_name = "Jumpskirt, lightbrown" + path = /obj/item/clothing/under/color/jumpskirt/lightbrown + +/datum/gear/uniform/suit/jumpskirtbrown + display_name = "Jumpskirt, brown" + path = /obj/item/clothing/under/color/jumpskirt/brown + +/datum/gear/uniform/suit/jumpskirtyellowgreen + display_name = "Jumpskirt, yellowgreen" + path = /obj/item/clothing/under/color/jumpskirt/yellowgreen + +/datum/gear/uniform/suit/jumpskirtdarkblue + display_name = "Jumpskirt, darkblue" + path = /obj/item/clothing/under/color/jumpskirt/darkblue + +/datum/gear/uniform/suit/jumpskirtlightred + display_name = "Jumpskirt, lightred" + path = /obj/item/clothing/under/color/jumpskirt/lightred + +/datum/gear/uniform/suit/jumpskirtdarkred + display_name = "Jumpskirt, darkred" + path = /obj/item/clothing/under/color/jumpskirt/darkred + /datum/gear/uniform/suit/soviet display_name = "Old USSP uniform" path = /obj/item/clothing/under/costume/soviet diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 473953906f52..828303414901 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -1,4 +1,5 @@ -GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts to play these roles +/// Minimum age (in days) for accounts to play these roles. +GLOBAL_LIST_INIT(special_role_times, list( ROLE_PAI = 0, ROLE_GUARDIAN = 0, ROLE_TRAITOR = 7, diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 672e5a445841..26ec24b69ccd 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -281,7 +281,8 @@ sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/gloves.dmi', - "Drask" = 'icons/mob/clothing/species/drask/gloves.dmi' + "Drask" = 'icons/mob/clothing/species/drask/gloves.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/gloves.dmi' ) // Called just before an attack_hand(), in mob/UnarmedAttack() @@ -398,11 +399,153 @@ var/vision_flags = 0 var/see_in_dark = 0 var/lighting_alpha + /// the head clothing that this item may be attached to. + var/obj/item/clothing/under/has_under = null + /// the attached hats to this hat. + var/list/attached_hats = list() + /// if this hat can have hats placed on top of it. + var/can_have_hats = FALSE + /// if this hat can be a hat of a hat. Hat^2 + var/can_be_hat = TRUE /obj/item/clothing/head/update_icon_state() if(..()) item_state = "[replacetext("[item_state]", "_up", "")][up ? "_up" : ""]" +/obj/item/clothing/head/AltShiftClick(mob/user) + if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) + return + if(!length(attached_hats)) + return + var/obj/item/clothing/head/hat + if(length(attached_hats) > 1) + var/pick = radial_menu_helper(usr, src, attached_hats, custom_check = FALSE, require_near = TRUE) + if(!pick || !istype(pick, /obj/item/clothing/head) || !Adjacent(usr)) + return + hat = pick + else + hat = attached_hats[1] + remove_hat(user, hat) + +/obj/item/clothing/head/Destroy() + if(is_equipped()) + var/mob/M = loc + for(var/obj/item/clothing/head/H as anything in attached_hats) + H.on_removed(M) + else + for(var/obj/item/clothing/head/H as anything in attached_hats) + H.forceMove(get_turf(src)) + attached_hats = null + return ..() + +/obj/item/clothing/head/dropped(mob/user, silent) + ..() + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.get_item_by_slot(SLOT_HUD_HEAD) == src) + for(var/obj/item/clothing/head/hat as anything in attached_hats) + hat.attached_unequip() + +/obj/item/clothing/head/examine(mob/user) + . = ..() + for(var/obj/item/clothing/head/hat as anything in attached_hats) + . += "\A [hat] is placed neatly on top." + +//when user attached a hat to H (another hat) +/obj/item/clothing/head/proc/on_attached(obj/item/clothing/head/H, mob/user as mob) + if(!istype(H)) + return + has_under = H + forceMove(has_under) + has_under.overlays += item_state + has_under.actions += actions + + for(var/datum/action/A in actions) + if(has_under.is_equipped()) + var/mob/M = has_under.loc + A.Grant(M) + + if(user) + to_chat(user, "You attach [src] to [has_under].") + add_fingerprint(user) + +/obj/item/clothing/head/proc/on_removed(mob/user) + if(!has_under) + return + has_under.overlays -= icon_state + has_under.actions -= actions + + for(var/datum/action/A in actions) + if(ismob(has_under.loc)) + var/mob/M = has_under.loc + A.Remove(M) + + has_under = null + if(user) + user.put_in_hands(src) + add_fingerprint(user) + +/obj/item/clothing/head/proc/detach_hat(obj/item/clothing/head/hat, mob/user) + attached_hats -= hat + hat.on_removed(user) + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() + +/obj/item/clothing/head/proc/remove_hat(mob/user, obj/item/clothing/head/hat) + if(!(hat in attached_hats)) + return + if(!isliving(user)) + return + if(user.incapacitated()) + return + if(!Adjacent(user)) + return + detach_hat(hat, user) + to_chat(user, "You remove [hat] from [src].") + +/obj/item/clothing/head/proc/attached_unequip(mob/user) // If we need to do something special when clothing is removed from the user + return + +/obj/item/clothing/head/proc/attached_equip(mob/user) // If we need to do something special when clothing is removed from the user + return + +/* + * # can_attach_hat + * + * Arguments: + * * Hat - The clothing/head object being checked. MUST BE TYPE /obj/item/clothing/head +*/ +/obj/item/clothing/head/proc/can_attach_hat(obj/item/clothing/head/hat) + return length(attached_hats) < 1 && can_have_hats && hat.can_be_hat // this hat already has a hat or cannot be a hat of a hat! + +/obj/item/clothing/head/proc/attach_hat(obj/item/clothing/head/hat, mob/user, unequip = FALSE) + if(can_attach_hat(hat)) + if(unequip && !user.unEquip(hat)) // Make absolutely sure this hat is removed from hands + return FALSE + + attached_hats += hat + hat.on_attached(src, user) + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() + + return TRUE + else if(hat.has_under) + return FALSE + else + to_chat(user, "You cannot place [hat] ontop of [src].") + + return FALSE + +/obj/item/clothing/head/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/clothing/head) && can_have_hats) + attach_hat(I, user, TRUE) + + return ..() + ////////////////////////////// // MARK: MASK ////////////////////////////// diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index f63c0f0c727a..b24eff63868a 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -296,35 +296,35 @@ //Commander /obj/item/clothing/head/helmet/ert/command name = "emergency response team commander helmet" - desc = "An in-atmosphere helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped blue Command stripes." icon_state = "erthelmet_cmd" //Security /obj/item/clothing/head/helmet/ert/security name = "emergency response team security helmet" - desc = "An in-atmosphere helmet worn by security members of the Nanotrasen Emergency Response Team. Has red highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped red Security stripes." icon_state = "erthelmet_sec" /obj/item/clothing/head/helmet/ert/security/paranormal name = "paranormal emergency response team helmet" - desc = "An in-atmosphere helmet worn by paranormal members of the Nanotrasen Emergency Response Team. Has crusader sigils." + desc = "An antique steel helmet that looks straight out of a poorly-funded documentary about the Crusades. Where the hell did they even find this?" icon_state = "knight_templar" item_state = "knight_templar" //Engineer /obj/item/clothing/head/helmet/ert/engineer name = "emergency response team engineer helmet" - desc = "An in-atmosphere helmet worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped orange Engineering stripes." icon_state = "erthelmet_eng" //Medical /obj/item/clothing/head/helmet/ert/medical name = "emergency response team medical helmet" - desc = "A set of armor worn by medical members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped white Medical stripes." icon_state = "erthelmet_med" //Janitorial /obj/item/clothing/head/helmet/ert/janitor name = "emergency response team janitor helmet" - desc = "A set of armor worn by janitorial members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped purple Janitorial stripes." icon_state = "erthelmet_jan" diff --git a/code/modules/clothing/head/misc_hats.dm b/code/modules/clothing/head/misc_hats.dm index 304a6c092f07..bc9ea7066eec 100644 --- a/code/modules/clothing/head/misc_hats.dm +++ b/code/modules/clothing/head/misc_hats.dm @@ -536,6 +536,7 @@ icon_state = "crown" armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 10, BOMB = 0, RAD = 0, FIRE = INFINITY, ACID = 50) resistance_flags = FIRE_PROOF + can_be_hat = FALSE /obj/item/clothing/head/crown/fancy name = "magnificent crown" diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 3d445c09ede3..337d97ca8315 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -341,8 +341,8 @@ return var/atom/target = get_edge_target_turf(user, user.dir) //gets the user's direction - ADD_TRAIT(user, TRAIT_FLYING, "gravity_boots") if(user.throw_at(target, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(callback_remove_trait), user, TRAIT_FLYING, "gravity_boots"))) + ADD_TRAIT(user, TRAIT_FLYING, "gravity_boots") playsound(src, 'sound/effects/stealthoff.ogg', 50, TRUE, 1) user.visible_message("[usr] dashes forward into the air!") recharging_time = world.time + recharging_rate diff --git a/code/modules/clothing/shoes/misc_shoes.dm b/code/modules/clothing/shoes/misc_shoes.dm index a40b0bba0c2c..eb4cb5436ab5 100644 --- a/code/modules/clothing/shoes/misc_shoes.dm +++ b/code/modules/clothing/shoes/misc_shoes.dm @@ -472,8 +472,8 @@ return var/atom/target = get_edge_target_turf(user, user.dir) //gets the user's direction - ADD_TRAIT(user, TRAIT_FLYING, "bhop_shoes") if(user.throw_at(target, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(callback_remove_trait), user, TRAIT_FLYING, "bhop_shoes"))) + ADD_TRAIT(user, TRAIT_FLYING, "bhop_shoes") playsound(src, 'sound/effects/stealthoff.ogg', 50, TRUE, 1) user.visible_message("[usr] dashes forward into the air!") recharging_time = world.time + recharging_rate diff --git a/code/modules/clothing/spacesuits/ert_hardsuits.dm b/code/modules/clothing/spacesuits/ert_hardsuits.dm index d14f22f8238e..84961e9cd940 100644 --- a/code/modules/clothing/spacesuits/ert_hardsuits.dm +++ b/code/modules/clothing/spacesuits/ert_hardsuits.dm @@ -1,7 +1,7 @@ /obj/item/clothing/head/helmet/space/hardsuit/ert name = "emergency response team helmet" - desc = "A helmet worn by members of the Nanotrasen Emergency Response Team. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility." icon_state = "hardsuit0-ert_commander" item_state = "helm-command" item_color = "ert_commander" @@ -53,7 +53,7 @@ /obj/item/clothing/suit/space/hardsuit/ert name = "emergency response team suit" - desc = "A suit worn by members of the Nanotrasen Emergency Response Team. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant." icon_state = "ert_commander" item_state = "suit-command" w_class = WEIGHT_CLASS_NORMAL @@ -76,14 +76,14 @@ //Commander /obj/item/clothing/head/helmet/space/hardsuit/ert/commander name = "emergency response team commander helmet" - desc = "A helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has blue Command stripes." icon_state = "hardsuit0-ert_commander" item_state = "helm-command" item_color = "ert_commander" /obj/item/clothing/suit/space/hardsuit/ert/commander name = "emergency response team commander suit" - desc = "A suit worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in blue Command livery." icon_state = "ert_commander" item_state = "suit-command" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/commander @@ -91,14 +91,14 @@ //Security /obj/item/clothing/head/helmet/space/hardsuit/ert/security name = "emergency response team security helmet" - desc = "A helmet worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has red Security stripes." icon_state = "hardsuit0-ert_security" item_state = "syndicate-helm-black-red" item_color = "ert_security" /obj/item/clothing/suit/space/hardsuit/ert/security name = "emergency response team security suit" - desc = "A suit worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in red Security livery." icon_state = "ert_security" item_state = "syndicate-black-red" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/security @@ -111,7 +111,7 @@ //Engineer /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer name = "emergency response team engineer helmet" - desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has orange Engineering stripes, and additional lead plating for improved radiation protection." armor = list(MELEE = 40, BULLET = 15, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 150, FIRE = 200, ACID = 200) icon_state = "hardsuit0-ert_engineer" item_state = "helm-orange" @@ -127,7 +127,7 @@ /obj/item/clothing/suit/space/hardsuit/ert/engineer name = "emergency response team engineer suit" - desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in orange Engineering livery, and has additional lead inserts for added radiation protection." icon_state = "ert_engineer" item_state = "suit-orange" armor = list(MELEE = 40, BULLET = 15, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 150, FIRE = 200, ACID = 200) @@ -145,13 +145,13 @@ //Medical /obj/item/clothing/head/helmet/space/hardsuit/ert/medical name = "emergency response team medical helmet" - desc = "A helmet worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one's got white Medical stripes." icon_state = "hardsuit0-ert_medical" item_color = "ert_medical" /obj/item/clothing/suit/space/hardsuit/ert/medical name = "emergency response team medical suit" - desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in white Medical livery." icon_state = "ert_medical" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/medical @@ -163,20 +163,20 @@ //Janitor /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor name = "emergency response team janitor helmet" - desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has purple Janitorial stripes." icon_state = "hardsuit0-ert_janitor" item_color = "ert_janitor" /obj/item/clothing/suit/space/hardsuit/ert/janitor name = "emergency response team janitor suit" - desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in purple Janitorial livery." icon_state = "ert_janitor" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor //Paranormal /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal name = "paranormal response unit helmet" - desc = "A helmet worn by those who deal with paranormal threats for a living." + desc = "An environmentally-sealed combat helmet covered in runes and warding sigils. The internal HUD is fairly outdated, and has Latin as a selectable language." icon_state = "hardsuit0-ert_paranormal" item_color = "ert_paranormal" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -191,7 +191,7 @@ /obj/item/clothing/suit/space/hardsuit/ert/paranormal name = "paranormal response team suit" - desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats." + desc = "A specially designed combat hardsuit produced by Citadel Armories for engaging paranormal threats, this suit is inlaid with interlocking geometric warding sigils and uses a unique holy water liquid-cooling system." icon_state = "hardsuit-paranormal" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 461f780e99d2..500a1f000a8f 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -23,6 +23,8 @@ icon = 'icons/obj/clothing/species/plasmaman/hats.dmi' species_restricted = list("Plasmaman") sprite_sheets = list("Plasmaman" = 'icons/mob/clothing/species/plasmaman/helmet.dmi') + can_have_hats = TRUE + can_be_hat = FALSE /obj/item/clothing/head/helmet/space/plasmaman/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/suits/armor_suits.dm b/code/modules/clothing/suits/armor_suits.dm index 9a62ffdb512c..0ef37b03aa22 100644 --- a/code/modules/clothing/suits/armor_suits.dm +++ b/code/modules/clothing/suits/armor_suits.dm @@ -248,7 +248,8 @@ desc = "An old style captain tunic. Makes you look and feel like you're wearing a cardboard box with arm holes cut in it but looks like it would be great for a wedding... or a funeral." icon_state = "captain_white" - sprite_sheets = list( //Drask look fine in the regular human version + // Drask look fine in the regular human version + sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/suit.dmi', "Grey" = 'icons/mob/clothing/species/grey/suit.dmi', "Kidan" = 'icons/mob/clothing/species/kidan/suit.dmi', @@ -753,7 +754,7 @@ //Non-hardsuit ERT armor. /obj/item/clothing/suit/armor/vest/ert name = "emergency response team armor" - desc = "A set of armor worn by members of the Nanotrasen Emergency Response Team." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests." icon_state = "ertarmor_cmd" item_state = "armor" armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 10, RAD = 0, FIRE = 50, ACID = 50) @@ -761,37 +762,37 @@ //Commander /obj/item/clothing/suit/armor/vest/ert/command name = "emergency response team commander armor" - desc = "A set of armor worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped blue Command insignia on the shoulders." //Security /obj/item/clothing/suit/armor/vest/ert/security name = "emergency response team security armor" - desc = "A set of armor worn by security members of the Nanotrasen Emergency Response Team. Has red highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped red Security insignia on the shoulders." icon_state = "ertarmor_sec" - +//Paranormal /obj/item/clothing/suit/armor/vest/ert/security/paranormal name = "emergency response team paranormal armor" - desc = "A set of armor worn by paranormal members of the Nanotrasen Emergency Response Team. Has crusader sigils." + desc = "A full suit of medieval plate armor, kitted out in crusader colors. Where the hell did they even find this? There are chipped black insignia on the shoulders." icon_state = "knight_templar" item_state = "knight_templar" //Engineer /obj/item/clothing/suit/armor/vest/ert/engineer name = "emergency response team engineer armor" - desc = "A set of armor worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped orange Engineering insignia on the shoulders." icon_state = "ertarmor_eng" //Medical /obj/item/clothing/suit/armor/vest/ert/medical name = "emergency response team medical armor" - desc = "A set of armor worn by medical members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped white Medical insignia on the shoulders." icon_state = "ertarmor_med" //Janitorial /obj/item/clothing/suit/armor/vest/ert/janitor name = "emergency response team janitor armor" - desc = "A set of armor worn by janitorial members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped purple Janitorial insignia on the shoulders." icon_state = "ertarmor_jan" //same defense as basic sec armor diff --git a/code/modules/clothing/suits/misc_suits.dm b/code/modules/clothing/suits/misc_suits.dm index 4c6a85d0d2c0..24590a05b18b 100644 --- a/code/modules/clothing/suits/misc_suits.dm +++ b/code/modules/clothing/suits/misc_suits.dm @@ -175,7 +175,7 @@ icon_state = "corgisuit" item_state = "chickensuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET - flags_inv = HIDESHOES|HIDEJUMPSUIT + flags_inv = HIDEJUMPSUIT dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/corgisuit/en diff --git a/code/modules/clothing/suits/suit_storage.dm b/code/modules/clothing/suits/suit_storage.dm index 2286470a59d3..b932d45d6933 100644 --- a/code/modules/clothing/suits/suit_storage.dm +++ b/code/modules/clothing/suits/suit_storage.dm @@ -62,7 +62,7 @@ /obj/item/clothing/suit/storage/proc/return_inv() - var/list/L = list( ) + var/list/L = list() L += src.contents diff --git a/code/modules/clothing/under/accessories/storage_accessories.dm b/code/modules/clothing/under/accessories/storage_accessories.dm index bf833ecf7cf5..d295056c5b8b 100644 --- a/code/modules/clothing/under/accessories/storage_accessories.dm +++ b/code/modules/clothing/under/accessories/storage_accessories.dm @@ -50,7 +50,7 @@ /obj/item/clothing/accessory/storage/proc/return_inv() - var/list/L = list( ) + var/list/L = list() L += src.contents diff --git a/code/modules/clothing/under/centcom.dm b/code/modules/clothing/under/centcom.dm index 420a29da7d1e..a84ad49065ef 100644 --- a/code/modules/clothing/under/centcom.dm +++ b/code/modules/clothing/under/centcom.dm @@ -28,8 +28,8 @@ random_sensor = FALSE /obj/item/clothing/under/rank/centcom/ert/chaplain - name = "response team inquisitor uniform" - desc = "An armoured uniform designed for emergency response teams. This one belongs to an inquisitor." + name = "response team chaplain uniform" + desc = "An armoured uniform designed for emergency response teams. This one belongs to a chaplain." icon_state = "ert_chaplain" item_state = "ert_chaplain" item_color = "ert_chaplain" diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index e5a6769e3084..56d82237590b 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -11,6 +11,11 @@ "Kidan" = 'icons/mob/clothing/species/kidan/under/color.dmi' ) +/obj/item/clothing/under/color/jumpskirt + desc = "A standard issue colored jumpskirt. Variety is the spice of life!" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + dyeing_key = DYE_REGISTRY_JUMPSKIRT + /obj/item/clothing/under/color/random/Initialize(mapload) . = ..() var/list/excluded = list(/obj/item/clothing/under/color/random, @@ -33,12 +38,25 @@ item_color = "black" resistance_flags = NONE +/obj/item/clothing/under/color/jumpskirt/black + name = "black jumpskirt" + icon_state = "blackjumpskirt" + item_state = "bl_suit" + item_color = "blackskirt" + resistance_flags = NONE // I am going to assume this is here for a reason + /obj/item/clothing/under/color/blue name = "blue jumpsuit" icon_state = "blue" item_state = "b_suit" item_color = "blue" +/obj/item/clothing/under/color/jumpskirt/blue + name = "blue jumpskirt" + icon_state = "bluejumpskirt" + item_state = "b_suit" + item_color = "blueskirt" + /obj/item/clothing/under/color/blue/dodgeball flags = NODROP @@ -48,6 +66,12 @@ item_state = "g_suit" item_color = "green" +/obj/item/clothing/under/color/jumpskirt/green + name = "green jumpskirt" + icon_state = "greenjumpskirt" + item_state = "g_suit" + item_color = "greenskirt" + /obj/item/clothing/under/color/grey name = "grey jumpsuit" desc = "A tasteful grey jumpsuit that reminds you of the good old days." @@ -58,6 +82,13 @@ /obj/item/clothing/under/color/grey/greytide flags = NODROP +/obj/item/clothing/under/color/jumpskirt/grey + name = "grey jumpskirt" + desc = "A tasteful grey jumpskirt that reminds you of the good old days." + icon_state = "greyjumpskirt" + item_state = "gy_suit" + item_color = "greyskirt" + /obj/item/clothing/under/color/grey/glorf name = "ancient jumpsuit" desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade." @@ -72,6 +103,13 @@ item_state = "o_suit" item_color = "orange" +/obj/item/clothing/under/color/jumpskirt/orange + name = "orange jumpskirt" + desc = "Don't wear this near paranoid security officers." + icon_state = "orangejumpskirt" + item_state = "o_suit" + item_color = "orangeskirt" + /obj/item/clothing/under/color/orange/prison name = "orange jumpsuit" desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." @@ -81,6 +119,15 @@ has_sensor = 2 sensor_mode = SENSOR_COORDS +/obj/item/clothing/under/color/jumpskirt/orange/prison + name = "orange jumpskirt" + desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." + icon_state = "prisonerjumpskirt" + item_state = "prisoner" + item_color = "prisonerskirt" + has_sensor = 2 + sensor_mode = SENSOR_COORDS + /obj/item/clothing/under/color/pink name = "pink jumpsuit" desc = "Just looking at this makes you feel fabulous." @@ -88,12 +135,25 @@ item_state = "p_suit" item_color = "pink" +/obj/item/clothing/under/color/jumpskirt/pink + name = "pink jumpskirt" + desc = "Just looking at this makes you feel fabulous." + icon_state = "pinkjumpskirt" + item_state = "p_suit" + item_color = "pinkskirt" + /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" item_state = "r_suit" item_color = "red" +/obj/item/clothing/under/color/jumpskirt/red + name = "red jumpskirt" + icon_state = "redjumpskirt" + item_state = "r_suit" + item_color = "redskirt" + /obj/item/clothing/under/color/red/dodgeball flags = NODROP @@ -103,12 +163,24 @@ item_state = "w_suit" item_color = "white" +/obj/item/clothing/under/color/jumpskirt/white + name = "white jumpskirt" + icon_state = "whitejumpskirt" + item_state = "w_suit" + item_color = "whiteskirt" + /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" item_state = "y_suit" item_color = "yellow" +/obj/item/clothing/under/color/jumpskirt/yellow + name = "yellow jumpskirt" + icon_state = "yellowjumpskirt" + item_state = "y_suit" + item_color = "yellowskirt" + /obj/item/clothing/under/color/psyche name = "psychedelic jumpsuit" desc = "Groovy!" @@ -120,17 +192,33 @@ icon_state = "lightblue" item_color = "lightblue" +/obj/item/clothing/under/color/jumpskirt/lightblue + name = "light blue jumpskirt" + icon_state = "lightbluejumpskirt" + item_color = "lightblueskirt" + /obj/item/clothing/under/color/aqua name = "aqua jumpsuit" icon_state = "aqua" item_color = "aqua" +/obj/item/clothing/under/color/jumpskirt/aqua + name = "aqua jumpskirt" + icon_state = "aquajumpskirt" + item_color = "aquaskirt" + /obj/item/clothing/under/color/purple name = "purple jumpsuit" icon_state = "purple" item_state = "p_suit" item_color = "purple" +/obj/item/clothing/under/color/jumpskirt/purple + name = "purple jumpskirt" + icon_state = "purplejumpskirt" + item_state = "p_suit" + item_color = "purpleskirt" + /// for jani ert /obj/item/clothing/under/color/purple/sensor sensor_mode = SENSOR_COORDS @@ -141,41 +229,81 @@ icon_state = "lightpurple" item_color = "lightpurple" +/obj/item/clothing/under/color/jumpskirt/lightpurple + name = "light purple jumpskirt" + icon_state = "lightpurplejumpskirt" + item_color = "lightpurpleskirt" + /obj/item/clothing/under/color/lightgreen name = "light green jumpsuit" icon_state = "lightgreen" item_color = "lightgreen" +/obj/item/clothing/under/color/jumpskirt/lightgreen + name = "light green jumpskirt" + icon_state = "lightgreenjumpskirt" + item_color = "lightgreenskirt" + /obj/item/clothing/under/color/lightbrown name = "light brown jumpsuit" icon_state = "lightbrown" item_color = "lightbrown" +/obj/item/clothing/under/color/jumpskirt/lightbrown + name = "light brown jumpskirt" + icon_state = "lightbrownjumpskirt" + item_color = "lightbrownskirt" + /obj/item/clothing/under/color/brown name = "brown jumpsuit" icon_state = "brown" item_color = "brown" +/obj/item/clothing/under/color/jumpskirt/brown + name = "brown jumpskirt" + icon_state = "brownjumpskirt" + item_color = "brownskirt" + /obj/item/clothing/under/color/yellowgreen name = "yellow green jumpsuit" icon_state = "yellowgreen" item_color = "yellowgreen" +/obj/item/clothing/under/color/jumpskirt/yellowgreen + name = "yellow green jumpskirt" + icon_state = "yellowgreenjumpskirt" + item_color = "yellowgreenskirt" + /obj/item/clothing/under/color/darkblue name = "dark blue jumpsuit" icon_state = "darkblue" item_color = "darkblue" +/obj/item/clothing/under/color/jumpskirt/darkblue + name = "dark blue jumpskirt" + icon_state = "darkbluejumpskirt" + item_color = "darkblueskirt" + /obj/item/clothing/under/color/lightred name = "light red jumpsuit" icon_state = "lightred" item_color = "lightred" +/obj/item/clothing/under/color/jumpskirt/lightred + name = "light red jumpskirt" + icon_state = "lightredjumpskirt" + item_color = "lightredskirt" + /obj/item/clothing/under/color/darkred name = "dark red jumpsuit" icon_state = "darkred" item_color = "darkred" +/obj/item/clothing/under/color/jumpskirt/darkred + name = "dark red jumpskirt" + icon_state = "darkredjumpskirt" + item_color = "darkredskirt" + /obj/item/clothing/under/color/rainbow name = "rainbow" desc = "rainbow" @@ -183,6 +311,13 @@ item_state = "rainbow" item_color = "rainbow" +/obj/item/clothing/under/color/jumpskirt/rainbow + name = "rainbow jumpskirt" + desc = "Rainbow." + icon_state = "rainbowjumpskirt" + item_state = "rainbow" + item_color = "rainbowskirt" + /obj/item/clothing/under/color/red/jersey name = "red team jersey" desc = "The jersey of the Nanotrasen Phi-ghters!" diff --git a/code/modules/clothing/under/costumes.dm b/code/modules/clothing/under/costumes.dm index 6593a1c96d64..8804b0d4d719 100644 --- a/code/modules/clothing/under/costumes.dm +++ b/code/modules/clothing/under/costumes.dm @@ -139,12 +139,13 @@ item_state = "psysuit" item_color = "psysuit" - sprite_sheets = list( //it is what it is + //it is what it is + sprite_sheets = list( "Human" = 'icons/mob/clothing/under/costumes.dmi', "Vox" = 'icons/mob/clothing/species/vox/under/costumes.dmi', "Drask" = 'icons/mob/clothing/species/drask/under/costumes.dmi', "Grey" = 'icons/mob/clothing/species/grey/under/costumes.dmi' - ) + ) /obj/item/clothing/under/costume/redcoat name = "redcoat uniform" diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 341062d5c4ae..f4b4cc6b1f95 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -11,21 +11,27 @@ CAT_DECORATIONS, CAT_CLOTHING) var/list/subcategories = list( - list( //Weapon subcategories + //Weapon subcategories + list( CAT_WEAPON, - CAT_AMMO), + CAT_AMMO + ), CAT_NONE, //Robot subcategories CAT_NONE, //Misc subcategories CAT_NONE, //Tribal subcategories - list( //Food subcategories + // Food subcategories + list( CAT_MISCFOOD, // SS220 ADDITION CAT_CAKE, CAT_SUSHI, - CAT_SANDWICH), - list( //Decoration subcategories + CAT_SANDWICH + ), + // Decoration subcategories + list( CAT_DECORATION, CAT_HOLIDAY, - CAT_LARGE_DECORATIONS), + CAT_LARGE_DECORATIONS + ), CAT_CLOTHING) //Clothing subcategories var/display_craftable_only = FALSE var/display_compact = TRUE diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index fb79cb5c35b2..dabe63331564 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -41,4 +41,5 @@ spawncount-- successSpawn = TRUE - SSevents.biohazards_this_round += "Xenomorphs" + SSticker.record_biohazard_start(BIOHAZARD_XENO) + SSevents.biohazards_this_round += BIOHAZARD_XENO diff --git a/code/modules/events/blob_spawn.dm b/code/modules/events/blob_spawn.dm index 1fbc9a4a0b94..ec180703ab7b 100644 --- a/code/modules/events/blob_spawn.dm +++ b/code/modules/events/blob_spawn.dm @@ -39,4 +39,4 @@ to_chat(B, "For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Blob)") notify_ghosts("Infected Mouse has appeared in [get_area(B)].", source = B, action = NOTIFY_FOLLOW) successSpawn = TRUE - SSevents.biohazards_this_round += "Blob" + SSevents.biohazards_this_round += BIOHAZARD_BLOB diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index 2b2c85cb5c1d..ead04dc76e98 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -66,6 +66,7 @@ S.give_intro_text() spawncount-- successSpawn = TRUE + SSticker.record_biohazard_start(infestation_type) SSevents.biohazards_this_round += infestation_type #undef TS_HIGHPOP_TRIGGER diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index c1b6dc49b046..4ef39f8aa2e5 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -630,7 +630,7 @@ /obj/machinery/smartfridge/secure/circuits/aiupload/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_AI_UPLOAD]" + req_access = list(ACCESS_AI_UPLOAD) if(mapload && HAS_TRAIT(SSstation, STATION_TRAIT_UNIQUE_AI) && is_station_level(z)) drop_contents_on_delete = FALSE return INITIALIZE_HINT_QDEL @@ -649,7 +649,7 @@ /obj/machinery/smartfridge/secure/circuits/aiupload/experimental/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_RD]" + req_access = list(ACCESS_RD) /obj/machinery/smartfridge/secure/circuits/aiupload/highrisk name = "\improper High-Risk Laws Storage" @@ -665,7 +665,7 @@ /obj/machinery/smartfridge/secure/circuits/aiupload/highrisk/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_CAPTAIN]" + req_access = list(ACCESS_CAPTAIN) /** * # Refrigerated Medicine Storage @@ -702,7 +702,7 @@ /obj/machinery/smartfridge/secure/extract/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_RESEARCH]" + req_access = list(ACCESS_RESEARCH) accepted_items_typecache = typecacheof(list( /obj/item/slime_extract )) @@ -716,7 +716,7 @@ name = "\improper Secure Refrigerated Medicine Storage" desc = "A refrigerated storage unit for storing medicine and chemicals." icon_state = "smartfridge" //To fix the icon in the map editor. - req_one_access_txt = "5;33" + req_one_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY) board_type = /obj/machinery/smartfridge/secure/medbay /obj/machinery/smartfridge/secure/medbay/Initialize(mapload) @@ -744,7 +744,7 @@ /obj/machinery/smartfridge/secure/chemistry/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_CHEMISTRY]" + req_access = list(ACCESS_CHEMISTRY) // Accepted items accepted_items_typecache = typecacheof(list( /obj/item/storage/pill_bottle, @@ -774,10 +774,6 @@ * A [Smart Chemical Storage (Preloaded)][/obj/machinery/smartfridge/secure/chemistry/preloaded] but with exclusive access to Syndicate. */ /obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate - req_access_txt = null - -/obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate/Initialize(mapload) - . = ..() req_access = list(ACCESS_SYNDICATE) /** @@ -840,10 +836,10 @@ desc = "A refrigerated storage unit for volatile sample storage." board_type = /obj/machinery/smartfridge/secure/chemistry/virology icon_addon = "smartfridge_virology" + req_access = list(ACCESS_VIROLOGY) /obj/machinery/smartfridge/secure/chemistry/virology/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_VIROLOGY]" accepted_items_typecache = typecacheof(list( /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/bottle, @@ -876,7 +872,7 @@ * A [Smart Virus Storage (Preloaded)][/obj/machinery/smartfridge/secure/chemistry/virology/preloaded] but with exclusive access to Syndicate. */ /obj/machinery/smartfridge/secure/chemistry/virology/preloaded/syndicate - req_access_txt = null + req_access = list(ACCESS_SYNDICATE) /obj/machinery/smartfridge/secure/chemistry/virology/preloaded/syndicate/Initialize(mapload) starting_items = list( @@ -889,7 +885,6 @@ /obj/item/reagent_containers/glass/bottle/reagent/formaldehyde = 1 ) . = ..() - req_access = list(ACCESS_SYNDICATE) /** * # Drink Showcase diff --git a/code/modules/hydroponics/compost_bin.dm b/code/modules/hydroponics/compost_bin.dm index 027b0d03f9ee..d42c6f74b956 100644 --- a/code/modules/hydroponics/compost_bin.dm +++ b/code/modules/hydroponics/compost_bin.dm @@ -96,7 +96,7 @@ to_chat(user, "You have very nearly saturated the contents of [src] with potassium.") SStgui.update_uis(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) return TRUE if(istype(O, /obj/item/food/grown)) @@ -110,7 +110,7 @@ make_biomass(O) to_chat(user, "You put [O] in [src].") SStgui.update_uis(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) return TRUE if(istype(O, /obj/item/reagent_containers)) var/proportion = 0 @@ -154,7 +154,7 @@ to_chat(user, "[src] has been nearly filled with potash.") SStgui.update_uis(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) return TRUE @@ -199,7 +199,7 @@ biomass -= conversion_amount + potash_saltpetre_conversion + potassium_saltpetre_conversion compost += conversion_amount - update_icon_state() + update_icon(UPDATE_ICON_STATE) SStgui.update_uis(src) // Makes soil from compost @@ -209,7 +209,7 @@ return new /obj/item/stack/sheet/soil(loc, amount) compost -= SOIL_COST * amount - update_icon_state() + update_icon(UPDATE_ICON_STATE) SStgui.update_uis(src) /obj/machinery/compost_bin/attack_hand(mob/user) diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index fdbed68d1395..24521ccb0f85 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -451,7 +451,7 @@ else core_gene.value = min(core_gene.value, genemod_var) - disk.update_name() + disk.update_appearance(UPDATE_NAME) QDEL_NULL(seed) update_icon(UPDATE_OVERLAYS) update_genes() @@ -493,7 +493,7 @@ var/datum/plant_gene/core/C = gene.Copy() disk.core_genes += C - disk.update_name() + disk.update_appearance(UPDATE_NAME) QDEL_NULL(seed) update_icon(UPDATE_OVERLAYS) update_genes() diff --git a/code/modules/library/library_catalog.dm b/code/modules/library/library_catalog.dm index cabc94a9c3b1..7a1b39fe3135 100644 --- a/code/modules/library/library_catalog.dm +++ b/code/modules/library/library_catalog.dm @@ -452,7 +452,8 @@ var/list/flag_json = list() //Flagged book json is stored as such: "[[reporter_ckey1, report_id1],[reporter_ckey2, report_id2]]"" for(var/datum/flagged_book/book in reportedbook.reports) - flag_json += list(list( //yes this is intentional + //yes this is intentional + flag_json += list(list( book.reporter, book.category_id, )) diff --git a/code/modules/mapping/access_helpers.dm b/code/modules/mapping/access_helpers.dm index 54582614ccfa..6b6506c6fc28 100644 --- a/code/modules/mapping/access_helpers.dm +++ b/code/modules/mapping/access_helpers.dm @@ -5,29 +5,20 @@ // These are mutually exclusive; can't have req_any and req_all /obj/effect/mapping_helpers/airlock/access/any/payload(obj/machinery/door/airlock/airlock) - if(is_type_in_list(airlock, blacklist)) + if(length(airlock.req_access)) + log_world("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!") return - if(airlock.req_access_txt == "0") - // Overwrite if there is no access set, otherwise add onto existing access - if(airlock.req_one_access_txt == "0") - airlock.req_one_access_txt = "[access]" - else - airlock.req_one_access_txt += ";[access]" - else - log_world("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!") + LAZYINITLIST(airlock.req_one_access) + airlock.req_one_access |= access /obj/effect/mapping_helpers/airlock/access/all/payload(obj/machinery/door/airlock/airlock) - if(is_type_in_list(airlock, blacklist)) + if(length(airlock.req_one_access)) + log_world("[src] at [AREACOORD(src)] tried to set req_access, but req_one_access was already set!") return - if(airlock.req_one_access_txt == "0") - if(airlock.req_access_txt == "0") - airlock.req_access_txt = "[access]" - else - airlock.req_access_txt += ";[access]" - else - log_world("[src] at [AREACOORD(src)] tried to set req_access, but req_one_access was already set!") + LAZYINITLIST(airlock.req_access) + airlock.req_access |= access // -------------------- Req Any (Only requires ONE of the given accesses to open) // -------------------- Command access helpers @@ -467,3 +458,37 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/mule_bot access = ACCESS_CARGO_BOT + +// Miscellaneous access helpers +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage + access = ACCESS_DEEPSTORAGE + +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19 + access = ACCESS_AWAY01 + +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta + access = ACCESS_THETA_STATION + +/obj/effect/mapping_helpers/airlock/access/all/syndicate + access = ACCESS_SYNDICATE + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general + access = ACCESS_CENT_GENERAL + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/security + access = ACCESS_CENT_SECURITY + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles + access = ACCESS_CENT_SHUTTLES + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops + access = ACCESS_CENT_SPECOPS + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander + access = ACCESS_CENT_COMMANDER + +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox + access = ACCESS_VOX + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders + access = ACCESS_TRADE_SOL diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 784f6672c1c7..ce504e0e2f04 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -91,11 +91,17 @@ /obj/effect/mapping_helpers/airlock/LateInitialize() . = ..() - if(!(locate(/obj/machinery/door) in get_turf(src))) - log_world("[src] failed to find an airlock at [AREACOORD(src)]") + var/list/valid_airlocks = list() for(var/obj/machinery/door/D in get_turf(src)) - payload(D) + if(!is_type_in_list(D, blacklist)) + valid_airlocks += D + + if(length(valid_airlocks)) + for(var/obj/machinery/door/D in valid_airlocks) + payload(D) + else + log_world("[src] failed to find any valid airlocks at [AREACOORD(src)]") qdel(src) diff --git a/code/modules/mapping/windoor_access_helpers.dm b/code/modules/mapping/windoor_access_helpers.dm index 8d3195cf9cab..d193060c9a5f 100644 --- a/code/modules/mapping/windoor_access_helpers.dm +++ b/code/modules/mapping/windoor_access_helpers.dm @@ -11,30 +11,23 @@ return // Access already set in map edit - if(windoor.req_access_txt != "0") + if(length(windoor.req_access)) log_world("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!") return - // Overwrite if there is no access set, otherwise add onto existing access - if(windoor.req_one_access_txt == "0") - windoor.req_one_access_txt = "[access]" - return - - windoor.req_one_access_txt += ";[access]" + LAZYINITLIST(windoor.req_one_access) + windoor.req_one_access |= access /obj/effect/mapping_helpers/airlock/windoor/access/all/payload(obj/machinery/door/window/windoor) if(windoor.dir != dir) return - if(windoor.req_one_access_txt != "0") + if(length(windoor.req_one_access)) log_world("[src] at [AREACOORD(src)] tried to set req_access, but req_one_access was already set!") return - if(windoor.req_access_txt == "0") - windoor.req_access_txt = "[access]" - return - - windoor.req_access_txt += ";[access]" + LAZYINITLIST(windoor.req_access) + windoor.req_access |= access // -------------------- Req Any (Only requires ONE of the given accesses to open) // -------------------- Command access helpers diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 83043998792e..6f7fccc38d53 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -373,7 +373,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, /obj/item/stack/telecrystal/twenty, /obj/item/banhammer) -/obj/item/fakeartefact/New() +/obj/item/fakeartefact/Initialize(mapload) . = ..() var/obj/item/I = pick(possible) name = initial(I.name) @@ -381,3 +381,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, desc = initial(I.desc) icon_state = initial(I.icon_state) item_state = initial(I.item_state) + lefthand_file = initial(I.lefthand_file) + righthand_file = initial(I.righthand_file) + slot_flags = initial(I.slot_flags) + w_class = initial(I.w_class) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index f476be923f9f..bc3a2f957d9a 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -154,7 +154,13 @@ var/list/cat_items = list() for(var/prize_name in prize_list[cat]) var/datum/data/mining_equipment/prize = prize_list[cat][prize_name] - cat_items[prize_name] = list("name" = prize_name, "price" = prize.cost) + var/obj/item = prize.equipment_path + cat_items[prize_name] = list( + "name" = prize_name, + "price" = prize.cost, + "icon" = item.icon, + "icon_state" = item.icon_state + ) static_data["items"][cat] = cat_items return static_data diff --git a/code/modules/mob/living/brain/robotic_brain.dm b/code/modules/mob/living/brain/robotic_brain.dm index 0fd4dc8cdbc4..fbaa53320c67 100644 --- a/code/modules/mob/living/brain/robotic_brain.dm +++ b/code/modules/mob/living/brain/robotic_brain.dm @@ -16,7 +16,8 @@ var/requires_master = TRUE var/mob/living/carbon/human/imprinted_master = null var/ejected_flavor_text = "circuit" - + /// If this is a posibrain, which will reject attempting to put a new ghost in it, because this a real brain we care about, not a robobrain + var/can_be_reinhabited = TRUE dead_icon = "boris_blank" /obj/item/mmi/robotic_brain/Destroy() @@ -31,7 +32,7 @@ to_chat(user, "You press your thumb on [src] and imprint your user information.") imprinted_master = user return - if(brainmob && !brainmob.key && !searching) + if(brainmob && !brainmob.key && !searching && can_be_reinhabited) //Start the process of searching for a new user. to_chat(user, "You carefully locate the manual activation switch and start [src]'s boot process.") request_player() @@ -93,7 +94,7 @@ become_occupied(occupied_icon) /obj/item/mmi/robotic_brain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. - if(brainmob && brainmob.key) + if(brainmob && brainmob.key || !searching) return searching = FALSE @@ -104,6 +105,8 @@ /obj/item/mmi/robotic_brain/proc/volunteer(mob/dead/observer/user) if(!searching) return + if(brainmob && brainmob.key) + return // No, something is wrong, abort. if(!istype(user) && !HAS_TRAIT(user, TRAIT_RESPAWNABLE)) to_chat(user, "Seems you're not a ghost. Could you please file an exploit report on the forums?") return @@ -182,11 +185,11 @@ ..() /obj/item/mmi/robotic_brain/attack_ghost(mob/dead/observer/O) + if(brainmob && brainmob.key) + return // No point pinging a posibrain with a player already inside if(searching) volunteer(O) return - if(brainmob && brainmob.key) - return // No point pinging a posibrain with a player already inside if(validity_checks(O) && (world.time >= next_ping_at)) next_ping_at = world.time + (20 SECONDS) playsound(get_turf(src), 'sound/items/posiping.ogg', 80, 0) @@ -204,3 +207,4 @@ requires_master = FALSE ejected_flavor_text = "metal cube" dead_icon = "posibrain" + can_be_reinhabited = FALSE diff --git a/code/modules/mob/living/carbon/carbon_update_status.dm b/code/modules/mob/living/carbon/carbon_update_status.dm index 58b0c6a3a778..d06555cc6310 100644 --- a/code/modules/mob/living/carbon/carbon_update_status.dm +++ b/code/modules/mob/living/carbon/carbon_update_status.dm @@ -6,7 +6,7 @@ death() create_debug_log("died of damage, trigger reason: [reason]") return - if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || (check_death_method() && getOxyLoss() > 50) || HAS_TRAIT(src, TRAIT_FAKEDEATH) || health < HEALTH_THRESHOLD_KNOCKOUT && check_death_method() || health <= HEALTH_THRESHOLD_DEAD) + if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || (check_death_method() && getOxyLoss() > 50) || HAS_TRAIT(src, TRAIT_FAKEDEATH) || health < HEALTH_THRESHOLD_KNOCKOUT && check_death_method() || health <= HEALTH_THRESHOLD_DEAD) // In case anyone is wondering where oldcrit is handled, it's here. if(stat == CONSCIOUS) KnockOut() create_debug_log("fell unconscious, trigger reason: [reason]") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e1e610d7a32d..2c2f3d4d7417 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -840,3 +840,5 @@ emp_act /mob/living/carbon/human/projectile_hit_check(obj/item/projectile/P) return (HAS_TRAIT(src, TRAIT_FLOORED) || HAS_TRAIT(src, TRAIT_NOKNOCKDOWNSLOWDOWN)) && !density // hit mobs that are intentionally lying down to prevent combat crawling. +/mob/living/carbon/human/canBeHandcuffed() + return has_left_hand() || has_right_hand() diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 47f744999feb..52db0245ce1c 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -855,15 +855,24 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) var/mutable_appearance/standing if(head.sprite_sheets && head.sprite_sheets[dna.species.sprite_sheet_name]) standing = mutable_appearance(head.sprite_sheets[dna.species.sprite_sheet_name], "[head.icon_state]", layer = -HEAD_LAYER) - if(istype(head, /obj/item/clothing/head/helmet/space/plasmaman)) - var/obj/item/clothing/head/helmet/space/plasmaman/P = head - if(!P.up) - standing.overlays += P.visor_icon else if(head.icon_override) standing = mutable_appearance(head.icon_override, "[head.icon_state]", layer = -HEAD_LAYER) else standing = mutable_appearance('icons/mob/clothing/head.dmi', "[head.icon_state]", layer = -HEAD_LAYER) + if(istype(head, /obj/item/clothing/head/helmet/space/plasmaman)) + var/obj/item/clothing/head/helmet/space/plasmaman/P = head + if(!P.up) + standing.overlays += P.visor_icon + + if(istype(head, /obj/item/clothing/head)) + var/obj/item/clothing/head/w_hat = head + for(var/obj/item/clothing/head/hat in w_hat.attached_hats) + if(hat.sprite_sheets && hat.sprite_sheets[dna.species.sprite_sheet_name]) + standing.overlays += image("icon" = hat.sprite_sheets[dna.species.sprite_sheet_name], "icon_state" = "[hat.icon_state]") + else + standing.overlays += image("icon" = hat.icon_override, "icon_state" = "[hat.icon_state]") + if(head.blood_DNA) var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "helmetblood") bloodsies.color = head.blood_color diff --git a/code/modules/mob/living/carbon/human/human_update_status.dm b/code/modules/mob/living/carbon/human/human_update_status.dm index ee7fe70d3eed..fa6516724fa7 100644 --- a/code/modules/mob/living/carbon/human/human_update_status.dm +++ b/code/modules/mob/living/carbon/human/human_update_status.dm @@ -3,10 +3,14 @@ return ..(reason) if(stat == DEAD) - if(dna.species && dna.species.can_revive_by_healing) + if(dna.species && dna.species.can_revive_by_healing) // Here's where IPC revival is handled var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain) if(B) - if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && check_vital_organs() && !suiciding) + if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && ipc_vital_organ_check() && !suiciding) + var/mob/dead/observer/ghost = get_ghost() + if(ghost) + to_chat(ghost, "Your chassis has been repaired and repowered, re-enter if you want to continue playing! (Verbs -> Ghost -> Re-enter corpse)") + SEND_SOUND(ghost, sound('sound/effects/genetics.ogg')) update_revive() create_debug_log("revived from healing, trigger reason: [reason]") diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 263b8f947df1..5cc343669642 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -159,16 +159,16 @@ //Defining lists of icon skin tones for species that have them. var/list/icon_skin_tones = list() - // Determines the organs that the species spawns with and - var/list/has_organ = list( // which required-organ checks are conducted. - "heart" = /obj/item/organ/internal/heart, - "lungs" = /obj/item/organ/internal/lungs, - "liver" = /obj/item/organ/internal/liver, - "kidneys" = /obj/item/organ/internal/kidneys, - "brain" = /obj/item/organ/internal/brain, - "appendix" = /obj/item/organ/internal/appendix, - "eyes" = /obj/item/organ/internal/eyes - ) + /// Determines the organs that the species spawns with and which required-organ checks are conducted. + var/list/has_organ = list( + "heart" = /obj/item/organ/internal/heart, + "lungs" = /obj/item/organ/internal/lungs, + "liver" = /obj/item/organ/internal/liver, + "kidneys" = /obj/item/organ/internal/kidneys, + "brain" = /obj/item/organ/internal/brain, + "appendix" = /obj/item/organ/internal/appendix, + "eyes" = /obj/item/organ/internal/eyes + ) var/vision_organ = /obj/item/organ/internal/eyes // If set, this organ is required for vision. var/list/has_limbs = list( "chest" = list("path" = /obj/item/organ/external/chest, "descriptor" = "chest"), diff --git a/code/modules/mob/living/carbon/human/species/human_species.dm b/code/modules/mob/living/carbon/human/species/human_species.dm index d6bf6d4f933a..ef5fa94650b4 100644 --- a/code/modules/mob/living/carbon/human/species/human_species.dm +++ b/code/modules/mob/living/carbon/human/species/human_species.dm @@ -14,7 +14,8 @@ With a constant desire to colonize and spread their influence onto other species, they have begun to develop alliances and enemies, \ making humans one of the most recognizable and socially diverse species in the sector." - icon_skin_tones = list( //Organized to be from Light to Dark. + /// Organized to be from Light to Dark. + icon_skin_tones = list( 1 = "Default White", 2 = "Pale", 3 = "Classic", @@ -28,7 +29,7 @@ 11 = "Caramel", 12 = "Coffee", 13 = "Chestnut" - ) + ) reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm index bf00c89cb961..d0102489d666 100644 --- a/code/modules/mob/living/carbon/human/species/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/unathi.dm @@ -121,15 +121,16 @@ species_traits = list(LIPS, NOT_SELECTABLE) inherent_traits = list(TRAIT_CHUNKYFINGERS) - has_organ = list( // same as unathi's organs, aside for the lungs as they need to be able to breathe on lavaland. - "heart" = /obj/item/organ/internal/heart/unathi, - "lungs" = /obj/item/organ/internal/lungs/unathi/ash_walker, - "liver" = /obj/item/organ/internal/liver/unathi, - "kidneys" = /obj/item/organ/internal/kidneys/unathi, - "brain" = /obj/item/organ/internal/brain/unathi, - "appendix" = /obj/item/organ/internal/appendix, - "eyes" = /obj/item/organ/internal/eyes/unathi - ) + // same as unathi's organs, aside for the lungs as they need to be able to breathe on lavaland. + has_organ = list( + "heart" = /obj/item/organ/internal/heart/unathi, + "lungs" = /obj/item/organ/internal/lungs/unathi/ash_walker, + "liver" = /obj/item/organ/internal/liver/unathi, + "kidneys" = /obj/item/organ/internal/kidneys/unathi, + "brain" = /obj/item/organ/internal/brain/unathi, + "appendix" = /obj/item/organ/internal/appendix, + "eyes" = /obj/item/organ/internal/eyes/unathi + ) /datum/species/unathi/ashwalker/on_species_gain(mob/living/carbon/human/H) ..() diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 9f3f30662a8c..bb0c73ac7d6c 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -1,4 +1,5 @@ #define BATON_COOLDOWN 3.5 SECONDS +#define BOT_REBATON_THRESHOLD 5 SECONDS /mob/living/simple_animal/bot/ed209 name = "\improper ED-209 Security Robot" @@ -279,6 +280,10 @@ back_to_idle() return + if(target.stat == DEAD) + back_to_idle() // Stop beating up the dead guy + return + if(Adjacent(target) && isturf(target.loc) && !baton_delayed) // if right next to perp stun_attack(target) if(!lasercolor) @@ -296,7 +301,7 @@ if(BOT_PREP_ARREST) // preparing to arrest target // see if he got away. If he's no no longer adjacent or inside a closet or about to get up, we hunt again. - if(!Adjacent(target) || !isturf(target.loc) || world.time - target.stam_regen_start_time < 4 SECONDS && target.getStaminaLoss() <= 100) + if(!Adjacent(target) || !isturf(target.loc) || target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD || target.getStaminaLoss() <= 100) back_to_hunt() return @@ -321,7 +326,7 @@ back_to_idle() return - if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && world.time - target.stam_regen_start_time < 4 SECONDS && target.getStaminaLoss() <= 100)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. + if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD || target.getStaminaLoss() <= 100)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. back_to_hunt() return @@ -582,3 +587,4 @@ back_to_idle() #undef BATON_COOLDOWN +#undef BOT_REBATON_THRESHOLD diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 05704ccb59b0..82b3a1c68802 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -1,4 +1,5 @@ #define BATON_COOLDOWN 3.5 SECONDS +#define BOT_REBATON_THRESHOLD 5 SECONDS /mob/living/simple_animal/bot/secbot name = "\improper Securitron" @@ -330,6 +331,10 @@ back_to_idle() return + if(target.stat == DEAD) + back_to_idle() // Stop beating up the dead guy + return + if(Adjacent(target) && isturf(target.loc) && !baton_delayed) // if right next to perp stun_attack(target) mode = BOT_PREP_ARREST @@ -341,7 +346,7 @@ if(BOT_PREP_ARREST) // preparing to arrest target // see if he got away. If he's no no longer adjacent or inside a closet or about to get up, we hunt again. - if(!Adjacent(target) || !isturf(target.loc) || world.time - target.stam_regen_start_time < 4 SECONDS && target.getStaminaLoss() <= 100) + if(!Adjacent(target) || !isturf(target.loc) || target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD|| target.getStaminaLoss() <= 100) back_to_hunt() return // target is stunned and nearby @@ -362,12 +367,12 @@ back_to_idle() - if(BOT_ARREST) + if(BOT_ARREST) // Fun fact: This is not called if(!target || target.handcuffed) back_to_idle() return - if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.AmountWeakened() < 4 SECONDS)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. + if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD || target.getStaminaLoss() <= 100)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. back_to_hunt() return //Try arresting again if the target escapes. @@ -407,7 +412,7 @@ if((C.stat) || (C.handcuffed)) continue - if((C.name == oldtarget_name) && (world.time < last_found + 100)) + if((C.name == oldtarget_name) && (world.time < last_found + 5 SECONDS)) continue threatlevel = C.assess_threat(src) @@ -470,3 +475,4 @@ ..() #undef BATON_COOLDOWN +#undef BOT_REBATON_THRESHOLD 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 e8064e07b772..2ceba7b97492 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -166,10 +166,12 @@ spawn(rand(20,50)) if(stat == CONSCIOUS && M) icon_state = icon_living - var/list/responses = list( "[src] looks at you imploringly.", - "[src] looks at you pleadingly", - "[src] looks at you with a resigned expression.", - "[src] seems resigned to its fate.") + var/list/responses = list( + "[src] looks at you imploringly.", + "[src] looks at you pleadingly", + "[src] looks at you with a resigned expression.", + "[src] seems resigned to its fate." + ) to_chat(M, pick(responses)) else ..() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index ae48d73f78bb..b07a72482e6a 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -217,6 +217,8 @@ if(!gibbed) gib() + SSticker.record_biohazard_start(BIOHAZARD_BLOB) + /mob/living/simple_animal/mouse/blobinfected/get_scooped(mob/living/carbon/grabber) to_chat(grabber, "You try to pick up [src], but they slip out of your grasp!") to_chat(src, "[src] tries to pick you up, but you wriggle free of their grasp!") diff --git a/code/modules/mob/living/simple_animal/slime/slime_death.dm b/code/modules/mob/living/simple_animal/slime/slime_death.dm index 3136f8f07700..fcd7eb8d2b47 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_death.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_death.dm @@ -22,7 +22,7 @@ E.Grant(src) revive() regenerate_icons() - update_name() + update_appearance(UPDATE_NAME) return set_stat(DEAD) //Temporarily set to dead for icon updates diff --git a/code/modules/mob/living/simple_animal/slime/slime_mob.dm b/code/modules/mob/living/simple_animal/slime/slime_mob.dm index 304f9ed74c0a..08682a4717ad 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_mob.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_mob.dm @@ -113,7 +113,7 @@ /mob/living/simple_animal/slime/proc/set_colour(new_colour) colour = new_colour - update_name() + update_appearance(UPDATE_NAME) slime_mutation = mutation_table(colour) var/sanitizedcolour = replacetext(colour, " ", "") coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]") diff --git a/code/modules/mob/living/simple_animal/slime/slime_powers.dm b/code/modules/mob/living/simple_animal/slime/slime_powers.dm index 1fef3f12c225..cb536acb6bba 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_powers.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_powers.dm @@ -132,7 +132,7 @@ for(var/datum/action/innate/slime/evolve/E in actions) E.Remove(src) regenerate_icons() - update_name() + update_appearance(UPDATE_NAME) else to_chat(src, "I am not ready to evolve yet...") else diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index dced0adb7559..5cd8ae5ed495 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -670,7 +670,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ G.affecting.ret_grab(L, 1) if(!flag) if(L.master == src) - var/list/temp = list( ) + var/list/temp = list() temp += L.container //L = null qdel(L) diff --git a/code/modules/mob/mob_misc_procs.dm b/code/modules/mob/mob_misc_procs.dm index 661773a35b42..6ce785a7c7ae 100644 --- a/code/modules/mob/mob_misc_procs.dm +++ b/code/modules/mob/mob_misc_procs.dm @@ -194,7 +194,8 @@ message_admins("No ghosts were willing to take control of [key_name_admin(M)])") /proc/check_zone(zone) - if(!zone) return "chest" + if(!zone) + return "chest" switch(zone) if("eyes") zone = "head" @@ -214,18 +215,28 @@ if(prob(probability)) return zone - var/t = rand(1, 18) // randomly pick a different zone, or maybe the same one - switch(t) - if(1) return "head" - if(2) return "chest" - if(3 to 4) return "l_arm" - if(5 to 6) return "l_hand" - if(7 to 8) return "r_arm" - if(9 to 10) return "r_hand" - if(11 to 12) return "l_leg" - if(13 to 14) return "l_foot" - if(15 to 16) return "r_leg" - if(17 to 18) return "r_foot" + var/random_zone = rand(1, 18) // randomly pick a different zone, or maybe the same one + switch(random_zone) + if(1) + return "head" + if(2) + return "chest" + if(3 to 4) + return "l_arm" + if(5 to 6) + return "l_hand" + if(7 to 8) + return "r_arm" + if(9 to 10) + return "r_hand" + if(11 to 12) + return "l_leg" + if(13 to 14) + return "l_foot" + if(15 to 16) + return "r_leg" + if(17 to 18) + return "r_foot" return zone diff --git a/code/modules/mob/mob_vars.dm b/code/modules/mob/mob_vars.dm index ba6fbbbb7ef6..605a1043d4f4 100644 --- a/code/modules/mob/mob_vars.dm +++ b/code/modules/mob/mob_vars.dm @@ -35,7 +35,7 @@ var/computer_id = null var/lastattacker = null // real name of the person doing the attacking var/lastattackerckey = null // their ckey - var/list/attack_log_old = list( ) + var/list/attack_log_old = list() var/list/debug_log = null var/last_known_ckey = null // Used in logging diff --git a/code/modules/mod/mod_actions.dm b/code/modules/mod/mod_actions.dm index fc10b7448e00..9fbf636001c4 100644 --- a/code/modules/mod/mod_actions.dm +++ b/code/modules/mod/mod_actions.dm @@ -102,10 +102,12 @@ ..() module = linked_module button_overlay_icon_state = module.icon_state + button_background_icon_state = ((module.module_type == MODULE_TOGGLE && module.active) ? "bg_mod_active" : "bg_mod") if(linked_module.allow_flags & MODULE_ALLOW_INCAPACITATED) // clears check hands check_flags = AB_CHECK_CONSCIOUS Grant(user) + RegisterSignals(module, list(COMSIG_MODULE_ACTIVATED, COMSIG_MODULE_DEACTIVATED), PROC_REF(linked_button_update)) /datum/action/item_action/mod/pinned_module/Destroy() UnregisterSignal(module, list(COMSIG_MODULE_ACTIVATED, COMSIG_MODULE_DEACTIVATED, COMSIG_MODULE_USED)) @@ -127,3 +129,8 @@ if(!.) return module.on_select() + +/datum/action/item_action/mod/pinned_module/proc/linked_button_update() + if(module.module_type != MODULE_PASSIVE) + button_background_icon_state = (module.active ? "bg_mod_active" : "bg_mod") + UpdateButtons() diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index 93e7c2100f25..5dd2e207e106 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -223,7 +223,7 @@ module.on_suit_deactivation() STOP_PROCESSING(SSobj, src) update_speed() - update_icon_state() + update_icon(UPDATE_ICON_STATE) wearer.regenerate_icons() /// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits. diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm index 77fedf4c5292..d526ae37a71b 100644 --- a/code/modules/mod/mod_construction.dm +++ b/code/modules/mod/mod_construction.dm @@ -250,7 +250,7 @@ if(part.use_tool(src, user, 0, volume = 30)) to_chat(user, "Assembly unscrewed.") construction_step = SCREWED_ASSEMBLY_STEP - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/mod/construction/shell/update_icon_state() . = ..() diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index d841c96b886e..635b99e03d14 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -1113,13 +1113,14 @@ armor = list(MELEE = 20, BULLET = 5, LASER = 10, ENERGY = 10, BOMB = 50, RAD = 50, FIRE = 150, ACID = 150) /datum/mod_theme/responsory - name = "responsory" - desc = "A high-speed rescue suit by Nanotrasen, intended for its' emergency response teams." - extended_desc = "A streamlined suit of Nanotrasen design, these sleek black suits are only worn by \ - elite emergency response personnel to help save the day. While the slim and nimble design of the suit \ - cuts the ceramics and ablatives in it down, dropping the protection, \ - it keeps the wearer safe from the harsh void of space while sacrificing no speed whatsoever. \ - While wearing it you feel an extreme deference to darkness. " + name = "\improper 'Ward' responsory" + desc = "A high-tech combat modsuit designed and produced by Nanotrasen. Well armored, environmentally sealed, and outfitted with all manner of useful gadgetry. \ + The pinnacle of corporate security hardware." + extended_desc = "A streamlined suit of powered armor produced entirely in-house by the Nanotrasen Corporation, the NA-22 'Ward' rapid response suit is one of the finest combat modsuits available on the market today. \ + Equipped with a fire-resistant polybenzimidazole bodyglove and lightweight nano-polymer impact panels underneath a steel armored shell, the NA-22 offers reliable protection \ + while retaining combat mobility. Internally, the NA-22 comes pre-loaded with NTOS-11 on a five-year subscription, which enables unparallelled customization options in conjunction \ + with the Ward's unusually generous design specifications. Naturally, the NA-22 has a price tag to match its quality, and is thus only found within Nanotrasen's \ + personal response units, as well as among the wealthiest of Sector PMCs and mercenary groups." default_skin = "responsory" armor_type_1 = /obj/item/mod/armor/mod_theme_responsory diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 770c256ff26d..051e5e8658e7 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -80,6 +80,7 @@ ) default_pins = list( /obj/item/mod/module/magboot, + /obj/item/mod/module/firefighting_tank ) @@ -97,6 +98,7 @@ default_pins = list( /obj/item/mod/module/jetpack/advanced, /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/firefighting_tank ) /obj/item/mod/control/pre_equipped/loader @@ -484,7 +486,8 @@ /obj/item/mod/control/pre_equipped/debug theme = /datum/mod_theme/debug applied_core = /obj/item/mod/core/infinite - applied_modules = list( //one of every type of module, for testing if they all work correctly // boy this isn't even 25% the modules + /// One of every type of module, for testing if they all work correctly // boy this isn't even 25% the modules + applied_modules = list( /obj/item/mod/module/storage/bluespace, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, diff --git a/code/modules/mod/modules/_modules.dm b/code/modules/mod/modules/_modules.dm index 35f6b60db828..6ba416447e6a 100644 --- a/code/modules/mod/modules/_modules.dm +++ b/code/modules/mod/modules/_modules.dm @@ -362,7 +362,7 @@ return var/core_path = pick(accepted_anomalies) core = new core_path(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/mod/module/anomaly_locked/Destroy() QDEL_NULL(core) @@ -407,7 +407,7 @@ core = item to_chat(user, "You install [item].") playsound(src, 'sound/machines/click.ogg', 30, TRUE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) core.forceMove(src) else return ..() @@ -424,7 +424,7 @@ if(Adjacent(user) && !issilicon(user)) user.put_in_hands(core) core = null - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/mod/module/anomaly_locked/update_icon_state() icon_state = initial(icon_state) + (core ? "-core" : "") diff --git a/code/modules/newscaster/obj/newscaster.dm b/code/modules/newscaster/obj/newscaster.dm index f086ec662bb2..872bf29a8c1a 100644 --- a/code/modules/newscaster/obj/newscaster.dm +++ b/code/modules/newscaster/obj/newscaster.dm @@ -645,18 +645,9 @@ GLOBAL_LIST_EMPTY(allNewscasters) /obj/machinery/newscaster/proc/get_scanned_user(mob/user) . = list(name = "Unknown", security = user.can_admin_interact()) if(ishuman(user)) - var/mob/living/carbon/human/M = user - // No ID, no luck - if(!M.wear_id) - return - // Try to get the ID - var/obj/item/card/id/ID - if(istype(M.wear_id, /obj/item/pda)) - var/obj/item/pda/P = M.wear_id - ID = P.id - else if(istype(M.wear_id, /obj/item/card/id)) - ID = M.wear_id - if(istype(ID)) + var/mob/living/carbon/human/human_user = user + var/obj/item/card/id/ID = human_user.get_id_card() + if(ID) return list(name = "[ID.registered_name] ([ID.assignment])", security = has_access(list(), list(ACCESS_SECURITY), ID.access)) else if(issilicon(user)) var/mob/living/silicon/ai_user = user diff --git a/code/modules/ninja/suit/ninja_head.dm b/code/modules/ninja/suit/ninja_head.dm index ace19a439234..fa095416b75b 100644 --- a/code/modules/ninja/suit/ninja_head.dm +++ b/code/modules/ninja/suit/ninja_head.dm @@ -5,5 +5,6 @@ name = "ninja hood" icon_state = "s-ninja" item_state = "s-ninja_hood" + flags_inv = HIDEEARS|HIDEEYES|HIDEFACE armor = list(MELEE = 75, BULLET = 50, LASER = 20, ENERGY = 10, BOMB = 20, RAD = 15, FIRE = INFINITY, ACID = INFINITY) blockTracking = 1 diff --git a/code/modules/ninja/suit/ninja_mask.dm b/code/modules/ninja/suit/ninja_mask.dm index b61258440bd0..e024ea822a5b 100644 --- a/code/modules/ninja/suit/ninja_mask.dm +++ b/code/modules/ninja/suit/ninja_mask.dm @@ -10,7 +10,7 @@ Contents: name = "ninja mask" desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." icon_state = "s-ninja(norm)" - item_state = "s-ninja_mask" + item_state = "s-ninja(norm)" sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/mask.dmi', diff --git a/code/modules/ninja/suit/ninja_suit.dm b/code/modules/ninja/suit/ninja_suit.dm index 47d7fbe3c904..b5ee1aedda7b 100644 --- a/code/modules/ninja/suit/ninja_suit.dm +++ b/code/modules/ninja/suit/ninja_suit.dm @@ -14,6 +14,7 @@ Contents: item_state = "s-ninja_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/melee/baton, /obj/item/tank/internals, /obj/item/stock_parts/cell) slowdown = 0 + flags_inv = HIDEJUMPSUIT|HIDETAIL armor = list(MELEE = 75, BULLET = 50, LASER = 20, ENERGY = 10, BOMB = 20, RAD = 15, FIRE = INFINITY, ACID = INFINITY) dyeable = FALSE diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index c8a08ca60696..24ef741d3547 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(adminfaxes) var/list/reply_to = null /datum/fax/admin/New() - GLOB.adminfaxes += src + return // Fax panel - lets admins check all faxes sent during the round /client/proc/fax_panel() diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index d653f5917750..0188fcbb5b60 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -299,22 +299,22 @@ GLOBAL_LIST_EMPTY(fax_blacklist) var/success = 0 for(var/obj/machinery/photocopier/faxmachine/F in GLOB.allfaxes) if(F.department == destination) - success = F.receivefax(copyitem) + var/datum/fax/A = new /datum/fax() + A.name = copyitem.name + A.from_department = department + A.to_department = destination + A.origin = src + A.message = copyitem + A.sent_by = sender + A.sent_at = world.time + + success = F.receivefax(A) if(success) - var/datum/fax/F = new /datum/fax() - F.name = copyitem.name - F.from_department = department - F.to_department = destination - F.origin = src - F.message = copyitem - F.sent_by = sender - F.sent_at = world.time - visible_message("[src] beeps, \"Message transmitted successfully.\"") else visible_message("[src] beeps, \"Error transmitting message.\"") -/obj/machinery/photocopier/faxmachine/proc/receivefax(obj/item/incoming) +/obj/machinery/photocopier/faxmachine/proc/receivefax(datum/fax/incoming) if(stat & (BROKEN|NOPOWER)) return FALSE @@ -327,16 +327,31 @@ GLOBAL_LIST_EMPTY(fax_blacklist) addtimer(CALLBACK(src, PROC_REF(print_fax), incoming), 2 SECONDS) return TRUE -/obj/machinery/photocopier/faxmachine/proc/print_fax(obj/item/incoming) - if(istype(incoming, /obj/item/paper)) - papercopy(incoming) - else if(istype(incoming, /obj/item/photo)) - photocopy(incoming) - else if(istype(incoming, /obj/item/paper_bundle)) - bundlecopy(incoming) +/obj/machinery/photocopier/faxmachine/proc/print_fax(datum/fax/incoming) + var/obj/item/new_copy = null + if(istype(incoming.message, /obj/item/paper)) + new_copy = papercopy(incoming.message) + else if(istype(incoming.message, /obj/item/photo)) + new_copy = photocopy(incoming.message) + else if(istype(incoming.message, /obj/item/paper_bundle)) + new_copy = bundlecopy(incoming.message) else return + // Store the fax that was received in the admin room in adminfaxes + // Fixes issue where deleting the original would make it unreadable in the admin panel + if(istype(incoming, /datum/fax/admin)) + var/datum/fax/admin/A = new /datum/fax/admin() + A.name = new_copy.name + A.from_department = incoming.from_department + A.to_department = incoming.to_department + A.origin = incoming.origin + A.message = new_copy + A.sent_by = incoming.sent_by + A.sent_at = incoming.sent_at + + GLOB.adminfaxes += A + use_power(active_power_consumption) /obj/machinery/photocopier/faxmachine/proc/log_fax(mob/sender, destination) @@ -387,7 +402,7 @@ GLOBAL_LIST_EMPTY(fax_blacklist) message_admins(sender, "SYNDICATE FAX", destination, copyitem, "#DC143C") for(var/obj/machinery/photocopier/faxmachine/F in GLOB.allfaxes) if(F.department == destination) - F.receivefax(copyitem) + F.receivefax(A) visible_message("[src] beeps, \"Message transmitted successfully.\"") log_fax(sender, destination) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 80dba5fd47e9..4bd0eef2f6a2 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -268,7 +268,7 @@ . += sheet . += "clip" - update_desc() + update_appearance(UPDATE_DESC) /obj/item/paper_bundle/proc/get_page(page_override) if(page_override) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index ebe264a44717..a1395f0f19a3 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -179,19 +179,25 @@ name = "fancy pen" desc = "A fancy metal pen. An inscription on one side reads, \"L.L. - L.R.\"" icon_state = "fancypen" - container_type = DRAINABLE //cannot be refilled, love can be extracted for use in other items with syringe + container_type = (DRAINABLE | TRANSPARENT) //cannot be refilled, but pax can be extracted for use in other items with syringe origin_tech = "engineering=4;syndicate=2" transfer_amount = 25 // 4 Dosages instead of 2 -/obj/item/pen/sleepy/love/attack(mob/living/M, mob/user) - var/can_transfer = reagents.total_volume && M.reagents +/obj/item/pen/sleepy/love/Initialize(mapload) . = ..() - if(can_transfer && .) - M.apply_status_effect(STATUS_EFFECT_PACIFIED) //pacifies for 40 seconds - return TRUE + START_PROCESSING(SSobj, src) + +/obj/item/pen/sleepy/love/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() /obj/item/pen/sleepy/love/fill_pen() - reagents.add_reagent("love", 100) + reagents.add_reagent("pax", 100) // strong and unique reagent, making you a pacifist for a long time. + +/obj/item/pen/sleepy/love/process() + if(reagents.total_volume < 100) + reagents.add_reagent("pax", 0.5) // slow refill over time. In average 1 dose every 100 seconds. + /obj/item/pen/sleepy/undisguised name = "sleepy pen" diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 8bfc36d51321..b5155a3acb32 100644 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -160,8 +160,12 @@ GLOBAL_LIST_EMPTY(PDAs) . = ..() if(id) . += image('icons/goonstation/objects/pda_overlay.dmi', id.icon_state) + if(length(notifying_programs)) - . += image('icons/obj/pda.dmi', "pda-r") + if(icon_state == "pda-library") + . += image('icons/obj/pda.dmi', "pda-r-library") + else + . += image('icons/obj/pda.dmi', "pda-r") /obj/item/pda/proc/close(mob/user) SStgui.close_uis(src) diff --git a/code/modules/pda/pdas.dm b/code/modules/pda/pdas.dm index 3b848311b7ed..4191bd58f10e 100644 --- a/code/modules/pda/pdas.dm +++ b/code/modules/pda/pdas.dm @@ -16,7 +16,7 @@ /obj/item/pda/detective default_cartridge = /obj/item/cartridge/detective - icon_state = "pda-security" + icon_state = "pda-detective" default_pen = /obj/item/pen/multi /obj/item/pda/warden @@ -79,6 +79,11 @@ icon_state = "pda-rd" default_pen = /obj/item/pen/rd +/obj/item/pda/heads/qm + default_cartridge = /obj/item/cartridge/qm + icon_state = "pda-qm" + default_pen = /obj/item/pen/qm + /obj/item/pda/captain default_cartridge = /obj/item/cartridge/captain icon_state = "pda-captain" @@ -88,12 +93,12 @@ /obj/item/pda/heads/ntrep default_cartridge = /obj/item/cartridge/supervisor - icon_state = "pda-h" + icon_state = "pda-ntr" default_pen = /obj/item/pen/multi/fountain /obj/item/pda/heads/magistrate default_cartridge = /obj/item/cartridge/supervisor - icon_state = "pda-h" + icon_state = "pda-magistrate" default_pen = /obj/item/pen/multi/gold /obj/item/pda/heads/blueshield @@ -125,11 +130,6 @@ default_cartridge = /obj/item/cartridge/cargo icon_state = "pda-cargo" -/obj/item/pda/quartermaster - default_cartridge = /obj/item/cartridge/qm - icon_state = "pda-qm" - default_pen = /obj/item/pen/qm - /obj/item/pda/shaftminer icon_state = "pda-miner" @@ -174,7 +174,7 @@ default_pen = /obj/item/pen/multi /obj/item/pda/clear - icon_state = "pda-transp" + icon_state = "pda-clear" desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition with a transparent case." model_name = "Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition" diff --git a/code/modules/power/apc/apc.dm b/code/modules/power/apc/apc.dm index e1f99ebb895a..f818ad845c98 100644 --- a/code/modules/power/apc/apc.dm +++ b/code/modules/power/apc/apc.dm @@ -131,7 +131,6 @@ armor = list(MELEE = 20, BULLET = 20, LASER = 10, ENERGY = 100, BOMB = 30, RAD = 100, FIRE = 90, ACID = 50) ..() GLOB.apcs += src - GLOB.apcs = sortAtom(GLOB.apcs) wires = new(src) @@ -179,6 +178,7 @@ A.powernet.powernet_apc = src if(!mapload) + GLOB.apcs = sortAtom(GLOB.apcs) return electronics_state = APC_ELECTRONICS_SECURED diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm index c289f5aa0f73..0e3773f6b43b 100644 --- a/code/modules/power/engines/supermatter/supermatter.dm +++ b/code/modules/power/engines/supermatter/supermatter.dm @@ -604,7 +604,7 @@ //After this point power is lowered //This wraps around to the begining of the function //Handle high power zaps/anomaly generation - if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point) //If the power is above 5000 or if the damage is above 550 + if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point || combined_gas > MOLE_CRUNCH_THRESHOLD) //If the power is above 5000, if the damage is above 550, or mole crushing var/range = 4 zap_cutoff = 1500 if(removed && removed.return_pressure() > 0 && removed.temperature() > 0) @@ -643,9 +643,9 @@ if(prob(5)) supermatter_anomaly_gen(src, FLUX_ANOMALY, rand(5, 10)) - if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(5) || prob(1)) + if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(5) || prob(1) || combined_gas > MOLE_CRUNCH_THRESHOLD && prob(5)) supermatter_anomaly_gen(src, GRAVITATIONAL_ANOMALY, rand(5, 10)) - if((power > SEVERE_POWER_PENALTY_THRESHOLD && prob(2)) || (prob(0.3) && power > POWER_PENALTY_THRESHOLD)) + if((power > SEVERE_POWER_PENALTY_THRESHOLD && prob(2)) || (prob(0.3) && power > POWER_PENALTY_THRESHOLD) || combined_gas > MOLE_CRUNCH_THRESHOLD && prob(2)) supermatter_anomaly_gen(src, BLUESPACE_ANOMALY, rand(5, 10)) if(prob(15)) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index ff397b39e9cb..5a0fbf434ff6 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -128,7 +128,7 @@ var/list/stored_ammo = list() var/ammo_type = /obj/item/ammo_casing var/max_ammo = 7 - var/multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_NONE // see update_icon_state() for details + var/multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_NONE // see update_icon_state for details var/caliber var/multiload = 1 var/slow_loading = FALSE diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 1e9c05ef2257..889d8d5c6e46 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -604,6 +604,11 @@ materials = list(MAT_METAL = 20000) var/charge = 1000 +// Overwrite description so shells aren't displayed +/obj/item/ammo_box/magazine/detective/speedcharger/update_desc() + . = ..() + desc = "[initial(desc)]" + /obj/item/ammo_box/magazine/detective/speedcharger/update_icon_state() return diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 36984e63b5ef..aa6c863cd63d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -352,6 +352,7 @@ if(!user.unEquip(I)) return to_chat(user, "You click [S] into place on [src].") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) if(S.on) set_light(0) gun_light = S @@ -375,6 +376,7 @@ return K.forceMove(src) to_chat(user, "You attach [K] to [src]'s bayonet lug.") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) bayonet = K var/state = "bayonet" //Generic state. if(bayonet.icon_state in icon_states('icons/obj/guns/bayonets.dmi')) //Snowflake state? @@ -389,21 +391,23 @@ /obj/item/gun/screwdriver_act(mob/user, obj/item/I) . = TRUE - if(!I.use_tool(src, user, 0, volume = I.tool_volume)) - return - if(gun_light && can_flashlight) - for(var/obj/item/flashlight/seclite/S in src) - to_chat(user, "You unscrew the seclite from [src].") - gun_light = null - S.loc = get_turf(user) - update_gun_light(user) - S.update_brightness(user) - update_icon() - for(var/datum/action/item_action/toggle_gunlight/TGL in actions) - qdel(TGL) - else if(bayonet && can_bayonet) //if it has a bayonet, and the bayonet can be removed - bayonet.forceMove(get_turf(user)) - clear_bayonet() + if(gun_light || bayonet) + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) + return + if(gun_light && can_flashlight) + for(var/obj/item/flashlight/seclite/S in src) + to_chat(user, "You unscrew the seclite from [src].") + gun_light = null + S.loc = get_turf(user) + update_gun_light(user) + S.update_brightness(user) + update_icon() + for(var/datum/action/item_action/toggle_gunlight/TGL in actions) + qdel(TGL) + else if(bayonet && can_bayonet) // if it has a bayonet, and the bayonet can be removed + bayonet.forceMove(get_turf(user)) + to_chat(user, "You remove [bayonet] from [src].") + clear_bayonet() /obj/item/gun/proc/toggle_gunlight() if(!gun_light) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 5e1c90749583..ad7350420cda 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -463,7 +463,7 @@ if(slime.docile) //Undoes docility, but doesn't make rabid. slime.visible_message("[slime] forgets its training, becoming wild once again!") slime.docile = FALSE - slime.update_name() + slime.update_appearance(UPDATE_NAME) continue slime.rabid = TRUE slime.visible_message("[slime] is driven into a frenzy!") diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 1448089796be..52ec63933a7c 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1611,7 +1611,7 @@ /obj/effect/decal/cleanable/blood/gibs/pipe_eject(direction) var/list/dirs if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) + dirs = list(direction, turn(direction, -45), turn(direction, 45)) else dirs = GLOB.alldirs.Copy() @@ -1620,7 +1620,7 @@ /obj/effect/decal/cleanable/blood/gibs/robot/gib/pipe_eject(direction) var/list/dirs if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) + dirs = list(direction, turn(direction, -45), turn(direction, 45)) else dirs = GLOB.alldirs.Copy() diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 9351978962e9..c7a23b33c67e 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -450,7 +450,7 @@ to_chat(user, "You seal [src], preparing it for delivery.") icon_state = "shippack_sealed" sealed = 1 - update_desc() + update_appearance(UPDATE_DESC) else if(tgui_alert(user, "Do you want to tear up the package?", "Shipping", list("Yes", "No")) == "Yes") to_chat(user, "You shred [src].") diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 8f9247bd5d54..da2d8dd774d9 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -350,10 +350,11 @@ desc = "An implant that enhances your muscles to punch harder and throw people back." id = "muscle_implant" req_tech = list("combat" = 7, "syndicate" = 4, "biotech" = 7) - build_type = PROTOLATHE + build_type = PROTOLATHE | MECHFAB materials = list(MAT_GOLD = 5000, MAT_METAL = 10000, MAT_TITANIUM = 3000, MAT_BLUESPACE = 2000) + construction_time = 200 build_path = /obj/item/organ/internal/cyberimp/arm/muscle - category = list("Weapons") + category = list("Medical", "Weapons") /datum/design/upgraded_chemical_flamethrower name = "Extended Capacity Chemical Flamethrower Parts" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 216f680e8556..28b410b9d373 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -419,7 +419,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/finish_machine(key, amount, enough_materials, obj/machinery/r_n_d/machine, datum/design/being_built, list/efficient_mats) if(machine) if(enough_materials && being_built) - SSblackbox.record_feedback("nested tally", "RND Production List", amount, list("[being_built.category]", "[being_built.name]")) + if(is_station_level(z)) + SSblackbox.record_feedback("tally", "station_protolathe_production", amount, "[being_built.type]") for(var/i in 1 to amount) var/obj/item/new_item = new being_built.build_path(src) if(istype(new_item)) // Only want a random pixel offset if it IS actually an item, and not a structure like a bluespace closet diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index afd6c3a35972..d6b2b7f576cd 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -146,9 +146,9 @@ /obj/machinery/bsa/full/proc/get_front_turf() switch(dir) if(WEST) - return locate(x - 6,y,z) + return locate(x - 7,y,z) if(EAST) - return locate(x + 4,y,z) + return locate(x + 5,y,z) return get_turf(src) /obj/machinery/bsa/full/proc/get_back_turf() @@ -206,6 +206,7 @@ A.ex_act(EXPLODE_DEVASTATE) point.Beam(get_target_turf(), icon_state = "bsa_beam", time = 50, maxdistance = world.maxx, beam_type = /obj/effect/ebeam/deadly) //ZZZAP + new /obj/effect/temp_visual/bsa_splash(point, dir) playsound(src, 'sound/machines/bsa_fire.ogg', 100, 1) if(istype(target, /obj/item/gps)) var/obj/item/gps/G = target diff --git a/code/modules/supply/supply_packs/pack_security.dm b/code/modules/supply/supply_packs/pack_security.dm index f95c3cbc5756..1adad3d58c9e 100644 --- a/code/modules/supply/supply_packs/pack_security.dm +++ b/code/modules/supply/supply_packs/pack_security.dm @@ -278,15 +278,15 @@ /datum/supply_packs/security/armory/tranqammo name = "Tranquilizer Shell Crate" - contains = list(/obj/item/storage/box/tranquilizer, - /obj/item/storage/box/tranquilizer) + contains = list(/obj/item/storage/fancy/shell/tranquilizer, + /obj/item/storage/fancy/shell/tranquilizer) cost = 400 containername = "tranquilizer shell crate" /datum/supply_packs/security/armory/holyammo name = "Holy Water Shell Crate" - contains = list(/obj/item/storage/box/holy, - /obj/item/storage/box/holy) + contains = list(/obj/item/storage/fancy/shell/holy, + /obj/item/storage/fancy/shell/holy) cost = 400 containername = "holy water shell crate" diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index e11efc6829a4..b08a0021cd06 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -425,12 +425,8 @@ user.changeNext_move(CLICK_CD_MELEE) var/obj/machinery/power/apc/A = target var/mob/living/carbon/human/H = user - if(H.get_int_organ(/obj/item/organ/internal/cell) || H.get_int_organ(/obj/item/organ/internal/heart)) - var/obj/item/organ/internal/heart/robotic = H.get_int_organ(/obj/item/organ/internal/heart) - if(robotic) - if(!(robotic.status & ORGAN_ROBOT) && !H.get_int_organ(/obj/item/organ/internal/heart/demon/pulse)) - to_chat(user, "You lack a cell in which to store charge!") - return + var/datum/organ/battery/power_source = H.get_int_organ_datum(ORGAN_DATUM_BATTERY) + if(istype(power_source)) if(A.emagged || A.stat & BROKEN) do_sparks(3, 1, A) to_chat(H, "The APC power currents surge erratically, damaging your chassis!") @@ -443,7 +439,7 @@ else to_chat(user, "There is no charge to draw from that APC.") else - to_chat(user, "You lack a cell in which to store charge!") + to_chat(user, "You lack a power source in which to store charge!") /obj/item/apc_powercord/proc/powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H) H.visible_message("[H] inserts a power connector into \the [A].", "You begin to draw power from \the [A].") diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 9dac53823a47..0b3e52c5578b 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -36,6 +36,7 @@ base_icon_state = "cursedheart" origin_tech = "biotech=6" actions_types = list(/datum/action/item_action/organ_action/cursed_heart) + organ_datums = list(/datum/organ/heart, /datum/organ/battery) // This doesn't actually work for IPCs but it also doesn't kill you, and it's funny var/last_pump = 0 var/pump_delay = 30 //you can pump 1 second early, for lag, but no more (otherwise you could spam heal) var/blood_loss = 100 //600 blood is human default, so 5 failures (below 122 blood is where humans die because reasons?) @@ -191,6 +192,7 @@ base_icon_state = "heart-c" dead_icon = "heart-c-off" status = ORGAN_ROBOT + organ_datums = list(/datum/organ/heart, /datum/organ/battery) /obj/item/organ/internal/heart/cybernetic/upgraded name = "upgraded cybernetic heart" diff --git a/code/modules/surgery/organs/organ_datums/battery_datum.dm b/code/modules/surgery/organs/organ_datums/battery_datum.dm new file mode 100644 index 000000000000..28b3b35d4aca --- /dev/null +++ b/code/modules/surgery/organs/organ_datums/battery_datum.dm @@ -0,0 +1,5 @@ +/* + For any species that doesn't have a heart datum but does have heart-like organs, so just IPCs right now. Microbatteries currently have no behavior. +*/ +/datum/organ/battery + organ_tag = ORGAN_DATUM_BATTERY diff --git a/code/modules/surgery/organs/organ_helpers.dm b/code/modules/surgery/organs/organ_helpers.dm index 6ec762dee736..e27293dedc4f 100644 --- a/code/modules/surgery/organs/organ_helpers.dm +++ b/code/modules/surgery/organs/organ_helpers.dm @@ -85,8 +85,13 @@ .++ if(affecting.body_part == LEG_LEFT) .++ -///Returns true if all the mob's vital organs are functional, otherwise returns false -/mob/living/carbon/human/proc/check_vital_organs() +/* Returns true if all the mob's vital organs are functional, otherwise returns false. +* This proc is only used for checking if IPCs can revive from death, so calling it on a non IPC will always return false (right now) +*/ +/mob/living/carbon/human/proc/ipc_vital_organ_check() + var/has_battery = get_int_organ_datum(ORGAN_DATUM_BATTERY) + if(!has_battery) + return FALSE for(var/obj/item/organ/internal/organ in internal_organs) if(organ.vital && (organ.damage >= organ.max_damage)) return FALSE diff --git a/code/modules/surgery/organs/subtypes/machine_organs.dm b/code/modules/surgery/organs/subtypes/machine_organs.dm index a874035f9141..c5b60e33263b 100644 --- a/code/modules/surgery/organs/subtypes/machine_organs.dm +++ b/code/modules/surgery/organs/subtypes/machine_organs.dm @@ -112,6 +112,7 @@ vital = TRUE status = ORGAN_ROBOT requires_robotic_bodypart = TRUE + organ_datums = list(/datum/organ/battery) /obj/item/organ/internal/eyes/optical_sensor name = "optical sensor" diff --git a/code/modules/tgui/tgui_input/list_input.dm b/code/modules/tgui/tgui_input/list_input.dm index f43ceffdaafa..e037b595fac6 100644 --- a/code/modules/tgui/tgui_input/list_input.dm +++ b/code/modules/tgui/tgui_input/list_input.dm @@ -73,6 +73,8 @@ var/datum/ui_state/state /// Whether the tgui list input is invalid or not (i.e. due to all list entries being null) var/invalid = FALSE + /// The TGUI modal to use for this popup + var/modal_type = "ListInputModal" /datum/tgui_list_input/New(mob/user, message, title, list/items, default, timeout, ui_state) src.title = title @@ -122,7 +124,7 @@ /datum/tgui_list_input/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ListInputModal") + ui = new(user, src, modal_type) ui.set_autoupdate(FALSE) ui.open() @@ -152,9 +154,8 @@ switch(action) if("submit") - if(!(params["entry"] in items)) + if(!handle_submit_action(params)) return - set_choice(items_map[params["entry"]]) closed = TRUE SStgui.close_uis(src) return TRUE @@ -163,5 +164,12 @@ SStgui.close_uis(src) return TRUE + +/datum/tgui_list_input/proc/handle_submit_action(params) + if(!(params["entry"] in items)) + return FALSE + set_choice(items_map[params["entry"]]) + return TRUE + /datum/tgui_list_input/proc/set_choice(choice) src.choice = choice diff --git a/code/modules/tgui/tgui_input/ranked_list_input.dm b/code/modules/tgui/tgui_input/ranked_list_input.dm new file mode 100644 index 000000000000..80631d568236 --- /dev/null +++ b/code/modules/tgui/tgui_input/ranked_list_input.dm @@ -0,0 +1,56 @@ +/** + * Creates a TGUI input list window and returns the user's response. + * + * This proc should be used to create alerts that the caller will wait for a response from. + * Arguments: + * * user - The user to show the input box to. + * * message - The content of the input box, shown in the body of the TGUI window. + * * title - The title of the input box, shown on the top of the TGUI window. + * * items - The options that can be chosen by the user, each string is assigned a button on the UI. + * * default - If an option is already preselected on the UI. Current values, etc. + * * timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout. + */ +/proc/tgui_input_ranked_list(mob/user, message, title = "Select", list/items, default, timeout = 0, ui_state = GLOB.always_state) + if(!user) + user = usr + + if(!length(items)) + CRASH("[user] tried to open an empty TGUI Input List. Contents are: [items]") + + if(!istype(user)) + if(!isclient(user)) + CRASH("We passed something that wasn't a user/client in a TGUI Input List! The passed user was [user]!") + var/client/client = user + user = client.mob + + if(isnull(user.client)) + return + + // We don't support disabled TGUI input (PREFTOGGLE_2_DISABLE_TGUI_INPUT), get with the times old man + + var/datum/tgui_list_input/ranked/input = new(user, message, title, items, default, timeout, ui_state) + + if(input.invalid) + qdel(input) + return + + input.ui_interact(user) + input.wait() + if(input) + . = input.choice + qdel(input) + +/** + * # tgui_list_input/ranked + * + * Datum used for allowing a user to sort a TGUI-controlled list input that prompts the user with + * a message and shows a list of rankable options + */ +/datum/tgui_list_input/ranked + modal_type = "RankedListInputModal" + +/datum/tgui_list_input/ranked/handle_submit_action(params) + if(!lists_equal_unordered(params["entry"], items)) + return FALSE + set_choice(params["entry"]) + return TRUE diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 9a316f1a3492..db5fd2d0c0f5 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -133,26 +133,35 @@ Status of your pull request will be communicated via PR labels. This includes: All PRs which modify maps are expected to follow all of our [mapping requirements](./mapping/requirements.md). -## Modifying MILLA +## Modifying Rust Code -Our atmos engine, MILLA, is in the `milla/` directory. It's written in Rust for -performance reasons, which means it's not compiled the same way as the rest of -the code. If you're on Windows, you get a pre-built copy by default. If you're -on Linux, you built one already to run the server. +Some parts of Paradise are written in [Rust][] for performance or reliability +reasons: -If you make changes to MILLA, you'll want to rebuild. This will be very similar -to RUSTG: https://github.com/ParadiseSS13/rust-g The only difference is that you -run `cargo` from the `milla/` directory, and don't need to specify -`--all-features` (though it doesn't hurt). +- Our atmos engine, MILLA, is in the `rust/src/milla/` directory. +- The `mapmanip` library, an Aurora Station module used for automating DMM + modification, is in the `rust/src/mapmanip` library. + +The Rust parts of our codebase are compiled into a single library, +separate from the rest of the code. If you're on Windows, you get a pre-built +copy by default. If you're on Linux, you built one already to run the server. + +If you make changes to the Rust library, you'll want to rebuild. This will be +very similar to [rust-g][]. The only difference is that you run `cargo` from the +`rust/` directory, and don't need to specify `--all-features` (though it doesn't +hurt). The server will automatically detect that you have a local build, and use that over the default Windows one. -When you're ready to make a PR, please DO NOT modify `milla.dll` or -`tools/ci/libmilla_ci.so`. Leave "Allow edits and access to secrets by -maintainers" enabled, and post a comment on your PR saying `!build_milla`. A bot +When you're ready to make a PR, please DO NOT modify `rustlibs.dll` or +`tools/ci/librustlibs_ci.so`. Leave "Allow edits and access to secrets by +maintainers" enabled, and post a comment on your PR saying `!build_rust`. A bot will automatically build them for you and update your branch. +[Rust]: https://www.rust-lang.org/ +[rust-g]: https://github.com/ParadiseSS13/rust-g + ## Other Notes - Bloated code may be necessary to add a certain feature, which means there has diff --git a/docs/mapping/images/mapmanip_contents.png b/docs/mapping/images/mapmanip_contents.png new file mode 100644 index 000000000000..1db7e6b998a9 Binary files /dev/null and b/docs/mapping/images/mapmanip_contents.png differ diff --git a/docs/mapping/images/mapmanip_error.png b/docs/mapping/images/mapmanip_error.png new file mode 100644 index 000000000000..7b7a7608f4ca Binary files /dev/null and b/docs/mapping/images/mapmanip_error.png differ diff --git a/docs/mapping/images/mapmanip_inplace.png b/docs/mapping/images/mapmanip_inplace.png new file mode 100644 index 000000000000..bdc7eb4d5e5c Binary files /dev/null and b/docs/mapping/images/mapmanip_inplace.png differ diff --git a/docs/mapping/images/mapmanip_markers.png b/docs/mapping/images/mapmanip_markers.png new file mode 100644 index 000000000000..d1d732b219cc Binary files /dev/null and b/docs/mapping/images/mapmanip_markers.png differ diff --git a/docs/mapping/images/mapmanip_noops1.png b/docs/mapping/images/mapmanip_noops1.png new file mode 100644 index 000000000000..229c744fed93 Binary files /dev/null and b/docs/mapping/images/mapmanip_noops1.png differ diff --git a/docs/mapping/images/mapmanip_noops2.png b/docs/mapping/images/mapmanip_noops2.png new file mode 100644 index 000000000000..73dfe22290fd Binary files /dev/null and b/docs/mapping/images/mapmanip_noops2.png differ diff --git a/docs/mapping/images/mapmanip_noops3.png b/docs/mapping/images/mapmanip_noops3.png new file mode 100644 index 000000000000..f858899c8795 Binary files /dev/null and b/docs/mapping/images/mapmanip_noops3.png differ diff --git a/docs/mapping/images/mapmanip_noops4.png b/docs/mapping/images/mapmanip_noops4.png new file mode 100644 index 000000000000..7556a52eeb7a Binary files /dev/null and b/docs/mapping/images/mapmanip_noops4.png differ diff --git a/docs/mapping/images/mapmanip_results.png b/docs/mapping/images/mapmanip_results.png new file mode 100644 index 000000000000..8279a034da6e Binary files /dev/null and b/docs/mapping/images/mapmanip_results.png differ diff --git a/docs/mapping/submaps.md b/docs/mapping/submaps.md new file mode 100644 index 000000000000..97168a1b0d86 --- /dev/null +++ b/docs/mapping/submaps.md @@ -0,0 +1,181 @@ +# Guide to Submaps + +> [!NOTE] +> +> This guide was originally written by developer Dreamix for Aurora Station, the +> original codebase the `mapmanip` library was written in. Despite the difference +> in appearance of the screenshots, the guide is still applicable. + +Submaps are a mechanism to allow copy-pasting parts of maps (submaps) into other +maps, implemented with the `mapmanip` library. `mapmanip` is a library for map +manipulation, and happens before the map is actually loaded by the server. This +is implemented using Rust, instead of DM code. Map manipulations are configured +and defined by adding a `.jsonc` file corresponding to a `.dmm` map. Currently, +the only available map manipulation is submap extraction/insertion. + +## But Why + +This allows for adding variations to maps, beyond just using `/obj/random/...` +items. Variations of bigger parts of maps, like, for example, whole rooms. Or +even whole layouts, making it so a map looks different every time it is visited. + +## How To Do It + +1. Firstly, define two markers for each submap. The types need to be unique, and + the types are used later to define where to extract the submap from, and where + to insert it. Here, we want to add some variation to the small warehouse storage + room. + + ```dm + /obj/effect/map_effect/marker/mapmanip/submap/extract/station/boxstation/warehouse_small_storage + name = "Boxstation, Cargo Warehouse Small Storage" + + /obj/effect/map_effect/marker/mapmanip/submap/insert/station/boxstation/warehouse_small_storage + name = "Boxstation, Cargo Warehouse Small Storage" + ``` + +2. Figure out the area that the submap will be inserted into on the map, and add + the insert marker there. In this case the map is + `maps/stations/boxstation.dmm`, and the size of that area is 3x5 + tiles, being the little side warehouse. Here, we want the submaps to only be the + "cargo" or "contents" of the warehouse. So this room is already fully + functional, with lights, cameras, pipes, etc. Do note that the "submap edge" + helper markers are just visual helpers, and they have no function. + + ![](./images/mapmanip_inplace.png) + +3. Create a new map file that will contain the submap variants to extract from. + In this case it is `maps/stations/submaps/warehouse_small_storage.dmm`. + Add all the possible variants here, each having the same extract marker. They + must all be the chosen size, in this case being 3x5 tiles. We want the submaps + to only contain "cargo" or "contents" of the warehouse, so both the turf and + area are set to "noop". How are "noop" areas and turfs handled, see the next + part of this guide. + + ![](./images/mapmanip_contents.png) + +4. Create the mapmanip configuration file, that will actually define the map + manipulation, and make it happen. In this case it is + `maps/stations/boxstation.jsonc`. Do notice how the path and + name of this config file is exactly the same as of the map + `.../boxstation.dmm`, just with a different extension. Each + submap manipulation has these vars defined: + + - `type` - Map manipulation type. For submap manipulations it is "SubmapExtractInsert". + - `submap_size_...` - Size of the submap, width and height. + - `submaps_dmm` - This is the relative path to the DMM file containing the + submaps. Relative, meaning to the `.dmm` that is being loaded. In this + case, it is put in a separate folder for better organization, but it could + be in the same folder as the `.dmm` file that is being manipulated. + - `marker_...` - Typepaths to the insert and extract markers, as defined in + the first step of this guide, and as added into the maps in step two and + three. + - `submaps_can_repeat` - Decides whether submaps can repeat when inserting + them into different places on the map. If there are more extract markers + than insert markers, it is safe to set it to `true`. Otherwise it should + be `false`, or else there may not be enough submaps to insert, and map + manipulation will fail. + + ```json + [ + { + // Boxstation warehouse, intended for randomized items + "type": "SubmapExtractInsert", + "submap_size_x": 3, + "submap_size_y": 5, + "submaps_dmm": "stations/submaps/warehouse_small_storage.dmm", + "marker_extract": "/obj/effect/map_effect/marker/mapmanip/submap/extract/station/boxstation/warehouse_small_storage", + "marker_insert": "/obj/effect/map_effect/marker/mapmanip/submap/insert/station/boxstation/warehouse_small_storage", + "submaps_can_repeat": true // doesn't matter, as there's only one insert marker + } + ] + ``` + +5. Run the server locally and observe the results. + + ![](./images/mapmanip_results.png) + +## Areas and Turfs + +Areas and turfs, and specifically their "noop" types, have special meaning in +submap manipulation. They determine whether the submap manipulation is more like +"replacing" or "appending". The "noop" (short for "no-operation") types for +turfs is `/turf/template_noop`, and for areas it is `/area/template_noop`. + +If neither area nor turf are noop: submap tile atoms replace map tile atoms +entirely, including turf and area. This could be used for submaps that are fully +functional rooms, like a medbay submap and a brig submap, with their own areas +defined in their submaps. + +![](./images/mapmanip_noops1.png) + +If both area and turf are noop: All atoms on a submap tile are inserted/appended +into the map tile, with the exception for area and turf. This can be used for +places like a warehouse, where only the actual cargo is in submaps, and on the +map the warehouse is fully functional and implemented (just empty). + +![](./images/mapmanip_noops2.png) + +If only turf is noop, while area is non-noop: All atoms are inserted/appended +into the map tile, but the resulting area used is of the submap tile. +Admittedly, I cannot think of a good use case for this specific feature, but I +am including it here for completeness. + +![](./images/mapmanip_noops3.png) + +If only area is noop, while turf is non-noop: Submap tile atoms replace map tile +atoms entirely, with the exception of area - resulting area is of the map, not +the submap. This could be used to have different warehouses that use the same +submaps, in different parts of a station or outpost, and so using different +areas. + +![](./images/mapmanip_noops4.png) + +## Errors and Debugging + +If a map manipulation fails, it should do both these things: + +- Return `null`, and in that case the map is loaded without any map + manipulations, as a fallback. +- Generate a stack trace, that can be caught. To do so, must run with debugging, + and have breakpoints on runtime errors. It should show a stack trace like + below, with information about what happened. + + ![](./images/mapmanip_error.png) + +## Other Notes + +- The `.jsonc` config file is using the JSONC format, which is a bit strict to + how it should look, and especially cares about commas. JSONC is "JSON with + comments". Exactly the same as JSON, with the only difference being that it + allows `// comments`. + +- There may be multiple different submap insert/extract manipulations defined + for one map. Every submap manipulation is going to require its own set of + markers. In that case the `.jsonc` would look roughly like this. + + ![](./images/mapmanip_markers.png) + +- If a map has multiple submap operations defined, they can be all in the same + submap dmm file, or can be in different ones. They can also be in the same + folder as the main map, or in some subfolder. Use whatever is best for + organization. + +- Submaps can be "recursive", where a submap may contain a insert marker for + another submap. The contained submaps won't be automatically inserted, + however, and they still require their own manipulations in the config. + +## Possible Uses + +- Warehouse with different cargo every round. One round it could be empty, + another it could have a few crates with guns and armor, another time it could + be full of building materials. +- Armory with a few different possible loadouts. One with lots of weak SMGs and + strong armor, another variant with just a few strong rifles and weak armor. +- Big crew quarters with 20 rooms, but randomly filled with submaps with only 5 variants. +- Hallway on a planetary outpost with one variant where it is fine and "normal", + and another variant where it is blocked by some rocks, forcing people to find + another way through. +- Alternative possible layouts for the whole map, where rooms and departments + are in different places every round. +- The sky is the limit, literally. diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 71eb30617c32..7bd1e5397130 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/beam_splash.dmi b/icons/effects/beam_splash.dmi new file mode 100644 index 000000000000..d7deb3e9275c Binary files /dev/null and b/icons/effects/beam_splash.dmi differ diff --git a/icons/effects/map_effects_96x96.dmi b/icons/effects/map_effects_96x96.dmi new file mode 100644 index 000000000000..fa0c418f3740 Binary files /dev/null and b/icons/effects/map_effects_96x96.dmi differ diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index d22a0eb914c3..4fcf4dbf0a8e 100644 Binary files a/icons/effects/mapping_helpers.dmi and b/icons/effects/mapping_helpers.dmi differ diff --git a/icons/goonstation/objects/pda_overlay.dmi b/icons/goonstation/objects/pda_overlay.dmi index 7c4fa677eb5a..3b5068e1303a 100644 Binary files a/icons/goonstation/objects/pda_overlay.dmi and b/icons/goonstation/objects/pda_overlay.dmi differ diff --git a/icons/mob/actions/actions_mod.dmi b/icons/mob/actions/actions_mod.dmi index faef21cd4c72..f4217c872874 100644 Binary files a/icons/mob/actions/actions_mod.dmi and b/icons/mob/actions/actions_mod.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 0d669c5831cd..e72a728175b8 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/species/drask/under/color.dmi b/icons/mob/clothing/species/drask/under/color.dmi index 50da6be897ff..c91b1131eae7 100644 Binary files a/icons/mob/clothing/species/drask/under/color.dmi and b/icons/mob/clothing/species/drask/under/color.dmi differ diff --git a/icons/mob/clothing/species/grey/under/color.dmi b/icons/mob/clothing/species/grey/under/color.dmi index 4e3ae9b67339..e286752d6599 100644 Binary files a/icons/mob/clothing/species/grey/under/color.dmi and b/icons/mob/clothing/species/grey/under/color.dmi differ diff --git a/icons/mob/clothing/species/kidan/gloves.dmi b/icons/mob/clothing/species/kidan/gloves.dmi index 61c77fe0e7f5..a6fe5c50b1b8 100644 Binary files a/icons/mob/clothing/species/kidan/gloves.dmi and b/icons/mob/clothing/species/kidan/gloves.dmi differ diff --git a/icons/mob/clothing/species/kidan/under/color.dmi b/icons/mob/clothing/species/kidan/under/color.dmi index babe2b8fcf1c..b9548a7d3d9f 100644 Binary files a/icons/mob/clothing/species/kidan/under/color.dmi and b/icons/mob/clothing/species/kidan/under/color.dmi differ diff --git a/icons/mob/clothing/species/vox/under/color.dmi b/icons/mob/clothing/species/vox/under/color.dmi index 99c31857f3ee..82303ac4d400 100644 Binary files a/icons/mob/clothing/species/vox/under/color.dmi and b/icons/mob/clothing/species/vox/under/color.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index b72165ac3c74..fcbd77823588 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/clothing/under/color.dmi b/icons/mob/clothing/under/color.dmi index 9ed1fc55cc59..633488f11cc1 100644 Binary files a/icons/mob/clothing/under/color.dmi and b/icons/mob/clothing/under/color.dmi differ diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi index a85564d85965..989f62e68d05 100644 Binary files a/icons/mob/screen_ai.dmi and b/icons/mob/screen_ai.dmi differ diff --git a/icons/mob/screen_midnight.dmi b/icons/mob/screen_midnight.dmi index f1a82e36245d..ad82f1280802 100644 Binary files a/icons/mob/screen_midnight.dmi and b/icons/mob/screen_midnight.dmi differ diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi index 3645c91aea5b..e0ace87e5d1a 100644 Binary files a/icons/mob/screen_operative.dmi and b/icons/mob/screen_operative.dmi differ diff --git a/icons/mob/screen_plasmafire.dmi b/icons/mob/screen_plasmafire.dmi index 3e22531ad769..da228456ee45 100644 Binary files a/icons/mob/screen_plasmafire.dmi and b/icons/mob/screen_plasmafire.dmi differ diff --git a/icons/mob/screen_retro.dmi b/icons/mob/screen_retro.dmi index a7ffcad04fa2..3fa0025ab7bc 100644 Binary files a/icons/mob/screen_retro.dmi and b/icons/mob/screen_retro.dmi differ diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi index 42f79c6dde7c..2e261c40cf3e 100644 Binary files a/icons/mob/screen_slimecore.dmi and b/icons/mob/screen_slimecore.dmi differ diff --git a/icons/mob/screen_white.dmi b/icons/mob/screen_white.dmi index 82854f531846..8b444e12e2a8 100644 Binary files a/icons/mob/screen_white.dmi and b/icons/mob/screen_white.dmi differ diff --git a/icons/obj/boxes.dmi b/icons/obj/boxes.dmi index a9f0326fc752..e0c018cb6d63 100644 Binary files a/icons/obj/boxes.dmi and b/icons/obj/boxes.dmi differ diff --git a/icons/obj/clothing/under/color.dmi b/icons/obj/clothing/under/color.dmi index 2c51ac4a39f9..8b375da0e675 100644 Binary files a/icons/obj/clothing/under/color.dmi and b/icons/obj/clothing/under/color.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 882a166680f1..1a772a813e47 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/icons/obj/shell_boxes.dmi b/icons/obj/shell_boxes.dmi new file mode 100644 index 000000000000..615e189a9191 Binary files /dev/null and b/icons/obj/shell_boxes.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 67375dfa6abf..ada0ef227e20 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 3283b4f083bf..e024f21d33c4 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/ui_icons/inventory/pda.png b/icons/ui_icons/inventory/pda.png index fff1c7fcd8c2..c23438382972 100644 Binary files a/icons/ui_icons/inventory/pda.png and b/icons/ui_icons/inventory/pda.png differ diff --git a/milla.dll b/milla.dll deleted file mode 100755 index f2f985c418bb..000000000000 Binary files a/milla.dll and /dev/null differ diff --git a/milla/Cargo.toml b/milla/Cargo.toml deleted file mode 100644 index 268df469456a..000000000000 --- a/milla/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "milla" -version = "1.0.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib"] - -[dependencies] -atomic_float = "1.0.0" -bitflags = "2.5.0" -byondapi = { git = "https://github.com/spacestation13/byondapi-rs.git", version = "0.4.7" } -eyre = "0.6.12" -rand = { version = "0.8.5", features = ["small_rng"] } -scc = "2.1.1" -thread-priority = "1.1.0" diff --git a/milla/src/logging.rs b/milla/src/logging.rs deleted file mode 100644 index 9a5d64291049..000000000000 --- a/milla/src/logging.rs +++ /dev/null @@ -1,26 +0,0 @@ -use std::backtrace::Backtrace; -use std::fs::File; -use std::io::Write; - -/// Simple logging function, appends to ./milla_log.txt -#[allow(dead_code)] -pub(crate) fn write_log>(x: T) { - let mut f = File::options() - .create(true) - .append(true) - .open("./milla_log.txt") - .unwrap(); - writeln!(&mut f, "{}", String::from_utf8_lossy(x.as_ref())).unwrap(); -} - -/// Panic handler that dumps info out to ./milla_panic.txt (overwriting) if we crash. -pub(crate) fn setup_panic_handler() { - std::panic::set_hook(Box::new(|info| { - let backtrace = Backtrace::force_capture(); - std::fs::write( - "./milla_panic.txt", - format!("Panic {:#?}\n{:#?}", info, backtrace), - ) - .unwrap(); - })) -} diff --git a/mkdocs.yml b/mkdocs.yml index 6545bbd06e0d..e3533b9ca27e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -86,6 +86,7 @@ nav: - 'Mapping Quickstart': './mapping/quickstart.md' - 'Mapping Requirements': './mapping/requirements.md' - 'Design Guidelines': './mapping/design.md' + - 'Guide to Submaps': './mapping/submaps.md' - 'References': - 'Glossary': './references/glossary.md' diff --git a/modular_ss220/aesthetics/floors/code/floors.dm b/modular_ss220/aesthetics/floors/code/floors.dm index 8fe60247dfa0..c004880c2d30 100644 --- a/modular_ss220/aesthetics/floors/code/floors.dm +++ b/modular_ss220/aesthetics/floors/code/floors.dm @@ -23,9 +23,6 @@ icon_state = "smooth" // MARK: LIGHT FLOORS -/obj/item/stack/light_w - icon = 'modular_ss220/aesthetics/floors/icons/tiles.dmi' - /turf/simulated/floor/light/red color = "#f23030" light_color = "#f23030" diff --git a/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm b/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm index 79f156d7a1d4..3a51c41354c0 100644 --- a/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm +++ b/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm @@ -46,11 +46,11 @@ /datum/team/blood_brothers_team/handle_adding_member(datum/mind/new_member) . = ..() - update_name() + update_brother_name() /datum/team/blood_brothers_team/handle_removing_member(datum/mind/member, force) . = ..() - update_name() + update_brother_name() /datum/team/blood_brothers_team/proc/get_brother_names_text(datum/mind/brother_to_exclude) var/list/brother_names = list() @@ -68,7 +68,7 @@ if(istext(chosen_meeting_area)) meeting_area = chosen_meeting_area -/datum/team/blood_brothers_team/proc/update_name() +/datum/team/blood_brothers_team/proc/update_brother_name() PRIVATE_PROC(TRUE) var/new_name = get_brother_names_text() if(!new_name) diff --git a/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm b/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm index 07f5746aa4a5..eba5a040bbbe 100644 --- a/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm +++ b/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm @@ -24,13 +24,13 @@ /datum/team/vox_raiders/handle_adding_member(datum/mind/new_member) . = ..() - update_name() + update_reider_name() /datum/team/vox_raiders/handle_removing_member(datum/mind/member, force = FALSE) . = ..() - update_name() + update_reider_name() -/datum/team/vox_raiders/proc/update_name() +/datum/team/vox_raiders/proc/update_reider_name() PRIVATE_PROC(TRUE) var/new_name = get_raider_names_text() if(!new_name) diff --git a/modular_ss220/clothing/code/shoes.dm b/modular_ss220/clothing/code/shoes.dm index e755f7fb0053..4e24b850ffe3 100644 --- a/modular_ss220/clothing/code/shoes.dm +++ b/modular_ss220/clothing/code/shoes.dm @@ -93,7 +93,7 @@ set_light(0) glow_active = FALSE - update_icon_state() + update_icon(UPDATE_ICON_STATE) /// Opens user input for changing neon color /obj/item/clothing/shoes/black/neon/proc/change_color(mob/user) @@ -101,7 +101,7 @@ color = temp light_color = temp reload_neon_overlay(user) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /* Shark Shoes */ /obj/item/clothing/shoes/shark diff --git a/modular_ss220/clothing/code/under.dm b/modular_ss220/clothing/code/under.dm index 19d2a9f5ae76..bc2703bbe27b 100644 --- a/modular_ss220/clothing/code/under.dm +++ b/modular_ss220/clothing/code/under.dm @@ -49,226 +49,6 @@ "Nucleation" = 'modular_ss220/clothing/icons/mob/under.dmi', ) -/obj/item/clothing/under/yellowgreen_skirt - name = "жёлто-зеленая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Жёлто-зеленый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "yellowgreen_skirt" - item_color = "yellowgreen_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/aqua_skirt - name = "юбка цвета морской волны" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Морской экземпляр. Любите длинные названия?" - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "aqua_skirt" - item_color = "aqua_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/black_skirt - name = "чёрная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Чёрный экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "black_skirt" - item_color = "black_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/blue_skirt - name = "синяя юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Синий экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "blue_skirt" - item_color = "blue_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/brown_skirt - name = "коричневая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Коричневый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "brown_skirt" - item_color = "brown_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/darkblue_skirt - name = "тёмно-синяя юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Тёмно-синий экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "darkblue_skirt" - item_color = "darkblue_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/darkred_skirt - name = "тёмно-красная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Тёмно-красный экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "darkred_skirt" - item_color = "darkred_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/green_skirt - name = "зелёная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Зелёный экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "green_skirt" - item_color = "green_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/grey_skirt - name = "серая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Серый экземпляр. Не забудьте противогаз." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "grey_skirt" - item_color = "grey_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightblue_skirt - name = "голубая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Голубой экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightblue_skirt" - item_color = "lightblue_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightbrown_skirt - name = "светло-коричневая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Светло-коричневый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightbrown_skirt" - item_color = "lightbrown_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightgreen_skirt - name = "салатовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Салатовый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightgreen_skirt" - item_color = "lightgreen_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightpurple_skirt - name = "сиреневая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Сиреневый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightpurple_skirt" - item_color = "lightpurple_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightred_skirt - name = "пунцовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Пунцовый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightred_skirt" - item_color = "lightred_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/orange_skirt - name = "оранжевая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Оранжевый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "orange_skirt" - item_color = "orange_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/pink_skirt - name = "розовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Розовый экземпляр. Очень нежный." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "pink_skirt" - item_color = "pink_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/prisoner_skirt - name = "тюремная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Тюремный экземпляр. Для самых милых и робких." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "prisoner_skirt" - item_color = "prisoner_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/purple_skirt - name = "фиолетовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Фиолетовый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "purple_skirt" - item_color = "purple_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/rainbow_skirt - name = "разноцветная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Разноцветный экземпляр. Для неопределившихся." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "rainbow_skirt" - item_color = "rainbow_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/red_skirt - name = "красная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Красный экземпляр. Работая по обе стороны, не забывайте про любовь." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "red_skirt" - item_color = "red_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/white_skirt - name = "белая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Белый экземпляр. Возможно, отбеливатель был лишним." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "white_skirt" - item_color = "white_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/yellow_skirt - name = "жёлтая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Жёлтый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "yellow_skirt" - item_color = "yellow_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - /obj/item/clothing/under/towel icon = 'modular_ss220/clothing/icons/object/under.dmi' sprite_sheets = list( diff --git a/modular_ss220/clothing/icons/mob/under.dmi b/modular_ss220/clothing/icons/mob/under.dmi index c9bed9cec234..d0c71f83a2cb 100644 Binary files a/modular_ss220/clothing/icons/mob/under.dmi and b/modular_ss220/clothing/icons/mob/under.dmi differ diff --git a/modular_ss220/clothing/icons/object/under.dmi b/modular_ss220/clothing/icons/object/under.dmi index feb9374b65c4..b918484e20ea 100644 Binary files a/modular_ss220/clothing/icons/object/under.dmi and b/modular_ss220/clothing/icons/object/under.dmi differ diff --git a/modular_ss220/jobs/code/donor/donor_jobs.dm b/modular_ss220/jobs/code/donor/donor_jobs.dm index ce423ac6cdae..d7cbc1e5a859 100644 --- a/modular_ss220/jobs/code/donor/donor_jobs.dm +++ b/modular_ss220/jobs/code/donor/donor_jobs.dm @@ -8,7 +8,7 @@ supervisors = "the head of personnel" department_head = list("Head of Personnel") selection_color = "#fbd5ff" - access = list( ACCESS_MAINT_TUNNELS) + access = list(ACCESS_MAINT_TUNNELS) alt_titles = null outfit = /datum/outfit/job/donor hidden_from_job_prefs = TRUE diff --git a/modular_ss220/maps220/code/misc.dm b/modular_ss220/maps220/code/misc.dm index 50532fb45175..a95f3759894f 100644 --- a/modular_ss220/maps220/code/misc.dm +++ b/modular_ss220/maps220/code/misc.dm @@ -52,7 +52,7 @@ else if(!insisting) to_chat(user, span_cult("Ваше первое прикосновение заставляет [name] зашевелиться, прислушиваясь к вам. Вы действительно уверены, что хотите это сделать?")) insisting = TRUE - update_icon_state() + update_icon(UPDATE_ICON_STATE) return insisting = FALSE @@ -60,7 +60,7 @@ if(!wish) return charges-- - update_icon_state() + update_icon(UPDATE_ICON_STATE) var/mob/living/carbon/human/human = user var/become_shadow = TRUE diff --git a/modular_ss220/maps220/code/spawners.dm b/modular_ss220/maps220/code/spawners.dm index 37194df97d06..4df87a28e78d 100644 --- a/modular_ss220/maps220/code/spawners.dm +++ b/modular_ss220/maps220/code/spawners.dm @@ -215,7 +215,7 @@ suit_store = /obj/item/gun/projectile/shotgun/riot backpack_contents = list( /obj/item/storage/box/survival = 1, - /obj/item/storage/box/buck = 1 + /obj/item/storage/fancy/shell/buck = 1 ) return ..() @@ -300,7 +300,7 @@ /obj/item/reagent_containers/patch/silver_sulf/small, /obj/item/reagent_containers/patch/styptic/small, /obj/item/stock_parts/cell/high = 1, - /obj/item/storage/box/buck = 1 + /obj/item/storage/fancy/shell/buck = 1 ) return ..() diff --git a/modular_ss220/objects/code/flora/sakura.dm b/modular_ss220/objects/code/flora/sakura.dm index 62a6599523ed..146f841ff6b8 100644 --- a/modular_ss220/objects/code/flora/sakura.dm +++ b/modular_ss220/objects/code/flora/sakura.dm @@ -135,7 +135,7 @@ /obj/effect/decal/sakura_leaves/New() . = ..() - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/effect/decal/sakura_leaves/examine(mob/user) . = ..() diff --git a/modular_ss220/objects/code/weapons/melee/vibroblade.dm b/modular_ss220/objects/code/weapons/melee/vibroblade.dm index 16abdf90c341..8ef7865d0b26 100644 --- a/modular_ss220/objects/code/weapons/melee/vibroblade.dm +++ b/modular_ss220/objects/code/weapons/melee/vibroblade.dm @@ -151,7 +151,7 @@ /obj/item/melee/vibroblade/proc/set_charge_level(charge_level) src.charge_level = charge_level force = initial(force) * get_damage_factor() - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/melee/vibroblade/sardaukar name = "\improper emperor guard vibroblade" diff --git a/modular_ss220/sm_space_drop/code/sm_drop_button.dm b/modular_ss220/sm_space_drop/code/sm_drop_button.dm index ae956940fb17..c3376a007942 100644 --- a/modular_ss220/sm_space_drop/code/sm_drop_button.dm +++ b/modular_ss220/sm_space_drop/code/sm_drop_button.dm @@ -72,7 +72,7 @@ user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) glass = FALSE playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, TRUE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) else user.visible_message(span_notice("[user] дружески похлопывает по [name]."), span_notice("Вы дружески похлопываете по [name].")) playsound(loc, 'sound/effects/glassknock.ogg', 50, TRUE) @@ -85,7 +85,7 @@ playsound(loc, "modular_ss220/sm_space_drop/sound/button[rand(1, 5)].ogg", 100, TRUE) visible_message(span_notice("Кнопка громко щелкает.")) launch_sequence() - update_icon_state() + update_icon(UPDATE_ICON_STATE) if(SSticker && SSticker.current_state == GAME_STATE_PLAYING) var/area/area = get_area(src) if(area) diff --git a/modular_ss220/vending/code/vending.dm b/modular_ss220/vending/code/vending.dm index bffee8ce175e..4ac5b9fae813 100644 --- a/modular_ss220/vending/code/vending.dm +++ b/modular_ss220/vending/code/vending.dm @@ -10,27 +10,27 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF refill_canister = /obj/item/vending_refill/nta products = list( - /obj/item/storage/box/slug = 4, + /obj/item/storage/fancy/shell/slug = 4, /obj/item/grenade/flashbang = 4, /obj/item/flash = 5, - /obj/item/storage/box/buck = 4, + /obj/item/storage/fancy/shell/buck = 4, /obj/item/ammo_box/magazine/enforcer = 8, /obj/item/flashlight/seclite = 4, /obj/item/restraints/legcuffs/bola/energy = 8, /obj/item/ammo_box/magazine/enforcer/lethal = 8, /obj/item/ammo_box/magazine/laser = 12, /obj/item/ammo_box/magazine/wt550m9 = 8, - /obj/item/storage/box/rubbershot = 4, + /obj/item/storage/fancy/shell/rubbershot = 4, /obj/item/ammo_box/magazine/m556/arg = 12, /obj/item/ammo_box/a40mm = 4, /obj/item/ammo_box/magazine/smgm9mm = 12) /obj/machinery/economy/vending/nta/admin/Initialize(mapload) products = list() - var/list/new_products = list() + subtypesof(/obj/item/ammo_box) + /obj/item/storage/box/rubbershot +\ - /obj/item/storage/box/buck + /obj/item/storage/box/dragonsbreath + /obj/item/storage/box/holy +\ - /obj/item/storage/box/rubbershot + /obj/item/storage/box/slug + /obj/item/storage/box/stun +\ - /obj/item/storage/box/tranquilizer - /obj/item/ammo_box/magazine - typesof(/obj/item/ammo_box/magazine/internal) + var/list/new_products = list() + subtypesof(/obj/item/ammo_box) + /obj/item/storage/fancy/shell/rubbershot +\ + /obj/item/storage/fancy/shell/buck + /obj/item/storage/fancy/shell/dragonsbreath + /obj/item/storage/fancy/shell/holy +\ + /obj/item/storage/fancy/shell/rubbershot + /obj/item/storage/fancy/shell/slug + /obj/item/storage/fancy/shell/stun +\ + /obj/item/storage/fancy/shell/tranquilizer - /obj/item/ammo_box/magazine - typesof(/obj/item/ammo_box/magazine/internal) for(var/ammo_type in new_products) products[ammo_type] = 999 . = ..() @@ -48,9 +48,9 @@ /obj/item/gun/projectile/automatic/wt550 = 3, /obj/item/ammo_box/magazine/wt550m9 = 6, /obj/item/gun/projectile/shotgun/riot = 6, - /obj/item/storage/box/rubbershot = 6, - /obj/item/storage/box/beanbag = 4, - /obj/item/storage/box/tranquilizer = 4) + /obj/item/storage/fancy/shell/rubbershot = 6, + /obj/item/storage/fancy/shell/beanbag = 4, + /obj/item/storage/fancy/shell/tranquilizer = 4) /obj/machinery/economy/vending/nta/red name = "NT ERT Heavy Gear & Ammunition" @@ -63,9 +63,9 @@ /obj/item/gun/energy/immolator = 3, /obj/item/gun/energy/gun/nuclear = 3, /obj/item/gun/projectile/shotgun/automatic/combat = 3, - /obj/item/storage/box/slug = 4, - /obj/item/storage/box/buck = 4, - /obj/item/storage/box/dragonsbreath = 2, + /obj/item/storage/fancy/shell/slug = 4, + /obj/item/storage/fancy/shell/buck = 4, + /obj/item/storage/fancy/shell/dragonsbreath = 2, /obj/item/storage/lockbox/t4 = 3, /obj/item/grenade/smokebomb = 3, /obj/item/grenade/frag = 4) @@ -83,7 +83,7 @@ /obj/item/gun/projectile/automatic/pistol/enforcer = 6, /obj/item/ammo_box/magazine/enforcer = 12, /obj/item/gun/projectile/shotgun/riot = 1, - /obj/item/storage/box/rubbershot = 3) + /obj/item/storage/fancy/shell/rubbershot = 3) /obj/machinery/economy/vending/nta/yellow name = "NT ERT Death Wish Gear & Ammunition" @@ -173,55 +173,6 @@ icon_lightmask = "Cola_Machine_Red" slogan_list = list("Кола в космосе!") -/obj/machinery/economy/vending/suitdispenser/Initialize(mapload) - products += list(/obj/item/clothing/under/yellowgreen_skirt = 10, - /obj/item/clothing/under/black_skirt = 10, - /obj/item/clothing/under/aqua_skirt = 10, - /obj/item/clothing/under/blue_skirt = 10, - /obj/item/clothing/under/brown_skirt = 10, - /obj/item/clothing/under/darkblue_skirt = 10, - /obj/item/clothing/under/darkred_skirt = 10, - /obj/item/clothing/under/green_skirt = 10, - /obj/item/clothing/under/grey_skirt = 10, - /obj/item/clothing/under/lightblue_skirt = 10, - /obj/item/clothing/under/lightbrown_skirt = 10, - /obj/item/clothing/under/lightgreen_skirt = 10, - /obj/item/clothing/under/lightpurple_skirt = 10, - /obj/item/clothing/under/lightred_skirt = 10, - /obj/item/clothing/under/orange_skirt = 10, - /obj/item/clothing/under/pink_skirt = 10, - /obj/item/clothing/under/purple_skirt = 10, - /obj/item/clothing/under/red_skirt = 10, - /obj/item/clothing/under/white_skirt = 10, - /obj/item/clothing/under/yellow_skirt = 10, - /obj/item/clothing/under/rainbow_skirt = 1) - - contraband += list(/obj/item/clothing/under/prisoner_skirt = 1) - - prices += list(/obj/item/clothing/under/yellowgreen_skirt = 30, - /obj/item/clothing/under/aqua_skirt = 50, - /obj/item/clothing/under/black_skirt = 30, - /obj/item/clothing/under/blue_skirt = 50, - /obj/item/clothing/under/brown_skirt = 30, - /obj/item/clothing/under/darkblue_skirt = 50, - /obj/item/clothing/under/darkred_skirt = 50, - /obj/item/clothing/under/green_skirt = 50, - /obj/item/clothing/under/grey_skirt = 30, - /obj/item/clothing/under/lightblue_skirt = 30, - /obj/item/clothing/under/lightbrown_skirt = 30, - /obj/item/clothing/under/lightgreen_skirt = 50, - /obj/item/clothing/under/lightpurple_skirt = 50, - /obj/item/clothing/under/lightred_skirt = 50, - /obj/item/clothing/under/orange_skirt = 50, - /obj/item/clothing/under/pink_skirt = 50, - /obj/item/clothing/under/purple_skirt = 50, - /obj/item/clothing/under/red_skirt = 50, - /obj/item/clothing/under/white_skirt = 50, - /obj/item/clothing/under/yellow_skirt = 50, - /obj/item/clothing/under/prisoner_skirt = 175, - /obj/item/clothing/under/rainbow_skirt = 100) - . = ..() - /obj/machinery/economy/vending/suitdispenser/free prices = list() diff --git a/paradise.dme b/paradise.dme index cac4fce65eb1..5990a2124077 100644 --- a/paradise.dme +++ b/paradise.dme @@ -90,7 +90,6 @@ #include "code\__DEFINES\mecha_defines.dm" #include "code\__DEFINES\mecha_hides.dm" #include "code\__DEFINES\medal.dm" -#include "code\__DEFINES\milla.dm" #include "code\__DEFINES\misc_defines.dm" #include "code\__DEFINES\mob_defines.dm" #include "code\__DEFINES\mod.dm" @@ -112,6 +111,7 @@ #include "code\__DEFINES\revolution_defines.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\rolebans.dm" +#include "code\__DEFINES\rust.dm" #include "code\__DEFINES\rust_g.dm" #include "code\__DEFINES\shuttle_defines.dm" #include "code\__DEFINES\sight.dm" @@ -1020,6 +1020,7 @@ #include "code\game\objects\effects\effect_system\effects_smoke.dm" #include "code\game\objects\effects\effect_system\effects_sparks.dm" #include "code\game\objects\effects\effect_system\effects_water.dm" +#include "code\game\objects\effects\map_effects\mapmanip.dm" #include "code\game\objects\effects\spawners\airlock_spawner.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\decorative_spawners.dm" @@ -2881,6 +2882,7 @@ #include "code\modules\surgery\organs\robolimbs.dm" #include "code\modules\surgery\organs\skeleton_organs.dm" #include "code\modules\surgery\organs\vocal_cords.dm" +#include "code\modules\surgery\organs\organ_datums\battery_datum.dm" #include "code\modules\surgery\organs\organ_datums\heart_datum.dm" #include "code\modules\surgery\organs\organ_datums\lung_datum.dm" #include "code\modules\surgery\organs\organ_datums\organ_datum.dm" @@ -2944,6 +2946,7 @@ #include "code\modules\tgui\tgui_input\keycombo_input.dm" #include "code\modules\tgui\tgui_input\list_input.dm" #include "code\modules\tgui\tgui_input\number_input.dm" +#include "code\modules\tgui\tgui_input\ranked_list_input.dm" #include "code\modules\tgui\tgui_input\text_input.dm" #include "code\modules\tgui\tgui_panel\audio.dm" #include "code\modules\tgui\tgui_panel\telemetry.dm" diff --git a/milla/Cargo.lock b/rust/Cargo.lock similarity index 57% rename from milla/Cargo.lock rename to rust/Cargo.lock index eee0b6908eb6..a3c486a8d949 100644 --- a/milla/Cargo.lock +++ b/rust/Cargo.lock @@ -2,6 +2,31 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -17,16 +42,50 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c4b08ed8a30ff7320117c190eb4d73d47f0ac0c930ab853b8224cef7cd9a5e7" +[[package]] +name = "attribute-derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c124f12ade4e670107b132722d0ad1a5c9790bcbc1b265336369ea05626b4498" +dependencies = [ + "attribute-derive-macro", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "attribute-derive-macro" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b217a07446e0fb086f83401a98297e2d81492122f5874db5391bd270a185f88" +dependencies = [ + "collection_literals", + "interpolator", + "proc-macro-error", + "proc-macro-utils", + "proc-macro2", + "quote", + "quote-use", + "syn 2.0.60", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + [[package]] name = "bindgen" version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags", + "bitflags 2.5.0", "cexpr", "clang-sys", - "itertools", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -36,16 +95,38 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn", + "syn 2.0.60", "which", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +[[package]] +name = "builtins-proc-macro" +version = "0.0.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + [[package]] name = "byondapi" version = "0.4.7" @@ -67,7 +148,7 @@ source = "git+https://github.com/spacestation13/byondapi-rs.git#aa4addd95c33b666 dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.60", ] [[package]] @@ -82,6 +163,32 @@ dependencies = [ "walkdir", ] +[[package]] +name = "bytemuck" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "cexpr" version = "0.6.0" @@ -108,6 +215,72 @@ dependencies = [ "libloading", ] +[[package]] +name = "collection_literals" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186dce98367766de751c42c4f03970fc60fc012296e706ccbb9d5df9b6c1e271" + +[[package]] +name = "color_space" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52fdfaf2bee6357023bf7f95b15a8ef0b82759d2bce705cc45efcae9ae10f0ff" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-where" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "dmm-tools" +version = "0.1.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" +dependencies = [ + "ahash", + "bumpalo", + "bytemuck", + "dreammaker", + "either", + "indexmap 1.9.3", + "inflate", + "lodepng", + "ndarray", + "rand", +] + [[package]] name = "doxygen-rs" version = "0.4.2" @@ -117,6 +290,29 @@ dependencies = [ "phf", ] +[[package]] +name = "dreammaker" +version = "0.1.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" +dependencies = [ + "ahash", + "bitflags 1.3.2", + "builtins-proc-macro", + "color_space", + "derivative", + "get-size", + "get-size-derive", + "indexmap 1.9.3", + "interval-tree", + "lodepng", + "ordered-float", + "phf", + "serde", + "serde_derive", + "termcolor", + "toml", +] + [[package]] name = "either" version = "1.11.0" @@ -149,6 +345,42 @@ dependencies = [ "once_cell", ] +[[package]] +name = "flate2" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "get-size" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b61e2dab7eedce93a83ab3468b919873ff16bac5a3e704011ff836d22b2120" + +[[package]] +name = "get-size-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a1bcfb855c1f340d5913ab542e36f25a1c56f57de79022928297632435dec2" +dependencies = [ + "attribute-derive", + "quote", + "syn 2.0.60", +] + [[package]] name = "getrandom" version = "0.2.14" @@ -166,6 +398,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -187,6 +425,16 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.2.6" @@ -194,15 +442,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.5", ] +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +dependencies = [ + "adler32", +] + +[[package]] +name = "interpolator" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" + +[[package]] +name = "interval-tree" +version = "0.8.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" + [[package]] name = "inventory" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -212,6 +489,12 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + [[package]] name = "lazy_static" version = "1.4.0" @@ -246,12 +529,34 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "lodepng" +version = "3.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2dea7cda68e381418c985fd8f32a9c279a21ae8c715f2376adb20c27a0fad3" +dependencies = [ + "crc32fast", + "flate2", + "libc", + "rgb", +] + [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +[[package]] +name = "matrixmultiply" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "memchr" version = "2.7.2" @@ -259,23 +564,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] -name = "milla" -version = "1.0.0" +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "atomic_float", - "bitflags", - "byondapi", - "eyre", - "rand", - "scc", - "thread-priority", + "adler2", ] [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "ndarray" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "rawpointer", +] [[package]] name = "nom" @@ -287,6 +601,33 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "num_enum" version = "0.7.2" @@ -305,7 +646,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.60", ] [[package]] @@ -314,6 +655,15 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + [[package]] name = "phf" version = "0.11.2" @@ -344,7 +694,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn", + "syn 2.0.60", ] [[package]] @@ -369,7 +719,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.60", ] [[package]] @@ -381,6 +731,41 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f59e109e2f795a5070e69578c4dc101068139f74616778025ae1011d4cd41a8" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + [[package]] name = "proc-macro2" version = "1.0.81" @@ -399,6 +784,29 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "quote-use" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7b5abe3fe82fdeeb93f44d66a7b444dedf2e4827defb0a8e69c437b2de2ef94" +dependencies = [ + "quote", + "quote-use-macros", + "syn 2.0.60", +] + +[[package]] +name = "quote-use-macros" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ea44c7e20f16017a76a245bb42188517e13d16dcb1aa18044bc406cdc3f4af" +dependencies = [ + "derive-where", + "proc-macro2", + "quote", + "syn 2.0.60", +] + [[package]] name = "rand" version = "0.8.5" @@ -429,11 +837,17 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -458,6 +872,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" +dependencies = [ + "bytemuck", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -479,19 +902,46 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", "windows-sys", ] +[[package]] +name = "rustlibs" +version = "1.0.0" +dependencies = [ + "atomic_float", + "bitflags 2.5.0", + "byondapi", + "diff", + "dmm-tools", + "eyre", + "fxhash", + "itertools 0.10.5", + "rand", + "regex", + "scc", + "serde", + "serde_json", + "thread-priority", + "walkdir", +] + [[package]] name = "rustversion" version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + [[package]] name = "same-file" version = "1.0.6" @@ -522,6 +972,38 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + [[package]] name = "shlex" version = "1.3.0" @@ -534,6 +1016,23 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.60" @@ -545,13 +1044,22 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thread-priority" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d3b04d33c9633b8662b167b847c7ab521f83d1ae20f2321b65b5b925e532e36" dependencies = [ - "bitflags", + "bitflags 2.5.0", "cfg-if", "libc", "log", @@ -559,6 +1067,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml_datetime" version = "0.6.5" @@ -571,7 +1088,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap", + "indexmap 2.2.6", "toml_datetime", "winnow", ] @@ -582,6 +1099,12 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "walkdir" version = "2.5.0" @@ -722,3 +1245,23 @@ checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 000000000000..06e948f3bec0 --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "rustlibs" +version = "1.0.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib"] + +[dependencies] +atomic_float = "1.0.0" +bitflags = "2.5.0" +byondapi = { git = "https://github.com/spacestation13/byondapi-rs.git", version = "0.4.7" } +eyre = "0.6.12" +rand = { version = "0.8.5", features = ["small_rng"] } +scc = "2.1.1" +thread-priority = "1.1.0" + +# spacemandmm, also used by strongmandmm +dmmtools = { git = "https://github.com/SpaceManiac/SpacemanDMM", rev = "6c5a751516ae0e8add4b2aa4388a1e84e96e7082", package = "dmm-tools" } +# diffs between two strings/texts/files, used in tests +diff = "0.1" +# general utility lib for iterator operations +itertools = "0.10.5" +# fast hashmap +fxhash = "0.2.1" +# interface for serialization +serde = { version = "1.0", features = ["derive"] } +# json implementation for serde +serde_json = { version = "1.0" } +# utility function for walking through a dir recursively +walkdir = "2.5.0" +# regex +regex = "1.10.5" diff --git a/rust/src/lib.rs b/rust/src/lib.rs new file mode 100644 index 000000000000..66ed4b0b1bbb --- /dev/null +++ b/rust/src/lib.rs @@ -0,0 +1,3 @@ +mod logging; +mod mapmanip; +mod milla; diff --git a/rust/src/logging/mod.rs b/rust/src/logging/mod.rs new file mode 100644 index 000000000000..fc5312ae5941 --- /dev/null +++ b/rust/src/logging/mod.rs @@ -0,0 +1,24 @@ +/// Call stack trace dm method with message. +pub(crate) fn dm_call_stack_trace(msg: String) { + let msg = byondapi::value::ByondValue::try_from(msg).unwrap(); + // this is really ugly, cause we want to get id/ref to a proc name string + // that is already allocated, and don't want to allocate a new string entirely + byondapi::global_call::call_global_id( + { + static STRING_ID: std::sync::OnceLock = std::sync::OnceLock::new(); + *STRING_ID.get_or_init(|| byondapi::byond_string::str_id_of("_stack_trace").unwrap()) + }, + &[msg], + ) + .unwrap(); +} + +/// Panic handler, called on unhandled errors. +/// Writes panic info to a text file, and calls dm stack trace proc as well. +pub(crate) fn setup_panic_handler() { + std::panic::set_hook(Box::new(|info| { + let msg = format!("Panic \n {:#?}", info); + let _ = std::fs::write("./rustlibs_panic.txt", msg.clone()); + dm_call_stack_trace(msg); + })) +} diff --git a/rust/src/mapmanip/.gitignore b/rust/src/mapmanip/.gitignore new file mode 100644 index 000000000000..99912a867148 --- /dev/null +++ b/rust/src/mapmanip/.gitignore @@ -0,0 +1 @@ +test-out/* diff --git a/rust/src/mapmanip/core/map_to_string.rs b/rust/src/mapmanip/core/map_to_string.rs new file mode 100644 index 000000000000..f931d97ac206 --- /dev/null +++ b/rust/src/mapmanip/core/map_to_string.rs @@ -0,0 +1,7 @@ +/// Turns spacemandmm map object to string. +pub fn map_to_string(map: &dmmtools::dmm::Map) -> eyre::Result { + let mut v = vec![]; + map.to_writer(&mut v)?; + let s = String::from_utf8(v)?; + Ok(s) +} diff --git a/rust/src/mapmanip/core/mod.rs b/rust/src/mapmanip/core/mod.rs new file mode 100644 index 000000000000..7aa0dd994c7b --- /dev/null +++ b/rust/src/mapmanip/core/mod.rs @@ -0,0 +1,147 @@ +pub mod to_dict_map; +pub use to_dict_map::to_dict_map; +pub mod to_grid_map; +pub use to_grid_map::to_grid_map; + +pub mod map_to_string; +pub use map_to_string::map_to_string; + +use dmmtools::dmm; +use dmmtools::dmm::Coord3; + +/// A representation of a single tile on a map that may or may not be mapped to an existing key. +#[derive(Clone, Debug, Default)] +pub struct Tile { + /// A key temporarily assigned to the tile until an appropriate new/existing + /// key can be assigned to it, or if it is already being used by a different + /// prefab list in the file. + pub key_suggestion: dmm::Key, + /// The prefabs on the tile. + pub prefabs: Vec, +} + +impl Tile { + /// Return the first /area that exists in the prefab. + pub fn get_area(&self) -> Option<&dmm::Prefab> { + self.prefabs + .iter() + .find(|prefab| prefab.path.starts_with("/area/")) + } + + /// Remove and return the first /area that exists in the prefab. + pub fn remove_area(&mut self) -> Option { + let area = self.get_area().cloned(); + if area.is_some() { + self.prefabs + .retain(|prefab| !prefab.path.starts_with("/area/")) + } + area + } + + /// Return the first /turf that exists in the prefab. + pub fn get_turf(&self) -> Option<&dmm::Prefab> { + self.prefabs + .iter() + .find(|prefab| prefab.path.starts_with("/turf/")) + } + + /// Remove and return the first /turf that exists in the prefab. + pub fn remove_turf(&mut self) -> Option { + let turf = self.get_turf().cloned(); + if turf.is_some() { + self.prefabs + .retain(|prefab| !prefab.path.starts_with("/turf/")) + } + turf + } +} + +/// Thin abstraction over a flat vec, to provide a simple hashmap-like interface, +/// and to translate between 3D dmm coords (start at 1), and 1D flat vec coords (start at 0). +/// The translation is so that it looks better in logs/errors/etc, +/// where shown coords would correspond to coords seen in game or in strongdmm. +#[derive(Clone, Debug)] +pub struct TileGrid { + pub size: Coord3, + pub grid: Vec, +} + +impl TileGrid { + pub fn new(size_x: i32, size_y: i32, size_z: i32) -> TileGrid { + Self { + size: Coord3::new(size_x, size_y, size_z), + grid: vec![Tile::default(); (size_x * size_y * size_z) as usize], + } + } + + pub fn len(&self) -> usize { + self.grid.len() + } + + fn coord_to_index(&self, coord: &Coord3) -> usize { + let coord = Coord3::new(coord.x - 1, coord.y - 1, coord.z - 1); + ((coord.x) + (coord.y * self.size.x) + (coord.z * self.size.x * self.size.y)) as usize + } + + fn index_to_coord(&self, index: usize) -> Coord3 { + let index = index as i32; + Coord3::new( + (index % self.size.x) + 1, + ((index / self.size.x) % self.size.y) + 1, + (index / (self.size.x * self.size.y)) + 1, + ) + } + + pub fn get_mut(&mut self, coord: &Coord3) -> Option<&mut Tile> { + let index = self.coord_to_index(coord); + self.grid.get_mut(index) + } + + pub fn get(&self, coord: &Coord3) -> Option<&Tile> { + self.grid.get(self.coord_to_index(coord)) + } + + pub fn insert(&mut self, coord: &Coord3, tile: Tile) { + *self.get_mut(coord).unwrap() = tile; + } + + pub fn iter(&self) -> impl Iterator { + self.grid + .iter() + .enumerate() + .map(|(i, t)| (self.index_to_coord(i), t)) + } + + pub fn keys(&self) -> impl Iterator + '_ { + self.grid + .iter() + .enumerate() + .map(|(i, _t)| self.index_to_coord(i)) + } + + pub fn values(&self) -> impl Iterator { + self.grid.iter() + } + + pub fn values_mut(&mut self) -> impl Iterator { + self.grid.iter_mut() + } +} + +/// This is analogous to `dmmtools::dmm::Map`, but instead of being structured like dmm maps are, +/// where they have a dictionary of keys-to-prefabs and a separate grid of keys, +/// this is only a direct coord-to-prefab grid. +/// It is not memory efficient, but it allows for much greater flexibility of manipulation. +#[derive(Clone, Debug)] +pub struct GridMap { + /// + pub size: dmm::Coord3, + /// + pub grid: crate::mapmanip::core::TileGrid, +} + +impl GridMap { + pub fn from_file(path: &std::path::Path) -> Option { + Some(to_grid_map(&dmm::Map::from_file(&path).ok()?)) + } +} diff --git a/rust/src/mapmanip/core/to_dict_map.rs b/rust/src/mapmanip/core/to_dict_map.rs new file mode 100644 index 000000000000..6920e6ab6db6 --- /dev/null +++ b/rust/src/mapmanip/core/to_dict_map.rs @@ -0,0 +1,71 @@ +use crate::mapmanip::GridMap; +use dmmtools::dmm::{self, Coord3}; +use eyre::ContextCompat; +use fxhash::FxHashMap; +use std::collections::BTreeSet; + +fn coord3_to_index(coord: dmm::Coord3, size: dmm::Coord3) -> (usize, usize, usize) { + ( + coord.z as usize - 1, + (size.y - coord.y) as usize, + coord.x as usize - 1, + ) +} + +fn int_to_key(i: u16) -> dmm::Key { + // Unsafe is used here to convert basic int to key type, as `dmm::Key` interior var is private. + // This is "safe", as key will always be `u16` to maintain compability with the `dmm` format. + // Could be at some point be made safe when the key type is made public in the `dmm_tools` crate. + unsafe { std::mem::transmute::(i) } +} + +pub fn to_dict_map(grid_map: &GridMap) -> eyre::Result { + let mut dict_map = dmm::Map::new( + grid_map.size.x as usize, + grid_map.size.y as usize, + grid_map.size.z as usize, + "".to_string(), + "".to_string(), + ); + dict_map.dictionary.clear(); + + let mut used_dict_keys = BTreeSet::::new(); + + let mut dictionary_reverse = FxHashMap::, dmm::Key>::default(); + + for tile in grid_map.grid.values() { + if !dictionary_reverse.contains_key(&tile.prefabs) { + if used_dict_keys.contains(&tile.key_suggestion) { + let next_free_key = (0..65534) + .map(int_to_key) + .filter(|k| !used_dict_keys.contains(k)) + .next() + .wrap_err(format!("ran out of free keys"))?; + dictionary_reverse.insert(tile.prefabs.clone(), next_free_key); + used_dict_keys.insert(next_free_key); + } else { + dictionary_reverse.insert(tile.prefabs.clone(), tile.key_suggestion.clone()); + used_dict_keys.insert(tile.key_suggestion.clone()); + } + } + } + + for x in 1..(grid_map.size.x + 1) { + for y in 1..(grid_map.size.y + 1) { + for z in 1..(grid_map.size.z + 1) { + let coord = Coord3::new(x, y, z); + if let Some(tile) = grid_map.grid.get(&coord) { + let key = dictionary_reverse.get(&tile.prefabs).unwrap().clone(); + dict_map.dictionary.insert(key, tile.prefabs.clone()); + dict_map.grid[coord3_to_index(coord, grid_map.size)] = key; + } else { + eyre::bail!("to_dict_map fail; grid map has no coord: {coord:?}"); + } + } + } + } + + dict_map.adjust_key_length(); + + Ok(dict_map) +} diff --git a/rust/src/mapmanip/core/to_grid_map.rs b/rust/src/mapmanip/core/to_grid_map.rs new file mode 100644 index 000000000000..ec8c703f8d82 --- /dev/null +++ b/rust/src/mapmanip/core/to_grid_map.rs @@ -0,0 +1,37 @@ +use super::Tile; +use crate::mapmanip::core::GridMap; +use dmmtools::dmm::{self, Coord3}; +use std::ops::Index; + +fn tuple_to_size(xyz: (usize, usize, usize)) -> Coord3 { + Coord3::new(xyz.0 as i32, xyz.1 as i32, xyz.2 as i32) +} + +pub fn to_grid_map(dict_map: &dmm::Map) -> GridMap { + let mut grid_map = GridMap { + size: tuple_to_size(dict_map.dim_xyz()), + grid: crate::mapmanip::core::TileGrid::new( + dict_map.dim_xyz().0 as i32, + dict_map.dim_xyz().1 as i32, + dict_map.dim_xyz().2 as i32, + ), + }; + + for x in 1..grid_map.size.x + 1 { + for y in 1..grid_map.size.y + 1 { + for z in 1..grid_map.size.z + 1 { + let coord = dmm::Coord3::new(x, y, z); + let key = dict_map.index(coord); + let prefabs = dict_map.dictionary[key].clone(); + let tile = Tile { + key_suggestion: *key, + prefabs, + }; + let coord = dmm::Coord3::new(coord.x, coord.y, coord.z); + grid_map.grid.insert(&coord, tile); + } + } + } + + grid_map +} diff --git a/rust/src/mapmanip/mod.rs b/rust/src/mapmanip/mod.rs new file mode 100644 index 000000000000..70bc79b8cf34 --- /dev/null +++ b/rust/src/mapmanip/mod.rs @@ -0,0 +1,282 @@ +use core::map_to_string; +use core::to_grid_map; +use core::GridMap; + +use byondapi::byond_string; +use byondapi::value::ByondValue; +use eyre::Context; +use eyre::ContextCompat; +use itertools::Itertools; +use rand::prelude::IteratorRandom; +use serde::{Deserialize, Serialize}; +use tools::extract_submap; +use tools::insert_submap; + +use crate::logging::dm_call_stack_trace; +use crate::logging::setup_panic_handler; + +mod core; +mod tools; + +#[cfg(test)] +mod test; + +/// +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "type")] +pub enum MapManipulation { + SubmapExtractInsert { + submap_size_x: i64, + submap_size_y: i64, + submap_size_z: i64, + submaps_dmm: String, + marker_extract: String, + marker_insert: String, + submaps_can_repeat: bool, + }, +} + +pub fn mapmanip_config_parse(config_path: &std::path::Path) -> eyre::Result> { + // read + let config = std::fs::read_to_string(config_path) + .wrap_err(format!("mapmanip config read err: {config_path:?}"))?; + + // strip comments + // as the jsonc format is "json with comments" + // but serde_json lib can only handle actual json + let re = regex::Regex::new(r"\/\/.*")?; + let config = re.replace_all(&config, ""); + + // parse + let config = serde_json::from_str::>(&config) + .wrap_err(format!("mapmanip config json parse err: {config_path:?}"))?; + + Ok(config) +} + +pub fn mapmanip( + map_dir_path: &std::path::Path, + map: dmmtools::dmm::Map, + config: &Vec, +) -> eyre::Result { + // convert to gridmap + let mut map = to_grid_map(&map); + + // go through all the manipulations in `.jsonc` config for this `.dmm` + for (n, manipulation) in config.iter().enumerate() { + // readable index for errors + let n = n + 1; + let config_len = config.len(); + + match manipulation { + MapManipulation::SubmapExtractInsert { + submap_size_x, + submap_size_y, + submap_size_z, + submaps_dmm, + marker_extract, + marker_insert, + submaps_can_repeat, + } => mapmanip_submap_extract_insert( + map_dir_path, + &mut map, + *submap_size_x, + *submap_size_y, + *submap_size_z, + submaps_dmm, + marker_extract, + marker_insert, + *submaps_can_repeat, + ) + .wrap_err(format!( + "submap extract insert fail; + submaps path: {submaps_dmm:?}; + markers: {marker_extract}, {marker_insert};" + )), + } + .wrap_err(format!("mapmanip fail; manip n is: {n}/{config_len}"))?; + } + + Ok(core::to_dict_map(&map).wrap_err("failed on `to_dict_map`")?) +} + +fn mapmanip_submap_extract_insert( + map_dir_path: &std::path::Path, + map: &mut GridMap, + submap_size_x: i64, + submap_size_y: i64, + submap_size_z: i64, + submaps_dmm: &String, + marker_extract: &String, + marker_insert: &String, + submaps_can_repeat: bool, +) -> eyre::Result<()> { + let submap_size = dmmtools::dmm::Coord3::new( + submap_size_x.try_into().wrap_err("invalid submap_size_x")?, + submap_size_y.try_into().wrap_err("invalid submap_size_y")?, + submap_size_z.try_into().wrap_err("invalid submap_size_z")?, + ); + + // get the submaps map + let submaps_dmm: std::path::PathBuf = submaps_dmm.try_into().wrap_err("invalid path")?; + let submaps_dmm = map_dir_path.join(submaps_dmm); + let submaps_map = GridMap::from_file(&submaps_dmm) + .wrap_err(format!("can't read and parse submap dmm: {submaps_dmm:?}"))?; + + // find all the submap extract markers + let mut marker_extract_coords = vec![]; + for (coord, tile) in submaps_map.grid.iter() { + if tile.prefabs.iter().any(|p| p.path == *marker_extract) { + marker_extract_coords.push(coord); + } + } + + // find all the insert markers + let mut marker_insert_coords = vec![]; + for (coord, tile) in map.grid.iter() { + if tile.prefabs.iter().any(|p| p.path == *marker_insert) { + marker_insert_coords.push(coord); + } + } + + // do all the extracts-inserts + for insert_coord in marker_insert_coords { + // pick a submap + let (extract_coord_index, extract_coord) = marker_extract_coords + .iter() + .cloned() + .enumerate() + .choose(&mut rand::thread_rng()) + .wrap_err(format!( + "can't pick a submap to extract; no more extract markers in the submaps dmm; marker type: {marker_extract}" + ))?; + + // if submaps should not be repeating, remove this one from the list + if !submaps_can_repeat { + marker_extract_coords.remove(extract_coord_index); + } + + // extract that submap from the submap dmm + let extracted = extract_submap(&submaps_map, extract_coord, submap_size) + .wrap_err(format!("submap extraction failed; from {extract_coord}"))?; + + // and insert the submap into the manipulated map + insert_submap(&extracted, insert_coord, map) + .wrap_err(format!("submap insertion failed; at {insert_coord}"))?; + } + + Ok(()) +} + +/// +#[byondapi::bind] +fn mapmanip_read_dmm_file(path: ByondValue) { + internal_mapmanip_read_dmm_file(path) +} + +pub(crate) fn internal_mapmanip_read_dmm_file(path: ByondValue) -> eyre::Result { + setup_panic_handler(); + + let path: String = path + .get_string() + .wrap_err(format!("path arg is not a string: {:?}", path))?; + let path: std::path::PathBuf = path + .clone() + .try_into() + .wrap_err(format!("path arg is not a valid file path: {}", path))?; + + // just return null if path is bad for whatever reason + if !path.is_file() || !path.exists() { + return Ok(ByondValue::null()); + } + + // read file and parse with spacemandmm + let mut dmm = dmmtools::dmm::Map::from_file(&path).wrap_err(format!( + "spacemandmm parsing error; dmm file path: {path:?}; see error from spacemandmm below for more information" + ))?; + + // do mapmanip if defined for this dmm + let path_mapmanip_config = { + let mut p = path.clone(); + p.set_extension("jsonc"); + p + }; + if path_mapmanip_config.exists() { + // get path for dir of this dmm + let path_dir = path.parent().wrap_err("no parent")?; + // parse config + let config = crate::mapmanip::mapmanip_config_parse(&path_mapmanip_config).wrap_err( + format!("config parse fail; path: {:?}", path_mapmanip_config), + )?; + // do actual map manipulation + dmm = crate::mapmanip::mapmanip(path_dir, dmm, &config) + .wrap_err(format!("mapmanip fail; dmm file path: {path:?}"))?; + } + + // convert the map back to a string + let dmm = crate::mapmanip::core::map_to_string(&dmm).wrap_err(format!( + "error in converting map back to string; dmm file path: {path:?}" + ))?; + + // and return it + Ok(ByondValue::new_str(dmm)?) +} + +/// +#[no_mangle] +pub unsafe extern "C" fn read_dmm_file_ffi( + argc: byondapi::sys::u4c, + argv: *mut byondapi::value::ByondValue, +) -> byondapi::value::ByondValue { + setup_panic_handler(); + let args = unsafe { ::byondapi::parse_args(argc, argv) }; + match crate::mapmanip::internal_mapmanip_read_dmm_file( + args.get(0).map(ByondValue::clone).unwrap_or_default(), + ) { + Ok(val) => val, + Err(info) => { + dm_call_stack_trace(format!("Rustlibs ERROR read_dmm_file_ffi() \n {info:#?}")); + ByondValue::null() + } + } +} + +/// To be used by the `tools/rustlib_tools/mapmanip.ps1` script. +/// Not to be called from the game server, so bad error-handling is fine. +/// This should run map manipulations on every `.dmm` map that has a `.jsonc` config file, +/// and write it to a `.mapmanipout.dmm` file in the same location. +#[no_mangle] +pub unsafe extern "C" fn all_mapmanip_configs_execute_ffi() { + let mapmanip_configs = walkdir::WalkDir::new("./_maps") + .into_iter() + .map(|d| d.unwrap().path().to_owned()) + .filter(|p| p.extension().is_some()) + .filter(|p| p.extension().unwrap() == "jsonc") + .collect_vec(); + assert_ne!(mapmanip_configs.len(), 0); + + for config_path in mapmanip_configs { + let dmm_path = { + let mut p = config_path.clone(); + p.set_extension("dmm"); + p + }; + + let path_dir: &std::path::Path = dmm_path.parent().unwrap(); + + let mut dmm = dmmtools::dmm::Map::from_file(&dmm_path).unwrap(); + + let config = crate::mapmanip::mapmanip_config_parse(&config_path).unwrap(); + + dmm = crate::mapmanip::mapmanip(path_dir, dmm, &config).unwrap(); + + let dmm = map_to_string(&dmm).unwrap(); + + let dmm_out_path = { + let mut p = dmm_path.clone(); + p.set_extension("mapmanipout.dmm"); + p + }; + std::fs::write(dmm_out_path, dmm).unwrap(); + } +} diff --git a/rust/src/mapmanip/test-in/_tiny_test_map.dmm b/rust/src/mapmanip/test-in/_tiny_test_map.dmm new file mode 100644 index 000000000000..48ad3798f2d9 --- /dev/null +++ b/rust/src/mapmanip/test-in/_tiny_test_map.dmm @@ -0,0 +1,359 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/marble, +/area/space) +"b" = ( +/obj/random/mre, +/turf/simulated/floor/shuttle, +/area/space) +"f" = ( +/obj/random/energy, +/turf/simulated/wall, +/area/space) +"j" = ( +/obj/random/energy_antag, +/turf/simulated/wall, +/area/space) +"k" = ( +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"n" = ( +/obj/random/mre, +/turf/simulated/floor/marble, +/area/space) +"o" = ( +/obj/random/mre, +/turf/simulated/wall, +/area/space) +"p" = ( +/obj/random/handgun, +/turf/simulated/floor/marble, +/area/space) +"q" = ( +/obj/random/action_figure, +/turf/simulated/floor/shuttle, +/area/space) +"r" = ( +/obj/random/action_figure, +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"s" = ( +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"u" = ( +/obj/random/handgun, +/turf/simulated/wall, +/area/space) +"y" = ( +/obj/random/glowstick, +/turf/simulated/floor/marble, +/area/space) +"z" = ( +/obj/random/firstaid, +/turf/simulated/floor/marble, +/area/space) +"B" = ( +/turf/simulated/floor/lino/diamond, +/area/space) +"E" = ( +/turf/simulated/wall, +/area/space) +"F" = ( +/turf/simulated/floor/shuttle, +/area/space) +"G" = ( +/obj/random/finances, +/turf/simulated/wall, +/area/space) +"H" = ( +/obj/random/gift, +/turf/simulated/floor/marble, +/area/space) +"J" = ( +/obj/random/chameleon, +/turf/simulated/floor/shuttle, +/area/space) +"Q" = ( +/obj/aiming_overlay, +/turf/simulated/floor/marble, +/area/space) +"S" = ( +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"U" = ( +/obj/random/mre, +/turf/simulated/floor/lino/diamond, +/area/space) +"W" = ( +/obj/random/chameleon, +/turf/simulated/floor/lino/diamond, +/area/space) +"Y" = ( +/obj/random/action_figure, +/turf/simulated/floor/marble, +/area/space) +"Z" = ( +/obj/random/chameleon, +/turf/simulated/floor/marble, +/area/space) + +(1,1,1) = {" +E +j +j +E +E +E +E +E +E +E +E +E +G +G +a +"} +(2,1,1) = {" +f +B +B +B +B +B +B +B +B +B +B +B +B +B +z +"} +(3,1,1) = {" +f +B +B +B +B +Q +a +a +a +a +a +a +a +B +z +"} +(4,1,1) = {" +E +B +B +a +a +Q +B +B +B +B +B +B +B +B +a +"} +(5,1,1) = {" +E +B +s +Y +B +S +B +B +B +B +B +s +B +F +a +"} +(6,1,1) = {" +E +s +s +Y +s +S +s +B +B +B +B +s +B +F +a +"} +(7,1,1) = {" +E +B +B +a +B +r +s +k +k +B +B +s +B +F +a +"} +(8,1,1) = {" +E +W +a +a +B +S +B +B +k +k +B +s +F +F +a +"} +(9,1,1) = {" +o +W +n +U +U +S +U +U +U +s +k +U +b +U +n +"} +(10,1,1) = {" +E +W +Z +B +B +B +B +B +B +B +k +B +F +B +a +"} +(11,1,1) = {" +E +B +Z +W +B +B +B +B +B +B +q +F +F +B +a +"} +(12,1,1) = {" +E +B +B +W +W +B +B +F +F +F +F +s +B +B +a +"} +(13,1,1) = {" +u +B +B +B +B +J +J +J +B +B +B +s +B +B +H +"} +(14,1,1) = {" +u +B +B +B +F +F +B +W +W +B +B +B +s +B +H +"} +(15,1,1) = {" +a +p +p +a +a +a +a +a +a +a +a +a +y +y +a +"} diff --git a/rust/src/mapmanip/test-in/extracted.dmm b/rust/src/mapmanip/test-in/extracted.dmm new file mode 100644 index 000000000000..4df41ac838ea --- /dev/null +++ b/rust/src/mapmanip/test-in/extracted.dmm @@ -0,0 +1,115 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/lino/diamond, +/area/space) +"b" = ( +/obj/random/action_figure, +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"k" = ( +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"p" = ( +/turf/simulated/floor/marble, +/area/space) +"u" = ( +/obj/aiming_overlay, +/turf/simulated/floor/marble, +/area/space) +"G" = ( +/obj/random/mre, +/turf/simulated/floor/lino/diamond, +/area/space) +"H" = ( +/obj/random/chameleon, +/turf/simulated/floor/shuttle, +/area/space) +"L" = ( +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"N" = ( +/turf/simulated/floor/shuttle, +/area/space) +"R" = ( +/obj/random/chameleon, +/turf/simulated/floor/lino/diamond, +/area/space) +"T" = ( +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) + +(1,1,1) = {" +p +u +a +a +a +"} +(2,1,1) = {" +a +T +a +a +a +"} +(3,1,1) = {" +k +T +k +a +a +"} +(4,1,1) = {" +a +b +k +L +L +"} +(5,1,1) = {" +a +T +a +a +L +"} +(6,1,1) = {" +G +T +G +G +G +"} +(7,1,1) = {" +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +"} +(9,1,1) = {" +R +a +a +N +N +"} +(10,1,1) = {" +a +H +H +H +a +"} diff --git a/rust/src/mapmanip/test-in/inserted.dmm b/rust/src/mapmanip/test-in/inserted.dmm new file mode 100644 index 000000000000..dad09b97a864 --- /dev/null +++ b/rust/src/mapmanip/test-in/inserted.dmm @@ -0,0 +1,355 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/marble, +/area/space) +"b" = ( +/obj/random/mre, +/turf/simulated/floor/shuttle, +/area/space) +"f" = ( +/obj/random/energy, +/turf/simulated/wall, +/area/space) +"j" = ( +/obj/random/energy_antag, +/turf/simulated/wall, +/area/space) +"k" = ( +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"n" = ( +/obj/random/mre, +/turf/simulated/floor/marble, +/area/space) +"o" = ( +/obj/random/mre, +/turf/simulated/wall, +/area/space) +"p" = ( +/obj/random/handgun, +/turf/simulated/floor/marble, +/area/space) +"r" = ( +/obj/random/action_figure, +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"s" = ( +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"u" = ( +/obj/random/handgun, +/turf/simulated/wall, +/area/space) +"y" = ( +/obj/random/glowstick, +/turf/simulated/floor/marble, +/area/space) +"z" = ( +/obj/random/firstaid, +/turf/simulated/floor/marble, +/area/space) +"B" = ( +/turf/simulated/floor/lino/diamond, +/area/space) +"E" = ( +/turf/simulated/wall, +/area/space) +"F" = ( +/turf/simulated/floor/shuttle, +/area/space) +"G" = ( +/obj/random/finances, +/turf/simulated/wall, +/area/space) +"H" = ( +/obj/random/gift, +/turf/simulated/floor/marble, +/area/space) +"J" = ( +/obj/random/chameleon, +/turf/simulated/floor/shuttle, +/area/space) +"Q" = ( +/obj/aiming_overlay, +/turf/simulated/floor/marble, +/area/space) +"S" = ( +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"U" = ( +/obj/random/mre, +/turf/simulated/floor/lino/diamond, +/area/space) +"W" = ( +/obj/random/chameleon, +/turf/simulated/floor/lino/diamond, +/area/space) +"Y" = ( +/obj/random/action_figure, +/turf/simulated/floor/marble, +/area/space) +"Z" = ( +/obj/random/chameleon, +/turf/simulated/floor/marble, +/area/space) + +(1,1,1) = {" +E +j +j +E +E +E +E +E +E +E +E +E +G +G +a +"} +(2,1,1) = {" +f +B +B +B +B +B +B +B +B +B +B +B +B +B +z +"} +(3,1,1) = {" +f +B +B +B +B +Q +a +a +a +a +a +a +a +B +z +"} +(4,1,1) = {" +E +B +B +a +a +Q +B +B +B +B +B +B +B +B +a +"} +(5,1,1) = {" +E +B +s +Y +B +S +B +B +B +B +B +s +B +F +a +"} +(6,1,1) = {" +E +s +s +Y +s +S +s +a +Q +B +B +B +B +F +a +"} +(7,1,1) = {" +E +B +B +a +B +r +s +B +S +B +B +B +B +F +a +"} +(8,1,1) = {" +E +W +a +a +B +S +B +s +S +s +B +B +F +F +a +"} +(9,1,1) = {" +o +W +n +U +U +S +U +B +r +s +k +k +b +U +n +"} +(10,1,1) = {" +E +W +Z +B +B +B +B +B +S +B +B +k +F +B +a +"} +(11,1,1) = {" +E +B +Z +W +B +B +B +U +S +U +U +U +F +B +a +"} +(12,1,1) = {" +E +B +B +W +W +B +B +B +B +B +B +B +B +B +a +"} +(13,1,1) = {" +u +B +B +B +B +J +J +B +B +B +B +B +B +B +H +"} +(14,1,1) = {" +u +B +B +B +F +F +B +W +B +B +F +F +s +B +H +"} +(15,1,1) = {" +a +p +p +a +a +a +a +B +J +J +J +B +y +y +a +"} diff --git a/rust/src/mapmanip/test.rs b/rust/src/mapmanip/test.rs new file mode 100644 index 000000000000..5f1076d913ab --- /dev/null +++ b/rust/src/mapmanip/test.rs @@ -0,0 +1,163 @@ +use dmmtools::dmm::{self, Coord3}; +use itertools::Itertools; + +use super::all_mapmanip_configs_execute_ffi; + +fn print_diff(left: &str, right: &str) { + for (i, diff) in diff::lines(&left, &right).iter().enumerate() { + match diff { + diff::Result::Left(l) => println!("{} diff - : {}", i, l), + diff::Result::Both(l, r) => { + assert_eq!(l, r); + } + diff::Result::Right(r) => println!("{} diff + : {}", i, r), + } + } +} + +fn all_test_dmm() -> Vec { + std::fs::read_dir("src/mapmanip/test-in") + .unwrap() + .map(|r| r.unwrap().path()) + .filter(|p| p.extension().unwrap() == "dmm") + .sorted() + .collect_vec() +} + +#[test] +fn to_grid_and_back() { + for path in all_test_dmm() { + println!("path: {}", path.display()); + + let dict_map_original = dmmtools::dmm::Map::from_file(&path).unwrap(); + let grid_map = crate::mapmanip::core::to_grid_map(&dict_map_original); + let dict_map_again = crate::mapmanip::core::to_dict_map(&grid_map).unwrap(); + let map_str_original = crate::mapmanip::core::map_to_string(&dict_map_original).unwrap(); + let map_str_from_grid = crate::mapmanip::core::map_to_string(&dict_map_again).unwrap(); + + dict_map_again + .to_file(&std::path::Path::new("src/mapmanip/test-out").join(path.file_name().unwrap())) + .unwrap(); + + print_diff(&map_str_original, &map_str_from_grid); + + if map_str_original != map_str_from_grid { + assert!(false); + } + } +} + +#[test] +fn extract() { + let path_src = std::path::Path::new("src/mapmanip/test-in/_tiny_test_map.dmm"); + let path_xtr = std::path::Path::new("src/mapmanip/test-in/extracted.dmm"); + let path_xtr_out = std::path::Path::new("src/mapmanip/test-out/extracted_out.dmm"); + + let dict_map_src = dmmtools::dmm::Map::from_file(&path_src).unwrap(); + let dict_map_xtr_expected = dmmtools::dmm::Map::from_file(&path_xtr).unwrap(); + + let grid_map_src = crate::mapmanip::core::to_grid_map(&dict_map_src); + let grid_map_xtr = crate::mapmanip::tools::extract_submap( + &grid_map_src, + Coord3::new(4, 7, 1), + Coord3::new(10, 5, 1), + ) + .unwrap(); + let grid_map_xtr_expected = crate::mapmanip::core::to_grid_map(&dict_map_xtr_expected); + + let dict_map_xtr = crate::mapmanip::core::to_dict_map(&grid_map_xtr).unwrap(); + dict_map_xtr.to_file(path_xtr_out).unwrap(); + + assert_eq!( + grid_map_xtr_expected.grid.keys().collect::>(), + grid_map_xtr.grid.keys().collect::>(), + ); + + for key in grid_map_xtr_expected.grid.keys() { + let tile_xtr_expected = grid_map_xtr_expected.grid.get(&key).unwrap(); + let tile_xtr = grid_map_xtr.grid.get(&key).unwrap(); + assert_eq!(tile_xtr_expected.prefabs, tile_xtr.prefabs); + } +} + +#[test] +fn insert() { + let path_xtr = std::path::Path::new("src/mapmanip/test-in/extracted.dmm"); + let path_dst = std::path::Path::new("src/mapmanip/test-in/_tiny_test_map.dmm"); + let path_dst_expected = std::path::Path::new("src/mapmanip/test-in/inserted.dmm"); + + let grid_map_dst_expected = + crate::mapmanip::core::GridMap::from_file(&path_dst_expected).unwrap(); + let grid_map_xtr = crate::mapmanip::core::GridMap::from_file(&path_xtr).unwrap(); + let mut grid_map_dst = crate::mapmanip::core::GridMap::from_file(&path_dst).unwrap(); + crate::mapmanip::tools::insert_submap(&grid_map_xtr, Coord3::new(6, 4, 1), &mut grid_map_dst) + .unwrap(); + + assert_eq!( + grid_map_dst_expected.grid.keys().collect::>(), + grid_map_dst.grid.keys().collect::>(), + ); + + for key in grid_map_dst_expected.grid.keys() { + let tile_dst_expected = grid_map_dst_expected.grid.get(&key).unwrap(); + let tile_dst = grid_map_dst.grid.get(&key).unwrap(); + assert_eq!(tile_dst_expected.prefabs, tile_dst.prefabs); + } +} + +#[test] +fn keys_deduplicated() { + // make sure that if multiple tiles have the same key_suggestion + // they get assigned different keys + + let path_src = std::path::Path::new("src/mapmanip/test-in/_tiny_test_map.dmm"); + let dict_map_src = dmmtools::dmm::Map::from_file(&path_src).unwrap(); + let grid_map_src = crate::mapmanip::core::to_grid_map(&dict_map_src); + + let mut grid_map_out = crate::mapmanip::core::to_grid_map(&dict_map_src); + for tile in grid_map_out.grid.values_mut() { + tile.key_suggestion = dmm::Key::default(); + } + let dict_map_out = crate::mapmanip::core::to_dict_map(&grid_map_out).unwrap(); + let grid_map_out = crate::mapmanip::core::to_grid_map(&dict_map_out); + + for key in grid_map_src.grid.keys() { + let tile_src = grid_map_src.grid.get(&key).unwrap(); + let tile_out = grid_map_out.grid.get(&key).unwrap(); + assert_eq!(tile_src.prefabs, tile_out.prefabs); + } + + assert_eq!(dict_map_src.dictionary.len(), dict_map_out.dictionary.len()) +} + +#[test] +fn mapmanip_configs_parse() { + let foo = vec![crate::mapmanip::MapManipulation::SubmapExtractInsert { + submap_size_x: 1, + submap_size_y: 2, + submap_size_z: 3, + submaps_dmm: "a".to_owned(), + marker_extract: "b".to_owned(), + marker_insert: "c".to_owned(), + submaps_can_repeat: true, + }]; + dbg!(serde_json::to_string(&foo).unwrap()); + + let mapmanip_configs = walkdir::WalkDir::new("../../maps") + .into_iter() + .map(|d| d.unwrap().path().to_owned()) + .filter(|p| p.extension().is_some()) + .filter(|p| p.extension().unwrap() == "jsonc") + .collect_vec(); + assert_ne!(mapmanip_configs.len(), 0); + for config in mapmanip_configs { + let _ = crate::mapmanip::mapmanip_config_parse(&config); + } +} + +#[test] +fn mapmanip_configs_execute() { + // this is only "unsafe" cause that function is `extern "C"` + // it does not do anything actually unsafe + unsafe { all_mapmanip_configs_execute_ffi() } +} diff --git a/rust/src/mapmanip/tools/extract_submap.rs b/rust/src/mapmanip/tools/extract_submap.rs new file mode 100644 index 000000000000..30e7e9806384 --- /dev/null +++ b/rust/src/mapmanip/tools/extract_submap.rs @@ -0,0 +1,37 @@ +use crate::mapmanip::core::GridMap; +use dmmtools::dmm; +use dmmtools::dmm::Coord3; +use eyre::ContextCompat; + +/// Returns part of map of `xtr_size` and at `xtr_coord` from `src_map`. +pub fn extract_submap( + src_map: &GridMap, + xtr_coord: dmm::Coord3, + xtr_size: dmm::Coord3, +) -> eyre::Result { + let mut dst_map = GridMap { + size: xtr_size, + grid: crate::mapmanip::core::TileGrid::new(xtr_size.x, xtr_size.y, xtr_size.z), + }; + + for x in 1..(xtr_size.x + 1) { + for y in 1..(xtr_size.y + 1) { + for z in 1..(xtr_size.z + 1) { + let src_x = xtr_coord.x + x - 1; + let src_y = xtr_coord.y + y - 1; + let src_z = xtr_coord.z + z - 1; + + let tile = src_map + .grid + .get(&Coord3::new(src_x, src_y, src_z)) + .wrap_err(format!( + "cannot extract submap; coords out of bounds; x: {src_x}; y: {src_y}; z: {src_z}" + ))?; + + dst_map.grid.insert(&Coord3::new(x, y, z), tile.clone()); + } + } + } + + Ok(dst_map) +} diff --git a/rust/src/mapmanip/tools/insert_submap.rs b/rust/src/mapmanip/tools/insert_submap.rs new file mode 100644 index 000000000000..e840f9920f33 --- /dev/null +++ b/rust/src/mapmanip/tools/insert_submap.rs @@ -0,0 +1,75 @@ +use crate::mapmanip::GridMap; +use dmmtools::dmm; +use dmmtools::dmm::Coord3; +use eyre::ContextCompat; + +/// Takes `src_map` and puts it at `coord` in `dst_map`. +/// Noop area and turf have special handling: `/area/template_noop` and `/turf/template_noop`. +/// If a `src` tile has noop area, then it uses the mapped in `dst` area instead of replacing it. +/// If a `src` tile has noop turf, then it uses the mapped in `dst` turf instead of replacing it, +/// and additionally also merges `src` objects and mobs with the `dst` mapped in ones. +pub fn insert_submap( + src_map: &GridMap, + coord: dmm::Coord3, + dst_map: &mut GridMap, +) -> eyre::Result<()> { + for x in 1..(src_map.size.x + 1) { + for y in 1..(src_map.size.y + 1) { + for z in 1..(src_map.size.z + 1) { + let coord_src = Coord3::new(x, y, z); + let coord_dst = Coord3::new(coord.x + x - 1, coord.y + y - 1, coord.z + z - 1); + + // get src tile + let mut tile_src = src_map + .grid + .get(&coord_src) + .wrap_err(format!( + "src submap coord out of bounds: {coord_src}; {}; {};", + src_map.size, + src_map.grid.len(), + ))? + .clone(); + + // remove area and turf from src tile + let tile_src_area = tile_src.remove_area().wrap_err("submap tile has no area")?; + let tile_src_turf = tile_src.remove_turf().wrap_err("submap tile has no turf")?; + + let tile_src_area_is_noop = { tile_src_area.path == "/area/template_noop" }; + let tile_src_turf_is_noop = { tile_src_turf.path == "/turf/template_noop" }; + + // get dst tile + let tile_dst = dst_map.grid.get_mut(&coord_dst).wrap_err(format!( + "cannot insert submap tile; coord out of bounds; x: {x}; y: {y};" + ))?; + + // remove area and turf from dst tile + let tile_dst_area = tile_dst.remove_area().wrap_err("map tile has no area")?; + let tile_dst_turf = tile_dst.remove_turf().wrap_err("map tile has no turf")?; + + // get new area + let new_area = if tile_src_area_is_noop { + tile_dst_area + } else { + tile_src_area + }; + + // get new turf, AND, append/replace other atoms into dst tile + let new_turf = if tile_src_turf_is_noop { + tile_dst.prefabs.append(&mut tile_src.prefabs); + tile_dst_turf + } else { + tile_dst.prefabs = tile_src.prefabs; + tile_src_turf + }; + + // push selected new turf and area to dst tile + // do note that in dmm file format + // turf and area have to be the two last elements in a prefab + tile_dst.prefabs.push(new_turf); + tile_dst.prefabs.push(new_area); + } + } + } + + Ok(()) +} diff --git a/rust/src/mapmanip/tools/mod.rs b/rust/src/mapmanip/tools/mod.rs new file mode 100644 index 000000000000..c3688d31986b --- /dev/null +++ b/rust/src/mapmanip/tools/mod.rs @@ -0,0 +1,5 @@ +mod extract_submap; +pub use extract_submap::extract_submap; + +mod insert_submap; +pub use insert_submap::insert_submap; diff --git a/milla/src/api.rs b/rust/src/milla/api.rs similarity index 96% rename from milla/src/api.rs rename to rust/src/milla/api.rs index 53e63d4a17a9..b5393a58859a 100644 --- a/milla/src/api.rs +++ b/rust/src/milla/api.rs @@ -1,9 +1,9 @@ -use crate::constants::*; -use crate::conversion; use crate::logging; -use crate::model::*; -use crate::statics::*; -use crate::tick; +use crate::milla::constants::*; +use crate::milla::conversion; +use crate::milla::model::*; +use crate::milla::statics::*; +use crate::milla::tick; use byondapi::global_call::call_global; use byondapi::map::byond_xyz; use byondapi::prelude::*; @@ -14,7 +14,7 @@ use std::time::Instant; /// BYOND API for ensuring the buffers are usable. #[byondapi::bind] -fn initialize(byond_z: ByondValue) { +fn milla_initialize(byond_z: ByondValue) { logging::setup_panic_handler(); let z = f32::try_from(byond_z)? as i32 - 1; internal_initialize(z)?; @@ -36,7 +36,7 @@ pub(crate) fn internal_initialize(z: i32) -> Result<(), eyre::Error> { /// BYOND API for defining an environment that a tile can be exposed to. #[byondapi::bind] -fn create_environment( +fn milla_create_environment( oxygen: ByondValue, carbon_dioxide: ByondValue, nitrogen: ByondValue, @@ -96,7 +96,7 @@ pub(crate) fn internal_create_environment( /// BYOND API for setting the atmos details of a tile. #[byondapi::bind] -fn set_tile( +fn milla_set_tile( turf: ByondValue, airtight_north: ByondValue, airtight_east: ByondValue, @@ -143,7 +143,7 @@ fn set_tile( /// BYOND API for setting the directions a tile is airtight in. /// Like set_tile, just with a smaller set of fields. #[byondapi::bind] -fn set_tile_airtight( +fn milla_set_tile_airtight( turf: ByondValue, airtight_north: ByondValue, airtight_east: ByondValue, @@ -239,7 +239,7 @@ pub(crate) fn internal_set_tile( }; } } - 3 => tile.mode = AtmosMode::NoDecay, + 3 => tile.mode = AtmosMode::NoDecay, _ => return Err(eyre!("Invalid atmos_mode: {}", value)), } } @@ -278,7 +278,7 @@ pub(crate) fn internal_set_tile( /// BYOND API for fetching the atmos details of a tile. #[byondapi::bind] -fn get_tile(turf: ByondValue, list: ByondValue) { +fn milla_get_tile(turf: ByondValue, list: ByondValue) { logging::setup_panic_handler(); let (x, y, z) = byond_xyz(&turf)?.coordinates(); let tile = internal_get_tile(x as i32 - 1, y as i32 - 1, z as i32 - 1)?; @@ -308,7 +308,7 @@ pub(crate) fn internal_get_tile(x: i32, y: i32, z: i32) -> Result { /// * Turfs that just passed the threshold for showing plasma or sleeping gas. /// * Turfs with strong airflow out. #[byondapi::bind] -fn get_interesting_tiles() { +fn milla_get_interesting_tiles() { logging::setup_panic_handler(); let interesting_tiles = INTERESTING_TILES.lock().unwrap(); let byond_interesting_tiles = interesting_tiles @@ -320,7 +320,7 @@ fn get_interesting_tiles() { /// BYOND API for getting a single random interesting tile. #[byondapi::bind] -fn get_random_interesting_tile() { +fn milla_get_random_interesting_tile() { logging::setup_panic_handler(); let interesting_tiles = INTERESTING_TILES.lock().unwrap(); let length = interesting_tiles.len() as f32; @@ -336,7 +336,7 @@ fn get_random_interesting_tile() { /// BYOND API for capping the superconductivity of a tile. #[byondapi::bind] -fn reduce_superconductivity( +fn milla_reduce_superconductivity( turf: ByondValue, north: ByondValue, east: ByondValue, @@ -404,7 +404,7 @@ pub(crate) fn internal_reduce_superconductivity( /// BYOND API for resetting the superconductivity of a tile. #[byondapi::bind] -fn reset_superconductivity(turf: ByondValue) { +fn milla_reset_superconductivity(turf: ByondValue) { let (x, y, z) = byond_xyz(&turf)?.coordinates(); internal_reset_superconductivity(x as i32 - 1, y as i32 - 1, z as i32 - 1)?; Ok(Default::default()) @@ -436,7 +436,7 @@ pub(crate) fn internal_reset_superconductivity(x: i32, y: i32, z: i32) -> Result /// BYOND API for starting an atmos tick. #[byondapi::bind] -fn spawn_tick_thread() { +fn milla_spawn_tick_thread() { logging::setup_panic_handler(); thread::spawn(|| -> Result<(), eyre::Error> { let now = Instant::now(); @@ -454,7 +454,7 @@ fn spawn_tick_thread() { /// BYOND API for asking how long the prior tick took. #[byondapi::bind] -fn get_tick_time() { +fn milla_get_tick_time() { logging::setup_panic_handler(); Ok(ByondValue::from( TICK_TIME.load(std::sync::atomic::Ordering::Relaxed) as f32, diff --git a/milla/src/constants.rs b/rust/src/milla/constants.rs similarity index 100% rename from milla/src/constants.rs rename to rust/src/milla/constants.rs diff --git a/milla/src/conversion.rs b/rust/src/milla/conversion.rs similarity index 100% rename from milla/src/conversion.rs rename to rust/src/milla/conversion.rs diff --git a/milla/src/lib.rs b/rust/src/milla/mod.rs similarity index 97% rename from milla/src/lib.rs rename to rust/src/milla/mod.rs index 7c2e81ff85d9..d0b90b51541f 100644 --- a/milla/src/lib.rs +++ b/rust/src/milla/mod.rs @@ -6,11 +6,9 @@ //! MILLA takes the majority of atmos out of BYOND and puts it here, in Rust code. //! It stores its own model of the air distribution, and BYOND will call in to view and make //! adjustments, as well as to trigger atmos ticks. - mod api; mod constants; mod conversion; -mod logging; mod model; mod simulate; mod statics; diff --git a/milla/src/model.rs b/rust/src/milla/model.rs similarity index 99% rename from milla/src/model.rs rename to rust/src/milla/model.rs index 8f559783e27f..13044a6d879c 100644 --- a/milla/src/model.rs +++ b/rust/src/milla/model.rs @@ -1,4 +1,4 @@ -use crate::constants::*; +use crate::milla::constants::*; use atomic_float::AtomicF32; use bitflags::bitflags; use byondapi::map::{byond_locatexyz, ByondXYZ}; diff --git a/milla/src/simulate.rs b/rust/src/milla/simulate.rs similarity index 99% rename from milla/src/simulate.rs rename to rust/src/milla/simulate.rs index b8c88dc80aa6..b663b77f7081 100644 --- a/milla/src/simulate.rs +++ b/rust/src/milla/simulate.rs @@ -1,5 +1,5 @@ -use crate::constants::*; -use crate::model::*; +use crate::milla::constants::*; +use crate::milla::model::*; use byondapi::map::ByondXYZ; use eyre::eyre; use scc::Bag; @@ -437,7 +437,7 @@ pub(crate) fn apply_tile_mode( my_inactive_tile.thermal_energy *= 1.0 - SPACE_COOLING_FACTOR; } } - AtmosMode::NoDecay => {} // No special interactions + AtmosMode::NoDecay => {} // No special interactions } Ok(()) } diff --git a/milla/src/statics.rs b/rust/src/milla/statics.rs similarity index 95% rename from milla/src/statics.rs rename to rust/src/milla/statics.rs index 76a0305abfec..4ecdd702c1b8 100644 --- a/milla/src/statics.rs +++ b/rust/src/milla/statics.rs @@ -1,4 +1,4 @@ -use crate::model::*; +use crate::milla::model::*; use std::sync::{atomic::AtomicUsize, Mutex, OnceLock}; /// The buffers that contain the atmos model. diff --git a/milla/src/tick.rs b/rust/src/milla/tick.rs similarity index 99% rename from milla/src/tick.rs rename to rust/src/milla/tick.rs index b8a6991102f7..bc9afafff1f8 100644 --- a/milla/src/tick.rs +++ b/rust/src/milla/tick.rs @@ -1,7 +1,7 @@ -use crate::constants::*; -use crate::model::*; -use crate::simulate; -use crate::statics::*; +use crate::milla::constants::*; +use crate::milla::model::*; +use crate::milla::simulate; +use crate::milla::statics::*; use scc::Bag; use std::sync::RwLock; use std::thread; diff --git a/rustlibs.dll b/rustlibs.dll new file mode 100644 index 000000000000..1aca788e780f Binary files /dev/null and b/rustlibs.dll differ diff --git a/tgui/package.json b/tgui/package.json index 798232a65ad4..6c4db999354a 100644 --- a/tgui/package.json +++ b/tgui/package.json @@ -47,7 +47,7 @@ "style-loader": "^4.0.0", "terser-webpack-plugin": "^5.3.10", "typescript": "^5.5.3", - "webpack": "^5.93.0", + "webpack": "^5.94.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4" } diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json index 5dc920a2b430..ad35f7c6a035 100644 --- a/tgui/packages/tgui-panel/package.json +++ b/tgui/packages/tgui-panel/package.json @@ -4,7 +4,7 @@ "version": "4.5.1-paradise", "dependencies": { "common": "workspace:*", - "dompurify": "2.5.0", + "dompurify": "2.5.4", "inferno": "^8.2.3", "tgui": "workspace:*", "tgui-dev-server": "workspace:*", diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index bd6f319006bc..9fe1abdec63a 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -201,6 +201,10 @@ h2.alert { color: #000; } +.announcement.sec h1 { + color: #f00; +} + .boldannounceic { color: #ff0000; } diff --git a/tgui/packages/tgui/components/Image.tsx b/tgui/packages/tgui/components/Image.tsx index 33e3b063f696..6bf245878ea4 100644 --- a/tgui/packages/tgui/components/Image.tsx +++ b/tgui/packages/tgui/components/Image.tsx @@ -44,11 +44,11 @@ export class Image extends Component { render() { const { fixBlur = true, fixErrors = false, objectFit = 'fill', src, ...rest } = this.props; - /* Remove -ms-interpolation-mode with Byond 516. -webkit-optimize-contrast is better than pixelated */ + /* Remove -ms-interpolation-mode with Byond 516 */ const computedProps = computeBoxProps({ style: { '-ms-interpolation-mode': `${fixBlur ? 'nearest-neighbor' : 'auto'}`, - 'image-rendering': `${fixBlur ? '-webkit-optimize-contrast' : 'auto'}`, + 'image-rendering': `${fixBlur ? 'pixelated' : 'auto'}`, 'object-fit': `${objectFit}`, }, ...rest, diff --git a/tgui/packages/tgui/interfaces/MiningVendor.js b/tgui/packages/tgui/interfaces/MiningVendor.js index 2f9916b3357a..a48cfeea1a28 100644 --- a/tgui/packages/tgui/interfaces/MiningVendor.js +++ b/tgui/packages/tgui/interfaces/MiningVendor.js @@ -1,6 +1,6 @@ import { createSearch } from 'common/string'; import { useBackend, useLocalState } from '../backend'; -import { Box, Button, Collapsible, Dropdown, Stack, Input, NoticeBox, Section } from '../components'; +import { Box, Button, Collapsible, Dropdown, Stack, Input, ImageButton, NoticeBox, Section } from '../components'; import { Window } from '../layouts'; const sortTypes = { @@ -10,13 +10,14 @@ const sortTypes = { }; export const MiningVendor = (_properties, _context) => { + const [gridLayout, setGridLayout] = useLocalState(_context, 'gridLayout', false); return ( - + - - + + @@ -64,6 +65,7 @@ const MiningVendorUser = (_properties, context) => { const MiningVendorItems = (_properties, context) => { const { act, data } = useBackend(context); const { has_id, id, items } = data; + const { gridLayout } = _properties; // Search thingies const [searchText, _setSearchText] = useLocalState(context, 'search', ''); const [sortOrder, _setSortOrder] = useLocalState(context, 'sort', 'Alphabetical'); @@ -89,7 +91,7 @@ const MiningVendorItems = (_properties, context) => { } has_contents = true; - return ; + return ; }); return ( @@ -101,6 +103,7 @@ const MiningVendorItems = (_properties, context) => { }; const MiningVendorSearch = (_properties, context) => { + const { gridLayout, setGridLayout } = _properties; const [_searchText, setSearchText] = useLocalState(context, 'search', ''); const [_sortOrder, setSortOrder] = useLocalState(context, 'sort', ''); const [descending, setDescending] = useLocalState(context, 'descending', false); @@ -115,6 +118,15 @@ const MiningVendorSearch = (_properties, context) => { onInput={(_e, value) => setSearchText(value)} /> + + + } + > + {item.name} + + ) + )} ); }; diff --git a/tgui/packages/tgui/interfaces/Pacman.js b/tgui/packages/tgui/interfaces/Pacman.js index 0cba4b7a40f1..e1c464c18fae 100644 --- a/tgui/packages/tgui/interfaces/Pacman.js +++ b/tgui/packages/tgui/interfaces/Pacman.js @@ -26,7 +26,7 @@ export const Pacman = (props, context) => { let fuelRatio = fuel_stored / fuel_cap; let tmpRatio = tmp_current / tmp_max; // temperature ratio let output_watts = output_set * power_gen; - let fuel_sec = Math.round(fuel_stored / fuel_usage); + let fuel_sec = Math.round((fuel_stored / fuel_usage) * 2); // Multiply by two, because one cycle is two seconds. let fuel_min = Math.round(fuel_sec / 60); let usage = fuel_sec > 120 ? `${fuel_min} minutes` : `${fuel_sec} seconds`; return ( diff --git a/tgui/packages/tgui/interfaces/RankedListInputModal.tsx b/tgui/packages/tgui/interfaces/RankedListInputModal.tsx new file mode 100644 index 000000000000..2418fd476d10 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RankedListInputModal.tsx @@ -0,0 +1,116 @@ +import { Loader } from './common/Loader'; +import { InputButtons } from './common/InputButtons'; +import { Button, Section, Stack, Table } from '../components'; +import { useBackend, useLocalState } from '../backend'; +import { Window } from '../layouts'; +import { TableRow } from '../components/Table'; + +type ListInputData = { + items: string[]; + message: string; + timeout: number; + title: string; +}; + +export const RankedListInputModal = (props, context) => { + const { act, data } = useBackend(context); + const { items = [], message = '', timeout, title } = data; + const [edittedItems, setEdittedItems] = useLocalState(context, 'edittedItems', items); + + // Dynamically changes the window height based on the message. + const windowHeight = 330 + Math.ceil(message.length / 3); + + return ( + + {timeout && } + +
+ + + + + + + + +
+
+
+ ); +}; + +/** + * Displays the list of selectable items. + * If a search query is provided, filters the items. + */ +const ListDisplay = (props, context) => { + const { filteredItems, setEdittedItems } = props; + const [draggedItemIndex, setDraggedItemIndex] = useLocalState(context, 'draggedItemIndex', null); + + // Handle the drag start event + const handleDragStart = (index: number) => { + setDraggedItemIndex(index); + }; + + // Handle the drag over event + const handleDragOver = (event: DragEvent) => { + event.preventDefault(); // Required to allow dropping + }; + + // Handle the drop event for items + const handleDrop = (index: number | null = null) => { + if (draggedItemIndex === null) return; + + const updatedItems = [...filteredItems]; + const draggedItem = updatedItems.splice(draggedItemIndex, 1)[0]; // Remove dragged item + + // If no index is provided, add the item to the end of the list (used for drop on section) + if (index === null) { + updatedItems.push(draggedItem); + } else { + updatedItems.splice(index, 0, draggedItem); // Insert dragged item at new position + } + + setEdittedItems(updatedItems); + setDraggedItemIndex(null); // Reset the dragged item index + }; + + return ( +
handleDrop(null)} // Handle drop on Section + onDragOver={handleDragOver} // Allow dropping on Section + > + + {filteredItems.map((item, index) => ( + handleDragStart(index)} + onDragOver={handleDragOver} + onDrop={() => handleDrop(index)} + style={{ + padding: '8px', + }} + > + + + ))} +
+
+ ); +}; diff --git a/tgui/packages/tgui/package.json b/tgui/packages/tgui/package.json index 203b22705c4b..b491d41ca5c8 100644 --- a/tgui/packages/tgui/package.json +++ b/tgui/packages/tgui/package.json @@ -7,7 +7,7 @@ "@types/marked": "^6.0.0", "common": "workspace:*", "csstype": "^3.1.3", - "dompurify": "2.5.0", + "dompurify": "2.5.4", "highlight.js": "^11.10.0", "inferno": "^8.2.3", "inferno-vnode-flags": "^8.2.3", diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css index f83675568cda..2d7922fdaa74 100644 --- a/tgui/public/tgui-panel.bundle.css +++ b/tgui/public/tgui-panel.bundle.css @@ -1 +1 @@ -html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.Button--color--transparent{background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--default{background-color:#3e6189;color:#fff;transition:color .2s,background-color .2s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--default--translucent{background-color:rgba(40,40,40,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--default--translucent:hover{background-color:rgba(61,61,61,.5);color:#fff}.Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.Button--selected,.Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--selected:hover,.Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}html,body{scrollbar-color:#363636 #181818}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}em{font-style:normal;font-weight:700}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}.emoji{max-height:16px;max-width:16px}.emoji16x16{vertical-align:middle}.italic,.italics,.emote{font-style:italic}.bold{font-weight:700}.bolditalics{font-style:italic;font-weight:700}.center{text-align:center}.big{font-size:150%}.reallybig{font-size:175%}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.hidden{display:none;visibility:hidden}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.discordpm{color:#6685f5}.debug{color:#6d2f83}.deadsay{color:#e2c1ff}.darkmblue{color:#6685f5}.prefix,.name,.yell{font-weight:700}.mentorhelp{color:#07b;font-weight:700}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.admin{color:#386aff;font-weight:700}.adminhelp{color:#a00;font-weight:700}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.dev_channel{color:#61b413;font-weight:700}.dev_channel_admin{color:#9ef14f;font-weight:700}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.biggerdanger{color:red;font-weight:700;font-size:150%}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.attack{color:red}.disarm{color:#900}.moderate{color:#c00}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.boldannounceic,.boldannounceooc,.pr_announce{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.blob{color:#ee4000;font-style:italic}.revennotice{color:#6685f5}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.changeling{color:#00b4de}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.zombie{color:red}.soghun{color:#228b22}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.tradeband{font-family:Georgia,Verdana,sans-serif}.rose{color:#ff5050}.interface{color:#9031c4}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.red{color:red}.green{color:#03bb39}.purple{color:#9031c4}.orange{color:orange}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.whisper{font-style:italic;color:#ccc}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.boxed_message{background:#17191c;border:1px solid rgba(166,183,217,.25);border-width:.0833333333em .4166666667em;margin:.5em .25em;padding:.5em .75em;border-radius:.5em;text-align:center}.boxed_message.red_border{background:#1f1414;border-color:rgba(255,0,0,.5)}.boxed_message.green_border{background:#141f18;border-color:rgba(0,255,0,.5)}.boxed_message.purple_border{background:#1d1828;border-color:rgba(170,128,255,.5)}.boxed_message.notice_border{background:#14181f;border-color:rgba(85,126,246,.5)}.boxed_message.thick_border{border-width:.5em}.boxed_message.left_align_text{text-align:left}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-light .Button--color--white{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--white--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--white--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--red{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--red--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--red--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--orange{background-color:#c0530b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--orange--translucent{background-color:rgba(192,83,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--orange--translucent:hover{background-color:rgba(231,109,29,.5);color:#fff}.theme-light .Button--color--yellow{background-color:#bfa303;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--yellow--translucent{background-color:rgba(191,163,3,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--yellow--translucent:hover{background-color:rgba(231,199,20,.5);color:#fff}.theme-light .Button--color--olive{background-color:#889912;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--olive--translucent{background-color:rgba(136,153,18,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--olive--translucent:hover{background-color:rgba(169,188,37,.5);color:#fff}.theme-light .Button--color--green{background-color:#188532;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--green--translucent{background-color:rgba(24,133,50,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--green--translucent:hover{background-color:rgba(43,166,72,.5);color:#fff}.theme-light .Button--color--teal{background-color:#008882;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--teal--translucent{background-color:rgba(0,136,130,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--teal--translucent:hover{background-color:rgba(16,169,162,.5);color:#fff}.theme-light .Button--color--blue{background-color:#19649c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--blue--translucent{background-color:rgba(25,100,156,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--blue--translucent:hover{background-color:rgba(44,129,192,.5);color:#fff}.theme-light .Button--color--violet{background-color:#4b2897;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--violet--translucent{background-color:rgba(75,40,151,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--violet--translucent:hover{background-color:rgba(101,61,185,.5);color:#fff}.theme-light .Button--color--purple{background-color:#7a2696;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--purple--translucent{background-color:rgba(122,38,150,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--purple--translucent:hover{background-color:rgba(154,59,185,.5);color:#fff}.theme-light .Button--color--pink{background-color:#b61d73;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--pink--translucent{background-color:rgba(182,29,115,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--pink--translucent:hover{background-color:rgba(217,53,145,.5);color:#fff}.theme-light .Button--color--brown{background-color:#7c4d2f;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--brown--translucent{background-color:rgba(124,77,47,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--brown--translucent:hover{background-color:rgba(156,103,69,.5);color:#fff}.theme-light .Button--color--grey{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--grey--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--grey--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--good{background-color:#44801d;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--good--translucent{background-color:rgba(68,128,29,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--good--translucent:hover{background-color:rgba(93,159,49,.5);color:#fff}.theme-light .Button--color--average{background-color:#b56b0b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--average--translucent{background-color:rgba(181,107,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--average--translucent:hover{background-color:rgba(220,137,29,.5);color:#fff}.theme-light .Button--color--bad{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--bad--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--bad--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--label{background-color:#2c2c2c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--label--translucent{background-color:rgba(44,44,44,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--label--translucent:hover{background-color:rgba(66,66,66,.5);color:#fff}.theme-light .Button--color--gold{background-color:#bd810b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--gold--translucent{background-color:rgba(189,129,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--gold--translucent:hover{background-color:rgba(229,161,28,.5);color:#fff}.theme-light .Button--color--transparent{background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--default{background-color:#bbb;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--default--translucent{background-color:rgba(251,251,251,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--default--translucent:hover{background-color:rgba(254,254,254,.5);color:#fff}.theme-light .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-light .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-light .Button--disabled{background-color:#363636!important;color:rgba(0,0,0,.75)!important}.theme-light .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(0,0,0,.5)!important}.theme-light .Button--selected,.theme-light .Button--selected--translucent{background-color:#0668b8;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--selected:hover,.theme-light .Button--selected--translucent:hover{background-color:#1785df;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light html,.theme-light body{scrollbar-color:#a7a7a7 #f2f2f2}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light a,.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f}.theme-light .motd,.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6,.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .looc{color:#69c}.theme-light .discordpm{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .deadsay{color:#5c00e6}.theme-light .darkmblue{color:#00f}.theme-light .mentorhelp{color:#07b}.theme-light .mentor_channel{color:#775bff}.theme-light .mentor_channel_admin{color:#a35cff}.theme-light .adminhelp{color:#a00}.theme-light .adminticket{color:#3e7336}.theme-light .adminticketalt{color:#014c8a}.theme-light .admin_channel{color:#9a04d1}.theme-light .all_admin_ping{color:#12a5f4}.theme-light .dev_channel{color:#126719}.theme-light .dev_channel_admin{color:#26a419}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6}.theme-light .warning,.theme-light .boldwarning,.theme-light .danger,.theme-light .userdanger{color:red}.theme-light .notice,.theme-light .boldnotice{color:#009}.theme-light .announcement h1,.theme-light .announcement h2{color:#000}.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red}.theme-light .pr_announce{color:#228b22}.theme-light .greenannounce{color:#0f0}.theme-light .alien{color:#543354}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .revennotice,.theme-light .revenbignotice{color:#1d2953}.theme-light .changeling{color:purple}.theme-light .cultspeech{color:#7f0000}.theme-light .cultitalic,.theme-light .cultlarge,.theme-light .narsie,.theme-light .narsiesmall{color:#960000}.theme-light .rose{color:#ff5050}.theme-light .interface{color:#303}.theme-light .purple{color:#5e2d79}.theme-light .orange{color:orange}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .specialnotice{color:#36525e}.theme-light .whisper{color:#333}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-light .boxed_message{background:#f2f7ff;border-color:rgba(16,48,112,.5)}.theme-light .boxed_message.red_border{background:#fff2f2;border-color:rgba(255,0,0,.5)}.theme-light .boxed_message.green_border{background:#f2fff7;border-color:rgba(0,168,0,.5)}.theme-light .boxed_message.purple_border{background:#f7f2ff;border-color:rgba(85,0,255,.5)}.theme-light .boxed_message.notice_border{background:#f2f7ff;border-color:rgba(0,64,255,.5)}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-ntos .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-ntos .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-ntos .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-ntos .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-ntos .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-ntos .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-ntos .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-ntos .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-ntos .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-ntos .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-ntos .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-ntos .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-ntos .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-ntos .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.theme-ntos .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-ntos .Button--color--transparent{background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--default{background-color:#384e68;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--default--translucent{background-color:rgba(35,47,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--default--translucent:hover{background-color:rgba(56,69,84,.5);color:#fff}.theme-ntos .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-ntos .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-ntos .Button--selected,.theme-ntos .Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--selected:hover,.theme-ntos .Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos html,.theme-ntos body{scrollbar-color:#2a3b4f #141d26}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1d2330}.theme-ntos .boxed_message.red_border{background:#301d1d}.theme-ntos .boxed_message.green_border{background:#1d3023}.theme-ntos .boxed_message.purple_border{background:#231d30}.theme-ntos .boxed_message.notice_border{background:#192234}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#b89797!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#9d6f6f!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#b89797!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-syndicate .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-syndicate .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-syndicate .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-syndicate .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-syndicate .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-syndicate .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-syndicate .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-syndicate .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-syndicate .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-syndicate .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-syndicate .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-syndicate .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-syndicate .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-syndicate .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-syndicate .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--label{background-color:#9d6f6f;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label:hover{background-color:#b89696;color:#fff}.theme-syndicate .Button--color--label--translucent{background-color:rgba(157,111,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label--translucent:hover{background-color:rgba(184,150,150,.5);color:#fff}.theme-syndicate .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-syndicate .Button--color--transparent{background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--default{background-color:#397439;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--default--translucent{background-color:rgba(88,8,8,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default--translucent:hover{background-color:rgba(115,25,25,.5);color:#fff}.theme-syndicate .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-syndicate .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important;color:rgba(255,255,255,.75)!important}.theme-syndicate .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-syndicate .Button--selected,.theme-syndicate .Button--selected--translucent{background-color:#9d0808;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--selected:hover,.theme-syndicate .Button--selected--translucent:hover{background-color:#c11919;color:#fff}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#635c5c}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#b89797}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #9d6f6f!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#9d6f6f}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate html,.theme-syndicate body{scrollbar-color:#770303 #3a0202}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:#360a0a}.theme-syndicate .boxed_message.red_border{background:#400000}.theme-syndicate .boxed_message.green_border{background:#261a00}.theme-syndicate .boxed_message.purple_border{background:#260026}.theme-syndicate .boxed_message.notice_border{background:#260016}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#b8a497!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#9d826f!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#b8a497!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-paradise .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-paradise .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-paradise .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-paradise .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-paradise .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-paradise .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-paradise .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-paradise .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-paradise .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-paradise .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-paradise .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-paradise .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-paradise .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-paradise .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--label{background-color:#9d826f;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--label:hover{background-color:#b8a396;color:#fff}.theme-paradise .Button--color--label--translucent{background-color:rgba(157,130,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--label--translucent:hover{background-color:rgba(184,163,150,.5);color:#fff}.theme-paradise .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-paradise .Button--color--transparent{background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--default{background-color:#208080;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--default--translucent{background-color:rgba(141,20,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--default--translucent:hover{background-color:rgba(175,39,84,.5);color:#fff}.theme-paradise .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--danger{background-color:#8c1eff;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--danger--translucent{background-color:rgba(140,30,255,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger--translucent:hover{background-color:rgba(174,97,255,.5);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-paradise .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-paradise .Button--selected,.theme-paradise .Button--selected--translucent{background-color:#bf6030;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--selected:hover,.theme-paradise .Button--selected--translucent:hover{background-color:#d4835a;color:#fff}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#b8a497}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #9d826f!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#9d826f}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise html,.theme-paradise body{scrollbar-color:#cb1551 #680b29}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border-color:rgba(223,181,159,.25)}.theme-paradise .boxed_message.red_border{background:rgba(22,3,3,.25);border-color:rgba(255,0,0,.5)}.theme-paradise .boxed_message.green_border{background:rgba(3,22,10,.25);border-color:rgba(0,255,0,.5)}.theme-paradise .boxed_message.purple_border{background:rgba(10,3,22,.25);border-color:rgba(136,77,255,.5)}.theme-paradise .boxed_message.notice_border{background:rgba(3,10,22,.25);border-color:rgba(85,126,246,.5)} +html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.Button--color--transparent{background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--default{background-color:#3e6189;color:#fff;transition:color .2s,background-color .2s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--default--translucent{background-color:rgba(40,40,40,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--default--translucent:hover{background-color:rgba(61,61,61,.5);color:#fff}.Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.Button--selected,.Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--selected:hover,.Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}html,body{scrollbar-color:#363636 #181818}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}em{font-style:normal;font-weight:700}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}.emoji{max-height:16px;max-width:16px}.emoji16x16{vertical-align:middle}.italic,.italics,.emote{font-style:italic}.bold{font-weight:700}.bolditalics{font-style:italic;font-weight:700}.center{text-align:center}.big{font-size:150%}.reallybig{font-size:175%}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.hidden{display:none;visibility:hidden}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.discordpm{color:#6685f5}.debug{color:#6d2f83}.deadsay{color:#e2c1ff}.darkmblue{color:#6685f5}.prefix,.name,.yell{font-weight:700}.mentorhelp{color:#07b;font-weight:700}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.admin{color:#386aff;font-weight:700}.adminhelp{color:#a00;font-weight:700}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.dev_channel{color:#61b413;font-weight:700}.dev_channel_admin{color:#9ef14f;font-weight:700}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.biggerdanger{color:red;font-weight:700;font-size:150%}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.attack{color:red}.disarm{color:#900}.moderate{color:#c00}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.boldannounceic,.boldannounceooc,.pr_announce{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.blob{color:#ee4000;font-style:italic}.revennotice{color:#6685f5}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.changeling{color:#00b4de}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.zombie{color:red}.soghun{color:#228b22}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.tradeband{font-family:Georgia,Verdana,sans-serif}.rose{color:#ff5050}.interface{color:#9031c4}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.red{color:red}.green{color:#03bb39}.purple{color:#9031c4}.orange{color:orange}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.whisper{font-style:italic;color:#ccc}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.boxed_message{background:#17191c;border:1px solid rgba(166,183,217,.25);border-width:.0833333333em .4166666667em;margin:.5em .25em;padding:.5em .75em;border-radius:.5em;text-align:center}.boxed_message.red_border{background:#1f1414;border-color:rgba(255,0,0,.5)}.boxed_message.green_border{background:#141f18;border-color:rgba(0,255,0,.5)}.boxed_message.purple_border{background:#1d1828;border-color:rgba(170,128,255,.5)}.boxed_message.notice_border{background:#14181f;border-color:rgba(85,126,246,.5)}.boxed_message.thick_border{border-width:.5em}.boxed_message.left_align_text{text-align:left}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-light .Button--color--white{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--white--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--white--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--red{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--red--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--red--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--orange{background-color:#c0530b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--orange--translucent{background-color:rgba(192,83,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--orange--translucent:hover{background-color:rgba(231,109,29,.5);color:#fff}.theme-light .Button--color--yellow{background-color:#bfa303;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--yellow--translucent{background-color:rgba(191,163,3,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--yellow--translucent:hover{background-color:rgba(231,199,20,.5);color:#fff}.theme-light .Button--color--olive{background-color:#889912;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--olive--translucent{background-color:rgba(136,153,18,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--olive--translucent:hover{background-color:rgba(169,188,37,.5);color:#fff}.theme-light .Button--color--green{background-color:#188532;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--green--translucent{background-color:rgba(24,133,50,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--green--translucent:hover{background-color:rgba(43,166,72,.5);color:#fff}.theme-light .Button--color--teal{background-color:#008882;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--teal--translucent{background-color:rgba(0,136,130,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--teal--translucent:hover{background-color:rgba(16,169,162,.5);color:#fff}.theme-light .Button--color--blue{background-color:#19649c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--blue--translucent{background-color:rgba(25,100,156,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--blue--translucent:hover{background-color:rgba(44,129,192,.5);color:#fff}.theme-light .Button--color--violet{background-color:#4b2897;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--violet--translucent{background-color:rgba(75,40,151,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--violet--translucent:hover{background-color:rgba(101,61,185,.5);color:#fff}.theme-light .Button--color--purple{background-color:#7a2696;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--purple--translucent{background-color:rgba(122,38,150,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--purple--translucent:hover{background-color:rgba(154,59,185,.5);color:#fff}.theme-light .Button--color--pink{background-color:#b61d73;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--pink--translucent{background-color:rgba(182,29,115,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--pink--translucent:hover{background-color:rgba(217,53,145,.5);color:#fff}.theme-light .Button--color--brown{background-color:#7c4d2f;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--brown--translucent{background-color:rgba(124,77,47,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--brown--translucent:hover{background-color:rgba(156,103,69,.5);color:#fff}.theme-light .Button--color--grey{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--grey--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--grey--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--good{background-color:#44801d;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--good--translucent{background-color:rgba(68,128,29,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--good--translucent:hover{background-color:rgba(93,159,49,.5);color:#fff}.theme-light .Button--color--average{background-color:#b56b0b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--average--translucent{background-color:rgba(181,107,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--average--translucent:hover{background-color:rgba(220,137,29,.5);color:#fff}.theme-light .Button--color--bad{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--bad--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--bad--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--label{background-color:#2c2c2c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--label--translucent{background-color:rgba(44,44,44,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--label--translucent:hover{background-color:rgba(66,66,66,.5);color:#fff}.theme-light .Button--color--gold{background-color:#bd810b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--gold--translucent{background-color:rgba(189,129,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--gold--translucent:hover{background-color:rgba(229,161,28,.5);color:#fff}.theme-light .Button--color--transparent{background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--default{background-color:#bbb;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--default--translucent{background-color:rgba(251,251,251,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--default--translucent:hover{background-color:rgba(254,254,254,.5);color:#fff}.theme-light .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-light .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-light .Button--disabled{background-color:#363636!important;color:rgba(0,0,0,.75)!important}.theme-light .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(0,0,0,.5)!important}.theme-light .Button--selected,.theme-light .Button--selected--translucent{background-color:#0668b8;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--selected:hover,.theme-light .Button--selected--translucent:hover{background-color:#1785df;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light html,.theme-light body{scrollbar-color:#a7a7a7 #f2f2f2}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light a,.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f}.theme-light .motd,.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6,.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .looc{color:#69c}.theme-light .discordpm{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .deadsay{color:#5c00e6}.theme-light .darkmblue{color:#00f}.theme-light .mentorhelp{color:#07b}.theme-light .mentor_channel{color:#775bff}.theme-light .mentor_channel_admin{color:#a35cff}.theme-light .adminhelp{color:#a00}.theme-light .adminticket{color:#3e7336}.theme-light .adminticketalt{color:#014c8a}.theme-light .admin_channel{color:#9a04d1}.theme-light .all_admin_ping{color:#12a5f4}.theme-light .dev_channel{color:#126719}.theme-light .dev_channel_admin{color:#26a419}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6}.theme-light .warning,.theme-light .boldwarning,.theme-light .danger,.theme-light .userdanger{color:red}.theme-light .notice,.theme-light .boldnotice{color:#009}.theme-light .announcement h1,.theme-light .announcement h2{color:#000}.theme-light .announcement.sec h1,.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red}.theme-light .pr_announce{color:#228b22}.theme-light .greenannounce{color:#0f0}.theme-light .alien{color:#543354}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .revennotice,.theme-light .revenbignotice{color:#1d2953}.theme-light .changeling{color:purple}.theme-light .cultspeech{color:#7f0000}.theme-light .cultitalic,.theme-light .cultlarge,.theme-light .narsie,.theme-light .narsiesmall{color:#960000}.theme-light .rose{color:#ff5050}.theme-light .interface{color:#303}.theme-light .purple{color:#5e2d79}.theme-light .orange{color:orange}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .specialnotice{color:#36525e}.theme-light .whisper{color:#333}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-light .boxed_message{background:#f2f7ff;border-color:rgba(16,48,112,.5)}.theme-light .boxed_message.red_border{background:#fff2f2;border-color:rgba(255,0,0,.5)}.theme-light .boxed_message.green_border{background:#f2fff7;border-color:rgba(0,168,0,.5)}.theme-light .boxed_message.purple_border{background:#f7f2ff;border-color:rgba(85,0,255,.5)}.theme-light .boxed_message.notice_border{background:#f2f7ff;border-color:rgba(0,64,255,.5)}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-ntos .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-ntos .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-ntos .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-ntos .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-ntos .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-ntos .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-ntos .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-ntos .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-ntos .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-ntos .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-ntos .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-ntos .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-ntos .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-ntos .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.theme-ntos .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-ntos .Button--color--transparent{background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--default{background-color:#384e68;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--default--translucent{background-color:rgba(35,47,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--default--translucent:hover{background-color:rgba(56,69,84,.5);color:#fff}.theme-ntos .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-ntos .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-ntos .Button--selected,.theme-ntos .Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--selected:hover,.theme-ntos .Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos html,.theme-ntos body{scrollbar-color:#2a3b4f #141d26}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1d2330}.theme-ntos .boxed_message.red_border{background:#301d1d}.theme-ntos .boxed_message.green_border{background:#1d3023}.theme-ntos .boxed_message.purple_border{background:#231d30}.theme-ntos .boxed_message.notice_border{background:#192234}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#b89797!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#9d6f6f!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#b89797!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-syndicate .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-syndicate .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-syndicate .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-syndicate .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-syndicate .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-syndicate .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-syndicate .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-syndicate .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-syndicate .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-syndicate .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-syndicate .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-syndicate .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-syndicate .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-syndicate .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-syndicate .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--label{background-color:#9d6f6f;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label:hover{background-color:#b89696;color:#fff}.theme-syndicate .Button--color--label--translucent{background-color:rgba(157,111,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label--translucent:hover{background-color:rgba(184,150,150,.5);color:#fff}.theme-syndicate .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-syndicate .Button--color--transparent{background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--default{background-color:#397439;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--default--translucent{background-color:rgba(88,8,8,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default--translucent:hover{background-color:rgba(115,25,25,.5);color:#fff}.theme-syndicate .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-syndicate .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important;color:rgba(255,255,255,.75)!important}.theme-syndicate .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-syndicate .Button--selected,.theme-syndicate .Button--selected--translucent{background-color:#9d0808;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--selected:hover,.theme-syndicate .Button--selected--translucent:hover{background-color:#c11919;color:#fff}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#635c5c}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#b89797}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #9d6f6f!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#9d6f6f}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate html,.theme-syndicate body{scrollbar-color:#770303 #3a0202}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:#360a0a}.theme-syndicate .boxed_message.red_border{background:#400000}.theme-syndicate .boxed_message.green_border{background:#261a00}.theme-syndicate .boxed_message.purple_border{background:#260026}.theme-syndicate .boxed_message.notice_border{background:#260016}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#b8a497!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#9d826f!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#b8a497!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-paradise .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-paradise .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-paradise .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-paradise .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-paradise .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-paradise .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-paradise .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-paradise .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-paradise .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-paradise .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-paradise .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-paradise .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-paradise .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-paradise .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--label{background-color:#9d826f;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--label:hover{background-color:#b8a396;color:#fff}.theme-paradise .Button--color--label--translucent{background-color:rgba(157,130,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--label--translucent:hover{background-color:rgba(184,163,150,.5);color:#fff}.theme-paradise .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-paradise .Button--color--transparent{background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--default{background-color:#208080;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--default--translucent{background-color:rgba(141,20,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--default--translucent:hover{background-color:rgba(175,39,84,.5);color:#fff}.theme-paradise .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--danger{background-color:#8c1eff;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--danger--translucent{background-color:rgba(140,30,255,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger--translucent:hover{background-color:rgba(174,97,255,.5);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-paradise .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-paradise .Button--selected,.theme-paradise .Button--selected--translucent{background-color:#bf6030;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--selected:hover,.theme-paradise .Button--selected--translucent:hover{background-color:#d4835a;color:#fff}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#b8a497}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #9d826f!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#9d826f}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise html,.theme-paradise body{scrollbar-color:#cb1551 #680b29}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border-color:rgba(223,181,159,.25)}.theme-paradise .boxed_message.red_border{background:rgba(22,3,3,.25);border-color:rgba(255,0,0,.5)}.theme-paradise .boxed_message.green_border{background:rgba(3,22,10,.25);border-color:rgba(0,255,0,.5)}.theme-paradise .boxed_message.purple_border{background:rgba(10,3,22,.25);border-color:rgba(136,77,255,.5)}.theme-paradise .boxed_message.notice_border{background:rgba(3,10,22,.25);border-color:rgba(85,126,246,.5)} diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 5dab3346d725..0fdead75f105 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1,8 +1,8 @@ -(function(){(function(){var xn={96376:function(E,n,t){"use strict";n.__esModule=!0,n.createPopper=void 0,n.popperGenerator=g;var e=i(t(74758)),r=i(t(28811)),o=i(t(98309)),a=i(t(44896)),s=i(t(33118)),u=i(t(10579)),c=i(t(56500)),p=i(t(17633));n.detectOverflow=p.default;var d=t(75573);function i(h){return h&&h.__esModule?h:{default:h}}var v={placement:"bottom",modifiers:[],strategy:"absolute"};function l(){for(var h=arguments.length,m=new Array(h),C=0;C0&&(0,r.round)(i.width)/c.offsetWidth||1,l=c.offsetHeight>0&&(0,r.round)(i.height)/c.offsetHeight||1);var g=(0,e.isElement)(c)?(0,o.default)(c):window,f=g.visualViewport,h=!(0,a.default)()&&d,m=(i.left+(h&&f?f.offsetLeft:0))/v,C=(i.top+(h&&f?f.offsetTop:0))/l,I=i.width/v,O=i.height/l;return{width:I,height:O,top:C,right:m+I,bottom:C+O,left:m,x:m,y:C}}},49035:function(E,n,t){"use strict";n.__esModule=!0,n.default=O;var e=t(46206),r=h(t(87991)),o=h(t(79752)),a=h(t(98309)),s=h(t(44896)),u=h(t(40600)),c=h(t(16599)),p=t(75573),d=h(t(37786)),i=h(t(57819)),v=h(t(4206)),l=h(t(12972)),g=h(t(81666)),f=t(63618);function h(T){return T&&T.__esModule?T:{default:T}}function m(T,y){var S=(0,d.default)(T,!1,y==="fixed");return S.top=S.top+T.clientTop,S.left=S.left+T.clientLeft,S.bottom=S.top+T.clientHeight,S.right=S.left+T.clientWidth,S.width=T.clientWidth,S.height=T.clientHeight,S.x=S.left,S.y=S.top,S}function C(T,y,S){return y===e.viewport?(0,g.default)((0,r.default)(T,S)):(0,p.isElement)(y)?m(y,S):(0,g.default)((0,o.default)((0,u.default)(T)))}function I(T){var y=(0,a.default)((0,i.default)(T)),S=["absolute","fixed"].indexOf((0,c.default)(T).position)>=0,b=S&&(0,p.isHTMLElement)(T)?(0,s.default)(T):T;return(0,p.isElement)(b)?y.filter(function(N){return(0,p.isElement)(N)&&(0,v.default)(N,b)&&(0,l.default)(N)!=="body"}):[]}function O(T,y,S,b){var N=y==="clippingParents"?I(T):[].concat(y),M=[].concat(N,[S]),w=M[0],R=M.reduce(function(B,x){var j=C(T,x,b);return B.top=(0,f.max)(j.top,B.top),B.right=(0,f.min)(j.right,B.right),B.bottom=(0,f.min)(j.bottom,B.bottom),B.left=(0,f.max)(j.left,B.left),B},C(T,w,b));return R.width=R.right-R.left,R.height=R.bottom-R.top,R.x=R.left,R.y=R.top,R}},74758:function(E,n,t){"use strict";n.__esModule=!0,n.default=v;var e=d(t(37786)),r=d(t(13390)),o=d(t(12972)),a=t(75573),s=d(t(79697)),u=d(t(40600)),c=d(t(10798)),p=t(63618);function d(l){return l&&l.__esModule?l:{default:l}}function i(l){var g=l.getBoundingClientRect(),f=(0,p.round)(g.width)/l.offsetWidth||1,h=(0,p.round)(g.height)/l.offsetHeight||1;return f!==1||h!==1}function v(l,g,f){f===void 0&&(f=!1);var h=(0,a.isHTMLElement)(g),m=(0,a.isHTMLElement)(g)&&i(g),C=(0,u.default)(g),I=(0,e.default)(l,m,f),O={scrollLeft:0,scrollTop:0},T={x:0,y:0};return(h||!h&&!f)&&(((0,o.default)(g)!=="body"||(0,c.default)(C))&&(O=(0,r.default)(g)),(0,a.isHTMLElement)(g)?(T=(0,e.default)(g,!0),T.x+=g.clientLeft,T.y+=g.clientTop):C&&(T.x=(0,s.default)(C))),{x:I.left+O.scrollLeft-T.x,y:I.top+O.scrollTop-T.y,width:I.width,height:I.height}}},16599:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return(0,e.default)(a).getComputedStyle(a)}},40600:function(E,n,t){"use strict";n.__esModule=!0,n.default=r;var e=t(75573);function r(o){return(((0,e.isElement)(o)?o.ownerDocument:o.document)||window.document).documentElement}},79752:function(E,n,t){"use strict";n.__esModule=!0,n.default=c;var e=u(t(40600)),r=u(t(16599)),o=u(t(79697)),a=u(t(43750)),s=t(63618);function u(p){return p&&p.__esModule?p:{default:p}}function c(p){var d,i=(0,e.default)(p),v=(0,a.default)(p),l=(d=p.ownerDocument)==null?void 0:d.body,g=(0,s.max)(i.scrollWidth,i.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),f=(0,s.max)(i.scrollHeight,i.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),h=-v.scrollLeft+(0,o.default)(p),m=-v.scrollTop;return(0,r.default)(l||i).direction==="rtl"&&(h+=(0,s.max)(i.clientWidth,l?l.clientWidth:0)-g),{width:g,height:f,x:h,y:m}}},3073:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},28811:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(37786));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var s=(0,e.default)(a),u=a.offsetWidth,c=a.offsetHeight;return Math.abs(s.width-u)<=1&&(u=s.width),Math.abs(s.height-c)<=1&&(c=s.height),{x:a.offsetLeft,y:a.offsetTop,width:u,height:c}}},12972:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return e?(e.nodeName||"").toLowerCase():null}},13390:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(43750)),r=s(t(95115)),o=t(75573),a=s(t(3073));function s(c){return c&&c.__esModule?c:{default:c}}function u(c){return c===(0,r.default)(c)||!(0,o.isHTMLElement)(c)?(0,e.default)(c):(0,a.default)(c)}},44896:function(E,n,t){"use strict";n.__esModule=!0,n.default=v;var e=p(t(95115)),r=p(t(12972)),o=p(t(16599)),a=t(75573),s=p(t(87031)),u=p(t(57819)),c=p(t(35366));function p(l){return l&&l.__esModule?l:{default:l}}function d(l){return!(0,a.isHTMLElement)(l)||(0,o.default)(l).position==="fixed"?null:l.offsetParent}function i(l){var g=/firefox/i.test((0,c.default)()),f=/Trident/i.test((0,c.default)());if(f&&(0,a.isHTMLElement)(l)){var h=(0,o.default)(l);if(h.position==="fixed")return null}var m=(0,u.default)(l);for((0,a.isShadowRoot)(m)&&(m=m.host);(0,a.isHTMLElement)(m)&&["html","body"].indexOf((0,r.default)(m))<0;){var C=(0,o.default)(m);if(C.transform!=="none"||C.perspective!=="none"||C.contain==="paint"||["transform","perspective"].indexOf(C.willChange)!==-1||g&&C.willChange==="filter"||g&&C.filter&&C.filter!=="none")return m;m=m.parentNode}return null}function v(l){for(var g=(0,e.default)(l),f=d(l);f&&(0,s.default)(f)&&(0,o.default)(f).position==="static";)f=d(f);return f&&((0,r.default)(f)==="html"||(0,r.default)(f)==="body"&&(0,o.default)(f).position==="static")?g:f||i(l)||g}},57819:function(E,n,t){"use strict";n.__esModule=!0,n.default=s;var e=a(t(12972)),r=a(t(40600)),o=t(75573);function a(u){return u&&u.__esModule?u:{default:u}}function s(u){return(0,e.default)(u)==="html"?u:u.assignedSlot||u.parentNode||((0,o.isShadowRoot)(u)?u.host:null)||(0,r.default)(u)}},24426:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(57819)),r=s(t(10798)),o=s(t(12972)),a=t(75573);function s(c){return c&&c.__esModule?c:{default:c}}function u(c){return["html","body","#document"].indexOf((0,o.default)(c))>=0?c.ownerDocument.body:(0,a.isHTMLElement)(c)&&(0,r.default)(c)?c:u((0,e.default)(c))}},87991:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(95115)),r=s(t(40600)),o=s(t(79697)),a=s(t(89331));function s(c){return c&&c.__esModule?c:{default:c}}function u(c,p){var d=(0,e.default)(c),i=(0,r.default)(c),v=d.visualViewport,l=i.clientWidth,g=i.clientHeight,f=0,h=0;if(v){l=v.width,g=v.height;var m=(0,a.default)();(m||!m&&p==="fixed")&&(f=v.offsetLeft,h=v.offsetTop)}return{width:l,height:g,x:f+(0,o.default)(c),y:h}}},95115:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var r=e.ownerDocument;return r&&r.defaultView||window}return e}},43750:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var s=(0,e.default)(a),u=s.pageXOffset,c=s.pageYOffset;return{scrollLeft:u,scrollTop:c}}},79697:function(E,n,t){"use strict";n.__esModule=!0,n.default=s;var e=a(t(37786)),r=a(t(40600)),o=a(t(43750));function a(u){return u&&u.__esModule?u:{default:u}}function s(u){return(0,e.default)((0,r.default)(u)).left+(0,o.default)(u).scrollLeft}},75573:function(E,n,t){"use strict";n.__esModule=!0,n.isElement=o,n.isHTMLElement=a,n.isShadowRoot=s;var e=r(t(95115));function r(u){return u&&u.__esModule?u:{default:u}}function o(u){var c=(0,e.default)(u).Element;return u instanceof c||u instanceof Element}function a(u){var c=(0,e.default)(u).HTMLElement;return u instanceof c||u instanceof HTMLElement}function s(u){if(typeof ShadowRoot=="undefined")return!1;var c=(0,e.default)(u).ShadowRoot;return u instanceof c||u instanceof ShadowRoot}},89331:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(35366));function r(a){return a&&a.__esModule?a:{default:a}}function o(){return!/^((?!chrome|android).)*safari/i.test((0,e.default)())}},10798:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(16599));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var s=(0,e.default)(a),u=s.overflow,c=s.overflowX,p=s.overflowY;return/auto|scroll|overlay|hidden/.test(u+p+c)}},87031:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(12972));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return["table","td","th"].indexOf((0,e.default)(a))>=0}},98309:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(24426)),r=s(t(57819)),o=s(t(95115)),a=s(t(10798));function s(c){return c&&c.__esModule?c:{default:c}}function u(c,p){var d;p===void 0&&(p=[]);var i=(0,e.default)(c),v=i===((d=c.ownerDocument)==null?void 0:d.body),l=(0,o.default)(i),g=v?[l].concat(l.visualViewport||[],(0,a.default)(i)?i:[]):i,f=p.concat(g);return v?f:f.concat(u((0,r.default)(g)))}},46206:function(E,n){"use strict";n.__esModule=!0,n.write=n.viewport=n.variationPlacements=n.top=n.start=n.right=n.reference=n.read=n.popper=n.placements=n.modifierPhases=n.main=n.left=n.end=n.clippingParents=n.bottom=n.beforeWrite=n.beforeRead=n.beforeMain=n.basePlacements=n.auto=n.afterWrite=n.afterRead=n.afterMain=void 0;var t=n.top="top",e=n.bottom="bottom",r=n.right="right",o=n.left="left",a=n.auto="auto",s=n.basePlacements=[t,e,r,o],u=n.start="start",c=n.end="end",p=n.clippingParents="clippingParents",d=n.viewport="viewport",i=n.popper="popper",v=n.reference="reference",l=n.variationPlacements=s.reduce(function(N,M){return N.concat([M+"-"+u,M+"-"+c])},[]),g=n.placements=[].concat(s,[a]).reduce(function(N,M){return N.concat([M,M+"-"+u,M+"-"+c])},[]),f=n.beforeRead="beforeRead",h=n.read="read",m=n.afterRead="afterRead",C=n.beforeMain="beforeMain",I=n.main="main",O=n.afterMain="afterMain",T=n.beforeWrite="beforeWrite",y=n.write="write",S=n.afterWrite="afterWrite",b=n.modifierPhases=[f,h,m,C,I,O,T,y,S]},95996:function(E,n,t){"use strict";n.__esModule=!0;var e={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};n.popperGenerator=n.detectOverflow=n.createPopperLite=n.createPopperBase=n.createPopper=void 0;var r=t(46206);Object.keys(r).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(e,c)||c in n&&n[c]===r[c]||(n[c]=r[c])});var o=t(39805);Object.keys(o).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(e,c)||c in n&&n[c]===o[c]||(n[c]=o[c])});var a=t(96376);n.popperGenerator=a.popperGenerator,n.detectOverflow=a.detectOverflow,n.createPopperBase=a.createPopper;var s=t(83312);n.createPopper=s.createPopper;var u=t(2473);n.createPopperLite=u.createPopper},19975:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=o(t(12972)),r=t(75573);function o(c){return c&&c.__esModule?c:{default:c}}function a(c){var p=c.state;Object.keys(p.elements).forEach(function(d){var i=p.styles[d]||{},v=p.attributes[d]||{},l=p.elements[d];!(0,r.isHTMLElement)(l)||!(0,e.default)(l)||(Object.assign(l.style,i),Object.keys(v).forEach(function(g){var f=v[g];f===!1?l.removeAttribute(g):l.setAttribute(g,f===!0?"":f)}))})}function s(c){var p=c.state,d={popper:{position:p.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(p.elements.popper.style,d.popper),p.styles=d,p.elements.arrow&&Object.assign(p.elements.arrow.style,d.arrow),function(){Object.keys(p.elements).forEach(function(i){var v=p.elements[i],l=p.attributes[i]||{},g=Object.keys(p.styles.hasOwnProperty(i)?p.styles[i]:d[i]),f=g.reduce(function(h,m){return h[m]="",h},{});!(0,r.isHTMLElement)(v)||!(0,e.default)(v)||(Object.assign(v.style,f),Object.keys(l).forEach(function(h){v.removeAttribute(h)}))})}}var u=n.default={name:"applyStyles",enabled:!0,phase:"write",fn:a,effect:s,requires:["computeStyles"]}},52744:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=i(t(83104)),r=i(t(28811)),o=i(t(4206)),a=i(t(44896)),s=i(t(41199)),u=t(28595),c=i(t(43286)),p=i(t(81447)),d=t(46206);function i(h){return h&&h.__esModule?h:{default:h}}var v=function(){function h(m,C){return m=typeof m=="function"?m(Object.assign({},C.rects,{placement:C.placement})):m,(0,c.default)(typeof m!="number"?m:(0,p.default)(m,d.basePlacements))}return h}();function l(h){var m,C=h.state,I=h.name,O=h.options,T=C.elements.arrow,y=C.modifiersData.popperOffsets,S=(0,e.default)(C.placement),b=(0,s.default)(S),N=[d.left,d.right].indexOf(S)>=0,M=N?"height":"width";if(!(!T||!y)){var w=v(O.padding,C),R=(0,r.default)(T),B=b==="y"?d.top:d.left,x=b==="y"?d.bottom:d.right,j=C.rects.reference[M]+C.rects.reference[b]-y[b]-C.rects.popper[M],$=y[b]-C.rects.reference[b],G=(0,a.default)(T),D=G?b==="y"?G.clientHeight||0:G.clientWidth||0:0,V=j/2-$/2,U=w[B],Y=D-R[M]-w[x],K=D/2-R[M]/2+V,H=(0,u.within)(U,K,Y),rt=b;C.modifiersData[I]=(m={},m[rt]=H,m.centerOffset=H-K,m)}}function g(h){var m=h.state,C=h.options,I=C.element,O=I===void 0?"[data-popper-arrow]":I;O!=null&&(typeof O=="string"&&(O=m.elements.popper.querySelector(O),!O)||(0,o.default)(m.elements.popper,O)&&(m.elements.arrow=O))}var f=n.default={name:"arrow",enabled:!0,phase:"main",fn:l,effect:g,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]}},59894:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0,n.mapToStyles=l;var e=t(46206),r=d(t(44896)),o=d(t(95115)),a=d(t(40600)),s=d(t(16599)),u=d(t(83104)),c=d(t(45)),p=t(63618);function d(h){return h&&h.__esModule?h:{default:h}}var i={top:"auto",right:"auto",bottom:"auto",left:"auto"};function v(h,m){var C=h.x,I=h.y,O=m.devicePixelRatio||1;return{x:(0,p.round)(C*O)/O||0,y:(0,p.round)(I*O)/O||0}}function l(h){var m,C=h.popper,I=h.popperRect,O=h.placement,T=h.variation,y=h.offsets,S=h.position,b=h.gpuAcceleration,N=h.adaptive,M=h.roundOffsets,w=h.isFixed,R=y.x,B=R===void 0?0:R,x=y.y,j=x===void 0?0:x,$=typeof M=="function"?M({x:B,y:j}):{x:B,y:j};B=$.x,j=$.y;var G=y.hasOwnProperty("x"),D=y.hasOwnProperty("y"),V=e.left,U=e.top,Y=window;if(N){var K=(0,r.default)(C),H="clientHeight",rt="clientWidth";if(K===(0,o.default)(C)&&(K=(0,a.default)(C),(0,s.default)(K).position!=="static"&&S==="absolute"&&(H="scrollHeight",rt="scrollWidth")),K=K,O===e.top||(O===e.left||O===e.right)&&T===e.end){U=e.bottom;var lt=w&&K===Y&&Y.visualViewport?Y.visualViewport.height:K[H];j-=lt-I.height,j*=b?1:-1}if(O===e.left||(O===e.top||O===e.bottom)&&T===e.end){V=e.right;var ct=w&&K===Y&&Y.visualViewport?Y.visualViewport.width:K[rt];B-=ct-I.width,B*=b?1:-1}}var k=Object.assign({position:S},N&&i),Q=M===!0?v({x:B,y:j},(0,o.default)(C)):{x:B,y:j};if(B=Q.x,j=Q.y,b){var it;return Object.assign({},k,(it={},it[U]=D?"0":"",it[V]=G?"0":"",it.transform=(Y.devicePixelRatio||1)<=1?"translate("+B+"px, "+j+"px)":"translate3d("+B+"px, "+j+"px, 0)",it))}return Object.assign({},k,(m={},m[U]=D?j+"px":"",m[V]=G?B+"px":"",m.transform="",m))}function g(h){var m=h.state,C=h.options,I=C.gpuAcceleration,O=I===void 0?!0:I,T=C.adaptive,y=T===void 0?!0:T,S=C.roundOffsets,b=S===void 0?!0:S,N={placement:(0,u.default)(m.placement),variation:(0,c.default)(m.placement),popper:m.elements.popper,popperRect:m.rects.popper,gpuAcceleration:O,isFixed:m.options.strategy==="fixed"};m.modifiersData.popperOffsets!=null&&(m.styles.popper=Object.assign({},m.styles.popper,l(Object.assign({},N,{offsets:m.modifiersData.popperOffsets,position:m.options.strategy,adaptive:y,roundOffsets:b})))),m.modifiersData.arrow!=null&&(m.styles.arrow=Object.assign({},m.styles.arrow,l(Object.assign({},N,{offsets:m.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:b})))),m.attributes.popper=Object.assign({},m.attributes.popper,{"data-popper-placement":m.placement})}var f=n.default={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:g,data:{}}},36692:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=r(t(95115));function r(u){return u&&u.__esModule?u:{default:u}}var o={passive:!0};function a(u){var c=u.state,p=u.instance,d=u.options,i=d.scroll,v=i===void 0?!0:i,l=d.resize,g=l===void 0?!0:l,f=(0,e.default)(c.elements.popper),h=[].concat(c.scrollParents.reference,c.scrollParents.popper);return v&&h.forEach(function(m){m.addEventListener("scroll",p.update,o)}),g&&f.addEventListener("resize",p.update,o),function(){v&&h.forEach(function(m){m.removeEventListener("scroll",p.update,o)}),g&&f.removeEventListener("resize",p.update,o)}}var s=n.default={name:"eventListeners",enabled:!0,phase:"write",fn:function(){function u(){}return u}(),effect:a,data:{}}},23798:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=p(t(71376)),r=p(t(83104)),o=p(t(86459)),a=p(t(17633)),s=p(t(9041)),u=t(46206),c=p(t(45));function p(l){return l&&l.__esModule?l:{default:l}}function d(l){if((0,r.default)(l)===u.auto)return[];var g=(0,e.default)(l);return[(0,o.default)(l),g,(0,o.default)(g)]}function i(l){var g=l.state,f=l.options,h=l.name;if(!g.modifiersData[h]._skip){for(var m=f.mainAxis,C=m===void 0?!0:m,I=f.altAxis,O=I===void 0?!0:I,T=f.fallbackPlacements,y=f.padding,S=f.boundary,b=f.rootBoundary,N=f.altBoundary,M=f.flipVariations,w=M===void 0?!0:M,R=f.allowedAutoPlacements,B=g.options.placement,x=(0,r.default)(B),j=x===B,$=T||(j||!w?[(0,e.default)(B)]:d(B)),G=[B].concat($).reduce(function(nt,z){return nt.concat((0,r.default)(z)===u.auto?(0,s.default)(g,{placement:z,boundary:S,rootBoundary:b,padding:y,flipVariations:w,allowedAutoPlacements:R}):z)},[]),D=g.rects.reference,V=g.rects.popper,U=new Map,Y=!0,K=G[0],H=0;H=0,Q=k?"width":"height",it=(0,a.default)(g,{placement:rt,boundary:S,rootBoundary:b,altBoundary:N,padding:y}),vt=k?ct?u.right:u.left:ct?u.bottom:u.top;D[Q]>V[Q]&&(vt=(0,e.default)(vt));var ft=(0,e.default)(vt),J=[];if(C&&J.push(it[lt]<=0),O&&J.push(it[vt]<=0,it[ft]<=0),J.every(function(nt){return nt})){K=rt,Y=!1;break}U.set(rt,J)}if(Y)for(var at=w?3:1,st=function(){function nt(z){var Z=G.find(function(et){var ht=U.get(et);if(ht)return ht.slice(0,z).every(function(St){return St})});if(Z)return K=Z,"break"}return nt}(),mt=at;mt>0;mt--){var ot=st(mt);if(ot==="break")break}g.placement!==K&&(g.modifiersData[h]._skip=!0,g.placement=K,g.reset=!0)}}var v=n.default={name:"flip",enabled:!0,phase:"main",fn:i,requiresIfExists:["offset"],data:{_skip:!1}}},83761:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=t(46206),r=o(t(17633));function o(p){return p&&p.__esModule?p:{default:p}}function a(p,d,i){return i===void 0&&(i={x:0,y:0}),{top:p.top-d.height-i.y,right:p.right-d.width+i.x,bottom:p.bottom-d.height+i.y,left:p.left-d.width-i.x}}function s(p){return[e.top,e.right,e.bottom,e.left].some(function(d){return p[d]>=0})}function u(p){var d=p.state,i=p.name,v=d.rects.reference,l=d.rects.popper,g=d.modifiersData.preventOverflow,f=(0,r.default)(d,{elementContext:"reference"}),h=(0,r.default)(d,{altBoundary:!0}),m=a(f,v),C=a(h,l,g),I=s(m),O=s(C);d.modifiersData[i]={referenceClippingOffsets:m,popperEscapeOffsets:C,isReferenceHidden:I,hasPopperEscaped:O},d.attributes.popper=Object.assign({},d.attributes.popper,{"data-popper-reference-hidden":I,"data-popper-escaped":O})}var c=n.default={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:u}},39805:function(E,n,t){"use strict";n.__esModule=!0,n.preventOverflow=n.popperOffsets=n.offset=n.hide=n.flip=n.eventListeners=n.computeStyles=n.arrow=n.applyStyles=void 0;var e=i(t(19975));n.applyStyles=e.default;var r=i(t(52744));n.arrow=r.default;var o=i(t(59894));n.computeStyles=o.default;var a=i(t(36692));n.eventListeners=a.default;var s=i(t(23798));n.flip=s.default;var u=i(t(83761));n.hide=u.default;var c=i(t(61410));n.offset=c.default;var p=i(t(40107));n.popperOffsets=p.default;var d=i(t(75137));n.preventOverflow=d.default;function i(v){return v&&v.__esModule?v:{default:v}}},61410:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0,n.distanceAndSkiddingToXY=a;var e=o(t(83104)),r=t(46206);function o(c){return c&&c.__esModule?c:{default:c}}function a(c,p,d){var i=(0,e.default)(c),v=[r.left,r.top].indexOf(i)>=0?-1:1,l=typeof d=="function"?d(Object.assign({},p,{placement:c})):d,g=l[0],f=l[1];return g=g||0,f=(f||0)*v,[r.left,r.right].indexOf(i)>=0?{x:f,y:g}:{x:g,y:f}}function s(c){var p=c.state,d=c.options,i=c.name,v=d.offset,l=v===void 0?[0,0]:v,g=r.placements.reduce(function(C,I){return C[I]=a(I,p.rects,l),C},{}),f=g[p.placement],h=f.x,m=f.y;p.modifiersData.popperOffsets!=null&&(p.modifiersData.popperOffsets.x+=h,p.modifiersData.popperOffsets.y+=m),p.modifiersData[i]=g}var u=n.default={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:s}},40107:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=r(t(89951));function r(s){return s&&s.__esModule?s:{default:s}}function o(s){var u=s.state,c=s.name;u.modifiersData[c]=(0,e.default)({reference:u.rects.reference,element:u.rects.popper,strategy:"absolute",placement:u.placement})}var a=n.default={name:"popperOffsets",enabled:!0,phase:"read",fn:o,data:{}}},75137:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=t(46206),r=l(t(83104)),o=l(t(41199)),a=l(t(28066)),s=t(28595),u=l(t(28811)),c=l(t(44896)),p=l(t(17633)),d=l(t(45)),i=l(t(34780)),v=t(63618);function l(h){return h&&h.__esModule?h:{default:h}}function g(h){var m=h.state,C=h.options,I=h.name,O=C.mainAxis,T=O===void 0?!0:O,y=C.altAxis,S=y===void 0?!1:y,b=C.boundary,N=C.rootBoundary,M=C.altBoundary,w=C.padding,R=C.tether,B=R===void 0?!0:R,x=C.tetherOffset,j=x===void 0?0:x,$=(0,p.default)(m,{boundary:b,rootBoundary:N,padding:w,altBoundary:M}),G=(0,r.default)(m.placement),D=(0,d.default)(m.placement),V=!D,U=(0,o.default)(G),Y=(0,a.default)(U),K=m.modifiersData.popperOffsets,H=m.rects.reference,rt=m.rects.popper,lt=typeof j=="function"?j(Object.assign({},m.rects,{placement:m.placement})):j,ct=typeof lt=="number"?{mainAxis:lt,altAxis:lt}:Object.assign({mainAxis:0,altAxis:0},lt),k=m.modifiersData.offset?m.modifiersData.offset[m.placement]:null,Q={x:0,y:0};if(K){if(T){var it,vt=U==="y"?e.top:e.left,ft=U==="y"?e.bottom:e.right,J=U==="y"?"height":"width",at=K[U],st=at+$[vt],mt=at-$[ft],ot=B?-rt[J]/2:0,nt=D===e.start?H[J]:rt[J],z=D===e.start?-rt[J]:-H[J],Z=m.elements.arrow,et=B&&Z?(0,u.default)(Z):{width:0,height:0},ht=m.modifiersData["arrow#persistent"]?m.modifiersData["arrow#persistent"].padding:(0,i.default)(),St=ht[vt],ut=ht[ft],yt=(0,s.within)(0,H[J],et[J]),Pt=V?H[J]/2-ot-yt-St-ct.mainAxis:nt-yt-St-ct.mainAxis,_=V?-H[J]/2+ot+yt+ut+ct.mainAxis:z+yt+ut+ct.mainAxis,pt=m.elements.arrow&&(0,c.default)(m.elements.arrow),Ct=pt?U==="y"?pt.clientTop||0:pt.clientLeft||0:0,At=(it=k==null?void 0:k[U])!=null?it:0,Dt=at+Pt-At-Ct,jt=at+_-At,It=(0,s.within)(B?(0,v.min)(st,Dt):st,at,B?(0,v.max)(mt,jt):mt);K[U]=It,Q[U]=It-at}if(S){var gt,Et=U==="x"?e.top:e.left,Ot=U==="x"?e.bottom:e.right,bt=K[Y],Nt=Y==="y"?"height":"width",Ft=bt+$[Et],Vt=bt-$[Ot],$t=[e.top,e.left].indexOf(G)!==-1,Wt=(gt=k==null?void 0:k[Y])!=null?gt:0,Gt=$t?Ft:bt-H[Nt]-rt[Nt]-Wt+ct.altAxis,Ht=$t?bt+H[Nt]+rt[Nt]-Wt-ct.altAxis:Vt,Jt=B&&$t?(0,s.withinMaxClamp)(Gt,bt,Ht):(0,s.within)(B?Gt:Ft,bt,B?Ht:Vt);K[Y]=Jt,Q[Y]=Jt-bt}m.modifiersData[I]=Q}}var f=n.default={name:"preventOverflow",enabled:!0,phase:"main",fn:g,requiresIfExists:["offset"]}},2473:function(E,n,t){"use strict";n.__esModule=!0,n.defaultModifiers=n.createPopper=void 0;var e=t(96376);n.popperGenerator=e.popperGenerator,n.detectOverflow=e.detectOverflow;var r=u(t(36692)),o=u(t(40107)),a=u(t(59894)),s=u(t(19975));function u(d){return d&&d.__esModule?d:{default:d}}var c=n.defaultModifiers=[r.default,o.default,a.default,s.default],p=n.createPopper=(0,e.popperGenerator)({defaultModifiers:c})},83312:function(E,n,t){"use strict";n.__esModule=!0;var e={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};n.defaultModifiers=n.createPopperLite=n.createPopper=void 0;var r=t(96376);n.popperGenerator=r.popperGenerator,n.detectOverflow=r.detectOverflow;var o=f(t(36692)),a=f(t(40107)),s=f(t(59894)),u=f(t(19975)),c=f(t(61410)),p=f(t(23798)),d=f(t(75137)),i=f(t(52744)),v=f(t(83761)),l=t(2473);n.createPopperLite=l.createPopper;var g=t(39805);Object.keys(g).forEach(function(C){C==="default"||C==="__esModule"||Object.prototype.hasOwnProperty.call(e,C)||C in n&&n[C]===g[C]||(n[C]=g[C])});function f(C){return C&&C.__esModule?C:{default:C}}var h=n.defaultModifiers=[o.default,a.default,s.default,u.default,c.default,p.default,d.default,i.default,v.default],m=n.createPopperLite=n.createPopper=(0,r.popperGenerator)({defaultModifiers:h})},9041:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(45)),r=t(46206),o=s(t(17633)),a=s(t(83104));function s(c){return c&&c.__esModule?c:{default:c}}function u(c,p){p===void 0&&(p={});var d=p,i=d.placement,v=d.boundary,l=d.rootBoundary,g=d.padding,f=d.flipVariations,h=d.allowedAutoPlacements,m=h===void 0?r.placements:h,C=(0,e.default)(i),I=C?f?r.variationPlacements:r.variationPlacements.filter(function(y){return(0,e.default)(y)===C}):r.basePlacements,O=I.filter(function(y){return m.indexOf(y)>=0});O.length===0&&(O=I);var T=O.reduce(function(y,S){return y[S]=(0,o.default)(c,{placement:S,boundary:v,rootBoundary:l,padding:g})[(0,a.default)(S)],y},{});return Object.keys(T).sort(function(y,S){return T[y]-T[S]})}},89951:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(83104)),r=s(t(45)),o=s(t(41199)),a=t(46206);function s(c){return c&&c.__esModule?c:{default:c}}function u(c){var p=c.reference,d=c.element,i=c.placement,v=i?(0,e.default)(i):null,l=i?(0,r.default)(i):null,g=p.x+p.width/2-d.width/2,f=p.y+p.height/2-d.height/2,h;switch(v){case a.top:h={x:g,y:p.y-d.height};break;case a.bottom:h={x:g,y:p.y+p.height};break;case a.right:h={x:p.x+p.width,y:f};break;case a.left:h={x:p.x-d.width,y:f};break;default:h={x:p.x,y:p.y}}var m=v?(0,o.default)(v):null;if(m!=null){var C=m==="y"?"height":"width";switch(l){case a.start:h[m]=h[m]-(p[C]/2-d[C]/2);break;case a.end:h[m]=h[m]+(p[C]/2-d[C]/2);break;default:}}return h}},10579:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){var r;return function(){return r||(r=new Promise(function(o){Promise.resolve().then(function(){r=void 0,o(e())})})),r}}},17633:function(E,n,t){"use strict";n.__esModule=!0,n.default=v;var e=i(t(49035)),r=i(t(40600)),o=i(t(37786)),a=i(t(89951)),s=i(t(81666)),u=t(46206),c=t(75573),p=i(t(43286)),d=i(t(81447));function i(l){return l&&l.__esModule?l:{default:l}}function v(l,g){g===void 0&&(g={});var f=g,h=f.placement,m=h===void 0?l.placement:h,C=f.strategy,I=C===void 0?l.strategy:C,O=f.boundary,T=O===void 0?u.clippingParents:O,y=f.rootBoundary,S=y===void 0?u.viewport:y,b=f.elementContext,N=b===void 0?u.popper:b,M=f.altBoundary,w=M===void 0?!1:M,R=f.padding,B=R===void 0?0:R,x=(0,p.default)(typeof B!="number"?B:(0,d.default)(B,u.basePlacements)),j=N===u.popper?u.reference:u.popper,$=l.rects.popper,G=l.elements[w?j:N],D=(0,e.default)((0,c.isElement)(G)?G:G.contextElement||(0,r.default)(l.elements.popper),T,S,I),V=(0,o.default)(l.elements.reference),U=(0,a.default)({reference:V,element:$,strategy:"absolute",placement:m}),Y=(0,s.default)(Object.assign({},$,U)),K=N===u.popper?Y:V,H={top:D.top-K.top+x.top,bottom:K.bottom-D.bottom+x.bottom,left:D.left-K.left+x.left,right:K.right-D.right+x.right},rt=l.modifiersData.offset;if(N===u.popper&&rt){var lt=rt[m];Object.keys(H).forEach(function(ct){var k=[u.right,u.bottom].indexOf(ct)>=0?1:-1,Q=[u.top,u.bottom].indexOf(ct)>=0?"y":"x";H[ct]+=lt[Q]*k})}return H}},81447:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e,r){return r.reduce(function(o,a){return o[a]=e,o},{})}},28066:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return e==="x"?"y":"x"}},83104:function(E,n,t){"use strict";n.__esModule=!0,n.default=r;var e=t(46206);function r(o){return o.split("-")[0]}},34780:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(){return{top:0,right:0,bottom:0,left:0}}},41199:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}},71376:function(E,n){"use strict";n.__esModule=!0,n.default=e;var t={left:"right",right:"left",bottom:"top",top:"bottom"};function e(r){return r.replace(/left|right|bottom|top/g,function(o){return t[o]})}},86459:function(E,n){"use strict";n.__esModule=!0,n.default=e;var t={start:"end",end:"start"};function e(r){return r.replace(/start|end/g,function(o){return t[o]})}},45:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return e.split("-")[1]}},63618:function(E,n){"use strict";n.__esModule=!0,n.round=n.min=n.max=void 0;var t=n.max=Math.max,e=n.min=Math.min,r=n.round=Math.round},56500:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){var r=e.reduce(function(o,a){var s=o[a.name];return o[a.name]=s?Object.assign({},s,a,{options:Object.assign({},s.options,a.options),data:Object.assign({},s.data,a.data)}):a,o},{});return Object.keys(r).map(function(o){return r[o]})}},43286:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(34780));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return Object.assign({},(0,e.default)(),a)}},33118:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=t(46206);function r(a){var s=new Map,u=new Set,c=[];a.forEach(function(d){s.set(d.name,d)});function p(d){u.add(d.name);var i=[].concat(d.requires||[],d.requiresIfExists||[]);i.forEach(function(v){if(!u.has(v)){var l=s.get(v);l&&p(l)}}),c.push(d)}return a.forEach(function(d){u.has(d.name)||p(d)}),c}function o(a){var s=r(a);return e.modifierPhases.reduce(function(u,c){return u.concat(s.filter(function(p){return p.phase===c}))},[])}},81666:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},35366:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(r){return r.brand+"/"+r.version}).join(" "):navigator.userAgent}},28595:function(E,n,t){"use strict";n.__esModule=!0,n.within=r,n.withinMaxClamp=o;var e=t(63618);function r(a,s,u){return(0,e.max)(a,(0,e.min)(s,u))}function o(a,s,u){var c=r(a,s,u);return c>u?u:c}},22734:function(E){"use strict";/*! @license DOMPurify 2.5.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.0/LICENSE */(function(n,t){E.exports=t()})(void 0,function(){"use strict";function n(_){"@babel/helpers - typeof";return n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(pt){return typeof pt}:function(pt){return pt&&typeof Symbol=="function"&&pt.constructor===Symbol&&pt!==Symbol.prototype?"symbol":typeof pt},n(_)}function t(_,pt){return t=Object.setPrototypeOf||function(){function Ct(At,Dt){return At.__proto__=Dt,At}return Ct}(),t(_,pt)}function e(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(_){return!1}}function r(_,pt,Ct){return e()?r=Reflect.construct:r=function(){function At(Dt,jt,It){var gt=[null];gt.push.apply(gt,jt);var Et=Function.bind.apply(Dt,gt),Ot=new Et;return It&&t(Ot,It.prototype),Ot}return At}(),r.apply(null,arguments)}function o(_){return a(_)||s(_)||u(_)||p()}function a(_){if(Array.isArray(_))return c(_)}function s(_){if(typeof Symbol!="undefined"&&_[Symbol.iterator]!=null||_["@@iterator"]!=null)return Array.from(_)}function u(_,pt){if(_){if(typeof _=="string")return c(_,pt);var Ct=Object.prototype.toString.call(_).slice(8,-1);if(Ct==="Object"&&_.constructor&&(Ct=_.constructor.name),Ct==="Map"||Ct==="Set")return Array.from(_);if(Ct==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Ct))return c(_,pt)}}function c(_,pt){(pt==null||pt>_.length)&&(pt=_.length);for(var Ct=0,At=new Array(pt);Ct1?Ct-1:0),Dt=1;Dt/gm),st=h(/\${[\w\W]*}/gm),mt=h(/^data-[\-\w.\u00B7-\uFFFF]/),ot=h(/^aria-[\-\w]+$/),nt=h(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z=h(/^(?:\w+script|data):/i),Z=h(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),et=h(/^html$/i),ht=h(/^[a-z][.\w]*(-[.\w]+)+$/i),St=function(){function _(){return typeof window=="undefined"?null:window}return _}(),ut=function(){function _(pt,Ct){if(n(pt)!=="object"||typeof pt.createPolicy!="function")return null;var At=null,Dt="data-tt-policy-suffix";Ct.currentScript&&Ct.currentScript.hasAttribute(Dt)&&(At=Ct.currentScript.getAttribute(Dt));var jt="dompurify"+(At?"#"+At:"");try{return pt.createPolicy(jt,{createHTML:function(){function It(gt){return gt}return It}(),createScriptURL:function(){function It(gt){return gt}return It}()})}catch(It){return null}}return _}();function yt(){var _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:St(),pt=function(){function A(P){return yt(P)}return A}();if(pt.version="2.5.0",pt.removed=[],!_||!_.document||_.document.nodeType!==9)return pt.isSupported=!1,pt;var Ct=_.document,At=_.document,Dt=_.DocumentFragment,jt=_.HTMLTemplateElement,It=_.Node,gt=_.Element,Et=_.NodeFilter,Ot=_.NamedNodeMap,bt=Ot===void 0?_.NamedNodeMap||_.MozNamedAttrMap:Ot,Nt=_.HTMLFormElement,Ft=_.DOMParser,Vt=_.trustedTypes,$t=gt.prototype,Wt=U($t,"cloneNode"),Gt=U($t,"nextSibling"),Ht=U($t,"childNodes"),Jt=U($t,"parentNode");if(typeof jt=="function"){var Le=At.createElement("template");Le.content&&Le.content.ownerDocument&&(At=Le.content.ownerDocument)}var qt=ut(Vt,Ct),Pe=qt?qt.createHTML(""):"",Ne=At,me=Ne.implementation,ye=Ne.createNodeIterator,an=Ne.createDocumentFragment,un=Ne.getElementsByTagName,Tn=Ct.importNode,Ye={};try{Ye=V(At).documentMode?At.documentMode:{}}catch(A){}var re={};pt.isSupported=typeof Jt=="function"&&me&&me.createHTMLDocument!==void 0&&Ye!==9;var Ke=J,He=at,Be=st,sn=mt,In=ot,cn=z,ln=Z,On=ht,Se=nt,zt=null,te=D({},[].concat(o(Y),o(K),o(H),o(lt),o(k))),Yt=null,Ee=D({},[].concat(o(Q),o(it),o(vt),o(ft))),kt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),le=null,Ce=null,We=!0,ze=!0,fn=!1,dn=!0,be=!1,De=!0,fe=!1,Fe=!1,xe=!1,de=!1,Xt=!1,Ve=!1,vn=!0,ke=!1,hn="user-content-",ue=!0,Me=!1,Te={},Ie=null,Xe=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Qe=null,pn=D({},["audio","video","img","source","image","track"]),je=null,gn=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",Ue="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",Oe=se,Ze=!1,Je=null,An=D({},[ee,Ue,se],N),ce,Pn=["application/xhtml+xml","text/html"],mn="text/html",Qt,Ae=null,Nn=At.createElement("form"),yn=function(){function A(P){return P instanceof RegExp||P instanceof Function}return A}(),_e=function(){function A(P){Ae&&Ae===P||((!P||n(P)!=="object")&&(P={}),P=V(P),ce=Pn.indexOf(P.PARSER_MEDIA_TYPE)===-1?ce=mn:ce=P.PARSER_MEDIA_TYPE,Qt=ce==="application/xhtml+xml"?N:b,zt="ALLOWED_TAGS"in P?D({},P.ALLOWED_TAGS,Qt):te,Yt="ALLOWED_ATTR"in P?D({},P.ALLOWED_ATTR,Qt):Ee,Je="ALLOWED_NAMESPACES"in P?D({},P.ALLOWED_NAMESPACES,N):An,je="ADD_URI_SAFE_ATTR"in P?D(V(gn),P.ADD_URI_SAFE_ATTR,Qt):gn,Qe="ADD_DATA_URI_TAGS"in P?D(V(pn),P.ADD_DATA_URI_TAGS,Qt):pn,Ie="FORBID_CONTENTS"in P?D({},P.FORBID_CONTENTS,Qt):Xe,le="FORBID_TAGS"in P?D({},P.FORBID_TAGS,Qt):{},Ce="FORBID_ATTR"in P?D({},P.FORBID_ATTR,Qt):{},Te="USE_PROFILES"in P?P.USE_PROFILES:!1,We=P.ALLOW_ARIA_ATTR!==!1,ze=P.ALLOW_DATA_ATTR!==!1,fn=P.ALLOW_UNKNOWN_PROTOCOLS||!1,dn=P.ALLOW_SELF_CLOSE_IN_ATTR!==!1,be=P.SAFE_FOR_TEMPLATES||!1,De=P.SAFE_FOR_XML!==!1,fe=P.WHOLE_DOCUMENT||!1,de=P.RETURN_DOM||!1,Xt=P.RETURN_DOM_FRAGMENT||!1,Ve=P.RETURN_TRUSTED_TYPE||!1,xe=P.FORCE_BODY||!1,vn=P.SANITIZE_DOM!==!1,ke=P.SANITIZE_NAMED_PROPS||!1,ue=P.KEEP_CONTENT!==!1,Me=P.IN_PLACE||!1,Se=P.ALLOWED_URI_REGEXP||Se,Oe=P.NAMESPACE||se,kt=P.CUSTOM_ELEMENT_HANDLING||{},P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(kt.tagNameCheck=P.CUSTOM_ELEMENT_HANDLING.tagNameCheck),P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(kt.attributeNameCheck=P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),P.CUSTOM_ELEMENT_HANDLING&&typeof P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(kt.allowCustomizedBuiltInElements=P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),be&&(ze=!1),Xt&&(de=!0),Te&&(zt=D({},o(k)),Yt=[],Te.html===!0&&(D(zt,Y),D(Yt,Q)),Te.svg===!0&&(D(zt,K),D(Yt,it),D(Yt,ft)),Te.svgFilters===!0&&(D(zt,H),D(Yt,it),D(Yt,ft)),Te.mathMl===!0&&(D(zt,lt),D(Yt,vt),D(Yt,ft))),P.ADD_TAGS&&(zt===te&&(zt=V(zt)),D(zt,P.ADD_TAGS,Qt)),P.ADD_ATTR&&(Yt===Ee&&(Yt=V(Yt)),D(Yt,P.ADD_ATTR,Qt)),P.ADD_URI_SAFE_ATTR&&D(je,P.ADD_URI_SAFE_ATTR,Qt),P.FORBID_CONTENTS&&(Ie===Xe&&(Ie=V(Ie)),D(Ie,P.FORBID_CONTENTS,Qt)),ue&&(zt["#text"]=!0),fe&&D(zt,["html","head","body"]),zt.table&&(D(zt,["tbody"]),delete le.tbody),f&&f(P),Ae=P)}return A}(),Sn=D({},["mi","mo","mn","ms","mtext"]),oe=D({},["foreignobject","desc","title","annotation-xml"]),$e=D({},["title","style","font","a","script"]),we=D({},K);D(we,H),D(we,rt);var qe=D({},lt);D(qe,ct);var Mn=function(){function A(P){var L=Jt(P);(!L||!L.tagName)&&(L={namespaceURI:Oe,tagName:"template"});var F=b(P.tagName),W=b(L.tagName);return Je[P.namespaceURI]?P.namespaceURI===Ue?L.namespaceURI===se?F==="svg":L.namespaceURI===ee?F==="svg"&&(W==="annotation-xml"||Sn[W]):!!we[F]:P.namespaceURI===ee?L.namespaceURI===se?F==="math":L.namespaceURI===Ue?F==="math"&&oe[W]:!!qe[F]:P.namespaceURI===se?L.namespaceURI===Ue&&!oe[W]||L.namespaceURI===ee&&!Sn[W]?!1:!qe[F]&&($e[F]||!we[F]):!!(ce==="application/xhtml+xml"&&Je[P.namespaceURI]):!1}return A}(),ne=function(){function A(P){S(pt.removed,{element:P});try{P.parentNode.removeChild(P)}catch(L){try{P.outerHTML=Pe}catch(F){P.remove()}}}return A}(),Ge=function(){function A(P,L){try{S(pt.removed,{attribute:L.getAttributeNode(P),from:L})}catch(F){S(pt.removed,{attribute:null,from:L})}if(L.removeAttribute(P),P==="is"&&!Yt[P])if(de||Xt)try{ne(L)}catch(F){}else try{L.setAttribute(P,"")}catch(F){}}return A}(),En=function(){function A(P){var L,F;if(xe)P=""+P;else{var W=M(P,/^[\r\n\t ]+/);F=W&&W[0]}ce==="application/xhtml+xml"&&Oe===se&&(P=''+P+"");var q=qt?qt.createHTML(P):P;if(Oe===se)try{L=new Ft().parseFromString(q,ce)}catch(dt){}if(!L||!L.documentElement){L=me.createDocument(Oe,"template",null);try{L.documentElement.innerHTML=Ze?Pe:q}catch(dt){}}var tt=L.body||L.documentElement;return P&&F&&tt.insertBefore(At.createTextNode(F),tt.childNodes[0]||null),Oe===se?un.call(L,fe?"html":"body")[0]:fe?L.documentElement:tt}return A}(),Re=function(){function A(P){return ye.call(P.ownerDocument||P,P,Et.SHOW_ELEMENT|Et.SHOW_COMMENT|Et.SHOW_TEXT|Et.SHOW_PROCESSING_INSTRUCTION|Et.SHOW_CDATA_SECTION,null,!1)}return A}(),wn=function(){function A(P){return P instanceof Nt&&(typeof P.nodeName!="string"||typeof P.textContent!="string"||typeof P.removeChild!="function"||!(P.attributes instanceof bt)||typeof P.removeAttribute!="function"||typeof P.setAttribute!="function"||typeof P.namespaceURI!="string"||typeof P.insertBefore!="function"||typeof P.hasChildNodes!="function")}return A}(),he=function(){function A(P){return n(It)==="object"?P instanceof It:P&&n(P)==="object"&&typeof P.nodeType=="number"&&typeof P.nodeName=="string"}return A}(),ae=function(){function A(P,L,F){re[P]&&T(re[P],function(W){W.call(pt,L,F,Ae)})}return A}(),Cn=function(){function A(P){var L;if(ae("beforeSanitizeElements",P,null),wn(P)||x(/[\u0080-\uFFFF]/,P.nodeName))return ne(P),!0;var F=Qt(P.nodeName);if(ae("uponSanitizeElement",P,{tagName:F,allowedTags:zt}),P.hasChildNodes()&&!he(P.firstElementChild)&&(!he(P.content)||!he(P.content.firstElementChild))&&x(/<[/\w]/g,P.innerHTML)&&x(/<[/\w]/g,P.textContent)||F==="select"&&x(/